版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第2章 計算機指令集結(jié)構(gòu)2.1指令集結(jié)構(gòu)的分類2.2尋址方式2.3指令集結(jié)構(gòu)的功能設(shè)計2.4操作數(shù)的類型和大小2.5指令格式的設(shè)計2.6MIPS指令集結(jié)構(gòu)區(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ù)操作數(shù)的來源不同,又可進一步分為:寄存器-存儲器結(jié)構(gòu)(RM結(jié)構(gòu)) (操作數(shù)可以來自存儲器 )寄存器-寄存器結(jié)構(gòu)(RR結(jié)構(gòu)) (所有操作數(shù)都是來自通用寄存器組) 也稱為load-store結(jié)構(gòu),這個名稱強調(diào):
2、只有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種類型指令集結(jié)構(gòu)上的代碼。 假設(shè):A、B、C均保存在存儲器單元中,并且不能 破壞A和B的值。堆 棧 累加器寄存器(RM型) 寄存器(RR型) push Aload Aload R1,Aload R1,Ap
3、ush 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)勢跟其他的CPU內(nèi)部存儲單元一樣,寄存器的訪問 速度比存儲器快。對編譯器而言,能更加容易、有效地分配和使用 寄存器。寄存器可以用來存放變量。 (1)減少對存儲器的訪問,加快程序的執(zhí)行速度; (因為寄存器比存儲器快) 2.1 指令集結(jié)構(gòu)的分類(2)用更少的地址位(相對于存儲器地址來說)來對寄 存器進行尋址,從而有效地減少程序的目標(biāo)代碼的 大小。根據(jù)ALU指令的操
4、作數(shù)的兩個特征對通用寄存器型指 令集結(jié)構(gòu)進一步細分ALU指令的操作數(shù)個數(shù)3個操作數(shù)的指令 兩個源操作數(shù)、一個目的操作數(shù)2個操作數(shù)的指令其中一個操作數(shù)既作為源操作數(shù),又作為目的操作數(shù)。2.1 指令集結(jié)構(gòu)的分類ALU指令中存儲器操作數(shù)的個數(shù)可以是0中的某一個,為0表示沒有存儲器操作數(shù)。ALU指令中存儲器操作數(shù)的個數(shù) ALU指令中操作數(shù)的最多個數(shù) 結(jié)構(gòu)類型 機器實例 03RR MIPS,SPARC,Alpha,PowerPC,ARM12RM IBM 360/370,Intel 80 x86,Motorola 680003RM IBM 360/370 22MM VAX 33MM VAX ALU指令中操
5、作數(shù)個數(shù)和存儲器操作數(shù)個數(shù)的典型組合2.1 指令集結(jié)構(gòu)的分類通用寄存器型指令集結(jié)構(gòu)進一步細分為3種類型寄存器-寄存器型(RR型)寄存器-存儲器型(RM型)存儲器-存儲器型(MM型) 3種通用寄存器型指令集結(jié)構(gòu)的優(yōu)缺點 表中(m,n)表示指令的n個操作數(shù)中有m個存 儲器操作數(shù)。指令集結(jié)構(gòu)類型 優(yōu) 點 缺 點 寄存器寄存器型 (0,3) 指令字長固定,指令結(jié)構(gòu)簡潔,是一種簡單的代碼生成模型,各種指令的執(zhí)行時鐘周期數(shù)相近 與指令中含存儲器操作數(shù)的指令集結(jié)構(gòu)相比,指令條數(shù)多,目標(biāo)代碼不夠緊湊,因而程序占用的空間比較大 寄存器存儲器型 (1,2) 可以在ALU指令中直接對存儲器操作數(shù)進行引用,而不必先用
6、load指令進行加載。容易對指令進行編碼,目標(biāo)代碼比較緊湊 指令中的兩個操作數(shù)不對稱。在一條指令中同時對寄存器操作數(shù)和存儲器操作數(shù)進行編碼,有可能限制指令所能夠表示的寄存器個數(shù)。指令的執(zhí)行時鐘周期數(shù)因操作數(shù)的來源(寄存器或存儲器)不同而差別比較大 存儲器存儲器型 (2,2) 或(3,3) 目標(biāo)代碼最緊湊,不需要設(shè)置寄存器來保存變量 指令字長變化很大,特別是3操作數(shù)指令。而且每條指令完成的工作也差別很大。對存儲器的頻繁訪問會使存儲器成為瓶頸。這種類型的指令集結(jié)構(gòu)現(xiàn)在已不用了一種指令集結(jié)構(gòu)如何確定所要訪問的數(shù)據(jù)的地址?當(dāng)前的指令集結(jié)構(gòu)中所采用的一些操作數(shù)尋址方式:賦值操作Mem:存儲器Regs:寄
7、存器組方括號:表示內(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 R4 , (R1)RegsR4RegsR4MemRegsR1索引尋址Add R3 , (R1 + R2)RegsR3RegsR3MemRegsR1+RegsR2直接尋址或絕對尋址Add
8、R1 , (1001)RegsR1RegsR1Mem1001存儲器間接尋址Add R1 , (R3)RegsR1RegsR1MemMemRegsR3自增尋址Add R1 , (R2)+RegsR1RegsR1MemRegsR2RegsR2RegsR2d自減尋址Add R1, -(R2)RegsR2RegsR2dRegsR1RegsR1+MemRegsR2縮放尋址AddR1 , 100(R2)R3RegsR1RegsR1Mem100RegsR2RegsR3*d2.2 尋址方式 采用多種尋址方式可以顯著地減少程序的指令條 數(shù),但可能增加計算機的實現(xiàn)復(fù)雜度以及指令的CPI。2.2 尋址方式立即數(shù)尋址
9、方式和偏移尋址方式的使用頻度最高。 各種尋址方式的使用情況統(tǒng)計結(jié)果在VAX機器上運行g(shù)cc、Spice和Tex 基準(zhǔn)程序2.2 尋址方式 偏移量的取值范圍在load-store結(jié)構(gòu)的機器(Alpha)上運行SPEC CPU2000基準(zhǔn)程序2.2 尋址方式從該圖可以看出:程序所使用的偏移量大小分布十分廣泛 主要是因為在存儲器中所保存的數(shù)據(jù)并不是十分集中,需要使用不同的偏移量才能對其進行訪問。 較小的偏移量和較大的偏移量均占有相當(dāng)大 的比例 2.2 尋址方式立即數(shù)尋址方式立即數(shù)尋址方式的使用頻度 指令類型 使用頻度 整型平均 浮點平均 load指令 23% 22% ALU指令 25% 19% 所有
10、指令 21% 16% 大約1/4的load指令和ALU指令采用了立即數(shù)尋址。 2.2 尋址方式立即數(shù)的取值范圍 2.2 尋址方式最常用的是較小的立即數(shù);有時也會用到較大的立即數(shù)(主要是用于地址計算)。在指令集結(jié)構(gòu)設(shè)計中,至少要將立即數(shù)的大小設(shè)置 為816位。在VAX機(支持32位立即數(shù))上做過類似的統(tǒng)計,結(jié)果 表明20%25%的立即數(shù)超過16位。 指令集結(jié)構(gòu)的功能設(shè)計確定軟、硬件功能分配,即確定哪些基本功能應(yīng)該由硬件實現(xiàn),哪些功能由軟件實現(xiàn)比較合適。在確定哪些基本功能用硬件來實現(xiàn)時,主要考慮3個因素:速度、成本、靈活性硬件實現(xiàn)的特點 速度快、成本高、靈活性差軟件實現(xiàn)的特點 速度慢、價格便宜、靈
11、活性好2.3 指令集結(jié)構(gòu)的功能設(shè)計2.3 指令集結(jié)構(gòu)的功能設(shè)計對指令集的基本要求 完整性、規(guī)整性、高效率、兼容性 完整性:在一個有限可用的存儲空間內(nèi),對于任何可解的問題,編制計算程序時,指令集所提供的指令足夠用。要求指令集功能齊全、使用方便下表為許多指令集結(jié)構(gòu)都包含的一些指令類型 前4類屬于通用計算機系統(tǒng)的基本指令對于最后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)用,虛擬存儲器管理等 浮點
12、浮點操作:加,減,乘,除,比較等 十進制 十進制加,十進制乘,十進制到字符的轉(zhuǎn)換等 字符串 字符串移動,字符串比較,字符串搜索等 圖形 像素操作,壓縮/解壓操作等 2.3 指令集結(jié)構(gòu)的功能設(shè)計規(guī)整性:主要包括對稱性和均勻性。對稱性:所有與指令集有關(guān)的存儲單元的使用、 操作碼的設(shè)置等都是對稱的。例如:在存儲單元的使用上,所有通用寄存器都要同等對 待。在操作碼的設(shè)置上,如果設(shè)置了A-B的指 令,就應(yīng)該也設(shè)置B-A的指令。 均勻性:指對于各種不同的操作數(shù)類型、字長、操作 種類和數(shù)據(jù)存儲單元,指令的設(shè)置都要同等對待。例如:如果某機器有5種數(shù)據(jù)表示,4種字長,兩種存儲單 元,則要設(shè)置542=40種同一操
13、作的指令。 2.3 指令集結(jié)構(gòu)的功能設(shè)計高效率:指指令的執(zhí)行速度快、使用頻度高。在設(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)追求的目標(biāo) 強化指令功能,減少程序的指令條數(shù),以達到提高性能的目的。增強指令功能主要是從以下幾個方面著手:面向目標(biāo)程序增強指令功能 增強運算型指令的功能增強數(shù)據(jù)傳送指令的功能增強程序控制指令的功能
14、豐富的程序控制指令為編程提供了多種選擇。 2.3.1 CISC指令集結(jié)構(gòu)的功能設(shè)計2.3 指令集結(jié)構(gòu)的功能設(shè)計例如:循環(huán)在程序中占有相當(dāng)大的 比例,所以在指令上提供專 門的支持。循環(huán)控制部分通常用3條指令完成:一條加法指令一條比較指令一條分支指令設(shè)置循環(huán)控制指令,用一條指令完成上述3條指令的功能。 一般循環(huán)程序的結(jié)構(gòu)2.3 指令集結(jié)構(gòu)的功能設(shè)計面向高級語言的優(yōu)化實現(xiàn)來改進指令集 (縮小高級語言與機器語言的語義差距) 高級語言與一般的機器語言的語義差距非常大,為高級語言程序的編譯帶來了一些問題。(1)編譯器本身比較復(fù)雜。(2)編譯生成的目標(biāo)代碼比較難以達到很好的優(yōu)化。 2.3 指令集結(jié)構(gòu)的功能設(shè)
15、計2.3 指令集結(jié)構(gòu)的功能設(shè)計增強對高級語言和編譯器的支持 對源程序中各種高級語言語句的使用頻度進行 統(tǒng)計與分析,對使用頻度高、執(zhí)行時間長的語句,增強有關(guān)指令的功能,加快這些指令的執(zhí)行速度,或者增加專門的指令,可以達到減少目標(biāo)程序的執(zhí)行時間和減少目標(biāo)程序長度的目的。 增強系統(tǒng)結(jié)構(gòu)的規(guī)整性,減少系統(tǒng)結(jié)構(gòu)中的各種例外情況。 (面向高級語言的計算機 )2.3 指令集結(jié)構(gòu)的功能設(shè)計高級語言計算機 間接執(zhí)行高級語言機器 高級語言成為機器的匯編語言,這時高級語言和機器語言是一一對應(yīng)的。用匯編的方法把高級語言源程序翻譯成機器語言程序。 直接執(zhí)行高級語言的機器 直接把高級語言作為機器語言,直接由固件/硬件對高
16、級語言源程序的語句逐條進行解釋執(zhí)行。這時既不用編譯,也不用匯編。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)存在的問題 (1979年開始,Patterson等人的研究)各種指令的使用頻度相差懸殊據(jù)統(tǒng)計:只有20的指令使用頻度比較高,占運行時間的80
17、,而其余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è)計指令集龐大,指令條數(shù)很多,許多指令的功能又 很復(fù)雜,使得控制器硬件非常復(fù)雜。 導(dǎo)致的問題:占用了大量的芯片面積(如占用CPU芯片總面積的
18、一半以上),給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í)行在單個機器周期內(nèi)完成。 (采用流水線機制)只有l(wèi)oad和store指令才能訪問存儲器,其他指令的操作都是在寄存器之間進行。 (即采用
19、load-store結(jié)構(gòu))大多數(shù)指令都采用硬連邏輯來實現(xiàn)。2.3 指令集結(jié)構(gòu)的功能設(shè)計強調(diào)優(yōu)化編譯器的作用,為高級語言程序生成優(yōu)化的代碼。充分利用流水技術(shù)來提高性能。早期的RISC微處理器1981年 ,Berkeley分校的Patterson 等人的32位微處理器RISC I :31條指令,指令字長都是32位,78個通用寄存器,時鐘頻率為8 MHz;控制部分所占的芯片面積只有約6%。商品化微處理器MC68000和Z8000分別為50%和53%;性能比MC68000和Z8000快34倍。2.3 指令集結(jié)構(gòu)的功能設(shè)計1983年的RISC:指令條數(shù)為39,通用寄存器個數(shù)為138,時鐘頻率為12 MH
20、z。后來發(fā)展成了Sun公司的SPARC系列微處理器。1981年,Stanford大學(xué)Hennessy等人的MIPS后來發(fā)展成了MIPS Rxxx系列微處理器。IBM的801共同特點:采用load-store結(jié)構(gòu)指令字長為32位采用高效的流水技術(shù)2.3 指令集結(jié)構(gòu)的功能設(shè)計控制指令是用來改變控制流的。 跳轉(zhuǎn):當(dāng)指令是無條件改變控制流時,稱之為跳轉(zhuǎn)指令。分支:當(dāng)控制指令是有條件改變控制流時,則稱之為分支指令。 能夠改變控制流的指令分支跳轉(zhuǎn)過程調(diào)用過程返回2.3.3 控制指令2.3 指令集結(jié)構(gòu)的功能設(shè)計控制指令的使用頻度 (load-store型指令集結(jié)構(gòu)的機器,基準(zhǔn)程序為SPEC CPU2000)
21、指令類型 使用頻度 整型平均 浮點平均 調(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é)果放入任何一個寄存器,檢測時就檢測該寄存器 簡單 占用了一個寄存器 比較與分支 比較操作是分支指令的一部分,通常這種比較是受到一定限制的 用一條指令(而不是兩條
22、)就能實現(xiàn)分支 當(dāng)采用流水方式時,該指令的操作可能太多,在一拍內(nèi)做不完 2.3 指令集結(jié)構(gòu)的功能設(shè)計轉(zhuǎn)移目標(biāo)地址的表示最常用的方法 在指令中提供一個偏移量,由該偏移量和程序計數(shù)器(PC)的值相加而得出目標(biāo)地址。 (PC相對尋址)優(yōu)點有效地減少表示該目標(biāo)地址所需要的位數(shù)。位置無關(guān)(代碼可被裝載到主存的任意位置執(zhí)行)。關(guān)鍵:確定偏移量字段的長度模擬結(jié)果表明:采用48位的偏移量字段(以指令字為單位)就能表示大多數(shù)控制指令的轉(zhuǎn)移目標(biāo)地址了。2.3 指令集結(jié)構(gòu)的功能設(shè)計過程調(diào)用和返回除了要改變控制流之外,可能還要保存機器狀態(tài),至少也得保存返回地址(放在專用的鏈接寄存器或堆棧中)。過去有些指令集結(jié)構(gòu)提供了
23、專門的保存機制來保存許多寄存器的內(nèi)容?,F(xiàn)在較新的指令集結(jié)構(gòu)則要求由編譯器生成load和store指令來保存或恢復(fù)寄存器的內(nèi)容。 數(shù)據(jù)表示:計算機硬件能夠直接識別、指令集可以直接調(diào)用的數(shù)據(jù)類型。所有數(shù)據(jù)類型中最常用、相對比較簡單、用硬件實現(xiàn)比較容易的幾種。 數(shù)據(jù)結(jié)構(gòu):由軟件進行處理和實現(xiàn)的各種數(shù)據(jù)類型。研究:這些數(shù)據(jù)類型的邏輯結(jié)構(gòu)與物理結(jié)構(gòu)之間的關(guān) 系,并給出相應(yīng)的算法。 系統(tǒng)結(jié)構(gòu)設(shè)計者要解決的問題:如何確定數(shù)據(jù)表示?(軟硬件取舍折中的問題)2.4 操作數(shù)的類型和大小2.4 操作數(shù)的類型和大小表示操作數(shù)類型的方法有兩種由指令中的操作碼指定操作數(shù)的類型。帶標(biāo)志符的數(shù)據(jù)表示。給數(shù)據(jù)加上標(biāo)識,由數(shù)據(jù)本
24、身給出操作數(shù)類型。優(yōu)點:簡化指令集,可由硬件自動實現(xiàn)一致性檢查和類型轉(zhuǎn)換,縮小了機器語言與高級語言的語義差距,簡化編譯器等。缺點:由于需要在執(zhí)行過程中動態(tài)檢測標(biāo)志符,動態(tài)開銷比較大,所以采用這種方案的機器很少見。操作數(shù)的大?。翰僮鲾?shù)的位數(shù)或字節(jié)數(shù)。主要的大?。鹤止?jié)(8位)、半字(16位) 字(32位)、雙字(64位)2.4 操作數(shù)的類型和大小字符:用ASCII碼表示,為一個字節(jié)大小。整數(shù):用二進制補碼表示,其大小可以是字節(jié)、半字或單字。浮點操作數(shù):單精度浮點數(shù)(1個字)、雙精度浮點數(shù)(雙字)。 一般都采用IEEE 754浮點標(biāo)準(zhǔn)十進制操作數(shù)類型壓縮十進制或二進制編碼十進制(BCD碼):用4位二
25、進制編碼表示數(shù)字09,并將兩個十進制數(shù)字合并到一個字節(jié)中存儲。非壓縮十進制:將十進制數(shù)直接用字符串來表示。訪問不同操作數(shù)大小的頻度(SPEC基準(zhǔn)程序 )操作數(shù)大小 訪問頻度 整型平均 浮點平均 字節(jié) 7% 0% 半字 19% 0% 單字 74% 31% 雙字 0% 69% 基準(zhǔn)程序?qū)巫趾碗p字的數(shù)據(jù)訪問具有較高的頻度。 一臺32位的機器應(yīng)該支持8、16、32位整型操作數(shù)以及32位和64位的IEEE 754標(biāo)準(zhǔn)的浮點操作數(shù)。指令由兩部分組成:操作碼、地址碼指令格式的設(shè)計 確定指令字的編碼方式,包括操作碼字段和地址碼字段的編碼和表示方式。操作碼的編碼比較簡單和直觀Huffman編碼法 減少操作碼的
26、平均位數(shù),但所獲得的編碼是變長的,不規(guī)整,不利于硬件處理。 固定長度的操作碼 保證操作碼的譯碼速度。 2.5 指令格式的設(shè)計2.5 指令格式的設(shè)計兩種表示尋址方式的方法將尋址方式編碼于操作碼中,由操作碼描述相應(yīng)操作的尋址方式。適合:處理機采用load-store結(jié)構(gòu),尋址方式只有很少幾種。設(shè)置專門的地址描述符,由地址描述符表示相應(yīng)操作數(shù)的尋址方式。 適合:處理機具有多種尋址方式,且指令有多個操作數(shù)。2.5 指令格式的設(shè)計考慮因素機器中寄存器的個數(shù)和尋址方式的數(shù)目對指令平均字長的影響以及它們對目標(biāo)代碼大小的影響。所設(shè)計的指令格式便于硬件處理,特別是流水實現(xiàn)。指令字長應(yīng)該是字節(jié)(8位)的整數(shù)倍,而
27、不能是隨意的位數(shù)。指令集的3種編碼格式 變長編碼格式、定長編碼格式、混合型編碼格式2.5 指令格式的設(shè)計變長編碼格式當(dāng)指令集的尋址方式和操作種類很多時,這種編碼格式是最好的。用最少的二進制位來表示目標(biāo)代碼??赡軙垢鳁l指令的字長和執(zhí)行時間相差很大。2.5 指令格式的設(shè)計定長編碼格式將操作類型和尋址方式一起編碼到操作碼中。當(dāng)尋址方式和操作類型非常少時,這種編碼格式非常好??梢杂行У亟档妥g碼的復(fù)雜度,提高譯碼的速度。大部分RISC的指令集均采用這種編碼格式。2.5 指令格式的設(shè)計混合型編碼格式提供若干種固定的指令字長。以期達到既能夠減少目標(biāo)代碼長度又能降低譯碼復(fù)雜度的目標(biāo)。32個64位通用寄存器(
28、GPRs)R0,R1,R31也被稱為整數(shù)寄存器R0的值永遠是032個64位浮點數(shù)寄存器(FPRs)F0,F(xiàn)1,F(xiàn)312.6 MIPS指令集結(jié)構(gòu)介紹MIPS64的一個子集,簡稱為MIPS。2.6.1 MIPS的寄存器2.6 MIPS指令集結(jié)構(gòu)用來存放32個單精度浮點數(shù)(32位),也可以用來存放32個雙精度浮點數(shù)(64位)。存儲單精度浮點數(shù)(32位)時,只用到FPR的一半,其另一半沒用。一些特殊寄存器它們可以與通用寄存器交換數(shù)據(jù)。例如,浮點狀態(tài)寄存器用來保存有關(guān)浮點操作結(jié)果的信息。2.6 MIPS指令集結(jié)構(gòu)MIPS的數(shù)據(jù)表示整數(shù)字節(jié)(8位) 半字(16位)字(32位) 雙字(64位)浮點數(shù)單精度浮
29、點數(shù)(32位) 雙精度浮點數(shù)(64位)字節(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種指令格式
30、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)移目標(biāo)地址:Regsrsimmediate,rt無用寄存器跳轉(zhuǎn)、寄存器跳轉(zhuǎn)并鏈接 轉(zhuǎn)移目標(biāo)地址為Regsr
31、s2.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)浮點操作符號的意義 xny:從y傳送n位到xx,yz:把z傳送到x和y 2.6.5 MIPS的操作2.6 MIPS指令集結(jié)構(gòu)下標(biāo):表示字段中具體的位;對于指令和數(shù)據(jù),
32、按從最高位到最低位(即從左到右)的順序依次進行編號,最高位為第0位,次高位為第1位,依此類推。下標(biāo)可以是一個數(shù)字,也可以是一個范圍。例如:RegsR40:寄存器R4的符號位 RegsR456.63:R4的最低字節(jié)Mem:表示主存;按字節(jié)尋址,可以傳輸任意個字節(jié)。上標(biāo):用于表示對字段進行復(fù)制的次數(shù)。例如:0 32:一個32位長的全0字段2.6 MIPS指令集結(jié)構(gòu)符號#:用于兩個字段的拼接,并且可以出現(xiàn)在數(shù)據(jù)傳送的任何一邊。舉例:R8、R10:64位的寄存器,則RegsR832.63 32 (Mem RegsR60)24 # Mem RegsR6表示的意義是: 以R6的內(nèi)容作為地址訪問內(nèi)存,得到的
33、字節(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+RegsR3 LH R2,30(R3) 裝入半字
34、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 加無符號立即數(shù) RegsR4 RegsR5+6 LUIR1,#4 把立即數(shù)裝入到一個字的高16位 RegsR1 032 # 4 # 016DSLLR1,R2,#5 邏輯左移 RegsR
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年度山西省高校教師資格證之高等教育心理學(xué)通關(guān)提分題庫(考點梳理)
- 2023年滋補類藥品資金申請報告
- 2023年高性能鐵氧體一次磁粉資金需求報告
- 安全培訓(xùn)總結(jié)及效果評價
- 2024年新鮮度保障冷藏運輸協(xié)議范例
- 2024年擔(dān)保協(xié)議法律效力分析
- 地方政府招商中介服務(wù)協(xié)議樣本
- 2024年軟件系統(tǒng)定制協(xié)議模板大全
- 彩鋼建筑安裝工程協(xié)議2024年詳規(guī)
- 2024年協(xié)議附加條款定制模板
- 責(zé)任保險行業(yè)發(fā)展趨勢及前景展望分析報告
- 辦公室租賃協(xié)議樣本
- 醫(yī)學(xué)美容技術(shù)專業(yè)《美容禮儀》課程標(biāo)準(zhǔn)
- 國能遼寧北票 200MW 風(fēng)力發(fā)電項目地質(zhì)災(zāi)害危險性評估報告
- 國家開放大學(xué)??啤斗ɡ韺W(xué)》(第三版教材)形成性考核試題及答案
- 計量基礎(chǔ)知識考核試題及參考答案
- 智慧醫(yī)聯(lián)體建設(shè)項目可行性研究報告
- 混合痔中醫(yī)護理 方案
- 2024年中考英語題型復(fù)習(xí):閱讀理解(含練習(xí)題及答案)
- 2024-2030年中國農(nóng)業(yè)機械產(chǎn)業(yè)發(fā)展格局與需求趨勢預(yù)測研究報告
- DZ∕T 0214-2020 礦產(chǎn)地質(zhì)勘查規(guī)范 銅、鉛、鋅、銀、鎳、鉬(正式版)
評論
0/150
提交評論