1. 基本概念與分類
1.1 概念
指令系統(Instruction Set Architecture, ISA)是一臺計算機能夠直接識別並執行的機器指令的集合。
ISA是軟、硬件的分界面與接口:定義了軟、硬件交互的協約;提供了一種軟件告訴硬件該執行什麼操作的機制。
1.2 分類
CISC、RISC
計算機系統結構可根據ISA的不同進行分類,x86指令系統、MIPS指令系統等。但是使用同一指令系統的計算機硬件實現可以不同。使用相同指令系統的機器,軟件是兼容的。
根據操作數的存儲位置對指令進行分類:主存型結構、累加器型結構、堆棧型結構、通用寄存器結構 (寄存器-存儲器,寄存器-寄存器)
1.3 指令系統設計
- 設計原則
(1)可編程性(Programmability)——軟件
簡單、高效的編程
(2)可實現性(Implementability)——硬件
容易設計出高性能、低功耗、高可靠、低成本的計算機
(3)兼容性(Compatibility)——用戶
兼容性包括向上(向前)兼容與向下(向後)兼容 - 設計要素
(1)指令格式 (指令長度、編碼): 定長的指令規整,控制操作簡單,但可能浪費一定的指令存儲空間,變長指令節省空間,但控制複雜。
(2)操作數存儲位置 (寄存器、主存、累加器、堆棧等)、類型 (整形、浮點)、長度 (字節、字、雙字等)、個數。
(3)尋址方式:寄存器尋址,立即數尋址,偏移尋址,寄存器間接尋址,索引尋址
(4)操作類型:add、sub、mul、move、compare
2. MIPS指令系統
load-store結構 (寄存器-寄存器)
2.1 寄存器
- 32個64位通用寄存器 (整數寄存器)(R0, R1, …R31)R0的值永遠是0。
- 32個64位浮點數寄存器 (F0, F1,…F31),用來存放32個單精度浮點數 (32位),也可以用來存放32個雙精度浮點數 (64位)。存儲單精度浮點數時,只用到寄存器的一半。
2.2 數據表示
- 整數:字節 (8位), 半字 (16位),字 (32位),雙字 (64位)。
- 浮點數: 單精度浮點數 (32位),雙精度浮點數 (64位)。
- 字節、半字或者字在裝入64位寄存器時,用零擴展或者用符號位擴展來填充該寄存器的剩餘部分。裝入以後,對它們將按照64位整數的方式進行運算。
2.3 數據尋址方式
- 立即數尋址與偏移量尋址:立即數字段和偏移量字段都是16位的。
- 寄存器間接尋址是通過把0作爲偏移量來實現的。
- 16位絕對尋址是通過把R0(其值永遠爲0)作爲基址寄存器來完成的。
- MIPS的存儲器是按字節尋址的,地址爲64位。
2.4 指令格式
尋址方式編碼到操作碼中,所有指令都是32位的,操作碼佔6位
3種指令格式:R、I、J,同名字段的位置不變。
- R型指令
(1)ALU指令
(2)專用寄存器讀/寫指令
(3)MOVE指令等 - J類指令
(1)跳轉指令
(2)跳轉並鏈接指令
(3)自陷指令
(4)異常返回指令
在這類指令中,指令字的低26位是偏移量,它與PC值相加形成跳轉的地址 - I型指令
(1)load和store指令
(2)立即數指令
(3)分支指令
(4)寄存器跳轉指令
(5)寄存器鏈接跳轉指令。
立即數字段爲16位,用於提供立即數或偏移量。