天天看點

基礎設施助力雙11(四):圖檔編碼FPGA硬體優化

**項目背景

**

目前網際網路上的圖檔還是以JPEG格式為主,伴随新的圖像視訊編解碼技術的發展,也産生了多種更高效的圖檔編解碼算法,這些高效的圖檔編解碼算法相比JPEG圖檔格式可以提升50%以上的壓縮率。如果用戶端對圖檔的請求采用高壓縮率圖檔格式,可以相應減少50%以上的傳輸帶寬,可以有效提升使用者的圖檔下載下傳體驗。

但是,随着算法壓縮率的提升,編碼算法的計算複雜度也越來越高,采用通用CPU進行編碼成本很高,導緻很難在業務中全面推廣。

是以,硬體FPGA編解碼方案替代通用CPU方案,通過提高計算效率和計算密度,來降低硬體成本很有實際意義。

開發實施

整個項目分為編碼功能驗證和編碼性能提升兩個階段進行開發:

編碼功能驗證階段使得FPGA運作在100Mhz主頻,主要用來分析編碼效果和圖檔品質。

編碼性能提升階段将主頻提升到300Mhz,同時實作多個IP并行編碼,目标:相比CPU伺服器實作性能提升25倍。

技術層次結構

整個項目開發涉及FPGA邏輯開發、軟體開發。

    FPGA在伺服器中作為通用CPU的協處理器,以PCIE卡的形式與通用CPU連接配接。

    FPGA處理系統基于AliFPGA邏輯平台開發。
           

項目整體的層次結構如下:

基礎設施助力雙11(四):圖檔編碼FPGA硬體優化

圖1 系統層次結構圖

整體層次結構可以分為FPGA功能邏輯層、AliFPGA通用開發平台、業務軟體層三個層次:

  • FPGA功能邏輯層*

主要實作高壓縮率圖檔格式編碼功能。

AliFPGA通用開發平台

該層為标準的AliFPGA通用開發平台,主要實作軟體與FPGA功能邏輯的互動,分為FPGA部分和驅動部分。驅動部分負責給業務軟體部分提供通路的指令接口及資料接口。

  • 業務軟體層*

該層實作網絡通信及業務邏輯等。

關鍵優化點

FPGA高性能資料處理需要綜合考慮系統流水線設計、FPGA邏輯主頻提升、軟體設計等多個方面:

FPGA硬體編碼流水線優化

流水線定制是FPGA較之通用CPU的優勢所在。在FPGA中,每個功能子產品硬體資源獨立,無需競争。通過合理設計流水線的劃分,可以優化流水線吞吐量。

我們對标準編碼流程進行了解耦合,進行了流水拆分。将整個圖檔編碼流水線由2級流水,優化到4級流水。

解耦後的流水方案吞吐量是标準編碼流程的2倍。

  • 基于FPGA邏輯主頻提升*

對于FPGA高性能計算,除了采用流水線、乒乓等技術外,提升每個功能邏輯IP的運作頻率,是性能優化非常關鍵的一步。

項目中通用邏輯平台運作在250Mhz和300Mhz時鐘;功能邏輯IP運作在使用者時鐘域300MHz。

對于功能邏輯IP時鐘域,我們通過識别硬體算法的關鍵路徑,并對其進行針對性優化,通過降低無關邏輯的耦合性以及優化寄存器扇出等方法綜合起來将圖像編碼核的頻率提升3倍。

  • 軟體設計*

軟體層的主要功能是把來自排程層的圖檔原始檔案下發給FPGA編碼核,同時将編碼後檔案傳回給軟體排程層。

軟體設計中重點考慮以下幾點:

1) 應用層的多并發支援

2) 驅動層的多IP支援

3) 多通道之間的負載均衡

性能提升

本項目基于FPGA晶片實作了高壓縮率圖檔編碼加速: 運作頻率300Mhz,結合功能邏輯IP多通道并發,在實際評測中相比目前高性能通用CPU伺服器(64核),整體性能提升了25倍。

小結

從我們的性能評測中可以看出基于FPGA編解碼方案在性能上優于傳統CPU方案,未來可以考慮更多采用FPGA方案提供服務,釋放更多CPU資源用于其他服務。

繼續閱讀