FPGA(Field Programmable Gate Array)現場可編程門陣列,作為ASIC領域中的一種半定制電路而出現已有30年的歷史了,它既解決了定制電路的無法改變功能的不足,又克服了原有可編程器件門電路數有限的缺點,可應用的場景也很廣泛。
就在2017年1月20日,騰訊云推出國內首款高性能異構計算基礎設施——FPGA云服務,利用云服務的方式將只有大型公司才能長期支付使用的FPGA服務推廣到了更多企業。企業可以通過FPGA云服務器進行FPGA硬件編程,可將性能提升至通用CPU服務器的30倍以上。同時,與已經深入人心的高性能計算的代表GPU相比,FPGA具有硬件可編程、低功耗、低延時的特性,代表了高性能計算的未來發展趨勢。
而在人工智能(AI)里面火熱的深度學習領域,企業同樣可以將FPGA用于深度學習的檢測階段,與主要用于訓練階段的GPU互為補充,FPGA還可應用于金融分析、圖像視頻處理、基因組學等需要高性能計算的領域,是這類對效率要求高的行業應用的最佳選擇。
基于此,InfoQ采訪了由騰訊云基礎產品中心、騰訊架構平臺部組成的騰訊云FPGA聯合團隊,向讀者介紹FPGA的基本原理和設計初衷,應用場景以及它給行業帶來的價值。
騰訊云FPGA的開發歷史及背后的團隊力量
隨著芯片制程逼近理論極限,可以預見通用處理器(CPU)性能提升空間越來越有限。而騰訊自己的業務隨著移動互聯網的快速增長,數據體量的急劇膨脹,伴隨著對這些數據的計算需求也在迅猛上漲。騰訊在2013年開始考慮如何解決計算需求的增長,而FPGA作為一種可編程的加速硬件彼時進入了大家的視野。有了解決計算需求的想法后,需要通過實踐驗證FPGA實際的能力。
騰訊的QQ、微信業務,用戶每天產生的圖片數量都是數億級別,常用的圖片格式有JPEG格式、WebP格式等,WebP圖片格式比JPEG圖片格式存儲空間小30%。為節省存儲空間,降低傳輸流量,提升用戶的圖片下載體驗,通常采用WebP格式進行存儲及傳輸分發,而圖片轉碼所帶來的計算消耗需要上萬臺CPU機器支撐。自然FPGA開發落地的第一個切入點就是圖片轉碼:將JPEG圖片格式轉成WebP圖片格式。
在圖片轉碼的實踐中,FPGA聯合團隊取得了FPGA處理延時相比CPU降低20倍,FPGA處理性能是CPU機器的6倍,驗證了FPGA能進行計算加速的能力,同時也增強了FPGA聯合團隊的自信心。
(圖1)圖片轉碼中FPGA和CPU延時對比
(圖2)圖片轉碼中FPGA和CPU吞吐率對比
圖片轉碼項目完成后,深度學習映入了FPGA聯合團隊的眼簾,一方面深度學習需要密集的計算,另一方面深度學習在未來應用上有著巨大的商業價值。深度學習基于深度神經網絡理論,用在圖片分類的神經網絡是其中的一個分支:卷積神經網絡(CNN)。團隊使用FPGA對CNN計算進行加速,增強違規圖片檢測能力,最終在深度學習的實踐中取得了FPGA處理性能是CPU機器4倍的戰績。
騰訊云FPGA項目實踐的結果,見證了FPGA在數據中心里可以提供強大的計算能力和足夠的靈活性,來應對數據中心對硬件加速的挑戰。經過之前的FPGA實踐,FPGA聯合團隊獲得了在數據中心使用FPGA的經驗,未來也將在數據中心的計算、網絡、存儲三個方向進一步探索,重構數據中心基礎架構。
云端的數據中心業務日新月異,更需要一種高性能、高靈活的底層硬件結構,所以FPGA聯合團隊通過云端開放FPGA計算服務,從硬件層面加速云計算在各個場景中的應用,降低企業的使用門檻和成本。
FPGA的特點解析
2016年3月,英特爾宣布正式停用“Tick-Tock”處理器研發模式,未來研發周期將從兩年向三年轉變。至此,摩爾定律對英特爾幾近失效。一方面處理器性能再無法按照摩爾定律進行增長,另一方面數據增長對計算性能要求超過了按“摩爾定律”增長的速度。
CPU本身無法滿足高性能計算應用軟件的性能需求,導致需求和性能之間出現了缺口。在新的芯片材料等基礎技術沒有取得突破前,一種有效的解決方法就是采用專用協處理器的異構計算方式來提升處理性能。現有的協處理器主要有FPGA,GPU和ASIC,FPGA由于其獨特的架構擁有其他處理器無法比擬的優勢。
FPGA(Field Programmable Gate Array)現場可編程門陣列,可以通過軟件重新配置芯片內部的資源形成不同功能硬件,就像用樂高積木可以搭出航空母艦或變形金剛一樣。因此,FPGA不僅有了軟件的可編程性和靈活性,同時又有ASIC高吞吐和低延時的特性。而且,由于有豐富的IO,FPGA還非常適合用作協議和接口轉換的芯片。
FPGA在數據中心最大的特點就在高吞吐的同時能做到低延時。FPGA內部的資源都是可以重配置的,因此它可以很容易進行數據并行和流水并行,且易于在數據并行和流水并行之間平衡。而GPU幾乎只能做數據并行。
與ASIC相比,FPGA的可編程性體現出很大的優勢。現在數據中心的各種算法每時每刻都在更新變化,沒有足夠穩定的時間讓ASIC完成長周期的開發。比如在一種神經網絡模型出來之后開始把它做成ASIC,也許還未投片生產,這個神經網絡模型已經被另一種神經網絡模型所替代。不同的是,FPGA可以在不同的業務需求之間做平衡。比如說白天用于為搜索業務排序的機器;在晚上請求很少的情況下,可以將這些FPGA重新配置成離線數據分析的功能,提供對離線數據進行分析的服務。
另外由于FPGA有高速SERDES等豐富的接口,而且能靈活控制實現的粒度和操作數據,因此非常適合進行協議處理和數據格式的轉換。比如說FPGA可以很方便的接入以太網數據,并對以太網包進行包過濾等處理。
和CPU、GPU、ASIC在設計上的區別
(圖3)處理器芯片對比
CPU/GPU 屬于馮·諾依曼結構,任務執行需要經歷取指、譯碼、執行、訪存以及寫回等過程。CPU為達到足夠高的通用性,其指令流的控制邏輯相當復雜。GPU使用SIMD單指令多數據流并行等方式進行計算加速。
FPGA/ASIC在使用時硬件功能模塊已固定,無需分支判斷等復雜控制邏輯,同時大大降低了訪存次數。因此在能效上可以比 CPU 高出1到2個數量級。
ASIC是一種專用的芯片,是為了某種特定的需求而專門定制的芯片。ASIC與通用芯片相比,體積小、功耗低、計算效率高、芯片出貨量越大成本越低。但是缺點也很明顯:開發周期很長,算法是固定的,一旦算法變化就可能無法重用。
而FPGA則是“軟硬件一體”的架構,軟件就是硬件。FPGA基本原理是在芯片內集成大量的數字門電路以及存儲器,用戶可以通過燒入 FPGA 配置文件來來定義這些門電路以及存儲器之間的連線,進而得到不同的硬件功能。
就開發難度而言,ASIC > FPGA > GPU > CPU。目前主流的FPGA開發語言是硬件描述HDL,需要開發者具備一定的相關技能。隨著業界OPENCL、HLS等類C高級語言的推進,FPGA的開發難度和周期也會有所改善。
FPGA 部署在哪里?與 CPU 之間如何通信?
騰訊云的FPGA主要部署在數據中心的服務器中。騰訊云將FPGA芯片加上DDR內存、外圍電路和散熱片,設計成PCIE板卡。這種FPGA板卡被安裝在服務器的主板上,用戶通過網絡遠程訪問服務器,開發調試FPGA,并用其加速特定業務。
FPGA與CPU之間是通過PCIE鏈路通信的。CPU內部集成了DDR內存控制器和PCIE控制器。在FPGA芯片內部也用可編程邏輯資源實現了PCIE控制器、DDR控制器和DMA控制器。一般通訊分三種情況:
(1)指令通道
CPU向FPGA芯片寫入指令,讀取狀態。CPU直接通過PCIE訪問到FPGA芯片內掛載的存儲器或內部總線。
(2)數據通道
CPU讀寫FPGA板卡上DDR的數據時,CPU通過PCIE配置FPGA芯片內的DMA控制器,輸入數據的源物理地址和目的物理地址。DMA控制器控制FPGA卡上的DDR控制器和PCIE控制器,在FPGA卡上的DDR內存和CPU連接的DDR內存之間傳輸數據。
(3)通知通道
FPGA通過PCIE向CPU發送中斷請求,CPU收到中斷請求后保存當前工作現場,然后轉入中斷處理程序執行,必要時會關閉中斷執行中斷處理程序。CPU執行完中斷處理程序后,會重新打開中斷,然后重載到之前的工作現場繼續執行。
目前FPGA行業面臨的問題
在行業內,微軟在數據中心使用FPGA架構,Amazon也推出了FPGA的計算實例,那么是不是說明整個行業對FPGA的使用比較廣泛呢?實際上,FPGA是個硬件芯片,它本身不能直接使用,也缺乏類似操作系統這樣的系統軟件支持。長期以來,FPGA行業在數據計算加速方向可以分為以下幾個參與方:
1. 芯片原廠:Xilinx和Altera(已被Intel收購)提供FPGA的芯片,直供或者給代理商分銷。
2. IP提供商:提供各種功能的IP,比如訪問DDR內存的IP,支持PCIE設備的IP,圖片編解碼的IP。一些共同的通用IP由芯片原廠提供。
3. 集成商:集成商提供硬件和軟件的支持。由于直接用戶缺乏硬件設計和制造能力,往往希望集成商提供成熟完善的硬件,并完成IP的集成,提供驅動和使用方式,方便最終用戶的使用。
4. 用戶:最終使用者。在數據中心領域,用戶一般目的是希望使用FPGA對計算進行加速。
在FPGA行業,芯片原廠并不提供直接使用的硬件板卡,這個工作由集成商完成。由于硬件板卡使用量小和分擔設計、生產成本,硬件板卡價格往往高于芯片價格,甚至達到十倍之多。
IP提供商因為擔心產權泄露,通常不會迅速提供可用的可執行文件(網表文件)給用戶,而是需要簽署一系列的協議和法律文件,甚至有的IP提供商根本不提供給用戶測試的機會。這樣就造成最終用戶很難得到可用的硬件板卡,更難以及時獲得使用最新工藝芯片的硬件板卡,造成用戶無法快速對不同IP進行驗證,從而挑選適合自身業務的IP。另外,FPGA的開發使用硬件描述語言,缺乏軟件領域非常廣泛使用的框架概念,導致開發周期漫長。一般來說,FPGA開發周期是軟件開發的三倍左右。
綜上所述的這些問題,決定了云對FPGA行業的顛覆和革命。
騰訊云FPGA平臺具體能解決哪些問題
騰訊云FPGA平臺解決的是FPGA整個行業的一些問題。FPGA用戶比較少,屬于一個相對封閉的圈子,FPGA開發門檻高、開源的優質IP比較缺乏、芯片價格昂貴等問題一直為大家所詬病。
針對開發者,騰訊云FPGA平臺提供了FPGA的底層硬件支撐平臺,類似操作系統的部分功能,簡化了開發者對底層通用設備的訪問,比如DDR和PCIE這些通用設備,可以使開發者更聚焦到業務功能的開發。
FPGA 行業內的IP提供者和使用者缺乏一個公開的交易平臺和信用保證機制,IP交易環節冗長,價格不透明,很難達成交易,獲取 IP 后還需要搭建硬件平臺來驗證IP性能,這些都嚴重影響產品上市進程,經常耗時幾個月之久。騰訊云提供了FPGA IP商店,IP開發者和IP提供商可以通過FPGA IP商店為其他客戶無償或有償地提供FPGA IP和對應的測試程序。這些IP都是基于騰訊云FPGA的標準硬件來開發定制的,IP的驗證和測試可以很方便地在云平臺上完成,一個IP的交易可以由幾個月縮短到一天之內,提高交易效率,也使得IP交易變得更加透明。
針對一些希望使用低延時的高質量計算服務的小型公司而言,可以使用FPGA云計算加速服務,不用耗費大量人力進行高性能計算方面的開發,很簡單地就可以把高性能的云計算服務集成到自己的網絡平臺,達到提升用戶體驗的目的。比如:低延時的圖片格式轉換、基于深度學習的圖片分類等服務,類似的服務后續還會進一步豐富。
對于學校的FPGA教學而言,以前學校需要為每個學生購買一個開發板卡,有了騰訊云平臺之后可以節省學校購買開發板的成本,現在只需要給每個學生申請一個FPGA云平臺的賬戶即可,學生登錄上去直接可以根據demo進行學習開發即可。騰訊云平臺同時會為用戶提供便于學習的操作指導和實驗課程方案,用戶學習的東西更接近企業的實際應用場景,可以很好地跟將來的工作需要對接起來。
此外,大容量的FPGA芯片價格比較昂貴, 一個很重要的原因是FPGA芯片缺少量大的爆款產品,而騰訊云FPGA平臺可以聚集大量的客戶來使用騰訊的標準FPGA硬件設備,這樣會增大該FPGA芯片的供應量,同時也便于芯片廠商降低成本,逐漸緩解FPGA芯片昂貴的問題。
從這些可以看出FPGA云化意義重大,可以推動整個FPGA行業的發展,給FPGA產業鏈的各方帶來收益。
FPGA在互聯網業務中的應用優勢
· 圖片轉碼
隨著移動互聯網的發展,用戶每天上傳的圖片量越來越龐大,公司目前用于圖片轉碼的業務主要有QQ相冊、微信等,而業務中使用的圖片格式大都為JPEG格式、WebP格式等,而圖片轉碼所帶來的計算消耗需要上萬臺CPU機器支撐。所以FPGA在互聯網業務中第一個應用場景就是圖片轉碼:JPEG圖片格式轉成WebP圖片格式。項目取得了FPGA處理延時相比CPU降低了20倍,FPGA處理性能是CPU機器的6倍。
為了更進一步提升圖片的壓縮率,同時隨著HEVC高性能編碼標準的發展,HEVC的I幀圖片壓縮率和之前的WebP/JPEG等編碼標準有了很大的提升,HEVC的I幀圖片壓縮率和WebP相比提高20~30%左右,和JPEG相比提高更多,平均能到50%左右,因此,無論從下載帶寬節省還是后臺存儲成本降低,以及用戶下載圖片體驗等角度來看,HEVC標準都有很大優勢。而采用HEVC的問題在于HEVC 的幀壓縮計算復雜度非常高,采用CPU進行轉碼成本很高,導致很難在業務中全面推廣。為了增強圖片轉碼能力,騰訊繼續使用FPGA對圖片轉碼進行加速。
經測試,完成WebP/JPEG格式圖片轉成HEVC格式圖片,測試圖片大小為1920x1080,FPGA處理延時相比CPU降低7倍,FPGA處理性能是CPU機器的10倍,FPGA機型單位成本是CPU機型的1/3。
· 圖片分類
深度學習近年來在語音識別、圖片分類和識別、推薦算法等領域發揮了越來越大的作用。在移動互聯時代,為了增強圖片檢測的處理能力,降低圖片檢測成本,騰訊使用FPGA對CNN計算進行加速。
研發團隊使用FPGA完成CNN算法的Alexnet模型,FPGA處理性能是CPU機器的4倍,FPGA機型單位成本是CPU機型的1/3。
FPGA能讓開發者/團隊更“任性”
對于外部開發者和開發團隊來說,首先,騰訊云FPGA提供統一的硬件平臺。開發者無需關注 FPGA 基礎設施,免去了重復開發硬件平臺面臨的問題和挑戰,快捷部署,幾分鐘就可以部署完畢一臺全新的FPGA平臺。FPGA芯片豐富的邏輯資源可以為開發者“任性”實現功能提供保障。統一的平臺也便于開發團隊快速彈性擴展硬件平臺,從而提高業務容災可靠性。
其次,騰訊云FPGA提供完備的開發環境,不需要專門人員開發驅動環境。開發語言多樣性,HLS,OPENCL,RTL滿足不同類別的開發人員需求,降低學習開發門檻,簡單易用。
再者,騰訊云FPGA提供豐富的IP功能,不僅有大量免費IP和有償的IP服務,而且交易流程透明、安全、可靠。加速開發者開發進度的同時也為開發團隊提供一個將自己開發的IP進行交易的平臺。
最后,騰訊云FPGA提供專業安全防護。部署到云上,將享受與云服務器同等的云安全基礎防護和高防服務。免去傳統FPGA數據存儲和傳輸安全所帶來的困擾。
可以看到,傳統的FPGA開發面臨的硬件平臺穩定性、開發語言門檻高、調試周期長、驅動軟件聯合調試等問題都將得到改觀,開發者和開發團隊能夠從繁雜和重復的工作中快速釋放出來,有更多的時間和精力投入到創新的工作中去,這將為整個技術研發的氛圍增加更多的創新因子,創造更多的價值。
未來,FPGA的行業價值
當前AI火爆,得益于FPGA的高密度計算能力以及低功耗的特性,FPGA率先在深度學習在線預測方向(廣告推薦、圖片識別、語音識別等)得到了較大規模的部署。用戶也常常將FPGA與GPU進行對比,GPU的易編程性、高吞吐與FPGA的低功耗、易部署等特性也各有千秋。相較于GPU以及ASIC,FPGA的低延時以及可編程性也是其核心競爭能力。
對于行業來說,云是一種共享服務的思想,用戶不以占有的方式使用硬件和軟件,而是共享復用,因此大大降低了使用成本,提升了資源的使用效率。FPGA云服務,可以讓行業參與方都獲得價值:
1. 芯片原廠:不需要經過層層代理,增加成本,而是可以通過云提供硬件板卡復用的服務。因為硬件統一采購和維護,也大大提升了穩定性和可靠性。
2. IP提供商:可以把IP放到云平臺的市場中去,最終用戶使用時,云平臺完成部署和交付,用戶不需要接觸可執行文件(網表文件),因此不存在產權泄露的風險。這將鼓勵IP提供商的服務方式,可以提供按時長計費,買斷計費,乃至試用版免費等方式,用戶也可以迅速驗證。
3. 設計和開發:云提供框架方式,封裝了常用的系統級操作(DDR內存的訪問、DMA、PCIE設備控制等),可以支持硬件描述語言,也支持OPENCL以及類似C的高級語言。提供通用的驅動和調用庫,不需要用戶編程。對高階用戶而言,也可以使用OPENCL或者硬件描述語言實現自己的功能。
4. FPGA最初的應用場景是在通信行業,那么其高通信帶寬以及實時性處理能力可以為數據中心基礎架構帶來什么改變呢?當前,FPGA可以在IDC大顯神威的地方,例如低延時網絡架構、網絡虛擬化、高性能存儲以及網絡安全等等。可喜的是,我們看到微軟以及亞馬遜等同行已經使用FPGA在其公有云網絡中進行了諸多積極嘗試,騰訊云當前也在多個方向進行積極的探索和實踐。
可以預見的是,借助于FPGA,我們的數據中心會更加的綠色高效。
-
FPGA
+關注
關注
1630文章
21768瀏覽量
604623 -
gpu
+關注
關注
28文章
4760瀏覽量
129129
原文標題:FPGA是如何實現30倍速度的云加速的?
文章出處:【微信號:FPGAer_Club,微信公眾號:FPGAer俱樂部】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論