简介

知识前置

寄存器分类

  • 通用寄存器: 数量较多,使用频度较高,具有多种用途的寄存器,可以存储数据,地址等等(部分通用寄存器可能会有额外特定功能,或者是在没有指向特定的应用场景时,会默认负责特定功能)
  • 程序计数器PC/指令指针IP: 内部记录的时指向下一条指令的内存地址,每执行完一条指令后: 计数器+1(顺序执行); 赋值为特定指令的内存地址(指令跳转)
  • 指令寄存器IR: 存放当前正在执行的指令
  • 状态标志寄存器/程序状态字PSW: 存储指令的运算结果状态(常见状态: 零ZF, 符号SF, 进位CF, 溢出OF)
  • 堆栈指针SP: 指向当前栈顶的内存地址
  • 段寄存器SR: 内存分段管理需要,存储的是段号(段选择符, Segment Selector),由段号映射到内存GDT(全局段号记录表, Global (Segment) Descriptor Table),读取段信息
  • 内存地址寄存器(Memory Address Register, MAR): 保存数据被传输到的位置的地址或者数据来源位置的地址
  • 内存数据寄存器(Memory Data Register, MDR): 保存要被写入地址单元或者从地址单元读出的数据

周期概念

  1. 时钟周期: CPU工作的最小时间单位
  2. 机器周期(CPU周期): 包含多个时钟周期,指代CPU完成某个操作(取址、执行等)所需要的时间,一般规定CPU从内存中读取一条指令的最短时间(周期可定长或不定长,由控制器决定)
  3. 指令周期: 包含多个机器周期,计算机从内存中取出一条指令并执行该指令所需要的时间

组成

  • 程序计数器
  • 指令寄存器
  • 指令译码器: 传入指令,产生该指令所需要的控制信号、地址、数值等,按照一定时间顺序传到不同部件中
  • 时序发生器: 产生时钟脉冲信号

功能

  1. 取指: 将PC内容传到 MAR 中 -> 发送读命令 -> 存储器读取 MAR 地址,将指令内容传入 MDR 中 -> PC 值增加/变化
  2. 译码: 对指令内容进行拆解,在译码电路中转换成各种控制指令、地址、数值等
  3. 执行: 传送译码器转换的各种信号,各个部件根据传输的信号执行相关操作,将执行结果数据传到 MDR 中,MDR 的数据被写回到目标地址/寄存器中

例(8086指令为例)

mov ax, 0x58 -> c7 c0 58 00

  1. 取指: 将 c7 c0 58 00 传到 MAR 中,译码器读取,计数器增加

  2. 译码
    8086指令字段划分

    • OPCODE = 110001 -> 识别为mov指令,将立即数转移到寄存器/内存(Immediate to register/memory)
    • D = 1 -> 固定为1,表示传输方向为寄存器(目标); 目标在 REG 字段中指定(Instruction destination is specified in REG field)(但在该指令中, REG 字段固定,可能解释为操作码的扩展,表示操作立即数的标识,因此该位在该解释中没有起到作用)
    • W = 1 -> 字操作
    • MOD = 11 -> 寄存器模式
    • REG = 000 -> 固定为000,该字段没有起到作用
    • R/M = 000 -> 目标寄存器 AX
  3. 执行
    根据译码器提供的信号,寄存器 AX 通道打开,把存储在 MDR 里的 0x58 写入 AX 中

分类

硬布线控制器(组合逻辑控制器)

  • 输入指令,在固定时序中,经由复杂的组合逻辑电路后输出控制信号
  • 纯硬件电路,速度快,逻辑固定,行为可预测
  • 当指令集设计完成时,电路就固定了,指令集本身无法修改和扩展,否则需要重新设计电路
  • 现代新型计算机体系结构如 RISC (指令规整,长度固定,操作码字段位置固定)中多采用硬布线控制逻辑。

微程序控制器

  • 采用微程序控制方式的控制器。微程序设计利用软件方法来设计硬件,将操作控制信号归纳编写成微指令,存储到控制存储器中,机器运行时,读取一条条微指令,完成相关操作
  • 相比硬布线控制器速度慢,但更灵活,相对规整(控制器)且更好扩展(修改/扩展指令时,只需要修改控制存储器内容)

概念

  • 微命令: 控制器发送给各个部件最直接的控制信号,控制信号的最小单元; 部件执行微命令的操作称为微操作
  • 微指令: 一个时钟周期内,一组可同时发出的微命令的集合
  • 微程序: 为实现一条机器指令而编制的一系列微指令的有序集合
  • 机器指令: CPU 能直接识别和执行的基本命令

概念样例

  • 机器指令: mov ax, 0x58 -> c7 c0 58 00
  • 微程序: 执行 mov 的一系列微指令(取指,读/写等)
  • 微指令: 假设 mov 的取指微程序部分,细化到由多条微指令执行,例如, 将 PC 内容传入 MAR
  • 微命令: 微指令"将 PC 传入 MAR",包含微命令传送 PC 数值 + 打开 MAR 存储通道

两者组合

函数模型

函数模型

这里的状态条件较为笼统,包括: 时序脉冲信号,标志位,中断信号等