計(jì)算機(jī)體系結(jié)構(gòu)_第1頁
計(jì)算機(jī)體系結(jié)構(gòu)_第2頁
計(jì)算機(jī)體系結(jié)構(gòu)_第3頁
計(jì)算機(jī)體系結(jié)構(gòu)_第4頁
計(jì)算機(jī)體系結(jié)構(gòu)_第5頁
已閱讀5頁,還剩44頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、計(jì)算機(jī)體系結(jié)構(gòu)Topic II: ISAMIPSMIPS是最典型的RISC 指令集架構(gòu)Stanford, 1980年提出,主要受到IBM801 小型機(jī)的影響第一個(gè)商業(yè)實(shí)現(xiàn)是R2000(1986)最初的設(shè)計(jì)中,其整數(shù)指令集僅有58條指令,直接實(shí)現(xiàn)單發(fā)射 (single-issued)、順序流水線30年來,逐步增加到約400條指令。主要特征:Load/Store型結(jié)構(gòu),專門的指令完成存儲(chǔ)器與寄存器之間的傳送ALU類指令的操作數(shù)來源于寄存器或立即數(shù)(指令中的特定區(qū)域)降低了指令集和硬件的復(fù)雜性,依賴于優(yōu)化編譯技術(shù),方便了簡單流水線的實(shí)現(xiàn)2022/7/272MIPS Shortcomings主要缺陷:

2、針對(duì)特定的微體系架構(gòu)的實(shí)現(xiàn)方式(5級(jí)流水、單發(fā)射、順序流水線)進(jìn)行過度的優(yōu)化設(shè)計(jì)延遲轉(zhuǎn)移 (delayed branch)問題導(dǎo)致超標(biāo)量等復(fù)雜流水線的實(shí)現(xiàn)難度,當(dāng)無法有效填充延遲槽時(shí)會(huì)導(dǎo)致代碼尺寸變大MIPS-I中暴露出其他流水線沖突(load、乘除引起的沖突)采用簡單的Interlocking 簡單又高效,但為了保持兼容性,仍然保留了延遲轉(zhuǎn)移2022/7/273MIPS Shortcomings主要缺陷:ISA對(duì)位置無關(guān)的代碼(position-independent code, PIC)支持不足。直接跳轉(zhuǎn)沒有提供PC相對(duì)尋址,需要通過間接跳轉(zhuǎn)方式實(shí)現(xiàn)PIC,增加了代碼尺寸,降低了性能 20

3、14年MIPS的修訂,改進(jìn)了PC-相對(duì)尋址(針對(duì)數(shù)據(jù)),但仍然要多條指令才能完成2022/7/274Please give an example instruction that is position dependent MIPS Shortcomings主要缺陷:16位位寬立即數(shù)消耗了大量編碼空間,只有少量的編碼空間可供擴(kuò)展指令2014修訂版,保存有1/64的編碼空間供擴(kuò)展架構(gòu)師如果想采用壓縮指令編碼來降低代碼空間,就不得不采用新的指令編碼乘除指令使用了特殊的寄存器(HI,LO),導(dǎo)致上下文切換內(nèi)容、指令條數(shù)、代碼尺寸增加,微架構(gòu)實(shí)現(xiàn)復(fù)雜2022/7/275ISA假設(shè)浮點(diǎn)操作部件是一個(gè)獨(dú)立

4、的協(xié)處理器,使得單芯片實(shí)現(xiàn)無法最優(yōu)例如,整型數(shù)與浮點(diǎn)數(shù)的轉(zhuǎn)換結(jié)果寫到浮點(diǎn)數(shù)寄存器,使用結(jié)果時(shí),需要額外的mov指令,更糟糕的是浮點(diǎn)數(shù)寄存器文件與整型數(shù)寄存器文件之間的傳輸,需要有顯式的延遲槽在標(biāo)準(zhǔn)的ABI中,保留兩個(gè)整型寄存器用于內(nèi)核程序,減少了用戶程序可用的寄存器數(shù)使用特殊指令處理未對(duì)齊的load和store會(huì)消耗大量的操作碼空間,并使除了最簡單的實(shí)現(xiàn)之外的其他實(shí)現(xiàn)復(fù)雜化。時(shí)鐘速率/CPI 的權(quán)衡使得架構(gòu)師省略了整數(shù)大小比較和分支指令。隨著分支預(yù)測和靜態(tài)CMOS邏輯的出現(xiàn),這種權(quán)衡在今天已經(jīng)不太合適了。除了技術(shù)方面,MIPS是非開放的專屬指令集,不能自由使用MIPS Shortcomings

