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

下載本文檔

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

文檔簡介

計算機組成與設計硬件/軟件接口ComputerOrganizationandDesignTheHardware/SoftwareInterfaceDavidA.PattersonJohnL.Hennessy張建E-mail:Zj960514@163.com指令集/指令系統(tǒng)(InstructionSetArchitecture,ISA)指令集ISA一臺計算機所能執(zhí)行全部機器指令的集合。Logic-gates,statemachines,etc.Circuit-transistors,etc.Layout-maskpatterns,etc.HardwareProcessorI/OSystemSoftwareCompilerApplicationProgramsOperatingSystemApplicationInstructionSetArchitectureInterfacebetweenSW&HW指令集/指令系統(tǒng)(InstructionSetArchitecture,ISA)指令集ISA是設計CPU最重要的依據(jù)指令集ISA已確定,不可更改兩種不同風格和指令系統(tǒng)

精簡指令集計算機RISCRISC–ReducedInstructionSetComputer指令長度固定單周期執(zhí)行指令流水線處理硬件接線式控制兩種不同風格和指令系統(tǒng)復雜指令集計算機CISCCISC–ComplexInstructionSetComputer指令復雜,長度可變多種內(nèi)存尋址方式微程序結(jié)構(gòu)4.1指令格式設計一條指令中必須明確或隱含包括如下信息:操作碼源操作數(shù)結(jié)果下一條指令地址指令要完成的功能參與操作的數(shù)(可能有多個)結(jié)果存儲地址下一條要執(zhí)行指令的地址4.2指令系統(tǒng)設計確定指令系統(tǒng)提供的操作指令指令系統(tǒng)提供的指令越多、功能越強大,編程就簡單,但硬件設計就復雜;反之,則編程復雜,但硬件設計簡單。一個指令系統(tǒng)通常應提供:加、減、乘、除、邏輯運算、移位等操作;4.2指令系統(tǒng)設計操作數(shù)的來源/尋址方式即如何找到操作數(shù)。操作數(shù)通常的來源:寄存器、立即數(shù)、內(nèi)存、I/O端口。操作數(shù)的類型即是否支持8位、16位、32位等操作數(shù)。4.2指令系統(tǒng)設計下一條指令的地址大多數(shù)指令系統(tǒng)都采用一個專門的程序計數(shù)器(ProgramCount,PC)來存放下一條指令的地址。寄存器的種類和數(shù)量確定專用寄存器和通用寄存器的種類、寬度和數(shù)量。指令系統(tǒng)設計的原則完備性/完整性提供的指令應能滿足程序編程的需求,但過于復雜的指令系統(tǒng)會使硬件設計復雜。兼容性新設計的指令系統(tǒng)應與以前的指令系統(tǒng)兼容,否則以前開發(fā)的程序?qū)⒉荒茉谛碌闹噶钕到y(tǒng)上運行。指令系統(tǒng)設計的基本問題操作碼的設計操作碼的長度決定了最多可以提供的指令數(shù)。例如:12位操作碼可以212=4096條指令操作碼過長會導致一條指令長度增加,使程序占用空間增大,程序讀取時間變長。指令系統(tǒng)設計的基本問題操作數(shù)的尋址方式尋址方式越多,則編程越靈活方便,但硬件設計復雜,時序不好統(tǒng)一。下一條指令地址的確定大多數(shù)指令系統(tǒng)都采用一個專門的程序計數(shù)器(ProgramCount,PC)來存放下一條指令的地址。指令系統(tǒng)設計的原則操作碼的設計操作碼的長度決定了最多可以提供的指令數(shù)。例如:12位操作碼可以212=4096條指令操作碼過長會導致一條指令長度增加,使程序占用空間增大,程序讀取時間變長。硬件設計的基本原則設計原則1:簡單源于規(guī)整。指令越規(guī)整,硬件設計越簡單。設計原則2:越少越快。器件越多可能會使時鐘周期變長硬件設計的基本原則設計原則3:加速執(zhí)行常用的操作。這樣效果最明顯,付出的代價小,獲得的收益大。設計原則4:優(yōu)秀的設計需要適宜的折中方案。當2種方案各有優(yōu)缺點而又無法兼顧時,應進行必要的折中。MIPS指令格式oprsrtrdshamtfunc6位5位5位5位5位6位312625212016151110650oprsrtimmediate6位5位5位16位312625212016150opaddress6位26位3126250R型I型J型MIPS的指令可分為3種操作類型R型指令格式oprsrtrdshamtfunc6位5位5位5位5位6位312625212016151110650R型操作碼由op和func組成。當op=000000時表明該指令是R型指令,具體功能由func確定。rs、rt是2個源操作數(shù)所在的寄存器號。rd是目的操作數(shù)所在的寄存器號。shamt是位移量R型指令中無意義。MIPS匯編指令–R型指令電子科技大學計算機科學與工程學院

