《計算機系統(tǒng)結(jié)構(gòu)》系統(tǒng)結(jié)構(gòu)2_第1頁
《計算機系統(tǒng)結(jié)構(gòu)》系統(tǒng)結(jié)構(gòu)2_第2頁
《計算機系統(tǒng)結(jié)構(gòu)》系統(tǒng)結(jié)構(gòu)2_第3頁
《計算機系統(tǒng)結(jié)構(gòu)》系統(tǒng)結(jié)構(gòu)2_第4頁
《計算機系統(tǒng)結(jié)構(gòu)》系統(tǒng)結(jié)構(gòu)2_第5頁
已閱讀5頁,還剩75頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、指令集結(jié)構(gòu)的前因和后果小節(jié)章節(jié)名重點內(nèi)容2.1指令集結(jié)構(gòu)的分類堆棧、累加器、通用寄存器(RR、RM);這三種指令各自優(yōu)缺點2.2尋址方式操作數(shù)尋址方式2.3指令及結(jié)構(gòu)的功能設(shè)計設(shè)計的基本要求(完整性、規(guī)整性、高效性、兼容性)、CISC、RISC2.4操作數(shù)的大小和類型數(shù)據(jù)表示2.5指令格式的設(shè)計操作碼+操作數(shù)(地址碼)2.6MIPS指令系統(tǒng)第二章課程安排區(qū)別不同指令集結(jié)構(gòu)的主要因素 CPU中用來存儲操作數(shù)的存儲單元的類型CPU中用來存儲操作數(shù)的存儲單元的主要類型堆棧累加器通用寄存器組將指令集結(jié)構(gòu)分為三種類型2.1 指令集結(jié)構(gòu)的分類2.1 指令集結(jié)構(gòu)的分類堆棧結(jié)構(gòu)累加器結(jié)構(gòu)通用寄存器結(jié)構(gòu)根據(jù)操作

2、數(shù)的來源不同,又可進一步分為:寄存器-存儲器結(jié)構(gòu)(RM結(jié)構(gòu)) (操作數(shù)可以來自存儲器 )寄存器-寄存器結(jié)構(gòu)(RR結(jié)構(gòu)) (所有操作數(shù)都是來自通用寄存器組) 也稱為load-store結(jié)構(gòu),這個名稱強調(diào):只有l(wèi)oad指令和store指令能夠訪問存儲器。 2.1 指令集結(jié)構(gòu)的分類對于不同類型的指令集結(jié)構(gòu),操作數(shù)的位置、個數(shù)以及操作數(shù)的給出方式(顯式或隱式)也會不同。顯式給出:用指令字中的操作數(shù)字段給出隱式給出:使用事先約定好的存儲單元 4種指令集結(jié)構(gòu)的操作數(shù)的位置以及結(jié)果的去向灰色塊:操作數(shù)黑色塊:結(jié)果TOS(Top Of Stack):棧頂 2.1 指令集結(jié)構(gòu)的分類 例: 表達式C=A+B在4種

3、類型指令集結(jié)構(gòu)上的代碼。 假設(shè):A、B、C均保存在存儲器單元中,并且不能 破壞A和B的值。堆 棧 累加器寄存器(RM型) 寄存器(RR型) push Aload Aload R1,Aload R1,Apush Badd Badd R1,Bload R2,Baddstore Cstore R1,Cadd R3,R1,R2pop Cstore R3,C2.1 指令集結(jié)構(gòu)的分類通用寄存器結(jié)構(gòu)現(xiàn)代指令集結(jié)構(gòu)的主流在靈活性和提高性能方面有明顯的優(yōu)勢提高訪問速度對編譯器而言,能更加容易、有效地分配和使用 寄存器,例如,計算(A*B)-(C*D)-(E*F)對寄存器進行尋址,減少地址位,從而有效地減少程序的

4、目標代碼的大小。 2.1 指令集結(jié)構(gòu)的分類根據(jù)ALU指令的操作數(shù)的兩個特征對通用寄存器型指 令集結(jié)構(gòu)進一步細分操作數(shù)來源 - RR(load-store)、RM、MM(理論上存在)ALU指令操作數(shù)個數(shù) 3個、2個ALU指令中存儲器操作數(shù)的個數(shù)表 2.2: 給出ALU指令中操作數(shù)個數(shù)和存儲器操作個數(shù)的組合;表 2.3: 3種通用寄存器型指令集結(jié)構(gòu)的優(yōu)缺點,其中(m,n)表示指令的n個操作數(shù)中有m個存儲器操作數(shù);ALU指令中存儲器操作數(shù)的個數(shù) ALU指令中操作數(shù)的個數(shù) 結(jié)構(gòu)類型 實例03 或 2RR Add R1, R2, R3典型機型:MIPS,SPARC,Alpha,PowerPC,ARM12

