RISC-V(發(fā)音為“RISC five”)的目標(biāo)是成為一款通用的指令集架構(gòu)(Instruction Set Architecture,ISA):
? 它要適合設(shè)計各種規(guī)模的處理器,包括從最小的嵌入式控制器到最快的高性能計算機(jī)。
? 它要兼容各種流行的軟件棧和編程語言。
? 它要適用于所有實現(xiàn)技術(shù),包括 FPGA(Field-Programmable Gate Array,現(xiàn)場可編程邏輯門陣列)、ASIC(Application-Specific Integrated Circuit,專用集成電路)、全定制芯片,甚至未來的制造元件技術(shù)。
? 它能用于高效實現(xiàn)所有微體系結(jié)構(gòu),包括微程序或硬連線控制,順序、解耦或亂序流水線,單發(fā)射或超標(biāo)量等。
? 它要支持高度定制化,成為定制加速器的基礎(chǔ),以應(yīng)對摩爾定律的放緩。
? 它要穩(wěn)定,基礎(chǔ) ISA 不會改變。更重要的是,它不能像以往的公司專有 ISA 那樣消亡,包括 AMD 的 Am29000、Digital 的 Alpha 和 VAX、Hewlett Packard1 的 PARISC、Intel 的 i860 和 i960、Motorola 的 88000,以及Zilog 的 Z8000。
RISC-V 是一款與眾不同的 ISA,不僅因為它年輕(它誕生于 2010 年,而其他 ISA 大多誕生于 20 世紀(jì) 70 年代或 80年代),而且因為它開放。與過去幾乎所有的架構(gòu)不同,其未來不受任何一家公司的興衰或心血來潮的決策所影響(過去許多 ISA 因此消亡)。相反,RISC-V 屬于一個開放的、非營利性質(zhì)的基金會。RISC-V 國際基金會的目標(biāo)是維護(hù) RISC-V 的穩(wěn)定性,僅出于技術(shù)原因而緩慢謹(jǐn)慎地改進(jìn) RISC-V,并推動RISC-V 在硬件中流行起來,猶如 Linux 在操作系統(tǒng)中流行一般。圖 1.1 列出了 RISC-V 國際基金會最大的企業(yè)會員,展示了 RISC-V 的繁榮。
模塊化ISA和增量型ISA
Intel 曾將其未來押在高端微處理器上,但這還需要很多年時間。為與 Zilog 公司抗衡,Intel 開發(fā)了一款名為8086 的過渡產(chǎn)品。它本該朝生暮死,無任何后續(xù)產(chǎn)品,但事實并非如此。高端處理器姍姍來遲,等它最終面世時,性能卻不如人意。因此,8086 架構(gòu)得以延續(xù)——它演化為 32 位處理器,最終又演化為 64 位。其名稱不斷更替(80186、80286、i386、i486、Pentium),但底層指令集絲毫未減。 ——Stephen P. Morse,8086 架構(gòu)師 (Morse, 2017)
計算機(jī)體系結(jié)構(gòu)的傳統(tǒng)發(fā)展方式是增量型 ISA,這意味著新處理器不僅需要實現(xiàn)新的 ISA 擴(kuò)展,還必須實現(xiàn)過去的所有擴(kuò)展。其目的是保持向過去的二進(jìn)制兼容性,使數(shù)十年前的二進(jìn)制程序仍可在最新處理器上正確運(yùn)行。出于市場營銷的目的,新一代處理器的發(fā)布通常伴隨著新指令的發(fā)布。這兩點需求共同導(dǎo)致 ISA 的指令數(shù)量隨時間流逝而大幅增長。圖 1.2 展示了當(dāng)今主流 ISA x86 的指令數(shù)量增長過程。x86 的歷史可追溯到 1978 年,在漫長的生命周期中,它每個月大約增加 3 條指令。
x86 在 1978 年誕生時有 80 條指令,2015 年增長到 1 338 條,翻了 16 倍,并且仍在增長。但圖中數(shù)據(jù)仍偏保守。一篇 2015 年的 Intel 博客指出,統(tǒng)計結(jié)果為 3600條指令 (Rodgers et al. 2017)。按這個數(shù)據(jù),在 1978 年到 2015 年期間,x86 指令平均每 4 天增長 1 條。我們統(tǒng)計的是匯編語言指令,他們統(tǒng)計的也許是機(jī)器語言指令。增長的主要原因是 x86 ISA 通過 SIMD 指令實現(xiàn)數(shù)據(jù)級并行。
這種約定意味著 x86-32(我們用它表示 32 位地址版本的x86)的每款處理器都必須實現(xiàn)過去擴(kuò)展的錯誤設(shè)計,即便它們已無意義。例如,圖 1.3 列出了 x86 的 aaa(ASCII Adjustafter Addition)指令,該指令早已失去用處。
它以二進(jìn)制編碼十進(jìn)制數(shù)(Binary Coded Decimal,BCD)的形式進(jìn)行算術(shù)運(yùn)算,但它已化為信息技術(shù)的歷史塵埃。x86 還有 3 條類似的指令,分別用于減法(aas)、乘法(aam)和除法(aad)。它們都是單字節(jié)指令,因此一共占用寶貴操作碼空間的 1.6%(4/256)。
打個比方,假設(shè)一家餐館只提供價格固定的套餐,最開始只有漢堡加奶昔的小餐。隨著時間的推移,套餐中加入了薯條,然后是冰淇淋圣代,還有沙拉、餡餅、葡萄酒、素食意大利面、牛排、啤酒,無窮無盡,最后變成饕餮盛宴。食客能在這家餐館找到他們過去吃過的任何一種食物(盡管這樣沒什么意義)。然而,這對食客來說是一個壞消息,他們每次的餐費(fèi)將隨盛宴加量而不斷上漲。
除年輕和開放之外,RISC-V 還是模塊化的,這與過去幾乎所有 ISA 都不同。其核心是一個名為 RV32I 的基礎(chǔ) ISA,可運(yùn)行完整的軟件棧。RV32I 已凍結(jié),永不改變,這為編譯器開發(fā)者、操作系統(tǒng)開發(fā)者和匯編語言程序員提供了穩(wěn)定的指令目標(biāo)。模塊化特性源于可選的標(biāo)準(zhǔn)擴(kuò)展,硬件可根據(jù)應(yīng)用程序的需求決定是否包含它們。利用這種模塊化特性能設(shè)計出面積小、能耗低的 RISC-V 處理器,這對于嵌入式應(yīng)用至關(guān)重要。RISC-V 編譯器得知當(dāng)前硬件包含哪些擴(kuò)展后,便可為該硬件生成最優(yōu)代碼。一般約定將擴(kuò)展對應(yīng)的字母加到指令集名稱之后,以指示包含哪些擴(kuò)展。例如,RV32IMFD 在必選基礎(chǔ)指令集(RV32I)上添加了乘法(RV32M)、單精度浮點(RV32F)和雙精度浮點(RV32D)擴(kuò)展。如果軟件使用了一條未實現(xiàn)的可選 RISC-V 擴(kuò)展指令,硬件將發(fā)生自陷,并在軟件層執(zhí)行該指令的功能。此特性屬于標(biāo)準(zhǔn)庫的一部分。
繼續(xù)用我們剛才的比方,RISC-V 提供的是一份菜單,而不是一頓應(yīng)有盡有的自助餐。主廚只需烹飪食客需要的食物,而不是每次都烹飪一頓大餐,食客也只需為他們點單的食物付費(fèi)。RISC-V 無須僅為市場營銷的熱鬧而添加新指令。RISC-V國際基金會決定何時往菜單中添加新的選擇,經(jīng)過由軟硬件專家組成的委員會公開討論后,他們才會出于必要的技術(shù)原因添加指令。即使這些新的選擇出現(xiàn)在菜單上,它們?nèi)允强蛇x的,不像增量型 ISA 那樣成為未來所有實現(xiàn)的必要組成部分。
審核編輯:黃飛
-
處理器
+關(guān)注
關(guān)注
68文章
19100瀏覽量
228814 -
FPGA
+關(guān)注
關(guān)注
1625文章
21620瀏覽量
601232 -
加速器
+關(guān)注
關(guān)注
2文章
790瀏覽量
37674 -
微處理器
+關(guān)注
關(guān)注
11文章
2244瀏覽量
82267 -
RISC-V
+關(guān)注
關(guān)注
44文章
2204瀏覽量
45958
原文標(biāo)題:圖靈獎得主David Patterson:為什么要有 RISC-V
文章出處:【微信號:pzh_mcu,微信公眾號:痞子衡嵌入式】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論