15_控制器
1. 指令周期
处理单个指令的过程
- 取指周期:从内存中提取一条指令
- 执行周期:执行所提取的指令
1.1. 指令周期
1.1.1. 状态图
1.2. 带中断的指令周期
1.2.1. 状态图
1.3. 间址周期
- 间址周期:把间接地址的读取看成是一个额外的指令子周期
- 指令的执行可能涉及一个或多个存储器中的操作数,它们每个都要求一次存储器访问
- 使用间接寻址,还需要额外的存储器访问
- 相当于取了两次操作数
1.3.1. 状态图
1.4. CPU
1.4.1. CPU任务
- 取指令:CPU必须从存储器(寄存器、cache、主存)读取指令
- 解释指令:必须对指令进行译码,以确定所要求的动作
- 取数据:指令的执行可能要求从存储器或输入/输出(I/O)模块中读取数据
- 处理数据:指令的执行可能要求对数据完成某些算术或逻辑运算
- 写数据:执行的结果可能要求写数据到存储器或I/O模块
1.4.2. CPU需求
- 寄存器:小容量内部存储器
- CPU需要在指令周期中临时保存指令和数据
- CPU需要记录当前所执行指令的位置,以便知道从何处得到下一条指令
假定CPU有
- 1个存储地址寄存器(MAR)
- 1个存储缓冲寄存器(MBR)/ 存储数据寄存器(MDR)
- 1个程序计数器(PC)
- 1个指令寄存器(IR)
1.5. 数据流
2. 处理器结构
3. 寄存器
3.1. 用户可见寄存器
- user-visible register
- 允许编程人员通过机器语言或汇编语言访问,通过优化寄存器的使用而减少对主存的访问
3.1.1. 类型
- 通用寄存器(general-purpose register)
- 可被程序员指派各种用途
- 数据寄存器(data register)
- 仅可用于保持数据而不能用于操作数地址的计算
- 地址寄存器(address register)
- 可以是自身有某些通用性,或是专用于某种具体的寻址方式
- 例如:段指针、变址寄存器、栈指针
- 条件码寄存器(condition codes register) / 标志(flag)寄存器
- CPU硬件设置这些条件位作为操作的结果
- 至少是部分用户可见的
3.1.2. 设计出发点
- 使用完全通用的寄存器还是规定各寄存器的用途?
- 寄存器数量
- 太少的寄存器会导致更多的存储器访问
- 太多的寄存器又不能显著地减少存储器访问
- 寄存器长度
- 应能保存大多数数据类型的值
- 某些机器允许两个相邻的寄存器作为一个寄存器来保持两倍长度 的值
3.1.3. 保存和恢复
- 子程序调用
- 会导致自动保存所有用户可见的寄存器,并在返回时自动取回
- 这些保存和恢复是作为调用和返回指令执行功能的一部分,由CPU完成
- 允许各个子程序独立地使用用户可见寄存器
- 子程序调用之外保存用户可见寄存器的相关内容是程序员的责任,需要在程序中为此编写专门的指令
3.2. 控制和状态寄存器
3.2.1. 类型
- 程序计数器(Program counter,PC)
- 存有待取指令的地址
- 通常在每次取指令之后,PC的内容即被CPU更改,转移或跳步指令也会修改PC的内容,因此总指向将被执行的下一条指令
- 指令寄存器(Instruction register,IR)
- 存有最近取来的指令,在其中分析操作码和操作数
- 存储器地址寄存器(Memory address register,MAR)
- 直接与地址总线相连,存有存储器位置的地址
- 存储器缓冲寄存器(Memory buffer register,MBR)
- 直接与数据总线相连,存有将被写入存储器的数据字或从存储器读出的字,用户可见寄存器再与MBR交换数据
- ALU可对MBR和用户可见寄存器直接存取
- 程序状态字(Program status word,PSW)
- 一个或一组包含状态信息的寄存器,包含条件码加上其他状态信息
- 包含的字段或标志
- 符号(Sign):容纳算术运算结果的符号位
- 零(Zero):当结果是0时被置位
- 进位(Carry):若操作导致最高位有向上的进位(加法)或借位(减法)时被置位,用于多字算数运算
- 等于(Equal):若逻辑比较的结果相等,则置位
- 溢出(Overflow):用于表示算术溢出
- 中断允许/禁止:用于允许或禁止中断
- 监管(Supervisor):指出CPU是执行在监管模式中还是在用户模式中
- 一个指向含有附加状态信息的存储器块的指针寄存器
- 在使用向量式中断的机器中,可能提供有一个中断向量寄存器
- 若栈用于实现某些功能,需要有一个系统栈指针
- 对于虚拟存储器系统,会有一个页表指针寄存器
3.2.2. 设计出发点
- 设计出发点
- 某些类型的控制信息是专门为操作系统使用的
- 若CPU设计者对将要使用的操作系统有基本的了解,则寄存器 的组织可能在一定程度上为该操作系统定制
- 控制信息在寄存器和存储器之间的分配
- 一种普遍的做法是将存储器最前面(最低地址)的几百或几千个字用于控制目的
- 在成本和速度之间进行权衡
4. 微操作
- 定义:执行程序时,计算机操作是由一系列指令周期组成,每个周期执 行一条机器指令。每个指令周期又可以看作是由几个更小的子周期组成。每个子周期由一系列涉及CPU寄存器操作的更小步骤组成,这些步骤称为微操作
4.1. 微操作分组的原则
- 事件的流动顺序必须是恰当的
- 例:MAR <- (PC) 必须先于MBR <- 内存,因为内存读操作要使用 MAR中的地址
- 必须避免冲突
- 例:MBR <- 内存 和IR <- MBR 这两个微操作不应出现在同一时间 单位里
- 满足上述条件下,所用的时间单位尽可能少
4.2. 取指周期
- 出现在每个指令周期的开始,将指令从存储器中取出
- 过程:
4.3. 间址周期
- 如果指令采用间接寻址,则在指令执行前有一个间址周期
- 完成间址周期后,IR的状态与不使用间接寻址方式的状态是 相同的,已经为执行周期准备就绪
- 过程:
4.4. 执行周期
- 对于不同的操作码,会出现不同的微操作序列
- 例子
加法指令
“转移并保存地址”指令
4.5. 中断周期
- 在完成执行周期时,要确定是否有允许的中断产生
- 如果有,则出现一个中断周期
- 过程:
4.6. 指令周期代码
Instruction Cycle Code,ICC
取指、间址、中断周期各有一个微操作序列,执行周期则对于每 个操作码有一个微操作序列
指令周期代码:假设一个2位的ICC寄存器,明确CPU处于指令 周期哪个阶段
- 00:取指
- 01:间值
- 10:执行
- 11:中断
4.7. CPU内部总线
- ALU和寄存器都连接到CPU内部总线上
- 为了数据在该内部总线和各寄存器之间传递, 内部总线和寄存器之间有门和控制信号
- 控制线控制着数据和系统总线(外部)的交 换以及ALU的操作
5. 控制器
5.1. 基本任务
- 定序(sequencing):根据正被执行的程序,控制器使CPU以正确 的顺序通过一系列微操作
- 执行(execution):控制器使每个微操作得以完成
5.2. 输入
- 指令寄存器:当前指令的寻址方式和操作码
- 标志:确定CPU的状态和前一个ALU操作的结果
- 时钟:控制器要在每个时钟脉冲完成一个或一组同时的微操作
- 来自控制总线的控制信号:向控制器提供控制信号
5.3. 输出
所有的控制信号最终作为二进制输入量 直接输入到各个逻辑门上
- CPU内的控制信号
- 用于寄存器之间传送数据
- 用于启动特定的ALU功能
- 到控制总线的控制信号
- 到存储器的控制信号
- 到I/O模块的控制信号
5.4. 例子
5.5. 控制器最小特性
- 它只需要知道将被执行的指令和算术、逻辑运算结果的性质(如 正负、溢出等),而不需要知道正被处理的数据或得到的实际结 果具体是什么
- 它只是以少量的送到CPU内的和送到系统总线上的控制信号来实 现控制
6. 控制器实现
- 硬布线实现(hardwired implementation)
- 控制器是一个组合电路,把输入逻辑信号转换为一组输出逻辑信号, 即控制信号
- 微程序实现(microprogrammed implementation)
- 控制逻辑是微程序指定的,控制器是一个相对简单的逻辑电路,通 过执行每条微指令来产生控制信号
6.1. 硬布线实现
6.1.1. 控制器输入
标志和控制总线信号
- 每位都有特定的意义
指令寄存器
- 通过译码,使每一操作码有一个唯一的逻辑输入
- 译码器有 n 个输入和
个输出 - 控制器要考虑变长的操作码,译码器会更复杂些
时钟
- 在一个指令周期内,控制器要在不同时间单位发送不同的控制信号
- 使用一个定时器作为控制器的输入,并且控制器在指令周期结束时必须通知定时器以使其重新开始计数
6.1.2. 控制器逻辑
- 为每个输出的控制信号设计一个关于控制器输入的布尔表达式
6.2. 微程序实现
6.2.1. 基本概念和思路
- 微程序(固件)介于硬件与软件之间
- 设计固件比设计硬件容易,但写固件程序比软件程序困难
- 微指令序列
- 微指令:每行描述一个时间内出现的一组微操作
- 基本思路
- 对于每个微操作,控制器的任务是产生一组控制信号,即控制器发出的每根控制线或开或关(每根控制线由一个二进制数字表示)
- 构造一个控制字,每位代表一根控制线,这样每个微操作能用控制 字中的不同的0和1的样式来表示
- 将这些控制字串在一起,可以表示控制器需要完成的微操作序列
6.3. 任务
6.4. 定序
6.5. 构成
6.6. 工作流程
6.7. 优点与缺点
- 优点
- 简化了控制器的设计任务
- 实现成本低,减少出错机会
- 缺点
- 比采用相同半导体工艺的硬布线控制器慢一些
- 标题: 15_控制器
- 作者: Charlie
- 创建于 : 2023-02-06 21:26:00
- 更新于 : 2024-07-05 12:55:04
- 链接: https://chillcharlie357.github.io/posts/404b6c10/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论