1. 程式人生 > >大道至簡——RISC-V架構之魂(下)

大道至簡——RISC-V架構之魂(下)

本文為《RISC-V CPU設計》專欄和《RISC-V嵌入式軟體開發》專欄系列文章之一。

注:本文節選自“矽農亞歷山大”所著國內第一本系統介紹CPU與RISC-V設計的中文書籍《手把手教你設計CPU:RISC-V處理器篇》(預計將於2018年3~4月上市)。

“大道至簡——RISC-V架構之魂”——分成上中下三篇,本文是下篇。關注文末公眾號後可查詢上中下三篇的內容。

2.12 特權模式

  RISC-V架構定義了三種工作模式,又稱特權模式(Privileged Mode):

  Machine Mode:機器模式,簡稱M Mode。

  Supervisor Mode:監督模式,簡稱S Mode。

  User Mode:使用者模式,簡稱U Mode。

  RISC-V架構定義M Mode為必選模式,另外兩種為可選模式。通過不同的模式組合可以實現不同的系統。

  RISC-V架構也支援幾種不同的儲存器地址管理機制,包括對於實體地址和虛擬地址的管理機制,使得RISC-V架構能夠支援從簡單的嵌入式系統(直接操作實體地址)到複雜的作業系統(直接操作虛擬地址)的各種系統。

2.13 CSR暫存器

  RISC-V架構定義了一些控制和狀態暫存器(Control and Status Register,CSR),用於配置或記錄一些執行的狀態。CSR暫存器是處理器核內部的暫存器,使用其自己的地址編碼空間和儲存器定址的地址區間完全無關係。

  CSR暫存器的訪問採用專用的CSR指令,包括CSRRW、CSRRS、CSRRC、CSRRWI、CSRRSI以及CSRRCI指令。

2.14 中斷和異常

  中斷和異常機制往往是處理器指令集架構中最為複雜而關鍵的部分。RISC-V架構定義了一套相對簡單基本的中斷和異常機制,但是也允許使用者對其進行定製和擴充套件。

2.15 向量指令子集

  RISC-V架構目前雖然還沒有定型向量(Vector)指令子集,但是從目前的草案中已經可以看出,RISC-V向量指令子集的設計理念非常的先進,由於後發優勢及藉助向量架構多年發展成熟的結論,RISC-V架構將使用可變長度的向量,而不是向量定長的SIMD指令集(譬如ARM的NEON和Intel的MMX),從而能夠靈活的支援不同的實現。追求低功耗小面積的CPU可以選擇使用長度較短的硬體向量進行實現,而高效能的CPU則可以選擇較長的硬體向量進行實現,並且同樣的軟體程式碼能夠彼此相容。

2.16 自定製指令擴充套件

  除了上述闡述的模組化指令子集的可擴充套件、可選擇,RISC-V架構還有一個非常重要的特性,那就是支援第三方的擴充套件。使用者可以擴充套件自己的指令子集,RISC-V預留了大量的指令編碼空間用於使用者的自定義擴充套件,同時,還定義了四條Custom指令可供使用者直接使用,每條Custom指令都有幾個位元位的子編碼空間預留,因此,使用者可以直接使用四條Custom指令擴展出幾十條自定義的指令。

