計算機系統(tǒng)結構第2章指令系統(tǒng)_第1頁
計算機系統(tǒng)結構第2章指令系統(tǒng)_第2頁
計算機系統(tǒng)結構第2章指令系統(tǒng)_第3頁
計算機系統(tǒng)結構第2章指令系統(tǒng)_第4頁
計算機系統(tǒng)結構第2章指令系統(tǒng)_第5頁
已閱讀5頁,還剩75頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1

第二章指令系統(tǒng)2

不同的實際機器有自己的指令系統(tǒng),如Intel的x86、SGI的MIPS32/MIPS64、SUN的SPARC、DEC的ALPHA,除了x86是CISC,其他的都是RISC。一種指令系統(tǒng)結構ISA(InstructionSetArchitecture)主要定義指令的格式、指令類型、操作數(shù)類型及尋址方式。3本章內(nèi)容2.1數(shù)據(jù)表示2.2指令類型與指令結構2.3尋址技術2.4指令格式的設計與優(yōu)化2.5CISC與RISC42.1數(shù)據(jù)表示

計算機系統(tǒng)中所處理的數(shù)據(jù)類型各種各樣如:文件、表、樹、隊列、鏈表、棧、向量、串、實數(shù)、整數(shù)、布爾數(shù)和字符等。

計算機系統(tǒng)結構要解決的問題是如何在硬件和軟件之間合理分配這些數(shù)據(jù)類型,即:系統(tǒng)所有的這些數(shù)據(jù)類型,哪些由硬件實現(xiàn),哪些用軟件來實現(xiàn)。5

數(shù)據(jù)表示指的是能由硬件直接識別的數(shù)據(jù)類型,也就是由指令系統(tǒng)處理的數(shù)據(jù)類型。不同的指令系統(tǒng)有差別。

一、常用數(shù)據(jù)類型6

例如:PentiumII的數(shù)據(jù)表示包括:8位、16位和32位帶符號和無符號整數(shù),二-十進制數(shù),32位和64位浮點數(shù),串數(shù)據(jù)。例如:UltraSPARCII的數(shù)據(jù)表示有:8位、16位、32位和64位帶符號和無符號整數(shù),32位、64位和128位浮點數(shù)。UltraSPARCII沒有提供硬件指令支持二-十進制數(shù)和串數(shù)據(jù)表示,但是它的浮點運算精度可以更高。7

在數(shù)據(jù)表示上,高級語言與機器語言一直存在語義差距。例,在C語言程序中,有以下語句:

inti,j floatx,y i=i+j x=x+y

二、自定義數(shù)據(jù)表示

例,機器語言加法指令:ADDR1,R2,R3FADDF1,F(xiàn)2,F(xiàn)38

為了在數(shù)據(jù)表示上縮小高級語言與機器語言的語義差距,有人提出在機器語言級實現(xiàn)自定義數(shù)據(jù)表示,即由數(shù)據(jù)本身定義自己的類型,同時也簡化了指令系統(tǒng)和編譯器。

自定義數(shù)據(jù)表示主要有帶標志符的數(shù)據(jù)表示和數(shù)據(jù)描述符數(shù)據(jù)表示。1.帶標志符的數(shù)據(jù)表示

帶標志符的數(shù)據(jù)表示是指在數(shù)據(jù)中采用若干位來表示數(shù)據(jù)的類型。9例如,早期的B7500大型機中,每個數(shù)據(jù)用三位標志符來區(qū)分8種數(shù)據(jù)類型,如下圖所示:

標志符雖然主要用于指明數(shù)據(jù)類型,也可用于指明所用信息類型。102.數(shù)據(jù)描述符數(shù)據(jù)表示

