RISC-V 架構(gòu)面臨軟件可移植性挑戰(zhàn)
與會(huì)嘉賓
本文引用地址:http://butianyuan.cn/article/202411/464683.htm--Arteris 公司的客戶服務(wù)副總裁 John Min、
--Codasip 公司的首席技術(shù)官 Zdeněk P?ikryl、
--西門子 EDA 的市場(chǎng)總監(jiān) Neil Hand、
--Synopsys 公司的戰(zhàn)略項(xiàng)目與系統(tǒng)解決方案執(zhí)行總監(jiān) Frank Schirrmeister、
--Axiomise 公司的首席執(zhí)行官 Ashish Darbari、
--Breker Verification 公司的首席執(zhí)行官 Dave Kelf
擁有明確的指令集架構(gòu)(ISA)、定義好的架構(gòu)以及完整的規(guī)范時(shí),驗(yàn)證處理器就已經(jīng)很困難了。而 RISC-V 卻不具備這些條件。這是否會(huì)導(dǎo)致定義一致性變得更加困難?
Hand:RISC-V 的優(yōu)勢(shì)在于其可定制性,但這也是它的劣勢(shì)。大多數(shù)人沒有意識(shí)到,當(dāng)你做出更改時(shí),你幾乎已經(jīng)拋棄了 IP 供應(yīng)商的所有驗(yàn)證工作。你必須評(píng)估當(dāng)前的狀況。在某些方面,你可以選擇特定的架構(gòu),但你不必修改處理器。你可以找一個(gè) IP 供應(yīng)商,采用他們的處理器,進(jìn)行驗(yàn)證,然后說:「我將把這個(gè)視為標(biāo)準(zhǔn),并打算在此基礎(chǔ)上開發(fā)加速器?!挂?yàn)檫@樣做更安全。這是風(fēng)險(xiǎn)與收益的權(quán)衡。我想在哪里承擔(dān)風(fēng)險(xiǎn),以及我能從中獲得什么回報(bào)?很多人最初被這種巨大的靈活性所吸引,卻沒有意識(shí)到這種靈活性也帶來了巨大的責(zé)任,即確保在嘗試更改時(shí)不會(huì)出錯(cuò)。
Min:也許我們應(yīng)該回到定義上。不同的階段適合不同的定義。所以,也許一致性是在架構(gòu)層面上定義的。也許驗(yàn)證或確認(rèn)是在微架構(gòu)層面上進(jìn)行的。這取決于你正在驗(yàn)證、確認(rèn)或遵循的是哪個(gè)規(guī)范。
Kelf:Arm 有一個(gè)處理器架構(gòu)和建立在其上的指令集,這就是他們正在驗(yàn)證的內(nèi)容。他們投入了大量的精力來確保它運(yùn)行得非常好。而 RISC-V,你有一個(gè) ISA,然后有非常多潛在的架構(gòu)。每個(gè)人都想出了各種聰明且不同的方法,這甚至還沒有考慮到添加指令。所以,首先,這就是為什么「配置文件」的想法如此強(qiáng)大?,F(xiàn)在,你正試圖設(shè)置一些邊界,并將驗(yàn)證問題組織成至少是可以實(shí)現(xiàn)的東西。否則,由于它的可變性,幾乎是不可能實(shí)現(xiàn)的。除此之外,你還需要處理這種可變指令的情況。在 RISC-V 對(duì)此大做文章之前,Arm 是不允許這樣做的。所以,Arm 現(xiàn)在雖然允許使用可變指令,但他們?cè)谥骷軜?gòu)和可添加指令的小區(qū)域之間設(shè)置了一道巨大的防火墻。即便如此,他們?cè)隍?yàn)證這方面也遇到了問題。對(duì)于來自不同公司的可變架構(gòu),以及額外的指令,配置文件在一定程度上有助于解決這個(gè)問題。至少我們可以制定一些可以認(rèn)證的定義。你需要那個(gè)「黃金模型」。但即便如此,這仍然很困難。那么,你如何創(chuàng)建與架構(gòu)無關(guān)、與添加的額外指令無關(guān)的深入驗(yàn)證測(cè)試,并確保無論誰獲得這些處理器,都能絕對(duì)依賴它來運(yùn)行他們的軟件棧,而不會(huì)出錯(cuò)呢?大多數(shù)都會(huì)出問題。
Hand:如果你看看 RISC-V 最初的用例,它確實(shí)是為嵌入式系統(tǒng)設(shè)計(jì)的。他們編寫所有的軟件,使用定制的編譯器。這真的不重要。如果你開始看現(xiàn)在推出的 RISC-V 系統(tǒng),無論是單板計(jì)算機(jī)還是筆記本電腦,你都必須考慮生態(tài)系統(tǒng)。這些處理器最好與指令集兼容。這真的取決于你的用例是什么。
P?ikryl:不僅是指令集。這只是故事的一部分。他們根據(jù)規(guī)范編譯配置文件。這是目前缺少的,因?yàn)槲覀兇_實(shí)有這些架構(gòu)測(cè)試。它存在于 GitHub 上。你可以運(yùn)行它,但它幾乎不會(huì)給你任何信息。它只會(huì)告訴你,「匯編良好,二進(jìn)制良好。」僅此而已。它不會(huì)告訴你,當(dāng)我從用戶模式切換到另一種模式時(shí),是否正確地完成了切換。這就是我認(rèn)為如果做得正確,認(rèn)證可能會(huì)有所幫助的地方。
Kelf:而這正是社區(qū)目前正在努力弄清楚的問題。我們?nèi)绾尾拍苷_地做到這一點(diǎn)?
Hand:考慮到你所說的,你能正確地做到這一點(diǎn)嗎?你有多種架構(gòu),取決于配置文件,取決于擴(kuò)展,你有數(shù)十種微架構(gòu)來實(shí)現(xiàn)其中任何一種。對(duì)規(guī)范的不同解釋層出不窮。然后你還需要實(shí)現(xiàn),這可能會(huì)在微架構(gòu)內(nèi)再次引入不同的東西,而你又進(jìn)入了物理實(shí)現(xiàn)階段,這為整個(gè)事情帶來了新的轉(zhuǎn)折。
Min:這是從另一個(gè)角度談?wù)摵诵膬?nèi)部。但我們是否還需要關(guān)注內(nèi)核外部?哪些總線,甚至是那些可能有未記錄小端口的標(biāo)準(zhǔn)總線。當(dāng) Arm 設(shè)計(jì)一個(gè)處理器和網(wǎng)絡(luò)芯片時(shí),他們可以繞過這個(gè)問題,因?yàn)樗麄儗⑵湟暈橐粋€(gè)嵌入式系統(tǒng)。但當(dāng)我們參與進(jìn)來時(shí),情況就不同了。
Hand:這就是你開始看到一些混合系統(tǒng)的原因嗎?當(dāng)他們真的需要利用軟件生態(tài)系統(tǒng)時(shí),他們會(huì)選擇一個(gè)處理器,但當(dāng)他們真的需要優(yōu)化和壓榨處理器的最后一點(diǎn)性能時(shí),他們會(huì)選擇 RISC-V 架構(gòu)。你的確會(huì)看到越來越多的混合系統(tǒng)采用多種處理器架構(gòu)。也許他們?cè)谡f,對(duì)于這種特殊情況,這是最安全的選擇。人們喜歡把它說成是一場(chǎng)生死之戰(zhàn)。其實(shí)不然。
Lin:這是一個(gè)優(yōu)化選擇。
Kelf:但你提出了一個(gè)很好的觀點(diǎn)。僅僅是處理器嗎?現(xiàn)在我們?cè)诳凑麄€(gè) SoC——甚至可能是中斷控制器、內(nèi)存管理單元,以及處理器周圍的所有基本組件。你可以看到它正在慢慢擴(kuò)展,涵蓋了所有這些 SoC 組件。
驗(yàn)證所有定義為 RISC-V 的內(nèi)容是一回事,但它未定義的內(nèi)容呢?當(dāng)我們開始談?wù)撚布?軟件契約時(shí),這意味著它們之間共享的一切。為了有一個(gè)符合性的概念,你必須知道契約正在被履行。但契約并沒有定義。你如何處理這些情況?
Kelf:我們有很多客戶都在使用 SoC,他們從其他地方引入了 RISC-V。這些處理器中有很多都有漏洞,要么是對(duì) ISA 的誤解,要么就是完全的漏洞。人們認(rèn)為,當(dāng)他們獲得一個(gè)處理器 IP 時(shí),就像獲得了一個(gè) Arm 處理器一樣能正常工作,而且非常出色。在很多情況下,處理器 IP 很糟糕,因?yàn)?ISA 雖然已經(jīng)做了大量工作,但定義仍不夠完善。這確實(shí)是個(gè)問題。
Hand:這也是使用形式化方法的優(yōu)勢(shì)之一,因?yàn)橐玫酱鸢?,就必須有約束條件。約束條件就成了未定義內(nèi)容的參考。為了讓它通過,你必須有約束條件。我們的團(tuán)隊(duì)在檢測(cè)工作核心時(shí),會(huì)突然發(fā)現(xiàn)所有這些錯(cuò)誤。通常是在規(guī)范的灰色區(qū)域,或者是沒有定義的尋址模式。記錄下來后你至少有了關(guān)于漏洞的文檔。你可以使用不同的技術(shù)來填補(bǔ)處理器規(guī)范中的空白。如果 Codasip 團(tuán)隊(duì)說現(xiàn)在可以保證這種沙盒環(huán)境,而且因?yàn)檫@是一個(gè)生成的設(shè)計(jì),你們不會(huì)干擾其他部分,那這就變得非常強(qiáng)大了?,F(xiàn)在你們說可以改變某些東西而不會(huì)破壞其他東西。這通常是個(gè)問題。你只是調(diào)整一個(gè)尋址模式,卻可能會(huì)突然引發(fā)一堆麻煩。形式化方法可以幫助你識(shí)別出這些麻煩,但隨后你需要確定這是有意為之還是無意的?
P?ikryl:你要花時(shí)間確定正確的界限,檢查常見的變化,然后我們來創(chuàng)建界限。在這些邊界之內(nèi),你就很安全。如果確實(shí)跨越了這些邊界,那么你需要承擔(dān)所有的驗(yàn)證責(zé)任。
Hand:這樣做確實(shí)有好處,但在享受這些好處的同時(shí),你必須明確:『我愿意接受的邊界是什么?我愿意承擔(dān)的風(fēng)險(xiǎn)有多大?我是否要將它視為已知良好的 IP,并信任我的供應(yīng)商提供的 IP 是可靠的?我是選擇信任但驗(yàn)證嗎?』我獲取供應(yīng)商的 IP,然后在其上運(yùn)行合規(guī)性測(cè)試套件,看看它是否工作正常。還是因?yàn)槲仪宄约涸谧鍪裁床⑶倚湃巫约?,所以把它?dāng)作是無拘無束的冒險(xiǎn)?能力越大,責(zé)任也越大。
P?ikryl:說到規(guī)范中的漏洞,這在開始時(shí)尤其如此?,F(xiàn)在比以前好多了。但在開始的時(shí)候,我們遇到了很多這樣的問題。有時(shí)候,我們認(rèn)為我們已經(jīng)搞定了,因?yàn)槲覀冋_地解釋了規(guī)范。然后我們和不同的供應(yīng)商交談,詢問他們對(duì)此的看法。你們是怎么理解的?在某些情況下,它是一致的,但在其他情況下則不是。然后我們必須達(dá)成一致。
Darbari:在為 SoC 設(shè)計(jì)電源控制器時(shí),我發(fā)現(xiàn)了大量由處理器實(shí)現(xiàn)中的架構(gòu)問題引起的設(shè)計(jì)實(shí)現(xiàn)問題。這些問題是在使用形式化工具中的預(yù)加載固件映像驗(yàn)證電源控制器設(shè)計(jì)時(shí)發(fā)現(xiàn)的。這是在驗(yàn)證的早期階段進(jìn)行的,因?yàn)槲覀儽桓嬷O(shè)計(jì)已經(jīng)通過仿真驗(yàn)證,而形式驗(yàn)證只是最后的部分。然而,暴露出的問題意味著整個(gè)處理器設(shè)計(jì)必須重新架構(gòu)。我可能聽起來像個(gè)老古董,但正式版不僅可以驗(yàn)證硬件,還可以驗(yàn)證硬件和軟件(即固件)的邊界。高速緩存子系統(tǒng)也是利用形式化捕捉內(nèi)存模型相關(guān)錯(cuò)誤的一個(gè)例子,它暴露了微妙的弱內(nèi)存模型類型錯(cuò)誤。
Schirrmeister:這讓我想起了你在模擬中遇到的 LRM 問題,人們至今仍在爭(zhēng)論競(jìng)態(tài)條件和如何解釋語言參考手冊(cè)。在其他處理器架構(gòu)中,你知道中斷發(fā)生時(shí)會(huì)發(fā)生什么。事情被存儲(chǔ)起來,你有一種方法可以告訴處理器把東西放到棧上并保存所有寄存器。根據(jù)我所了解的,在 RISC-V 中,這一點(diǎn)沒有定義。你需要弄清楚硬件軟件契約以及中斷來臨時(shí)該做什么。我的處理器會(huì)做什么?軟件開發(fā)者并不關(guān)心這些。他們不想考慮這些。他們希望硬件能為他們解決這些問題。運(yùn)行認(rèn)證合規(guī)性的委員會(huì)將為特定的配置文件定義這些事情應(yīng)該如何操作。
P?ikryl:沒錯(cuò)。我們確實(shí)有基本規(guī)定 ISA 的配置文件。然后,我們還有一些平臺(tái),其中一項(xiàng)任務(wù)就是定義一些東西,比如我應(yīng)該在系統(tǒng)中使用哪種中斷控制器。也許你需要一個(gè)特定的操作系統(tǒng)。這些活動(dòng)都是為了確定這些細(xì)節(jié)。這可以是蓋章或認(rèn)證過程的一部分。你不僅要符合 rva23 或其他標(biāo)準(zhǔn),還要遵循平臺(tái)定義。
Hand:退一步講,RISC-V 已經(jīng)遠(yuǎn)遠(yuǎn)領(lǐng)先于被 RISC-V 所取代的處理器??纯?RISC-V 所取代的是什么,那大都是人們自己構(gòu)建的自定義處理器。過去是一個(gè)供應(yīng)商,一套軟件基礎(chǔ)設(shè)施。那他們的解讀是什么?現(xiàn)在你有多個(gè)團(tuán)隊(duì),多種解讀,相互交叉驗(yàn)證。你如何看待這個(gè)問題?隨著越來越多的人進(jìn)入生態(tài)系統(tǒng)并對(duì)其進(jìn)行解讀,標(biāo)準(zhǔn)正變得更加穩(wěn)健。參與的人越多,標(biāo)準(zhǔn)就越穩(wěn)健,對(duì)最終用戶和最終消費(fèi)者來說就越可靠。隨著生態(tài)系統(tǒng)的發(fā)展,它也會(huì)變得更加強(qiáng)大,這比其他替代方案要好得多。如果有 100 家不同的處理器供應(yīng)商,他們都有自己的軟件生態(tài)系統(tǒng),都有自己的勘誤表,那可能會(huì)寫滿一本教科書。只有在極端情況下,你才會(huì)發(fā)現(xiàn)問題,比如你的自動(dòng)駕駛汽車沖下橋去。
Min:RISC-V 在過去六七年里取得了長(zhǎng)足的進(jìn)步。我們正在達(dá)到可以解決第二個(gè)問題——軟件工程師或 CPU 工程師問題的階段。到目前為止,RISC-V 主要由硬件工程師推動(dòng),并且以硬件為中心。隨著重點(diǎn)轉(zhuǎn)向一致性驗(yàn)證,軟件人員將推動(dòng)這一進(jìn)程,因?yàn)樗麄冎幌刖帉懸淮诬浖?,就能在多個(gè)硬件實(shí)例上運(yùn)行。這種一致性將由軟件驅(qū)動(dòng),而不是硬件或測(cè)試。一家公司的網(wǎng)絡(luò)瀏覽器能否在另一家公司的 Linux 計(jì)算機(jī)上成功運(yùn)行?這本身就會(huì)成為一個(gè)驗(yàn)證測(cè)試或確認(rèn)測(cè)試。同樣,也會(huì)有軟件驅(qū)動(dòng)的軟件基準(zhǔn)測(cè)試。
評(píng)論