5、RM Add R1, (1010)典型機型:IBM 360/370,Intel 80 x86,Motorola 680003RM Add R1, R2, (1010)典型機型:IBM 360/370 22MM Add (1010), (1100)典型機型:VAX 33MM Add(1110), (1010),(1100)典型機型:VAX 表2.2 ALU指令中操作數(shù)個數(shù)和存儲器操作數(shù)個數(shù)的典型組合指令集結(jié)構(gòu)類型 優(yōu) 點 缺 點 寄存器寄存器型 (0,3) 指令字長固定,指令結(jié)構(gòu)簡潔,是一種簡單的代碼生成模型,各種指令的執(zhí)行時鐘周期數(shù)相近 與指令中含存儲器操作數(shù)的指令集結(jié)構(gòu)相比,指令條數(shù)多,目標

6、代碼不夠緊湊,因而程序占用的空間比較大 寄存器存儲器型 (1,2) 可以在ALU指令中直接對存儲器操作數(shù)進行引用,而不必先用load指令進行加載。容易對指令進行編碼,目標代碼比較緊湊 指令中的兩個操作數(shù)不對稱。在一條指令中同時對寄存器操作數(shù)和存儲器操作數(shù)進行編碼,有可能限制指令所能夠表示的寄存器個數(shù)。指令的執(zhí)行時鐘周期數(shù)因操作數(shù)的來源(寄存器或存儲器)不同而差別比較大 存儲器存儲器型 (2,2) 或(3,3) 目標代碼最緊湊,不需要設(shè)置寄存器來保存變量 指令字長變化很大,特別是3操作數(shù)指令。而且每條指令完成的工作也差別很大。對存儲器的頻繁訪問會使存儲器成為瓶頸。這種類型的指令集結(jié)構(gòu)現(xiàn)在已不用了

7、表2.3 三種常見的通用寄存器計算機的優(yōu)缺點 定性分析一種指令集結(jié)構(gòu)如何確定所要訪問的數(shù)據(jù)的地址?當前的指令集結(jié)構(gòu)中所采用的一些操作數(shù)尋址方式一些標記:賦值操作Mem:存儲器Regs:寄存器組方括號:表示內(nèi)容Mem :存儲器的內(nèi)容Regs :寄存器的內(nèi)容MemRegsR1:以寄存器R1中的內(nèi)容作為地址的 存儲器單元中的內(nèi)容2.2 尋址方式尋址方式指令實例含 義寄存器尋址Add R4 , R3RegsR4RegsR4RegsR3立即值尋址Add R4 , #3RegsR4RegsR43偏移尋址Add R4 , 100(R1)RegsR4RegsR4Mem100+RegsR1寄存器間接尋址Add

8、R4 , (R1)RegsR4RegsR4MemRegsR1索引尋址Add R3 , (R1 + R2)RegsR3RegsR3MemRegsR1+RegsR2直接尋址或絕對尋址Add R1 , (1001)RegsR1RegsR1Mem1001存儲器間接尋址Add R1 , (R3)RegsR1RegsR1MemMemRegsR3自增尋址Add R1 , (R2)+RegsR1RegsR1MemRegsR2RegsR2RegsR2d自減尋址Add R1, -(R2)RegsR2RegsR2dRegsR1RegsR1+MemRegsR2縮放尋址AddR1 , 100(R2)R3RegsR1Re

9、gsR1Mem100RegsR2RegsR3*d2.2 尋址方式 采用多種尋址方式可以顯著地減少程序的指令條數(shù) 但可能增加計算機的實現(xiàn)復(fù)雜度以及指令的CPI2.2 尋址方式立即數(shù)尋址方式和偏移尋址方式的使用頻度最高。 各種尋址方式的使用情況統(tǒng)計結(jié)果在VAX機器上運行g(shù)cc、Spice和Tex 基準程序2.2 尋址方式立即數(shù)尋址方式立即數(shù)尋址方式的使用頻度 指令類型 使用頻度 整型平均 浮點平均 load指令 23% 22% ALU指令 25% 19% 所有指令 21% 16% 大約1/4的load指令和ALU指令采用了立即數(shù)尋址。實驗環(huán)境:在load-store結(jié)構(gòu)的機器(Alpha)上運行S

