1
0
mirror of https://github.com/Didnelpsun/CS408.git synced 2026-02-07 21:04:38 +08:00
Files
CS408/Computer-Organization/4-central-processing-unit.md
2021-05-27 23:40:18 +08:00

360 KiB
Raw Blame History

中央处理器

即CPU为最难的一章。

CPU基本概念

CPU功能

CPU总功能

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

运算器功能

  • 对数据进行加工。
  • 主要部件是ALU和ACC。

控制器功能

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

  1. 取指令:
    • 自动形成指令地址。
    • 自动发出取指令的命令。
  2. 分析指令:
    • 操作码译码(分析本条指令要完成什么操作)。
    • 产生操作数的有效地址。
  3. 执行指令:
    • 根据分析指令得到的“操作命令”和“操作数地址”。
    • 形成操作信号控制序列控制运算器、存储器以及I/O设备完成相应的操作。
  4. 中断处理:
    • 管理总线及输入输出。
    • 处理异常情况(如掉电)。
    • 特殊请求(如打印机请求打印一行字符)。
  • 控制器部件向系统中的部件提供它们运行所需要的控制信号。
  • 控制器部件从数据总线接收指令信息。
  • 控制器部件从运算器部件接收指令转移地址。
  • 控制器部件送出指令地址到地址总线。

CPU结构

  • ALU为首的组合逻辑。
  • CU为首的时序逻辑。
  • 寄存器。
  • 中断系统。

运算器结构

  1. 算术逻辑单元ALU主要功能是进行算术/逻辑运算。
  2. 通用寄存器组X如AX、BX、CX、DX、SP等用于存放操作数包括源操作数、目的操作数及中间结果和各种地址信息等。SP是堆栈指针用于指示栈顶的地址。
  3. 内部总线:
    • 专用数据通路方式:
      • 根据指令执行过程中的数据和地址的流动方向安排多条连接线路。
      • 如果直接用导线连接相当于多个寄存器同时并且一直向ALU传输数据解决方法
        1. 使用多路选择器MUX根据控制信号选择一路输出解决方法。
        2. 使用三态门可以控制每一路是否输出1允许0不允许。
      • 性能较高,基本不存在数据冲突现象,但结构复杂,硬件量大,不易实现。
    • CPU内部单总线方式
      • 将所有寄存器的输入端和输出端都连接到一条公共的通路上。
      • 结构简单,容易实现,但数据传输存在较多冲突的现象,性能较低。
      • 为了解决冲突用暂存寄存器解决。
  4. 暂存寄存器R用于暂存从主存读来的数据这个数据不能存放在通用寄存器中否则会破坏其原有内容。
  5. 累加寄存器ACC它是一个通用寄存器用于暂时存放ALU运算的结果信息用于实现加法运算。
  6. 程序状态字寄存器PSW保留由算术逻辑运算指令或测试指令的结果而建立的各种状态信息如溢出标志OP 、符号标志SF、零标志ZF、进位标志CFPSW中的这些位参与并决定微操作的形成。
  7. 移位器:对运算结果进行移位运算。
  8. 计数器:控制乘除运算的操作步数。

控制器结构

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

指令执行

指令周期

  • 指令周期CPU从主存中每取出并执行一条指令所需的全部时间
    • 取址周期:取址、分析。
    • 执行周期。
  • 指令周期常常用若干机器周期来表示机器周期又叫CPU周期。如取指令、取有效地址、执行指令这就是三个机器周期是一个指令周期。
  • 一个机器周期又包含若干时钟周期也称为节拍、T周期或CPU时钟周期它是CPU操作的最基本单位
  • 每个指令周期内机器周期数可以不等,每个机器周期内的节拍数也可以不等。
  • 指令周期流程:
    1. 进入取址周期。
    2. 判断是否有间址。
    3. 若有则进入间址周期,结束后进入执行周期。
    4. 若无则直接进入执行周期。
    5. 判断是否有中断。
    6. 若有则进入中断周期,结束后进入下一条指令的指令周期。
    7. 若无则直接进入下一条指令的指令周期。
  • CPU访存的四种性质可以设置四位二进制位作为标志触发器
    • 取指令:取指周期。
    • 取地址:间址周期。
    • 存取操作数或结果:执行周期。
    • 存程序断点:中断周期。

数据流

取址周期

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

间址周期

  1. 将指令的地址码送入MAR记做Ad(IR)→MAR或Ad(MDR)→MAR。
  2. CU发出控制信号通过控制总线发送到主存中启动主存做读操作记做1→R。
  3. 将MAR所指的地址通过地址总线传入主存中主存将地址所指的内容经数据总线送入MDR记做 M(MAR)→MDR。
  4. 将有效地址送至指令的地址码字段记做MDR→Ad(IR)。这一步可以没有。

执行周期

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

中断周期

  • 中断:暂停当前任务去完成其他任务。为了能够恢复当前任务,需要保存断点。
  • 一般使用堆栈来保存断点这里用SP表示栈顶地址假设SP指向栈顶元素进栈操作是先修改指针后存入数据。
  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。

指令执行方案

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

  1. 单指令周期:
    • 对所有指令都选用相同的执行时间来完成。
    • 指令之间串行执行。
    • 指令周期取决于执行时间最长的指令的执行时间。
    • 缺点:对于那些本来可以在更短时间内完成的指令,要使用这个较长的周期来完成,会降低整个系统的运行速度。
    • 优点实施简单只用程序计数器PC就能实现。
  2. 多指令周期:
    • 对不同类型的指令选用不同的执行步骤来完成。
    • 指令之间串行执行。
    • 可选用不同个数的时钟周期来完成不同指令的执行过程。
    • 缺点:需要更复杂的硬件设计。
    • 优点:系统运行速度更高,效率更高。
  3. 流水线方案:
    • 在每一个时钟周期启动一条指令,尽量让多条指令同时运行,但各自处在不同的执行步骤中。

数据通路

  • 数据通路就是数据在功能部件之间传送的路径。
  • 由控制部件产生的控制信号建立数据通路。
  • 数据通路的基本结构:
    • CPU内部单总线方式。
    • CPU内部多总线方式。
    • 专用数据通路方式。

CPU内部单总线方式

  • 内部总线是指同一部件如CPU内部连接各寄存器及运算部件之间的总线。
  • 系统总线是指同一台计算机系统的各部件如CPU、内存、通道和各类I/O接口间互相连接的总线。
  • 使用一根总线连接部件的输入和输出。
  • 实现简单。
  • 容易冲突,且效率较低。
  1. 寄存器之间数据传送比如把PC内容送至MAR实现传送操作的流程及控制信号为
    1. (PC)→BusPCout有效PC内容送总线。
    2. Bus→MARMARin有效总线内容送MAR。
  2. 主存与CPU之间的数据传送比如CPU从主存读取指令实现传送操作的流程及控制信号为
    1. (PC)→Bus→MARPCout和IMARin有效现行指令地址→>MAR。
    2. 1→RCU通过控制总线发出读命令。
    3. MEM(MAR)→MDRMDRin有效。
    4. MDR→Bus→>lRMDRout和IRin有效现行指令→IR。
  3. 执行算术或逻辑运算,比如一条加法指令,微操作序列及控制信号为:
    1. Ad(IR)→Bus→MAR:MDRout和IMARin有效。
    2. 1→RCU发读命令。
    3. MEM(MAR)→数据线→MDRMDRin有效。
    4. MDR→Bus→YMDRout和lYin有效操作数→Y。
    5. (ACC)+(Y)→ZACCout和ALUin有效CU向ALU发送加命令。
    6. Z→ACCZout和ACCin有效结果→ACC。

例题 设有如图所示的单总线结构分析指令ADD(R0),R1的指令流程和控制信号。

CPU内部单总线

第一步分析指令功能和指令周期功能ADD(R0),R1这条指令的意思是R0在主存中保存着一个地址这个地址保存一个操作数R0为一级间址需要将R0的操作数与R1的相加再保存到R0中。即((R0))+(R1)→(R0)。

第二步写出各阶段的指令流程:

取址周期是一个公共操作,都需要用到。

时序 微操作 有效控制信号
1 (PC)→MAR PCoutMARin
2 M(MAR)→MDR MemRMARout,
3 (MDR)→IR MDRoutIRin
4 指令译码
5 (PC)+1→PC

间址周期是完成取数操作被加数在主存中加数已经放在寄存器R1中。

时序 微操作 有效控制信号
1 (R0)→MAR ROoutMARin
2 M(MAR)→MDR MemRMARoutMDRinE
3 (MDR)→Y MDRoutYin

执行周期是完成取数操作被加数在主存中加数已经放在寄存器R1中。

时序 微操作 有效控制信号
1 (R1)+(Y)→Z R1outALUinCU向ALU发ADD控制信号
2 (Z)→MDR ZoutMDRin
3 (MDR)→M(MAR) MemWMDRoutEMARout

CPU内部多总线方式

  • 使用多根总线连接部件的输入和输出。、
  • 效率相对于单总线而言得到了提升。

专用数据通路方式

  • 对于各种部件使用专用的通路进行连接。专用通路就是将总线分散到各个地方。
  • 连接多,实现困难。

例题 下图是一个简化了的CPU与主存连接结构示意图图中省略了所有的多路选择器。其中有一个累加寄存器ACC)、一个状态数据寄存器和其他4个寄存器主存地址寄存器MAR、主存数据寄存器MDR、程序寄存器PC和指令寄存器IR各部件及其之间的连线表示数据通路箭头表示信息传递方向。

专用数据通路

要求:

(1)请写出图中a、b、c、d 4个寄存器的名称。

a、b、c、d分别对应主存地址寄存器MAR、主存数据寄存器MDR、程序寄存器PC和指令寄存器IR四个。

首先从d入手如果是+1就一定是PC。

然后在取址周期的时候PC要把地址送到MAR中所以与d直接相连的c就是MAR。

而剩下的a是与ALU直接相连的代表要直接参与运算则一定是存储数据的MDR。

而b是与MDR直接相连的所以b从MDR直接获取数据就是IR将数据放入指令。或b与微操作信号发生器产生连接则一定只有指令才能发生微操作所以一定是IR。

(2)简述图中取指令的数据通路。

(PC)→MAR将PC指令送到MAR中开始寻址。

M(MAR)→MDR将MAR地址指向的主存指令送到MDR中。

(MDR)→IR将MDR中的指令送到IR中。

(PC)+1→PCPC自动加一。

(3)简述数据在运算器和主存之间进行存/取访问的数据通路。

取:

因为是运算器与主存之间进行存取所以数据取入ACC中。

M(MAR)→MDR将MAR所指向的指令从主存中取出放到MDR中。

(MDR)→ALU→ACC要把MDR的内容放入ACC进行存储但是MDR与ACC没有直接连接的线路所以必须通过ALU进行连接。

存:

(ACC)→MDR将ACC中的数据传送到MDR中。

(MDR)→M(MAR)将MDR的数据送到MAR所指向的主存地址中。

(4)简述完成指令LDA X的数据通路X为主存地址LDA的功能为(X)→ACC

就是将X地址的数据送到ACC中。

X→MAR将X的地址放到MAR中。

M(MAR)→MDR将MAR地址指向的数据放入MDR中。

(MDR)→ALU→ACC要把MDR的内容放入ACC进行存储但是MDR与ACC没有直接连接的线路所以必须通过ALU进行连接。

(5)简述完成指令ADD Y的数据通路Y为主存地址ADD的功能为(ACC)+(Y)→ACC

Y→MAR将Y的地址放到MAR中。

M(MAR)→MDR取出指向的值放入MDR中。

(MDR)→ALU(ACC)→ALU将MDR的数据与ACC的数据都送入ALU中相加。

(ALU)→ACC将结果送到ACC中。

(6)简述完成指令STA Z的数据通路Z为主存地址STA的功能为(ACC)→Z

即将ACC中的内容存到主存Z中。

Z→MAR将Z地址送到MAR中。

(ACC)→MDR将ACC的数据送到MDR中。

(MDR)→M(MAR)将MDR的数据送到MAR地址中保存。

控制器

CU的设计包括硬布线和微程序两种微程序比较重要硬布线了解即可。

控制器输入输出

输入:

  1. 指令寄存器OP(IR)->cu控制信号的产生与操作码有关。
  2. 时钟:一个时钟脉冲发一个操作命令或一组需要同时执行的操作命令。
  3. 标志:如条件转移指令,根据相应的标志位决定下一步操作。
  4. 外来信号如中断请求信号INTR、总线请求信号HRQ。

输出:

  1. CPU内部的控制信号寄存器之间的数据传输、PC的修改、控制ALU进行相应的运算。
  2. 到控制总线的控制信号:
    • 到存储器:访存控制信号MREQ、读命令RD、写命令WR。
    • 到I/O设备:访问I/O设备的控制信号IO。
    • 中断响应信号INTA。
    • 总线响应信号HLDA。

硬布线

微操作控制信号由组合逻辑电路根据当前的指令码、状态和时序,即时产生。

设计步骤

  1. 分析每个阶段的微操作序列。
  2. 选择CPU的控制方式产生不同微操作命令序列所用的时序控制方式
    1. 同步控制方式:
      • 整个系统所有的控制信号均来自一个统一的时钟信号。
      • 通常以最长的微操作序列和最烦琐的微操作作为标准,采取完全统一的、具有相同时间间隔和相同数目的节拍作为机器周期来运行不同的指令。
      • 同步控制方式的优点是控制电路简单,缺点是运行速度慢。
    2. 异步控制方式:
      • 异步控制方式不存在基准时标信号。
      • 各部件按自身固有的速度工作,通过应答方式进行联络。
      • 异步控制方式的优点是运行速度快,缺点是控制电路比较复杂。
    3. 联合控制方式:
      • 对各种不同的指令的微操作实行大部分采用同步控制、小部分采用异步控制的办法。
  3. 安排微操作时序:
    • 原则:
      1. 微操作的先后顺序不得随意更改被控对象不同的微操作。
      2. 尽量安排在一个节拍内完成占用时间较短的微操作。
      3. 尽量安排在一个节拍内完成并允许有先后顺序。
  4. 电路设计。
    1. 列出操作时间表。
    2. 写出微操作命令的最简表达式。
    3. 画出逻辑图。

指令类别

  1. 非访存指令:
    1. CLAclearACC清零。
    2. COMcomplementACC取反。
    3. SHRshift算术右移。
    4. CSLcyclic shift循环左移。
    5. STPstop停机。
  2. 访存指令:
    1. ADD加法指令隐含ACC。
    2. STA存数指令隐含ACC。
    3. LDA取数指令隐含ACC。
  3. 转移指令:
    1. JMPjump无条件转移。
    2. BANbranch ACC Negative条件转移。

基本微操作时序

首先对于取址周期,基本上的流程如下:

  1. PC→MAR将PC地址交给MAR。
  2. 1→R主存发出读命令。只需要存储器空闲就能发出。
  3. M(MAR)→MDR将地址指向指令交给MDR。要MAR准备好在1的后面。
  4. MDR→IR将指令交给IR。把MDR有指令在3后面。
  5. OP(IR)→ID编译指令。IR中要有指令在4后面。
  6. (PC)+1→PCPC自加1。因为操作完就可以更新所以在1后面就可以了。

所以没有依赖的可以尽量往前放顺序可以变为123645。

因为12没有相互依赖所以可以都安排在T0时间36在1的后面且36之间用到的设备不一样从而不会冲突所以都安排在T1而4和5时间都较短所以可以都安排在T2。

然后是间址周期:

  1. Ad(IR)→MAR获取IR指令中的地址交给MAR。
  2. 1→R主存发出读命令。
  3. M(MAR)→MDR取出对应的值放到MDR中。
  4. MDR→Ad(IR)将MDR的地址值放入IR的指令中。

与取址周期一致2可以跟1一起而34都依赖于1所以12是T03是T14是T2。

执行周期省略最后是中断周期假设中断时要保存的地址为a

  1. a→MAR将a保存到MAR中。
  2. 1→W主存发出写命令。存储器空闲就可以。
  3. 0→EINT硬件关中断。安排在第一个周期就可以。
  4. (PC)→MDR将当前程序计数器保存的位置暂存到MDR等待后期恢复。内部数据通路空闲就可以。
  5. MDR→M(MAR)将MDR的数据保存到a这个地址。在4之后。
  6. 向量地址→PC将PC送到中断服务地址。只用PC改好就可以在4之后。

1、2、3都在T0而456依次为T1、T2、T3。

这些操作由中断隐指令完成。中断隐指令不是一条指令,而是指一条指令的中断周期由硬件完成的一系列操作

微程序

指令流水线

[]