RISC-V-指令集及簡單實現(xiàn)課件_第1頁
RISC-V-指令集及簡單實現(xiàn)課件_第2頁
RISC-V-指令集及簡單實現(xiàn)課件_第3頁
RISC-V-指令集及簡單實現(xiàn)課件_第4頁
RISC-V-指令集及簡單實現(xiàn)課件_第5頁
已閱讀5頁,還剩109頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、計算機體系結(jié)構(gòu)周學國科學技術(shù)大學03/06-review-性能性能度量響應時間 (response time)吞吐率 (Throughput)CPU 執(zhí)行時間 = IC CPI TCPI ( Cycles per Instruction)MIPS = Millions of Instructions Per SecondLatency versus BandwidthLatency指單個任務的執(zhí)行時間,Bandwidth 指單位時間完成的任務量(rate)Latency 的提升滯后于帶寬的提升 (在過去的30年)Amdahls Law 用來度量加速比(speedu

2、p)性能提升受限于任務中可加速部分所占的比例應用于多處理器系統(tǒng)的基本假設:在給定的問題規(guī)模下,研究隨著處理器數(shù)目的增加性能的變化Benchmarks:指一組用于測試的程序比較計算機系統(tǒng)的性能SPEC benchmark : 針對一組應用綜合性能值采用SPEC ratios 的幾何平均2022/7/23203/06-review-能耗/功耗給定負載情況下能耗越少,能效越高, 特別是對電池供電的移動設備。功耗已經(jīng)成為系統(tǒng)設計的重要約束條件之一A chip might be limited to 120 watts (cooling + power supply)Power Consumed = D

3、ynamic Power + Static Power晶體管開和關的切換導致的功耗為動態(tài)功耗由于晶體管靜態(tài)漏電流導致的功耗稱為靜態(tài)功耗通過降低頻率可節(jié)省功耗降低電壓可降低功耗和能耗2022/7/233Recap:指令集架構(gòu)軟件子系統(tǒng)與硬件子系統(tǒng)的關鍵界面一組直接由硬件執(zhí)行的指令,包括程序員可見的機器狀態(tài)程序員可見的指令集合(操作機器狀態(tài)的指令)應具備的特性成本簡潔性架構(gòu)和具體實現(xiàn)分離:可持續(xù)多代,以保持向后(backward) 兼容可擴展空間:可用于不同應用領域(desktops, servers, embedded applications)易于編程/編譯/鏈接:為高層軟件的設計與開發(fā)提供方

4、便的功能性能:方便低層硬件子系統(tǒng)高效實現(xiàn)IBM 360 是第一個將ISA與其實現(xiàn)分離的系列機給定一個ISA,可以有不同的實現(xiàn)方式;例如AMD/Intel CPU 都是X86-64指令集。ARM ISA 也有不同的實現(xiàn)方式2022/7/234instruction setsoftwarehardware用戶級ISA和特權(quán)級ISA重要的系統(tǒng)界面(System Interface)ISA界面(Instruction Set Architecture)ABI界面(Application Binary Interface)ISA:用戶級ISA+特權(quán)級ISA用戶級ISA 適用于操作系統(tǒng)和應用程序特權(quán)級IS

5、A 適用于硬件資源的管理(操作系統(tǒng))2022/7/235ISA的實現(xiàn)ISA 通常設計時會考慮特定的微體系結(jié)構(gòu)(實現(xiàn))方式。Accumulator hardwired, unpipelined (硬布線、非流水)CISC microcoded (微程序)RISC hardwired, pipelined(硬布線、流水線)VLIW fixed-latency in-order parallel pipelines (固定延時、順序執(zhí)行、多條流水線并行)JVM software interpretation(軟件解釋)ISA 理論上可以用任何微體系結(jié)構(gòu)(實現(xiàn))方式Intel Ivy Bridge:

