0%

计算机体系结构之指令系统

本节主要介绍了指令集结构的基本概念及其寻址方式

指令集结构概述

  • 指令集:一些指令的集合,每条指令都是直接由CPU硬件执行

  • 指令的表示方式:

    • 二进制表示
    • 物理存储空间组织方式是位、字节、字和多字等
    • 当前的指令字长有:16、32、64位
    • 可变长格式和固定长度格式
  • 指令的特点:

    • 指令由操作码和地址码组成
    • 每个操作需要的操作数个数为0~3个不等
      • 操作数是一些存储单元的地址
      • 典型的存储单元通常有:主存、寄存器、堆栈和累加器
    • 操作数地址隐含表示或显式表示
  • 指令集与计算机的性能:
    $$
    T_{CPU}=CPI\times IC \times T_{CLK}
    $$


通用寄存器型指令集结构(GPR)

  • CPU中用来存储操作数的存储单元主要有:
    • 堆栈
    • 累加器
    • 一组寄存器
  • 指令中的操作数可以被明确地显示给出,也可以按照某种约定隐式给出
  • 通用寄存器型指令集结构的主要优点:
    • 在表达式求值方面,比其他类型指令集结构都具有更大的灵活性
    • 寄存器可以用来存放变量
      • 减少存储器的通信量,加快程序的执行速度(因为寄存器比存储器快
      • 可以用更少的地址位来寻址寄存器,从而可以有效改进程序的目标代码大小

指令集的寻址

1.寻址技术

  • 在通用寄存器型指令集结构中,一般是利用寻址方式指明指令中的操作数是一个常数、一个寄存器操作数,又或是一个存储器操作数
  • 寻址实际上是从形式地址到实际地址的转换,形式地址由指令描述,实际地址也称为有效地址
  • 有效地址指明的是存储器单元的地址或寄存器地址
  • 必须加速有效地址生成

2.常用的一些操作数寻址方式

  • 寄存器寻址

    • 指令实例:Add R4,R3
    • 含义:Regs[R4]<-Regs[R4]+Regs[R3]
  • 立即值寻址

    • 指令实例:Add R4,#3
    • 含义:Regs[R4]<-Regs[R4]+3
  • 偏移寻址

    • 指令实例:Add R4,100(R1)
    • 含义:Regs[R4]<-Regs[R4]+Mem[100+Regs[R1]]
  • 寄存器间接寻址

    • 指令实例:Add R4,(R1)
    • 含义:Regs[R4]<-Regs[R4]+Mem[Regs[R1]]
  • 索引寻址

    • 指令实例:Add R3,(R1+R2)
    • 含义:Regs[R3]<-Regs[R3]+Mem[Regs[R1]+Regs[R2]]
  • 直接寻址或绝对寻址

    • 指令实例:Add R1,(1001)
    • 含义:Regs[R1]<-Regs[R1]+Mem[1001]
  • 存储器间接寻址

    • 指令实例:Add R1,@(R3)
    • 含义:Regs[R1]<-Regs[R1]+Mem[Mem[Regs[R3]]]
  • 自增寻址

    • 指令实例:Add R1,(R2)+
    • 含义:
      • Regs[R1]<-Regs[R1]+Mem[Regs[R2]]
      • Regs[R2]<-Regs[R2]+d
      • d代表R2所占的字节个数
  • 自减寻址

    • 指令实例:Add R1,-(R2)
    • 含义:
      • Regs[R2]<-Regs[R2]-d
      • Regs[R1]<-Regs[R1]+Mem[Regs[R2]]
  • 缩放寻址

    • 指令实例:Add R1,100(R2)[R3]
    • 含义:Regs[R1]<-Regs[R1]+Mem[100+Regs[R2]+Regs[R3]*d]

MIPS指令集结构

  • 寄存器:

    • 32个32位的通用寄存器(GPRs),寄存器R0的内容恒为全0
    • 32个32位浮点寄存器(FPRS),单精度浮点数表示和双精度浮点数表示
  • 数据类型:

    • 整型数据:8位、16位、32位
    • 浮点数据:
      • 32位单精度浮点
      • 64位双精度浮点
  • 操作类型:

    • 符号“<-”表示数据传送操作,其后附带一个下标n,也即“<-n”表示传送一个n位数据
    • 符号”##”用来表示两个域的串联操作,它可以出现在数据传送操作的任何一边
  • 域的下表用来表明从该域中选择一位,域中位的标记是从最高位开始标记,并且起始标记为0

  • 上标表示复制一个域,如$0^{24}$可以得到一个24位全为0的一个域

欢迎来到ssy的世界