10、PEC CPU2000基準程序 2.2 尋址方式立即數(shù)的取值范圍 2.2 尋址方式最常用的是較小的立即數(shù);有時也會用到較大的立即數(shù)(主要是用于地址計算)。在指令集結(jié)構(gòu)設(shè)計中,至少要將立即數(shù)的大小設(shè)置 為816位。在VAX機(支持32位立即數(shù))上做過類似的統(tǒng)計,結(jié)果 表明20%25%的立即數(shù)超過16位。 2.2 尋址方式 偏移量的取值范圍在load-store結(jié)構(gòu)的機器(Alpha)上運行SPEC CPU2000基準程序2.2 尋址方式從該圖可以看出:程序所使用的偏移量大小分布十分廣泛 主要是因為在存儲器中所保存的數(shù)據(jù)并不是十分集中,需要使用不同的偏移量才能對其進行訪問。 較小的偏移量和較大的偏

11、移量均占有相當大 的比例 指令集結(jié)構(gòu)的功能設(shè)計確定軟、硬件功能分配,即確定哪些基本功能應(yīng)該由硬件實現(xiàn),哪些功能由軟件實現(xiàn)比較合適。在確定哪些基本功能用硬件來實現(xiàn)時,主要考慮3個因素:速度、成本、靈活性硬件實現(xiàn)的特點 速度快、成本高、靈活性差軟件實現(xiàn)的特點 速度慢、價格便宜、靈活性好2.3 指令集結(jié)構(gòu)的功能設(shè)計2.3 指令集結(jié)構(gòu)的功能設(shè)計對指令集的基本要求 完整性、規(guī)整性、高效率、兼容性 完整性:在一個有限可用的存儲空間內(nèi),對于任何可解的問題,編制計算程序時,指令集所提供的指令足夠用。要求指令集功能齊全、使用方便下表為許多指令集結(jié)構(gòu)都包含的一些指令類型 前4類屬于通用計算機系統(tǒng)的基本指令對于最后

12、4種類型的操作,不同指令集結(jié)構(gòu)的支 持大不相同 。 2.3 指令集結(jié)構(gòu)的功能設(shè)計操作類型 實 例 算術(shù)和邏輯運算 算術(shù)運算和邏輯操作:加,減,乘,除,與,或等 數(shù)據(jù)傳輸 load,store控制 分支,跳轉(zhuǎn),過程調(diào)用和返回,自陷等 系統(tǒng) 操作系統(tǒng)調(diào)用,虛擬存儲器管理等 浮點 浮點操作:加,減,乘,除,比較等 十進制 十進制加,十進制乘,十進制到字符的轉(zhuǎn)換等 字符串 字符串移動,字符串比較,字符串搜索等 圖形 像素操作,壓縮/解壓操作等 2.3 指令集結(jié)構(gòu)的功能設(shè)計規(guī)整性:主要包括對稱性和均勻性。對稱性:操作碼與尋址方式 所有的存儲單元和寄存器都同等對待 所有 的指令都可以使用各種尋址方式 均勻

13、性:操作碼與數(shù)據(jù)大小、類型一種操作性質(zhì)的指令可以支持各種數(shù)據(jù)類型。例如:如果某機器有5種數(shù)據(jù)表示,4種字長,兩種存儲單 元,則要設(shè)置542=40種同一操作的指令。高效率:指令的執(zhí)行速度快、使用頻度高。 2.3 指令集結(jié)構(gòu)的功能設(shè)計在設(shè)計指令集結(jié)構(gòu)時,有兩種截然不同的設(shè)計策略。 (產(chǎn)生了兩類不同的計算機系統(tǒng) )CISC(復(fù)雜指令集計算機)增強指令功能,把越來越多的功能交由硬件來實 現(xiàn),并且指令的數(shù)量也是越來越多。RISC(精簡指令集計算機)盡可能地把指令集簡化,不僅指令的條數(shù)少,而且 指令的功能也比較簡單。 2.3 指令集結(jié)構(gòu)的功能設(shè)計CISC結(jié)構(gòu)追求的目標 強化指令功能,減少程序的指令條數(shù),以