5、2022/7/276Load word left (LWL), load word right (LWR) SPARC (Scalable Processor Architecture)Sun Microsystems的專屬指令集可追溯到Berkeley RISC-I和RISC-II項(xiàng)目 (early 1980) One of the most successful early commercial RISCSPARC V8 (1990) 主要特征用戶級(jí) 整型ISA 90條指令; 硬件支持IEEE 754-1985標(biāo)準(zhǔn)的浮點(diǎn)數(shù)(50條) ;特權(quán)級(jí)指令 20條主要問題SPARC使用了寄存器窗口(

6、register windows)來加速函數(shù)調(diào)用The number of registers is very limited. At function calls, the registers often need to be saved, thus very slow.Registers windows enable a set of registers to be swamped during function calls. 對(duì)于所有的實(shí)現(xiàn)來說,寄存器窗口都消耗很大的面積和功耗更多細(xì)節(jié):http:/icps.u-strasbg.fr/people/loechner/public_html

7、/enseignement/SPARC/sparcstack.html2022/7/277SPARC (Scalable Processor Architecture)主要問題分支使用條件碼For signed numbers, SPARC uses one of the three condition codes- the Z, N, and V bits - to regulate conditional branching這些條件碼由于在一些指令之間創(chuàng)建了額外的依賴關(guān)系,增加了體系結(jié)構(gòu)狀態(tài)并使實(shí)現(xiàn)復(fù)雜化2022/7/278SPARC (Scalable Processor Archite

8、cture)主要問題load和store相鄰寄存器對(duì)的指令Ldd (需要一對(duì)相鄰寄存器存放雙字,并且必須是偶數(shù)寄存器;高字移入偶數(shù)寄存器,低字移入奇數(shù)寄存器)對(duì)于簡單的微體系結(jié)構(gòu)很有吸引力,可以在很少增加硬件復(fù)雜性的情況下提高吞吐量。遺憾的是當(dāng)使用寄存器重命名使實(shí)現(xiàn)復(fù)雜化,因?yàn)樵诩拇嫫魑募袛?shù)據(jù)在物理上可能不再相鄰浮點(diǎn)寄存器文件和整數(shù)寄存器文件之間的移動(dòng)必須使用內(nèi)存系統(tǒng)作為中介,限制了系統(tǒng)性能2022/7/279SPARCISA通過體系結(jié)構(gòu)公開的延遲陷阱隊(duì)列支持非精確浮點(diǎn)異常,該隊(duì)列向系統(tǒng)監(jiān)控程序提供信息,以恢復(fù)此類異常上的處理器狀態(tài)唯一的原子內(nèi)存操作是fetch-and-store,這對(duì)于實(shí)

9、現(xiàn)許多無等待的數(shù)據(jù)結(jié)構(gòu)是不夠的SPARC與其他80年代RISC結(jié)構(gòu)的許多有缺陷的特性ISA設(shè)計(jì)面向單發(fā)射、順序、五級(jí)流水線的微體系架構(gòu);SPARC具有分支延遲插槽和許多顯式的數(shù)據(jù)和控制沖突,這些沖突使代碼生成復(fù)雜化,無助于更積極的實(shí)現(xiàn);缺乏位置無關(guān)的尋址方式(相對(duì)尋址)由于SPARC缺乏足夠的自由編碼空間,因此不能方便地對(duì)其進(jìn)行改進(jìn)以支持壓縮ISA擴(kuò)展2022/7/2710Alpha (DEC)DEC公司的架構(gòu)師在20世紀(jì)90年代初定義了他們的RISC ISA, Alpha摒棄了當(dāng)時(shí)非常吸引人的特性,如分支延遲、條件碼、寄存器窗口等創(chuàng)建了64位尋址空間、設(shè)計(jì)簡潔、實(shí)現(xiàn)簡單、高性能的ISAAlp

