控制器
简介
知识前置
寄存器分类
- 通用寄存器: 数量较多,使用频度较高,具有多种用途的寄存器,可以存储数据,地址等等(部分通用寄存器可能会有额外特定功能,或者是在没有指向特定的应用场景时,会默认负责特定功能)
- 程序计数器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): 保存要被写入地址单元或者从地址单元读出的数据
周期概念
- 时钟周期: CPU工作的最小时间单位
- 机器周期(CPU周期): 包含多个时钟周期,指代CPU完成某个操作(取址、执行等)所需要的时间,一般规定CPU从内存中读取一条指令的最短时间(周期可定长或不定长,由控制器决定)
- 指令周期: 包含多个机器周期,计算机从内存中取出一条指令并执行该指令所需要的时间
组成
- 程序计数器
- 指令寄存器
- 指令译码器: 传入指令,产生该指令所需要的控制信号、地址、数值等,按照一定时间顺序传到不同部件中
- 时序发生器: 产生时钟脉冲信号
功能
- 取指: 将PC内容传到 MAR 中 -> 发送读命令 -> 存储器读取 MAR 地址,将指令内容传入 MDR 中 -> PC 值增加/变化
- 译码: 对指令内容进行拆解,在译码电路中转换成各种控制指令、地址、数值等
- 执行: 传送译码器转换的各种信号,各个部件根据传输的信号执行相关操作,将执行结果数据传到 MDR 中,MDR 的数据被写回到目标地址/寄存器中
例(8086指令为例)
mov ax, 0x58 -> c7 c0 58 00
-
取指: 将
c7 c0 58 00传到 MAR 中,译码器读取,计数器增加 -
译码

- 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
-
执行
根据译码器提供的信号,寄存器 AX 通道打开,把存储在 MDR 里的 0x58 写入 AX 中
分类
硬布线控制器(组合逻辑控制器)
- 输入指令,在固定时序中,经由复杂的组合逻辑电路后输出控制信号
- 纯硬件电路,速度快,逻辑固定,行为可预测
- 当指令集设计完成时,电路就固定了,指令集本身无法修改和扩展,否则需要重新设计电路
- 现代新型计算机体系结构如 RISC (指令规整,长度固定,操作码字段位置固定)中多采用硬布线控制逻辑。
微程序控制器
- 采用微程序控制方式的控制器。微程序设计利用软件方法来设计硬件,将操作控制信号归纳编写成微指令,存储到控制存储器中,机器运行时,读取一条条微指令,完成相关操作
- 相比硬布线控制器速度慢,但更灵活,相对规整(控制器)且更好扩展(修改/扩展指令时,只需要修改控制存储器内容)
概念
- 微命令: 控制器发送给各个部件最直接的控制信号,控制信号的最小单元; 部件执行微命令的操作称为微操作
- 微指令: 一个时钟周期内,一组可同时发出的微命令的集合
- 微程序: 为实现一条机器指令而编制的一系列微指令的有序集合
- 机器指令: CPU 能直接识别和执行的基本命令
概念样例
- 机器指令:
mov ax, 0x58->c7 c0 58 00 - 微程序: 执行 mov 的一系列微指令(取指,读/写等)
- 微指令: 假设 mov 的取指微程序部分,细化到由多条微指令执行,例如, 将 PC 内容传入 MAR
- 微命令: 微指令"将 PC 传入 MAR",包含微命令传送 PC 数值 + 打开 MAR 存储通道
两者组合
函数模型

这里的状态条件较为笼统,包括: 时序脉冲信号,标志位,中断信号等
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Forgotten Area!