對于一組具有相同類型而且是連續(xù)存放的數(shù)據(jù),如向量、矩陣和多維數(shù)組,沒有必要讓每個數(shù)據(jù)都帶有相同的標志符,因此,可以采用數(shù)據(jù)描述符。11一、指令類型不同的機器的指令系統(tǒng)是不同的,但通常包括以下常用的指令類型。1.算術運算類如add,sub,mul,div2.邏輯運算類如and,or,xor3.移位操作類4.存儲器訪問類RISC只有l(wèi)oad/store能夠訪問主存,運算指令只能使用寄存器/立即數(shù)。CISC則可把訪存與運算結合。2.2指令類型與指令結構125.I/O訪問類型這類指令只出現(xiàn)在I/O地址空間與存儲器地址空間分開的指令系統(tǒng)中,如x86的ISA。大多數(shù)RISC的ISA使用單一地址空間,使用load/store訪問I/O端口。6.轉移控制類無條件轉移,條件轉移,子程序調用/返回7.浮點運算類如,fadd,fsub,fmul,fdiv8.系統(tǒng)控制類對于CPU狀態(tài)寄存器和控制寄存器的讀寫、OS調用、異常/中斷處理調用和返回等。13二、指令結構

ISA對操作數(shù)和結果存放的位置可采用以下三種結構:1.堆棧結構(Stack):兩個操作數(shù)及結果在棧頂2.累加器結構(Accumulator):一個操作數(shù)及結果在累加器中143.通用寄存器結構(GeneralPurposeRegister):(1)寄存器-存儲器結構:一個操作數(shù)在寄存器中,一個操作數(shù)在存儲器中(2)寄存器-寄存器結構:操作數(shù)及結果都在寄存器中15

下表給出了這三種指令結構實現(xiàn)Z=X+Y的指令代碼,其中X、Y、Z均在存儲器中。16

例如:*Java虛擬機JVM的Bytecode指令具有堆棧結構;*早期的6502和Z80指令屬于累加器結構;*x86是典型的寄存器-存儲器結構;*RISC的ISA都是寄存器-寄存器結構(也稱為Load/Store結構)17

從指令系統(tǒng)層來看,程序所處理的數(shù)據(jù)通常存放在主存儲器、寄存器、堆棧、I/O接口中,尋址技術就是指如何從這些存儲部件中獲得數(shù)據(jù)的技術。尋址技術主要討論存儲部件的編址方式和尋址方式。

在“計算機組成原理”課程中對指令的各種尋址方式有詳細的介紹,在本節(jié)我們更注重于分析和比較它們的特點。2.3尋址技術18操作數(shù)可以存放在主存儲器、寄存器、堆棧、I/O接口中,要訪問它們,必須對這些存儲部件的空間進行編址。編址方式主要涉及編址單位和編址空間。一.編址單位

存儲空間常用的編址單位有:字編址、字節(jié)編址和位編址。

多數(shù)機器按字節(jié)編址,通常主存的字長是4個字節(jié),而且多數(shù)機器允許按字節(jié)、單字、雙字訪問存儲器,因此編址單位與訪問存儲器的信息寬度不一致,從而產(chǎn)生數(shù)據(jù)如何在存儲器中存放的問題。2.3.1編址方式19

假設存儲器以字節(jié)為單位編址。一個字有4個字節(jié),在存儲器中的存放方法有兩種:小端方式與大端方式。例如:x86系列采用小端;SPARC采用大端。20

無論是小端還是大端存放,我們說下圖中一個字的存放是地址對準的,即4個字節(jié)具有相同的字地址(去掉最低2位的字節(jié)地址)。否則說地址沒有對準。

有的指令系統(tǒng)允許沒有對準的地址存放。有的指令系統(tǒng)不允許但出現(xiàn)了沒有對準,這時硬件會產(chǎn)生異常來通知CPU。21二.編址空間的組織需要編址的存儲部件主要有:通用寄存器、主存和I/O接口。它們的編址空間可以有以下3種組織方式。(1)三個地址空間

由于通用寄存器、主存儲器和I/O接口的工作速度和容量等性能差別較大,很多機器中對這3個地址空間進行獨立編址。也就是說,每個地址空間都從0開始編地址碼。CPU中的通用寄存器數(shù)量有限,訪問速度很快,其容量比主存儲器小得多,所需要的地址碼長度短。一般只有單一的直接尋址方式。22

