這種方法在過去需要兩個(gè)獨(dú)立的開發(fā)團(tuán)隊(duì),這會(huì)增加非重復(fù)性工程成本、開發(fā)與技術(shù)風(fēng)險(xiǎn)。此外,該方法還將設(shè)計(jì)功能固定在處理器內(nèi)核或可編程邏輯中,使后期優(yōu)化難以進(jìn)行。人們所需的開發(fā)工具應(yīng)該可實(shí)現(xiàn)整個(gè)器件的軟件定義開發(fā),并有能力根據(jù)需要將功能從處理器內(nèi)核轉(zhuǎn)移到可編程邏輯,而且非HDL專家也能完成。這正是系統(tǒng)優(yōu)化編譯器的用武之地。系統(tǒng)優(yōu)化編譯器能利用C、C++或OpenCL?等高級(jí)語言以軟件方式定義整個(gè)系統(tǒng)行為。然后,使用系統(tǒng)優(yōu)化編譯器執(zhí)行處理器系統(tǒng)與可編程邏輯之前的功能分區(qū),該編譯器能夠使功能無縫移動(dòng),以便選擇是在處理器系統(tǒng)中運(yùn)行還是在可編程邏輯中實(shí)現(xiàn)。圖1-使用系統(tǒng)優(yōu)化編譯器選擇要加速的功能。通過使用處理系統(tǒng)內(nèi)部的內(nèi)置定時(shí)器來為功能執(zhí)行計(jì)時(shí)。
可找出造成瓶頸的功能,從而創(chuàng)建瓶頸功能。這些瓶頸功能便成為候選,以備通過使用系統(tǒng)優(yōu)化編譯器在可編程邏輯中實(shí)現(xiàn)加速。處理系統(tǒng)與可編程邏輯之間的移動(dòng)是通過系統(tǒng)優(yōu)化編譯器的高層次綜合(可將C、C++、OpenCL程序轉(zhuǎn)換為Verilog或VHDL描述的工具)與軟件定義連接框架之間的結(jié)合來實(shí)現(xiàn)的。軟件定義連接框架能夠無縫地將HLS結(jié)果連接至軟件應(yīng)用,設(shè)計(jì)團(tuán)隊(duì)使用這種方法,一鍵就能在處理器和可編程邏輯間移動(dòng)功能。當(dāng)然在用戶把功能移動(dòng)到可編程邏輯時(shí),他們也得到了明顯的性能提升,自然這是使用可編程邏輯的結(jié)果。與CPU/GPU解決方案相比,在PL中進(jìn)行加速還能提高確定性并降低時(shí)延,這對(duì)諸如ECU和ADAS的應(yīng)用來說是至關(guān)重要的。
圖2-XC6SLX25T-3CSG324I 使用系統(tǒng)優(yōu)化編譯器對(duì)資源與性能進(jìn)行估算。很多汽車應(yīng)用都是使用業(yè)界標(biāo)準(zhǔn)開源庫進(jìn)行開發(fā),例如在ADAS系統(tǒng)中使用OpenCV或Caffe,或在ECU中使用標(biāo)準(zhǔn)數(shù)學(xué)庫。為加快這些應(yīng)用的開發(fā),系統(tǒng)優(yōu)化編譯器需要能夠支持多個(gè)HLS庫,以便開發(fā)人員在其應(yīng)用中使用。系統(tǒng)優(yōu)化編譯器應(yīng)支持多個(gè)關(guān)鍵庫,·數(shù)學(xué)庫–提供標(biāo)準(zhǔn)數(shù)學(xué)庫的可綜合實(shí)現(xiàn)?!P庫–為實(shí)現(xiàn)FFT、FIR和移位寄存器LUT功能提供IP庫?!ぞ€性代數(shù)庫–提供通用線性代數(shù)功能庫。·任意精度數(shù)據(jù)類型庫–使用有符號(hào)和無符號(hào)整數(shù)支持非2次冪的任意長度數(shù)據(jù)。該庫允許開發(fā)人員更高效地使用FPGA資源。這些庫的提供為開發(fā)團(tuán)隊(duì)提供相當(dāng)大的支持,讓開發(fā)團(tuán)隊(duì)不必開發(fā)類似的功能。
EP3SL50F484C2N, XC4003E-3PQ100C, XC6VLX195T-2FFG784C,
EP3SL50F484I3N, XC4003E-4PC84C, XC6VLX195T-3FFG1156C,
EP3SL70F484I4, XC4005-4PQ160C, XC6VLX195T-L1FFG784I,
EP4C10F17C8N, XC4005-6PG156M, XC6VLX240T-1FF1156I,
EP4CE10E22C6N, XC4005E-3PQ100I, XC6VLX240T-1FF784I,
EP4CE10E22C8N, XC4005E-3TQ144C, XC6VLX240T-1FFG1156C,
EP4CE10E22C8N , XC4005E-4PC84C, XC6VLX240T-1FFG1156I,
EP4CE10E22I7, XC4005E-4PC84I, XC6VLX240T-1FFG1759C,
EP4CE10E22I7N, XC4005E-4PG156I, XC6VLX240T-1FFG1759I,
EP4CE10E22I8LN, XC4005E-4PG156M, XC6VLX240T-1FFG784C,
EP4CE10F17C6N, XC4005E-4PQ160I, XC6VLX240T-1FFG784I,
EP4CE10F17C7N, XC4005E-7TQ144C, XC6VLX240T-2FF1156C,
EP4CE10F17C8N, XC4005XL-2PQ100C, XC6VLX240T-2FF1156I,
EP4CE10F17C8N , XC4005XL-3PQ100C, XC6VLX240T-2FF1759I,
EP4CE10F17I7, XC4005XL-3TQ144C, XC6VLX240T-2FFG1156,
EP4CE10F17I7N, XC4006E-3PQ160C, XC6VLX240T-2FFG1156C,
EP4CE10F17I7N , XC4006E-3TQ144I, XC6VLX240T-2FFG1156I,
EP4CE10F17I8LN, XC4006E-4PQ160C, XC6VLX240T-2FFG1759I,
EP4CE10U14I7N, XC4006E-4PQ208I, XC6VLX365T-1FFG1156C,
EP4CE115F23C7N, XC4006E-4TQ144C, XC6VLX365T-1FFG1156I。