指令系统

  • 编址
    • 按访问单位分类:
      • 按字编址。
      • 按字节编址。
      • 按位编址。
    • 按各部件地址组合方式分类:
      • 统一编址:只使用一个地址空间,不同部分对应不同的部件。
      • 独立编址:每个部件一个地址空间,访问需要使用不同的指令。
      • 隐含编址:对使用者透明,无需显式使用地址,如 cache。
  • 寻址
    • 简单的寻址:Addressing
    • 相对寻址中,用于计算的 PC 的值是下一个指令的地址,因为当前指令已经读取。
      • 转移指令一般使用相对寻址。
    • 多级间接寻址:根据多级间接标志确定是否找到有效地址,0 则找到有效地址,1 则按间接方式访问当前存储的地址。
    • 页面寻址:指令中只包括页内地址,页面地址/页号通过其他方式给出。
      • 零页/基页寻址:页号为 0
      • 当前页寻址:页号为 PC 值中的页号部分。
      • 页寄存器寻址:使用页寄存器中的页号。
  • 指令设计
    • 基本结构
      • 指令包括操作码和地址码,多个操作数有多个地址码。
    • 编码方式与对操作码的优化
      • 定长编码
        • 所有指令的操作码长度相同。
      • 扩展操作码
        • Extended Opcode
      • Huffman 编码
        • 使用 Huffman 树构造。
        • 操作码长度不规整,移码困难。
    • 对地址码的优化
      • 区分寻址方式,不同寻址方式需要的地址长度不同,如寄存器比完整地址更短、段内跳转只需要段内地址。
      • 多操作数指令用短操作码。
    • 指令评价指标
      • 最短平均长度:H=i=1npilog2piH = \displaystyle - \sum_{i = 1}^n p_i \log_2 p_i,即信息熵。
      • 实际平均长度:L=i=1npiLi\overline L = \displaystyle \sum_{i = 1}^n p_i L_i
      • 信息冗余量:R=1HLR = 1 - \dfrac{H}{\overline L}