6、hardwired pipelined CISC (x86) machine (with some microcode support) (硬布線流水化(部分微程序支持)Spike: Software-interpreted RISC-V machine (模擬器)ARM Jazelle: A hardware JVM processor2022/7/236Recap:ISA 的演進2022/7/237Recap:ISA必須說明哪些東西?指令格式或編碼方式。即如何編碼?操作數(shù)和操作結(jié)果的存放位置存放位置?多少個顯式操作數(shù)?存儲器操作數(shù)如何定位?哪些操作數(shù)可以或不可以放到存儲器中?尋址方式數(shù)據(jù)類

7、型和大小支持哪些操作下一條指令地址jumps, conditions, branchesfetch-decode-execute is implicit!2022/7/238InstructionFetchInstructionDecodeOperandFetchExecuteResultStoreNextInstructionRecap: 有關ISA的若干問題存儲器尋址操作數(shù)的類型與大小所支持的操作控制轉(zhuǎn)移類指令指令格式2022/7/239Recap: 存儲器尋址80年以來幾乎所有機器的存儲器都是按字節(jié)編址一個存儲器地址可以訪問:一個字節(jié)、2個字節(jié)、4個字節(jié)、更多字節(jié).不同體系結(jié)構(gòu)對字的定義

8、是不同的16位字(Intel X86)32位字(MIPS)如何讀32位字,兩種方案每次一個字節(jié),四次完成;每次一個字,一次完成問題:(1)如何將字節(jié)地址映射到字地址 (尾端問題)(2)一個字是否可以存放在任何字節(jié)邊界上(對齊問題)2022/7/2310Recap: 尾端問題little endian, big endian, 在一個字內(nèi)部的字節(jié)順序問題如地址xxx00指定了一個字(int), 存儲器中從xxx00處連續(xù)存放ffff0000, 則有兩種方式:Little endian 方式下xxx00位置是字的最低字節(jié),整數(shù)值為0000ffff, Intel 80 x86, DEC Vax, D

9、EC Alpha (Windows NT)Big endian 方式下xxx00位置是字的最高字節(jié),整數(shù)值為ffff0000, IBM 360/370, Motorola 68k, MIPS, Sparc, HP PA2022/7/2311Recap: 對齊問題對s字節(jié)的對象訪問地址為A,如果A mod s =0 稱為邊界對齊。邊界對齊的原因是存儲器本身讀寫的要求,存儲器本身讀寫通常就是邊界對齊的,對于不是邊界對齊的對象的訪問可能要導致存儲器的兩次訪問,然后再拼接出所需要的數(shù)。(或發(fā)生異常)2022/7/2312Recap: 尋址方式尋址方式:如何說明要訪問的對象地址有效地址:由尋址方式說明的

10、某一存儲單元的實際存儲器地址。有效地址 vs. 物理地址2022/7/2313各種尋址方式的使用情況? (忽略寄存器直接尋址)2022/7/2314三個SPEC89程序在VAX結(jié)構(gòu)上的測試結(jié)果: 立即尋址,偏移尋址使用較多偏移尋址主要問題:偏移的范圍(偏移量的大?。?022/7/2315Alpha Architecture with full optimization for Spec CPU2000, showing the average of integer programs(CINT2000) and the average of floating-point programs (CF

11、P2000)立即數(shù)尋址2022/7/2316Alpha Architecture with full optimization for Spec CPU2000, showing the average of integer programs(CINT2000) and the average of floating-point programs (CFP2000)立即數(shù)的大小2022/7/2317The distribution of immediate values. About 20% were negative for CINT2000 and about 30% were negat

12、ive for CFP2000. These measurements were taken on a Alpha, where the maximum immediate is 16 bits, for the spec cpu2000 programs. A similar measurement on the VAX, which supported 32-bit immediates, showed that about 20% to 25% of immediates were longer than 16 bits.尋址方式小結(jié) 重要的尋址方式:偏移尋址方式, 立即數(shù)尋址方式, 寄

13、存器間址方式SPEC測試表明,使用頻度達到 75%-99% 偏移字段的大小應該在 12 - 16 bits可滿足75%-99%的需求 立即數(shù)字段的大小應該在 8 -16 bits可滿足50%-80%的需求2022/7/2318操作數(shù)的類型、表示和大小操作數(shù)類型和操作數(shù)表示是軟硬件的主要界面之一。操作數(shù)類型:是面向應用、面向軟件系統(tǒng)所處理的各種數(shù)據(jù)類型。整型、浮點型、字符、字符串、向量類型等類型由操作碼確定或數(shù)據(jù)附加硬件解釋的標記,一般采用由操作碼確定數(shù)據(jù)附加硬件解釋的標記,現(xiàn)在已經(jīng)不采用操作數(shù)的表示:操作數(shù)在機器中的表示,硬件結(jié)構(gòu)能夠識別,指令系統(tǒng)可以直接使用的表示格式整型:原碼、反碼、補碼浮

14、點:IEEE 754標準十進制:BCD碼/二進制十進制表示2022/7/2319常用操作數(shù)類型ASCII character = 1 byte (64-bit register can store 8 charactersUnicode character or Short integer = 2 bytes = 16 bits (half word) Integer = 4 bytes = 32 bits (word size on many RISC Processors)Single-precision float = 4 bytes = 32 bits (word size)Long

15、integer = 8 bytes = 64 bits (double word)Double-precision float = 8 bytes = 64 bits (double word)Extended-precision float = 10 bytes = 80 bits (Intel architecture)Quad-precision float = 16 bytes = 128 bits2022/7/2320操作數(shù)的大小2022/7/2321基準測試的結(jié)論:(1)對單字、雙字的數(shù)據(jù)訪問具有較高的頻率(2)支持64位雙字操作,更具有一般性小結(jié):指令集架構(gòu)ISA需考慮的問題Cl

16、ass of ISAMemory addressingTypes and sizes of operandsOperationsControl flow instructionsEncoding an ISAISA的類型通用寄存器型占主導地位尋址方式重要的尋址方式: 偏移尋址方式, 立即數(shù)尋址方式, 寄存器間址方式SPEC測試表明,使用頻度達到 75%-99%偏移字段的大小應該在 12 - 16 bits, 可滿足75%-99%的需求立即數(shù)字段的大小應該在 8 -16 bits, 可滿足50%-80%的需求操作數(shù)的類型和大小對單字、雙字的數(shù)據(jù)訪問具有較高的頻率支持64位雙字操作,更具有一般性2

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

18、轉(zhuǎn)移問題導致超標量等復雜流水線的實現(xiàn)難度,當無法有效填充延遲槽時會導致代碼尺寸變大MIPS-I中暴露出其他流水線沖突(load、乘除引起的沖突)采用簡單的Interlocking 簡單又高效,但為了保持兼容性,仍然保留了延遲轉(zhuǎn)移ISA對位置無關的代碼(position-independent code, PIC)支持不足。直接跳轉(zhuǎn)沒有提供PC相對尋址,需要通過間接跳轉(zhuǎn)方式實現(xiàn)PIC,增加了代碼尺寸,降低了性能2014年MIPS的修訂,改進了PC-相對尋址(針對數(shù)據(jù)),但仍然要多條指令才能完成16位位寬立即數(shù)消耗了大量編碼空間,只有少量的編碼空間可供擴展指令2014修訂版,保存有1/64的編碼空

19、間供擴展架構(gòu)師如果想采用壓縮指令編碼來降低代碼空間,就不得不采用新的指令編碼乘除指令使用了特殊的寄存器(HI,LO),導致上下文切換內(nèi)容、指令條數(shù)、代碼尺寸增加,微架構(gòu)實現(xiàn)復雜2022/7/2324ISA假設浮點操作部件是一個獨立的協(xié)處理器,使得單芯片實現(xiàn)無法最優(yōu)例如,整型數(shù)與浮點數(shù)的轉(zhuǎn)換結(jié)果寫到浮點數(shù)寄存器,使用結(jié)果時,需要額外的mov指令,更糟糕的是浮點數(shù)寄存器文件與整型數(shù)寄存器文件之間的傳輸,需要有顯式的延遲槽在標準的ABI中,保留兩個整型寄存器用于內(nèi)核程序,減少了用戶程序可用的寄存器數(shù)使用特殊指令處理未對齊的load和store會消耗大量的操作碼空間,并使除了最簡單的實現(xiàn)之外的其他實現(xiàn)

20、復雜化。時鐘速率/CPI 的權(quán)衡使得架構(gòu)師省略了整數(shù)大小比較和分支指令。隨著分支預測和靜態(tài)CMOS邏輯的出現(xiàn),這種權(quán)衡在今天已經(jīng)不太合適了。除了技術(shù)方面,MIPS是非開放的專屬指令集,不能自由使用2022/7/2325SPARCSun Microsystems的專屬指令集可追溯到Berkeley RISC-I和RISC-II項目 ; 最近的32位版本的ISA SPARC V8SPARC V8 主要特征用戶級 整型ISA 90條指令; 硬件支持IEEE 754-1985標準的浮點數(shù)(50條) ;特權(quán)級指令 20條主要問題SPARC使用了寄存器窗口來加速函數(shù)調(diào)用當函數(shù)調(diào)用所需的??臻g超過了窗口的寄

21、存器數(shù),性能會急劇下降。對于所有的實現(xiàn)來說,寄存器窗口都消耗很大的面積和功耗分支使用條件碼這些條件碼由于在一些指令之間創(chuàng)建了額外的依賴關系,增加了體系結(jié)構(gòu)狀態(tài)并使實現(xiàn)復雜化load和store相鄰寄存器對的指令對于簡單的微體系結(jié)構(gòu)很有吸引力,可以在很少增加硬件復雜性的情況下提高吞吐量。遺憾的是當使用寄存器重命名使實現(xiàn)復雜化,因為在寄存器文件中數(shù)據(jù)在物理上可能不再相鄰浮點寄存器文件和整數(shù)寄存器文件之間的移動必須使用內(nèi)存系統(tǒng)作為中介,限制了系統(tǒng)性能2022/7/2326SPARCISA通過體系結(jié)構(gòu)公開的延遲陷阱隊列支持非精確浮點異常,該隊列向系統(tǒng)監(jiān)控程序提供信息,以恢復此類異常上的處理器狀態(tài)唯一的

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

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

24、記和默認值(如果需要的話)必須由軟件例程提供。Alpha缺少整數(shù)除法指令,建議使用軟件牛頓迭代法實現(xiàn),導致浮點除法速度高于整數(shù)除法2022/7/2328與它的前輩RISC一樣,沒有預先考慮可能的壓縮指令集擴展,因此沒有足夠的操作碼空間來進行更新ISA包含有條件的移動,這使得微架構(gòu)與寄存器重命名復雜化如果移動條件不滿足,指令仍然必須將舊值復制到新的物理目標寄存器中。這實際上使條件移動成為ISA中惟一讀取三個源操作數(shù)的指令。實際上,DEC的第一個亂序執(zhí)行的實現(xiàn)使用了一些技巧來避免該指令的額外數(shù)據(jù)路徑。 Alpha 21264通過將條件移動指令分解為兩個微操作來執(zhí)行,第一個微操作評估移動條件,第二個

25、微操作執(zhí)行移動。這種方法還要求物理寄存器文件加寬一位以保存中間結(jié)果使用商業(yè)Alpha ISAs的一個重要風險:它們可能會被摒棄。康柏在上世紀90年代末收購了搖搖欲墜的DEC后不久,他們選擇逐步淘汰Alpha,轉(zhuǎn)而采用英特爾的安騰架構(gòu)??蛋貙lpha的知識產(chǎn)權(quán)出售給了英特爾,此后不久,惠普收購了康柏,并在2004年完成了Alpha的最終實現(xiàn)2022/7/2329ARMv732位 RISC ISA目前世界上使用最廣的體系結(jié)構(gòu)。當我們權(quán)衡是否要設計自己的指令集時,ARMv7是一個自然的選擇,大量的軟件已經(jīng)被移植到該ISA上,而且它在嵌入式和移動設備中無處不在。是一個封閉的標準,剪裁或擴充是不允許的

26、,即使是微架構(gòu)的創(chuàng)新也僅限于那些能夠獲得ARM所稱的架構(gòu)許可的人ARMv7十分龐大復雜。整型類指令600+條即使知識產(chǎn)權(quán)不是問題,它仍然存在一些技術(shù)缺陷不支持64位地址, ISA缺乏硬件支持IEEE754-2008標準( ARMv8 糾正了這些缺陷)特權(quán)體系結(jié)構(gòu)的細節(jié)滲透到用戶級體系結(jié)構(gòu)的定義中2022/7/2330ARMv7附帶一個壓縮ISA,具有固定寬度的16位指令,稱為Thumb。Thumb雖然提供了有競爭力的代碼尺寸,但性能較差Thumb-2 雖然提供了較高的性能,但32位的Thumb-2編碼方式與基本的ISA編碼方式不同,16位的Thumb-2的編碼方式與基本的16位編碼方式也不同。

27、導致譯碼器需要理解三種編碼格式,使得能耗、延遲以及設計成本增加ISA中包含了許多實現(xiàn)復雜的特性。程序計數(shù)器是可尋址寄存器之一,這意味著幾乎任何指令都可以改變控制流。更糟糕的是,程序計數(shù)器的最低有效位反映ISA當前正在執(zhí)行(ARM或Thumb)哪個ISA簡單的ADD指令可以更改ISA當前在處理器上執(zhí)行的指令!分支使用條件碼以及謂詞指令進一步使高性能實現(xiàn)復雜化。2022/7/2331ARMv82011年,ARM發(fā)布新的ISAARMv864位地址; 擴展了整型寄存器組。摒棄了ARMv7中實現(xiàn)復雜的一些特性PC不再是整形寄存器組的成員;不再有謂詞指令刪除了load-multiple和store-mul

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

29、OpenRISC項目主要是開源處理器設計項目,而不是開源的ISA 規(guī)格說明,ISA和實現(xiàn)是緊密耦合的固定的32位編碼與16位立即數(shù)阻礙了壓縮ISA擴展硬件不支持IEEE 754-2008標準用于分支和條件轉(zhuǎn)移的條件碼使高性能實現(xiàn)復雜化ISA對位置無關的尋址方式支持較弱OpenRISC不利于虛擬化。從異常返回的指令L.RFE,定義為在用戶模式下功能,而不是捕獲值得一提的是:2010年這兩個問題都得到了解決:延遲插槽已經(jīng)成為可選的,64位版本已經(jīng)定義(但是,據(jù)我們所知,從未實現(xiàn)過)。最終,我們(UCB)認為最好從頭開始,而不是相應地修改OpenRISC。2022/7/2334在過去的四十年里,英特

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

31、不是被捕獲。VMware的工程師們用復雜的動態(tài)二進制翻譯軟件解決了這一缺陷ISA的指令長度為任意整數(shù)字節(jié)數(shù),最多為15個字節(jié),但是數(shù)量較少的短操作碼已經(jīng)被隨意使用80 x862022/7/2335ISA有數(shù)量極少的寄存器組大多數(shù)整數(shù)寄存器在ISA中執(zhí)行特殊功能,這加劇了體系結(jié)構(gòu)寄存器的不足更糟糕的是,大多數(shù)x86指令只有一種破壞性的指令格式,它會覆蓋其中一個源操作數(shù)一些ISA特性,包括隱式條件代碼和帶有謂詞的移動操作,在微架構(gòu)中實現(xiàn)復雜這些ISA決策對靜態(tài)代碼大小有深刻的影響。盡管存在所有這些缺陷,x86通常比RISC體系結(jié)構(gòu)使用更少的動態(tài)指令完成相同的功能,因為x86指令可以編碼多個基本操作

32、。最后,80 x86是一個專有指令集2022/7/2336ISASummary2022/7/2337MIPSSPARCAlphaARMv7ARMv8OpenRISC80 x86Free and Open64-bit AddressCompressed InstructionsPartialSeparate Privileged ISAPosition-Indep. CodePartialIEEE 754-2008Classically Virtualizable03/11:指令集架構(gòu)ISA需考慮的問題Class of ISAMemory addressingTypes and sizes of

33、 operandsOperationsControl flow instructionsEncoding an ISAISA的類型通用寄存器型占主導地位尋址方式重要的尋址方式: 偏移尋址方式, 立即數(shù)尋址方式, 寄存器間址方式SPEC測試表明,使用頻度達到 75%-99%偏移字段的大小應該在 12 - 16 bits, 可滿足75%-99%的需求立即數(shù)字段的大小應該在 8 -16 bits, 可滿足50%-80%的需求操作數(shù)的類型和大小對單字、雙字的數(shù)據(jù)訪問具有較高的頻率支持64位雙字操作,更具有一般性2022/7/2338ISA的操作CISC 指令集結(jié)構(gòu)的功能設計RISC 指令結(jié)構(gòu)的功能設計

34、2022/7/2339典型操作類型 一般計算機都支持前三類所有的操作; 不同計算機系統(tǒng) 對系統(tǒng)支持程度不同,但都支持基本的系統(tǒng)功能。 對最后四類操作的支持程度差別也很大,有些機器不支持,有些機器還在此基礎上做一些擴展,這些指令有時作為可選的指令。2022/7/2340Top 10 80 x86 Instructions2022/7/2341ISA對操作類型的選擇需考慮的因素:速度、價格和靈活性基本要求:指令系統(tǒng)的完整性、規(guī)整性、高效率和兼容性完整性設計:具備基本指令種類兼容性:系列機高效率:指令執(zhí)行速度快、使用頻度高規(guī)整性讓所有運算部件都能對稱、均勻的在所有數(shù)據(jù)存儲單元之間進行操作。對所有數(shù)據(jù)

35、存儲單元都能同等對待,無論是操作數(shù)或運算結(jié)果都可以無約束地存放到任意數(shù)據(jù)存儲單元中正交性數(shù)據(jù)類型獨立于尋址方式尋址方式獨立于所要完成的操作當前對這一問題的處理有兩種截然不同的方向CISC和RISC2022/7/2342CISC計算機ISA的功能設計目標:強化指令功能,減少指令條數(shù),以提高系統(tǒng)性能基本優(yōu)化方法 1. 面向目標程序的優(yōu)化是提高計算機系統(tǒng)性能最直接方法優(yōu)化目標縮短程序的長度縮短程序的執(zhí)行時間優(yōu)化方法統(tǒng)計分析目標程序執(zhí)行情況,找出使用頻度高,執(zhí)行時間長的指令或指令串優(yōu)化使用頻度高的指令用新的指令代替使用頻度高的指令串2022/7/2343優(yōu)化目標程序的主要途徑(1/2)1)增強運算型指

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

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

38、移指令的種類是必要的2022/7/2346語言一元賦值其他賦值IFGOTOI/ODOCALL其他FORTRAN31.015.011.510.56.54.56.015.0COBOL42.17.519.119.18.460.170.173.42)高級語言計算機系統(tǒng)縮小HL和ML的差別時,走到極端,就是把HL和ML合二為一,即所謂的高級語言計算機。在這種機器中,高級語言不需要經(jīng)過編譯,直接由機器硬件來執(zhí)行。如LISP機,PROLOG機3)支持操作系統(tǒng)的優(yōu)化實現(xiàn)些特權(quán)指令任何一種計算機系統(tǒng)通常需要操作系統(tǒng),而OS又必須用指令系統(tǒng)來實現(xiàn),指令系統(tǒng)對OS的支持主要有處理器工作狀態(tài)和訪問方式的轉(zhuǎn)換進程的管理