14、達到提高性能的目的。增強指令功能主要是從以下幾個方面著手:面向目標程序增強指令功能 增強運算型指令的功能增強數(shù)據(jù)傳送指令的功能增強程序控制指令的功能 豐富的程序控制指令為編程提供了多種選擇。 2.3.1 CISC指令集結(jié)構(gòu)的功能設(shè)計2.3 指令集結(jié)構(gòu)的功能設(shè)計例如:循環(huán)在程序中占有相當大的 比例,所以在指令上提供專 門的支持。循環(huán)控制部分通常用3條指令完成:一條加法指令一條比較指令一條分支指令設(shè)置循環(huán)控制指令,用一條指令完成上述3條指令的功能。 一般循環(huán)程序的結(jié)構(gòu)2.3 指令集結(jié)構(gòu)的功能設(shè)計面向高級語言的優(yōu)化實現(xiàn)來改進指令集 (縮小高級語言與機器語言的語義差距) 高級語言與一般的機器語言的語義

15、差距非常大,為高級語言程序的編譯帶來了一些問題。(1)編譯器本身比較復(fù)雜。(2)編譯生成的目標代碼比較難以達到很好的優(yōu)化。 2.3 指令集結(jié)構(gòu)的功能設(shè)計增加功能讓高級語言成為機器的匯編語言2.3 指令集結(jié)構(gòu)的功能設(shè)計面向操作系統(tǒng)的優(yōu)化實現(xiàn)改進指令集 操作系統(tǒng)和計算機系統(tǒng)結(jié)構(gòu)是緊密聯(lián)系的,操作系 統(tǒng)的實現(xiàn)在很大程度上取決于系統(tǒng)結(jié)構(gòu)的支持。指令集對操作系統(tǒng)的支持主要有:處理機工作狀態(tài)和訪問方式的切換。進程的管理和切換。存儲管理和信息保護。進程的同步與互斥,信號燈的管理等。 支持操作系統(tǒng)的有些指令屬于特權(quán)指令,一般用戶程序是不能使用的。 2.3 指令集結(jié)構(gòu)的功能設(shè)計CISC指令集結(jié)構(gòu)存在的問題 (1

16、979年開始,Patterson等人的研究)各種指令的使用頻度相差懸殊據(jù)統(tǒng)計:只有20的指令使用頻度比較高,占運行時間的80,而其余80的指令只在20的運行時間內(nèi)才會用到。使用頻度高的指令也是最簡單的指令。2.3.2 RISC指令集結(jié)構(gòu)的功能設(shè)計執(zhí)行頻度排序 80 x86指令 指令執(zhí)行頻度(占執(zhí)行指令總數(shù)的百分比) 1load 22% 2條件分支 20% 3比較 16% 4store 12% 5加 8% 6與 6% 7減 5% 8寄存器-寄存器間數(shù)據(jù)移動 4% 9調(diào)用子程序 1% 10返回 1% 合 計 95% Intel 80 x86最常用的10條指令2.3 指令集結(jié)構(gòu)的功能設(shè)計指令集龐大,

17、指令條數(shù)很多,許多指令的功能又 很復(fù)雜,使得控制器硬件非常復(fù)雜。 導(dǎo)致的問題:占用了大量的芯片面積(如占用CPU芯片總面積的一半以上),給VLSI設(shè)計造成很大的困難;增加了研制時間和成本,容易造成設(shè)計錯誤。許多指令由于操作繁雜,其CPI值比較大,執(zhí)行 速度慢。采用這些復(fù)雜指令有可能使整個程序的 執(zhí)行時間反而增加。由于指令功能復(fù)雜,規(guī)整性不好,不利于采用流 水技術(shù)來提高性能。 2.3 指令集結(jié)構(gòu)的功能設(shè)計設(shè)計RISC機器遵循的原則 指令條數(shù)少而簡單。只選取使用頻度很高的指令,在此基礎(chǔ)上補充一些最有用的指令。采用簡單而又統(tǒng)一的指令格式,并減少尋址方式;指令字長都為32位或64位。指令的執(zhí)行在單個機

