賽靈思 SDSoC 開發(fā)環(huán)境介紹
前言
隨著智能系統(tǒng)的進(jìn)步和“ 物聯(lián)網(wǎng)”的發(fā)展,以及人與物之間互聯(lián)互通的增強(qiáng),大多數(shù)新產(chǎn)品現(xiàn)在均采用了基于SoC 的開發(fā)平臺。此類平臺便于企業(yè)以更快的速度將產(chǎn)品推向市場,提高系統(tǒng)級效率,而且最重要的是便于實(shí)現(xiàn)持續(xù)的創(chuàng)新和產(chǎn)品差異化。
為實(shí)現(xiàn)投資回報(bào)最大化,設(shè)計(jì)團(tuán)隊(duì)必須精心選擇實(shí)現(xiàn)產(chǎn)品差異化的方法,同時(shí)還必須滿足日益增長的市場需求和嚴(yán)苛的成本目標(biāo)要求。真正的平臺差異化依賴于新的軟件特性與新的硬件特性的組合。鑒于加速產(chǎn)品上市這一要求實(shí)際上在各層面均存在差異化,因此需要工具和環(huán)境能夠在不影響架構(gòu)和性能的條件下,用傳統(tǒng)ASSP 編程環(huán)境所擁有的完整性和易用性實(shí)現(xiàn)軟硬件的差異化。
就當(dāng)前的硬件差異化而言,許多平臺開發(fā)人員使用FPGA 實(shí)現(xiàn)任意(Any-to-Any)互連。其中的可編程邏輯用于將平臺的處理器連接到PCIe® 和以太網(wǎng)等標(biāo)準(zhǔn)接口上。此外,許多系統(tǒng)也將FPGA 作為用于實(shí)現(xiàn)關(guān)鍵功能和算法加速的協(xié)處理器。與在標(biāo)準(zhǔn)處理器上運(yùn)行相比,可編程邏輯的并行架構(gòu)可提供高達(dá)100 倍以上的性能優(yōu)勢。
2011 年推出的Zynq®-7000 全可編程SoC 和目前新推出的Zynq UltraScale+™MPSoC,分別采用先進(jìn)的28nm 工藝節(jié)點(diǎn)和16nm 工藝節(jié)點(diǎn),將強(qiáng)大的ARM® 處理系統(tǒng)和可編程邏輯完美結(jié)合在了一起。隨著這兩款產(chǎn)品的問世,賽靈思現(xiàn)可提供完全取代傳統(tǒng)處理器和特定領(lǐng)域?qū)S肧oC 的業(yè)經(jīng)驗(yàn)證的替代產(chǎn)品。Zynq SoC和MPSoC 能夠在降低材料清單成本的同時(shí)提升系統(tǒng)性能并降低系統(tǒng)功耗。
賽靈思SDSoC 開發(fā)環(huán)境介紹
Zynq SoC 和MPSoC 與軟件工程師和FPGA 硬件工程師共同組成的設(shè)計(jì)團(tuán)隊(duì)可謂天合之作。但其對于硬件資源有限或欠缺的團(tuán)隊(duì)來說,使用起來很有難度,因?yàn)樾枰邆銻TL(VHDL或Verilog)開發(fā)專業(yè)知識才能充分發(fā)揮該器件的優(yōu)勢。為解決這一難題,讓更多的設(shè)計(jì)團(tuán)隊(duì)能夠利用Zynq 器件的優(yōu)勢,賽靈思推出了一種全新的C/C++ 開發(fā)環(huán)境SDSoC™。SDSoC開發(fā)環(huán)境是賽靈思SDxTM 系列開發(fā)環(huán)境的第三大成員,能夠讓更廣泛的嵌入式軟件開發(fā)人員發(fā)揮軟硬件“ 全可編程”器件的威力。
SDSoC 帶來的軟件定義機(jī)遇
C/C++ 環(huán)境提供類似ASSP 的編程體驗(yàn)
性能功耗比和任意互連
* 重點(diǎn)領(lǐng)域(例如圖像/ 視頻、SDR 等)
注:軟件可編程器件往往與FPGA 結(jié)合使用,以實(shí)現(xiàn)連接和協(xié)處理功能
SDSoC 開發(fā)環(huán)境可通過兩種方式加速Zynq SoC 和MPSoC 開發(fā)進(jìn)程。第一種是,軟件開發(fā)人員借助賽靈思平臺、第三方平臺
或最終用戶平臺,可以比使用傳統(tǒng)硬件/ 傳統(tǒng)軟件開發(fā)流程更快地啟動(dòng)開發(fā)。第二種是,SDSoC 可以消除在將可編程邏輯用作
軟件加速器時(shí)軟件團(tuán)隊(duì)和硬件團(tuán)隊(duì)之間常發(fā)生的反復(fù)變更,真正加速整體系統(tǒng)開發(fā)進(jìn)程。
傳統(tǒng)開發(fā)進(jìn)度
軟件定義開發(fā)進(jìn)程
SDSoC 開發(fā)環(huán)境可提供高度簡化、類似ASSP C/C++ 的編程體驗(yàn),包括簡便易用的Eclipse 集成設(shè)計(jì)環(huán)境(IDE)和用于異構(gòu)Zynq 平臺部署的綜合開發(fā)平臺。SDSoC 配有業(yè)界首款C/C++ 全系統(tǒng)優(yōu)化的編譯器,可提供系統(tǒng)級的特性描述、可編程邏輯內(nèi)自動(dòng)軟件加速、自動(dòng)系統(tǒng)連接生成,以及用于加快編程速度的各種庫。此外,SDSoC 還可為客戶和第三方平臺開發(fā)人員提供專門的流程,以便在SDSoC 開發(fā)環(huán)境中使用這些平臺。
SDSoC 開發(fā)環(huán)境
類似ASSP 的編程體驗(yàn)
SDSoC 可供系統(tǒng)和嵌入式軟件開發(fā)人員使用,其提供的Eclipse IDE 可用于開發(fā)運(yùn)行于裸機(jī)或Linux 和FreeRTOS 等操作系統(tǒng)上的C/C++ 應(yīng)用。SDSoC 可用于開發(fā)各種完整的異構(gòu)多處理系統(tǒng),包括運(yùn)行在ARM/NEON 處理器上的軟件和可編程邏輯中的軟件加速器,還能將現(xiàn)有的HDL IP 模塊反復(fù)用作C 語言可調(diào)用的庫。與傳統(tǒng)的單獨(dú)以硬件為中心的流程和以軟件為中心的流程不同,這兩種流程可能會導(dǎo)致開發(fā)延遲、系統(tǒng)架構(gòu)與性能的不確定性,而SDSoC 在開發(fā)人員熟悉的嵌入式框架中實(shí)現(xiàn)快速系統(tǒng)特性描述和可編程邏輯軟件加速。
這款簡便易用的IDE 可提供項(xiàng)目創(chuàng)建向?qū)?,供用戶選擇目標(biāo)平臺和操作系統(tǒng),并使用模板創(chuàng)建功能齊全的SDSoC 項(xiàng)目,作為構(gòu)建自己應(yīng)用的起點(diǎn)。
此外,SDSoC 還可為軟件團(tuán)隊(duì)提供簡單的GUI 選項(xiàng),用于選擇在可編程邏輯中加速的功能。SDSoC 編譯器將生成準(zhǔn)備在目標(biāo)平臺板上運(yùn)行的所有必備硬件和軟件。
系統(tǒng)級的特性描述
以賽靈思軟件開發(fā)套件(SDK)目前提供的高級軟件特性描述為基礎(chǔ),SDSoC 增添了系統(tǒng)級特性描述,用于快速系統(tǒng)(軟/ 硬件)性能估算。此外,還能快速生成并探索系統(tǒng)級架構(gòu),以實(shí)現(xiàn)最佳總體系統(tǒng)性能與功耗。
SDSoC 采用基于PC 采樣的非侵入式編譯器和標(biāo)準(zhǔn)的GPROF 編譯器,能幫助用戶配置其自身軟件應(yīng)用,以識別占用時(shí)間最多且適用于硬件加速的功能。
此外,SDSoC 還增添了快速系統(tǒng)(軟/ 硬件)性能和器件利用率估算功能,能夠迅速完成系統(tǒng)級架構(gòu)探索,以實(shí)現(xiàn)最佳性能、資源利用率和功耗。用戶可在可編程邏輯中設(shè)定待加速的功能,而且SDSoC 還能調(diào)用C/C++ 代碼來報(bào)告軟件周期、硬件周期、數(shù)據(jù)傳輸估算、總體應(yīng)用加速以及硬件資源利用率等情況。
充分利用基于平臺的性能估算流程,軟件開發(fā)人員能夠在數(shù)分鐘內(nèi)迅速估算出將一項(xiàng)或多項(xiàng)軟件功能轉(zhuǎn)移到硬件中用于加速所產(chǎn)生的性能影響,而實(shí)際的硬件生成則需要一小時(shí)甚至更長時(shí)間。
在目標(biāo)平臺上,SDSoC 使用由ARM CPU 提供的性能計(jì)數(shù)器,同時(shí)自動(dòng)插入AXI 性能監(jiān)控器(APM)到可編程邏輯中以采集硬件性能數(shù)據(jù),可為緩存、存儲器、軟件加速器和總線利用率提供自動(dòng)性能測量。運(yùn)行在平臺上的軟件可采集性能數(shù)據(jù),SDSoC 就使用該數(shù)據(jù)幫助識別系統(tǒng)中的性能瓶頸。這種快速的性能反饋能實(shí)現(xiàn)最佳代碼分區(qū),以滿足系統(tǒng)級性能和功耗需求,同時(shí)將開發(fā)流程縮短數(shù)周時(shí)間。
全系統(tǒng)優(yōu)化的編譯器
SDSoC 還具有針對ARM 處理系統(tǒng)和可編程邏輯的全系統(tǒng)優(yōu)化的編譯器。SDSoC 旨在幫助系統(tǒng)架構(gòu)師和軟件團(tuán)隊(duì)使用“golden
C/C++ source”,通過生成最佳系統(tǒng)連接,快速完成宏架構(gòu)和微架構(gòu)的配置。這樣既能得到最佳系統(tǒng)連接和存儲器接口,還能快速完成設(shè)計(jì)空間探索,便于開發(fā)人員綜合權(quán)衡性能、吞吐量、時(shí)延,同時(shí)保持較短的設(shè)計(jì)迭代時(shí)間。
該編譯器充分利用基礎(chǔ)的高層次綜合編譯器技術(shù),已有逾千名編程人員使用該技術(shù)生成了基于C/C++ 的高性能IP。將該編譯器與鏈接器結(jié)合使用,并基于目標(biāo)平臺以及在可編程邏輯中生成的用戶指定的自動(dòng)軟件加速功能,將程序轉(zhuǎn)換到完整的軟硬件系統(tǒng)中。
基于程序語法、程序分析、調(diào)度安排、系統(tǒng)連接的特性化硬件建模,SDSoC 能在可編程邏輯中生成用于軟件的加速器。SDSoC 充分利用平臺的板支持包(BSP)、目標(biāo)軟件加速功能、IP 和優(yōu)化庫及系統(tǒng)連接生成功能,構(gòu)建設(shè)計(jì)的可編程邏輯部分。該編譯器可自動(dòng)把系統(tǒng)編譯為完整的軟硬件系統(tǒng),包括用于可編程邏輯的比特流和用于配置目標(biāo)平臺的ARM 處理系統(tǒng)ELF 文件。
可編程邏輯中每個(gè)加速功能都可以作為獨(dú)立的線程運(yùn)行。SDSoC 可生成與之同步和保存原始程序語義所需的軟硬件組件,同時(shí)可實(shí)現(xiàn)任務(wù)級的并行和用流水線實(shí)現(xiàn)的通信和計(jì)算,以獲取高性能。
C/C++ 應(yīng)用源碼可包含多個(gè)加速功能,特定功能的多個(gè)實(shí)例以及對主程序各不同部分中的加速器功能的調(diào)用。為獲得最佳性能,SDSoC 還提供賽靈思優(yōu)化庫和賽靈思聯(lián)盟成員提供的備選庫。
通過從“single golden source”生成完整的嵌入式應(yīng)用,SDSoC 可在應(yīng)用層重構(gòu)C/C++ 代碼,便于軟件開發(fā)人員迭代設(shè)計(jì)和架構(gòu)變更,從而顯著縮短在平臺上運(yùn)行工作程序所需的時(shí)間。
面向平臺開發(fā)人員的專家級使用模型
SDSoC可為系統(tǒng)架構(gòu)師和平臺開發(fā)人員提供專家級的使用模型。通過將系統(tǒng)級的特性描述和性能分析功能與自動(dòng)系統(tǒng)連接生成功能完美結(jié)合,該工具可幫助架構(gòu)師定義、探索并生成各種架構(gòu),為自己的應(yīng)用平臺找到最為理想的設(shè)計(jì)實(shí)現(xiàn)方案,并傳遞給嵌入式軟件開發(fā)人員,用于在應(yīng)用平臺頂層構(gòu)建完整的應(yīng)用。
借助自動(dòng)系統(tǒng)連接生成功能,架構(gòu)師可以快速定義、探索并生成宏系統(tǒng)架構(gòu)和微系統(tǒng)架構(gòu),用以確定Zynq處理系統(tǒng)、存儲器和基于可編程邏輯的加速器之間的最佳互聯(lián)架構(gòu)。
將賽靈思Vivado® 設(shè)計(jì)套件與SDSoC 結(jié)合運(yùn)用,可用于創(chuàng)建特定應(yīng)用平臺。該平臺創(chuàng)建功能還能夠?qū)F(xiàn)有的RTL 和IP 配置用作C 語言可調(diào)用的庫。這對需要借助設(shè)計(jì)重用來加快平臺開發(fā)的團(tuán)隊(duì)大有裨益。
SDSoC 可為基于Zynq 全可編程 SoC 的開發(fā)板(諸如ZC702、ZC706 等)、第三方和特定市場平臺(BSP)(如Zedboard、MicroZed 和ZYBO),以及視頻成像開發(fā)套件等提供板支持包(BSP)。這些BSP 中包含的元數(shù)據(jù)可讓SDSoC 進(jìn)行平臺抽象,以便嵌入式軟件開發(fā)人員和系統(tǒng)架構(gòu)師提升生產(chǎn)力,并加速產(chǎn)品開發(fā)進(jìn)程。
SDSoC 開發(fā)環(huán)境可提供類似ASSP 的C/C++ 編程體驗(yàn),以提高應(yīng)用開發(fā)、系統(tǒng)架構(gòu)定義和平臺創(chuàng)建的生產(chǎn)效率。 SDSoC 結(jié)合Zynq 全可編程SoC 和MPSoC,使嵌入式軟件開發(fā)人員能夠加快智能系統(tǒng)開發(fā)進(jìn)程。
結(jié)論
SDSoC 開發(fā)環(huán)境可提供類似ASSP 的C/C++ 編程體驗(yàn),以提高應(yīng)用開發(fā)、系統(tǒng)架構(gòu)定義和平臺創(chuàng)建的生產(chǎn)效率。 SDSoC 結(jié)合Zynq 全可編程SoC 和MPSoC,使嵌入式軟件開發(fā)人員能夠加快智能系統(tǒng)開發(fā)進(jìn)程。