版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第2章指令系統(tǒng)的設(shè)計(jì)計(jì)算機(jī)學(xué)院信息
部光電國家cao張晨曦
(版)Computer
Architecture,Instruction-Set
ArchitectureMemory
and
processing
subsystems
for
MiniMIPS.Memoryup
to
2
30
wordsLoc
Locm
8
m
4Loc
0
Loc
4
Loc
84
B
/
locationm
2
32$0$1$2$31HiLoALU$0$1$2$31FParithBadVaddrStatusCauseEPCEIUExecution&
integerunitFloating-point
unitTrap
&memoryunitView
of
Hardware.
.
..
.
.FPU(Coproc.
1)TMU(Coproc.
0)(Main
proc.)Integermul/divChapter10Chapter11Chapter12Computer
Architecture,Instruction-Set
ArchitectureSlide
3Registers
Used
in
ThisChapterFigure
5.2
(partial)TemporaryvaluesMoretemporariesOperandsSavedacrossprocedurecalls$8$t0$9$t1$10$t2$11$t3$12$t4$13$t5$14$t6$15$t7$16$s0$17$s1$18$s2$19$s3$20$s4$21$s5$22$s6$23$s7$24$t8$25$t9Jan.
200910
temporary
registers8
operand
registersWalletKeysChangeogy
forregisterusage
conventions指令系統(tǒng)結(jié)構(gòu)的分類尋址方式指令系統(tǒng)的設(shè)計(jì)與優(yōu)化指令系統(tǒng)的發(fā)展和改進(jìn)操作數(shù)的類型和大小MIPS指令系統(tǒng)結(jié)構(gòu)1.
區(qū)別不同指令系統(tǒng)結(jié)構(gòu)的主要因素操作數(shù)的操作數(shù)的單元的類型單元CPU中用來2.
CPU中用來堆棧累加器通用寄存器組3.
將指令系統(tǒng)的結(jié)構(gòu)分為三種類型2.1指令系統(tǒng)結(jié)構(gòu)的分類2.1指令系統(tǒng)結(jié)構(gòu)的分類堆棧結(jié)構(gòu)累加器結(jié)構(gòu)通用寄存器結(jié)構(gòu)根據(jù)操作數(shù)的來源不同,又可進(jìn)一步分為:寄存器-
器結(jié)構(gòu)(RM結(jié)構(gòu))(操作數(shù)可以來自 器
)寄存器-寄存器結(jié)構(gòu)(RR結(jié)構(gòu))(所有操作數(shù)都是來自通用寄存器組)也稱為load-store結(jié)構(gòu),這個(gè)名稱強(qiáng)調(diào):只有l(wèi)oad指令和store指令能夠
器。2.1指令系統(tǒng)結(jié)構(gòu)的分類4.
對(duì)于不同類型的結(jié)構(gòu),操作數(shù)的位置、個(gè)數(shù)以及操作數(shù)的給出方式(顯式或隱式)也會(huì)不同。顯式給出:用指令字中的操作數(shù)字段給出隱式給出:使用事先約定好的單元2.1指令系統(tǒng)結(jié)構(gòu)的分類例:表達(dá)式Z=X+Y在4種類型指令系統(tǒng)結(jié)構(gòu)上的代碼。假設(shè):X、Y、Z均保存在
器單元中,并且不能破壞X和Y的值。堆棧累加器寄存器(RM型)寄存器(RR型)push
XloadXloadR1,XloadR1,Xpush
YaddYaddR1,YloadR2,Yaddstore
Zstore
R1,ZaddR3,R1,R2pop
Zstore
R3,Z2.1指令系統(tǒng)結(jié)構(gòu)的分類5.
通用寄存器型結(jié)構(gòu)現(xiàn)代指令系統(tǒng)結(jié)構(gòu)的主流在靈活性和提高性能方面有明顯的優(yōu)勢(shì)跟其它的CPU
單元一樣,寄存器的速度比
器快。對(duì)編譯器而言,能更加容易、有效地分配和使用寄存器。寄存器可以用來存放變量。(1)減少對(duì)
器的(因?yàn)榧拇嫫鞅?,加快程序的?zhí)行速度;器快)2.1指令系統(tǒng)結(jié)構(gòu)的分類(2)用更少的地址位(相對(duì)于器地址來說)來對(duì)寄存器進(jìn)行尋址,從而有效地減少程序的目標(biāo)代碼的大小。根據(jù)ALU指令的操作數(shù)的兩個(gè)特征對(duì)通用寄存器型結(jié)構(gòu)進(jìn)一步細(xì)分ALU指令的操作數(shù)個(gè)數(shù)3個(gè)操作數(shù)的指令兩個(gè)源操作數(shù)、一個(gè)目的操作數(shù)2個(gè)操作數(shù)的指令其中一個(gè)操作數(shù)既作為源操作數(shù),又作為目的操作數(shù)。2.1指令系統(tǒng)結(jié)構(gòu)的分類ALU指令中
器操作數(shù)的個(gè)數(shù)可以是0~3中的某一個(gè),為0表示沒有器操作數(shù)。ALU指令中存儲(chǔ)器操作數(shù)的個(gè)數(shù)ALU指令中操作數(shù)的最多個(gè)數(shù)結(jié)構(gòu)類型機(jī)器實(shí)例03RRMIPS,SPARC,Alpha,PowerPC,ARM12RMIBM
360/370,In80x86,Motorola
680003RMIBM
360/37022MMVAX33MMVAX7.ALU指令中操作數(shù)個(gè)數(shù)和器操作數(shù)個(gè)數(shù)的典型組合2.1指令系統(tǒng)結(jié)構(gòu)的分類8.
通用寄存器型結(jié)構(gòu)進(jìn)一步細(xì)分為3種類型寄存器-寄存器型(RR型)寄存器-器-器型(RM型)器型(MM型)9.
3種通用寄存器型結(jié)構(gòu)的優(yōu)缺點(diǎn)表中(m,n)表示指令的n個(gè)操作數(shù)中有m個(gè)存儲(chǔ)器操作數(shù)。指令系統(tǒng)結(jié)構(gòu)類型優(yōu)
點(diǎn)缺
點(diǎn)寄存器-寄存器型(0,3)指令字長(zhǎng)固定,指令結(jié)構(gòu)簡(jiǎn)潔,是一種簡(jiǎn)單的代碼生成模型,各種指令的執(zhí)行時(shí)鐘周期數(shù)相近。與指令中含器操作數(shù)的指令系統(tǒng)結(jié)構(gòu)相比,指令條數(shù)多,目標(biāo)代碼不夠緊湊,因而程序占用的空間比較大。寄存器- 器型(1,2)可以在ALU指令中直接對(duì)器操作數(shù)進(jìn)行,而不必先用load指令進(jìn)行加載。容易對(duì)指令進(jìn)行編碼,目標(biāo)代碼比較緊湊。指令中的兩個(gè)操作數(shù)不對(duì)稱。在一條指令中同時(shí)對(duì)寄存器操作數(shù)和存儲(chǔ)器操作數(shù)進(jìn)行編碼,有可能限制指令所能夠表示的寄存器個(gè)數(shù)。指令的執(zhí)行時(shí)鐘周期數(shù)因操作數(shù)的來源(寄存器或器)不同而差別比較大。器- 器型(2,2)或(3,3)目標(biāo)代碼最緊湊,不需要設(shè)置寄存器來保存變量。指令字長(zhǎng)變化很大,特別是3操作數(shù)指令。而且每條指令完成的工作也差別很大。對(duì)
器的頻繁會(huì)使 器成為瓶頸。這種類型的指令系統(tǒng)結(jié)構(gòu)現(xiàn)在已不用了。1.
尋址方式:指令系統(tǒng)中如何形成所要址。的數(shù)據(jù)的地尋址方式可以指明指令中的操作數(shù)是一個(gè)常數(shù)、一個(gè)寄存器操作數(shù)或者是一個(gè) 器操作數(shù)。對(duì)于
器操作數(shù)來說,由尋址方式確定的器地址稱為有效地址。2.2尋址方式2.2尋址方式2.
一些操作數(shù)尋址方式:賦值操作Mem:
器Regs:寄存器組方括號(hào):表示內(nèi)容Mem[]:
器的內(nèi)容Regs[]:寄存器的內(nèi)容Mem[Regs[R1]]:以寄存器R1中的內(nèi)容作為地址的器單元中的內(nèi)容尋址方式指令實(shí)例寄存器尋址ADD
R1
,
R2含
義Regs[R1]←Regs[R1]+Regs[R2]立即值尋址ADD
R3
,
#6Regs[R3]←Regs[R3]+6偏移尋址ADD
R3
,
120(R2)Regs[R3]←Regs[R3]+Mem[120+Regs[R2]]寄存器間接尋址ADD
R4
,
(R2)Regs[R4]←Regs[R4]+Mem[Regs[R2]]索引尋址ADD
R4
,
(R2
+R3)Regs[R4]←Regs[R4]+Mem[Regs[R2]+Regs[R3]]直接尋址或絕對(duì)尋址ADD
R4
,
(1010)Regs[R4]←Regs[R4]+Mem[1010]器間接尋址ADD
R2
,
@(R4)Regs[R2]←Regs[R2]+Mem[Mem[Regs[R4]]]自增尋址ADD
R1
,
(R2)+Regs[R1]←Regs[R1]+Mem[Regs[R2]]Regs[R2]←Regs[R2]+d自減尋址ADD
R1,
-(R2)縮放尋址ADDR1
,
80(R2)[R3]Regs[R2]←Regs[R2]-dRegs[R1]←Regs[R1]+Mem[Regs[R2]]Regs[R1]←Regs[R1]
+
Mem[80
+
Regs[R2]
+Regs[R3]*d]2.2尋址方式采用多種尋址方式可以顯著地減少程序的指令條數(shù),但可能增加計(jì)算機(jī)的實(shí)現(xiàn)復(fù)雜度以及指令的CPI。2.2尋址方式1%0%24%43%32%16%3%17%55%6%
1%6%11%39%40%70%60%50%40%30%20%10%0%器間接尋址
縮放尋址
寄存器間接尋址
立即數(shù)尋址
偏移尋址立即數(shù)尋址方式和偏移尋址方式的使用頻度最高。TexSpicegcc3.
各種尋址方式的使用情況統(tǒng)計(jì)結(jié)果在VAX機(jī)器上運(yùn)行g(shù)cc、Spice和Tex基準(zhǔn)程序2.2尋址方式4.
立即數(shù)尋址方式立即數(shù)尋址方式的使用頻度指令類型使用頻度整型平均浮點(diǎn)平均load指令23%22%ALU指令25%19%所有指令21%16%大約1/4的load指令和ALU指令采用了立即數(shù)尋址。2.2尋址方式5.
兩種表示尋址方式的方法將尋址方式編碼于操作碼中,由操作碼描述相應(yīng)操作的尋址方式。適合:處理機(jī)采用load-store結(jié)構(gòu),尋址方式只有很少幾種。在指令字中設(shè)置專門的尋址字段,用以直接
尋址方式。靈活,操作碼短,但需要設(shè)置專門的尋址方式字段,而且操作碼和尋址方式字起來所需要的總位數(shù)可能會(huì)比隱含方法的總位數(shù)多。適合:處理機(jī)具有多種尋址方式,且指令有多個(gè)操作數(shù)。2.2尋址方式6.
一個(gè)需要注意的問題:物理地址空間的信息如何存放?如何在
器中存放不同寬度的信息?以IBM370為例子進(jìn)行
。信息有字節(jié)、半字(雙字節(jié))、單字(4字節(jié))和雙字(8字節(jié))等寬度。主存寬度為8個(gè)字節(jié)。采用按字節(jié)編址,各類信息都是用該信息的首字節(jié)地址來尋址。允許它們?nèi)我庾诌吔缍趦蓚€(gè)存很可能會(huì)出現(xiàn)一個(gè)信息跨儲(chǔ)單元中2.2尋址方式信息寬度不超過主存寬度的信息必須存放在一個(gè)字內(nèi),不能跨邊界。必須做到:信息在主存中存放的起始地址必須是該信息寬度(字節(jié)數(shù))的整數(shù)倍信息 的整數(shù)邊界概念滿足以下條件字節(jié)信息的起始地址為:×…××××半字信息的起始地址為:×…×××0單字信息的起始地址為:×…××00雙字信息的起始地址為:×…×000存在
空間的浪費(fèi)
,但保證
速度。2.2尋址方式8個(gè)字節(jié)半字字節(jié)字節(jié)雙字雙字字節(jié)單字單字單字(a)(b)8個(gè)字節(jié)半字字節(jié)字節(jié)浪費(fèi)雙字字節(jié)浪費(fèi)單字單字Jan.
2009Computer
Architecture,Instruction-Set
ArchitectureSlide
25Instruction
FormatsA
typical
instruction
for
MiniMIPS
and
steps
in
its
execution.Assembly
language
instruction:Machine
language
instruction:High-level
language
statement:000000
10010
10001
11000
00000
100000add
$t8,
$s2,
$s1a
=
b
+
cALU-typeinstructionRegister18Register17Register24UnusedAdditionopcodeALUInstructionfetchRegisterreadoutOperationDataread/storeRegisterwritebackRegisterfileInstructioncacheD
ache(not
used)RegisterfilePC$17$18$24指令系統(tǒng)的設(shè)計(jì)首先考慮所應(yīng)實(shí)現(xiàn)的基本功能,確定哪些基本功能應(yīng)該由硬件實(shí)現(xiàn),哪些功能由適。包括實(shí)現(xiàn)比較合指令的功能設(shè)計(jì)指令格式的設(shè)計(jì)2.
在確定哪些基本功能用硬件來實(shí)現(xiàn)時(shí),主要考慮3個(gè)因素:速度、成本、靈活性。2.3指令系統(tǒng)的設(shè)計(jì)與優(yōu)化2.3指令系統(tǒng)的設(shè)計(jì)與優(yōu)化硬件實(shí)現(xiàn)的特點(diǎn)速度快、成本高、靈活性差實(shí)現(xiàn)的特點(diǎn)速度慢、價(jià)格便宜、靈活性好對(duì)指令系統(tǒng)的基本要求完整性、規(guī)整性、正交性、高效率、兼容性完整性:在一個(gè)有限可用的空間內(nèi),對(duì)于任何可解的問題,編制計(jì)算程序時(shí),指令系統(tǒng)所提供的指令足夠使用。2.3指令系統(tǒng)的設(shè)計(jì)與優(yōu)化要求指令系統(tǒng)功能齊全、使用方便下表為許多指令系統(tǒng)結(jié)構(gòu)都包含的一些指令類型前4類屬于通用計(jì)算機(jī)系統(tǒng)的基本指令對(duì)于最后4種類型的操作,不同指令系統(tǒng)結(jié)構(gòu)的支持大不相同。2.3指令系統(tǒng)的設(shè)計(jì)與優(yōu)化操作類型實(shí)
例算術(shù)和邏輯運(yùn)算算術(shù)運(yùn)算和邏輯操作:加,減,乘,除,與,或等數(shù)據(jù)傳輸load,store控制分支,跳轉(zhuǎn),過程調(diào)用和返回,自陷等系統(tǒng)操作系統(tǒng)調(diào)用,虛擬
器管理等浮點(diǎn)浮點(diǎn)操作:加,減,乘,除,比較等十進(jìn)制十進(jìn)制加,十進(jìn)制乘,十進(jìn)制到字符的轉(zhuǎn)換等字符串字符串移動(dòng),字符串比較,字符串搜索等圖形像素操作,壓縮/解壓操作等2.3指令系統(tǒng)的設(shè)計(jì)與優(yōu)化規(guī)整性:主要包括對(duì)稱性和均勻性。對(duì)稱性:所有與指令系統(tǒng)有關(guān)的
單元的使用、操作碼的設(shè)置等都是對(duì)稱的。例如:在
單元的使用上,所有通用寄存器都要同等對(duì)待。在操作碼的設(shè)置上,如果設(shè)置了A-B的指令,就應(yīng)該也設(shè)置B-A的指令。均勻性:指對(duì)于各種不同的操作數(shù)類型、字長(zhǎng)、操作種類和數(shù)據(jù)
單元,指令的設(shè)置都要同等對(duì)待。例如:如果某機(jī)器有5種數(shù)據(jù)表示,4種字長(zhǎng),兩種
單元,則要設(shè)置5×4×2=40種同一操作的指令。2.3指令系統(tǒng)的設(shè)計(jì)與優(yōu)化正交性:在指令中各個(gè)不同含義的字段,如操作類型、數(shù)據(jù)類型、尋址方式字段等,在編碼時(shí)應(yīng)互不相關(guān)、相互獨(dú)立。高效率:指指令的執(zhí)行速度快、使用頻度高。兼容性:主要是要實(shí)現(xiàn)向后兼容,指令系統(tǒng)可以增加新指令,但不能刪除指令或更改指令的功能。2.3指令系統(tǒng)的設(shè)計(jì)與優(yōu)化4.
在設(shè)計(jì)指令系統(tǒng)時(shí),有兩種截然不同的設(shè)計(jì)策略。(產(chǎn)生了兩類不同的計(jì)算機(jī)系統(tǒng))CISC(復(fù)雜指令系統(tǒng)計(jì)算機(jī))增強(qiáng)指令功能,把越來越多的功能交由硬件來實(shí)現(xiàn),并且指令的數(shù)量也是越來越多。RISC(精簡(jiǎn)指令系統(tǒng)計(jì)算機(jī))盡可能地把指令系統(tǒng)簡(jiǎn)化,不僅指令的條數(shù)少,而且指令的功能也比較簡(jiǎn)單。2.3指令系統(tǒng)的設(shè)計(jì)與優(yōu)化控制指令是用來改變控制流的。跳轉(zhuǎn):當(dāng)指令是無條件改變控制流時(shí),稱之為跳轉(zhuǎn)指令。分支:當(dāng)控制指令是有條件改變控制流時(shí),則稱之為分支指令。能夠改變控制流的指令分支跳轉(zhuǎn)過程調(diào)用過程返回2.3.2控制指令2.3指令系統(tǒng)的設(shè)計(jì)與優(yōu)化3.
控制指令的使用頻度(load-store型指令系統(tǒng)結(jié)構(gòu)的機(jī)器,基準(zhǔn)程序?yàn)镾PEU2000)指令類型使用頻度整型平均浮點(diǎn)平均調(diào)用/返回19%8%跳轉(zhuǎn)6%10%分支75%82%改變控制流的大部分指令是分支指令(條件轉(zhuǎn)移)。4.
分支條件的方法及其優(yōu)缺點(diǎn)名稱檢測(cè)分支條件的方法優(yōu)點(diǎn)缺點(diǎn)條件碼是增設(shè)的狀態(tài)。條件碼(CC)檢測(cè)由ALU操作設(shè)置的一些特殊的位(即CC)可以
設(shè)置分支條件而且它限制了指令的執(zhí)行順序,因?yàn)橐WC條件碼能順利地傳送給分支指令。條件寄存器比較指令把比較結(jié)果放入任何一個(gè)寄存器,檢測(cè)時(shí)就檢測(cè)該寄存器。簡(jiǎn)單占用了一個(gè)寄存器比較與分支比較操作是分支指令的一部分,通常這種比較是受到一定限制的。用一條指令(而不是兩條)就能實(shí)現(xiàn)分支當(dāng)采用流水方式時(shí),該指令的操作可能太多,在一拍內(nèi)做不完。2.3指令系統(tǒng)的設(shè)計(jì)與優(yōu)化5.
轉(zhuǎn)移目標(biāo)地址的表示最常用的方法在指令中提供一個(gè)偏移量,由該偏移量和程序計(jì)數(shù)器(PC)的值相加而得出目標(biāo)地址。(PC相對(duì)尋址)優(yōu)點(diǎn)有效地減少表示該目標(biāo)地址所需要的位數(shù)位置無關(guān)(代碼可被裝載到主存的任意位置執(zhí)行)關(guān)鍵:確定偏移量字段的長(zhǎng)度模擬結(jié)果表明:采用4~8位的偏移量字段(以指令字為單位)就能表示大多數(shù)控制指令的轉(zhuǎn)移目標(biāo)地址了。2.3指令系統(tǒng)的設(shè)計(jì)與優(yōu)化6.
過程調(diào)用和返回除了要改變控制流之外,可能還要保存機(jī)器狀態(tài)。至少也得保存返回地址(放在
的 寄存器或堆棧中)。過去有些指令系統(tǒng)結(jié)構(gòu)提供了專門的保存機(jī)制來保存許多寄存器的內(nèi)容?,F(xiàn)在較新的指令系統(tǒng)結(jié)構(gòu)則要求由編譯器生成load和store指令來保存或恢復(fù)寄存器的內(nèi)容。2.3指令系統(tǒng)的設(shè)計(jì)與優(yōu)化2.3.3指令操作碼的優(yōu)化指令由兩部分組成:操作碼、地址碼指令格式的設(shè)計(jì)確定指令字的編碼方式,包括操作碼字段和地址碼字段的編碼和表示方式。指令格式的優(yōu)化:如何用最短的位數(shù)來表示指令的操作信息和地址信息。2.3指令系統(tǒng)的設(shè)計(jì)與優(yōu)化1.編碼基本思想:當(dāng)各種事件發(fā)生的概率不均等時(shí),可以對(duì)發(fā)生概率最高的事件用最短的位數(shù)(時(shí)間)來表示(處理),而對(duì)于出現(xiàn)概率較低的事件,則可以用較長(zhǎng)的位數(shù)(時(shí)間)來表示(處理),從而使總的平均位數(shù)(時(shí)間)縮短。構(gòu)造樹的方法將各事件按其使用頻度從小到大依次排列;每次從中選擇兩個(gè)頻度值最小的結(jié)點(diǎn),將其合并成一個(gè)新的結(jié)點(diǎn),并把新結(jié)點(diǎn)畫在所選結(jié)點(diǎn)的上面,2.3指令系統(tǒng)的設(shè)計(jì)與優(yōu)化然后用兩條邊把新結(jié)點(diǎn)分別與那兩個(gè)結(jié)點(diǎn)相連。新結(jié)點(diǎn)的頻度值是所選兩個(gè)結(jié)點(diǎn)的頻度值的和。把新結(jié)點(diǎn)與其他剩余未結(jié)合的結(jié)點(diǎn)一起,再以上面的步驟進(jìn)行處理,反復(fù)進(jìn)行,直到全部結(jié)點(diǎn)都結(jié)合完畢、形成根結(jié)點(diǎn)為止。0.05畫樹的一個(gè)基本步驟0.020.032.3指令系統(tǒng)的設(shè)計(jì)與優(yōu)化操作碼優(yōu)化的程度可以用信息熵來衡量。表示用二進(jìn)制編碼表示n個(gè)碼點(diǎn)時(shí),理論上的最短平均編碼長(zhǎng)度。例2.1
假設(shè)某模型機(jī)有7條指令,這些指令的使用頻度如表左邊所示。計(jì)算這7條指令的操作碼編碼的最短平均碼長(zhǎng);畫出
樹,寫出這7條指令的
編碼,并計(jì)算該編碼的平均碼長(zhǎng)和信息冗余量。nH
-
pi
log2
pii12.3指令系統(tǒng)的設(shè)計(jì)與優(yōu)化指令頻度pi操作碼使用編碼操作碼長(zhǎng)度li利用
概念的擴(kuò)展操作碼操作碼長(zhǎng)度liI10.40010
02I20.301
020
12I30.151
1031
02I40.051
11
0051
1
0
04I50.041
11
0151
1
0
14I60.031
1
1
1
051
1
1
04I70.031
11
1151
1
1
142.3指令系統(tǒng)的設(shè)計(jì)與優(yōu)化解(1)(2)其
樹 ,該樹的每個(gè)葉結(jié)點(diǎn)分別對(duì)應(yīng)于一條指令。在該樹中,對(duì)每個(gè)結(jié)點(diǎn)向下的兩個(gè)分支,分別用二進(jìn)制“1”和“0”來表示。從該
樹可以很容易地寫出
編碼。具體方法:對(duì)于任意一條指令I(lǐng)i
(i=1,2,…,7),從哈夫曼樹根結(jié)點(diǎn)出發(fā)、沿一條路徑連接到葉結(jié)點(diǎn)Ii,把途中所經(jīng)過的各分支的“0”和“1”按從左到右的順序記錄下來,便是該指令的曼編碼。上表中列出了所有指令的
編碼。7H
-
pi
log
2
pi
2.17i12.3指令系統(tǒng)的設(shè)計(jì)與優(yōu)化111100000I7I6I5I4I3I2I11.0010.6010.300.150.060.090.030.030.040.400.300.150.05樹舉例2.3指令系統(tǒng)的設(shè)計(jì)與優(yōu)化該編碼的平均碼長(zhǎng)是:7L
pili
2.20i1其信息冗余量為2.20-2.17
1.36%2.202.3指令系統(tǒng)的設(shè)計(jì)與優(yōu)化優(yōu)缺點(diǎn):可以減少操作碼的平均位數(shù),但所獲得的編碼是變長(zhǎng)度的,不規(guī)整,不利于硬件處理。擴(kuò)展操作碼位于定長(zhǎng)二進(jìn)制編碼和
編碼之間的一種編碼方案。采用有限幾種固定長(zhǎng)度的碼長(zhǎng),仍然采用高概率的用短碼、低概率用長(zhǎng)碼的
壓縮思想,使操作碼平均長(zhǎng)度縮短。上表中的指令,采用2-4的擴(kuò)展操作碼,可以得到如表右邊所示的編碼方案。2.3指令系統(tǒng)的設(shè)計(jì)與優(yōu)化用兩位的00、01、10分別用于表示使用頻度高的I1、I2、I3,然后用11作為
擴(kuò)展出4個(gè)4位的二進(jìn)制編碼,用于表示剩下的4條指令。平均長(zhǎng)度比 編碼的2.2大,但很接近于2.2,而且比定長(zhǎng)的3位編碼小很多。7
pili
2.3i12.3指令系統(tǒng)的設(shè)計(jì)與優(yōu)化等長(zhǎng)擴(kuò)展碼為了便于分級(jí)譯碼,一般都采用等長(zhǎng)擴(kuò)展碼。(在早期的計(jì)算機(jī)上)例如:15/15/15法和8/64/512法選用哪種編碼法取決于指令使用頻度pi的分布。若在頭15種指令中pi
的值都比較大,但在后30種指令后急劇減少,則應(yīng)選擇15/15/15法;若pi
的值在頭8種指令中較大,之后的64種指令的pi值也不太低,則應(yīng)選擇8/64/512法。衡量標(biāo)準(zhǔn):看哪種編碼法能使平均碼長(zhǎng)最短。2.3指令系統(tǒng)的設(shè)計(jì)與優(yōu)化151111
1111
00001111 11
0001…1111
1111
111015/15/15編碼法2.3指令系統(tǒng)的設(shè)計(jì)與優(yōu)化3.
定長(zhǎng)操作碼固定長(zhǎng)度的操作碼:所有指令的操作碼都是同一的長(zhǎng)度(如8位)。許多計(jì)算機(jī)都采用(特別是RISC結(jié)構(gòu)的計(jì)算機(jī))保證操作碼的譯碼速度、減少譯碼的復(fù)雜度。以程序的 空間為代價(jià)來換取硬件實(shí)現(xiàn)上的好處。2.3指令系統(tǒng)的設(shè)計(jì)與優(yōu)化1.如果指令字的寬度固定,地址碼的長(zhǎng)度和個(gè)數(shù)固定,則操作碼的縮短并不能帶來好處,只是使指令字中出現(xiàn)空白浪費(fèi)。2.3.4指令字格式的優(yōu)化定長(zhǎng)指令字長(zhǎng)度L操作碼空白浪費(fèi)地址碼操作碼空白浪費(fèi)地址碼操作碼地址碼2.3指令系統(tǒng)的設(shè)計(jì)與優(yōu)化采用地址個(gè)數(shù)可變和/或地址碼長(zhǎng)度可變的方案利用操作碼縮短所帶來的好處最常用的操作碼最短,其地址字段個(gè)數(shù)最多。能夠使指令的功能增強(qiáng),從總體上減少所需的指令條數(shù)。寄存器-寄存器型操作碼訪存地址R操作碼RR操作碼立即操作數(shù)RR寄存器-器型帶立即操作數(shù)2.3指令系統(tǒng)的設(shè)計(jì)與優(yōu)化3.
考慮因素計(jì)算機(jī)中寄存器的個(gè)數(shù)和尋址方式的數(shù)目對(duì)機(jī)器的指令字長(zhǎng)有很大的影響;指令字的平均長(zhǎng)度增加了,程序的平均長(zhǎng)度也就增加了;在指令系統(tǒng)的設(shè)計(jì)中,要在指令字長(zhǎng)與寄存器的個(gè)數(shù)以及尋址方式的個(gè)數(shù)之間進(jìn)行折中。4.
指令系統(tǒng)的3種編碼格式可變長(zhǎng)度編碼格式、固定長(zhǎng)度編碼格式、混合型編碼格式2.3指令系統(tǒng)的設(shè)計(jì)與優(yōu)化可變長(zhǎng)度編碼格式當(dāng)指令系統(tǒng)的尋址方式和操作種類很多時(shí),這種編碼格式是最好的。用最少的二進(jìn)制位來表示目標(biāo)代碼??赡軙?huì)使各條指令的字長(zhǎng)和執(zhí)行時(shí)間相差很大。操作碼地址描述符1地址碼1…地址描述符n地址碼n2.3指令系統(tǒng)的設(shè)計(jì)與優(yōu)化操作碼地址碼1地址碼2地址碼3固定長(zhǎng)度編碼格式將操作類型和尋址方式一起編碼到操作碼中。當(dāng)尋址方式和操作類型非常少時(shí),這種編碼格式非常好。可以有效地降低譯碼的復(fù)雜度,提高譯碼的速度。大部分RISC的指令系統(tǒng)均采用這種編碼格式。2.3指令系統(tǒng)的設(shè)計(jì)與優(yōu)化操作碼地址描述符地址碼操作碼地址描述符1地址描述符2地址碼操作碼地址描述符地址碼1地址碼2混合型編碼格式提供若干種固定的指令字長(zhǎng)。以期達(dá)到既能夠減少目標(biāo)代碼長(zhǎng)度又能降低譯碼復(fù)雜度的目標(biāo)。2.4指令系統(tǒng)的發(fā)展和改進(jìn)沿CISC方向發(fā)展和改進(jìn)指令系統(tǒng)CISC指令系統(tǒng)的一大特點(diǎn)
指令數(shù)量多、功能多樣增強(qiáng)指令功能主要是從以下3個(gè)方面著手:面向目標(biāo)程序增強(qiáng)指令功能面向高級(jí)語言的優(yōu)化實(shí)現(xiàn)來改進(jìn)指令系統(tǒng)面向操作系統(tǒng)的優(yōu)化實(shí)現(xiàn)改進(jìn)指令系統(tǒng)2.4指令系統(tǒng)的發(fā)展和改進(jìn)面向目標(biāo)程序增強(qiáng)指令功能對(duì)大量的目標(biāo)程序及其執(zhí)行情況進(jìn)行統(tǒng)計(jì)分析,找出那些使用頻度高、執(zhí)行時(shí)間長(zhǎng)的指令或指令串。對(duì)于使用頻度高的指令,用硬件加快其執(zhí)行;對(duì)于使用頻度高的指令串,用一條新的指令來替代。既能減少目標(biāo)程序的執(zhí)行時(shí)間,也能有效地縮短程序的長(zhǎng)度??梢詮囊韵聨讉€(gè)方面來改進(jìn):增強(qiáng)運(yùn)算型指令的功能增強(qiáng)數(shù)據(jù)傳送指令的功能增強(qiáng)程序控制指令的功能2.4指令系統(tǒng)的發(fā)展和改進(jìn)例如:循環(huán)在程序中占有相當(dāng)大的比例,所以在指令上提供專門的支持。循環(huán)控制部分通常用3條指令完成:一條加法指令一條比較指令一條分支指令設(shè)置循環(huán)控制指令,用一條指令完成上述3條指令的功能。I
=
m1I=I+m3循環(huán)體NI>m2Y一般循環(huán)程序的結(jié)構(gòu)2.4指令系統(tǒng)的發(fā)展和改進(jìn)面向高級(jí)語言的優(yōu)化實(shí)現(xiàn)來改進(jìn)指令系統(tǒng)(縮小高級(jí)語言與機(jī)器語言的語義差距)高級(jí)語言與一般的機(jī)器語言的語義差距非常大,為高級(jí)語言程序的編譯帶來了一些問題。編譯器本身比較復(fù)雜;編譯生成的目標(biāo)代碼比較難以達(dá)到很好的優(yōu)化。2.4指令系統(tǒng)的發(fā)展和改進(jìn)增強(qiáng)對(duì)高級(jí)語言和編譯器的支持對(duì)高級(jí)語言中使用頻度高、執(zhí)行時(shí)間長(zhǎng)的語句,增強(qiáng)有關(guān)指令的功能,加快這些指令的執(zhí)行速度,或者增加專門的指令,可以達(dá)到減少目標(biāo)程序的執(zhí)行時(shí)間和減少目標(biāo)程序長(zhǎng)度的目的。增強(qiáng)系統(tǒng)結(jié)構(gòu)的規(guī)整性,減少系統(tǒng)結(jié)構(gòu)中的各種例外情況。(面向高級(jí)語言的計(jì)算機(jī))2.4指令系統(tǒng)的發(fā)展和改進(jìn)高級(jí)語言計(jì)算機(jī)①間接執(zhí)行高級(jí)語言機(jī)器高級(jí)語言作為機(jī)器的匯編語言。②直接執(zhí)行高級(jí)語言的機(jī)器直接把高級(jí)語言作為機(jī)器語言。(一種比較激進(jìn)的方法)采用“比較簡(jiǎn)單的系統(tǒng)結(jié)構(gòu)+”的做法能夠在較低成本和復(fù)雜度的前提下,提供更高的性能和靈活性。2.4指令系統(tǒng)的發(fā)展和改進(jìn)面向操作系統(tǒng)的優(yōu)化實(shí)現(xiàn)改進(jìn)指令系統(tǒng)操作系統(tǒng)和計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)是緊密聯(lián)系的,操作系統(tǒng)的實(shí)現(xiàn)在很大程度上取決于系統(tǒng)結(jié)構(gòu)的支持。指令系統(tǒng)對(duì)操作系統(tǒng)的支持主要有:處理機(jī)工作狀態(tài)和
方式的切換;進(jìn)程的管理和切換;管理和信息保護(hù);進(jìn)程的同步與互斥,信號(hào)燈的管理等。支持操作系統(tǒng)的有些指令屬于
指令,一般用戶程序是不能使用的。2.4指令系統(tǒng)的發(fā)展和改進(jìn)CISC指令系統(tǒng)結(jié)構(gòu)存在的問題(1979年開始,Patterson等人的研究)各種指令的使用頻度相差懸殊,許多指令很少用。據(jù)統(tǒng)計(jì):只有20%的指令使用頻度比較高,占運(yùn)行時(shí)間的80%。而其余80%的指令只在20%的運(yùn)行時(shí)間內(nèi)才會(huì)用到。使用頻度高的指令也是最簡(jiǎn)單的指令。2.4.2沿RISC方向發(fā)展和改進(jìn)指令系統(tǒng)執(zhí)行頻度排序80x86指令指令執(zhí)行頻度(占執(zhí)行指令總數(shù)的百分比)1load22%2條件分支20%3比較16%4store12%5加8%6與6%7減5%8寄存器-寄存器間數(shù)據(jù)移動(dòng)4%9調(diào)用子程序1%10返回1%合計(jì)95%In
80x86最常用的10條指令2.4指令系統(tǒng)的發(fā)展和改進(jìn)指令系統(tǒng)龐大,指令條數(shù)很多,許多指令的功能又很復(fù)雜,使得控制器硬件非常復(fù)雜。導(dǎo)致的問題:占用了大量的
面積(如占用CPU
總面積的一半以上),給VLSI設(shè)計(jì)造成很大的
;增加了研制時(shí)間和成本,容易造成設(shè)計(jì)錯(cuò)誤。許多指令由于操作繁雜,其CPI值比較大,執(zhí)行速度慢。采用這些復(fù)雜指令有可能使整個(gè)程序的執(zhí)行時(shí)間反而增加。由于指令功能復(fù)雜,規(guī)整性不好,不利于采用流水技術(shù)來提高性能。2.4指令系統(tǒng)的發(fā)展和改進(jìn)2.
設(shè)計(jì)RISC機(jī)器遵循的原則指令條數(shù)少、指令功能簡(jiǎn)單。只選取使用頻度很高的指令,在此基礎(chǔ)上補(bǔ)充一些最有用的指令;采用簡(jiǎn)單而又
的指令格式,并減少尋址方式;指令字長(zhǎng)都為32位或64位;指令的執(zhí)行在單個(gè)機(jī)器周期內(nèi)完成;(采用流水線機(jī)制)器,其它指令只有l(wèi)oad和store指令才能的操作都是在寄存器之間進(jìn)行;(即采用load-store結(jié)構(gòu))大多數(shù)指令都采用硬連邏輯來實(shí)現(xiàn);2.4指令系統(tǒng)的發(fā)展和改進(jìn)強(qiáng)調(diào)優(yōu)化編譯器的作用,為高級(jí)語言程序生成優(yōu)化的代碼;充分利用流水技術(shù)來提高性能。3.早期的RISC微處理器1981年,Berkeley分校的Patterson等人的32位微處理器RISC
I:31條指令,指令字長(zhǎng)都是32位,78個(gè)通用寄存器,時(shí)鐘頻率為8MHz;控制部分所占的
面積只有約6%。商品化微處理器MC68000和Z8000分別為50%和53%;性能比MC68000和Z8000
~4倍。2.4指令系統(tǒng)的發(fā)展和改進(jìn)1983年的RISCⅡ:指令條數(shù)為39,通用寄存器個(gè)數(shù)為138,時(shí)鐘頻率為12MHz。后來發(fā)展成了Sun公司的SPARC系列微處理器。1981年,Stanford大學(xué)Hennessy等人的MIPS后來發(fā)展成了MIPS
Rxxx系列微處理器。IBM的801共同特點(diǎn):采用load-store結(jié)構(gòu)指令字長(zhǎng)為32位采用高效的流水技術(shù)數(shù)據(jù)表示:計(jì)算機(jī)硬件能夠直接識(shí)別、指令系統(tǒng)可以直接調(diào)用的數(shù)據(jù)類型。所有數(shù)據(jù)類型中最常用、相對(duì)比較簡(jiǎn)單、用硬件實(shí)現(xiàn)比較容易的幾種。數(shù)據(jù)結(jié)構(gòu):由 進(jìn)行處理 的各種數(shù)據(jù)類型。研究:這些數(shù)據(jù)類型的邏輯結(jié)構(gòu)與物理結(jié)構(gòu)之間的關(guān)系,并給出相應(yīng)的算法。系統(tǒng)結(jié)構(gòu)設(shè)計(jì)者要解決的問題:如何確定數(shù)據(jù)表示?(軟硬件取舍折中的問題)2.5操作數(shù)的類型和大小2.5操作數(shù)的類型和大小1.
表示操作數(shù)類型的方法有兩種由指令中的操作碼指定操作數(shù)的類型。給數(shù)據(jù)加上標(biāo)識(shí),由數(shù)據(jù)本身給出操作數(shù)類型。優(yōu)點(diǎn):簡(jiǎn)化指令系統(tǒng),可由硬件自動(dòng)實(shí)現(xiàn)一致性檢查和類型轉(zhuǎn)換,縮小了機(jī)器語言與高級(jí)語言的語義差距,簡(jiǎn)化編譯器等。缺點(diǎn):由于需要在執(zhí)行過程中動(dòng)態(tài)檢測(cè)標(biāo)志符,動(dòng)態(tài)開銷比較大,所以采用這種方案的機(jī)器很少見。2.
操作數(shù)的大?。翰僮鲾?shù)的位數(shù)或字節(jié)數(shù)。主要的大?。鹤止?jié)(8位)、半字(16位)字(32位)、和雙字(64位)2.5操作數(shù)的類型和大小字符:用ASCII碼表示,為一個(gè)字節(jié)大小。整數(shù):用二進(jìn)制補(bǔ)碼表示,其大小可以是字節(jié)、半字或單字。浮點(diǎn)操作數(shù):?jiǎn)尉雀↑c(diǎn)數(shù)(1個(gè)字)、雙精度浮點(diǎn)數(shù)(雙字)。一般都采用IEEE
754浮點(diǎn)標(biāo)準(zhǔn)十進(jìn)制操作數(shù)類型壓縮十進(jìn)制或二進(jìn)制編碼十進(jìn)制(BCD碼):用4位二進(jìn)制編碼表示數(shù)字0~9,并將兩個(gè)十進(jìn)制數(shù)字合并到一個(gè)字節(jié)中。非壓縮十進(jìn)制:將十進(jìn)制數(shù)直接用字符串來表示。3.不同操作數(shù)大小的頻率(SPEC基準(zhǔn)程序)操作數(shù)大小頻度整型平均浮點(diǎn)平均字節(jié)7%0%半字19%0%單字74%31%雙字0%69%基準(zhǔn)程序?qū)巫趾碗p字的數(shù)據(jù) 具有較高的頻度。一臺(tái)32位的機(jī)器應(yīng)該支持8、16、32位整型操作數(shù)以及32位和64位的IEEE
754標(biāo)準(zhǔn)的浮點(diǎn)操作數(shù)。介紹MIPS64的一個(gè)子集,簡(jiǎn)稱為MIPS。2.6.1
MIPS的寄存器32個(gè)64位通用寄存器(GPRs)R0,R1,…,R31也稱為整數(shù)寄存器R0的值
是032個(gè)64位浮點(diǎn)數(shù)寄存器(FPRs)F0,F(xiàn)1,…,F(xiàn)312.6
MIPS指令系統(tǒng)結(jié)構(gòu)2.6MIPS指令系統(tǒng)結(jié)構(gòu)用來存放32個(gè)單精度浮點(diǎn)數(shù)(32位),也可以用來存放32個(gè)雙精度浮點(diǎn)數(shù)(64位)。單精度浮點(diǎn)數(shù)(32位)時(shí),只用到FPR的一半,其另一半沒用。一些特殊寄存器它們可以與通用寄存器交換數(shù)據(jù)。例如浮點(diǎn)狀態(tài)寄存器:用來保存有關(guān)浮點(diǎn)操作結(jié)果的信息。2.6MIPS指令系統(tǒng)結(jié)構(gòu)MIPS的數(shù)據(jù)表示整數(shù)字節(jié)(8位)字(32位)浮點(diǎn)數(shù)半字(16位)雙字(64位)單精度浮點(diǎn)數(shù)(32位)
雙精度浮點(diǎn)數(shù)(64位)2.字節(jié)、半字或者字在裝入64位寄存器時(shí),用零擴(kuò)展或者用符號(hào)位擴(kuò)展來填充該寄存器的剩余部分。裝入以后,對(duì)它們將按照64位整數(shù)的方式進(jìn)行運(yùn)算。2.6.2
MIPS的數(shù)據(jù)表示2.6MIPS指令系統(tǒng)結(jié)構(gòu)立即數(shù)尋址與偏移量尋址;立即數(shù)字段和偏移量字段都是16位的。寄存器間接尋址是通過把0作為偏移量來實(shí)現(xiàn)的;16位絕對(duì)尋址是通過把R0(其值
為0)作為基址寄存器來完成的;MIPS的所有器器是按字節(jié)尋址的,地址為64位;都必須是邊界對(duì)齊的。2.6.3
MIPS的數(shù)據(jù)尋址方式2.6MIPS指令系統(tǒng)結(jié)構(gòu)尋址方式編碼到操作碼中所有的指令都是32位的操作碼占6位3種指令格式3種格式中,同名字段的位置固定不變。2.6.4
MIPS的指令格式2.6MIPS指令系統(tǒng)結(jié)構(gòu)操作碼r6505
6I類指令包括所有的load和store指令,立即數(shù)指令,分支指令,寄存器跳轉(zhuǎn)指令,寄存器
跳轉(zhuǎn)指令。立即數(shù)字段為16位,用于提供立即數(shù)或偏移量。2.6MIPS指令系統(tǒng)結(jié)構(gòu)load指令訪存有效地址:Regs[rs]+immediate從
器取來的數(shù)據(jù)放入寄存器rtstore指令訪存有效地址:Regs[rs]+immediate要存入
器的數(shù)據(jù)放在寄存器rt中立即數(shù)指令Regs[rt]
←Regs[rs]
op
immediate分支指令轉(zhuǎn)移目標(biāo)地址:Regs[rs]+immediate,rt無用寄存器跳轉(zhuǎn)、寄存器跳轉(zhuǎn)并轉(zhuǎn)移目標(biāo)地址為Regs[rs]2.6MIPS指令系統(tǒng)結(jié)構(gòu)R類指令包括ALU指令, 寄存器讀/寫指令,move指令等。ALU指令Regs[rd]←
Regs[rs]
funct
Regs[rt]funct為具體的運(yùn)算操作編碼6556505
631操作碼rsrtrdshamfunct10
11
15
16
20
21
25
2652.6MIPS指令系統(tǒng)結(jié)構(gòu)J類指令包括跳轉(zhuǎn)指令,跳轉(zhuǎn)并
指令,自陷指令,異常返回指令。在這類指令中,指令字的低26位是偏移量,它與PC值相加形成跳轉(zhuǎn)的地址。6操作碼26與PC
相加的偏移量3105
62.6MIPS指令系統(tǒng)結(jié)構(gòu)MIPS指令可以分為四大類load和storeALU操作分支與跳轉(zhuǎn)浮點(diǎn)操作符號(hào)的意義x←ny:從y傳送n位到xx,y←z:把z傳送到x和y2.6.5
MIPS的操作2.6MIPS指令系統(tǒng)結(jié)構(gòu)下標(biāo):表示字段中具體的位;,最到最低位(即從左到為第0位,次對(duì)于指令和數(shù)據(jù),按從最右)的順序依次進(jìn)行為第1位,依此類推。下標(biāo)可以是一個(gè)數(shù)字,也可以是一個(gè)范圍。例如:Regs[R4]0:寄存器R4的符號(hào)位Regs[R4]56-63:R4的最低字節(jié)Mem:表示主存;按字節(jié)尋址,可以傳輸任意個(gè)字節(jié)。上標(biāo):用于表示對(duì)字段進(jìn)行 的次數(shù)。例如:0
32:一個(gè)32位長(zhǎng)的全0字段2.6MIPS指令系統(tǒng)結(jié)構(gòu)符號(hào)##:用于兩個(gè)字段的拼接,并且可以出現(xiàn)在數(shù)據(jù)傳送的任何一邊。舉例:R8、R10:64位的寄存器,則Regs[R8]32-63←32(Mem
[Regs[R6]]0)24##Mem
[Regs[R6]]表示的意義是:以R6的內(nèi)容作為地址內(nèi)存,得到的字節(jié)按符號(hào)位擴(kuò)展為32位后存入R8的低32位,R8的高32位(即Regs[R8]0-31)不變。3.
load和store指令指令舉例指令名稱含義LD
R2,20(R3)裝入雙字Regs[R2]←64
Mem[20+Regs[R3]]LW
R2,40(R3)裝入字Regs[R2]←64
(Mem[40+Regs[R3]]0)32
##Mem[40+Regs[R3]]LB
R2,30(R3)裝入字節(jié)Regs[R2]←64
(Mem[30+Regs[R3]]0)56
##Mem[30+Regs[R3]]LBU
R2,40(R3)裝入無符號(hào)字節(jié)Regs[R2]←64
056
##Mem[40+Regs[R3]]LH
R2,30(R3)裝入半字Regs[R2]←64
(Mem[30+Regs[R3]]0)48
##Mem[30+Regs[R3]]##Mem[31+Regs[R3]]L.S
F2,60(R4)裝入半字Regs[F2]←64
Mem[60+Regs[R4]]##032L.D
F2,40(R3)裝入雙精度浮點(diǎn)數(shù)Regs[F2]←64
Mem[40+Regs[R3]]SD
R4,300(R5)保存雙字Mem[300+Regs[R5]]←64
Regs[R4]SW
R4,300(R5)保存字Mem[300+Regs[R5]]←32
Regs[R4]S.S
F2,40(R2)保存單精度浮點(diǎn)數(shù)Mem[40+Regs[R2]]←32
Regs[F2]
0··
31SH
R5,502(R4)保存半字Mem[502+Regs[R4]]←16
Regs[R5]
48··
.634.ALU指令寄存器-寄存器型(RR型)指令或立即數(shù)型算術(shù)和邏輯操作:加、減、與、或、異或和移位等指令舉例指令名稱含義DADDUR1,R2,R3無符號(hào)加Regs[R1]←Regs[R2]+
Regs[R3]DADDIUR4,R5,#6加無符號(hào)立即數(shù)Regs[R4]←Regs[R5]+6LUIR1,#4把立即數(shù)裝入到一個(gè)字的高16位Regs[R1]←032
##
4
##016DSLLR1,R2,#5邏輯左移Regs[R1]←Regs[R2]<<5DSLTR1,R2,R3置小于If(Regs[R2]<
Regs[R3])Regs[R1]←1
elseRegs[R1]←02.6MIPS指令系統(tǒng)結(jié)構(gòu)R0的值 是0,它可以 一些常用的操作。例如:DADDIU
R1,R0,#100給寄存器R1裝入常數(shù)100DADD
R1,R0,R2把寄存器R2中的數(shù)據(jù)傳送到寄存器R12.6MIPS指令系統(tǒng)結(jié)構(gòu)由一組跳轉(zhuǎn)和一組分支指令來實(shí)現(xiàn)控制流的改變典型的MIPS控制指令2.6.6
MIPS的控制指令指令舉例指令名稱含義J
name跳轉(zhuǎn)PC
36··
63←
name<<2JAL
name跳轉(zhuǎn)并Regs[R31]←PC+4;PC
36··
63←name<<2;((PC+4)-227)≤name<((PC+4)+227)JALR
R3寄存器跳轉(zhuǎn)并Regs[R31]←PC+4;PC←Regs[R3]JR
R5寄存器跳轉(zhuǎn)PC←
Regs[R5]BEQZR4,name等于零時(shí)分支if(Regs[R4]==
0)
PC←name
;((PC+4)-217)≤name<((PC+4)+217)BNE
R3,R4,name不相等時(shí)分支if(Regs[R3]!=
Regs[R4])
PC←name((PC+4)-217)≤name<((PC+4)+217)MOVZR1,R2,R3等于零時(shí)移動(dòng)if(Regs[R3]==0)
Regs[R1]←Regs[R2]2.6MIPS指令系統(tǒng)結(jié)構(gòu)3.
跳轉(zhuǎn)指令根據(jù)跳轉(zhuǎn)指令確定目標(biāo)地址的方式不同以及跳轉(zhuǎn)時(shí)是否
,可以把跳轉(zhuǎn)指令分成4種。確定目標(biāo)地址的方式把指令中的26位偏移量左移2位(因?yàn)橹噶钭珠L(zhǎng)都是4個(gè)字節(jié))后,替換程序計(jì)數(shù)器的低28位;間接跳轉(zhuǎn):由指令中指定的一個(gè)寄存器來給出轉(zhuǎn)移目標(biāo)地址。跳轉(zhuǎn)的兩種類型簡(jiǎn)單跳轉(zhuǎn):把目標(biāo)地址送入程序計(jì)數(shù)器。跳轉(zhuǎn)并 :把目標(biāo)地址送入程序計(jì)數(shù)器,把返回地址(即順序下一條指令的地址)放入寄存器R31。2.6MIPS指令系統(tǒng)結(jié)構(gòu)4.
分支指令(條件轉(zhuǎn)移)分支條件由指令確定例如:測(cè)試某個(gè)寄存器的值是否為零提供一組比較指令,用于比較兩個(gè)寄存器的值。例如:“置小于”指令有的分支指令可以直接判斷寄存器內(nèi)容是否為負(fù),或者比較兩個(gè)寄存器是否相等。分支的目標(biāo)地址由16位帶符號(hào)偏移量左移兩位后和PC相加的結(jié)果來決定一條浮點(diǎn)條件分支指令:通過測(cè)試浮點(diǎn)狀態(tài)寄存器來決定是否進(jìn)行分支。2.6MIPS指令系統(tǒng)結(jié)構(gòu)由操作碼
操作數(shù)是單精度(SP)或雙精度(DP)后綴S:表示操作數(shù)是單精度浮點(diǎn)數(shù)后綴D:表示是雙精度浮點(diǎn)數(shù)浮點(diǎn)操作包括加、減、乘、除,分別有單精度和雙精度指令。浮點(diǎn)數(shù)比較指令根據(jù)比較結(jié)果設(shè)置浮點(diǎn)狀態(tài)寄存器中的某一位,以便于后面的分支指令BC1T(若真則分支)或BC1F(若假則分支)測(cè)試該位,以決定是否進(jìn)行分支。2.6.7
MIPS的浮點(diǎn)操作補(bǔ)充習(xí)題2.14.textLD R1,
n(R0)L.D F0,
x(R0)DADDI R2,
R0,1
;
R2
←
1MTC1 R2,F11 ;
F11
←1CVT.D.L
F2,F11 ;
F2←1模擬以下MIPS程序的單條指令運(yùn)行方式,在表中用16進(jìn)制編碼記錄每一步產(chǎn)生的結(jié)果。.datan: .word
3x: .double
0.55.6.7.8.9.10.11.12.
loop:MUL.D F2,
F2,
F0
;F2
←
F2*F013.14.15.DADDIBNEZHALTR1,
R1,-1
;
decrement
R1by
1R1,
loop ;
if
R1≠0
continue;此條不填表序號(hào)結(jié)果寄存器名稱結(jié)果值(16進(jìn)制)序號(hào)結(jié)果寄存器名稱結(jié)果值(16進(jìn)制)無無無無12613714無無提示:MIPS浮點(diǎn)數(shù)的格式是IEEE754提示:MIPS浮點(diǎn)數(shù)的格式是IEEE754Jan.
2009Computer
Architecture,Instruction-Set
ArchitectureSlide
96MiniMIPS
Instruction
FormatsFigure
5.4 MiniMIPS
instructions
come
in
only
three
formats:register
(R),
immediate
(I),
and
jump
(J).31250OpcodeSourceregister
1Sourceregister
2oprs
rtRrd
sh6
bits5
bits5
bits5
bits5
bits6
bits20
15
105fnDestinationregisterShiftamountOpcodeextensionImmediate
operandor
address
offset312520150OpcodeSourceor
baseoprsrtoperand/
offsetI6
bits5
bits5
bits16
bits31Destinationor
datajumpOpcodeopaddressJMemory
word
address
(byte
address
divided
by
4)26
bits25
06
bitsJan.
2009Computer
Architecture,Instruction-Set
ArchitectureSlide
97Simple
Arithmetic/Logic
InstructionsAdd
and
subtract
already
discussed;
logical
instructions
are
similarFigure
5.5 The
arithmetic
instructions
add
and
sub
have
a
format
thatis
common
to
all
two-operand
ALU
instructions.
For
these,
the
fn
fieldspecifies
the
arithmetic/logicoperation
to
be
performed.000000100001000101000000001000x0312520150ALUinstructionSourceregister
1Sourceregister
2oprsrtRrdsh105fnDestinationregisterUnusedadd
=
32sub
=
34add$t0,$s0,$s1#set$t0to($s0)+($s1)sub$t0,$s0,$s1#set$t0to($s0)-($s1)and$t0,$s0,$s1#set$t0to($s0)($s1)or$t0,$s0,$s1#set$t0to($s0)($s1)xor$t0,$s0,$s1#set$t0to($s0)($s1)nor$t0,$s0,$s1#set$t0to(($s0)($s1))Jan.
2009Computer
Architecture,Instruction-Set
ArchitectureSlide
98Arithmetic/Logic
with
One
Immediate
OperandFigure
5.6 Instructions
such
as
addi
allow
us
to
perform
anarithmetic
or
logic
operation
for
which
one
operand
is
a
small
constant.312520150addi
=
8Sourceop
rsrtoperand
/
offsetI00100001000100000000000000111101An
operand
in
the
range
[32
768,
32
767],
or
[0x0000,
0xffff],can
be
specified
in
the
immediate
field.addi$t0,$s0,61#set$t0to
($s0)+61andi$t0,$s0,61#set$t0to
($s0)61ori$t0,$s0,61#set$t0to
($s0)61xori$t0,$s0,0x00ff#set$t0to
($s0)
0x00ffFor
arithmetic
instructions,
the
immediate
operand
is
sign-extended1
00
1Destination Immediate
operandErrorsJan.
2009Computer
Architecture,Instruction-Set
ArchitectureSlide
99Load
and
Store
InstructionsFigure
5.7 MiniMIPS
lw
and
sw
instructions
and
their
memoryaddressing
convention
that
allowsfor
simple
access
to
array
elementsvia
a
base
address
and
an
offset
(offset
=
4i
leads
us
to
the
i
th
word).312520
150lw
=
35sw
=
43BaseregisterDataregisterOffset
relative
to
baseoprs
rt operand
/
offsetI10x01110011010000000000000101000Address
inbase
registerOffset
=
4iMemoryA[0]A[1]A[2]...A[i]Element
iof
array
ANote
on
base
and
offset:The
memory
address
is
the
sumof
(rs)
and
an
immediate
value.Calling
one
of
these
the
baseand
the
other
the
offset
is
quitearbitrary.
It
would
make
perfectsense
to
interpret
the
addressA($s3)
as
having
the
base
Aand
the
offset
($s3).
However,a
16-bit
base
confines
us
to
asmall
portion
of
memory
space.lw
$t0,40($s3)lw
$t0,A($s3)Jan.
2009Computer
Architecture,Instruction-Set
ArchitectureSlide
100lw,
sw,
and
lui
Instructions00000000001111010000000000000000Content
of
$s0
after
the
instruction
is
executedFigure
5.8 The
lui
instruction
allows
us
to
load
an
arbitrary
16-bitvalue
into
the
upper
half
of
a
register
while
setting
its
lower
half
to
0s.00111100000100000000000000111101312520150lui
=
15DestinationUnusedImmediate
operandoprsrtoperand
/
offsetIlw
$t0,40($s3)sw
$t0,A($s3)#
load
mem[40+($s3)]
in
$t0#
store
($t0)
in
mem[A+($s3)]#
“($s3)”
means
“content
of
$s3”#
The
immediate
value
61
is#
loaded
in
upper
half
of
$s0#
with
lower
16b
set
to
0slui
$s0,61Jan.
2009Computer
Architecture,Instruction-Set
ArchitectureSlide
101Initializing
a
RegisterExample
5.2Show
how
each
of
these
bit
patterns
can
be
loaded
into
$s0:0010
0001
0001
0000
0000
0000
0011
11011111
1111
1111
1111
1111
1111
1111
1111SolutionThe bit
pattern
has
the
hex
representation:
0x2110003dlui$s0,0x2110#
putthe
upperhalf
in$s0ori$s0,0x003d#
putthe
lowerhalf
in$s0Same
can
be
done,
with
immediate
values
changed
to
0xfffffor
the
second
bit
pattern.
But,
the
following
is
simpler
and
faster:nor $s0,$zero,$zero
#
because
(0
0)
=
1Jan.
2009Computer
Architecture,Instruction-Set
ArchitectureSlide
102Jump
and
Branch
InstructionsUnconditional
jump
and
jump
through
registerinstructionsj
verify$ra31#
go
to
mem
loc
named
“verify”#
go
to
address
that
is
in
$ra;#
$rajummpa
oadlddressa
return
0
addressFigure
5.9 The
jump
instruc
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中國光纖光柵式溫度在線監(jiān)測(cè)系統(tǒng)市場(chǎng)調(diào)查研究報(bào)告
- 2025至2031年中國非可視對(duì)講門鈴行業(yè)投資前景及策略咨詢研究報(bào)告
- 2025至2031年中國退菌特可濕性粉劑行業(yè)投資前景及策略咨詢研究報(bào)告
- 2025至2031年中國羊毛球拋光輪行業(yè)投資前景及策略咨詢研究報(bào)告
- 2025至2031年中國電鍍粘合劑行業(yè)投資前景及策略咨詢研究報(bào)告
- 2025年汽車斷油氣缸裝置項(xiàng)目可行性研究報(bào)告
- 2025年日用玻璃制品項(xiàng)目可行性研究報(bào)告
- 2025年投幣按摩椅項(xiàng)目可行性研究報(bào)告
- 2025年大規(guī)格圓塊孔石墨換熱器項(xiàng)目可行性研究報(bào)告
- 2025年卡通保溫袋項(xiàng)目可行性研究報(bào)告
- 2025年中國主題樂園行業(yè)發(fā)展概況、市場(chǎng)全景分析及投資策略研究報(bào)告
- 泳池翻新改造施工方案
- 國有企業(yè)內(nèi)部審計(jì)工作制度(2篇)
- 期末試卷:安徽省宣城市2021-2022學(xué)年七年級(jí)上學(xué)期期末歷史試題(解析版)
- 食品抽檢核查處置重點(diǎn)安全性指標(biāo)不合格原因分析排查手冊(cè)
- 幼兒教師新年規(guī)劃
- 五年級(jí)數(shù)學(xué)上冊(cè) 圖形與幾何專題測(cè)試卷 (含答案)(北師大版)
- 2024年湖南省公務(wù)員錄用考試《行測(cè)》真題及答案解析
- 火災(zāi)自動(dòng)報(bào)警及其消防聯(lián)動(dòng)系統(tǒng)技術(shù)規(guī)格書
- 分布式光伏培訓(xùn)
- 山東省房屋市政工程安全監(jiān)督機(jī)構(gòu)人員業(yè)務(wù)能力考試題庫-上(單選題)
評(píng)論
0/150
提交評(píng)論