18、器周期內(nèi)完成。 (采用流水線機制)只有l(wèi)oad和store指令才能訪問存儲器,其他指令的操作都是在寄存器之間進行。 (即采用load-store結(jié)構(gòu))大多數(shù)指令都采用硬連邏輯來實現(xiàn)。強調(diào)優(yōu)化編譯器的作用,為高級語言程序生成優(yōu)化的代碼。充分利用流水技術(shù)來提高性能。2.3 指令集結(jié)構(gòu)的功能設(shè)計早期的RISC微處理器1981年 ,Berkeley分校的Patterson 等人的32位微處理器RISC I :31條指令,指令字長都是32位,78個通用寄存器,時鐘頻率為8 MHz;控制部分所占的芯片面積只有約6%。商品化微處理器MC68000和Z8000分別為50%和53%;性能比MC68000和Z80

19、00快34倍。1983年的RISC:指令條數(shù)為39,通用寄存器個數(shù)為138,時鐘頻率為12 MHz。后來發(fā)展成了Sun公司的SPARC系列微處理器。1981年,Stanford大學(xué)Hennessy等人的MIPS后來發(fā)展成了MIPS Rxxx系列微處理器。IBM的8012.3 指令集結(jié)構(gòu)的功能設(shè)計共同特點:采用load-store結(jié)構(gòu)指令字長為32位采用高效的流水技術(shù)2.3 指令集結(jié)構(gòu)的功能設(shè)計控制指令是用來改變控制流的。 跳轉(zhuǎn):當指令是無條件改變控制流時,稱之為跳轉(zhuǎn)指令。分支:當控制指令是有條件改變控制流時,則稱之為分支指令。 能夠改變控制流的指令分支跳轉(zhuǎn)過程調(diào)用過程返回2.3.3 控制指令2

20、.3 指令集結(jié)構(gòu)的功能設(shè)計控制指令的使用頻度 (load-store型指令集結(jié)構(gòu)的機器,基準程序為SPEC CPU2000)指令類型 使用頻度 整型平均 浮點平均 調(diào)用/返回 19% 8% 跳轉(zhuǎn) 6% 10% 分支 75% 82% 改變控制流的大部分指令是分支指令(條件轉(zhuǎn)移)。 常用的3種表示分支條件的方法及其優(yōu)缺點 名 稱 檢測分支條件的方法 優(yōu) 點 缺 點 條件碼(CC) 檢測由ALU操作設(shè)置的一些特殊的位(即CC) 可以自由設(shè)置分支條件 條件碼是增設(shè)的狀態(tài)。而且它限制了指令的執(zhí)行順序,因為要保證條件碼能順利地傳送給分支指令 條件寄存器 比較指令把比較結(jié)果放入任何一個寄存器,檢測時就檢測該

21、寄存器 簡單 占用了一個寄存器 比較與分支 比較操作是分支指令的一部分,通常這種比較是受到一定限制的 用一條指令(而不是兩條)就能實現(xiàn)分支 當采用流水方式時,該指令的操作可能太多,在一拍內(nèi)做不完 2.3 指令集結(jié)構(gòu)的功能設(shè)計轉(zhuǎn)移目標地址的表示最常用的方法 在指令中提供一個偏移量,由該偏移量和程序計數(shù)器(PC)的值相加而得出目標地址。 (PC相對尋址)優(yōu)點有效地減少表示該目標地址所需要的位數(shù)。位置無關(guān)(代碼可被裝載到主存的任意位置執(zhí)行)。關(guān)鍵:確定偏移量字段的長度模擬結(jié)果表明:采用48位的偏移量字段(以指令字為單位)就能表示大多數(shù)控制指令的轉(zhuǎn)移目標地址了。2.3 指令集結(jié)構(gòu)的功能設(shè)計過程調(diào)用和返

22、回除了要改變控制流之外,可能還要保存機器狀態(tài),至少也得保存返回地址(放在專用的鏈接寄存器或堆棧中)。過去有些指令集結(jié)構(gòu)提供了專門的保存機制來保存許多寄存器的內(nèi)容。現(xiàn)在較新的指令集結(jié)構(gòu)則要求由編譯器生成load和store指令來保存或恢復(fù)寄存器的內(nèi)容。 3個問題:類型?大小?CPU如何得知類型和大?。寇浻布∩嵴壑械膯栴}2.4 操作數(shù)的類型和大小2.5 指令集格式的設(shè)計指令集格式的設(shè)計原則指令= 操作碼+地址格式優(yōu)化設(shè)計的目標有兩個:(1)節(jié)省程序的存儲空間;(短)(2)指令格式要盡量規(guī)整,以減少硬件譯碼的復(fù)雜度。(整)影響以上設(shè)計目標的可能有哪些因素?操作碼地址碼1地址碼22.5 指令集格式的