三個地址空間獨立編址,由于每個地址空間都從0開始編碼,因此三個空間會有重疊,但是指令的操作碼和尋址方式會明確指出所訪問的是哪個地址空間。訪問I/O地址空間則需要設置專用的I/O指令。

如Intel80x86系列就采用三個地址空間獨立編址。23(2)二個地址空間CPU的通用寄存器獨立編址;

I/O接口寄存器和主存儲器統(tǒng)一編址,統(tǒng)一編址空間的高端地址一般用于I/O接口寄存器地址。

二個地址空間方式中,訪問主存的指令就能訪問I/O寄存器,可以減少指令條數(shù),但其問題是主存的地址空間會減小。如MIPS系列機就采用二個地址空間的組織方式。(3)一個地址空間

所有數(shù)據(jù)存儲單位統(tǒng)一編址,地址空間的低端地址是CPU的通用寄存器地址,高端地址是I/O接口寄存器地址。在有的單片機中,片內(nèi)存儲器容量不大,可采用一個地址空間,以減少指令種數(shù)。24

需要特別指出:計算機中的一些專用寄存器或寄存器組,如預取指令和數(shù)據(jù)的緩沖器,是不需要編址的,也可以說對匯編程序員是透明的。Cache存儲器映射的是相聯(lián)的主存內(nèi)容,不需要編址。堆棧型計算機中,數(shù)據(jù)的存取完全按照先進后出的方式進行,其存儲部件是不需要編址的。25

一條指令包括操作碼和地址碼,指令的功能就是根據(jù)操作碼對地址碼提供的操作數(shù)完成指定的操作。指令中以什么方式提供操作數(shù)或操作數(shù)地址,稱為尋址方式。CPU根據(jù)指令約定的尋址方式對地址字段的有關信息作出解釋,以找到操作數(shù)。每種機器的指令系統(tǒng)都有一套自己的尋址方式。不同計算機的尋址方式的分類和名稱并不統(tǒng)一,但大多數(shù)可以歸結為以下幾種類型。

2.3.2尋址方式26(1)立即尋址

(2)寄存器尋址(3)主存尋址

ⅰ.直接尋址方式

ⅱ.間接尋址方式

ⅲ.變址類尋址方式(4)堆棧尋址

一臺機器的指令系統(tǒng)可以采用多種尋址方式,那么在指令中如何區(qū)分它們呢?常見的方法有兩種:*操作碼隱含指定尋址方式;*指令中設置尋址方式字段。272.4指令格式的設計和優(yōu)化

設計者在選擇指令格式時,必須考慮許多因素。包括擴展新指令和利用在指令系統(tǒng)的使用周期中出現(xiàn)的新技術都是相當重要的。具體的設計原則主要有三條。一般情況下,短指令要優(yōu)于長指令。有足夠的空間表示所有的操作類型,還要考慮擴展??紤]地址碼的個數(shù)與每個地址碼中位的數(shù)量。28

例如,典型RISC機器MIPS的指令長度固定為32位:*操作碼6位;*訪存指令設計有3個地址碼,2個5位的寄存器地址,1個16位的主存地址偏移量,采用基址尋址方式訪問主存。

本節(jié)先描述與分析指令操作碼的三種編碼方式和地址碼的優(yōu)化,然后討論典型的CISC處理器PentiumII與RISC處理器SPARC的指令格式。29

一條指令是由操作碼和地址碼兩部分組成的。指令操作碼的優(yōu)化,就是指如何用最短的二進制位數(shù)來表示指令的操作信息,使程序中指令的平均操作碼長度最短。但是在實際機器中必須考慮指令的執(zhí)行效率。操作碼的編碼方式主要有三種:

定長操作碼、哈夫曼(Huffman)編碼和擴展編碼。2.4.1指令操作碼的優(yōu)化30一.定長操作碼

定長編碼是指所有指令的操作碼長度都是相等的。如果需要編碼的操作碼有n個,那么,定長操作碼的位數(shù)最少需要

位。例如用指令字中第一個字節(jié)(8位)表示操作碼。