39、和切換存儲管理和信息保護進程同步和互斥,信號量的管理等2022/7/2347-Review (續(xù))ISA的功能設計任務:確定硬件支持哪些操作方法:統(tǒng)計的方法兩種類型:CISC和RISCCISC(Complex Instruction Set Computer)目標:強化指令功能,減少運行的指令條數(shù),提高系統(tǒng)性能方法:面向目標程序的優(yōu)化,面向高級語言和編譯器的優(yōu)化RISC(Reduced Instruction Set Computer)目標:通過簡化指令系統(tǒng),用高效的方法實現(xiàn)最常用的指令方法:充分發(fā)揮流水線的效率,降低(優(yōu)化)CPI2022/7/2348RISC指令集結(jié)構(gòu)的功能設計采用RISC

40、體系結(jié)構(gòu)的微處理器SUN Microsystem: SPARC, SuperSPARC, Ulta SPARCSGI: MIPS R4000, R5000, R10000,IBM: Power PCIntel: 80860, 80960DEC: AlphaMotorola 88100HP HP300/930系列,950系列ARM,MIPSRISC-V2022/7/2349RISC的定義和特點RISC是一種計算機體系結(jié)構(gòu)的設計思想,它不是一種產(chǎn)品。RISC是近代計算機體系結(jié)構(gòu)發(fā)展史中的一個里程碑,直到現(xiàn)在,RISC沒有一個確切的定義早期對RISC特點的描述大多數(shù)指令在單周期內(nèi)完成采用Load/S

