第五章-中央处理器

WanXing2022年7月30日大约 16 分钟

5.1 CPU的功能和基本结构open in new window

1.CPU的功能

  1. 指令控制: 完成取指令, 分析指令和执行指令的操作, 即程序的顺序控制
  2. 操作控制: 一条指令的功能往往是若干操作信号的组合来实现的. CPU管理并产生由内存取出的每条指令的操作信号. 把各种操作信号送往响应的部件, 从而控制这些部件按指令的要求进行动作
  3. 时间控制: 对各种操作加以时间上的控制. 时间控制要为每条指令按照时间顺序提供应有的控制信号
  4. 数据加工: 对数据进行算术和逻辑运算
  5. 中断处理: 对计算机运行过程中出现的异常情况和特殊请求进行处理

2.运算器和控制器的功能

3.运算器

对数据进行加工

4.控制器

协调并控制计算机各部件执行程序的指令序列, 基本功能包括取指令, 分析指令, 执行指令

  • 取指令: 自动形成指令地址; 自动发出取指令的命令
  • 分析指令: 操作码译码(分析本条指令要完成什么操作); 产生操作数的有效地址
  • 执行指令: 根据分析指令得到的"操作命令"和"操作数地址", 形成操作信号控制序列, 控制运算器, 存储器以及I/O设备完成响应的操作
  • 中断指令: 管理总线几输入输出; 处理异常情况(如掉电)和特殊请求(如打印机请求打印一行字符)

5.运算器的基本结构

  • 算术逻辑单元: 主要功能是进行算术/逻辑运算
  • 通用寄存器组: 如AX、BX、CX、DX、SP等, 用于存放操作数(包括源操作数、目的操作数及中间结果)和各种地址信息. SP是堆栈指针, 用于指示栈顶的地址(stack pointer)
  • 暂存器: 用于暂存从主存读出来的数据, 这个数据不能存放在通用寄存器中, 否则会破坏其原有的内容
  • 累加寄存器: 它是一个通用寄存器, 用于暂时存放ALU运算的结果信息, 用于实现加法运算
  • 程序状态字寄存器: 保留由算术逻辑运算指令或测试指令的结果而建立的各种状态信息, 如溢出标志(OP)、符号标志(SF)、零标志(ZF)、进位标志(CF)等. PSW中的这些位参与并决定微操作的形成
  • 移位器: 对运算结果进行移位运算
  • 计数器: 控制乘除运算的操作数

专用数据通路方式

根据指令执行过程中的数据和地址的流动方向安排链接线路

如果直接用导线连接, 相当于多个寄存器同时并且一直向ALU传输数据

  • 解决方法1: 使用多路选择器, 根据控制信号选择一路输出
  • 解决方法2: 使用三态门, 可以控制每一路是否输出

性能较高, 基本不存在数据冲突现象, 但是结构复杂, 硬件量大, 不易实现

CPU内部单总线方式

将所有寄存器的输入端和输出端都连接到一条公共的通路上

6.控制器的基本结构

  • 程序计数器: 用于指出下一条指令在主存中的存放地址. CPU就是根据PC的内容去主存中读取指令的. 因程序中指令(通常)是顺序执行的, 所以PC有自增功能
  • 指令寄存器: 用于保存当前正在执行的指令
  • 指令译码器: 仅对操作码字段进行译码, 向控制器提供特定的操作信号
  • 微操作信号发生器: 根据IR的内容(指令)、PSW的内容(状态信息)及时序信号, 产生控制整个计算机系统所需的各种控制信号, 其结构有组合逻辑型和存储逻辑型两种
  • 时序系统: 用于产生各种时序信号, 他们都是由统一时钟(CLOCK)分频得到
  • 存储器地址寄存器: 用于存放所要访问的主存单元的地址

7.CPU的基本结构

  • ALU
  • 中断系统
  • 寄存器
  • CU

5.2 指令执行过程

1.指令周期

  • 指令周期: CPU从主存中每取出并执行一条指令所花的全部时间
    • 指令周期常常用若干机器周期来表示, 机器周期又叫CPU周期
    • 一个机器周期又包含若干时钟周期
    • 时钟周期也称为节拍、T周期或者CPU时钟周期, 它是CPU操作的最基本单位

