RISC-V精簡到何種程度?能省的都省了!附:為什麼說RISC-V將是我國物聯網芯片的逆襲機會?

會議推薦

RISC-V是一個典型三操作數、加載-存儲形式的RISC架構,包括三個基本指令集和6個擴展指令集,如表1所示,其中RV32E是RV32I的子集,不單獨計算。

RISC-V精簡到何種程度?能省的都省了!附:為什麼說RISC-V將是我國物聯網芯片的逆襲機會?

其中RV32I指令集僅有47條指令,卻能夠滿足現代操作系統運行的基本要求,47條指令按照功能可以分為如下幾類。

(1)整數運算指令:實現算術、邏輯、比較等運算。

(2)分支轉移指令:實現條件轉移、無條件轉移等運算,並且沒有延遲槽。

(3)加載存儲指令:實現字節、半字、字的加載、存儲操作,採用的都是寄存器相對尋址方式。

(4)控制與狀態寄存器訪問指令:實現對系統控制與狀態寄存器的原子讀-寫、原子讀-修改、原子讀-清零等操作。

(5)系統調用指令:實現系統調用、調試等功能。

指令格式

先來看看指令格式,這格式規律地一塌糊塗啊,看著這張圖,我的強迫症瞬間消失了。有規律的指令編碼不僅是讓強迫症患者舒服,也讓處理器很舒服,指令越有規律,解碼器所要的gate越少,芯片面積越小,運行速度越快。

RISC-V精簡到何種程度?能省的都省了!附:為什麼說RISC-V將是我國物聯網芯片的逆襲機會?

沒有立即數減法?

只有addi沒有subi,減法怎麼辦?無論是數學上還是程序上,x - y都等價於x + (-y),也就是說可以把減法變成加法的,把被減數轉成負數然後再加上減數就實現了和減法一樣的功能了。正是基於這個原理,RISC-V只提供立即數加法,沒有提供立即數減法,如果需要立即數減法,那麼就要麻煩編譯器把這個立即數轉化成負數,然後繼續使用加法。這也是RISC-V將立即數作為有符號數處理的原因吧。

x0簡化指令集

通過引入x0寄存器,很多特殊指令用普通的指令加上x0做操作數就給解決了。指令的數量大大降低,指令數降低了,這處理器的解碼電路不就簡化了嘛。

32位常量

之前用ARM的處理器,ARM都是將立即數表示不下的常量存到常量池,然後用PC相關的LDR指令加載到寄存器的。RISC-V的常量完全是用指令拼接的,不需要Load指令,要知道使用Load指令是需要額外的訪問週期的。RISC-V單條指令可以表示12位的有符號常量,超過12位需要兩條指令來合成。其中一條指令是lui,lui指令加載常量的高20位,低12位可以用addi指令加上去,當然了這個過程又要麻煩編譯器仔細算一算立即數到底是什麼了,因為addi指令執行的是有符號加法,其中的12位立即數是會先被符號擴展成32位的有符號數再參與計算的。ARM的常量加載需要8個字節,一條指令+一個常量;RISC-V的常量加載也是需要8個字節,兩條指令。佔用的程序空間是一樣的。

只有小於和大於等於

RISC-V的比較跳轉指令只有blt和bge,即只有小於和大於等於。那大於和小於等於就不需要了嗎?也是需要的,不過RISC-V用了個很巧妙的辦法,將blt的兩個參與比較的操作數位置換一下,就有了bgt,將bge的兩個參與比較的操作數位置換一下,就有了ble。真是個好辦法。用兩條指令實現了四條指令的工作,其中兩條是偽指令,實際的指令只有兩條。

讓編譯器做更多

我對RISC的理解就是:處理器儘量少做,讓編譯器儘量多做。這是非常有道理的,畢竟編譯的次數遠少於執行的次數啊。上面幾個段落就提到不少要讓編譯器多做的工作,再例舉個為了簡化處理器的設計而讓編譯器多做的工作。

RISC-V精簡到何種程度?能省的都省了!附:為什麼說RISC-V將是我國物聯網芯片的逆襲機會?

B-type是比較跳轉指令的格式,J-type是長跳轉或函數調用指令格式,注意它們的立即數排列次序,我都有點同情編譯器設計師了,這怎麼搞啊?具體一點講,填充這裡的立即數的應該是鏈接器的工作。這麼排放偏移地址立即數的目的還是為了簡化處理器的設計,但明顯給編譯器增加了工作了。

其它省掉的指令

還有很多常用的指令也被省掉了,比如nop、move、not、neg,當然不是說這些功能沒有,所有這些功能都是有的,不過都是用其它的指令來等價實現的,比如not指令是用xori rd, rs, -1實現的。每看到這樣的指令,我對Berkeley的大神都是佩服地五體投地。