23、設(shè)計矛盾的焦點 :(1)操作碼長度 |指令集|、編碼方法 (2)地址碼域長度 個數(shù)、操作數(shù)大小類型、尋址方式2. 操作碼的設(shè)計和優(yōu)化操作碼的表示方法通常有三種:固定長度操作碼Huffman編碼法擴展編碼法2.5 指令集格式的設(shè)計Huffman壓縮的思想高概率指令的操作碼用較短的位數(shù)表示,低概率指令的操作碼用較長的位數(shù)表示,就可以使得指令操作碼的平均長度較短。所以指令操作碼的優(yōu)化的前提是知道各條指令在程序中出現(xiàn)的概率。2.5 指令集格式的設(shè)計補充: Huffman編碼法操作碼表示的信息冗余量其中H是信息熵采用固定長度操作碼時信息冗余量=(3-2.17)/(2.17)=0.28補充: Huffma

24、n編碼法Huffman樹的生成方法:1)將所有指令的使用頻度由小到大排序,每個頻度作為一個節(jié)點:2)選擇其中頻度最小的兩個節(jié)點,將它們合并成一個新的節(jié)點,新節(jié)點的頻度是這兩個節(jié)點頻度的和;3)將新節(jié)點按頻度大小插入未合并的節(jié)點中;4)再從未合并的節(jié)點中選擇兩個頻度最小節(jié)點,將它們合并成一個新的節(jié)點;5)如此繼續(xù)進行,直至全部節(jié)點合并完成形成根節(jié)點;6)之后,從根節(jié)點開始,向下延伸,分出兩個分支,分別用一位代碼的“0”和“1”來表示。補充: Huffman編碼法I70.03I60.03I50.04I40.05I30.15I20.30I10.400.090.060.150.300.601.0001

25、1010001101從根節(jié)點開始,沿線到達各指令所經(jīng)過的代碼序列就構(gòu)成該指令的操作碼。短碼不可能是長碼的前綴。I1:0I2:10I3:110I4:11100I5:11101I6:11110I7:11111補充: Huffman編碼法Huffman編碼指令平局長度L=0.401+0.302+0.153+0.055 +0.045+0.035+0.035 =2.20信息冗余量為(2.20-2.17)2.201.36%無法達到理論值2.17,是因為操作碼必須用整數(shù)位表示。補充: Huffman編碼法擴展Huffman編碼 介于固定長度操作碼編碼和Huffman編碼之間的一種編碼方式,操作碼長度雖不是定

26、長的,但是只有幾種碼長,但仍然是概率高的指令用短操作碼表示,概率低的指令用短操作碼表示。仍然符合Huffman壓縮的思想。補充: Huffman編碼法I1:00I2:01I3:10I4:1100I5:1101I6:1110I7:1111擴展Huffman編碼擴展Huffman編碼指令平局長度L=0.402+0.302+0.152+0.054+0.044+0.034+0.034 =2.30信息冗余量為(2.30-2.17)2.305.65%B-1700計算機操作碼編碼方式比較編碼方式整個操作系統(tǒng)所用指令總位數(shù)改進的百分比8位定長編碼30124804-6-10擴展編碼18496639%全Huffm

27、an編碼17234643%3. 尋址方式的表示方法(1)將尋址方式編碼于操作碼中,由操作碼在描述指令操作的同時,也描述了相應(yīng)操作的尋址方式;(2)為每個操作數(shù)設(shè)置一個地址描述符,由該地址描述符表示相應(yīng)操作數(shù)的尋址方式。2.5 指令集格式的設(shè)計補充:地址碼的優(yōu)化表示 供參考自學(xué)地址碼的優(yōu)化表示 與地址碼域長度相關(guān)的主要因素:地址碼的個數(shù) (3、2、1、0)操作數(shù)所存放的存儲設(shè)備(通用寄存器、主存儲器、堆棧等)存儲設(shè)備的尋址空間大小編址方式尋址方式等表達式x=(a*b+c-d)/(e+f)的不同實現(xiàn)三地址二地址R型二地址一地址零地址MUL X,A,BADD X,X,CSUB X,X,DADD Y,

