GE智能平臺:多核處理器可替代FPGA
Peter認(rèn)為,鑒于其高性能、易編程及低成本特點(diǎn),GPGPU技術(shù)在許多情況下能夠替代FPGA和DSP
盡管沒有針腳,諸如圖形處理器(GPU)和Tilera處理器等多核處理器在某些應(yīng)用中正逐步替代現(xiàn)場可編程門陳列(FPGA)。開發(fā)人員表示,GPU可用于執(zhí)行多種功能,而非單純的圖形處理,從而成就了圖形處理器通用計算(GPGPU)技術(shù)的出現(xiàn),其中最為矚目的便是 NVIDIA’s CUDA。當(dāng)評估GPGPU、TILE或FPGA技術(shù)能否作為任何即定應(yīng)用的首選時,需考慮(但不局限于)以下因素:
• 可用處理能力
• 延遲
• 可擴(kuò)展性
• 開發(fā)成本
• 技術(shù)嵌入
• 價格
處理能力
處理能力的評估一定程度上取決于處理數(shù)據(jù)類型及處理算法。
由于GPU起初主要負(fù)責(zé)圖形繪制,因此,其尤其善于處理單精度(SP)及(某種情況下)雙精度(DP)浮點(diǎn)(FP)運(yùn)算。Tilera的TILE設(shè)備當(dāng)前不支持硬件FP運(yùn)算,但要求進(jìn)行軟件模擬,且性能代價高昂。一般而言,F(xiàn)PGA亦是如此,設(shè)備通過利用多種資源來處理FP運(yùn)算問題。達(dá)到可接受性能要求IP區(qū)塊需消耗多個門并要求深流水線技術(shù)。例如:當(dāng)前Tesla級GPU每秒最高可執(zhí)行1012次浮點(diǎn)運(yùn)算或1TFLOPS,而Xilinx Virtex-6設(shè)備則為150 GFLOPS。
當(dāng)考慮到定點(diǎn)運(yùn)算時,情況有所不同。新一代GPU在浮點(diǎn)速率相同的情況下可執(zhí)行整數(shù)運(yùn)算,例如:當(dāng)Virtex-6設(shè)備提高至500GOPS時,GPU每秒可執(zhí)行1012次運(yùn)算或1TOPS。整數(shù)性能是TILE處理器的優(yōu)勢所在:8位數(shù)據(jù)時,TILE-Gx(圖1)最高執(zhí)行能力為750GOPS,32位數(shù)據(jù)時為188GOPS。
在信號處理應(yīng)用中使用定點(diǎn)處理會延長開發(fā)時間。在系統(tǒng)定義階段時間進(jìn)行諸多分析,進(jìn)而能夠測定各處理階段的動態(tài)范圍要求,并確保實際信號應(yīng)用中無上溢或下溢現(xiàn)象發(fā)生。否則,開發(fā)人員需要在系統(tǒng)運(yùn)行時使用額外資源來持續(xù)監(jiān)控動態(tài)范圍并調(diào)整區(qū)塊比例因數(shù)。
無論從時間還是空間上講,許多通用架構(gòu)處理開銷可能顯著較大,因此,逐位運(yùn)算尤為適用于FPGA。若在FPGA上執(zhí)行逐位運(yùn)算,則需要考慮開發(fā)時間。
毋庸置疑,系統(tǒng)的實際可用處理能力在很大程度上可能會因理論峰值處理能力的不同而有所差異。影響該差異的兩個主要因素包括硬件架構(gòu)算法的適用性及優(yōu)化執(zhí)行能力所需時間。
例如:FPGA能夠利用其并行及適應(yīng)多種算法的特性來獲得更加接近理論最大值的性能。但是,F(xiàn)PGA需要更大的硅片空間和更長的開發(fā)時間來接近這些理論最大值。對于適應(yīng)于GPU硬件并行模式的算法,GPU已經(jīng)能夠達(dá)到峰值的20~30%。它們同樣具有合理的硅密度(40nm工藝,32nm研發(fā)中)和開發(fā)時間(通常只有數(shù)周,而FPGA則需幾個月)。TILEPro64處理器可提供FPGA相類似的適應(yīng)性和GPU相類似的可編程性,但是,由于其粗糙的任務(wù)級問題分解特點(diǎn)使得其無法像FPGA和GPU那樣實現(xiàn)細(xì)粒度并行。
內(nèi)存帶寬在評估處理器性能方面同等重要,GPU能夠提供3倍于FPGA、6倍于TILEPro64的優(yōu)勢。但是,必須指明,該帶寬須以下列條件為基礎(chǔ):出現(xiàn)的大延遲須通過交叉處理進(jìn)行控制,應(yīng)在最佳訪問模式中通過整合實現(xiàn)接合訪問。有了FPGA,開發(fā)人員需要充分考慮內(nèi)存位置。新一代GPU和TILEPro64處理器具有傳統(tǒng)的緩存分布,能夠幫助優(yōu)化內(nèi)存位置并減少開發(fā)時間。
延遲
也許能夠排除使用GPGPU的最可能因素便是延遲。例如:調(diào)用內(nèi)核所需時間及主存儲器較長訪問時間均可引起長延遲。許多情況下,這種延遲可能會稍有緩解但是無法完全避免。因此首選應(yīng)為大數(shù)據(jù)集處理,原因在于,其為大量運(yùn)算,換言之,其具備較高的計算強(qiáng)度。在需要滿足嚴(yán)格延遲要求的環(huán)境下(例如閉回路控制),F(xiàn)PGA為首選。TILE處理器具有良好的延遲特性,“裸機(jī)”模式下進(jìn)行編程時尤為突出。
可擴(kuò)展性
FPGA能夠與諸如Aurora等低開銷聯(lián)接緊密耦合,或執(zhí)行諸如Serial RapidIO或PCI Express等標(biāo)準(zhǔn)串行結(jié)構(gòu)。GPGPU為協(xié)處理器,通常需要一個主處理器。如圖2所示,許多GPU能夠聯(lián)接至一個單主處理器(首選多核)中,但是,當(dāng)各主處理器核使用一個GPU時,共享資源會限制返回。
多聯(lián)接GPGPU間執(zhí)行代碼的常用方法是使用OpenMP。該方法允許在并行線程中自動執(zhí)行處理回路,且分別使用不同的GPU。在集群層面(主處理器+GPU[或多GPU])還可實現(xiàn)進(jìn)一步擴(kuò)展。該集群還可通過PCI Express、10G Ethernet、InfiniBand及其它聯(lián)接進(jìn)行聯(lián)接,并且通過使用諸如MPI等中間件進(jìn)行編程。
TILE處理器可通過多種網(wǎng)狀結(jié)構(gòu)實現(xiàn)核間高度連接,進(jìn)而調(diào)整至不同的處理類型。TILE處理器多交換結(jié)構(gòu)考慮到了核間通用低延遲IPC及核間內(nèi)存一致性。設(shè)備與設(shè)備之間可通過10G以太網(wǎng)和PCI Express進(jìn)行連接。整個設(shè)備或核心集群可編程為對稱多處理設(shè)備。
開發(fā)成本
開發(fā)成本難以度量。從定性分析的角度,一般認(rèn)為采用C或C++的多核設(shè)備編程要比FPGA編程簡單。而且大家普遍認(rèn)為找到合格的多核設(shè)備編程工程師要比招募FPGA 設(shè)備的VHDL或Verilog編程人員更加容易。由于開發(fā)人員須同時優(yōu)化硬件和算法(軟件),因此需要多種技能,才可使FPGA接近理論性能。在多核情況下,因為硬件已經(jīng)確定,開發(fā)人員可專注于算法開發(fā)和優(yōu)化(僅軟件)。
量化該差別是個難題。一種方法是考慮軟件規(guī)模即代碼行(SLOC)多少。這種方法根據(jù)算法不同而會有所差異,但多核處理器代碼行少于三分之一的現(xiàn)象并不少見。使用更高級的比較方法會使情況變得模糊——如GPGPU采用MATLAB,F(xiàn)PGA編程采用Agility-C或MATLAB系統(tǒng)生成器等。
單單SLOC并不能精確代表開發(fā)成本。許多推動軟件開發(fā)生產(chǎn)率發(fā)展的工具和語言創(chuàng)新,如集成開發(fā)環(huán)境、調(diào)試器、測試覆蓋率生成和面向?qū)ο缶幊潭荚趯PGA開發(fā)產(chǎn)生影響——但還有很長的路要走。此外,開箱即用的FPGA開發(fā)由于較長的綜合及布局、布線時間、較低的處理器狀態(tài)透明度以及可能耗時很久的仿真時間等因素,并不具有最快的軟件測試和修改周期。這些問題有相應(yīng)的解決方案,但都需要額外的投資。
技術(shù)嵌入
在應(yīng)用層面,GPGPU設(shè)備可升級至更多核的新產(chǎn)品而無需做出很大改動。例如,無論存在多少核,通過小型執(zhí)行單元(內(nèi)核)進(jìn)行并行處理的方法都依然有效。在開發(fā)及運(yùn)行時,工具鏈和驅(qū)動程序可分別使應(yīng)用程序與硬件脫離。可同時調(diào)用成百上千的線程,運(yùn)行這些內(nèi)核。
盡管沒有針腳,諸如圖形處理器(GPU)和Tilera處理器等多核處理器在某些應(yīng)用中正逐步替代現(xiàn)場可編程門陳列(FPGA)。開發(fā)人員表示,GPU可用于執(zhí)行多種功能,而非單純的圖形處理,從而成就了圖形處理器通用計算(GPGPU)技術(shù)的出現(xiàn),其中最為矚目的便是 NVIDIA’s CUDA。當(dāng)評估GPGPU、TILE或FPGA技術(shù)能否作為任何即定應(yīng)用的首選時,需考慮(但不局限于)以下因素:
• 可用處理能力
• 延遲
• 可擴(kuò)展性
• 開發(fā)成本
• 技術(shù)嵌入
• 價格
處理能力
處理能力的評估一定程度上取決于處理數(shù)據(jù)類型及處理算法。
由于GPU起初主要負(fù)責(zé)圖形繪制,因此,其尤其善于處理單精度(SP)及(某種情況下)雙精度(DP)浮點(diǎn)(FP)運(yùn)算。Tilera的TILE設(shè)備當(dāng)前不支持硬件FP運(yùn)算,但要求進(jìn)行軟件模擬,且性能代價高昂。一般而言,F(xiàn)PGA亦是如此,設(shè)備通過利用多種資源來處理FP運(yùn)算問題。達(dá)到可接受性能要求IP區(qū)塊需消耗多個門并要求深流水線技術(shù)。例如:當(dāng)前Tesla級GPU每秒最高可執(zhí)行1012次浮點(diǎn)運(yùn)算或1TFLOPS,而Xilinx Virtex-6設(shè)備則為150 GFLOPS。
當(dāng)考慮到定點(diǎn)運(yùn)算時,情況有所不同。新一代GPU在浮點(diǎn)速率相同的情況下可執(zhí)行整數(shù)運(yùn)算,例如:當(dāng)Virtex-6設(shè)備提高至500GOPS時,GPU每秒可執(zhí)行1012次運(yùn)算或1TOPS。整數(shù)性能是TILE處理器的優(yōu)勢所在:8位數(shù)據(jù)時,TILE-Gx(圖1)最高執(zhí)行能力為750GOPS,32位數(shù)據(jù)時為188GOPS。
在信號處理應(yīng)用中使用定點(diǎn)處理會延長開發(fā)時間。在系統(tǒng)定義階段時間進(jìn)行諸多分析,進(jìn)而能夠測定各處理階段的動態(tài)范圍要求,并確保實際信號應(yīng)用中無上溢或下溢現(xiàn)象發(fā)生。否則,開發(fā)人員需要在系統(tǒng)運(yùn)行時使用額外資源來持續(xù)監(jiān)控動態(tài)范圍并調(diào)整區(qū)塊比例因數(shù)。
無論從時間還是空間上講,許多通用架構(gòu)處理開銷可能顯著較大,因此,逐位運(yùn)算尤為適用于FPGA。若在FPGA上執(zhí)行逐位運(yùn)算,則需要考慮開發(fā)時間。
毋庸置疑,系統(tǒng)的實際可用處理能力在很大程度上可能會因理論峰值處理能力的不同而有所差異。影響該差異的兩個主要因素包括硬件架構(gòu)算法的適用性及優(yōu)化執(zhí)行能力所需時間。
例如:FPGA能夠利用其并行及適應(yīng)多種算法的特性來獲得更加接近理論最大值的性能。但是,F(xiàn)PGA需要更大的硅片空間和更長的開發(fā)時間來接近這些理論最大值。對于適應(yīng)于GPU硬件并行模式的算法,GPU已經(jīng)能夠達(dá)到峰值的20~30%。它們同樣具有合理的硅密度(40nm工藝,32nm研發(fā)中)和開發(fā)時間(通常只有數(shù)周,而FPGA則需幾個月)。TILEPro64處理器可提供FPGA相類似的適應(yīng)性和GPU相類似的可編程性,但是,由于其粗糙的任務(wù)級問題分解特點(diǎn)使得其無法像FPGA和GPU那樣實現(xiàn)細(xì)粒度并行。
內(nèi)存帶寬在評估處理器性能方面同等重要,GPU能夠提供3倍于FPGA、6倍于TILEPro64的優(yōu)勢。但是,必須指明,該帶寬須以下列條件為基礎(chǔ):出現(xiàn)的大延遲須通過交叉處理進(jìn)行控制,應(yīng)在最佳訪問模式中通過整合實現(xiàn)接合訪問。有了FPGA,開發(fā)人員需要充分考慮內(nèi)存位置。新一代GPU和TILEPro64處理器具有傳統(tǒng)的緩存分布,能夠幫助優(yōu)化內(nèi)存位置并減少開發(fā)時間。
延遲
也許能夠排除使用GPGPU的最可能因素便是延遲。例如:調(diào)用內(nèi)核所需時間及主存儲器較長訪問時間均可引起長延遲。許多情況下,這種延遲可能會稍有緩解但是無法完全避免。因此首選應(yīng)為大數(shù)據(jù)集處理,原因在于,其為大量運(yùn)算,換言之,其具備較高的計算強(qiáng)度。在需要滿足嚴(yán)格延遲要求的環(huán)境下(例如閉回路控制),F(xiàn)PGA為首選。TILE處理器具有良好的延遲特性,“裸機(jī)”模式下進(jìn)行編程時尤為突出。
可擴(kuò)展性
FPGA能夠與諸如Aurora等低開銷聯(lián)接緊密耦合,或執(zhí)行諸如Serial RapidIO或PCI Express等標(biāo)準(zhǔn)串行結(jié)構(gòu)。GPGPU為協(xié)處理器,通常需要一個主處理器。如圖2所示,許多GPU能夠聯(lián)接至一個單主處理器(首選多核)中,但是,當(dāng)各主處理器核使用一個GPU時,共享資源會限制返回。
多聯(lián)接GPGPU間執(zhí)行代碼的常用方法是使用OpenMP。該方法允許在并行線程中自動執(zhí)行處理回路,且分別使用不同的GPU。在集群層面(主處理器+GPU[或多GPU])還可實現(xiàn)進(jìn)一步擴(kuò)展。該集群還可通過PCI Express、10G Ethernet、InfiniBand及其它聯(lián)接進(jìn)行聯(lián)接,并且通過使用諸如MPI等中間件進(jìn)行編程。
TILE處理器可通過多種網(wǎng)狀結(jié)構(gòu)實現(xiàn)核間高度連接,進(jìn)而調(diào)整至不同的處理類型。TILE處理器多交換結(jié)構(gòu)考慮到了核間通用低延遲IPC及核間內(nèi)存一致性。設(shè)備與設(shè)備之間可通過10G以太網(wǎng)和PCI Express進(jìn)行連接。整個設(shè)備或核心集群可編程為對稱多處理設(shè)備。
開發(fā)成本
開發(fā)成本難以度量。從定性分析的角度,一般認(rèn)為采用C或C++的多核設(shè)備編程要比FPGA編程簡單。而且大家普遍認(rèn)為找到合格的多核設(shè)備編程工程師要比招募FPGA 設(shè)備的VHDL或Verilog編程人員更加容易。由于開發(fā)人員須同時優(yōu)化硬件和算法(軟件),因此需要多種技能,才可使FPGA接近理論性能。在多核情況下,因為硬件已經(jīng)確定,開發(fā)人員可專注于算法開發(fā)和優(yōu)化(僅軟件)。
量化該差別是個難題。一種方法是考慮軟件規(guī)模即代碼行(SLOC)多少。這種方法根據(jù)算法不同而會有所差異,但多核處理器代碼行少于三分之一的現(xiàn)象并不少見。使用更高級的比較方法會使情況變得模糊——如GPGPU采用MATLAB,F(xiàn)PGA編程采用Agility-C或MATLAB系統(tǒng)生成器等。
單單SLOC并不能精確代表開發(fā)成本。許多推動軟件開發(fā)生產(chǎn)率發(fā)展的工具和語言創(chuàng)新,如集成開發(fā)環(huán)境、調(diào)試器、測試覆蓋率生成和面向?qū)ο缶幊潭荚趯PGA開發(fā)產(chǎn)生影響——但還有很長的路要走。此外,開箱即用的FPGA開發(fā)由于較長的綜合及布局、布線時間、較低的處理器狀態(tài)透明度以及可能耗時很久的仿真時間等因素,并不具有最快的軟件測試和修改周期。這些問題有相應(yīng)的解決方案,但都需要額外的投資。
技術(shù)嵌入
在應(yīng)用層面,GPGPU設(shè)備可升級至更多核的新產(chǎn)品而無需做出很大改動。例如,無論存在多少核,通過小型執(zhí)行單元(內(nèi)核)進(jìn)行并行處理的方法都依然有效。在開發(fā)及運(yùn)行時,工具鏈和驅(qū)動程序可分別使應(yīng)用程序與硬件脫離。可同時調(diào)用成百上千的線程,運(yùn)行這些內(nèi)核。
文章版權(quán)歸西部工控xbgk所有,未經(jīng)許可不得轉(zhuǎn)載。