每个指令周期内机器周期数可以不等, 每个机器周期内的节拍数也可以不等, 如:

空指令NOP: 取址周期
加法指令ADD: 取址周期+执行周期
取址周期+较长的执行周期
取址周期+间接寻址周期+执行周期
取址周期+间接寻址周期+执行周期+中断周期

2.指令周期流程

四个工作周期都有CPU访存操作, 只是访存的目的不同. 取址周期是为了取指令, 间址周期是为了取有效地址, 执行周期是为了取操作数, 中断周期是为了保存程序断点

3.指令周期的数据流—取址周期

  1. 当前指令地址送至存储器地址寄存器, 记做: (PC)->MAR
  2. CU发出控制信号, 经控制总线传到主存, 这里是读信号, 记做: 1->R
  3. 将MAR所指主存中的内容经数据总线送入MDR, 记做M(MAR)->MDR
  4. 将MDR中的内容(此时是指令)送入IR, 记做: (MDR)->IR
  5. CU发出控制信号, 形成下一条指令地址, 记做: (PC)+1->PC

4.指令周期的数据流-间址周期

  1. 将指令的地址码放入MAR, 记做: Ad(IR)->MAR或者是Ad(MDR)->MAR
  2. CU发出控制信号, 启动主存读操作, 记做: 1->R
  3. 将MAR所指主存中的内容经过数据总线送入MDR, 记做: M(MAR)->MDR
  4. 将有效地址送至指令的地址码字段, 记做: (MDR)->Ad(IR)

5.指令周期的数据流-执行周期

执行周期的任务是根据IR中的指令字的操作码和操作数通过ALU操作产生执行结果. 不同指令的执行周期操作数不同, 因此没有统一的数据流向

6.指令周期的数据流-中断周期

暂停执行当前的程序去执行其他的程序. 为了能够恢复当前任务, 需要保存断点. 一般用堆栈来保存断点, 这里用SP表示栈顶地址, 假设SP指向栈顶元素, 进栈操作是先修改指针, 后存入数据.

中断周期中的进栈操作是将SP减1, 这和传统意义上的进栈操作相反, 原因是计算机的堆栈中都是向低地址增加, 所以进栈操作是减1而不是加1

  1. CU控制将SP-1, 修改后的地址送入MAR, 记做: (SP)-1->SP, (SP)->MAR. 本质上是将断点存入某个存储单元, 假设其地址为a, 故可以记做: a->MAR
  2. CU发出控制信号, 启动主存做写操作, 记做: 1->w
  3. 将断点(PC内容)送入MDR, 记做(PC)->MDR
  4. CU控制将中断服务程序的入口地址(由向量地址形成部件产生)送入PC, 记做: 向量地址->PC

7.指令执行方案

一个指令周期通常包括几个时间段(执行步骤), 每个步骤完成指令的一部分功能, 几个依次执行的步骤完成这条指令的全部功能

单指令周期

对所有指令选用相同的执行时间来完成, 指令之间串行执行, 指令周期取决于执行时间最长的指令的执行时间

多指令周期

对于不同类型的指令选用不同的执行步骤来完成. 指令之间串行执行; 可选用不同个数的时钟周期来完成不同指令的执行过程

流水线方案

在每一个时钟周期启动一条指令, 尽量让多条指令同时运行, 但各自处在不同的执行步骤中, 指令之间并行执行

5.3 数据通路的功能&单总线结构

1.数据通路

数据通路的基本结构:

  1. CPU内部单总线方式
  2. CPU内部三总线方式
  3. 专用数据通路方式

2.数据通路-CPU内部单总线方式

  • 内部总线是指同一部件, 如CPU内部连接各个寄存器及运算部件之间的总线
  • 系统总线是指同一台计算机系统的各部件, 如CPU、内存、通道和各类I/O接口之间互相连接的总线

寄存器之间的数据传送

比如把PC内容送至MAR, 实现传送操作的流程及控制信号为:

  • (PC)->Bus PCout有效, PC内容送总线
  • Bus->MAR MARin有效, 总线内容送MAR
  • 重要的是描述清楚数据的流向

主存与CPU之间的数据传送

比如CPU从主存读取指令, 实现传送操作的流向及控制信号为:

  • (PC)->Bus->MAR PCout和MARin有效, 现行指令地址->MAR
  • 1->R CU发读命令(通过控制总线发出)
  • MEM(MAR)->MDR 指令从存储器->数据线->MDR
  • MDR->Bus->IR MDRout和IRin有效, 现行指令->IR

执行算术或者逻辑运算

比如一条加法指令, 微操作序列及控制信号为:

  • Ad(IR)->Bus->MAR MDRout和MARin有效
  • 1->R CU发出读命令
  • MEM(MAR)->数据线->MDR 操作数从存储器->数据线->MDR
  • MDR->Bus->Y MDRout和Yin有效, 操作数->Y
  • (ACC)+(Y)->Z ACCout和ALUin有效, CU向ALU发送加命令
  • Z->ACC Zout和ACCin有效, 结果->ACC

3.公共操作

时序微操作有效控制信号
1(PC)->MARPCout, MARin
2M(MAR)->MDRMemR, MARout, MDRinE
3(MDR)->IRMDRout, IRin
4指令译码-
5(PC)+1->(PC)-

5.4 数据通路专用通路结构

专用数据通路方式-取指周期

  1. (PC)->MAR C0有效
  2. (MAR)->主存 C1有效
  3. 1->R 控制单元向主存发送读命令
  4. M(MAR)->MDR C2有效
  5. (MDR)->IR C3有效
  6. (PC)+1->PC
  7. Op(IR)->CU C4有效

5.5 控制器设计硬布线控制器

1.内容回顾

每一个机器周期由若干个时钟周期(或者称为节拍)组成, 通过若干个微操作组成的序列完成这个周期内需要做的事情. CU会在每一个节拍内, 发出一个微命令, 用来完成对应的微操作. 如: 微命令1使得PCout和MARin有效, 则完成对应的微操作1(PC)->MAR

  • 取址周期(FE=1): T0: 微操作1、微操作2; T1: 微操作3; T2: 微操作4;
  • 间址周期(IND=1): T0: 微操作5、微操作2; T1: 微操作6; T2: 微操作7;
  • 执行周期(EX=1): T0: 无; T1: 微操作8; T2: 微操作9、微操作6
  • 中断周期(INT=1): T0: 无; T1: 微操作10; T2: 微操作11
  • 一个节拍内可以并行完成多个“相容的”微操作
  • 同一个微操作可能在不同指令的不同阶段内被使用
  • 不同指令的执行周期所需节拍数各不相同, 为了简化设计, 选择定长的机器周期, 以可能出现的最大节拍数为准(通常以访存所需的节拍数为参考)
  • 若实际所需的节拍数较少, 可将微操作安排在机器周期末尾几个节拍上进行
  • 根据指令操作码、目前的机器周期、节拍信号、机器状态条件, 即可确定现在这个节拍下应该发出哪些“微指令”

2.硬布线控制器

所有指令的取址周期、T0节拍下一定要完成(PC)->MAR. 则可知C1=FE∙T0 逻辑表达式是电路的数学化描述

M(MAR)->MDR微操作命令的逻辑表达式: FE∙T1+IND∙T1(ADD+STA+LDA+JMP+BAN)+EX∙T1(ADD+LDA)

3.硬布线控制器的设计

设计步骤

  1. 分析每个阶段的微操作序列(取指令、间指、执行、中断四个阶段)「确定哪些指令在什么阶段、在什么条件下会使用到什么微操作」
  2. 选择CPU的控制方式「采用定长机器后期还是不定长机器周期?每个机器周期安排几个节拍?」
  3. 安排微操作的时序「如何用3个节拍完成整个机器周期内的所有微操作」
  4. 电路设计

特点


指令越多, 设计和实现就越复杂, 因此一般用于RISC(精简指令集系统), 如果扩充一条新的指令, 则控制器的设计就需要大改, 因此扩充指令较困难, 由于使用纯硬件实现控制, 因此执行速度更快, 微操作控制信号由组合逻辑电路即时产生

分析每个阶段的微操作序列

  • 取址周期(所有的指令都一样): PC->MAR; 1->R; M(MAR)->MDR; MDR->IR; OP(IR)->ID; (PC)+1->PC (ID为指令译码器 Instruction Decoder)
  • 间址周期(所有指令都一样): Ad(IR)->MAR; 1->R; M(MAR)->MDR; MDR->Ad(IR)
  • 执行周期(各不相同):
    • CLA: clear ACC指令 ACC清零 0->AC(很多地方将ACC简写为AC)
    • LDA: 取数指令, 把x所指内容取到ACC Ad(IR)->MAR; 1->R; M(MAR)-> MDR; MDR->AC
    • JMP: 无条件转移 Ad(IR)->PC
    • BAN: 条件转移, 当ACC为负时转移 A0∙Ad(IR)+(1-A0)∙(PC)->PC

罗列出所有指令在各个阶段的微操作序列, 就可以知道在什么情况下需要使用这个微操作

选择CPU的控制方式

假设采用同步控制方式(定长机器周期), 一个机器周期内安排3个节拍

安排微操作时序

三个原则

  • 微操作的先后顺序不得随意更改
  • 被控对象不同的微操作尽量安排在一个节拍内进行
  • 占用时间较短的微操作, 尽量安排在一个节拍内完成, 并允许有先后顺序
取址周期
  1. T0: PC->MAR, 1->R
  2. T1: M(MAR)->MDR, (PC)+1->PC
  3. T2: MDR->IR, OP(IR)->ID
  • M(MAR)->MDR: 从主存取数据, 用时较长, 因此必须一个时钟周期才能保证微操作的完成
  • MDR->IR: 是CPU内部寄存器的数据传送, 速度很快, 因此在一个时钟周期内可以紧接着完成OP(IR)->ID, 也就是可以一次同时发出两个微命令
间址周期
  1. T0: Ad(IR)->MAR, 1->R
  2. T1: M(MAR)->MDR
  3. T2: MDR->Ad(IR)

电路设计

参见书表

可以得出微操作命令的逻辑表达式

微程序控制器

  • 微命令和微操作
    • 微命令和微操作是一一对应的,微命令是微操作的控制信号,微操作是微命令的执行过程
  • 微指令和微周期
    • 微指令是若干微命令的集合,存放微指令的控制寄存器单元地址称为微地址
      • 一条微指令包含操作控制字段(产生某一步操作所需的各种操作控制信号)和顺序控制字段(产生下一条要执行的微操作地址)
      • 微周期指从控制存储器中读取一条微指令并执行相应微操作的时间
  • 主存储器:
    • 用于存放程序和数据,在CPU外部,RAM
  • 控制存储器:
    • 用于存放微程序,在CPU内部,ROM
  • 程序与微程序
    • 程序是指令的有序集合,微程序是微指令的有序集合
  • 计算机中微程序的结构和功能是透明的
    • 地址寄存器(MAR)用于存放主存的读写地址
    • 微地址寄存器(CMAR)用于存放控制存储器的读写地址
    • 指令寄存器(IR)用于存放从主存中读出的命令
    • 微指令寄存器(CMDR或μ\muIR)用于存放从控制存储器中读出的微指令

5.6 中断和异常

1.概念

  • 由CPU内部产生的意外事件称为异常->内中断
  • 由CPU外部的设备向CPU发出的中断请求称为中断->外中断
  • 对中断的具体处理过程由操作系统或驱动程序完成

2.异常的分类

  • 硬故障中断:存储器校验错、总线错误
  • 程序性异常(软件中断):整除0、溢出、断点、单步跟踪、非法指令、栈溢出、地址越界、缺页
  • 故障:指令启动后,执行结束前的异常
    • 非法操作码、缺段、缺页、除数为0
  • 自陷:断点调试
  • 终止:计算机出现了无法继续执行的硬件故障,不是特定指令产生的,而是随机发生的
  • 故障异常和自陷异常属于软件中断
  • 终止异常和外中断属于硬件中断

3.中断的分类

  • 可屏蔽中断
    • 通过可屏蔽中断请求线INTR向CPU发出中断请求-->可屏蔽或不屏蔽
  • 不可屏蔽中断
    • 通过专门的不可屏蔽中断请求线NMI向CPU发出中断请求-->电源掉电等

4.异常和中断响应

  • 过程为关中断、保存断点和程序状态、识别异常和中断并转移到相应的处理程序
    • IF为1开中断,IF为0关中断
    • 断点保存于栈中
    • 异常状态寄存器/向量中断
Loading...