這種方式有利于簡化硬件設計和減少指令譯碼時間,但是浪費了信息量。RISC(精簡指令系統(tǒng)計算機)基本上都以這種編碼方法為主,也適當采用擴展編碼。例如,SPARC指令中基本操作碼2位,但多數(shù)指令有擴展輔助操作碼。31二.哈夫曼編碼

哈夫曼(Huffman)編碼法的基本思想:當各種事件發(fā)生的概率不均等時,對發(fā)生概率最高的事件用最短的編碼來表示,而對出現(xiàn)概率較低的事件用較長的編碼來表示,以使事件編碼的平均位數(shù)縮短,從而減少處理時間。

使用哈夫曼編碼對操作碼進行優(yōu)化表示,就需要知道每種指令在程序中出現(xiàn)的概率(使用頻度),這是通過對大量已有的典型程序運行后進行統(tǒng)計得出來的。32例2-4假設某模型機共有n=10種不同的指令,經(jīng)統(tǒng)計各指令在程序中的使用頻度如表2-1所示。若操作碼用定長碼表示需要=4位。

表2-1某模型機指令使用頻度舉例指令使用頻度(pi)指

令使用頻度(pi)I10.25I60.08I20.20I70.05I30.15I80.04I40.10I90.03I50.08I100.0233表2-2操作碼哈夫曼編碼和擴展操作碼編碼指令頻度pi操作碼OP使用哈夫曼編碼OP長度li2-4擴展操作碼編碼OP長度liI10.25002002I20.20102012I3040.10110310014I50.080110410104I60.081110410114I70.0501110511004I80.0401111511014I90.0311110511104I100.021111151111434三.操作碼擴展編碼哈夫曼編碼具有最優(yōu)化的平均碼長,信息冗余量也接近理想值。但是,哈夫曼編碼形成的操作碼一般不規(guī)整,碼長種類多,不利于實現(xiàn)硬件譯碼和軟件編譯。實際機器中采用將定長操作碼與哈夫曼編碼結合形成的一種編碼方式,稱為操作碼擴展編碼。35表2-2操作碼哈夫曼編碼和擴展操作碼編碼指令頻度pi操作碼OP使用哈夫曼編碼OP長度li2-4擴展操作碼編碼OP長度liI10.25002002I20.20102012I3040.10110310014I50.080110410104I60.081110410114I70.0501110511004I80.0401111511014I90.0311110511104I100.0211111511114362.4.2地址碼的優(yōu)化表示

指令由操作碼和地址碼組成。由于下一條指令地址由程序計數(shù)器給出,因此地址碼只需要給出操作數(shù)和結果的地址。地址碼長度主要取決于地址碼個數(shù)、尋址方式、存儲設備(通用寄存器、主存和堆棧等)的編址方式和尋址空間大小等。

一.地址碼個數(shù)

指令的地址碼個數(shù)常見的有三個地址、二個地址、一個地址及零地址。37例如:在Intel80x86的指令系統(tǒng)中,指令地址格式有零地址、一地址和二地址3種形式。例如:RISC處理器以三地址指令為主,也設置少量二地址、一地址和零地址指令。

二.縮短地址碼的方法

采用寄存器直接尋址,或寄存器間接尋址。采用基址或變址尋址方式縮短地址碼長度。采用存儲器間接尋址方式縮短地址長度。382.4.3指令格式設計實例

設計指令格式時,需要考慮指令的長度是采用固定的長度,還是采用可變長度。

目前多數(shù)復雜指令系統(tǒng)集計算機CISC都采用可變長度指令,如Intel80x86系列。而精簡指令系統(tǒng)計算機RISC則一般采用固定長度指令,如SPARC、MIPS。下面以典型的CISC的處理器PentiumII與RISC處理器SPARC為例討論其指令格式。39一.PentiumII指令格式PentiumⅡ的指令格式相當復雜:一是要與Intel80x86兼容,而80x86的指令格式就比較復雜;二是PentiumⅡ對地址和數(shù)據(jù)的32位擴展,以及增加了尋址方式的靈活性。圖2-14給出了PentiumⅡ的指令格式,最多具有6個變長域,只有操作碼字段是必須出現(xiàn)的。指令前綴一般根據(jù)需要選用,并放在指令前面。在Pentium機器碼程序中,大部分指令并無前綴,它們使用默認的條件進行操作。40圖2-14PentiumⅡ指令格式411、指令前綴部分指令前綴有4種:

第1種包括4條前綴指令:LOCK、REP、REPE、REPNE。

第2種段指定,顯式地指定該指令使用哪個寄存器。

第3種操作數(shù)長度指定,用于寄存器數(shù)據(jù)寬度切換。

第4種地址長度指定,用于存儲器地址寬度切換。422、指令部分指令本身包括以下字段:(1)OPCODE:定義指令類型,寄存器數(shù)據(jù)寬度,及操作結果存入寄存器還是存儲器。(2)MOD/RM:分3個字段MOD、REG、RM。REG(3位):定義一個寄存器尋址的操作數(shù)。MOD(2位)與RM(3位):定義另一個操作數(shù)的尋址方式。包括8個寄存器尋址和24種存儲器尋址。43(3)SIB當MOD/RM=00/100時,使用SIB以說明比例變址尋址方式。(4)DISP如果MOD/RM定義的尋址方式需要位移量(即形式地址),由DISP字段給出,可以是8位、16位或32位。(5)IMME如果指令有立即數(shù),由IMME給出,可以是8位、16位或32位。

44PentiumⅡ指令地址格式包括二地址、一地址和零地址3種形式。在80x86體系結構發(fā)展的過程中,所有的操作碼已經(jīng)用完,因此操作碼0xFF作為出口碼(escapecode),以表示本條指令的操作碼是兩字節(jié)的。PentiumII的操作碼通常需要完全譯碼后才能確定執(zhí)行哪一類操作,同樣,指令的長度也只有在操作碼譯碼后才能知道,也就是譯碼后才能確定下一條指令的起始地址。這就使實現(xiàn)更高的性能如多條指令重疊或同時執(zhí)行變得更為困難,這也是可變長度指令都存在的問題。45二.SPARC指令格式

SPARC(ScalableProcessorArchitecture)是指由Sun公司定義的一種RISC處理器結構。Sun已經(jīng)研制了自己的SPARC處理器,而且也許可其他廠商生產(chǎn)SPARC兼容機。461、SPARC基本指令格式SPARC所有指令的長度固定為32位。其基本指令格式如下圖:指令最高兩位操作碼(op)定義指令格式,基本指令格式只有3種:*格式1專為CALL指令而設;*格式2為SETHI(置高位)和BRANCH(轉移)指令而設;

*常用算術邏輯指令、LOAD/STORE指令及其他指令均使用格式3

。47

第2個操作碼op2用于區(qū)分BRANCH、SETH等指令。第3個操作碼op3是定義指令操作的,每條指令只定義一個單獨的操作。opc是協(xié)處理機指令操作碼,opf是浮點處理機指令操作碼。

2、指令格式3

指令格式3中,大多數(shù)指令的第1個源操作數(shù)rs1是寄存器操作數(shù);第2個可能是寄存器rs2,也可能是立即數(shù)simm13;而目的地址一般均是寄存器rd(除了store外)。整數(shù)算術邏輯運算指令是將rs1與rs2的內(nèi)容(或simm13)按操作碼op3規(guī)定的操作運算后把結果送往rd,其功能可以描述為:當格式第13位i=0時,(rs1)op3(rs2)→rd

當i=1時,(rs1)op3simm13→rd4849

