使用系統優(yōu)化編譯器加速汽車(chē)電子產(chǎn)品設計
得益于摩爾定律,汽車(chē)電氣系統經(jīng)歷了快速的技術(shù)增長(cháng)?,F代化的汽車(chē)已獲得長(cháng)足發(fā)展,不再是耦合了 AM 無(wú)線(xiàn)電的簡(jiǎn)單發(fā)動(dòng)機電氣系統。如今現代化的汽車(chē)搭載了多種高級電子系統,能夠執行發(fā)動(dòng)機控制、高級駕駛員輔助系統 (ADAS)、牽引力與穩定性控制、信息娛樂(lè )等功能,此外還針對某些尖端應用提供了自主操作能力。
本文引用地址:http://dyxdggzs.com/article/201802/375223.htm這種汽車(chē)內電子系統部署的顯著(zhù)增長(cháng)也帶來(lái)了幾個(gè)必須由設計人員解決的挑戰:
· 性能 – 需要實(shí)時(shí)、低時(shí)延與高確定性的性能以實(shí)現例如 ADAS、ECU、牽引力與穩定性控制等多種車(chē)載功能。
· 安全 – 汽車(chē)電子系統實(shí)現關(guān)鍵功能,故障會(huì )導致受傷或死亡。因此,系統必須實(shí)現信息安全保障與防篡改技術(shù),以防止未授權的修改。
· 安全性 – 必須符合 ISO26262 規定的汽車(chē)安全完整性水平。
· 接口 – 必須能夠連接多種傳感器、驅動(dòng)器與其他制動(dòng)器。
· 功率效率 – 必須在有限的功耗預算內高效運行。
· 軟件定義 – 具備高靈活性以適應多種市場(chǎng)中的不同標準與條件。
為應對這些挑戰,汽車(chē)電子系統開(kāi)發(fā)人員正在部署片上異構系統 (SoC) 器件。異構器件將一個(gè)處理單元(通常為多核)與一個(gè)或多個(gè)異構協(xié)同處理器(例如 GPU、DSP 或可編程邏輯)相結合。
將處理單元與可編程邏輯相結合可構成緊密集成型系統,以便利用可編程邏輯的固有并行特性。該特性支持使用可編程邏輯 (PL) 實(shí)現高性能算法和接口連接,同時(shí)由處理系統實(shí)現更高級的決策制定、通信與系統管理功能。完成結合后,便可使可編程邏輯分擔處理任務(wù),從而創(chuàng )建更具響應性、確定性并且能效更高的解決方案。
就接口連接而言,異構 SoC 可支持多種業(yè)界標準接口,這些接口可通過(guò)處理系統或可編程邏輯實(shí)現。得益于 IO 結構的靈活性,可使用可編程邏輯實(shí)現關(guān)鍵的原有接口與定制接口。然而,這需要添加一個(gè)外部 PHY 來(lái)實(shí)現協(xié)議的物理層,從而提供任意連接。
某些異構 SoC 面向多個(gè)器件級與系統級安全功能提供支持,便于輕松實(shí)現。這些器件能夠對啟動(dòng)和配置過(guò)程進(jìn)行加密與驗證。如果處理器內核是基于 ARM 處理器的,那么可使用 Trustzone 保證軟件環(huán)境安全。有了 Trustzone,開(kāi)發(fā)團隊便可創(chuàng )建正交環(huán)境,通過(guò)使用程序管理器,對軟件訪(fǎng)問(wèn)底層硬件進(jìn)行限制。此外,這里也提供幾個(gè)額外的設計選擇,例如功能隔離,可以在設計中實(shí)現,以進(jìn)一步加強取決于需求的安全解決方案。
傳統的異構 SoC 開(kāi)發(fā)流程把設計劃分為處理器系統和可編程邏輯兩大部分。這種方法在過(guò)去需要兩個(gè)獨立的開(kāi)發(fā)團隊,這會(huì )增加非重復性工程成本、開(kāi)發(fā)時(shí)間與技術(shù)風(fēng)險。此外,該方法還將設計功能固定在處理器內核或可編程邏輯中,使后期優(yōu)化難以進(jìn)行。
人們所需的開(kāi)發(fā)工具應該可實(shí)現整個(gè)器件的軟件定義開(kāi)發(fā),并有能力根據需要將功能從處理器內核轉移到可編程邏輯,而且非 HDL 專(zhuān)家也能完成。
這正是系統優(yōu)化編譯器的用武之地。系統優(yōu)化編譯器能利用 C、C++ 或 OpenCL? 等高級語(yǔ)言以軟件方式定義整個(gè)系統行為。然后,使用系統優(yōu)化編譯器執行處理器系統與可編程邏輯之前的功能分區,該編譯器能夠使功能無(wú)縫移動(dòng),以便選擇是在處理器系統中運行還是在可編程邏輯中實(shí)現。
圖 1 - 使用系統優(yōu)化編譯器選擇要加速的功能。
通過(guò)使用處理系統內部的內置定時(shí)器來(lái)為功能執行時(shí)間計時(shí),可找出造成瓶頸的功能,從而創(chuàng )建瓶頸功能列表。這些瓶頸功能便成為候選,以備通過(guò)使用系統優(yōu)化編譯器在可編程邏輯中實(shí)現加速。
處理系統與可編程邏輯之間的移動(dòng)是通過(guò)系統優(yōu)化編譯器的高層次綜合(可將 C、C++、OpenCL 程序轉換為 Verilog 或 VHDL 描述的工具)與軟件定義連接框架之間的結合來(lái)實(shí)現的。軟件定義連接框架能夠無(wú)縫地將 HLS 結果連接至軟件應用,設計團隊使用這種方法,一鍵點(diǎn)擊就能在處理器和可編程邏輯間移動(dòng)功能。當然在用戶(hù)把功能移動(dòng)到可編程邏輯時(shí),他們也得到了明顯的性能提升,自然這是使用可編程邏輯的結果。與 CPU/GPU 解決方案相比,在 PL 中進(jìn)行加速還能提高確定性并降低時(shí)延,這對諸如 ECU 和 ADAS 的應用來(lái)說(shuō)是至關(guān)重要的。
圖 2 - 使用系統優(yōu)化編譯器對資源與性能進(jìn)行估算。
庫支持
很多汽車(chē)應用都是使用業(yè)界標準開(kāi)源庫進(jìn)行開(kāi)發(fā),例如在 ADAS 系統中使用 OpenCV 或 Caffe,或在 ECU 中使用標準數學(xué)庫。為加快這些應用的開(kāi)發(fā),系統優(yōu)化編譯器需要能夠支持多個(gè) HLS 庫,以便開(kāi)發(fā)人員在其應用中使用。系統優(yōu)化編譯器應支持多個(gè)關(guān)鍵庫,其中包括:
· OpenCV – 能夠加速計算機視覺(jué)功能
· Caffe – 能夠加速機器學(xué)習推理引擎
· 數學(xué)庫 – 提供標準數學(xué)庫的可綜合實(shí)現。
· IP 庫 – 為實(shí)現 FFT、FIR 和移位寄存器 LUT 功能提供 IP 庫。
· 線(xiàn)性代數庫 – 提供通用線(xiàn)性代數功能庫。
· 任意精度數據類(lèi)型庫 – 使用有符號和無(wú)符號整數支持非2次冪的任意長(cháng)度數據。該庫允許開(kāi)發(fā)人員更高效地使用 FPGA 資源。
這些庫的提供為開(kāi)發(fā)團隊提供相當大的支持,讓開(kāi)發(fā)團隊不必開(kāi)發(fā)類(lèi)似的功能。
真實(shí)實(shí)例
很多汽車(chē)應用的關(guān)鍵元素是保護數據以防止未授權修改,避免導致不安全操作。用來(lái)保護存儲數據與傳輸數據安全的一種常用算法是高級加密標準 (AES)。AES 是在高級層面描述的,但最適合在可編程邏輯架構中實(shí)現的算法的范例。為了演示使用系統優(yōu)化編譯器的優(yōu)勢,已開(kāi)發(fā)一款面向三種常用操作系統的簡(jiǎn)單 AES 256 應用。該實(shí)例最初只在處理器系統中執行,然后在可編程邏輯中實(shí)現功能的加速。
圖 3 - 當使用系統優(yōu)化編譯器時(shí),不同操作系統的 AES 加速結果。
結論
異構 SoC 能夠解決汽車(chē)電子系統設計人員面臨的挑戰。通過(guò)使用高級語(yǔ)言,系統優(yōu)化編譯器能夠對這些器件進(jìn)行開(kāi)發(fā),一旦使用處理器完成對應用功能的開(kāi)發(fā)與原型設計后,處理器系統與可編程邏輯之間的功能分區即可得到優(yōu)化,從而縮短開(kāi)發(fā)時(shí)間,實(shí)現更安全、響應性更強、能效更高的解決方案。
評論