終於有人把各個指令集之間的關係和發展講清楚了

終於有人把各個指令集之間的關係和發展講清楚了


RISC-V

RISC-V(讀作“RISC-FIVE”)是一個基於精簡指令集(RISC)原則的開源指令集架構(ISA)。與大多數指令集相比,RISC-V指令集可以自由地用於任何目的,允許任何人設計、製造和銷售RISC-V芯片和軟件。雖然這不是第一個開源指令集,但它具有重要意義,因為其設計使其適用於現代計算設備(如倉庫規模雲計算機、高端移動電話和微小嵌入式系統)。設計者考慮到了這些用途中的性能與功率效率。該指令集還具有眾多支持的軟件,這解決了新指令集通常的弱點。

RISC-V 的特點有:

1.完全開源

對指令集使用,RISC-V基金會不收取高額的授權費。開源採用寬鬆的BSD協議,企業完全自有免費使用,同時也容許企業添加自有指令集拓展而不必開放共享以實現差異化發展。

2.架構簡單

RISC-V架構秉承簡單的設計哲學。體現為:

在處理器領域,主流的架構為x86與ARM架構。x86與ARM架構的發展的過程也伴隨了現代處理器架構技術的不斷髮展成熟,但作為商用的架構,為了能夠保持架構的向後兼容性,其不得不保留許多過時的定義,導致其指令數目多,指令冗餘嚴重,文檔數量龐大,所以要在這些架構上開發新的操作系統或者直接開發應用門檻很高。而RISC-V架構則能完全拋棄包袱,藉助計算機體系結構經過多年的發展已經成為比較成熟的技術的優勢,從輕上路。RISC-V基礎指令集則只有40多條,加上其他的模塊化擴展指令總共幾十條指令。 RISC-V的規範文檔僅有145頁,而“特權架構文檔”的篇幅也僅為91頁。

3.易於移植*nix

現代操作系統都做了特權級指令和用戶級指令的分離,特權指令只能操作系統調用,而用戶級指令才能在用戶模式調用,保障操作系統的穩定。RISC-V提供了特權級指令和用戶級指令,同時提供了詳細的RISC-V特權級指令規範和RISC-V用戶級指令規範的詳細信息,使開發者能非常方便的移植linux和unix系統到RISC-V平臺。

4.模塊化設計

RISC-V架構不僅短小精悍,而且其不同的部分還能以模塊化的方式組織在一起,從而試圖通過一套統一的架構滿足各種不同的應用場景。用戶能夠靈活選擇不同的模塊組合,來實現自己定製化設備的需要,比如針對於小面積低功耗嵌入式場景,用戶可以選擇RV32IC組合的指令集,僅使用Machine Mode(計算機模式);而高性能應用操作系統場景則可以選擇譬如RV32IMFDC的指令集,使用Machine Mode(計算機模式)與User Mode(用戶模式)兩種模式。

5.完整的工具鏈

對於設計CPU來說,工具鏈是軟件開發人員和cpu交互的窗口,沒有工具鏈,對軟件開發人員開發軟件要求很高,甚至軟件開發者無法讓cpu工作起來。在cpu設計中,工具鏈的開發是一個需要巨大工作的。如果用RISC-V來設計芯片,芯片設計公司不再擔心工具鏈問題,只需專注於芯片設計,RISC-V社區已經提供了完整的工具鏈,並且RISC-V基金會持續維護該工具鏈。當前RISC-V的支持已經合併到主要的工具中,比如編譯工具鏈gcc, 仿真工具qemu等。

6.開源實現

加入RISC-V陣營更多是因為商業因素

目前,伯克利研究團隊已經完成了基於RISC-V指令集的順序執行的64位處理器核心(代號為Rocket),並前後基於45nm與28nm工藝進行了12次流片。Rocket芯片主頻1GHz,與ARM Cortex-A5相比,實測性能較之高10%,面積效率高49%,單位頻率動態功耗僅為Cortex-A5的43%。在嵌入式領域,Rocket已經可以和ARM爭市場了。目前全球上百家科技公司加入RISC-V陣營,更多的還是因為商業原因。雖然在很多報道中,都將ARM的成功歸咎於開放,但實際上,ARM只是在商業模式上開放,在技術上是卡的很死的。