總結

能省的指令都省了。能讓編譯器做的都讓編譯器做了。絕對精簡。

會議推薦

附:為什麼說RISC-V將是我國物聯網芯片的逆襲機會?

雖然x86架構襲捲桌面和服務器市場,而Arm則主導移動領域,但RISC-V非常適合嵌入式應用以及需要定製化之處。「你可以用它來最佳化性能,或者為物聯網(IoT)實現最佳化。開源的力量十分驚人——事實就在於指令集架構是開放且可加以凍結的,能夠為設計人員帶來最佳的靈活度和功耗。」

每一次應用場景的變遷,都會孕育新的技術平臺的變革,也是孕育新的企業巨頭的機會。現在又到了貝爾節點將發生作用的時候了,物聯網時代的到來,將需要新的系統架構。這次運算平臺的技術變局,我們能夠抓住機會嗎?

在物聯網前期的嵌入式系統的產業裡,目前採用比較多的是ARM的處理器架構,數據顯示在嵌入式領域有75%的系統設計是採用了ARM公司的微處理器架構。ARM是由ARM公司擁有的精簡指令集(RISC)處理器架構,由於具有節能的特點,非常適用於移動通信、嵌入式系統設計,所以在移動互聯網和嵌入式系統領域成為主流。ARM所採取的商業模式是IP授權,它的架構授權有三種模式:架構層級授權、內核層級授權、使用層級授權,架構層級授權在獲得ARM公司授權後可以對ARM架構進行大幅度改造,使用層級授權是隻可以用但不可以修改。

在物聯網領域另一個後起之秀是RISC-V,它是2010年加州大學伯克利分校的David Peterson(2017年兩位圖靈獎得主之一)和Krste Asanovic領導開發的開源指令集系統架構,通過將核心指令集以及其CPU設計的IP開源,很大程度上改變運算平臺芯片的設計生態。RISC-V由RISC-V基金會管理,包括西部數據、英偉達、谷歌等硅谷巨頭都加入RISC-V基金會。因為它是免費開源的,而且可以靈活地進行修改並加入新的功能,所以RISC-V正在吸引越來越多的科技公司採用。根據IPnest的調研,ARM公司在2017年的IP授權收入下滑了6.8%,原因之一是因為RISC-V加入了競爭。

RISC-V是中國發展運算平臺芯片產業的新機會,中國如果能夠抓住RISC-V,就有機會實現物聯網芯片產業的逆襲。目前在硅谷,越來越多的初創企業採用RISC-V,而且RISC-V非常適合小公司,除了免費,而且修改外圍也可以不上傳。但這樣既有好處也存在問題,因為大家都可以修改而不上傳,就容易面臨碎片化的問題,就很難形成廣泛接受的通用運算平臺。如果有一個大公司來接手,它的發展命運就有點像當年的安卓,由於有谷歌的接手和控制,安卓就能維持持續化發展和規範化標準。RISC-V的勢頭正冉冉升起,如果中國通過大力支持RISC-V,併成為其中開源的最大貢獻者,共同搭建一個基於“開源架構”RISC-V的芯片公共服務平臺,面向國內外用戶提供各種軟硬件設計的公共服務。通過免費而高效的服務來控制這個架構,從而使中國從技術的追隨者、採用者,演變為主動推動者、建設者,形成以我國主導的“物聯網芯片生態系統”,換道超車,在物聯網時代獲得逆襲。況且根據以往的貝爾定律的經驗,一旦新的運算平臺生態系統確立後,將會“反噬”上一代運算平臺的市場份額。我國如能執此龍頭,就能領導物聯網運算平臺潮流,擁有完全自主的知識產權(包括信息安全機制),並可推廣到其它領域的芯片上去。如此一來,可望形成與X86、ARM三足鼎立的局面,不再受制於人。

目前RISC-V僅能憑藉開源和精簡優勢在技術上制衡ARM,物聯網的快速發展給了RISC-V一個難得的機會。相信憑藉著技術優勢,RISC-V在產業和生態上會有和ARM叫板的一天。

我國於2017年進口以ARM為系統架構的物聯網芯片約300億元。據預測,再過幾年,物聯網芯片全球需求為2000-3000億人民幣,如我們有自主的系統架構及其上的生態系統,我國的芯片產業不光能滿足中國智能製造的需要,還能出口芯片,佔有這3000億元中相當大的份額。

RISC-V精簡到何種程度?能省的都省了!附:為什麼說RISC-V將是我國物聯網芯片的逆襲機會?

點擊閱讀原報名參會

相關推薦

推薦中...