10、ha架構(gòu)師仔細(xì)地將特權(quán)體系結(jié)構(gòu)和硬件平臺(tái)的大部分細(xì)節(jié)隔離在抽象接口(特權(quán)體系結(jié)構(gòu)庫)后面(PALcode)主要問題:盡管如此,DEC對(duì)順序微架構(gòu)的Alpha進(jìn)行了過度優(yōu)化,并添加了一些不太適合現(xiàn)代實(shí)現(xiàn)的特性為了追求高時(shí)鐘頻率,ISA的原始版本避免了8位和16位的加載和存儲(chǔ),實(shí)際上創(chuàng)建了一個(gè)字尋址的內(nèi)存系統(tǒng)。為了在廣泛使用這些操作的應(yīng)用程序上性能,添加了特殊的未對(duì)齊的加載和存儲(chǔ)指令以及一些整數(shù)指令,以加速重新組合過程。為了方便長延遲浮點(diǎn)指令的亂序完成,Alpha有一個(gè)非精確的浮點(diǎn)陷阱模型。這個(gè)決定可能是可以單獨(dú)接受的,但是ISA還定義了異常標(biāo)記和默認(rèn)值(如果需要的話)必須由軟件例程提供。Alph

11、a缺少整數(shù)除法指令,建議使用軟件牛頓迭代法實(shí)現(xiàn),導(dǎo)致浮點(diǎn)除法速度高于整數(shù)除法2022/7/2711Alpha (DEC)與它的前輩RISC一樣,沒有預(yù)先考慮可能的壓縮指令集擴(kuò)展,因此沒有足夠的操作碼空間來進(jìn)行更新ISA包含有條件的移動(dòng),這使得微架構(gòu)與寄存器重命名復(fù)雜化cmoveq R1, R2, R3 (if R1=0 R2 = R3) a = max (a, b) if (a= b) c = a; else c=b; 使用商業(yè)Alpha ISAs的一個(gè)重要風(fēng)險(xiǎn):它們可能會(huì)被摒棄??蛋卦谏鲜兰o(jì)90年代末收購了搖搖欲墜的DEC后不久,他們選擇逐步淘汰Alpha,轉(zhuǎn)而采用英特爾的安騰架構(gòu)。康柏將A

12、lpha的知識(shí)產(chǎn)權(quán)出售給了英特爾,此后不久,惠普收購了康柏,并在2004年完成了Alpha的最終實(shí)現(xiàn)2022/7/2712ARMv7 (Advanced RISC Machine)32位 RISC ISA目前世界上使用最廣的體系結(jié)構(gòu)。當(dāng)我們權(quán)衡是否要設(shè)計(jì)自己的指令集時(shí),ARMv7是一個(gè)自然的選擇,大量的軟件已經(jīng)被移植到該ISA上,而且它在嵌入式和移動(dòng)設(shè)備中無處不在。是一個(gè)封閉的標(biāo)準(zhǔn),剪裁或擴(kuò)充是不允許的,即使是微架構(gòu)的創(chuàng)新也僅限于那些能夠獲得ARM所稱的架構(gòu)許可的人ARMv7十分龐大復(fù)雜。整型類指令600+條即使知識(shí)產(chǎn)權(quán)不是問題,它仍然存在一些技術(shù)缺陷不支持64位地址, ISA缺乏硬件支持IE