41、tore結(jié)構(gòu)硬布線控制邏輯減少指令和尋址方式的種類固定的指令格式注重代碼的優(yōu)化從目前的發(fā)展看,RISC體系結(jié)構(gòu)還應具有如下特點:面向寄存器結(jié)構(gòu)十分重視流水線的執(zhí)行效率盡量減少斷流重視優(yōu)化編譯技術(shù)減少指令平均執(zhí)行周期數(shù)是RISC思想的精華2022/7/2350問題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 : 實際統(tǒng)計結(jié)果,RISC的IC只比CISC 長30

42、40%CPI: CISC CPI一般在46之間,RISC 一般CPI =1 , Load/Store 為2 T: RISC采用硬布線邏輯,指令要完成的功能比較簡單2022/7/2351RISC為什么會減少CPI硬件方面:硬布線控制邏輯減少指令和尋址方式的種類使用固定格式采用Load/Store指令執(zhí)行過程中設置多級流水線。軟件方面:十分強調(diào)優(yōu)化編譯的作用2022/7/2352控制類指令四種類型的控制流改變:條件分支( Conditional branch) 、跳轉(zhuǎn)(Jump)、過程調(diào)用(Procedure calls)、過程返回(Procedure returns)2022/7/2353Alp

43、ha Architecture with full optimization for Spec CPU2000, showing the average of integer programs(CINT2000) and the average of floating-point programs (CFP2000)控制流類指令中的尋址方式PC-relative 方式 (相對尋址)例如:條件轉(zhuǎn)移說明動態(tài)的轉(zhuǎn)移地址方式(通過寄存器間接跳轉(zhuǎn)): 編譯時不知道目標地址,程序執(zhí)行時動態(tài)確定Case or switch statementsVirtual function or methodsHigh-

