計算機指令集結(jié)構(gòu)設(shè)計.ppt_第1頁
計算機指令集結(jié)構(gòu)設(shè)計.ppt_第2頁
計算機指令集結(jié)構(gòu)設(shè)計.ppt_第3頁
計算機指令集結(jié)構(gòu)設(shè)計.ppt_第4頁
計算機指令集結(jié)構(gòu)設(shè)計.ppt_第5頁
已閱讀5頁,還剩85頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第二章 計算機指令集結(jié)構(gòu)設(shè)計,國防科技大學(xué)計算機學(xué)院,指令集結(jié)構(gòu)概述,指令集: 一些指令的集合; 每條指令都是直接由CPU硬件執(zhí)行。 指令的表示方法: 二進制格式; 物理存儲空間組織方式是位、字節(jié)、字和多字等; 當(dāng)前的指令字長有:16、32、64位; 可變長格式和固定長度格式。,指令的特點,指令的操作十分簡單,其操作由操作碼編碼表示。 每個操作需要的操作數(shù)個數(shù)為0-3個不等。 操作數(shù)是一些存儲單元的地址; 典型的存儲單元通常有:主存、寄存器、堆棧和累加器。 操作數(shù)地址隱含表示或顯式表示。,指令集與計算機的性能,內(nèi)容提要,指令集結(jié)構(gòu)的分類 尋址技術(shù)設(shè)計 指令集結(jié)構(gòu)的功能設(shè)計 操作數(shù)的類型、表示和大小 指令集格式的設(shè)計 DLX指令集結(jié)構(gòu) DLX指令集結(jié)構(gòu)效能分析,指令集結(jié)構(gòu)的分類,一般來說,可以從如下五個因素考慮對計算機指令集結(jié)構(gòu)進行分類,即: 在CPU中操作數(shù)的存儲方法; 指令中顯式表示的操作數(shù)個數(shù); 操作數(shù)的尋址方式; 指令集所提供的操作類型; 操作數(shù)的類型和大小。,指令集結(jié)構(gòu)的分類,CPU中用來存儲操作數(shù)的存儲單元主要有: 堆棧; 累加器; 一組寄存器。 指令中的操作數(shù)可以被明確地顯式給出,也可以按照某種約定隱式地給出。,指令集結(jié)構(gòu)的分類,C=A+B表達式在這三種類型指令集結(jié)構(gòu)上的實現(xiàn)方法,指令集結(jié)構(gòu)的分類,如果指令集結(jié)構(gòu)根據(jù)CPU內(nèi)部存儲單元類型來進行分類,一般可以分為: 堆棧型指令集結(jié)構(gòu); 累加器型指令集結(jié)構(gòu); 通用寄存器型指令集結(jié)構(gòu)。 另外也有一些混合型結(jié)構(gòu)。如:Intel 8086的指令集結(jié)構(gòu)。,From IBM 650: 最早的指令集,累加器型指令集結(jié)構(gòu),計算一個數(shù)組加,+ index Register(IX),To IBM 360:GPR,IBM 360 16個32位寄存器,可做基址或變址 4個64位浮點寄存器 PSW ,堆棧型指令集,計算一個表達式,a,b,c,a,b*c,a+b*c,a+b*c,d,c,a+b*c,d*c,a+b*c,d*c,e,a+b*c,d*c-e,(a+b*c)/ (d*c-e),Expression,Reverse Polish,指令集結(jié)構(gòu)的分類,三種類型指令集結(jié)構(gòu)的優(yōu)缺點,指令集結(jié)構(gòu)的分類,早期的大多數(shù)機器都是采用堆棧型或累加器型指令集結(jié)構(gòu),但是自1980年以來的大多數(shù)機器均采用的是寄存器型指令集結(jié)構(gòu)。主要有兩個方面的原因: 集成電路技術(shù)飛速發(fā)展 寄存器和CPU內(nèi)部其它存儲單元一樣,要比存儲器快 對編譯器而言,可以更容易有效地分配和使用寄存器,通用寄存器型指令集結(jié)構(gòu)的分類,通用寄存器型指令集結(jié)構(gòu)的主要優(yōu)點: 在表達式求值方面,比其它類型指令集結(jié)構(gòu)都具有更大的靈活性; 寄存器可以用來存放變量; 減少存儲器的通信量,加快程序的執(zhí)行速度(因為寄存器比存儲器快) 可以用更少的地址位來尋址寄存器,從而可以有效改進程序的目標(biāo)代碼大小。 編譯器有效地使用寄存器;,通用寄存器型指令集結(jié)構(gòu)的分類,兩種主要的指令特性能夠?qū)⑼ㄓ眉拇嫫餍椭噶罴Y(jié)構(gòu)(GPR)進一步細分。 ALU指令到底有兩個或是三個操作數(shù)? 在ALU指令中,有多少個操作數(shù)可以用存儲器來尋址,也即有多少個存儲器操作數(shù)?,通用寄存器型指令集結(jié)構(gòu)的分類,通用寄存器型指令集結(jié)構(gòu)的分類,可以將當(dāng)前大多數(shù)通用寄存器型指令集結(jié)構(gòu)進一步細分為三種類型: 寄存器寄存器型 (RR:register-register) 寄存器存儲器型 (RM:register-memory) 存儲器存儲器型 (MM:memory-memory),三種通用寄存器型指令集結(jié)構(gòu)的優(yōu)缺點,寄存器寄存器型(0,3) 優(yōu)點: 簡單,指令字長固定,是一種簡單的代碼生成模型,各種指令的執(zhí)行時鐘周期數(shù)相近。 缺點: 和指令中含有對存儲器操作數(shù)訪問的結(jié)構(gòu)相比,指令條數(shù)多,因而其目標(biāo)代碼較大。,三種通用寄存器型指令集結(jié)構(gòu)的優(yōu)缺點,寄存器存儲器型(1,2) 優(yōu)點: 可以直接對存儲器操作數(shù)進行訪問,容易對指令進行編碼,且其目標(biāo)代碼較小。 缺點: 指令中的操作數(shù)類型不同。在一條指令中同時對一個寄存器操作數(shù)和存儲器操作數(shù)進行編碼,將限制指令所能夠表示的寄存器個數(shù)。由于指令的操作數(shù)可以存儲在不同類型的存儲器單元,所以每條指令的執(zhí)行時鐘周期數(shù)也不盡相同。,三種通用寄存器型指令集結(jié)構(gòu)的優(yōu)缺點,存儲器存儲器型(3,3) 優(yōu)點: 是一種最緊密的編碼方式,無需“浪費”寄存器保存變量。 缺點: 指令字長多種多樣。每條指令的執(zhí)行時鐘周期數(shù)也大不一樣,對存儲器的頻繁訪問將導(dǎo)致存儲器訪問瓶頸問題。,指令集結(jié)構(gòu)設(shè)計概觀,尋址技術(shù),在通用寄存器型指令集結(jié)構(gòu)中,一般是利用尋址方式指明指令中的操作數(shù)是一個常數(shù)、一個寄存器操作數(shù),抑或是一個存儲器操作數(shù)。,尋址技術(shù),尋址實際上是從形式地址到實際地址的轉(zhuǎn)換。形式地址由指令描述,實際地址也稱為有效地址。 有效地址指明的是存儲器單元的地址或寄存器地址。 必須加速有效地址生成。,常用的一些操作數(shù)尋址方式,寄存器尋址 指令實例:Add R4 , R3 含義:RegsR4RegsR4RegsR3 立即值尋址 指令實例:Add R4 , #3 含義:RegsR4RegsR43,常用的一些操作數(shù)尋址方式,偏移尋址 指令實例:Add R4 , 100(R1) 含義: RegsR4RegsR4Mem100+RegsR1 寄存器間接尋址 指令實例:Add R4 , (R1) 含義: RegsR4RegsR4MemRegsR1,常用的一些操作數(shù)尋址方式,索引尋址 指令實例:Add R3 , (R1 + R2) 含義: RegsR3RegsR3MemRegsR1+RegsR2 直接尋址或絕對尋址 指令實例:Add R1 , (1001) 含義: RegsR1RegsR1Mem1001,常用的一些操作數(shù)尋址方式,存儲器間接尋址 指令實例:Add R1 , (R3) 含義: RegsR1RegsR1MemMemRegsR3 自增尋址 指令實例:Add R1 , (R2)+ 含義: RegsR1RegsR1MemRegsR2 RegsR2RegsR2d,常用的一些操作數(shù)尋址方式,自減尋址 指令實例:Add R1, -(R2) 含義: RegsR2RegsR2d RegsR1RegsR1+MemRegsR2 縮放尋址 指令實例:Add R1 , 100(R2)R3 含義: RegsR1RegsR1Mem100RegsR2RegsR3*d,常用的一些操作數(shù)尋址方式,偏移尋址,立即址尋址,立即址尋址,指令集結(jié)構(gòu)的功能設(shè)計,一種指令集結(jié)構(gòu)中的指令到底要支持哪些類型的操作呢?這就是所謂的指令集結(jié)構(gòu)功能設(shè)計問題。,指令集操作的分類,指令集結(jié)構(gòu)功能設(shè)計方向,一個方向是強化指令功能,實現(xiàn)軟件功能向硬件功能轉(zhuǎn)移,基于這種指令集結(jié)構(gòu)而設(shè)計實現(xiàn)的計算機系統(tǒng)稱為復(fù)雜指令集計算機(CISC)。 八十年代發(fā)展起來的精簡指令集計算機(RISC),其目的是盡可能地降低指令集結(jié)構(gòu)的復(fù)雜性,以達到簡化實現(xiàn),提高性能的目的。,CISC指令集功能設(shè)計,面向目標(biāo)程序增強指令功能 提高運算型指令功能; 提高傳送指令功能; 增加程序控制指令功能。 面向高級語言和編譯程序改進指令系統(tǒng) 增加對高級語言和編譯系統(tǒng)支持的指令功能; 高級語言計算機指令系統(tǒng)。,CISC指令集功能設(shè)計,面向操作系統(tǒng)的優(yōu)化實現(xiàn)改進指令系統(tǒng) 主要表現(xiàn)在對中斷處理、進程管理、存儲管理和保護、系統(tǒng)工作狀態(tài)的建立與切換等的支持。 可以設(shè)置支持系統(tǒng)工作狀態(tài)和訪問方式轉(zhuǎn)移的指令、支持進程轉(zhuǎn)移的指令、支持進程同步和互斥的指令等措施,達到優(yōu)化實現(xiàn)操作系統(tǒng)的目的。,RISC指令集功能設(shè)計,CISC結(jié)構(gòu)存在著如下缺點: 在CISC結(jié)構(gòu)的指令系統(tǒng)中,各種指令的使用頻率相差懸殊。據(jù)統(tǒng)計,有20的指令使用頻率最大,占運行時間的80。也就是說,有80的指令在20的運行時間內(nèi)才會用到。 CISC結(jié)構(gòu)指令系統(tǒng)的復(fù)雜性帶來了計算機體系結(jié)構(gòu)的復(fù)雜性,這不僅增加了研制時間和成本,而且還容易造成設(shè)計錯誤。,RISC指令集功能設(shè)計,CISC結(jié)構(gòu)指令系統(tǒng)的復(fù)雜性給VLSI設(shè)計增加了很大負擔(dān),不利于單片集成。 CISC結(jié)構(gòu)的指令系統(tǒng)中,許多復(fù)雜指令需要很復(fù)雜的操作,因而運行速度慢。 在CISC結(jié)構(gòu)的指令系統(tǒng)中,由于各條指令的功能不均衡性,不利于采用先進的計算機體系結(jié)構(gòu)技術(shù)(如流水技術(shù))來提高系統(tǒng)的性能。,RISC指令集功能設(shè)計,RISC指令集功能設(shè)計,進行RISC計算機指令集結(jié)構(gòu)的功能設(shè)計時,我們并不能簡單地著眼于精簡指令系統(tǒng)上,更重要的目的是使得計算機體系結(jié)構(gòu)更加簡單、更加合理和更加有效,克服CISC結(jié)構(gòu)的缺點,使機器速度更快,程序運行時間縮短,從而提高計算機系統(tǒng)的性能。,RISC指令集功能設(shè)計原則,選取使用頻率最高的指令,并補充一些最有用的指令; 每條指令的功能應(yīng)盡可能簡單,并在一個機器周期內(nèi)完成; 所有指令長度均相同; 只有l(wèi)oad和store操作指令才訪問存儲器,其它指令操作均在寄存器之間進行; 以簡單有效的方式支持高級語言。,控制指令,“跳轉(zhuǎn)”(Jump):當(dāng)控制指令為無條件改變控制流時,我們稱之為“跳轉(zhuǎn)”。 “分支”(Branch):而當(dāng)控制指令是有條件改變控制流時,我們稱之為“分支”。 控制流程的改變情況: 條件分支(conditional branch); 跳轉(zhuǎn)(jump); 過程調(diào)用(call); 過程返回(return)。,控制指令的使用頻率,條件分支指令的表示,分支目標(biāo)地址的表示,PC-相對尋址,過程調(diào)用和返回的狀態(tài)保存,“調(diào)用者保存”(caller saving)方法:如果采用調(diào)用者保存策略,那么在一個調(diào)用者調(diào)用別的過程時,必須保存調(diào)用者所要保存的寄存器,以備調(diào)用結(jié)束返回后,能夠再次訪問調(diào)用者。 “被調(diào)用者保存”(callee saving)方法:如果采用被調(diào)用者保存策略,那么被調(diào)用的過程必須保存它要用的寄存器,保證不會破壞過程調(diào)用者的程序執(zhí)行環(huán)境,并在過程調(diào)用結(jié)束返回時,恢復(fù)這些寄存器的內(nèi)容。,兩種保存策略的比較,操作數(shù)的類型、表示和大小,操作數(shù)類型和操作數(shù)表示也是軟硬件主要界面之一。 操作數(shù)類型是面向應(yīng)用、面向軟件系統(tǒng)所處理的各種數(shù)據(jù)結(jié)構(gòu)。 操作數(shù)表示是硬件結(jié)構(gòu)能夠識別、指令系統(tǒng)可以直接調(diào)用的那些結(jié)構(gòu)。,操作數(shù)的類型、表示和大小,操作數(shù)表示所表征的那些操作數(shù)類型,是應(yīng)用軟件和系統(tǒng)軟件所處理的操作數(shù)類型的子集。,操作數(shù)的類型、表示和大小,確定操作數(shù)表示實際上也是軟硬件取舍折衷的問題 計算機即使只具有最簡單的操作數(shù)表示,如只有整數(shù)(定點)表示法,也可以通過軟件方法處理各種復(fù)雜的操作數(shù)類型,但是這樣會大大降低系統(tǒng)的效率 如果各種復(fù)雜的操作數(shù)類型均包含在操作數(shù)表示之中,無疑會大大提高系統(tǒng)的效率,但是所花費的硬件代價也很高,操作數(shù)的類型、表示和大小,整數(shù)(定點):二進制補碼表示;其大小可以是字節(jié)(8位)、半字(16位)或單字(32位)。 浮點:可以分為單精度浮點(單字大?。┖碗p精度浮點(雙字大?。?。當(dāng)前普遍采用的是IEEE 754浮點操作數(shù)表示標(biāo)準(zhǔn)。 字符和字符串:8位ASCII碼表示。,操作數(shù)的類型、表示和大小,十進制:通常采用 “壓縮十進制”或“二進制編碼十進制”表示。壓縮十進制數(shù)據(jù)表示用4位編碼數(shù)字09,然后將兩個十進制數(shù)字壓縮在一個字節(jié)中存儲。如果將十進制數(shù)字直接用字符串來表示,就叫做“非壓縮十進制”表示法。 提供給壓縮十進制表示法和非壓縮十進制表示法兩者之間的相互轉(zhuǎn)換的操作分別稱為“壓縮”與“解壓”操作。,操作數(shù)的類型、表示和大小,操作數(shù)類型的表示主要有如下兩種方法: 操作數(shù)的類型可以由操作碼的編碼指定,這也是最常見的一種方法; 數(shù)據(jù)可以附上由硬件解釋的標(biāo)記,由這些標(biāo)記指定操作數(shù)的類型,從而選擇適當(dāng)?shù)倪\算。然而有標(biāo)記數(shù)據(jù)的機器卻非常少見。,操作數(shù)的類型、表示和大小,一般的操作數(shù)類型大小選擇主要有:字節(jié)、半字(16位)、單字(32位)、和雙字(64位)。,指令集格式的設(shè)計,指令集格式的設(shè)計就是要確定操作碼字段和地址碼字段的大小及其組合形式,以及各種尋址方式的編碼方法。 設(shè)計原則: 盡可能地增加寄存器數(shù)目和尋址方式類型 充分考慮寄存器字段和尋址方式字段對指令平均字長的影響,以及它們對目標(biāo)代碼大小的影響 設(shè)計出的指令集格式能夠在具體實現(xiàn)中容易處理,尋址方式的表示方法,兩種表示尋址方式的方法: 一種是將尋址方式編碼于操作碼中,由操作碼在描述指令操作的同時,也描述了相應(yīng)操作的尋址方式; 一種是為每個操作數(shù)設(shè)置一個地址描述符,由該地址描述符表示相應(yīng)操作數(shù)的尋址方式。,指令集格式的選擇,變長編碼方式:(重點:目標(biāo)代碼大小) 固定長度編碼方式:(重點:程序執(zhí)行性能),指令集格式的選擇,混合型編碼格式:,DLX指令集結(jié)構(gòu),Load/Store型指令集結(jié)構(gòu) DLX是一種多元指令集結(jié)構(gòu) 體現(xiàn)了當(dāng)今多種機器(AMD29K、DEC station 3100、HP850、IBM 801、Intel i860、MIPS M/120A、MIPS M/1000、Motorola 88k、RISC I、SGI4D/60、SPARC station 1、Sun 4/110、Sun 4/260等)的指令集結(jié)構(gòu)的共同特點。 還將會體現(xiàn)未來一些機器的指令集結(jié)構(gòu)的特點。,DLX指令集結(jié)構(gòu),具有一個簡單的Load/Store指令集; 注重指令流水效率; 簡化指令的譯碼; 高效支持編譯器。,DLX指令集結(jié)構(gòu):寄存器,32個32位的通用寄存器(GPRs)。 寄存器R0的內(nèi)容恒為全0。,DLX指令集結(jié)構(gòu):寄存器,32個32位浮點寄存器(FPRs)。 單精度浮點數(shù)表示和雙精度浮點數(shù)表示。,DLX指令集結(jié)構(gòu):數(shù)據(jù)類型,整型數(shù)據(jù): 8位、16位、32位。 浮點數(shù)據(jù): 32位單精度浮點; 64位雙精度浮點; IEEE 754標(biāo)準(zhǔn)。,DLX指令集結(jié)構(gòu):尋址方式,寄存器尋址; 立即值尋址; 偏移尋址; 寄存器間接尋址。存儲器地址寬度為32位。,DLX指令集結(jié)構(gòu):指令格式,DLX指令集結(jié)構(gòu):指令格式,DLX指令集結(jié)構(gòu):指令格式,DLX指令集結(jié)構(gòu):操作類型,Load和Store操作; ALU操作; 分支和跳轉(zhuǎn)操作; 浮點操作。,DLX指令集結(jié)構(gòu):操作類型,符號“”表示數(shù)據(jù)傳送操作,其后附帶一個下標(biāo)n,也即“n” 表示傳送一個n位數(shù)據(jù)。 符號“#”用來表示兩個域的串聯(lián)操作,它可以出現(xiàn)在數(shù)據(jù)傳送操作的任何一邊。,DLX指令集結(jié)構(gòu):操作類型,域的下標(biāo)用來表明從該域中選擇某一位。域中位的標(biāo)記是從最高位開始標(biāo)記,并且起始標(biāo)記為0。下標(biāo)可以是一個單獨的數(shù)字,如RegsR40表示選擇寄存器R4中內(nèi)容的符號位;下標(biāo)也可以是一個范圍,如RegsR32431表示選擇寄存器R3中內(nèi)容的最低一個字節(jié)。,DLX指令集結(jié)構(gòu):操作類型,上標(biāo)表示復(fù)制一個域,如024可以得到一個24位全為0的一個域。 變量Mem用來表示存儲器中的一個數(shù)組,存儲器按照字節(jié)尋址,它可以傳送任何數(shù)目的字節(jié)。,DLX指令集結(jié)構(gòu):操作類型,RegsR101631 16 (MemRegsR80)8 # MemRegsR8,00000000000000000000000000000000,R8,10000101,11111111,1111111110000101,0000000000000000 1111111110000101,R10,DLX指令集結(jié)構(gòu):操作類型,Load和Store操作:可以對DLX的所有通用寄存器和浮點寄存器進行Load(載入)和Stor

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論