指令[31:26][25:21][20:16][15:11][10:6][5:0]功能add000000rsrtrd00000100000寄存器加sub000000rsrtrd00000100010寄存器減and000000rsrtrd00000100100寄存器與or000000rsrtrd00000100101寄存器或xor000000rsrtrd00000100110寄存器異或sll00000000000rtrdsa000000左移srl00000000000rtrdsa000010邏輯右移sra00000000000rtrdsa000011算術右移jr000000rs000000000000000001000寄存器跳轉(zhuǎn)R型指令—example1指令代碼如下:00000001001010100101100000000000

R型指令功能:加(add)R9寄存器R10寄存器R11寄存器

R型指令—example2指令代碼如下:00000000000010100101100011100000

R型指令功能:左移(sll)R10寄存器R11寄存器移位次數(shù)3

I型指令格式oprsrtimmediate6位5位5位16位312625212016150I型操作碼由op確定。有一個操作數(shù)為立即數(shù)(16位)。rt是目的操作數(shù)所在的寄存器號。MIPS匯編指令–I型指令

指令[31:26][25:21][20:16][15:0]功能addi001000rsrtimmediate立即數(shù)加andi001100rsrtimmediate立即數(shù)與ori001101rsrtimmediate立即數(shù)或xori001110rsrtimmediate立即數(shù)異或lw100011rsrtimmediate取字數(shù)據(jù)sw101011rsrtimmediate存字數(shù)據(jù)beq000100rsrtimmediate相等轉(zhuǎn)移bne000101rsrtimmediate不等轉(zhuǎn)移lui00111100000rtimmediate設置高位I型指令—example指令代碼如下:00100001001010100101100000000000

功能:addiR9寄存器R10寄存器立即數(shù)

J型指令格式操作碼由op確定。轉(zhuǎn)移地址:立即數(shù)(26位)。opaddress6位26位3126250J型MIPS匯編指令–J型指令電子科技大學計算機科學與工程學院

指令[31:26][25:0]功能j000010address跳轉(zhuǎn)jal001100address調(diào)用MIPS的尋址模式/方式電子科技大學計算機科學與工程學院

尋址模式/方式尋找操作數(shù)或操作數(shù)地址的方式立即數(shù)尋址(Immediateaddressing)操作數(shù)包含在指令中,取指令時已取回操作數(shù)。oprsrtimmediateMIPS的尋址模式/方式電子科技大學計算機科學與工程學院

寄存器尋址(Registeraddressing)操作數(shù)在寄存器中。oprsrtrdfunc寄存器MIPS的尋址模式/方式電子科技大學計算機科學與工程學院

基址尋址(Baseaddressing)oprsrtaddressRegister+MemoryXXX16位

MIPS的尋址模式/方式電子科技大學計算機科學與工程學院

PC相對尋址(Baseaddressing)oprsrtaddressPC+Memory字<<216位