44、order functions or function pointersDynamically shared libraries轉(zhuǎn)移地址放到某一寄存器中,通過寄存器間接跳轉(zhuǎn)2022/7/2354轉(zhuǎn)移目標地址與當前指令的距離2022/7/2355Alpha Architecture with full optimization for Spec CPU2000, showing the average of integer programs(CINT2000) and the average of floating-point programs (CFP2000) 建議:PC-relative

45、尋址,偏移地址至少8位分支比較類型比較2022/7/2356Alpha Architecture with full optimization for Spec CPU2000, showing the average of integer programs(CINT2000) and the average of floating-point programs (CFP2000)指令編碼2022/7/2357Variable:Fixed:Hybrid:指令格式選擇策略如果代碼規(guī)模最重要,那么使用變長指令格式 如果性能至關重要,使用固定長度指令 有些嵌入式CPU附加可選模式,由每一應用自己選擇

46、性能還是代碼量窄指令支持更少的操作、更短的地址和立即數(shù)字段、更少的寄存器以及雙地址格式,而不是傳統(tǒng)的RISC計算機的三地址格式例如:RISC-V 的 RV32IC, C表示壓縮表示ARM Thumb , microMIPS有些機器使用邊執(zhí)行邊解壓的方式例如 IBM 的CodePack PowerPC2022/7/2358MIPS 尋址方式/指令格式2022/7/2359 所有指令都是32位寬oprsrtrdimmedregisterRegister (direct)oprsrtregisterBase+index+MemoryimmedoprsrtImmediateimmedoprsrtPCP

