終于有人把各個(gè)指令集之間的關(guān)系和發(fā)展講清楚了
RISC-V
RISC-V(讀作“RISC-FIVE”)是一個(gè)基于精簡(jiǎn)指令集(RISC)原則的開源指令集架構(gòu)(ISA)。與大多數(shù)指令集相比,RISC-V指令集可以自由地用于任何目的,允許任何人設(shè)計(jì)、制造和銷售RISC-V芯片和軟件。雖然這不是開始的開源指令集,但它具有重要意義,因?yàn)槠湓O(shè)計(jì)使其適用于現(xiàn)代計(jì)算設(shè)備(如倉(cāng)庫(kù)規(guī)模云計(jì)算機(jī)、高端移動(dòng)電話和微小嵌入式系統(tǒng))。設(shè)計(jì)者考慮到了這些用途中的性能與功率效率。該指令集還具有眾多支持的軟件,這解決了新指令集通常的弱點(diǎn)。
RISC-V 的特點(diǎn)有:
1.完全開源
對(duì)指令集使用,RISC-V基金會(huì)不收取高額的授權(quán)費(fèi)。開源采用寬松的BSD協(xié)議,企業(yè)完全自有免費(fèi)使用,同時(shí)也容許企業(yè)添加自有指令集拓展而不必開放共享以實(shí)現(xiàn)差異化發(fā)展。
2.架構(gòu)簡(jiǎn)單
RISC-V架構(gòu)秉承簡(jiǎn)單的設(shè)計(jì)哲學(xué)。體現(xiàn)為:
在處理器領(lǐng)域,主流的架構(gòu)為x86與ARM架構(gòu)。x86與ARM架構(gòu)的發(fā)展的過(guò)程也伴隨了現(xiàn)代處理器架構(gòu)技術(shù)的不斷發(fā)展成熟,但作為商用的架構(gòu),為了能夠保持架構(gòu)的向后兼容性,其不得不保留許多過(guò)時(shí)的定義,導(dǎo)致其指令數(shù)目多,指令冗余嚴(yán)重,文檔數(shù)量龐大,所以要在這些架構(gòu)上開發(fā)新的操作系統(tǒng)或者直接開發(fā)應(yīng)用門檻很高。而RISC-V架構(gòu)則能完全拋棄包袱,借助計(jì)算機(jī)體系結(jié)構(gòu)經(jīng)過(guò)多年的發(fā)展已經(jīng)成為比較成熟的技術(shù)的優(yōu)勢(shì),從輕上路。RISC-V基礎(chǔ)指令集則只有40多條,加上其他的模塊化擴(kuò)展指令總共幾十條指令。 RISC-V的規(guī)范文檔僅有145頁(yè),而“特權(quán)架構(gòu)文檔”的篇幅也僅為91頁(yè)。
3.易于移植*nix
現(xiàn)代操作系統(tǒng)都做了特權(quán)級(jí)指令和用戶級(jí)指令的分離,特權(quán)指令只能操作系統(tǒng)調(diào)用,而用戶級(jí)指令才能在用戶模式調(diào)用,保障操作系統(tǒng)的穩(wěn)定。RISC-V提供了特權(quán)級(jí)指令和用戶級(jí)指令,同時(shí)提供了詳細(xì)的RISC-V特權(quán)級(jí)指令規(guī)范和RISC-V用戶級(jí)指令規(guī)范的詳細(xì)信息,使開發(fā)者能非常方便的移植linux和unix系統(tǒng)到RISC-V平臺(tái)。
4.模塊化設(shè)計(jì)
RISC-V架構(gòu)不僅短小精悍,而且其不同的部分還能以模塊化的方式組織在一起,從而試圖通過(guò)一套統(tǒng)一的架構(gòu)滿足各種不同的應(yīng)用場(chǎng)景。用戶能夠靈活選擇不同的模塊組合,來(lái)實(shí)現(xiàn)自己定制化設(shè)備的需要,比如針對(duì)于小面積低功耗嵌入式場(chǎng)景,用戶可以選擇RV32IC組合的指令集,僅使用Machine Mode(計(jì)算機(jī)模式);而高性能應(yīng)用操作系統(tǒng)場(chǎng)景則可以選擇譬如RV32IMFDC的指令集,使用Machine Mode(計(jì)算機(jī)模式)與User Mode(用戶模式)兩種模式。
5.完整的工具鏈
對(duì)于設(shè)計(jì)CPU來(lái)說(shuō),工具鏈?zhǔn)擒浖_發(fā)人員和cpu交互的窗口,沒有工具鏈,對(duì)軟件開發(fā)人員開發(fā)軟件要求很高,甚至軟件開發(fā)者無(wú)法讓cpu工作起來(lái)。在cpu設(shè)計(jì)中,工具鏈的開發(fā)是一個(gè)需要巨大工作的。如果用RISC-V來(lái)設(shè)計(jì)芯片,芯片設(shè)計(jì)公司不再擔(dān)心工具鏈問(wèn)題,只需專注于芯片設(shè)計(jì),RISC-V社區(qū)已經(jīng)提供了完整的工具鏈,并且RISC-V基金會(huì)持續(xù)維護(hù)該工具鏈。當(dāng)前RISC-V的支持已經(jīng)合并到主要的工具中,比如編譯工具鏈gcc, 仿真工具qemu等。
6.開源實(shí)現(xiàn)
加入RISC-V陣營(yíng)更多是因?yàn)樯虡I(yè)因素
目前,伯克利研究團(tuán)隊(duì)已經(jīng)完成了基于RISC-V指令集的順序執(zhí)行的64位處理器核心(代號(hào)為Rocket),并前后基于45nm與28nm工藝進(jìn)行了12次流片。Rocket芯片主頻1GHz,與ARM Cortex-A5相比,實(shí)測(cè)性能較之高10%,面積效率高49%,單位頻率動(dòng)態(tài)功耗僅為Cortex-A5的43%。在嵌入式領(lǐng)域,Rocket已經(jīng)可以和ARM爭(zhēng)市場(chǎng)了。目前全球上百家科技公司加入RISC-V陣營(yíng),更多的還是因?yàn)樯虡I(yè)原因。雖然在很多報(bào)道中,都將ARM的成功歸咎于開放,但實(shí)際上,ARM只是在商業(yè)模式上開放,在技術(shù)上是卡的很死的。
迄今為止,獲得ARM32授權(quán)的公司一只手都能數(shù)的過(guò)來(lái),ARM64授權(quán)雖然多一些,但授權(quán)費(fèi)卻異常昂貴,法國(guó)創(chuàng)業(yè)公司Greenwave表示,他們?nèi)绻褂肁RM架構(gòu),要花掉1500萬(wàn)美元的授權(quán)費(fèi)。而且授權(quán)到期后,是否繼續(xù)授權(quán)和授權(quán)費(fèi)用都要重新談判。
雖然對(duì)高通、蘋果、華為這些大公司而言,上億元人民幣的授權(quán)費(fèi)不算什么,但對(duì)創(chuàng)業(yè)公司來(lái)說(shuō),這是不可承受之重。
為了深入挖掘RISC-V,我們應(yīng)該研究一些不同類型的指令集架構(gòu)。
目前的指令集架構(gòu)有哪些類型?
最常見的是通過(guò)它們的復(fù)雜性來(lái)描述和分類:
精簡(jiǎn)指令集(RISC)和復(fù)雜指令系統(tǒng)計(jì)算機(jī)(CISC)
這僅實(shí)現(xiàn)了經(jīng)常使用的指令,不常見的操作則會(huì)以子程序?qū)崿F(xiàn)。通過(guò)使用子程序,可以權(quán)衡性能,但它僅適用于最不常見的操作。
RISC使用加載或存儲(chǔ)架構(gòu),這意味著它將指令劃分為訪問(wèn)存儲(chǔ)器的指令和執(zhí)行算術(shù)邏輯單元(ALU)操作的指令。
RISC的英文全稱是Reduced Instruction Set Computer,中文是精簡(jiǎn)指令集。特點(diǎn)是所有指令的格式都是一致的,所有指令的指令周期也是相同的,并且采用流水線技術(shù)。在中高檔服務(wù)器中采用RISC指令的CPU主要有Compaq(康柏,即新惠普)公司的Alpha、HP公司的PA-RISC、IBM公司的PowerPC、MIPS公司的MIPS和SUN公司的Sparc。
在計(jì)算機(jī)指令系統(tǒng)的優(yōu)化發(fā)展過(guò)程中,出現(xiàn)過(guò)兩個(gè)截然不同的優(yōu)化方向:CISC技術(shù)和RISC技術(shù)。CISC是指復(fù)雜指令系統(tǒng)計(jì)算機(jī)(Complex Instruction Set Computer);RISC是指精簡(jiǎn)指令系統(tǒng)計(jì)算機(jī)(Reduced Instruction Set Computer)。這里的計(jì)算機(jī)指令系統(tǒng)指的是計(jì)算機(jī)的底層的計(jì)算機(jī)指令,也就是CPU能夠直接識(shí)別的指令。隨著計(jì)算機(jī)系統(tǒng)的復(fù)雜,要求計(jì)算機(jī)指令系統(tǒng)的構(gòu)造能使計(jì)算機(jī)的整體性能更快更穩(wěn)定。最初,人們采用的優(yōu)化方法是通過(guò)設(shè)置一些功能復(fù)雜的指令,把一些原來(lái)由軟件實(shí)現(xiàn)的、常用的功能改用硬件的指令系統(tǒng)實(shí)現(xiàn),以此來(lái)提高計(jì)算機(jī)的執(zhí)行速度,這種計(jì)算機(jī)系統(tǒng)就被稱為復(fù)雜指令系統(tǒng)計(jì)算機(jī),即Complex Instruction Set Computer,簡(jiǎn)稱CISC。另一種優(yōu)化方法是在20世紀(jì)80年代才發(fā)展起來(lái)的,其基本思想是盡量簡(jiǎn)化計(jì)算機(jī)指令功能,只保留那些功能簡(jiǎn)單、能在一個(gè)節(jié)拍內(nèi)執(zhí)行完成的指令,而把較復(fù)雜的功能用一段子程序來(lái)實(shí)現(xiàn),這種計(jì)算機(jī)系統(tǒng)就被稱為精簡(jiǎn)指令系統(tǒng)計(jì)算機(jī).即Reduced Instruction Set Computer,簡(jiǎn)稱RISC。RISC技術(shù)的精華就是通過(guò)簡(jiǎn)化計(jì)算機(jī)指令功能,使指令的平均執(zhí)行周期減少,從而提高計(jì)算機(jī)的工作主頻,同時(shí)大量使用通用寄存器來(lái)提高子程序執(zhí)行的速度。
RISC和CISC是設(shè)計(jì)制造微處理器的兩種典型技術(shù),雖然它們都是試圖在體系結(jié)構(gòu)、操作運(yùn)行、軟件硬件、編譯時(shí)間和運(yùn)行時(shí)間等諸多因素中做出某種平衡,以求達(dá)到高效的目的,但采用的方法不同,因此,在很多方面差異很大,它們主要有:
1.指令系統(tǒng):RISC設(shè)計(jì)者把主要精力放在那些經(jīng)常使用的指令上,盡量使它們具有簡(jiǎn)單高效。對(duì)不常用的功能,常通過(guò)組合指令來(lái)完成。因此,在RISC計(jì)算機(jī)上實(shí)現(xiàn)特殊功能時(shí),效率可能較低。但可以利用流水技術(shù)和超標(biāo)量技術(shù)加以改進(jìn)和彌補(bǔ)。而CISC計(jì)算機(jī)的指令系統(tǒng)比較豐富,有專用指令來(lái)完成特定的功能。因此,處理特殊任務(wù)效率較高。
2.存儲(chǔ)器操作:RISC對(duì)存儲(chǔ)器操作有限制,使控制簡(jiǎn)單化;而CISC計(jì)算機(jī)的存儲(chǔ)器操作指令多,操作直接。
3.程序:CISC匯編語(yǔ)言程序一般需要較大的內(nèi)存空間,實(shí)現(xiàn)特殊功能時(shí)程序復(fù)雜,不易設(shè)計(jì);而RISC匯編語(yǔ)言程序編程相對(duì)簡(jiǎn)單,科學(xué)計(jì)算及復(fù)雜操作的程序設(shè)計(jì)相對(duì)容易,效率較高。
4.中斷:RISC計(jì)算機(jī)在一條指令執(zhí)行的適當(dāng)?shù)胤娇梢皂憫?yīng)中斷,但是相比CISC指令執(zhí)行的時(shí)間短,所以中斷響應(yīng)及時(shí);而CISC計(jì)算機(jī)是在一條指令執(zhí)行結(jié)束后響應(yīng)中斷。
5.CPU:RISC CPU包含有較少的單元電路,因而面積小、功耗低;而CISCCPU包含有豐富的電路單元,因而功能強(qiáng)、面積大、功耗大。
6.設(shè)計(jì)周期:RISC微處理器結(jié)構(gòu)簡(jiǎn)單,布局緊湊,設(shè)計(jì)周期短,且易于采用新技術(shù);CISC微處理器結(jié)構(gòu)復(fù)雜,設(shè)計(jì)周期長(zhǎng)。
7.用戶使用:RISC微處理器結(jié)構(gòu)簡(jiǎn)單,指令規(guī)整,性能容易把握,易學(xué)易用;CISC微處理器結(jié)構(gòu)復(fù)雜,功能強(qiáng)大,實(shí)現(xiàn)特殊功能容易。
8.應(yīng)用范圍:由于CISC指令系統(tǒng)的確定與特定的應(yīng)用領(lǐng)域有關(guān),故CISC計(jì)算機(jī)更適合于專用機(jī);而RISC計(jì)算機(jī)則更適合于通用機(jī)。
超長(zhǎng)指令字(VLIW)和顯式并行指令計(jì)算(EPIC)
VLIW是一種非常長(zhǎng)的指令組合,它把許多條指令連在一起,增加了運(yùn)算的速度。 超長(zhǎng)指令字(VLIW)是指令級(jí)并行,超線程(Hyper-Threading)是線程級(jí)并行,而多內(nèi)核則是芯片級(jí)并行。這三種方式都是提高并行計(jì)算性能的有效途徑。其中,VLIW(超長(zhǎng)指令字)體系結(jié)構(gòu)是美國(guó)Multiflow和Cydrome公司于20世紀(jì)80年代設(shè)計(jì)的體系結(jié)構(gòu),EPIC體系結(jié)構(gòu)就是從VLIW中衍生出來(lái)的。
上述方法通過(guò)要求硬件執(zhí)行所有這些邏輯來(lái)使硬件復(fù)雜化。相比之下,VLIW將這種復(fù)雜性留給了程序。作為權(quán)衡,編譯器變得更加復(fù)雜,同時(shí)硬件被簡(jiǎn)化并且仍然在計(jì)算上表現(xiàn)良好。
VLIW最常見于嵌入式媒體處理器和圖形處理單元(GPU)中。但是,Nvidia和AMD已經(jīng)轉(zhuǎn)向RISC架構(gòu),以提高非圖形工作負(fù)載的性能。
為了開拓64位處理器的高端應(yīng)用市場(chǎng),1994年6月Intel和HP公司簽署合作協(xié)議,共同開發(fā)以服務(wù)器和T作站為主要應(yīng)用目標(biāo)的全新64位架構(gòu)高性能微處理器。1997年11月,Intel和HP公司發(fā)布基于EPIC(Explicitly Parallel Instruction Computing,顯式并行指令計(jì)算)的Itanium系統(tǒng)結(jié)構(gòu)。
超標(biāo)量和VLIW是開發(fā)指令級(jí)并行的兩種極端結(jié)構(gòu),前者完全依賴流水線硬件動(dòng)態(tài)識(shí)別出可并行的指令,并將它們分發(fā)給相應(yīng)的功能單元執(zhí)行,后者則將指令級(jí)并行的開發(fā)工作全部交給編譯器完成,在編譯時(shí)靜態(tài)確定每條指令的流出時(shí)刻和執(zhí)行延遲,僅依賴簡(jiǎn)單的流水線硬件確保在指令實(shí)際執(zhí)行延遲與編譯器假定的延遲不一致時(shí),程序的執(zhí)行結(jié)果依然正確。在這兩種結(jié)構(gòu)中,單一的指令級(jí)并行開發(fā)機(jī)制使得它們都存在著嚴(yán)重的固有缺陷:超標(biāo)量結(jié)構(gòu)硬件復(fù)雜度太高,學(xué)術(shù)界和工業(yè)界一致認(rèn)為,同時(shí)流出并執(zhí)行8條指令將達(dá)到這種結(jié)構(gòu)的極限;VLIW則面臨著嚴(yán)重的代碼兼容問(wèn)題,而且目前VLIW編譯器的智能程度遠(yuǎn)遠(yuǎn)無(wú)法滿足人們的要求。顯式并行指令計(jì)算(Explicitly Parallel Instruction Computing,EPIC)技術(shù)正是為了解決這兩種結(jié)構(gòu)的本質(zhì)缺陷而提出的,它是在VLIW的基礎(chǔ)上融合了超標(biāo)量結(jié)構(gòu)的一些優(yōu)點(diǎn)而設(shè)計(jì)得到的,以期用有限的硬件開銷為代價(jià)開發(fā)出更多的指令級(jí)并行。
最小指令集(MISC)
MISC比RISC更小,它包括非常少量的基本操作和相應(yīng)的操作碼。如果它們是基于堆棧而不是基于寄存器,則這些被歸類為MISC,但是也可以由指令的數(shù)量(少于32條但大于1條)來(lái)定義。
單一指令集(OISC)
這描述了一個(gè)只使用一條指令的抽象計(jì)算機(jī),它消除了對(duì)計(jì)算機(jī)語(yǔ)言操作碼的需求。例如,“mov”是圖靈完成,這意味著它能夠成為一個(gè)OISC,以及其他使用減法的指令。據(jù)我所知,OISC還沒有商業(yè)化。
在很多媒體的報(bào)道中,定義一套指令集被描述為黑科技,但事實(shí)上,實(shí)現(xiàn)一款高性能的CPU和圍繞指令集構(gòu)建軟件生態(tài)才是真正具有挑戰(zhàn)性的工作,定義一套指令集的難度并不大,伯克利的研究團(tuán)隊(duì)4名成員僅用了3個(gè)月就完成了RISC-V的指令集開發(fā)。由于伯克利研究團(tuán)隊(duì)缺人缺錢,于是決定將RISC-V開源,成為CPU中的Linux,在獲得各方支援后,又相繼開發(fā)了一些產(chǎn)品。




























