隨著人工智能(AI)技術突飛猛進的發(fā)展,我們已經(jīng)看到了一個不爭的現(xiàn)實,那就是AI的演進趨勢一定會走出數(shù)據(jù)中心,落地千家萬戶,深入各行各業(yè),賦能智慧萬物,這也就注定了物聯(lián)網(wǎng)、邊緣計算和嵌入式系統(tǒng)一定是AI未來的主戰(zhàn)場。傳統(tǒng)物聯(lián)網(wǎng)和嵌入式系統(tǒng)開發(fā)部署方式給邊緣智能的騰飛帶來了很大的挑戰(zhàn):市場碎片化、軟硬件強耦合、開發(fā)流程冗長等等,使敏捷軟件開發(fā)和應用創(chuàng)新舉步維艱。作為移動互聯(lián)網(wǎng)時代智能手機芯片架構(gòu)的領軍者,Arm總結(jié)了推動市場發(fā)展的要素,并推出先進現(xiàn)代的方案和工具鏈,使軟、硬件的開發(fā)能夠齊頭并進,加速智能物聯(lián)網(wǎng)、嵌入式及邊緣智能系統(tǒng)的創(chuàng)新。
支撐智能手機百花齊放,百家爭鳴的強大App生態(tài)系統(tǒng)的核心技術之一就是主流的應用商店,使App開發(fā)者不受智能手機硬件的束縛,獨立地采用最先進的敏捷軟件開發(fā)方法在虛擬硬件原型上進行創(chuàng)新。但是傳統(tǒng)的嵌入式軟件開發(fā)對硬件開發(fā)板存在較強的依賴性。將虛擬硬件原型引入物聯(lián)網(wǎng)和嵌入式開發(fā)將是引爆邊緣智能市場發(fā)展的關鍵。說到這兒,我必須要提一下當前熱門的元宇宙和數(shù)字孿生概念,它們其實都是依托于對現(xiàn)實世界的虛擬化、數(shù)字化,來創(chuàng)造與現(xiàn)實世界映射和交互的虛擬世界以及具備新型社會體系的數(shù)字生活空間,使人與人的交流、新產(chǎn)品開發(fā)、工業(yè)控制、甚至是教育培訓更簡易便捷。虛擬硬件原型與這些概念不謀而合。
虛擬原型和硬件設計
在設計功能更為強大而復雜的集成電路和芯片時,設計人員在硬件和軟件層面均面臨艱巨的工作任務。SoC架構(gòu)師需設法對硬件組件(即IP模塊)進行早期評估,檢查各種IP配置以降低技術風險,權衡設計方案并且了解哪些要素最適合給定的系統(tǒng)要求,這些對SoC能否成功商用有著直接影響。此外,設計性能常常會受到設備上所運行的軟件影響,那么該如何在芯片推出前預測實際性能呢?
為此SoC設計人員需要對系統(tǒng)進行建模,通過軟件和硬件的系統(tǒng)級表示,設法估算組件在交互狀態(tài)下的性能。虛擬原型是測試組件級和系統(tǒng)級元素的一種有效方法。芯片虛擬原型通常由使用SystemC等專用語言編寫的連接組件模型組成。使用一種標準語言可將不同供應商提供的IP組件模型整合到同一個虛擬原型中,從而更適合運行實際的軟件工作負載。
提早開始軟件開發(fā)
鑒于現(xiàn)代邊緣智能系統(tǒng)軟件的復雜性以及軟硬件聯(lián)合創(chuàng)新的訴求,產(chǎn)品團隊不可能等到硬件就位后才開始軟件開發(fā)。提早開始軟件開發(fā)有兩大明顯優(yōu)勢:
首先是及早驗證硬件/軟件接口。軟件與硬件平臺集成有點像丑媳婦見公婆,時常會因為相互不了解不熟悉而產(chǎn)生摩擦。不光是軟件,硬件系統(tǒng)在集成過程中也會報錯。在設計流程中盡早驗證硬件/軟件接口可以避免代價高昂的硬件返工情況,進度也不會因此延遲。對此,虛擬原型就能派上用場。硬件設計的快速功能模型不僅細化到可從軟件程序員的角度來模擬硬件,而且抽象到能以大規(guī)模軟件開發(fā)和調(diào)試所需的模型執(zhí)行速度來運行。現(xiàn)代功能模型可在數(shù)秒內(nèi)啟動Linux,實現(xiàn)單步調(diào)試代碼的速度與調(diào)試器直接連接到硬件的速度旗鼓相當。
功能模型源自硬件規(guī)格,并且可在硬件規(guī)格逐步確定的過程中迭代開發(fā)成虛擬原型,因而無需等到最終設計方案敲定才開始。只要各部分的設計確定后,即可開始構(gòu)建模型,軟件團隊便能在最終設計完成前迭代開發(fā)軟件。鑒于硬件和軟件團隊在產(chǎn)品的各個設計環(huán)節(jié)都會通力協(xié)作,實現(xiàn)并行開發(fā),讓驗證工作能更早開始,驗證時間更充裕,覆蓋面更廣,這勢必會提高軟件的質(zhì)量。
其次是縮短產(chǎn)品上市時間。目前針對復雜的嵌入式系統(tǒng)的軟件開發(fā),在時間和成本上均已超過了硬件設計。若等硬件就位并穩(wěn)定后再開始軟件開發(fā),這會使產(chǎn)品開發(fā)的時間線延長12個月或更久。
從軟件程序員的角度來看,準確的快速功能模型不僅適合于低層軟件(比如對建立新的硬件平臺至關重要的設備驅(qū)動程序和固件)的早期開發(fā),而且還可用來移植或開發(fā)更高層級的軟件棧,例如中間件和操作系統(tǒng),甚至應用程序。
用于軟件驗證的虛擬平臺
軟件棧規(guī)模越大、越復雜,開發(fā)和測試的難度就越高。持續(xù)集成/持續(xù)交付(CI/CD)等現(xiàn)代軟件開發(fā)方法有助于在軟件開發(fā)早期識別出缺陷,從而更容易確定缺陷出現(xiàn)的位置和時間。針對嵌入式應用的傳統(tǒng)硬件目標不太適合持續(xù)集成流程,因為它們依賴如開發(fā)板、JTAG連接設備、專用機架以及散熱和遠程復位硬件等專門的基礎設施。虛擬平臺可以高彈性地部署在云服務器上,并且利用先進的云計算服務和資源,或大多數(shù)公司既有的服務器基礎架構(gòu)。這樣的虛擬平臺就很適合作為持續(xù)集成和自動化測試使用的沙箱環(huán)境。服務器硬件的降價加上低成本、可擴展容量在云端的可用性,使軟件驗證沙箱成為驗證大型軟件平臺最先進的方法。
策略對比
雖然虛擬原型具有諸多優(yōu)勢,但硬件/軟件的共同開發(fā)和軟件早期開發(fā)也會用到其它方法。其中最常用的是硬件仿真和FPGA原型設計。
1. 硬件仿真
硬件仿真指的是在硬件仿真器上編譯RTL設計,主要用于系統(tǒng)的功能驗證。仿真器的速度比在RTL模擬器中運行RTL要快幾個數(shù)量級。雖然速度還未快到足以支持大規(guī)模的軟件開發(fā),但已足夠運行軟件實際工作負載。該設計具有卓越的可見性,幾乎所有的信號都可以被暴露出來,從而可以調(diào)試硬件/軟件接口。
2. FPGA原型設計
FPGA原型設計指的是在現(xiàn)場可編程門陣列 (FPGA) 上合成RTL設計。與仿真相比,F(xiàn)PGA速度快且成本相對較低,但它很難配置和調(diào)試。通常SoC設計的規(guī)模比最大的FPGA還要大,因此需要將設計拆分成多個FPGA,這就給速度和時間安排帶來了挑戰(zhàn)。FPGA的速度比仿真器快幾個數(shù)量級,進而更加適合于軟件開發(fā)。
3. 虛擬原型
采用FPGA或仿真解決方案均需近乎完成的RTL來加載和運行軟件。虛擬原型為軟件團隊執(zhí)行諸多軟件任務提供了一種替代方案。虛擬原型并不依賴于RTL,并且可在RTL可用前的數(shù)月交付。
雖然沒有基于硬件的解決方案那么詳細,但模擬模型提供的性能更優(yōu),可以靈活、輕松地重新配置設計,并且具有出色的軟件調(diào)試和分析能力。虛擬原型還特別適合于持續(xù)的軟件集成任務,原因是它們的速度快且易于在計算場中部署,這確保了開發(fā)期間更出色的軟件質(zhì)量。
4. 混合技術
仿真、FPGA原型設計和虛擬原型設計各有利弊,因此大多數(shù)項目都會混合使用這些技術??焖俚墓δ芴摂M原型與仿真混合使用可以做到兩全其美,性能速度比單獨使用仿真器要快,并且在虛擬模型上調(diào)試軟件的可見性和靈活性也得到了提高。虛擬原型和FPGA也可混合利用,其中需要定期更改的設計部分將居于虛擬原型中,而穩(wěn)定不變的設計部分則居于FPGA中。
此外,還有一種混合解決方案是純虛擬原型,先使用快速的功能模型以非常高的速度運行至軟件棧中的重要節(jié)點,然后再轉(zhuǎn)而使用更慢、更準確的模型進行性能分析。也就是在更快速的模型上運行軟件,直至到達重要節(jié)點,然后再捕捉架構(gòu)狀態(tài),也就是常說的檢查點技術。
5. 選擇合適的開發(fā)路徑
設計團隊所面臨的最大挑戰(zhàn)在于要了解所有可用選項,并能物盡其用。對大多數(shù)項目而言,一條路徑可能并不足夠。顯而易見的一大問題在于從何處獲取虛擬原型?大多數(shù)情況下,IP供應商在設計IP時會開發(fā)模型,從而可以盡早驗證硬件/軟件接口,并且更早地開始移植操作系統(tǒng)和開發(fā)驅(qū)動程序。這些虛擬原型可能之后會流向下游的最終用戶,成為軟件開發(fā)的學習工具和平臺。再者,軟件服務供應商也可創(chuàng)建芯片供應商IP模型或?qū)⒍鄠€供應商的IP集成至一個虛擬原型中,用以出售給任何使用該IP的人員。
結(jié)論
SoC項目中遇到的軟件早期開發(fā)難題并不新鮮,但和硬件的復雜性一樣,其難度一直在不斷增加。項目需要混合使用各種技術和解決方案才能完成所有所需任務。軟件在系統(tǒng)早期設計中起著愈發(fā)重要的作用,特別是在IP的選擇和配置方面。隨著嵌入式邊緣智能產(chǎn)品中不斷增加虛擬化技術和虛擬機監(jiān)控程序,軟件也變得日益復雜,并且安全也與功能軟件棧同等重要。
IP供應商將更多精力放在了提供用于性能分析的周期精確模型,以及用于開發(fā)完整軟件棧的快速功能模型上。仿真和FPGA原型設計等輔助技術及混合使用模式是IP供應商支持軟件開發(fā)的另一種方式。并不存在一勞永逸的解決方案,因此項目團隊要做的就是及時了解最新技術,利用所有可能的解決方案,并借助軟件的力量,盡可能圓滿地交付SoC。