《计算机组成原理》第四章 **“指令系统”** 的详细教程

第四章 指令系统

1. 指令系统概述

1.1 指令系统的核心作用

  • 定义:指令集架构(ISA)是硬件与软件的接口,决定了计算机的基本操作能力。
  • 核心要素
    • 操作类型(运算、存储、控制等)
    • 操作数类型(整数、浮点数、地址等)
    • 寻址方式(如何获取操作数)

1.2 指令系统的设计要求

  • 完备性:支持所有必要操作(如算术、逻辑、跳转等)。
  • 规整性:指令格式统一,减少特殊规则(如MIPS指令长度固定为32位)。
  • 高效性:硬件实现简单且执行速度快(RISC设计哲学)。

2. 指令格式与编码

2.1 指令格式的组成

  • 操作码(Opcode):指定操作类型(如加法、跳转)。
  • 操作数地址:可能包含源操作数、目的操作数(寄存器或内存地址)。
  • 附加字段:条件码、立即数、寻址模式标志等。

2.2 典型指令格式

类型结构示例指令
三地址指令OP Dst, Src1, Src2ADD R1, R2, R3
二地址指令OP Dst, SrcMOV R1, R2
单地址指令OP Src/DstINC R1
零地址指令OP(隐含操作数)PUSH(栈顶操作)

2.3 指令编码实例

  • MIPS R型指令(寄存器-寄存器操作):
    | 6位Opcode | 5位Rs | 5位Rt | 5位Rd | 5位Shamt | 6位Funct |
    
    • 示例:ADD $t0, $t1, $t2 → Opcode=0, Funct=32(二进制:000000 01001 01010 01000 00000 100000)

3. 寻址方式

3.1 常见寻址方式

方式公式示例
立即寻址操作数 = 立即数MOV R1, #42
直接寻址操作数 = Mem[Addr]LOAD R1, 0x1000
寄存器间接寻址操作数 = Mem[Reg]ADD R1, (R2)
基址寻址操作数 = Mem[Base + Offset]LW R1, 100(R2)(MIPS)
相对寻址操作数 = PC + OffsetBEQ $t0, $t1, Label
变址寻址操作数 = Mem[IndexReg + Addr]MOV R1, Array[R2]
4. 指令类型与功能

4.1 数据传送指令

  • MOVLOADSTORE:寄存器/内存间传输数据。
  • 示例:
    ; x86架构  
    MOV EAX, [0x1000]    ; 从内存0x1000加载到EAX  
    ; ARM架构  
    LDR R1, [R2, #4]     ; 从R2+4地址加载到R1  
    

4.2 算术逻辑指令

  • ADDSUBANDOR:执行运算与逻辑操作。
  • 示例:
    ; MIPS架构  
    ADD $t0, $t1, $t2     ; $t0 = $t1 + $t2  
    ANDI $t3, $t4, 0xFF   ; $t3 = $t4 & 0xFF  
    

4.3 控制转移指令

  • JMPCALLRET:控制程序流程。
  • 条件分支
    ; x86架构  
    CMP EAX, EBX  
    JE Label              ; 相等则跳转  
    ; ARM架构  
    CMP R1, #10  
    BGT Loop              ; R1>10则跳转  
    

5. CISC与RISC架构对比
特性CISC(x86)RISC(ARM/MIPS)
指令长度变长(1-15字节)定长(4字节)
指令周期多周期指令常见单周期指令为主
寻址方式复杂(10+种)精简(4-5种)
典型应用桌面/服务器(Intel/AMD)嵌入式/移动(ARM)

5.1 混合架构趋势

  • x86-64:引入RISC特性(如微指令分解)。
  • ARMv8:增加复杂指令(如SIMD扩展)。

6. 指令系统设计实例

6.1 MIPS指令集核心设计

  • 寄存器规范:32个通用寄存器($0固定为0)。
  • 延迟槽:分支指令后的指令必执行(优化流水线)。
  • 示例指令
    LW $t0, 4($s1)       ; 加载内存数据  
    SLL $t1, $t0, 2      ; 逻辑左移2位  
    JAL func             ; 调用函数并保存返回地址  
    

6.2 x86指令集特性

  • 变长指令MOV指令长度1-7字节。
  • 复杂寻址MOV EAX, [EBX + ESI*4 + 0x10]
  • 模式切换:实模式/保护模式指令差异。

7. 典型问题与解析

问题1:某指令系统支持12种操作码,若采用固定长度编码,至少需要多少位?若引入扩展操作码(最多两地址指令),如何设计?
解析

  • 固定编码:⌈log₂12⌉=4位(浪费4位可表示16种操作)。
  • 扩展编码:
    • 单地址指令:4位操作码 → 支持16种操作。
    • 双地址指令:高4位为操作码,低4位扩展 → 支持16×16=256种操作。

问题2:某指令格式为:OP(6位) | Reg1(5位) | Reg2(5位) | 立即数(16位),指出其寻址方式类型。
解析

  • OP指定操作类型,Reg1为目的寄存器,Reg2为基址寄存器,立即数为偏移量 → 基址寻址

8. 学习资源推荐
  1. 教材:《Computer Organization and Design》(Patterson & Hennessy)第2章
  2. 模拟工具
    • MARS MIPS Simulator:编写并调试MIPS指令。
    • QEMU:模拟x86/ARM指令执行过程。
  3. 在线课程:Coursera《计算机组成原理》(北京大学)

建议通过编写汇编程序(如实现排序算法)加深理解,并对比x86与ARM指令差异。如需扩展内容(如向量指令、异常处理机制),可进一步探讨。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值