LOAD指令將存儲器中的數(shù)據(jù)取出送到rd中,而STORE指令將rd中的數(shù)據(jù)存到存儲器中。存儲器地址的計算方法如下(寄存器間接尋址方式):當i=0時,存儲器地址=(rs1)+(rs2)當i=1時,存儲器地址=(rs1)+simm13503、指令格式2由于指令長度是32位,因此不能在指令中包括32位常量。SETHI指令只能設置22位常量,而把剩下的10位留給其他指令去實現(xiàn)。非預取的條件轉移指令由cond字段決定測試哪種條件。a位用于延遲轉移控制,當a=0時,跟在轉移指令下面的指令總是被執(zhí)行;當a=1時,只在條件轉移指令轉移成功時,跟在轉移指令下面的指令才被執(zhí)行。5152隨著技術的發(fā)展,新的指令格式被添加進來,新格式是通過把原來的一個字段分成不同的字段得到的。

例如,最初的轉移指令使用格式2,有22位的偏移量。當加入分支預取指令時,22位中的3位被移作他用,其中1位用于預測(預測/不預測),其他兩位用于定義使用的條件碼位集合,只剩下19位的偏移量。SPARC的指令格式、指令類型和尋址方式相對簡單,可以認為是RISC體系結構的代表。532.5指令系統(tǒng)的改進

精簡指令系統(tǒng)計算機RISC是20世紀80年代提出的一種新的設計思想。目前市場上很多處理機都采用了RISC體系結構,如SUN公司的SPARC、SuperSPARC、UtraSPARC,MIPS公司的MIPSR4000、R6000、R10000,IBM公司的Power、PowerPC,Intel公司的80860、80960,DEC公司的Alpha,Motorola公司的88100等。此外,一些典型的復雜指令系統(tǒng)計算機CISC的處理機設計時也吸收一些RISC的設計思想,如Intel公司的80486和Pentium系列。

本節(jié)先介紹CISC、RISC的特點,然后以兩個典型的RISC處理器MIPSR4000與SPARC為例,討論其指令系統(tǒng)。計算機的發(fā)展,使指令系統(tǒng)越來越龐大、復雜,這屬于CISC——復雜指令系統(tǒng)計算機。如,P6指令系統(tǒng)比8086除了在基本指令上有較大的增強外,還增加了57條MMX(Multi-MediaeXtension)指令及70條流式SIMD擴展指令,隨著Intel的PC機的不斷升級,考慮與以前指令系統(tǒng)的兼容性,其指令系統(tǒng)必將不斷擴張。一.從CISC到RISC2.5.1CISC與RISC的特點55CISC指令系統(tǒng)存在的問題:20%與80%規(guī)律----是否需要精簡指令系統(tǒng)

CISC中,大約20%的指令占據(jù)了80%的處理機時間。如,8088處理機的指令種類約100種:前11種(11%)指令的使用頻度已經(jīng)超過80%

前8種(8%)指令的運行時間已經(jīng)超過80%

前20種(20%)指令:使用頻度達到91.1%,運行時間達到97.72%其余80%指令:使用頻度只有8.9%,只占2.28%的處理機運行時間56VLSI技術的發(fā)展引起的問題CISC處理器指令格式不規(guī)整,尋址方式復雜,有大量的復雜指令,控制邏輯不規(guī)整,VLSI要求規(guī)整;而RISC控制簡單,符合VLSI要求。CISC常用微程序實現(xiàn)復雜指令系統(tǒng);而RISC使用簡單指令,可以不用微程序實現(xiàn)。軟、硬件的功能分配問題CISC支持目標程序優(yōu)化,支持高級語言和操作系統(tǒng),增加了復雜指令,使硬件復雜化,使執(zhí)行時間加長。

但是,由于CISC增加了指令系統(tǒng)功能,簡化了軟件。5770年代,指令系統(tǒng)已非常龐大,指令功能相當復雜。1975年,IBM公司率先組織力量開始研究指令系統(tǒng)的合理性問題1979年研制出世界上第一臺采用RISC思想的計算機IBM8011986年,IBM正式推出采用RISC體系結構的工作站IBMRTPC58二.RISC的特點*運算類指令只能訪問寄存器;*采用LOAD/STORE結構;*較少的指令數(shù)和尋址方式;*固定的指令格式;*面向寄存器的結構;*硬布線控制邏輯;*注重編譯的優(yōu)化;*大多數(shù)指令在一個周期內(nèi)完成;59

