自從賽靈思在上世紀(jì) 80 年代初期開(kāi)發(fā)和推出世界首款 FPGA 后,這些用途豐富的可編程邏輯器件就成為硬件工程師的 MacGyver 萬(wàn)能工具。賽靈思最近發(fā)布了SDx系列開(kāi)發(fā)環(huán)境(即 SDAccel、SDSoC 和 SDNet),使軟件開(kāi)發(fā)人員和系統(tǒng)工程師(非 FPGA 設(shè)計(jì)人員)能夠利用賽靈思器件輕松創(chuàng)建自己的定制化軟件定義硬件,從而助力更多創(chuàng)意頭腦實(shí)現(xiàn)非凡的創(chuàng)新技術(shù)。
介紹這些新型環(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ō)非常重要,因?yàn)殡S著每代產(chǎn)品的推出,他們的程序會(huì)變得日趨復(fù)雜,能執(zhí)行更細(xì)化的功能,而且程序運(yùn)行速度更快。
圖 1:Zynq UltraScale+ MPSoC
但在 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)行的程序。
SDAccel 環(huán)境包括一個(gè)快速的架構(gòu)優(yōu)化編譯器,能高效利用片上 FPGA 資源。
同時(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é)議棧,讓應(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)用范疇。賽靈思 Zynq-7000 All Programmable SoC 器件在單芯片上完美集成了 ARM 處理器和可編程邏輯,讓采用該器件的嵌入式系統(tǒng)受益良多。使用即將推出的 Zynq UltraScale+ MPSoC 的系統(tǒng)注定將會(huì)更加出色。Zynq UltraScale+ MPSoC 在單個(gè)器件中集成了多個(gè) ARM 內(nèi)核(4 個(gè) Cortex-A53 應(yīng)用處理器、2 個(gè) Cortex-R5 實(shí)時(shí)處理器和 1 個(gè) Mali-400MP GPU)、可編程邏輯、多級(jí)安全、更高安全性以及高級(jí)電源管理模塊(如圖 1 所示)。
不過(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 功能。
憑借 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ù)和重用 OpenCL、C 和 C++ 代碼。
圖 2: 面向 OpenCL、C 和 C++ 的 SDAccel 開(kāi)發(fā)環(huán)境可將單位功耗性能提高 25 倍,利用 FPGA 實(shí)現(xiàn)數(shù)據(jù)中心應(yīng)用加速。
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)編寫而成,因此開(kāi)發(fā)人員可在所有開(kāi)發(fā)和調(diào)試階段完全按所編寫的內(nèi)容來(lái)使用它們。在項(xiàng)目早期,所有開(kāi)發(fā)工作都在 CPU 主機(jī)上完成。因?yàn)?SDAccel 庫(kù)用 C++ 編寫,所以它們能夠與 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 部署。
SDSoC 為 ZC702 和 ZC706 等 Zynq All Programmable SoC 開(kāi)發(fā)板,以及包括 ZedBoard、MicroZed、ZYBO 和視頻與成像開(kāi)發(fā)套件等在內(nèi)的第三方和市場(chǎng)專用平臺(tái)提供板支持包 (BSP)。BSP 包含能夠從軟件開(kāi)發(fā)人員和系統(tǒng)架構(gòu)師的代碼中將平臺(tái)抽象出來(lái)的元數(shù)據(jù),以簡(jiǎn)化智能異構(gòu)系統(tǒng)的創(chuàng)建、集成和驗(yàn)證。
SDNET 支持 FPGA 加速線卡的設(shè)計(jì)和編程
SDNet 是一種軟件定義規(guī)范環(huán)境,它使用直觀的類似于 C 的高級(jí)語(yǔ)言來(lái)設(shè)計(jì)要求并創(chuàng)建網(wǎng)絡(luò)線卡規(guī)范(圖 4)。該環(huán)境使網(wǎng)絡(luò)架構(gòu)師和開(kāi)發(fā)人員能夠創(chuàng)建“軟”定義網(wǎng)絡(luò),將可編程性和智能化從控制層擴(kuò)展到數(shù)據(jù)層。
傳統(tǒng)的軟件定義網(wǎng)絡(luò)架構(gòu)采用固定的數(shù)據(jù)層硬件,通過(guò)狹窄的南向 API 連接到控制層,而軟定義網(wǎng)絡(luò)則不然,其基于可編程數(shù)據(jù)層,具有內(nèi)容智能功能和寬泛的北向 API 控制層連接。這樣能實(shí)現(xiàn)多種突破性的功能,包括: 支持獨(dú)立的線速服務(wù),避免各種協(xié)議的復(fù)雜性;提供以流程為單位的靈活服務(wù);支持革命性的創(chuàng)新型“無(wú)損業(yè)務(wù)”升級(jí),同時(shí)以 100% 的線路速率運(yùn)行。
圖4: SDNet 環(huán)境使網(wǎng)絡(luò)架構(gòu)師能以類似于 C 的語(yǔ)言創(chuàng)建規(guī)范。硬件團(tuán)隊(duì)完成設(shè)計(jì)后,開(kāi)發(fā)人員可使用 SDNet 現(xiàn)場(chǎng)為線卡升級(jí)或添加協(xié)議。
這些獨(dú)特的功能使運(yùn)營(yíng)商和多業(yè)務(wù)系統(tǒng)運(yùn)營(yíng)商 (MSO) 能夠動(dòng)態(tài)提供差異化服務(wù),且不會(huì)對(duì)現(xiàn)有服務(wù)造成任何中斷,也不需要硬件質(zhì)量認(rèn)證或進(jìn)行上門服務(wù)。該環(huán)境的動(dòng)態(tài)服務(wù)提供功能使服務(wù)提供商能夠增加營(yíng)收并加快服務(wù)上市速度,同時(shí)降低資本支出和運(yùn)營(yíng)支出。網(wǎng)絡(luò)設(shè)備供應(yīng)商意識(shí)到同樣能夠通過(guò) SDNet 平臺(tái)獲得相同的優(yōu)勢(shì),使他們能夠通過(guò)部署 SDNet 環(huán)境編程的內(nèi)容感知式數(shù)據(jù)層硬件,實(shí)現(xiàn)更大的差異化。
MathWorks 和賽靈思技術(shù)的這種組合幫助公司客戶打造出眾多創(chuàng)新產(chǎn)品。
嵌入式開(kāi)發(fā)環(huán)境
為了進(jìn)一步幫助嵌入式軟件工程師進(jìn)行編程,賽靈思提供全套嵌入式工具和運(yùn)行時(shí)間環(huán)境,以幫助嵌入式軟件開(kāi)發(fā)人員從概念到生產(chǎn)高效編程。賽靈思為開(kāi)發(fā)人員提供一個(gè)名為賽靈思軟件開(kāi)發(fā)套件 (SDK) 的基于 Eclipse 的 IDE,其中包含編輯器、編譯器、調(diào)試器、驅(qū)動(dòng)程序和多種庫(kù),針對(duì)的是 Zynq SoC 或含有賽靈思 32 位 MicroBlaze 軟核的 FPGA。該環(huán)境開(kāi)箱即用并支持多種高級(jí)功能,例如構(gòu)建在賽靈思獨(dú)特 Zynq SoC 和 MPSoC 之上的安全和虛擬化軟件驅(qū)動(dòng)程序。這讓開(kāi)發(fā)人員可以構(gòu)建智能、安全的真正差異化的連接系統(tǒng)。
賽靈思提供全套開(kāi)源資源,可用以開(kāi)發(fā)、引導(dǎo)、運(yùn)行、調(diào)試和維護(hù)在賽靈思 SoC或仿真平臺(tái)上運(yùn)行的 Linux 應(yīng)用。賽靈思提供實(shí)例應(yīng)用、內(nèi)核構(gòu)建、Yocto 方法、多處理與實(shí)時(shí)解決方案、驅(qū)動(dòng)程序和論壇,以及社區(qū)鏈接。Linux 開(kāi)源開(kāi)發(fā)人員會(huì)找到一個(gè)非常舒適的環(huán)境,在其中進(jìn)行學(xué)習(xí)和開(kāi)發(fā),并與其他具有相同興趣和需求的用戶互動(dòng)交流。
不斷壯大的強(qiáng)大編程環(huán)境聯(lián)盟
除了為開(kāi)發(fā)人員提供新的 SDx 開(kāi)發(fā)環(huán)境和 SDK 以外,賽靈思還在過(guò)去十年中與很多已經(jīng)具有完善開(kāi)發(fā)環(huán)境的公司組建了強(qiáng)大的聯(lián)盟,這些開(kāi)發(fā)環(huán)境都在特定的細(xì)分市場(chǎng)為開(kāi)發(fā)人員服務(wù)。
美國(guó)國(guó)家儀器公司 (NI)(美國(guó)德克薩斯州 Austin)提供的硬件開(kāi)發(fā)平臺(tái)倍受控制和測(cè)試系統(tǒng)創(chuàng)新人員青睞。賽靈思的 FPGA 和 Zynq SoC 則為 NI RIO 平臺(tái)注入動(dòng)力。NI 的 LabVIEW 開(kāi)發(fā)環(huán)境是一款用戶友好型圖形化程序,可以運(yùn)行賽靈思的 Vivado Design Suite,這樣 NI 的客戶就無(wú)需知道任何 FPGA 設(shè)計(jì)細(xì)節(jié),有些客戶或許都不知道賽靈思器件位于 RIO 平臺(tái)的核心。但他們可在 LabVIEW 環(huán)境中對(duì)系統(tǒng)簡(jiǎn)單編程,并讓 NI 的硬件為他們所開(kāi)發(fā)的設(shè)計(jì)實(shí)現(xiàn)進(jìn)行性能加速。
MathWorks(美國(guó)馬薩諸塞州 Natick)在十多年前就在其 MATLAB、Simulink、HDL Coder 和 Embedded Coder 中提供了 FPGA 支持,賽靈思的 ISE 和 Vivado 工具可在其中全自動(dòng)運(yùn)行。這樣,用戶(主要是數(shù)學(xué)專業(yè)的算法開(kāi)發(fā)人員)就可以在開(kāi)發(fā)算法時(shí)簡(jiǎn)便地在 FPGA 架構(gòu)上運(yùn)行算法,并顯著提升算法性能。
賽靈思在十多年前為其 ISE 開(kāi)發(fā)環(huán)境添加了名為 System Generator 的 FPGA 架構(gòu)級(jí)工具,最近,又將該工具添加到 Vivado Design Suite 中,以便讓具有 FPGA 知識(shí)背景的團(tuán)隊(duì)能夠?qū)υO(shè)計(jì)進(jìn)行調(diào)整,以進(jìn)一步提升算法性能。MathWorks 和賽靈思技術(shù)的這種組合幫助公司客戶打造出出眾多創(chuàng)新產(chǎn)品。
ARM、勞特巴赫有限公司 (Lauterbach)、日本橫河數(shù)字計(jì)算機(jī)公司 (Yokogawa Digital Computer Corp) 和京都微機(jī)集團(tuán) (Kyoto Microcomputer Corp) 等眾多賽靈思聯(lián)盟成員可提供支持 SDx 和 Alliance 環(huán)境的開(kāi)發(fā)工具。在 OS 和中間件支持方面,賽靈思以及聯(lián)盟成員為客戶提供多種軟件選擇,諸如 Linux、RTOS、裸機(jī),甚至包括管理程序和支持 Trust-Zone 內(nèi)核的解決方案,滿足保密性和安全性需求。
-
FPGA
+關(guān)注
關(guān)注
1629文章
21729瀏覽量
602986 -
半導(dǎo)體
+關(guān)注
關(guān)注
334文章
27286瀏覽量
218074 -
芯片工藝
+關(guān)注
關(guān)注
0文章
13瀏覽量
7125
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論