28、E,FDIV X,X,YMOVE X,AMUL X,BADD X,CSUB X,DMOVE Y,EADD Y,FDIV X,YMOVE R1,AMUL R1,BADD R1,CSUB R1,DMOVE R2,EADD R2,FDIV R1,R2MOVE X,R1LOAD EADD FSTORE XLOAD AMUL BADD CSUB DDIV XSTORE XPUSH APUSH BMULPUSH CADDPUSH DSUBPUSH EPUSH FADDDIVPOP X補充:地址碼的優(yōu)化表示 供參考自學(xué)58地址數(shù)目指令條數(shù)訪存次數(shù)程序存儲量執(zhí)行速度(訪存信息量)三地址5205P+15A=65

29、B5P+15A+15D=185B二地址7267P+14A=63B7P+14A+19D=215B一地址9189P+9A=45B9P+9A+9D=117B零地址124112P+7A=40B12P+7A+29D=272B二地址寄存器型8158P+7A+9R=40B8P+7A+9R+7D=96B用不同地址個數(shù)指令編寫的程序的存儲容量和執(zhí)行速度P表示操作碼長度,A表示地址碼長度,D表示數(shù)據(jù)長度,R表示通用寄存器的地址碼長度,B表示字節(jié)數(shù)并?。篋2A8P16R8B補充:地址碼的優(yōu)化表示 供參考自學(xué)補充:地址碼的優(yōu)化表示 供參考自學(xué)各種不同地址數(shù)指令的特點及實用場合地址數(shù)程序長度程序存儲量執(zhí)行速度適用場合三

30、地址短最大一般向量、矩陣運算為主二地址一般很大很低一般不宜采用一地址較長一般較快連續(xù)運算,硬件結(jié)構(gòu)簡單零地址最長最小最低嵌套、遞歸、變量較多二地址R型一般最小最快多累加器,數(shù)據(jù)傳送較多補充:地址碼的優(yōu)化表示 供參考自學(xué)縮短地址碼長度的方法: 縮短地址碼長度的目的是要用一個比較短的地址碼表示一個比較大的邏輯地址空間,同時要求有比較靈活的尋址方式。(1)用間接尋址方式縮短地址碼長度;(2)用變址尋址方式縮短地址碼長度;(3)用寄存器間接尋址方式縮短地址碼長度。4. 指令集格式的選擇有三種指令集編碼格式:(1)變長編碼格式;當有多種尋址方式和操作類型時,常采用這種格式。(2)固定長度編碼格式;將操作

31、類型和尋址方式組合編碼在操作碼中,當尋址方式和操作類型非常少時,常采用這種格式。(3)混合型編碼格式,其目的是提供一定類型的指令字長,期望能夠兼顧降低目標代碼長度和降低譯碼復(fù)雜度兩個目標。2.5 指令集格式的設(shè)計1. 32個64位通用寄存器(GPRs)R0,R1,R31也被稱為整數(shù)寄存器R0的值永遠是02. 32個64位浮點數(shù)寄存器(FPRs)F0,F(xiàn)1,F(xiàn)31單精度、雙精度3. 一些特殊寄存器2.6 MIPS指令集結(jié)構(gòu)2.6.1 MIPS的寄存器2.6 MIPS指令集結(jié)構(gòu)MIPS的數(shù)據(jù)表示整數(shù)字節(jié)(8位) 半字(16位)字(32位) 雙字(64位)浮點數(shù)單精度浮點數(shù)(32位) 雙精度浮點數(shù)(

32、64位)不足填充0 字節(jié)、半字或者字在裝入64位寄存器時,用零擴展或者用符號位擴展來填充該寄存器的剩余部分。裝入以后,對它們將按照64位整數(shù)的方式進行運算。2.6.2 MIPS的數(shù)據(jù)表示2.6 MIPS指令集結(jié)構(gòu)立即數(shù)尋址與偏移量尋址立即數(shù)字段和偏移量字段都是16位的。寄存器間接尋址是通過把0作為偏移量來實現(xiàn)的16位絕對尋址是通過把R0(其值永遠為0)作為基址 寄存器來完成的MIPS的存儲器是按字節(jié)尋址的,地址為64位所有存儲器訪問都必須是邊界對齊的2.6.3 MIPS的數(shù)據(jù)尋址方式2.6 MIPS指令集結(jié)構(gòu)尋址方式編碼到操作碼中所有的指令都是32位的操作碼占6位3種指令格式,對應(yīng)I類指令、R