13、EE754-2008標(biāo)準(zhǔn)( ARMv8 糾正了這些缺陷)特權(quán)體系結(jié)構(gòu)的細(xì)節(jié)滲透到用戶級(jí)體系結(jié)構(gòu)的定義中2022/7/2713ARMv7 (Advanced RISC Machine)ARMv7附帶一個(gè)壓縮ISA,具有固定寬度的16位指令,稱為Thumb。Thumb雖然提供了有競爭力的代碼尺寸,但性能較差Thumb-2 雖然提供了較高的性能,但32位的Thumb-2編碼方式與基本的ISA編碼方式不同,16位的Thumb-2的編碼方式與基本的16位編碼方式也不同。導(dǎo)致譯碼器需要理解三種編碼格式,使得能耗、延遲以及設(shè)計(jì)成本增加ISA中包含了許多實(shí)現(xiàn)復(fù)雜的特性。程序計(jì)數(shù)器(PC)是可尋址寄存器之一,這

14、意味著幾乎任何指令都可以改變控制流。更糟糕的是,程序計(jì)數(shù)器的最低有效位反映ISA當(dāng)前正在執(zhí)行(ARM或Thumb)哪個(gè)ISA簡單的ADD指令可以更改ISA當(dāng)前在處理器上執(zhí)行的指令!分支使用條件碼以及謂詞指令進(jìn)一步使高性能實(shí)現(xiàn)復(fù)雜化。2022/7/2714ARMv82011年,ARM發(fā)布新的ISA ARMv864位地址; 擴(kuò)展了整型寄存器組;32位指令。摒棄了ARMv7中實(shí)現(xiàn)復(fù)雜的一些特性PC不再能直接訪問;不再有謂詞指令刪除了load-multiple和store-multiple 指令指令編碼歸一化主要問題使用條件碼 (比以前少了很多)存在許多特殊的寄存器 (zero, PC, sp, pr

15、ogram status registers ,etc)2022/7/2715ARMv8增加了一些缺陷,包括大量的subword-SIMD架構(gòu)指令集更加厚重:1070條指令,53種格式,8種尋址方式。說明文檔達(dá)到了5778頁與其他大多數(shù)ISA一樣,通常以暴露底層實(shí)現(xiàn)的方式將用戶和特權(quán)架構(gòu)緊密地結(jié)合在一起此外,隨著ARMv8的引入,ARM不再支持壓縮指令編碼最后,和它的以前版本一樣,ARMv8也是一個(gè)封閉的標(biāo)準(zhǔn)2022/7/2716OpenRISCOpenRISC項(xiàng)目是一個(gè)開放源碼處理器設(shè)計(jì)項(xiàng)目來源于Hennessy和Patterson的體系結(jié)構(gòu)教科書。適用于教學(xué)、科研和工業(yè)界的實(shí)現(xiàn)。主要問題

16、(Pease read https:/2014/10/why-not-build-on-openrisc/) OpenRISC項(xiàng)目主要是開源處理器設(shè)計(jì)項(xiàng)目,而不是開源的ISA 規(guī)格說明,ISA和實(shí)現(xiàn)是緊密耦合的固定的32位編碼與16位立即數(shù)阻礙了壓縮ISA擴(kuò)展沒有64位的支持Delay slots不能支持壓縮指令值得一提的是:2010年這兩個(gè)問題都得到了解決:延遲插槽已經(jīng)成為可選的,64位版本已經(jīng)定義(但是,據(jù)我們所知,從未實(shí)現(xiàn)過)。最終,我們(UCB)認(rèn)為最好從頭開始,而不是相應(yīng)地修改OpenRISC。2022/7/2717在過去的四十年里,英特爾的8086架構(gòu)已經(jīng)成為筆記本電腦、臺(tái)式機(jī)和服

17、務(wù)器市場上最流行的指令集。在嵌入式系統(tǒng)領(lǐng)域之外,幾乎所有流行的軟件都被移植到x86上,或者是為x86開發(fā)的它受歡迎的原因有很多:該架構(gòu)在IBM PC誕生之初的偶然可用性; 英特爾專注于二進(jìn)制兼容性; 它們積極的卓有成效的微結(jié)構(gòu)實(shí)現(xiàn); 以及他們的前沿制造技術(shù)指令集設(shè)計(jì)質(zhì)量并不是它流行的原因之一。主要問題:1300條指令,許多尋址方式,很多特殊寄存器,多種地址翻譯方式,從AMD K5微架構(gòu)開始,所有的Intel支持亂序執(zhí)行的微結(jié)構(gòu),都是動(dòng)態(tài)地將x86指令翻譯為內(nèi)部的RISC-風(fēng)格的指令集。ISA不利于虛擬化,因?yàn)橐恍┨貦?quán)指令在用戶模式下會(huì)無聲地失敗,而不是被捕獲。VMware的工程師們用復(fù)雜的動(dòng)態(tài)

