![-計(jì)算機(jī)指令集結(jié)構(gòu)1_第1頁(yè)](http://file4.renrendoc.com/view12/M0B/22/1E/wKhkGWXirg6ARVkeAAERdQzAhj4854.jpg)
![-計(jì)算機(jī)指令集結(jié)構(gòu)1_第2頁(yè)](http://file4.renrendoc.com/view12/M0B/22/1E/wKhkGWXirg6ARVkeAAERdQzAhj48542.jpg)
![-計(jì)算機(jī)指令集結(jié)構(gòu)1_第3頁(yè)](http://file4.renrendoc.com/view12/M0B/22/1E/wKhkGWXirg6ARVkeAAERdQzAhj48543.jpg)
![-計(jì)算機(jī)指令集結(jié)構(gòu)1_第4頁(yè)](http://file4.renrendoc.com/view12/M0B/22/1E/wKhkGWXirg6ARVkeAAERdQzAhj48544.jpg)
![-計(jì)算機(jī)指令集結(jié)構(gòu)1_第5頁(yè)](http://file4.renrendoc.com/view12/M0B/22/1E/wKhkGWXirg6ARVkeAAERdQzAhj48545.jpg)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
計(jì)算機(jī)系統(tǒng)設(shè)計(jì)的定量原理(1)Makethecommoncasefaster|AmdahlCPU性能公式CPU時(shí)間=
(CPIi
ICi)/時(shí)鐘頻率CPI=
(CPIi
ICi)/IC=
(CPIi
ICi/IC)CPU時(shí)間=CPI
IC
時(shí)鐘周期時(shí)間
;MIPS106=
指令條數(shù)執(zhí)行時(shí)間CPU時(shí)鐘周期數(shù)=指令條數(shù)
106/ffCPI=
106程序的執(zhí)行時(shí)間Te=MIPS指令條數(shù)
106計(jì)算機(jī)系統(tǒng)設(shè)計(jì)的定量原理(2)MIPS(MillionInstructionsPerSecond)2.1 指令系統(tǒng)結(jié)構(gòu)的分類(lèi)2.2 尋址方式2.3 指令系統(tǒng)的設(shè)計(jì)與優(yōu)化2.4指令系統(tǒng)的發(fā)展和改進(jìn)2.5 操作數(shù)的類(lèi)型和大小2.6 MIPS指令系統(tǒng)結(jié)構(gòu)第2章指令系統(tǒng)的設(shè)計(jì)區(qū)別不同指令系統(tǒng)結(jié)構(gòu)的主要因素CPU中用來(lái)存儲(chǔ)操作數(shù)的存儲(chǔ)單元的類(lèi)型CPU中用來(lái)存儲(chǔ)操作數(shù)的存儲(chǔ)單元堆棧累加器通用寄存器組將指令系統(tǒng)的結(jié)構(gòu)分為三種類(lèi)型2.1指令系統(tǒng)結(jié)構(gòu)的分類(lèi)2.1指令系統(tǒng)結(jié)構(gòu)的分類(lèi)堆棧結(jié)構(gòu)累加器結(jié)構(gòu)通用寄存器結(jié)構(gòu)根據(jù)操作數(shù)的來(lái)源不同,又可進(jìn)一步分為:寄存器-存儲(chǔ)器結(jié)構(gòu)(RM結(jié)構(gòu))(操作數(shù)可以來(lái)自存儲(chǔ)器)寄存器-寄存器結(jié)構(gòu)(RR結(jié)構(gòu))(所有操作數(shù)都是來(lái)自通用寄存器組)也稱(chēng)為load-store結(jié)構(gòu),這個(gè)名稱(chēng)強(qiáng)調(diào):只有l(wèi)oad指令和store指令能夠訪問(wèn)存儲(chǔ)器。
2.1指令系統(tǒng)結(jié)構(gòu)的分類(lèi)對(duì)于不同類(lèi)型的結(jié)構(gòu),操作數(shù)的位置、個(gè)數(shù)以及操作數(shù)的給出方式(顯式或隱式)也會(huì)不同。顯式給出:用指令字中的操作數(shù)字段給出隱式給出:使用事先約定好的單元2.1指令系統(tǒng)結(jié)構(gòu)的分類(lèi)
例:表達(dá)式Z=X+Y在4種類(lèi)型指令系統(tǒng)結(jié)構(gòu)上的代碼。假設(shè):X、Y、Z均保存在存儲(chǔ)器單元中,并且不能破壞X和Y的值。堆棧累加器寄存器(RM型)寄存器(RR型)pushXloadXloadR1,XloadR1,XpushYaddYaddR1,YloadR2,YaddstoreZstoreR1,ZaddR3,R1,R2popZstoreR3,Z2.1指令系統(tǒng)結(jié)構(gòu)的分類(lèi)通用寄存器型結(jié)構(gòu)現(xiàn)代指令系統(tǒng)結(jié)構(gòu)的主流在靈活性和提高性能方面有明顯的優(yōu)勢(shì)跟其它的CPU內(nèi)部存儲(chǔ)單元一樣,寄存器的訪問(wèn)速度比存儲(chǔ)器快。對(duì)編譯器而言,能更加容易、有效地分配和使用寄存器。寄存器可以用來(lái)存放變量。
(1)減少對(duì)存儲(chǔ)器的訪問(wèn),加快程序的執(zhí)行速度;(因?yàn)榧拇嫫鞅却鎯?chǔ)器快)
(2)用更少的地址位(相對(duì)于存儲(chǔ)器地址來(lái)說(shuō))來(lái)對(duì)寄存器進(jìn)行尋址,從而有效地減少程序的目標(biāo)代碼的大小。2.1指令系統(tǒng)結(jié)構(gòu)的分類(lèi)根據(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ù)。ALU指令中存儲(chǔ)器操作數(shù)的個(gè)數(shù)可以是0~3中的某一個(gè),為0表示沒(méi)有存儲(chǔ)器操作數(shù)。ALU指令中存儲(chǔ)器操作數(shù)的個(gè)數(shù)ALU指令中操作數(shù)的最多個(gè)數(shù)結(jié)構(gòu)類(lèi)型機(jī)器實(shí)例03RRMIPS,SPARC,Alpha,PowerPC,ARM12RMIBM360/370,Intel80x86,Motorola680003RMIBM360/37022MMVAX33MMVAXALU指令中操作數(shù)個(gè)數(shù)和存儲(chǔ)器操作數(shù)個(gè)數(shù)的典型組合2.1指令系統(tǒng)結(jié)構(gòu)的分類(lèi)通用寄存器型結(jié)構(gòu)進(jìn)一步細(xì)分為3種類(lèi)型寄存器-寄存器型(RR型)寄存器-存儲(chǔ)器型(RM型)存儲(chǔ)器-存儲(chǔ)器型(MM型)
3種通用寄存器型結(jié)構(gòu)的優(yōu)缺點(diǎn)
表中(m,n)表示指令的n個(gè)操作數(shù)中有m個(gè)存儲(chǔ)器操作數(shù)。指令系統(tǒng)結(jié)構(gòu)類(lèi)型優(yōu)點(diǎn)缺點(diǎn)寄存器-寄存器型(0,3)指令字長(zhǎng)固定,指令結(jié)構(gòu)簡(jiǎn)潔,是一種簡(jiǎn)單的代碼生成模型,各種指令的執(zhí)行時(shí)鐘周期數(shù)相近。與指令中含存儲(chǔ)器操作數(shù)的指令系統(tǒng)結(jié)構(gòu)相比,指令條數(shù)多,目標(biāo)代碼不夠緊湊,因而程序占用的空間比較大。寄存器-存儲(chǔ)器型(1,2)可以在ALU指令中直接對(duì)存儲(chǔ)器操作數(shù)進(jìn)行引用,而不必先用load指令進(jìn)行加載。容易對(duì)指令進(jìn)行編碼,目標(biāo)代碼比較緊湊。指令中的兩個(gè)操作數(shù)不對(duì)稱(chēng)。在一條指令中同時(shí)對(duì)寄存器操作數(shù)和存儲(chǔ)器操作數(shù)進(jìn)行編碼,有可能限制指令所能夠表示的寄存器個(gè)數(shù)。指令的執(zhí)行時(shí)鐘周期數(shù)因操作數(shù)的來(lái)源(寄存器或存儲(chǔ)器)不同而差別比較大。存儲(chǔ)器-存儲(chǔ)器型(2,2)或(3,3)目標(biāo)代碼最緊湊,不需要設(shè)置寄存器來(lái)保存變量。指令字長(zhǎng)變化很大,特別是3操作數(shù)指令。而且每條指令完成的工作也差別很大。對(duì)存儲(chǔ)器的頻繁訪問(wèn)會(huì)使存儲(chǔ)器成為瓶頸。這種類(lèi)型的指令系統(tǒng)結(jié)構(gòu)現(xiàn)在已不用了。尋址方式:指令系統(tǒng)中如何形成所要訪問(wèn)的數(shù)據(jù)的地址。尋址方式可以指明指令中的操作數(shù)是一個(gè)常數(shù)、一個(gè)寄存器操作數(shù)或者是一個(gè)存儲(chǔ)器操作數(shù)。對(duì)于存儲(chǔ)器操作數(shù)來(lái)說(shuō),由尋址方式確定的存儲(chǔ)器地址稱(chēng)為有效地址。2.2尋址方式一些操作數(shù)尋址方式
:賦值操作Mem:存儲(chǔ)器Regs:寄存器組方括號(hào):表示內(nèi)容Mem[]:存儲(chǔ)器的內(nèi)容;Regs[]:寄存器的內(nèi)容Mem[Regs[R1]]:以寄存器R1中的內(nèi)容作為地址的存儲(chǔ)器單元中的內(nèi)容尋址方式指令實(shí)例含義寄存器尋址ADDR1,R2Regs[R1]←Regs[R1]+Regs[R2]立即值尋址ADDR3,#6Regs[R3]←Regs[R3]+6偏移尋址ADDR3,120(R2)Regs[R3]←Regs[R3]+Mem[120+Regs[R2]]寄存器間接尋址ADDR4,(R2)Regs[R4]←Regs[R4]+Mem[Regs[R2]]索引尋址ADDR4,(R2+R3)Regs[R4]←Regs[R4]+Mem[Regs[R2]+Regs[R3]]直接尋址或絕對(duì)尋址ADDR4,(1010)Regs[R4]←Regs[R4]+Mem[1010]存儲(chǔ)器間接尋址ADDR2,@(R4)Regs[R2]←Regs[R2]+Mem[Mem[Regs[R4]]]自增尋址ADDR1,(R2)+Regs[R1]←Regs[R1]+Mem[Regs[R2]]Regs[R2]←Regs[R2]+d自減尋址ADDR1,-(R2)Regs[R2]←Regs[R2]-dRegs[R1]←Regs[R1]+Mem[Regs[R2]]縮放尋址ADDR1,80(R2)[R3]Regs[R1]←Regs[R1]+Mem[80+Regs[R2]+Regs[R3]*d]2.2尋址方式采用多種尋址方式可以顯著地減少程序的指令條數(shù),但可能增加計(jì)算機(jī)的實(shí)現(xiàn)復(fù)雜度以及指令的CPI。2.2尋址方式立即數(shù)尋址方式和偏移尋址方式的使用頻度最高。
各種尋址方式的使用情況統(tǒng)計(jì)結(jié)果在VAX機(jī)器上運(yùn)行g(shù)cc、Spice和Tex基準(zhǔn)程序4.各種偏移量字段大小的使用情況寄存器-寄存器型指令集結(jié)構(gòu)的機(jī)器上(MIPS)
◆
運(yùn)行SPECint92基準(zhǔn)程序集(compress、espresso、eqntott、gcc、li)
◆
運(yùn)行SPECfp92基準(zhǔn)程序集(dudoc、ear、hydro2d、mdljdp2、su2cor)x軸的標(biāo)記是對(duì)偏移量大小進(jìn)行l(wèi)og2(·)運(yùn)算所得,也就是偏移量字段的位數(shù)?!?/p>
程序所使用的偏移量大小分布十分廣泛;◆
較小的偏移量和較大的偏移量均占有相當(dāng)大的比例;◆
將偏移量字段的大小設(shè)置為12~16位。這種長(zhǎng)度可以支持上述75%~99%基于偏移尋址方式的數(shù)據(jù)訪問(wèn)中偏移量大小的表示。
在一種Load/Store型指令集結(jié)構(gòu)上,一些指令使用立即值尋址方式的頻率。
比較指令和ALU指令使用立即值尋址方式十分頻繁。6.不同立即值大小的使用分布情況
將立即值的大小設(shè)置為8~16位,可以覆蓋所有使用立即值尋址方式指令的50%~80%。2.2尋址方式兩種表示尋址方式的方法尋址方式編碼于操作碼中,由操作碼描述相應(yīng)操作的尋址方式。適合:load-store結(jié)構(gòu),尋址方式只有很少幾種。指令字中設(shè)置專(zhuān)門(mén)的尋址字段,以直接指出尋址方式。靈活,操作碼短,但需要設(shè)置專(zhuān)門(mén)的尋址方式字段,而且操作碼和尋址方式字段合起來(lái)所需要的總位數(shù)可能會(huì)比隱含方法的總位數(shù)多。適合:處理機(jī)有多種尋址方式,且指令有多個(gè)操作數(shù)。2.2尋址方式一個(gè)需要注意的問(wèn)題:物理地址空間的信息如何存放?如何在存儲(chǔ)器中存放不同寬度的信息?以IBM370為例子進(jìn)行討論。信息有字節(jié)、半字(雙字節(jié))、單字(4字節(jié))和雙字(8字節(jié))等寬度。主存寬度為8個(gè)字節(jié)。采用按字節(jié)編址,各類(lèi)信息都是用該信息的首字節(jié)地址來(lái)尋址。允許它們?nèi)我獯鎯?chǔ)很可能會(huì)出現(xiàn)一個(gè)信息跨存儲(chǔ)字邊界而存儲(chǔ)于兩個(gè)存儲(chǔ)單元中2.2尋址方式信息寬度不超過(guò)主存寬度的信息必須存放在一個(gè)存儲(chǔ)字內(nèi),不能跨邊界。必須做到:信息在主存中存放的起始地址必須是該信息寬度(字節(jié)數(shù))的整數(shù)倍信息存儲(chǔ)的整數(shù)邊界概念滿足以下條件字節(jié)信息的起始地址為:×…××××半字信息的起始地址為:×…×××0單字信息的起始地址為:×…××00雙字信息的起始地址為:×…×000
存在存儲(chǔ)空間的浪費(fèi),但保證訪問(wèn)速度。2.2尋址方式指令系統(tǒng)的設(shè)計(jì)首先考慮所應(yīng)實(shí)現(xiàn)的基本功能,確定哪些基本功能應(yīng)該由硬件實(shí)現(xiàn),哪些功能由軟件實(shí)現(xiàn)比較合適。包括指令的功能設(shè)計(jì)指令格式的設(shè)計(jì)在確定哪些基本功能用硬件來(lái)實(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è)有限可用的存儲(chǔ)空間內(nèi),對(duì)于任何可解的問(wèn)題,編制計(jì)算程序時(shí),指令系統(tǒng)所提供的指令足夠使用。2.3指令系統(tǒng)的設(shè)計(jì)與優(yōu)化要求指令系統(tǒng)功能齊全、使用方便下表為許多指令系統(tǒng)結(jié)構(gòu)都包含的一些指令類(lèi)型前4類(lèi)屬于通用計(jì)算機(jī)系統(tǒng)的基本指令對(duì)于最后4種類(lèi)型的操作,不同指令系統(tǒng)結(jié)構(gòu)的支持大不相同。2.3指令系統(tǒng)的設(shè)計(jì)與優(yōu)化操作類(lèi)型實(shí)例算術(shù)和邏輯運(yùn)算算術(shù)運(yùn)算和邏輯操作:加,減,乘,除,與,或等數(shù)據(jù)傳輸load,store控制分支,跳轉(zhuǎn),過(guò)程調(diào)用和返回,自陷等系統(tǒng)操作系統(tǒng)調(diào)用,虛擬存儲(chǔ)器管理等浮點(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ì)稱(chēng)性和均勻性。對(duì)稱(chēng)性:所有與指令系統(tǒng)有關(guān)的存儲(chǔ)單元的使用、操作碼的設(shè)置等都是對(duì)稱(chēng)的。例如:在存儲(chǔ)單元的使用上,所有通用寄存器都要同等對(duì)待。在操作碼的設(shè)置上,如果設(shè)置了A-B的指令,就應(yīng)該也設(shè)置B-A的指令。
均勻性:指對(duì)于各種不同的操作數(shù)類(lèi)型、字長(zhǎng)、操作種類(lèi)和數(shù)據(jù)存儲(chǔ)單元,指令的設(shè)置都要同等對(duì)待。例如:如果某機(jī)器有5種數(shù)據(jù)表示,4種字長(zhǎng),兩種存儲(chǔ)單元,則要設(shè)置5×4×2=40種同一操作的指令。
2.3指令系統(tǒng)的設(shè)計(jì)與優(yōu)化正交性:在指令中各個(gè)不同含義的字段,如操作類(lèi)型、數(shù)據(jù)類(lèi)型、尋址方式字段等,在編碼時(shí)應(yīng)互不相關(guān)、相互獨(dú)立。高效率:指指令的執(zhí)行速度快、使用頻度高。兼容性:主要是要實(shí)現(xiàn)向后兼容,指令系統(tǒng)可以增加新指令,但不能刪除指令或更改指令的功能。2.3指令系統(tǒng)的設(shè)計(jì)與優(yōu)化在設(shè)計(jì)指令系統(tǒng)時(shí),有兩種截然不同的設(shè)計(jì)策略。(產(chǎn)生了兩類(lèi)不同的計(jì)算機(jī)系統(tǒng))CISC(復(fù)雜指令系統(tǒng)計(jì)算機(jī))增強(qiáng)指令功能,把越來(lái)越多的功能交由硬件來(lái)實(shí)現(xiàn),并且指令的數(shù)量也是越來(lái)越多。RISC(精簡(jiǎn)指令系統(tǒng)計(jì)算機(jī))盡可能地把指令系統(tǒng)簡(jiǎn)化,不僅指令的條數(shù)少,而且指令的功能也比較簡(jiǎn)單。
2.4指令系統(tǒng)的發(fā)展和改進(jìn)2.4.1沿CISC方向發(fā)展和改進(jìn)指令系統(tǒng)CISC指令系統(tǒng)的一大特點(diǎn)指令數(shù)量多、功能多樣增強(qiáng)指令功能主要是從以下3個(gè)方面著手:面向目標(biāo)程序增強(qiáng)指令功能面向高級(jí)語(yǔ)言的優(yōu)化實(shí)現(xiàn)來(lái)改進(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ì)于使用頻度高的指令串,用一條新的指令來(lái)替代。既能減少目標(biāo)程序的執(zhí)行時(shí)間,也能有效地縮短程序的長(zhǎng)度。可以從以下幾個(gè)方面來(lái)改進(jìn):增強(qiáng)運(yùn)算型指令的功能增強(qiáng)數(shù)據(jù)傳送指令的功能增強(qiáng)程序控制指令的功能2.4指令系統(tǒng)的發(fā)展和改進(jìn)例如:循環(huán)在程序中占有相當(dāng)大的比例,所以在指令上提供專(zhuān)門(mén)的支持。循環(huán)控制部分通常用3條指令完成:一條加法指令一條比較指令一條分支指令設(shè)置循環(huán)控制指令,用一條指令完成上述3條指令的功能。
一般循環(huán)程序的結(jié)構(gòu)2.4指令系統(tǒng)的發(fā)展和改進(jìn)面向高級(jí)語(yǔ)言的優(yōu)化實(shí)現(xiàn)來(lái)改進(jìn)指令系統(tǒng)(縮小高級(jí)語(yǔ)言與機(jī)器語(yǔ)言的語(yǔ)義差距)高級(jí)語(yǔ)言與一般的機(jī)器語(yǔ)言的語(yǔ)義差距非常大,為高級(jí)語(yǔ)言程序的編譯帶來(lái)了一些問(wèn)題。(1)編譯器本身比較復(fù)雜;(2)編譯生成的目標(biāo)代碼比較難以達(dá)到很好的優(yōu)化。2.4指令系統(tǒng)的發(fā)展和改進(jìn)增強(qiáng)對(duì)高級(jí)語(yǔ)言和編譯器的支持對(duì)高級(jí)語(yǔ)言中使用頻度高、執(zhí)行時(shí)間長(zhǎng)的語(yǔ)句,增強(qiáng)有關(guān)指令的功能,加快這些指令的執(zhí)行速度,或者增加專(zhuān)門(mén)的指令,可以達(dá)到減少目標(biāo)程序的執(zhí)行時(shí)間和減少目標(biāo)程序長(zhǎng)度的目的。增強(qiáng)系統(tǒng)結(jié)構(gòu)的規(guī)整性,減少系統(tǒng)結(jié)構(gòu)中的各種例外情況。
(面向高級(jí)語(yǔ)言的計(jì)算機(jī))2.4指令系統(tǒng)的發(fā)展和改進(jìn)高級(jí)語(yǔ)言計(jì)算機(jī)
①間接執(zhí)行高級(jí)語(yǔ)言機(jī)器高級(jí)語(yǔ)言作為機(jī)器的匯編語(yǔ)言。②直接執(zhí)行高級(jí)語(yǔ)言的機(jī)器直接把高級(jí)語(yǔ)言作為機(jī)器語(yǔ)言。(一種比較激進(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)和訪問(wèn)方式的切換;進(jìn)程的管理和切換;存儲(chǔ)管理和信息保護(hù);進(jìn)程的同步與互斥,信號(hào)燈的管理等。
支持操作系統(tǒng)的有些指令屬于特權(quán)指令,一般用戶程序是不能使用的。2.4指令系統(tǒng)的發(fā)展和改進(jìn)CISC指令系統(tǒng)結(jié)構(gòu)存在的問(wèn)題
(1979年開(kāi)始,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%Intel80x86最常用的10條指令2.4指令系統(tǒng)的發(fā)展和改進(jìn)指令系統(tǒng)龐大,指令條數(shù)很多,許多指令的功能又很復(fù)雜,使得控制器硬件非常復(fù)雜。
導(dǎo)致的問(wèn)題:占用了大量的芯片面積(如占用CPU芯片總面積的一半以上),給VLSI設(shè)計(jì)造成很大的困難;增加了研制時(shí)間和成本,容易造成設(shè)計(jì)錯(cuò)誤。許多指令由于操作繁雜,其CPI值比較大,執(zhí)行速度慢。采用這些復(fù)雜指令有可能使整個(gè)程序的執(zhí)行時(shí)間反而增加。由于指令功能復(fù)雜,規(guī)整性不好,不利于采用流水技術(shù)來(lái)提高性能。2.4指令系統(tǒng)的發(fā)展和改進(jìn)設(shè)計(jì)RISC機(jī)器遵循的原則指令條數(shù)少、指令功能簡(jiǎn)單。只選取使用頻度很高的指令,在此基礎(chǔ)上補(bǔ)充一些最有用的指令;采用簡(jiǎn)單而又統(tǒng)一的指令格式,并減少尋址方式;指令字長(zhǎng)都為32位或64位;指令的執(zhí)行在單個(gè)機(jī)器周期內(nèi)完成;
(采用流水線機(jī)制)只有l(wèi)oad和store指令才能訪問(wèn)存儲(chǔ)器,其它指令的操作都是在寄存器之間進(jìn)行;
(即采用load-store結(jié)構(gòu))大多數(shù)指令都采用硬連邏輯來(lái)實(shí)現(xiàn);2.4指令系統(tǒng)的發(fā)展和改進(jìn)強(qiáng)調(diào)優(yōu)化編譯器的作用,為高級(jí)語(yǔ)言程序生成優(yōu)化的代碼;充分利用流水技術(shù)來(lái)提高性能。早期的RISC微處理器1981年,Berkeley分校的Patterson等人的32位微處理器RISCI:31條指令,指令字長(zhǎng)都是32位,78個(gè)通用寄存器,時(shí)鐘頻率為8MHz;控制部分所占的芯片面積只有約6%。商品化微處理器MC68000和Z8000分別為50%和53%;性能比MC68000和Z8000快3~4倍。2.4指令系統(tǒng)的發(fā)展和改進(jìn)1983年的RISCⅡ:指令條數(shù)為39,通用寄存器個(gè)數(shù)為138,時(shí)鐘頻率為12MHz。后來(lái)發(fā)展成了Sun公司的SPARC系列微處理器。1981年,Stanford大學(xué)Hennessy等人的MIPS后來(lái)發(fā)展成了MIPSRxxx系列微處理器。IBM的801共同特點(diǎn):采用load-store結(jié)構(gòu)指令字長(zhǎng)為32位采用高效的流水技術(shù)數(shù)據(jù)表示:計(jì)算機(jī)硬件能夠直接識(shí)別、指令系統(tǒng)可以直接調(diào)用的數(shù)據(jù)類(lèi)型。所有數(shù)據(jù)類(lèi)型中最常用、相對(duì)比較簡(jiǎn)單、用硬件實(shí)現(xiàn)比較容易的幾種。數(shù)據(jù)結(jié)構(gòu):由軟件進(jìn)行處理和實(shí)現(xiàn)的各種數(shù)據(jù)類(lèi)型。研究:這些數(shù)據(jù)類(lèi)型的邏輯結(jié)構(gòu)與物理結(jié)構(gòu)之間的關(guān)系,并給出相應(yīng)的算法。系統(tǒng)結(jié)構(gòu)設(shè)計(jì)者要解決的問(wèn)題:如何確定數(shù)據(jù)表示?(軟硬件取舍折中的問(wèn)題)2.5操作數(shù)的類(lèi)型和大小數(shù)據(jù)表示:硬件數(shù)據(jù)類(lèi)型 數(shù)據(jù)結(jié)構(gòu):軟件
確定哪些數(shù)據(jù)類(lèi)型用數(shù)據(jù)表示實(shí)現(xiàn),是軟件與硬件的取舍問(wèn)題原則: 縮短程序運(yùn)行時(shí)間; 減少CPU與主存的通信量; 數(shù)據(jù)類(lèi)型的通用性和利用率例:實(shí)現(xiàn)A=A+B,A和B均為200×200的矩陣。分析向量指令的作用解:如在沒(méi)有向量數(shù)據(jù)表示的計(jì)算機(jī)系統(tǒng)上實(shí)現(xiàn),一般需要6條指令,其中有4條指令要循環(huán)4萬(wàn)次。因此,CPU與主存儲(chǔ)器之間的通信量:取指令2+4×40,000條,讀或?qū)憯?shù)據(jù)3×40,000個(gè),共要訪問(wèn)主存儲(chǔ)器7×40,000次以上
如果有向量數(shù)據(jù)表示,只需要一條指令減少訪問(wèn)主存(取指令)次數(shù):4×40,000次縮短程序執(zhí)行時(shí)間一倍以上2.5操作數(shù)的類(lèi)型和大小表示操作數(shù)類(lèi)型的方法有兩種由指令中的操作碼指定操作數(shù)的類(lèi)型。給數(shù)據(jù)加上標(biāo)識(shí),由數(shù)據(jù)本身給出操作數(shù)類(lèi)型。優(yōu)點(diǎn):簡(jiǎn)化指令系統(tǒng),可由硬件自動(dòng)實(shí)現(xiàn)一致性檢查和類(lèi)型轉(zhuǎn)換,縮小了機(jī)器語(yǔ)言與高級(jí)語(yǔ)言的語(yǔ)義差距,簡(jiǎn)化編譯器等。缺點(diǎn):由于需要在執(zhí)行過(guò)程中動(dòng)態(tài)檢測(cè)標(biāo)志符,動(dòng)態(tài)開(kāi)銷(xiāo)比較大,所以采用這種方案的機(jī)器很少見(jiàn)。操作數(shù)的大?。翰僮鲾?shù)的位數(shù)或字節(jié)數(shù)。主要的大?。鹤止?jié)(8位)、半字(16位)字(32位)、和雙字(64位)2.5操作數(shù)的類(lèi)型和大小字符:用ASCII碼表示,為一個(gè)字節(jié)大小。整數(shù):用二進(jìn)制補(bǔ)碼表示,其大小可以是字節(jié)、半字或單字。浮點(diǎn)操作數(shù):?jiǎn)尉雀↑c(diǎn)數(shù)(1個(gè)字)、雙精度浮點(diǎn)數(shù)(雙字)。一般都采用IEEE754浮點(diǎn)標(biāo)準(zhǔn)十進(jìn)制操作數(shù)類(lèi)型壓縮十進(jìn)制或二進(jìn)制編碼十進(jìn)制(BCD碼):用4位二進(jìn)制編碼表示數(shù)字0~9,并將兩個(gè)十進(jìn)制數(shù)字合并到一個(gè)字節(jié)中存儲(chǔ)。非壓縮十進(jìn)制:將十進(jìn)制數(shù)直接用字符串來(lái)表示。訪問(wèn)不同操作數(shù)大小的頻率(SPEC基準(zhǔn)程序)操作數(shù)大小訪問(wèn)頻度整型平均浮點(diǎn)平均字節(jié)7%0%半字19%0%單字74%31%雙字0%69%基準(zhǔn)程序?qū)巫趾碗p字的數(shù)據(jù)訪問(wèn)具有較高的頻度。一臺(tái)32位的機(jī)器應(yīng)該支持8、16、32位整型操作數(shù)以及32位和64位的IEEE754標(biāo)準(zhǔn)的浮點(diǎn)操作數(shù)。32個(gè)64位通用寄存器(GPRs)R0,R1,…,R31也稱(chēng)為整數(shù)寄存器R0的值永遠(yuǎn)是032個(gè)64位浮點(diǎn)數(shù)寄存器(FPRs)F0,F(xiàn)1,…,F(xiàn)312.6MIPS指令系統(tǒng)結(jié)構(gòu)介紹MIPS64的一個(gè)子集,簡(jiǎn)稱(chēng)為MIPS。2.6.1MIPS的寄存器2.6MIPS指令系統(tǒng)結(jié)構(gòu)用來(lái)存放32個(gè)單精度浮點(diǎn)數(shù)(32位),也可以用來(lái)存放32個(gè)雙精度浮點(diǎn)數(shù)(64位)。存儲(chǔ)單精度浮點(diǎn)數(shù)(32位)時(shí),只用到FPR的一半,其另一半沒(méi)用。一些特殊寄存器它們可以與通用寄存器交換數(shù)據(jù)。例如浮點(diǎn)狀態(tài)寄存器:用來(lái)保存有關(guān)浮點(diǎn)操作結(jié)果的信息。2.6MIPS指令系統(tǒng)結(jié)構(gòu)MIPS的數(shù)據(jù)表示整數(shù)字節(jié)(8位)半字(16位)字(32位)雙字(64位)浮點(diǎn)數(shù)單精度浮點(diǎn)數(shù)(32位)雙精度浮點(diǎn)數(shù)(64位)字節(jié)、半字或者字在裝入64位寄存器時(shí),用零擴(kuò)展或者用符號(hào)位擴(kuò)展來(lái)填充該寄存器的剩余部分。裝入以后,對(duì)它們將按照64位整數(shù)的方式進(jìn)行運(yùn)算。2.6.2MIPS的數(shù)據(jù)表示2.6MIPS指令系統(tǒng)結(jié)構(gòu)立即數(shù)尋址與偏移量尋址;立即數(shù)字段和偏移量字段都是16位的。寄存器間接尋址是通過(guò)把0作為偏移量來(lái)實(shí)現(xiàn)的;16位絕對(duì)尋址是通過(guò)把R0(其值永遠(yuǎn)為0)作為基址寄存器來(lái)完成的;MIPS的存儲(chǔ)器是按字節(jié)尋址的,地址為64位;所有存儲(chǔ)器訪問(wèn)都必須是邊界對(duì)齊的。2.6.3MIPS的數(shù)據(jù)尋址方式2.6MIPS指令系統(tǒng)結(jié)構(gòu)尋址方式編碼到操作碼中所有的指令都是32位的操作碼占6位3種指令格式3種格式中,同名字段的位置固定不變。2.6.4MIPS的指令格式2.6MIPS指令系統(tǒng)結(jié)構(gòu)I類(lèi)指令包括所有的load和store指令,立即數(shù)指令,分支指令,寄存器跳轉(zhuǎn)指令,寄存器鏈接跳轉(zhuǎn)指令。立即數(shù)字段為16位,用于提供立即數(shù)或偏移量。2.6MIPS指令系統(tǒng)結(jié)構(gòu)load指令訪存有效地址:Regs[rs]+immediate從存儲(chǔ)器取來(lái)的數(shù)據(jù)放入寄存器rtstore指令訪存有效地址:Regs[rs]+immediate要存入存儲(chǔ)器的數(shù)據(jù)放在寄存器rt中立即數(shù)指令Regs[rt]←Regs[rs]opimmediate分支指令轉(zhuǎn)移目標(biāo)地址:Regs[rs]+immediate,rt無(wú)用寄存器跳轉(zhuǎn)、寄存器跳轉(zhuǎn)并鏈接轉(zhuǎn)移目標(biāo)地址為Regs[rs]2.6MIPS指令系統(tǒng)結(jié)構(gòu)R類(lèi)指令包括ALU指令,專(zhuān)用寄存器讀/寫(xiě)指令,move指令等。ALU指令Regs[rd]←Regs[rs]functRegs[rt]funct為具體的運(yùn)算操作編碼2.6MIPS指令系統(tǒng)結(jié)構(gòu)J類(lèi)指令包括跳轉(zhuǎn)指令,跳轉(zhuǎn)并鏈接指令,自陷指令,異常返回指令。在這類(lèi)指令中,指令字的低26位是偏移量,它與PC值相加形成跳轉(zhuǎn)的地址。2.6MIPS指令系統(tǒng)結(jié)構(gòu)MIPS指令可以分為四大類(lèi)load和storeALU操作分支與跳轉(zhuǎn)浮點(diǎn)操作符號(hào)的意義x←ny:從y傳送n位到xx,y←z:把z傳送到x和y2.6.5MIPS的操作2.6MIPS指令系統(tǒng)結(jié)構(gòu)下標(biāo):表示字段中具體的位;對(duì)于指令和數(shù)據(jù),按從最高位到最低位(即從左到右)的順序依次進(jìn)行編號(hào),最高位為第0位,次高位為第1位,依此類(lèi)推。下標(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)行復(fù)制的次數(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)容作為地址訪問(wèn)內(nèi)存,得到的字節(jié)按符號(hào)位擴(kuò)展為32位后存入R8的低32位,R8的高32位(即Regs[R8]0-31)不變。
load和store指令指令舉例指令名稱(chēng)含義LDR2,20(R3)裝入雙字Regs[R2]←64Mem[20+Regs[R3]]LWR2,40(R3)裝入字Regs[R2]←64(Mem[40+Regs[R3]]0)32##Mem[40+Regs[R3]]LBR2,30(R3)裝入字節(jié)Regs[R2]←64(Mem[30+Regs[R3]]0)56##Mem[30+Regs[R3]]LBUR2,40(R3)裝入無(wú)符號(hào)字節(jié)Regs[R2]←64056##Mem[40+Regs[R3]]LHR2,30(R3)裝入半字Regs[R2]←64(Mem[30+Regs[R3]]0)48##Mem[30+Regs[R3]]##Mem[31+Regs[R3]]L.SF2,60(R4)裝入半字Regs[F2]←64Mem[60+Regs[R4]]##032L.DF2,40(R3)裝入雙精度浮點(diǎn)數(shù)Regs[F2]←64Mem[40+Regs[R3]]SDR4,300(R5)保存雙字Mem[300+Regs[R5]]←64Regs[R4]SWR4,300(R5)保存字Mem[300+Regs[R5]]←32Regs[R4]S.SF2,40(R2)保存單精度浮點(diǎn)數(shù)Mem[40+Regs[R2]]←32Regs[F2]0··31
SHR5,502(R4)保存半字
Mem[502+Regs[R4]]←16Regs[R5]48··.63
ALU指令寄存器-寄存器型(RR型)指令或立即數(shù)型算術(shù)和邏輯操作:加、減、與、或、異或和移位等指令舉例指令名稱(chēng)含義DADDU R1,R2,R3無(wú)符號(hào)加Regs[R1]←Regs[R2]+Regs[R3]DADDIU R4,R5,#6加無(wú)符號(hào)立即數(shù)Regs[R4]←Regs[R5]+6LUI R1,#4把立即數(shù)裝入到一個(gè)字的高16位Regs[R1]←032##4##016DSLL R1,R2,#5邏輯左移Regs[R1]←Regs[R2]<<5DSLTR1,R2,R3置小于If(Regs[R2]<Regs[R3])Regs[R1]←1elseRegs[R1]←02.6MIPS指令系統(tǒng)結(jié)構(gòu)R0的值永遠(yuǎn)是0,它可以用來(lái)合成一些常用的操作。例如:DADDIUR1,R0,#100
給寄存器R1裝入常數(shù)100DADDR1,R0,R2
把寄存器R2中的數(shù)據(jù)傳送到寄存器R12.6MIPS指令系統(tǒng)結(jié)構(gòu)由一組跳轉(zhuǎn)和一組分支指令來(lái)實(shí)現(xiàn)控制流的改變典型的MIPS控制指令2.6.6MIPS的控制指令指令舉例指令名稱(chēng)含義Jname跳轉(zhuǎn)PC36··63←name<<2JALname跳轉(zhuǎn)并鏈接Regs[R31]←PC+4;PC36··63←name<<2;((PC+4)-227)≤name<((PC+4)+227)JALRR3寄存器跳轉(zhuǎn)并鏈接Regs[R31]←PC+4;PC←Regs[R3]JRR5寄存器跳
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 三年級(jí)數(shù)學(xué)上冊(cè)教學(xué)詳案-第3單元1捐書(shū)活動(dòng)(北師大版)
- 2025年金屬門(mén)窗及類(lèi)似制品合作協(xié)議書(shū)
- 2025年產(chǎn)品采購(gòu)合同經(jīng)典版(三篇)
- 2025年個(gè)人獨(dú)資企業(yè)解散協(xié)議(三篇)
- 2025年個(gè)人機(jī)械加工合同模板(2篇)
- 2025年個(gè)人設(shè)備維修合同模板(三篇)
- 2025年個(gè)人裝修承包合同常用版(2篇)
- 2025年企業(yè)臨時(shí)用工聘合同(4篇)
- 2025年個(gè)人租賃房屋協(xié)議(2篇)
- 沿江服裝運(yùn)輸合同
- 小學(xué)六年級(jí)數(shù)學(xué)上冊(cè)《簡(jiǎn)便計(jì)算》練習(xí)題(310題-附答案)
- 2024年中國(guó)養(yǎng)老產(chǎn)業(yè)商學(xué)研究報(bào)告-銀發(fā)經(jīng)濟(jì)專(zhuān)題
- 高教版2023年中職教科書(shū)《語(yǔ)文》(基礎(chǔ)模塊)下冊(cè)教案全冊(cè)
- 人教版英語(yǔ)七年級(jí)上冊(cè)閱讀理解專(zhuān)項(xiàng)訓(xùn)練16篇(含答案)
- 護(hù)理教學(xué)查房評(píng)分標(biāo)準(zhǔn)
- GB/T 23505-2017石油天然氣工業(yè)鉆機(jī)和修井機(jī)
- 《清廉文化進(jìn)校園》廉潔文化教育主題班會(huì)課件
- 人工智能發(fā)展史課件
- 古樹(shù)名木保護(hù)建設(shè)項(xiàng)目可行性研究報(bào)告
- 幼小銜接學(xué)拼音
- 運(yùn)動(dòng)技能學(xué)習(xí)與控制課件第九章運(yùn)動(dòng)技能學(xué)習(xí)概述
評(píng)論
0/150
提交評(píng)論