47、C-relative+Memory Register Indirect?小結(jié) ISA的功能設計:任務為確定硬件支持哪些操作。方法是統(tǒng)計的方法。存在CISC和RISC兩種類型CISC(Complex Instruction Set Computer)目標:強化指令功能,減少指令的指令條數(shù),以提高系統(tǒng)性能基本方法:面向目標程序的優(yōu)化,面向高級語言和編譯器的優(yōu)化RISC(Reduced Instruction Set Computer)目標:通過簡化指令系統(tǒng),用最高效的方法實現(xiàn)最常用的指令主要手段:充分發(fā)揮流水線的效率,降低(優(yōu)化)CPI控制轉(zhuǎn)移類指令指令編碼(指令格式)2022/7/2360ISA

48、的演進2022/7/2361Recap: MIPS指令集結(jié)構(gòu)MIPS64的一個子集,簡稱為MIPSMIPS的寄存器32個64位通用寄存器(GPRs)R0,R1,R31也被稱為整數(shù)寄存器R0的值永遠是032個64位浮點數(shù)寄存器(FPRs)F0,F(xiàn)1,F(xiàn)31用來存放32個單精度浮點數(shù)(32位),也可以用來存放32個雙精度浮點數(shù)(64位)。存儲單精度浮點數(shù)(32位)時,只用到FPR的一半,其另一半沒用一些特殊寄存器它們可以與通用寄存器交換數(shù)據(jù)。例如,浮點狀態(tài)寄存器用來保存有關浮點操作結(jié)果的信息。2022/7/2362Recap:MIPS的數(shù)據(jù)表示整數(shù)字節(jié)(8位) 半字(16位)字(32位) 雙字(6

49、4位)浮點數(shù)單精度浮點數(shù)(32位) 雙精度浮點數(shù)(64位)字節(jié)、半字或者字在裝入64位寄存器時,用零擴展或者用符號位擴展來填充該寄存器的剩余部分。裝入以后,對它們將按照64位整數(shù)的方式進行運算。2022/7/2363Recap:MIPS的尋址方式立即數(shù)尋址與偏移量尋址立即數(shù)字段和偏移量字段都是16位的。寄存器間接尋址是通過把0作為偏移量來實現(xiàn)的16位絕對尋址是通過把R0(其值永遠為0)作為基址寄存器來完成的MIPS的存儲器是按字節(jié)尋址的,地址為64位所有存儲器訪問都必須是邊界對齊的2022/7/2364Recap:存儲器中的數(shù)據(jù)存放(存儲字長為 32 位)2022/7/2365地址(十進制)

