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