MIPS的尋址模式/方式偽直接尋址(Baseaddressing)opaddress<<226位28位4位PCMemory字

MIPS的通用寄存器寄存器名寄存器號用途$s00常數(shù)0$at1匯編器專用$v0~$v12~3表達式計算或函數(shù)調(diào)用的返回結(jié)果$a0~$a34~7函數(shù)調(diào)用參數(shù)1~3$t0~$t78~15臨時變量,函數(shù)調(diào)用時不需要保存和恢復$s0~$s716~23函數(shù)調(diào)用時需要保存和恢復的寄存器變量$t8~$t924~25臨時變量,函數(shù)調(diào)用時不需要保存和恢復MIPS的通用寄存器寄存器名寄存器號用途$k0~$k126~27操作系統(tǒng)專用$gp28全局指針變量(GlobalPointer)$sp29堆棧指針變量(StackPointer)$fp30幀指針變量(FramePointer)$ra31返回地址(ReturnAddress)注:除0號和31號寄存器外,其余寄存器并無本質(zhì)區(qū)別。MIPS常用匯編指令加法(寄存器加)

Example:

說明:即將R2寄存器內(nèi)容與R3寄存器內(nèi)容相加,結(jié)果保存在R1寄存器中。MIPS常用匯編指令減法(寄存器減)

Example:

MIPS常用匯編指令與操作(寄存器與)

Example:

MIPS常用匯編指令或操作(寄存器或)

Example:

MIPS常用匯編指令異或操作(寄存器異或)

Example:

MIPS常用匯編指令左移操作

Example:

MIPS常用匯編指令邏輯右移操作

Example:

說明:即將R2寄存器內(nèi)容右移3位,左邊空出位補3個0,結(jié)果保存在R1寄存器中,R2的內(nèi)容不變。MIPS常用匯編指令算術右移操作

Example:

說明:即將R2寄存器內(nèi)容右移3位,左邊空出位補3個符號位,結(jié)果保存在R1寄存器中,R2的內(nèi)容不變。MIPS常用匯編指令寄存器跳轉(zhuǎn)操作

Example:

說明:將R1寄存器內(nèi)容賦給PC寄存器,PC中是下一條要執(zhí)行指令的地址。MIPS常用匯編指令加法(立即數(shù)加)

Example:

說明:即將R2寄存器內(nèi)容與立即數(shù)32相加(立即數(shù)32要進行符號擴展),結(jié)果保存在R1寄存器中。MIPS常用匯編指令與操作(立即數(shù)與)

Example:

說明:立即數(shù)要進行零擴展,即在16位的立即數(shù)前加16個0構(gòu)成一個32位的立即數(shù)。MIPS常用匯編指令或操作(立即數(shù)或)

Example:

說明:立即數(shù)要進行零擴展,即在16位的立即數(shù)前加16個0構(gòu)成一個32位的立即數(shù)。MIPS常用匯編指令異或操作(立即數(shù)異或)

Example:

說明:立即數(shù)要進行零擴展,即在16位的立即數(shù)前加16個0構(gòu)成一個32位的立即數(shù)。MIPS常用匯編指令取字數(shù)據(jù)操作

Example:

+Memory字

定位存儲單元取數(shù)MIPS常用匯編指令存字數(shù)據(jù)操作

Example:

+Memory字

定位存儲單元存數(shù)MIPS常用匯編指令相等轉(zhuǎn)移操作

Example:

操作:

符號擴展MIPS常用匯編指令不相等轉(zhuǎn)移操作

Example:

操作:符號擴展MIPS常用匯編指令設置高位操作

Example:

操作:

MIPS常用匯編指令跳轉(zhuǎn)操作

Example:

abcd1000H(26位)

28位4位

擴到28位(左移2位)計算機硬件對過程的支持電子科技大學計算機科學與工程學院

過程/函數(shù)(procedure/function)一段子程序,函數(shù)通常具有返回值。調(diào)用過程/函數(shù)時必須解決的問題:參數(shù)放在哪里?寄存器