18、二進(jìn)制翻譯軟件解決了這一缺陷ISA的指令長度為任意整數(shù)字節(jié)數(shù),最多為15個(gè)字節(jié),但是數(shù)量較少的短操作碼已經(jīng)被隨意使用80 x862022/7/2718ISA有數(shù)量極少的寄存器組大多數(shù)整數(shù)寄存器在ISA中執(zhí)行特殊功能,這加劇了體系結(jié)構(gòu)寄存器的不足一些ISA特性,包括隱式條件代碼和帶有謂詞的移動(dòng)操作,在微架構(gòu)中實(shí)現(xiàn)復(fù)雜這些ISA決策對(duì)靜態(tài)代碼大小有深刻的影響。盡管存在所有這些缺陷,x86通常比RISC體系結(jié)構(gòu)使用更少的動(dòng)態(tài)指令完成相同的功能,因?yàn)閤86指令可以編碼多個(gè)基本操作。最后,80 x86是一個(gè)專有指令集80 x862022/7/2719ISASummary2022/7/2720MIPSSP

19、ARCAlphaARMv7ARMv8OpenRISC80 x86Free and Open64-bit AddressCompressed InstructionsPartialSeparate Privileged ISAPosition-Indep. CodePartialIEEE 754-2008Classically VirtualizableISA的功能設(shè)計(jì)CISC vs RISC2022/7/2721ISA的功能設(shè)計(jì)任務(wù):確定硬件支持哪些操作方法:統(tǒng)計(jì)的方法兩種類型:CISC和RISCCISC(Complex Instruction Set Computer)目標(biāo):強(qiáng)化指令功能,減

20、少運(yùn)行的指令條數(shù),提高系統(tǒng)性能方法:面向目標(biāo)程序的優(yōu)化,面向高級(jí)語言和編譯器的優(yōu)化RISC(Reduced Instruction Set Computer)目標(biāo):通過簡化指令系統(tǒng),用高效的方法實(shí)現(xiàn)最常用的指令方法:充分發(fā)揮流水線的效率,降低(優(yōu)化)CPI2022/7/2722CISC計(jì)算機(jī)ISA的功能設(shè)計(jì)目標(biāo):強(qiáng)化指令功能,減少指令條數(shù),以提高系統(tǒng)性能基本優(yōu)化方法 1. 面向目標(biāo)程序的優(yōu)化是提高計(jì)算機(jī)系統(tǒng)性能最直接方法優(yōu)化目標(biāo)縮短程序的長度縮短程序的執(zhí)行時(shí)間優(yōu)化方法統(tǒng)計(jì)分析目標(biāo)程序執(zhí)行情況,找出使用頻度高,執(zhí)行時(shí)間長的指令或指令串優(yōu)化使用頻度高的指令用新的指令代替使用頻度高的指令串2022/

21、7/2723優(yōu)化目標(biāo)程序的主要途徑(1/2)1)增強(qiáng)運(yùn)算型指令的功能如sin(x), cos(x), SQRT(X),甚至多項(xiàng)式計(jì)算如用一條三地址指令完成P(X) = C(0)+C(1)X+C(2)X2+C(3)X3+.2) 增強(qiáng)數(shù)據(jù)傳送類指令的功能主要是指數(shù)據(jù)塊傳送指令R-R, R-M, M-M之間的數(shù)據(jù)塊傳送可有效的支持向量和矩陣運(yùn)算,如IBM370R-Stack之間設(shè)置數(shù)據(jù)塊傳送指令,能夠在程序調(diào)用和程序中斷時(shí),快速保存和恢復(fù)程序現(xiàn)場,如 VAX-112022/7/2724優(yōu)化目標(biāo)程序的主要途徑(2/2)3) 增強(qiáng)程序控制指令的功能在CISC中,一般均設(shè)置了多種程序控制指令,正常僅需要轉(zhuǎn)