50、0 4 812162024283236雙字雙字(地址32)雙字雙字(地址24)半字(地址20)半字(地址22)半字(地址16)半字(地址18)字節(jié)(地址 8)字節(jié)(地址 9)字節(jié)(地址10)字節(jié)(地址11)字(地址 4)字(地址 0)字節(jié)(地址14) 字節(jié)(地址15)字節(jié)(地址13)字節(jié)(地址12)邊界對準地址(十進制)048字節(jié)( 地址7)字節(jié)( 地址6)字( 地址2)半字( 地址10)半字( 地址8)半字( 地址0)字( 地址4)邊界未對準 Recap:MIPS的指令格式尋址方式編碼到操作碼中所有的指令都是32位的操作碼占6位3種指令格式I類R類J類2022/7/2366Recap:I類指

51、令包括所有的load和store指令、立即數(shù)指令,分支指令、寄存器跳轉(zhuǎn)指令、寄存器鏈接跳轉(zhuǎn)指令。立即數(shù)字段為16位,用于提供立即數(shù)或偏移量。2022/7/2367Recap:具體的I類指令load指令 訪存有效地址:Regsrsimmediate 從存儲器取來的數(shù)據(jù)放入寄存器rtstore指令 訪存有效地址:Regsrsimmediate 要存入存儲器的數(shù)據(jù)放在寄存器rt中立即數(shù)指令 Regsrt Regsrs op immediate分支指令 轉(zhuǎn)移目標地址:Regsrsimmediate,rt無用寄存器跳轉(zhuǎn)、寄存器跳轉(zhuǎn)并鏈接 轉(zhuǎn)移目標地址為Regsrs2022/7/2368Recap:R類指

52、令包括ALU指令、專用寄存器讀/寫指令、move指令等ALU指令 Regsrd Regsrs funct Regsrt func為具體的運算操作編碼2022/7/2369Recap:J類指令包括跳轉(zhuǎn)指令、跳轉(zhuǎn)并鏈接指令、自陷指令、異常返回指令在這類指令中,指令字的低26位是偏移量,它與PC值相加形成跳轉(zhuǎn)的地址2022/7/2370Recap:MIPS的操作2022/7/2371MIPS指令可以分為四大類load和store、ALU操作、分支與跳轉(zhuǎn)、浮點操作符號的意義 xny:從y傳送n位到xx,yz:把z傳送到x和y下標:表示字段中具體的位;對于指令和數(shù)據(jù),按從最高位到最低位(即從左到右)的順