33、類指令和J類指令2.6.4 MIPS的指令格式2.6 MIPS指令集結(jié)構(gòu)I類指令包括所有的load和store指令、立即數(shù)指令、,分支指令、寄存器跳轉(zhuǎn)指令、寄存器鏈接跳轉(zhuǎn)指令。立即數(shù)字段為16位,用于提供立即數(shù)或偏移量。2.6 MIPS指令集結(jié)構(gòu)load指令 訪存有效地址:Regsrsimmediate 從存儲器取來的數(shù)據(jù)放入寄存器rtstore指令 訪存有效地址:Regsrsimmediate 要存入存儲器的數(shù)據(jù)放在寄存器rt中立即數(shù)指令 Regsrt Regsrs op immediate分支指令 轉(zhuǎn)移目標地址:Regsrsimmediate,rt無用寄存器跳轉(zhuǎn)、寄存器跳轉(zhuǎn)并鏈接 轉(zhuǎn)移目標

34、地址為Regsrs2.6 MIPS指令集結(jié)構(gòu)R類指令包括ALU指令、專用寄存器讀/寫指令、move指令等。ALU指令 Regsrd Regsrs funct Regsrt func為具體的運算操作編碼2.6 MIPS指令集結(jié)構(gòu)J類指令包括跳轉(zhuǎn)指令、跳轉(zhuǎn)并鏈接指令、自陷指令、異常返回指令。在這類指令中,指令字的低26位是偏移量,它與PC值相加形成跳轉(zhuǎn)的地址。2.6 MIPS指令集結(jié)構(gòu)MIPS指令可以分為四大類load和storeALU操作分支與跳轉(zhuǎn)浮點操作符號的意義 x n y:從y傳送n位到x(注意:n是作用在下標上)x,yz:把z傳送到x和y 2.6.5 MIPS的操作2.6 MIPS指令集

35、結(jié)構(gòu)下標:表示字段中具體的位;對于指令和數(shù)據(jù),按從最高位到最低位(即從左到右)的順序依次進行編號,最高位為第0位,次高位為第1位,依此類推。下標可以是一個數(shù)字,也可以是一個范圍。例如:RegsR40:寄存器R4的符號位 RegsR456.63:R4的最低字節(jié)Mem:表示主存;按字節(jié)尋址,可以傳輸任意個字節(jié)。上標:用于表示對字段進行復(fù)制的次數(shù)。例如:0 32:一個32位長的全0字段2.6 MIPS指令集結(jié)構(gòu)符號#:用于兩個字段的拼接,并且可以出現(xiàn)在數(shù)據(jù)傳送的任何一邊。舉例:R8、R6:64位的寄存器,則RegsR832.63 32 (Mem RegsR60)24 # Mem RegsR6表示的意

36、義是: 以R6的內(nèi)容作為地址訪問內(nèi)存,得到的字節(jié)按符號位擴展為32位后存入R8的低32位,R8的高32位(即RegsR80.31)不變。 load和store指令指令舉例 指令名稱 含 義 LD R2,20(R3) 裝入雙字 RegsR264 Mem20+RegsR3 LW R2,40(R3) 裝入字 RegsR264 (Mem40+RegsR30)32 # Mem40+RegsR3 LB R2,30(R3) 裝入字節(jié) RegsR264 (Mem30+RegsR30)56 # Mem30+RegsR3 LBU R2,40(R3) 裝入無符號字節(jié) RegsR264 056 # Mem40+Reg

37、sR3 LH R2,30(R3) 裝入半字 RegsR264 (Mem30+RegsR30)48 #Mem30+RegsR3# Mem31+RegsR3 L.S F2,60(R4) 裝入半字 RegsF264 Mem60+RegsR4 # 032 L.D F2,40(R3) 裝入雙精度浮點數(shù) RegsF264 Mem40+RegsR3 SD R4,300(R5) 保存雙字 Mem300+RegsR564 RegsR4 SW R4,300(R5) 保存字 Mem300+RegsR532 RegsR4 S.S F2,40(R2) 保存單精度浮點數(shù)Mem40+RegsR232 RegsF2 031 SH R5,502(R4)保存半字Mem502+RegsR416 RegsR5 48.63 ALU指令寄存器-寄存器型(RR型)指令或立即數(shù)型算術(shù)和邏輯操作:加、減、與、或、異或和移位等指令舉例 指令名稱 含義 DADDUR1,R2,R3 無符號加 RegsR1 RegsR2+ RegsR3 DADDIU R4,R5,#6

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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

提交評論