迄今為止,獲得ARM32授權的公司一隻手都能數的過來,ARM64授權雖然多一些,但授權費卻異常昂貴,法國創業公司Greenwave表示,他們如果使用ARM架構,要花掉1500萬美元的授權費。而且授權到期後,是否繼續授權和授權費用都要重新談判。

雖然對高通、蘋果、華為這些大公司而言,上億元人民幣的授權費不算什麼,但對創業公司來說,這是不可承受之重。

為了深入挖掘RISC-V,我們應該研究一些不同類型的指令集架構。

目前的指令集架構有哪些類型?

最常見的是通過它們的複雜性來描述和分類:

精簡指令集(RISC)和複雜指令系統計算機(CISC)

這僅實現了經常使用的指令,不常見的操作則會以子程序實現。通過使用子程序,可以權衡性能,但它僅適用於最不常見的操作。

RISC使用加載或存儲架構,這意味著它將指令劃分為訪問存儲器的指令和執行算術邏輯單元(ALU)操作的指令。

RISC的英文全稱是Reduced Instruction Set Computer,中文是精簡指令集。特點是所有指令的格式都是一致的,所有指令的指令週期也是相同的,並且採用流水線技術。在中高檔服務器中採用RISC指令的CPU主要有Compaq(康柏,即新惠普)公司的Alpha、HP公司的PA-RISC、IBM公司的PowerPC、MIPS公司的MIPS和SUN公司的Sparc。

在計算機指令系統的優化發展過程中,出現過兩個截然不同的優化方向:CISC技術和RISC技術。CISC是指複雜指令系統計算機(Complex Instruction Set Computer);RISC是指精簡指令系統計算機(Reduced Instruction Set Computer)。這裡的計算機指令系統指的是計算機的最低層的計算機指令,也就是CPU能夠直接識別的指令。隨著計算機系統的複雜,要求計算機指令系統的構造能使計算機的整體性能更快更穩定。最初,人們採用的優化方法是通過設置一些功能複雜的指令,把一些原來由軟件實現的、常用的功能改用硬件的指令系統實現,以此來提高計算機的執行速度,這種計算機系統就被稱為複雜指令系統計算機,即Complex Instruction Set Computer,簡稱CISC。另一種優化方法是在20世紀80年代才發展起來的,其基本思想是儘量簡化計算機指令功能,只保留那些功能簡單、能在一個節拍內執行完成的指令,而把較複雜的功能用一段子程序來實現,這種計算機系統就被稱為精簡指令系統計算機.即Reduced Instruction Set Computer,簡稱RISC。RISC技術的精華就是通過簡化計算機指令功能,使指令的平均執行週期減少,從而提高計算機的工作主頻,同時大量使用通用寄存器來提高子程序執行的速度。

RISC和CISC是設計製造微處理器的兩種典型技術,雖然它們都是試圖在體系結構、操作運行、軟件硬件、編譯時間和運行時間等諸多因素中做出某種平衡,以求達到高效的目的,但採用的方法不同,因此,在很多方面差異很大,它們主要有:

1.指令系統:RISC設計者把主要精力放在那些經常使用的指令上,儘量使它們具有簡單高效。對不常用的功能,常通過組合指令來完成。因此,在RISC計算機上實現特殊功能時,效率可能較低。但可以利用流水技術和超標量技術加以改進和彌補。而CISC計算機的指令系統比較豐富,有專用指令來完成特定的功能。因此,處理特殊任務效率較高。

2.存儲器操作:RISC對存儲器操作有限制,使控制簡單化;而CISC計算機的存儲器操作指令多,操作直接。

3.程序:CISC彙編語言程序一般需要較大的內存空間,實現特殊功能時程序複雜,不易設計;而RISC彙編語言程序編程相對簡單,科學計算及複雜操作的程序設計相對容易,效率較高。

4.中斷:RISC計算機在一條指令執行的適當地方可以響應中斷,但是相比CISC指令執行的時間短,所以中斷響應及時;而CISC計算機是在一條指令執行結束後響應中斷。