2.17 總結與比較

  處理器設計技術經過幾十年的衍進,隨著大規模積體電路設計技術的發展直至今天,呈現出如下特點:

  由於高效能處理器的硬體排程能力已經非常強勁且主頻很高,因此,硬體設計希望指令集儘可能的規整、簡單,從而,使得處理器可以設計出更高的主頻與更低的面積。

  以IoT應用為主的極低功耗處理器更加苛求低功耗與低面積。

  儲存器的資源也比早期的RISC處理器更加豐富。

  如上種種這些因素,使得很多早期的RISC架構設計理念(依據當時技術背景而誕生),時至今日不僅不能幫助現代處理器設計,反而成了負擔桎梏。某些早期RISC架構定義的特性,一方面使得高效能處理器的硬體設計束手束腳;另一方面又使得極低功耗的處理器硬體設計揹負不必要的複雜度。

  得益於後發優勢,全新的RISC-V架構能夠規避所有這些已知的負擔,同時,利用其先進的設計哲學,設計出一套“現代”的指令集。本節再次將其特點總結如表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,而非立足於定義一種開放的指令集架構,因此其架構的發展不夠完整,指令集的定義也不具備上節中提到的RISC-V架構的優點,更加沒有上升到成立專門的基金會組織的高度。OpenRISC更多的時候被認為是一個開源的Core,而非一種優美的指令集架構。此外,OpenRISC的許可證為GPL,這意味著所有的指令集改動都必須開源(而RISC-V則無此約束)。

3.2 豪門顯貴——SPARC

  SPARC架構作為經典的RISC微處理器架構之一,SPARC最早於1985年由Sun電腦所設計。SPARC也是SPARC國際公司的註冊商標之一,這家公司於1989年成立,目的是向外界推廣SPARC架構以及為該架構進行相容性測試。該公司為了推廣SPARC的生態系統,SPARC國際公司將標準開放,並授權予多家生產商採用,包括德州儀器、Cypress半導體和富士通等。由於SPARC架構也對外完全開放,因此,也出現了完全開放原始碼的LEON處理器。不僅如此,Sun公司還於1994年推動SPARC v8架構成為IEEE標準(IEEE Standard 1754-1994)。

  由於SPARC架構的初衷是面向伺服器領域而設計,其最大的特點是擁有一個大型的暫存器視窗,符合SPARC架構的處理器需要實現從72到640個之多的通用暫存器,每個暫存器寬度為64bits,組成一系列的暫存器組,稱之為暫存器視窗。

  這種暫存器視窗的架構,由於可以切換不同的暫存器組快速地響應函式呼叫與返回,因此,能夠產生非常高的效能,但是這種架構由於功耗面積代價太大,而並不適用於PC與嵌入式領域處理器。而SPARC架構也不具備模組化的特點,使得使用者無法裁剪和選擇。很難作為一種通用的處理器架構對商用的x86和ARM架構形成替代。

  設計這種超大伺服器CPU晶片又非普通公司與個人所能涉足,而有能力設計這種大型CPU的公司也沒有必要投入巨大的成本來挑戰x86的統治地位。隨著Sun公司的衰弱,SPARC架構現在基本上退出了人們的視野。感興趣的讀者請在網路上自行搜尋文章《再見SPARC處理器,再見Sun》

3.3 名校優生——RISC-V

  關於RISC-V在伯克利大學誕生的經歷,本節在此不做重複贅述。

  因為多年來在CPU領域已經出現過多個免費或開放的架構,很多高校也在科研專案中推出過多種指令集架構。因此,當筆者第一次聽說RISC-V之時,以為又是一個玩具,或純粹學術性質的科研專案而不以為意。

  直到筆者親自通讀了一遍RISC-V的架構文件,不禁為其先進的設計理念所折服。同時,RISC-V架構的各種優點也得到了眾多專業人士的青睞好評和眾多商業公司的相繼加盟。並且2016年RISC-V基金會的正式啟動在業界引起了不小的影響。如此種種,使得RISC-V成為至今為止最具備革命性意義的開放處理器架構。

  “大道至簡——RISC-V架構之魂”——分成上中下三篇,本文是下篇。關注文末公眾號後可查詢上中下三篇的內容。

(全文完)

更多資訊

感興趣的讀者可以通過下面二維碼關注公眾號“矽農亞歷山大”,瞭解Verilog、IC設計、CPU、RISC-V和人工智慧AI相關的更多設計技巧和經驗分享,注意:由於乾貨太多,請自備茶水。

這裡寫圖片描述