53、序依次編號,最高位為第0位,次高位為第1位,依此類推。下標可以是一個數(shù)字,也可以是一個范圍。例如:RegsR40:R4的符號位;RegsR456.63:R4的最低字節(jié)2022/7/2372Mem:表示主存;按字節(jié)尋址,可以傳輸任意個字節(jié)。上標:用于表示對字段進行復制的次數(shù)。例如:0 32:一個32位長的全0字段符號#:用于兩個字段的拼接,并且可以出現(xiàn)在數(shù)據(jù)傳送的任何一邊。舉例:R8、R10:64位的寄存器,則 RegsR832.63 32(Mem RegsR60)24 # Mem RegsR6 表示的意義是: 以R6的內(nèi)容作為地址訪問內(nèi)存,得到的字節(jié)按符號位擴展為32位后存入R8的低32位,R

54、8的高32位(即RegsR80.31)不變。 Recap:MIPS控制類指令2022/7/2373指令舉例 指令名稱 含義 J name 跳轉(zhuǎn) PC 3663 name2JAL name 跳轉(zhuǎn)并鏈接 RegsR31PC+4;PC 3663nameRISC2022/7/2386RISC-V 指令執(zhí)行階段Instruction FetchInstruction DecodeRegister FetchALU OperationsOptional Memory OperationsOptional Register WritebackCalculate Next Instruction Addres

55、s2022/7/2387處理器設計可以分為datapath和Control設計兩部分datapath, 存儲數(shù)據(jù)、算術(shù)邏輯運算單元control, 控制數(shù)據(jù)通路上的一系列操作控制部分與數(shù)據(jù)通路2022/7/2388早期的計算機設計者的最大挑戰(zhàn)是控制邏輯的正確性Maurice Wilkes 提出了微程序設計的概念來設計處理器的控制邏輯(EDSAC-II, 1958)當時的技術(shù)水平Logic: Vacuum TubesMain Memory: Magnetic coresRead-Only Memory: Diode matrix, punched metal cards, Cost: Logic

56、 RAM ROMSpeed: ROM RAMCondition?ControlMain MemoryAddressDataControl LinesDatapathPCInst. Reg.RegistersALUInstructionBusy?微程序控制RISC-V的單總線數(shù)據(jù)通路2022/7/2389微指令的寄存器傳輸級表示:MA:=PC means RegSel=PC; RegW=0; RegEn=1; MALd=1B:=Regrs2 means RegSel=rs2; RegW=0; RegEn=1; BLd=1Regrd:=A+B means ALUop=Add; ALUEn=1; R

57、egSel=rd; RegW=1Condition?Main MemoryPCRegistersALU32 (PC)rdrs1rs2Register RAMAddressInData OutInstruction Reg.Mem. AddressBAImmediateImmEnRegEnALUEnMemEnALUOpMemWImmSelRegWBLdInstLdMALdALdRegSelBusy?Opcode微程序控制 CPU2022/7/2390DatapathMain Memory(holds user program written in macroinstructions, e.g.,

58、 x86, RISC-V)AddressDataDecoderPCMicrocode ROM(holds fixed code instructions)Next StateControl LinesOpcodeConditionBusy?Microcode示意 (1)Instruction Fetch: MA,A:=PCPC:=A+4wait for memoryIR:=Memdispatch on opcode ALU:A:=Regrs1B:=Regrs2Regrd:=ALUOp(A,B)goto instruction fetchALUI:A:=Regrs1B:=ImmI /Sign-e

59、xtend 12b immediateRegrd:=ALUOp(A,B)goto instruction fetch2022/7/2391Microcode 示意 (2)LW: A:=Regrs1 B:=ImmI /Sign-extend 12b immediateMA:=A+Bwait for memoryRegrd:=Memgoto instruction fetchJAL:Regrd:=A / Store return addressA:=A-4 / Recover original PCB:=ImmJ / Jump-style immediatePC:=A+Bgoto instruct

60、ion fetchBranch:A:=Regrs1B:=Regrs2if (!ALUOp(A,B) goto instruction fetch /Not takenA:=PC /Microcode fall through if branch takenA:=A-4B:=ImmB/ Branch-style immediatePC:=A+Bgoto instruction fetch2022/7/2392采用 ROM 實現(xiàn)微程序控制How many address bits?|address| = |PC|+|opcode|+ 1 + 1How many data bits?|data| =

溫馨提示

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

評論

0/150

提交評論