22、移指令和子程序控制指令2. 面向高級(jí)語言和編譯程序改進(jìn)指令系統(tǒng)優(yōu)化目標(biāo):主要是縮小HL-ML之間的差距優(yōu)化方法:1)增強(qiáng)面向HL和Compiler支持的指令功能統(tǒng)計(jì)分析源程序中各種語句的使用頻度和執(zhí)行時(shí)間增強(qiáng)相關(guān)指令的功能,優(yōu)化使用頻度高、執(zhí)行時(shí)間長的語句增加專門指令,以縮短目標(biāo)程序長度,減少目標(biāo)程序執(zhí)行時(shí)間,縮短編譯時(shí)間2022/7/2725FORTRAN語言和COBOL語言中各種主要語句的使用頻度觀察結(jié)果:(1)一元賦值在其中比例最大,增強(qiáng)數(shù)據(jù)傳送類指令功能,縮短這類指令的執(zhí)行時(shí)間是對(duì)高級(jí)語言非常有力的支持,(2)其他賦值語句中,增1操作比例較大,許多機(jī)器都有專門的增1指令(3)條件轉(zhuǎn)移和

23、無條件轉(zhuǎn)移占22,38.2%,因此增強(qiáng)轉(zhuǎn)移指令的功能,增加轉(zhuǎn)移指令的種類是必要的2022/7/2726語言一元賦值其他賦值IFGOTOI/ODOCALL其他FORTRAN31.015.011.56.015.0COBOL42.17.5怎么算出來的? 2)高級(jí)語言計(jì)算機(jī)系統(tǒng)縮小HL和ML的差別時(shí),走到極端,就是把HL和ML合二為一,即所謂的高級(jí)語言計(jì)算機(jī)。在這種機(jī)器中,高級(jí)語言不需要經(jīng)過編譯,直接由機(jī)器硬件來執(zhí)行。如LISP機(jī),PROLOG機(jī)3)支持操作系統(tǒng)的優(yōu)化實(shí)現(xiàn)些特權(quán)指令任何一種計(jì)算機(jī)系統(tǒng)通常需要操作系統(tǒng),而OS又必須用指令系

24、統(tǒng)來實(shí)現(xiàn),指令系統(tǒng)對(duì)OS的支持主要有處理器工作狀態(tài)和訪問方式的轉(zhuǎn)換進(jìn)程的管理和切換存儲(chǔ)管理和信息保護(hù)進(jìn)程同步和互斥,信號(hào)量的管理等2022/7/2727RISC的定義和特點(diǎn)RISC是一種計(jì)算機(jī)體系結(jié)構(gòu)的設(shè)計(jì)思想,它不是一種產(chǎn)品。RISC是近代計(jì)算機(jī)體系結(jié)構(gòu)發(fā)展史中的一個(gè)里程碑,直到現(xiàn)在,RISC沒有一個(gè)確切的定義早期對(duì)RISC特點(diǎn)的描述大多數(shù)指令在單周期內(nèi)完成采用Load/Store結(jié)構(gòu)硬布線控制邏輯減少指令和尋址方式的種類固定的指令格式注重代碼的優(yōu)化從目前的發(fā)展看,RISC體系結(jié)構(gòu)還應(yīng)具有如下特點(diǎn):面向寄存器結(jié)構(gòu)十分重視流水線的執(zhí)行效率盡量減少斷流重視優(yōu)化編譯技術(shù)減少指令平均執(zhí)行周期數(shù) CP

