采用C/C++、OpenCL編程中的下個(gè)邏輯步驟
自從賽靈思在上世紀(jì) 80 年代初期開(kāi)發(fā)和推出世界首款 FPGA后,這些用途豐富的可編程邏輯器件就成為硬件工程師的 MacGyver 萬(wàn)能工具。 賽靈思最近發(fā)布了 SDxTM 系列開(kāi)發(fā)環(huán)境(即 SDAccelTM、SDSoCTM 和 SDNetTM), 使軟件開(kāi)發(fā)人員和系統(tǒng)工程師(非 FPGA 設(shè)計(jì)人員)能夠利用賽靈思器件輕松創(chuàng)建自己的定制化軟件定義硬件,從而助力更多創(chuàng)意頭腦實(shí)現(xiàn)非凡的創(chuàng)新技術(shù)。
本文引用地址:http://butianyuan.cn/article/284914.htm介紹這些新型環(huán)境以及賽靈思及其 聯(lián)盟成員提供的其他軟件開(kāi)發(fā)資源之 前,我們先來(lái)思量一下處理架構(gòu)的演變 及其對(duì)軟件開(kāi)發(fā)的影響。
這是軟件問(wèn)題…
2000 年以前,典型的微處理器主要由一 個(gè)帶有板載內(nèi)存的巨型單片處理器內(nèi)核 和一些其他零部件組成,使 MPU 成為一 種用以開(kāi)發(fā)新一代應(yīng)用的相對(duì)簡(jiǎn)單直觀的平臺(tái)。在那之前的三十年里,微處理器廠商每隔22個(gè)月就會(huì)以摩爾定律的增長(zhǎng)速度推出具有更高容量和性能的器件。他們會(huì)簡(jiǎn)單地以增加時(shí)鐘速率的方式來(lái)提高性能。當(dāng)時(shí)速度最快的單片 MPU 是英特爾奔騰 4 處理器 (Pentium 4 Pro),其極限速度剛剛超 過(guò) 4GHz。這種演進(jìn)對(duì)于開(kāi)發(fā)人員來(lái)說(shuō)非常重要,因 為隨著每代產(chǎn)品的推出,他們的程序會(huì)變得日趨復(fù) 雜,能執(zhí)行更細(xì)化的功能,而且程序運(yùn)行速度更快。
但在 21 世紀(jì)初期 ,半 導(dǎo) 體行 業(yè)改 變 了游 戲規(guī) 則,迫使開(kāi)發(fā)人員根據(jù)一套新的規(guī)則進(jìn)行調(diào)整。這 種轉(zhuǎn)變起始于人們意識(shí)到了如果 MPU 產(chǎn)業(yè)繼續(xù)在新 的單片 MPU 架構(gòu)中提高時(shí)鐘速率,那么鑒于芯片工藝技術(shù)的發(fā)展路線圖以及日趨惡化的晶體管漏電流問(wèn)題,MPU 將很快達(dá)到與太陽(yáng)相同的功率密度。
正因?yàn)槿绱?,MPU 產(chǎn)業(yè)快速向同質(zhì)多處理架構(gòu)轉(zhuǎn)型 ;在這種同質(zhì)多處理架構(gòu)中,計(jì)算任務(wù)被分配 給多個(gè)以較低時(shí)鐘速率運(yùn)行的小型內(nèi)核。新的處理 模型讓 MPU 和半導(dǎo)體廠商能夠繼續(xù)生產(chǎn)新一代容量 更高的器件,并將更多功能集成到單個(gè)芯片中以獲 得更高性能。然而,現(xiàn)有程序無(wú)法利用新型分布式 架構(gòu),因此軟件開(kāi)發(fā)人員必須想辦法開(kāi)發(fā)出能夠跨 多個(gè)處理器內(nèi)核高效運(yùn)行的程序。
同時(shí),后來(lái)的幾代芯片工藝技術(shù)繼續(xù)使晶體管 數(shù)量成倍增長(zhǎng),讓半導(dǎo)體公司能夠采取另一個(gè)創(chuàng)新舉措,即將不同類型的內(nèi)核集成到同一顆芯片中,創(chuàng)建出 SoC。這些異構(gòu)多處理器架構(gòu)給嵌入式軟件 開(kāi)發(fā)人員提出了更多挑戰(zhàn),使軟件開(kāi)發(fā)人員不得不 開(kāi)發(fā)定制軟件協(xié)議棧,讓?xiě)?yīng)用能夠在目標(biāo)系統(tǒng)上實(shí) 現(xiàn)最佳運(yùn)行。
如今,半導(dǎo)體行業(yè)又一次改變游戲規(guī)則,但這 次軟件開(kāi)發(fā)人員則對(duì)轉(zhuǎn)變持歡迎態(tài)度。面對(duì)另一個(gè) 功耗窘境,半導(dǎo)體和系統(tǒng)公司正在將目光轉(zhuǎn)向由 FPGA 加速的異構(gòu)處理架構(gòu)。這種架構(gòu)將 MPU 與 FPGA 緊密配合在一起,能以最小的功耗成本提高 系統(tǒng)性能。這種新興架構(gòu)最顯著的應(yīng)用是用于新型 數(shù)據(jù)中心處理架構(gòu)中。在一篇現(xiàn)在著名的論文中, 微軟研究人員展示了在架構(gòu)上將 MPU 與 FPGA 組合 在一起能實(shí)現(xiàn) 90% 的性能提升,同時(shí)功耗僅僅增加10%,在單位功耗性能方面遠(yuǎn)遠(yuǎn)優(yōu)于 MPU 與高功耗GPU 相結(jié)合而實(shí)現(xiàn)的架構(gòu)。
通過(guò) FPGA 加速的異構(gòu)多處理架構(gòu)的優(yōu)勢(shì)已 經(jīng)超 出了數(shù) 據(jù)中心應(yīng) 用范疇 。賽靈 思 Z yn q ? -70 00 All Programmable SoC 器件在單芯片上完美集成了 ARM 處理器和可編程邏輯,讓采用該器件的嵌入式 系統(tǒng)受益良多。使用即將推出的 Zynq UltraScale+TM MPSoC 的系統(tǒng)注定將會(huì)更加出色。Zynq UltraScale+ MPSoC 在單個(gè)器件中集成了多個(gè) ARM? 內(nèi)核(4 個(gè) CortexTM-A53 應(yīng)用處理器、2 個(gè) Cortex-R5 實(shí)時(shí)處理 器和 1 個(gè) MaliTM-400MP GPU)、可編程邏輯、多級(jí) 安全、更高安全性以及高級(jí)電源管理模塊(如圖 1 所示)。
圖1 - Zynq UltraScale+ MPSoC
不過(guò),要讓這些 FPGA 加速的異構(gòu)架構(gòu)適合大規(guī)模部署并方便軟件開(kāi)發(fā)人員使用,F(xiàn)PGA 廠商必須開(kāi)發(fā)新的環(huán)境。在這方面,賽靈思提供了三個(gè)開(kāi) 發(fā)平臺(tái) :針對(duì)數(shù)據(jù)中心開(kāi)發(fā)人員的 SDAccel、針對(duì) 嵌入式系統(tǒng)開(kāi)發(fā)人員的 SDSoC,以及針對(duì)網(wǎng)絡(luò)線卡 架構(gòu)師和開(kāi)發(fā)人員的 SDNet。這些賽靈思新環(huán)境讓 開(kāi)發(fā)人員能夠輕松將代碼的緩慢部分放在可編程邏 輯上編程以加速程序,從而創(chuàng)建出最佳系統(tǒng)。
面向 OpenCL、C/C++ 的 SDAccel 通過(guò)編程實(shí)現(xiàn)FPGA 加速處理
最新的賽靈思 SDAccel 開(kāi)發(fā)環(huán)境為數(shù)據(jù)中心應(yīng)用 開(kāi)發(fā)人員提供一套基于 FPGA 的完整軟硬件解決方 案(圖 2)。SDAccel 環(huán)境包含一個(gè)能有效利用片上 FPGA 資源的快速的架構(gòu)優(yōu)化編譯器。該環(huán)境為開(kāi) 發(fā)人員提供類似于 CPU/GPU 的熟悉的工作環(huán)境和軟 件開(kāi)發(fā)流程,并具有一個(gè)用于代碼開(kāi)發(fā)、特性分析 與調(diào)試的基于 Eclipse 的集成設(shè)計(jì)環(huán)境 (IDE)。利用 該環(huán)境,開(kāi)發(fā)人員可以創(chuàng)建針對(duì)不同數(shù)據(jù)中心應(yīng)用 可即時(shí)換入換出而優(yōu)化的動(dòng)態(tài)重配置加速器 , 可即時(shí) 換入換出。開(kāi)發(fā)人員可使用該環(huán)境創(chuàng)建諸多應(yīng)用, 這些應(yīng)用能在運(yùn)行時(shí)間內(nèi)將眾多內(nèi)核換入和換出 FPGA,且不會(huì)干擾服務(wù)器 CPU 與 FPGA 之間的接 口連接,從而實(shí)現(xiàn)不間斷的應(yīng)用加速。SDAccel 環(huán) 境針對(duì)的是基于 x86 服務(wù)器處理器的主機(jī)系統(tǒng),并 提供現(xiàn)成商用插電式 PCIe 卡,以增加 FPGA 功能。
圖 2 - 面向 OpenCL、C 和 C++ 的 SDAccel 開(kāi)發(fā)環(huán)境可將單位功耗性能提高 25 倍,利用 FPGA 實(shí)現(xiàn)數(shù)據(jù)中心應(yīng)用加速。
憑借 SDAccel 環(huán)境,開(kāi)發(fā)人員即使先前沒(méi)有 FPGA 經(jīng)驗(yàn)也能使用 SDAccel 似曾相識(shí)的工作流程 來(lái)優(yōu)化他們的應(yīng)用,并充分發(fā)揮 FPGA 平臺(tái)作用。該 IDE 提供編碼模板和軟件庫(kù),并可用來(lái)針對(duì)所有開(kāi)發(fā)目標(biāo)進(jìn)行編譯、調(diào)試和特性分析,包括 x86 上 的仿真、使用快速仿真進(jìn)行性能驗(yàn)證,以及 FPGA 處理器上本地執(zhí)行。該開(kāi)發(fā)環(huán)境在面向數(shù)據(jù)中心的 FPGA 平臺(tái)上執(zhí)行應(yīng)用,而且能自動(dòng)插入工具以實(shí)現(xiàn) 所有開(kāi)發(fā)目標(biāo)。賽靈思設(shè)計(jì)的 SDAccel 環(huán)境能夠讓 CPU 和 GPU 開(kāi)發(fā)人員輕松將應(yīng)用遷移到 FPGA 上, 同時(shí)在熟悉的工作流程中維護(hù)和重用 OpenCLTM、C 和 C++ 代碼。
SDAccel 庫(kù)對(duì)于 SDAccel 環(huán)境能實(shí)現(xiàn)類似于 CPU/GPU 的開(kāi)發(fā)體驗(yàn)起到了重大作用。SDAccel 庫(kù) 包含低級(jí)數(shù)學(xué)庫(kù)以及生產(chǎn)力更高的庫(kù)(如 BLAS、 OpenCV 和 DSP 庫(kù))。這些庫(kù)用 C++(而非 RTL) 編寫(xiě)而成,因此開(kāi)發(fā)人員可在所有開(kāi)發(fā)和調(diào)試階段完全按所編寫(xiě)的內(nèi)容來(lái)使用它們。在項(xiàng)目早期,所有開(kāi)發(fā)工作都在 CPU 主機(jī)上完成。因?yàn)?SDAccel 庫(kù) 用 C++ 編寫(xiě),所以它們能夠與 CPU 目標(biāo)(創(chuàng)建一個(gè) 虛擬原型)的應(yīng)用代碼一起編譯,從而允許所有測(cè) 試、調(diào)試和初始特性分析在主機(jī)上進(jìn)行。這個(gè)階段 無(wú)需 FPGA。
SDSOC 支持 ZYNQ SOC 和 MPSOC 系統(tǒng)的嵌入式 開(kāi)發(fā)
賽靈思為嵌入式系統(tǒng)開(kāi)發(fā)人員設(shè)計(jì)了 SDSoC 開(kāi)發(fā)環(huán) 境,用以針對(duì)賽靈思 Zynq SoC 和即將推出的 Zynq UltraScale+ MPSoC 進(jìn)行編程。SDSoC 環(huán)境提供極 大簡(jiǎn)化的嵌入式 C/C++ 應(yīng)用編程體驗(yàn),包括一個(gè)可 在裸機(jī)或操作系統(tǒng)(例如 Linux 和 FreeRTOS)上運(yùn)行的簡(jiǎn)單易用的 Eclipse IDE。該環(huán)境是一種用于異構(gòu) Zynq SoC 和 Zynq MPSoC 平臺(tái)部署的綜合而全面 的開(kāi)發(fā)平臺(tái)(圖 3)。SDSoC 環(huán)境還配套提供業(yè)界 首款 C/C++ 全系統(tǒng)優(yōu)化編譯器,支持系統(tǒng)級(jí)特性分 析、可編程邏輯中的自動(dòng)軟件加速、自動(dòng)系統(tǒng)連接 生成,以及可加快編程速度的多種庫(kù)。該環(huán)境還為 客戶和第三方平臺(tái)開(kāi)發(fā)人員提供開(kāi)發(fā)流程,以使平 臺(tái)能夠在 SDSoC 開(kāi)發(fā)環(huán)境中使用。
圖 3 – SDSoC 開(kāi)發(fā)環(huán)境提供熟悉的嵌入式 C/C++ 應(yīng)用開(kāi)發(fā)體驗(yàn),包括簡(jiǎn)單易用的 Eclipse IDE和綜合而全面的設(shè)計(jì)環(huán)境,以實(shí)現(xiàn)異構(gòu) Zynq All Programmable SoC 和 MPSoC 部署。
更多關(guān)于讓您能夠?qū)⒋a性能最大化的文章,請(qǐng)點(diǎn)擊“軟件開(kāi)發(fā)及嵌入式系統(tǒng)開(kāi)發(fā)人員必備”
評(píng)論