Or

存儲器

?

計算機硬件對過程的支持電子科技大學計算機科學與工程學院

任務完成后結(jié)果放在哪里?寄存器

Or

存儲器

?任務完成后如何返回調(diào)用者?MIPS中的堆棧堆棧(Stack)堆棧是內(nèi)存中指定的一塊區(qū)域。Stack0n$sp棧頂棧底對堆棧操作通常是先進后出。編譯一個不調(diào)用其它過程的C過程例

編譯一個不調(diào)用其它過程的C過程電子科技大學計算機科學與工程學院

假設:調(diào)用時參數(shù)變量g、h、i和j已放在寄存器$a0~$a3中。分析:f為過程內(nèi)的局部變量,為其分配寄存器$s0;g+h的和為其其分配寄存器$t0;i-j的差為其其分配寄存器$t1;結(jié)論:$s0、$t0和$t1必須保存,退出過程時恢復。編譯一個不調(diào)用其它過程的C過程電子科技大學計算機科學與工程學院

將$s0、$t0和$t1壓入堆棧0n$spxxx00n$spxxx0StartStep1addi$sp,$sp,-12xxx1xxx2xxx3xxx1xxx2xxx3編譯一個不調(diào)用其它過程的C過程電子科技大學計算機科學與工程學院

將$s0、$t0和$t1壓入堆棧0n$spxxx0sw$t1,8($sp)$t1內(nèi)容$t0內(nèi)容$s0內(nèi)容sw$t0,4($sp)sw$s0,0($sp)電子科技大學計算機科學與工程學院

編譯一個不調(diào)用其它過程的C過程過程實體的編譯add$t0,$a0,$a1add$t1,$a2,$a3sub$s0,$t0,$t1返回值add$v0,$s0,$zero電子科技大學計算機科學與工程學院

編譯一個不調(diào)用其它過程的C過程將$s0、$t0和$t1內(nèi)容恢復0n$spxxx0lw$s0,0($sp)$t1內(nèi)容$t0內(nèi)容$s0內(nèi)容lw$t0,4($sp)lw$t1,8($sp)addi$sp,$sp,12將$sp恢復:編譯一個不調(diào)用其它過程的C過程返回過程調(diào)用者

執(zhí)行結(jié)果:

過程調(diào)用

執(zhí)行結(jié)果:

在實際MIPS系統(tǒng)中由于延時的考慮:PC=PC+8編譯一個不調(diào)用其它過程的C過程返回過程調(diào)用者

執(zhí)行結(jié)果:

過程調(diào)用

執(zhí)行結(jié)果:

在實際MIPS系統(tǒng)中由于延時的考慮:PC=PC+8其它常見尋址方式立即尋址操作數(shù)直接包含在指令中,緊跟在操作碼之后,它作為指令的一部分。操作碼R11020H例如:立即數(shù)MOV(R1)←1020H其它常見尋址方式直接尋址在指令中直接給出操作數(shù)的有效地址。操作碼R1[1020H]例如:操作數(shù)地址MOV101EH101FHXXXX1020H1021H1020H內(nèi)存R1XXXX其它常見尋址方式直接尋址在指令中直接給出操作數(shù)的有效地址。操作碼R1[1020H]例如:操作數(shù)地址MOV101EH101FHXXXX1020H1021H1020H內(nèi)存R1XXXX其它常見尋址方式間接尋址指令中給出一個內(nèi)存單元地址,再以該單元的內(nèi)容作為地址到內(nèi)存中去取操作數(shù)。例如:內(nèi)存操作碼@100H110H操作數(shù)110H其它常見尋址方式變址尋址在指令中給出一個變址寄存器和一個偏移量,2者相加的和作為有效地址去存儲器中取數(shù)據(jù)。操作碼R1[SI+10H]例如:操作數(shù)地址MOV10

溫馨提示

  • 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

提交評論