25、I 是RISC思想的精華2022/7/2728問題RISC的指令系統(tǒng)精簡了,CISC中的一條指令可能由一串指令才能完成,那么為什么RISC執(zhí)行程序的速度比CISC還要快? ExecuteTime = CPI X IC X T IC CPI TCISC 1 215 33ns5nsRISC 1.31.4 1.11.4 10ns2nsIC : 實(shí)際統(tǒng)計(jì)結(jié)果,RISC的IC只比CISC 長3040%CPI: CISC CPI一般在46之間,RISC 一般CPI =1 , Load/Store 為2 T: RISC采用硬布線邏輯,指令要完成的功能比較簡單2022/7/2729RISC為什么會(huì)減少CPI硬

26、件方面:硬布線控制邏輯減少指令和尋址方式的種類使用固定格式采用Load/Store指令執(zhí)行過程中設(shè)置多級(jí)流水線。軟件方面:十分強(qiáng)調(diào)優(yōu)化編譯的作用2022/7/2730小結(jié) ISA的功能設(shè)計(jì):任務(wù)為確定硬件支持哪些操作。方法是統(tǒng)計(jì)的方法。存在CISC和RISC兩種類型CISC(Complex Instruction Set Computer)目標(biāo):強(qiáng)化指令功能,減少指令的指令條數(shù),以提高系統(tǒng)性能基本方法:面向目標(biāo)程序的優(yōu)化,面向高級(jí)語言和編譯器的優(yōu)化RISC(Reduced Instruction Set Computer)目標(biāo):通過簡化指令系統(tǒng),用最高效的方法實(shí)現(xiàn)最常用的指令主要手段:充分發(fā)揮

27、流水線的效率,降低(優(yōu)化)CPI控制轉(zhuǎn)移類指令指令編碼(指令格式)2022/7/2731ISA的演進(jìn)2022/7/2732UC Berkeley 設(shè)計(jì)的第5代RISC指令集設(shè)計(jì)理念(指導(dǎo)思想):通用的ISA能適應(yīng)從最袖珍的嵌入式控制器,到最快的高性能計(jì)算機(jī)等各種規(guī)模的處理器。能兼容各種流行的軟件棧和編程語言。適應(yīng)所有實(shí)現(xiàn)技術(shù),包括現(xiàn)場可編程門陣列(FPGA)、專用集成電路(ASIC)、全定制芯片,甚至未來的技術(shù)。對(duì)所有微體系結(jié)構(gòu)實(shí)現(xiàn)方式都有效。例如:微編碼或硬連線控制;順序或亂序執(zhí)行流水線;單發(fā)射或超標(biāo)量等等。支持廣泛的定制化,成為定制加速器的基礎(chǔ)。隨著摩爾定律的消退,加速器的重要性日益提高。

28、基礎(chǔ)的指令集架構(gòu)是穩(wěn)定的。不能像以前的專有指令集架構(gòu)一樣被棄用,例如AMD Am29000、Digital Alpha、Digital VAX、Hewlett Packard PA-RISC、Intel i860、Intel i960、Motorola 88000、以及Zilog Z8000。完全開源RISC-V ISA2022/7/2733技術(shù)目標(biāo)將ISA分成基礎(chǔ)ISA和可選的擴(kuò)展部分ISA的基礎(chǔ)足夠簡單,可以用于教學(xué)和許多嵌入式處理器,包括定制加速器的控制單元。它足夠完整,可以運(yùn)行現(xiàn)代軟件棧。擴(kuò)展部分提高計(jì)算的性能,并支持多處理機(jī)并行支持32位和64位地址空間方便定制ISA擴(kuò)展包括緊耦合功