1981年加州伯克利分校的DavidPatterson等人研制出了32位RISCI微處理器:其指令系統(tǒng)的31種指令包括:12種算術邏輯指令,8種訪問存儲器的指令,7種程序控制指令和4種其他指令。指令字長度固定為32位,以三地址指令為主,有少量二地址和一地址指令,可識別三種數(shù)據(jù)類型。只有變址尋址和相對尋址兩種尋址方式。按字節(jié)編址,只有LOAD/STORE指令可以訪問存儲器,其他指令的操作都在通用寄存器之間進行。時鐘頻率為8MHz,所有指令都在一個機器周期(500ns)完成。78個通用寄存器,將它們分為多個寄存器窗口提供給相應過程使用,即采用重疊寄存器窗口技術。控制器占CPU面積的6%,其余用于寄存器。當時CISC的MC68000的控制器占芯片的50%,故無法安排數(shù)量眾多的寄存器,只能更多地訪問存儲器。60隨著計算機技術的不斷發(fā)展,RISC的設計思想也有了一些發(fā)展變化,更強調所設計的指令系統(tǒng)支持流水線的高效率執(zhí)行,并支持編譯器生成優(yōu)化代碼。RISC為了使流水線高效率執(zhí)行,應具有以下特征:簡單而統(tǒng)一的指令格式,指令長度相同,加快指令譯碼;大部分指令在單周期完成;只有LOAD/STORE指令能夠訪問主存;簡單的尋址方式;采用延遲轉移技術;RISC為了支持編譯器生成優(yōu)化代碼,應具有以下特征:三地址指令格式;較多的寄存器;規(guī)整的指令格式:如操作碼與尋址方式相互獨立。61三.減少CPI是RISC思想的精華程序執(zhí)行時間的計算公式:P=IC·CPI·T其中:

P:執(zhí)行這個程序所使用的總的時間;

IC:這個程序所需執(zhí)行的總的指令條數(shù);

CPI(CyclesPerInstruction):每條指令執(zhí)行的平均周期數(shù)

T是一個周期的時間長度。62類型指令條數(shù)IC指令平均周期數(shù)CPI時鐘周期CISC12~1533~5nsRISC1.3~1.41.1~1.410~2nsRISC的速度要比CISC快3倍左右,關鍵是RISC的CPI減小了。63RISC的出現(xiàn)是計算機系統(tǒng)結構發(fā)展最重要的變革之一。

一方面CISC通過吸收RISC設計思想提高了傳統(tǒng)機器的性能。例如,Intel公司的80x86處理機的指令平均周期數(shù)在不斷縮小,8086的CPI約為20,80286的CPI約為5.5,80386的CPI約為4,80486的CPI接近2。P4將指令譯碼后轉換成RISC的uop以加快流水線的執(zhí)行效率。

另一方面,RISC指令系統(tǒng)也開始采用一些復雜而必要的指令,如支持操作系統(tǒng)的指令,使RISC計算機結構也日益復雜。部分RISC的邏輯實現(xiàn)采用硬聯(lián)和微程序相結合,讓大多數(shù)簡單指令用硬聯(lián)方式實現(xiàn),功能較復雜的指令允許用微程序解釋實現(xiàn)。從目前的發(fā)展趨勢來看,RISC與CISC的優(yōu)勢互補和技術交融將會持續(xù)下去。

642.5.2RISC指令系統(tǒng)實例一.MIPSR4000指令系統(tǒng)

MIPSTechnology公司推出MIPSR2000、R3000微處理器芯片,具有相同的32位系統(tǒng)結構和指令系統(tǒng)。MIPSR4000所有內(nèi)部和外部數(shù)據(jù)路徑和地址、寄存器以及ALU都是64位的,其指令系統(tǒng)是保持兼容的。

65R4000處理器包括兩個部分:CPU、存儲管理協(xié)處理器。R4000設置了32個64位通用寄存器:$0~$31$0寄存器的值固定為0,是一個特殊寄存器。因此,存放數(shù)據(jù)的寄存器只有31個。R4000包括:64KB指令Cache、64KB的數(shù)據(jù)Cache。

