本文上接:
《大道至簡——RISC-V架構(gòu)之魂(中)》
2.12 特權(quán)模式
RISC-V架構(gòu)定義了三種工作模式,又稱特權(quán)模式(Privileged Mode):
Machine Mode:機器模式,,簡稱M Mode,。
Supervisor Mode:監(jiān)督模式,簡稱S Mode,。
User Mode:用戶模式,,簡稱U Mode。
RISC-V架構(gòu)定義M Mode為必選模式,,另外兩種為可選模式,。通過不同的模式組合可以實現(xiàn)不同的系統(tǒng)。
RISC-V架構(gòu)也支持幾種不同的存儲器地址管理機制,,包括對于物理地址和虛擬地址的管理機制,,使得RISC-V架構(gòu)能夠支持從簡單的嵌入式系統(tǒng)(直接操作物理地址)到復雜的操作系統(tǒng)(直接操作虛擬地址)的各種系統(tǒng)。
2.13 CSR寄存器
RISC-V架構(gòu)定義了一些控制和狀態(tài)寄存器(Control and Status Register,,CSR),,用于配置或記錄一些運行的狀態(tài)。CSR寄存器是處理器核內(nèi)部的寄存器,,使用其自己的地址編碼空間和存儲器尋址的地址區(qū)間完全無關系,。
CSR寄存器的訪問采用專用的CSR指令,包括CSRRW,、CSRRS,、CSRRC、CSRRWI,、CSRRSI以及CSRRCI指令,。
2.14 中斷和異常
中斷和異常機制往往是處理器指令集架構(gòu)中最為復雜而關鍵的部分。RISC-V架構(gòu)定義了一套相對簡單基本的中斷和異常機制,,但是也允許用戶對其進行定制和擴展,。
2.15 矢量指令子集
RISC-V架構(gòu)目前雖然還沒有定型矢量(Vector)指令子集,,但是從目前的草案中已經(jīng)可以看出,RISC-V矢量指令子集的設計理念非常的先進,,由于后發(fā)優(yōu)勢及借助矢量架構(gòu)多年發(fā)展成熟的結(jié)論,,RISC-V架構(gòu)將使用可變長度的矢量,而不是矢量定長的SIMD指令集(譬如ARM的NEON和Intel的MMX),,從而能夠靈活的支持不同的實現(xiàn),。追求低功耗小面積的CPU可以選擇使用長度較短的硬件矢量進行實現(xiàn),而高性能的CPU則可以選擇較長的硬件矢量進行實現(xiàn),,并且同樣的軟件代碼能夠彼此兼容,。
2.16 自定制指令擴展
除了上述闡述的模塊化指令子集的可擴展、可選擇,,RISC-V架構(gòu)還有一個非常重要的特性,,那就是支持第三方的擴展。用戶可以擴展自己的指令子集,,RISC-V預留了大量的指令編碼空間用于用戶的自定義擴展,,同時,還定義了四條Custom指令可供用戶直接使用,,每條Custom指令都有幾個比特位的子編碼空間預留,,因此,用戶可以直接使用四條Custom指令擴展出幾十條自定義的指令,。
請參見《實例講解進駐Google兩位大神主推的異構(gòu)計算與RISC-V》了解更多協(xié)處理器擴展的信息,。
2.17 總結(jié)與比較
處理器設計技術(shù)經(jīng)過幾十年的衍進,隨著大規(guī)模集成電路設計技術(shù)的發(fā)展直至今天,,呈現(xiàn)出如下特點:
由于高性能處理器的硬件調(diào)度能力已經(jīng)非常強勁且主頻很高,,因此,硬件設計希望指令集盡可能的規(guī)整,、簡單,,從而,使得處理器可以設計出更高的主頻與更低的面積,。
以IoT應用為主的極低功耗處理器更加苛求低功耗與低面積,。
存儲器的資源也比早期的RISC處理器更加豐富,。
如上種種這些因素,,使得很多早期的RISC架構(gòu)設計理念(依據(jù)當時技術(shù)背景而誕生),時至今日不僅不能幫助現(xiàn)代處理器設計,,反而成了負擔桎梏,。某些早期RISC架構(gòu)定義的特性,一方面使得高性能處理器的硬件設計束手束腳,;另一方面又使得極低功耗的處理器硬件設計背負不必要的復雜度,。
得益于后發(fā)優(yōu)勢,全新的RISC-V架構(gòu)能夠規(guī)避所有這些已知的負擔,同時,,利用其先進的設計哲學,,設計出一套“現(xiàn)代”的指令集。本節(jié)再次將其特點總結(jié)如表2所示,。
表2 RISC-V指令集架構(gòu)特點總結(jié)
這里寫圖片描述
一言以蔽之,,RISC-V的特點在于極簡、模塊化以及可定制擴展,,通過這些指令集的組合或者擴展,,你幾乎可以構(gòu)建適用于任何一個領域的微處理器,比如云計算,、存儲,、并行計算、虛擬化/容器,、MCU,、應用處理器和DSP處理器等。
3 RISC-V和其他開放架構(gòu)有何不同
如果僅從“免費”或“開放”這兩點來評判,,RISC-V架構(gòu)并不是第一個做到免費或開放的處理器架構(gòu),。
下文將通過論述幾個具有代表性的開放架構(gòu),來分析RISC-V架構(gòu)的不同之處以及為什么其他開放架構(gòu)沒能取得足夠的成功,。
3.1 平民英雄——OpenRISC
OpenRISC是OpenCores組織提供的基于GPL協(xié)議的開放源代碼RISC處理器,。
OpenRISC具有以下特點:
采用免費開放的32/64位 RISC架構(gòu)。
用Verilog HDL(硬件描述語言)實現(xiàn)了基于該架構(gòu)的處理器源代碼,。
具有完整的工具鏈,。
OpenRISC被應用到很多公司的項目之中??梢哉f,,OpenRISC是應用非常廣泛的一種開源處理器實現(xiàn)。
OpenRISC的不足之處在于其側(cè)重于實現(xiàn)一種開源的CPU Core,,而非立足于定義一種開放的指令集架構(gòu),,因此其架構(gòu)的發(fā)展不夠完整,指令集的定義也不具備上節(jié)中提到的RISC-V架構(gòu)的優(yōu)點,,更加沒有上升到成立專門的基金會組織的高度,。OpenRISC更多的時候被認為是一個開源的Core,而非一種優(yōu)美的指令集架構(gòu),。此外,,OpenRISC的許可證為GPL,這意味著所有的指令集改動都必須開源(而RISC-V則無此約束),。
3.2 豪門顯貴——SPARC
SPARC架構(gòu)作為經(jīng)典的RISC微處理器架構(gòu)之一,,SPARC最早于1985年由Sun電腦所設計,。SPARC也是SPARC國際公司的注冊商標之一,這家公司于1989年成立,,目的是向外界推廣SPARC架構(gòu)以及為該架構(gòu)進行兼容性測試,。該公司為了推廣SPARC的生態(tài)系統(tǒng),SPARC國際公司將標準開放,,并授權(quán)予多家生產(chǎn)商采用,,包括德州儀器、Cypress半導體和富士通等,。由于SPARC架構(gòu)也對外完全開放,,因此,也出現(xiàn)了完全開放源碼的LEON處理器,。不僅如此,,Sun公司還于1994年推動SPARC v8架構(gòu)成為IEEE標準(IEEE Standard 1754-1994)。
由于SPARC架構(gòu)的初衷是面向服務器領域而設計,,其最大的特點是擁有一個大型的寄存器窗口,,符合SPARC架構(gòu)的處理器需要實現(xiàn)從72到640個之多的通用寄存器,每個寄存器寬度為64bits,,組成一系列的寄存器組,,稱之為寄存器窗口。
這種寄存器窗口的架構(gòu),,由于可以切換不同的寄存器組快速地響應函數(shù)調(diào)用與返回,,因此,能夠產(chǎn)生非常高的性能,,但是這種架構(gòu)由于功耗面積代價太大,,而并不適用于PC與嵌入式領域處理器。而SPARC架構(gòu)也不具備模塊化的特點,,使得用戶無法裁剪和選擇,。很難作為一種通用的處理器架構(gòu)對商用的x86和ARM架構(gòu)形成替代。
設計這種超大服務器CPU芯片又非普通公司與個人所能涉足,,而有能力設計這種大型CPU的公司也沒有必要投入巨大的成本來挑戰(zhàn)x86的統(tǒng)治地位,。隨著Sun公司的衰弱,SPARC架構(gòu)現(xiàn)在基本上退出了人們的視野,。感興趣的讀者請在網(wǎng)絡上自行搜索文章《再見SPARC處理器,,再見Sun》
3.3 名校優(yōu)生——RISC-V
關于RISC-V在伯克利大學誕生的經(jīng)歷,本節(jié)在此不做重復贅述,。
因為多年來在CPU領域已經(jīng)出現(xiàn)過多個免費或開放的架構(gòu),,很多高校也在科研項目中推出過多種指令集架構(gòu),。因此,,當筆者第一次聽說RISC-V之時,,以為又是一個玩具,或純粹學術(shù)性質(zhì)的科研項目而不以為意,。
直到筆者親自通讀了一遍RISC-V的架構(gòu)文檔,,不禁為其先進的設計理念所折服。同時,,RISC-V架構(gòu)的各種優(yōu)點也得到了眾多專業(yè)人士的青睞好評和眾多商業(yè)公司的相繼加盟,。并且2016年RISC-V基金會的正式啟動在業(yè)界引起了不小的影響。如此種種,,使得RISC-V成為至今為止最具備革命性意義的開放處理器架構(gòu),。