29、能單元和松耦合協(xié)處理器支持變長指令集擴(kuò)展既為了提高代碼密度,也為了擴(kuò)展可能的自定義ISA擴(kuò)展的空間提供對(duì)現(xiàn)代標(biāo)準(zhǔn)的有效硬件支持用戶級(jí)ISA和特權(quán)級(jí)ISA是正交的(相互獨(dú)立,互不依賴)在保持用戶應(yīng)用程序二進(jìn)制接口(ABI)兼容性的同時(shí),允許完全虛擬化,并允許在特權(quán)ISA中進(jìn)行實(shí)驗(yàn)測試2022/7/2734RISC-V ISA的特點(diǎn)完全開源:它屬于一個(gè)開放的,非營利性質(zhì)的RISC-V基金會(huì)。開源采用BSD協(xié)議(企業(yè)完全自由免費(fèi)使用,允許企業(yè)添加自有指令而不必開放共享以實(shí)現(xiàn)差異化發(fā)展)架構(gòu)簡單沒有針對(duì)某一種微體系結(jié)構(gòu)實(shí)現(xiàn)方式做過度的架構(gòu)設(shè)計(jì)新的指令集,沒有向后(backward)兼容的包袱說明書的頁

30、數(shù).(圖1.6)模塊化的指令集架構(gòu)RV32I和RV64I是基礎(chǔ)的ISA。可擴(kuò)展增加其他特性的支持面向教育或科研,易于擴(kuò)充或剪裁支持32位和64位地址空間面向多核并行2022/7/2735RISC-V子集命名約定2022/7/2736RV32 處理器狀態(tài)2022/7/273732x32-bit 整型數(shù)寄存器 (x0-x31)x0 總是 0原則上其他寄存器可以通用不過software convention如右圖所示可支持變長指令基礎(chǔ)指令集 (RV32) 總是固定的32-bit指令(lowest two bits = 112)所有的條件轉(zhuǎn)移和無條件轉(zhuǎn)移的轉(zhuǎn)移地址16-bit對(duì)齊RISC-V 指令編碼

31、2022/7/2738RV32I 指令格式2022/7/2739Destination Reg.Reg. Source 1Reg. Source 27-bit opcode field (but low 2 bits =112)Additional opcode bits/immediateRV32I Integer-Immediate (I)2022/7/2740ADDI adds the sign-extended 12-bit immediate to register rs1. Arithmetic overflow is ignored and the result is simpl

32、y the low XLEN bits of the result. ADDI rd, rs1, 0 is used to implement the MV rd, rs1 assembler pseudo-instruction.RV32I Integer-Immediate (I)2022/7/2741Shifts by a constant are encoded as a specialization of the I-type format. The operand to be shifted is in rs1, and the shift amount is encoded in

33、 the lower 5 bits of the I-immediate field. The right shift type is encoded in bit 30. SLLI is a logical left shift (zeros are shifted into the lower bits);SRLI is a logical right shift (zeros are shifted into the upper bits); SRAI is an arithmetic right shift (the original sign bit is copied into t

34、he vacated upper bits).RV32I Register-Register (R)2022/7/2742ADD performs the addition of rs1 and rs2. SUB performs the subtraction of rs2 from rs1. Overflows are ignored and the low XLEN bits of results are written to the destination rd. SLT and SLTU perform signed and unsigned compares respectivel

35、y, writing 1 to rd if rs1 rs2, 0 otherwise. AND, OR, and XOR perform bitwise logical operations. SLL, SRL, and SRA perform logical left, logical right, and arithmetic right shifts on the value in register rs1 by the shift amount held in the lower 5 bits of register rs2.RV32I Unconditional Jump (J)20

36、22/7/2743Plain unconditional jumps (assembler pseudoinstruction J) are encoded as a JAL with rd=x0.The jump and link (JAL) instruction uses the J-type format, where the J -immediate encodes a signed offset in multiples of 2 bytes. The offset is sign-extended and added to the address of the jump inst

37、ruction to form the jump target address. Jumps can therefore target a 1 MiB range.Position Independent!RV32I Indirect Jump (I)2022/7/2744The indirect jump instruction JALR (jump and link register) uses the I-type encoding. The target address is obtained by adding the sign-extended 12-bit I-immediate

38、 to the register rs1, then setting the least-significant bit of the result to zero. The address of the instruction following the jump (pc+4) is written to register rd. Register x0 can be used as the destination if the result is not required.No architecturally visible delay slots!RV32I Conditional Branches (B)2022/7/2745 The 12-bit B-immediate encodes signed offsets in multiples of 2 bytes. The offset

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論