相對較大的Cache允許系統(tǒng)保持更多的程序代碼和局部數(shù)據(jù),從而減少了訪存沖突和提高了指令速度。661.MIPS的指令格式

MIPS的指令采用32位固定長度,支持三地址指令。指令格式有3種,包括立即數(shù)型、轉移型和寄存器型,如圖2-16所示。MIPS的尋址方式只有3種:立即數(shù)尋址方式、寄存器尋址方式、以及基址加16位偏移量的訪存尋址方式。67圖2-16MIPS的指令格式/Address682.MIPS指令集MIPS基本指令集有8類指令,具體包括:LOAD/STORE指令、算術指令(含立即數(shù))、算術指令(三地址,寄存器尋址)、移位指令、乘/除指令、跳轉和分支指令、協(xié)處理器指令以及專門指令。

所有運算操作都基于寄存器;只有LOAD/STORE指令能夠訪問主存儲器。R4000沒有存放條件碼的專用寄存器。如果一條指令產(chǎn)生某個條件,其相應的標志存于一個通用寄存器中。這可以避免采用專門處理條件代碼的邏輯,因為它們影響流水線的執(zhí)行和編譯器對指令的重排序。而且,采用了處理寄存器值相關專用數(shù)據(jù)通路,以保證流水線的高效率。69MIPS實現(xiàn)的是最簡單常用的存儲器尋址方式---基址尋址,即地址是由一個存放在寄存器中的基地址與相對該基址的一個16偏移量相加獲得。

例如,裝入字指令LW的具體使用形式如下:lwr2,128(r3);((r3)+128)→r2MIPS的編譯器使用多條機器指令的合成來實現(xiàn)普通機器中的典型尋址方式。70二.SPARC指令系統(tǒng)

SPARC處理器的設計借鑒了美國加州大學巴克利分校研制的RISCI機器,它的指令集和寄存器組織基本上基于RISCI。1.重疊寄存器窗口技術

RISC處理器的指令系統(tǒng)較簡單,CISC中的一條復雜指令,在RISC中可能要用一段簡單指令組成的子過程(子程序)代碼段來實現(xiàn)。因此,RISC程序中會出現(xiàn)更多的CALL和RETURN指令。71執(zhí)行CALL和RETURN指令時,訪問存儲器的信息量很大,頻繁的訪存操作會降低系統(tǒng)的性能。為了盡量減少訪存操作,F(xiàn).Baskett提出了重疊寄存器窗口(OverlappingRegisterWindow)技術,并首先在RISCI上應用,SPARC也采用了這種技術。72重疊寄存器窗口的基本思想是:在處理器中設置數(shù)量較多的寄存器,并把它們劃分成多個窗口。如下圖所示,為每個過程分配一個窗口,每個窗口包括3組寄存器:▼參數(shù)寄存器-----與父過程共用,用來存放父過程傳送給本過程的參數(shù),同時也存放本過程傳送給父過程的計算結果。▼局部寄存器-----為本過程獨用,存放該過程自用的數(shù)據(jù)。▼臨時寄存器-----與子過程共用,用來存放本過程傳送給子過程的參數(shù)和子過程傳送給本過程的計算結果

上圖表明,分配給過程的寄存器窗口是按照調用關系進行部分重疊的。

73

SPARC采用了這種重疊寄存器窗口技術。每個窗口由24個寄存器組成;總的窗口數(shù)可以是2~32個,取決于具體實現(xiàn)。圖3-35說明了8個窗口的實現(xiàn),總共使用了136個物理寄存器。物理寄存器R0~R7,是所有過程共用的全局(Global)寄存器。為每個過程分配一個窗口,即可尋址邏輯寄存器R8~R31,一個窗口分為3組寄存器,每組8個寄存器:▼邏輯寄存器R24~R31標記為輸入,與父過程共用。▼邏輯寄存器R8~R15標記為輸出,與子過程共用。以上兩組寄存

溫馨提示

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

評論

0/150

提交評論