5.CPU:RISC CPU包含有較少的單元電路,因而面積小、功耗低;而CISCCPU包含有豐富的電路單元,因而功能強、面積大、功耗大。

6.設計週期:RISC微處理器結構簡單,佈局緊湊,設計週期短,且易於採用最新技術;CISC微處理器結構複雜,設計週期長。

7.用戶使用:RISC微處理器結構簡單,指令規整,性能容易把握,易學易用;CISC微處理器結構複雜,功能強大,實現特殊功能容易。

8.應用範圍:由於CISC指令系統的確定與特定的應用領域有關,故CISC計算機更適合於專用機;而RISC計算機則更適合於通用機。

超長指令字(VLIW)和顯式並行指令計算(EPIC)

VLIW是一種非常長的指令組合,它把許多條指令連在一起,增加了運算的速度。 超長指令字(VLIW)是指令級並行,超線程(Hyper-Threading)是線程級並行,而多內核則是芯片級並行。這三種方式都是提高並行計算性能的有效途徑。其中,VLIW(超長指令字)體系結構是美國Multiflow和Cydrome公司於20世紀80年代設計的體系結構,EPIC體系結構就是從VLIW中衍生出來的。

上述方法通過要求硬件執行所有這些邏輯來使硬件複雜化。相比之下,VLIW將這種複雜性留給了程序。作為權衡,編譯器變得更加複雜,同時硬件被簡化並且仍然在計算上表現良好。

VLIW最常見於嵌入式媒體處理器和圖形處理單元(GPU)中。但是,Nvidia和AMD已經轉向RISC架構,以提高非圖形工作負載的性能。

為了開拓64位處理器的高端應用市場,1994年6月Intel和HP公司簽署合作協議,共同開發以服務器和T作站為主要應用目標的全新64位架構高性能微處理器。1997年11月,Intel和HP公司發佈基於EPIC(Explicitly Parallel Instruction Computing,顯式並行指令計算)的Itanium系統結構。

超標量和VLIW是開發指令級並行的兩種極端結構,前者完全依賴流水線硬件動態識別出可並行的指令,並將它們分發給相應的功能單元執行,後者則將指令級並行的開發工作全部交給編譯器完成,在編譯時靜態確定每條指令的流出時刻和執行延遲,僅依賴簡單的流水線硬件確保在指令實際執行延遲與編譯器假定的延遲不一致時(如訪問Cache不命中就會增加訪存操作的延遲),程序的執行結果依然正確。在這兩種結構中,單一的指令級並行開發機制使得它們都存在著嚴重的固有缺陷:超標量結構硬件複雜度太高,學術界和工業界一致認為,同時流出並執行8條指令將達到這種結構的極限;VLIW則面臨著嚴重的代碼兼容問題,而且目前VLIW編譯器的智能程度遠遠無法滿足人們的要求。顯式並行指令計算(Explicitly Parallel Instruction Computing,EPIC)技術正是為了解決這兩種結構的本質缺陷而提出的,它是在VLIW的基礎上融合了超標量結構的一些優點而設計得到的,以期用有限的硬件開銷為代價開發出更多的指令級並行。

最小指令集(MISC)

MISC比RISC更小,它包括非常少量的基本操作和相應的操作碼。如果它們是基於堆棧而不是基於寄存器,則這些被歸類為MISC,但是也可以由指令的數量(少於32條但大於1條)來定義。

單一指令集(OISC)

這描述了一個只使用一條指令的抽象計算機,它消除了對計算機語言操作碼的需求。例如,“mov”是圖靈完成,這意味著它能夠成為一個OISC,以及其他使用減法的指令。據我所知,OISC還沒有商業化。

在很多媒體的報道中,定義一套指令集被描述為黑科技,但事實上,實現一款高性能的CPU和圍繞指令集構建軟件生態才是真正具有挑戰性的工作,定義一套指令集的難度並不大,伯克利的研究團隊4名成員僅用了3個月就完成了RISC-V的指令集開發。由於伯克利研究團隊缺人缺錢,於是決定將RISC-V開源,成為CPU中的Linux,在獲得各方支援後,又相繼開發了一些產品。


分享到:


相關文章: