第5章 中 央 处 理 器 5.1 CPU的功能和组成 5.2 指令周期 5.3 时序产生器和控制方式 5.4 微程序控制器 第5章 中 央 处 理 器 5.1 CPU的功能和组成 5.2 指令周期 5.3 时序产生器和控制方式 5.4 微程序控制器 5.5 微程序设计技术 5.6 硬连线控制器 5.7 流水线技术 5.8 提高单机系统指令级并行性(ILP)的措施 5.9 现代微处理器举例 本章小结 习题5
第四章作业 P194 2、4、6
5.1 CPU的功能和组成 程序一旦装入内存储器, 中央处理器(简称CPU)就能自动地、 逐条地取指令、分析指令和执行指令。 因此, CPU是计算机的核心部件。 5.1.1 CPU的功能 CPU在运行程序时, 根据程序计数器PC的值自动地从主存储器中取出一条指令, 若指令Cache命中, 则直接从指令Cache中取指令, 然后对指令进行分析, 即对指令的操作码进行译码或测试, 以识别指令的功能, 并根据不同的操作码和时序产生器产生的时序信号,
生成具有时间标志的操作控制信号, 送到相应的执行部件, 定时启动所要求的操作, 以控制数据在CPU、 数据Cache、 主存储器和输入/输出设备之间流动, 指挥运算器操作, 完成对数据的加工处理。 与此同时, 它还修改程序计数器PC的内容, 给出后继指令在主存储器中的位置, 自动地、 逐条地取指令、 分析指令和执行指令, 直到指令序列全部执行完毕为止。 因此, CPU的基本功能可以归纳为以下几个方面:
(1) 指令控制, 即对指令执行顺序的控制。 程序由一个指令序列构成, 这些指令在逻辑上的相互关系不能改变。 CPU必须对指令的执行进行控制, 保证指令序列执行结果的正确性。 (2) 操作控制, 即对取指令、 分析指令和执行指令过程中所需的操作进行控制。 一条指令的解释一般需要几个操作步骤来实现, 每个操作步骤实现一定的功能, 每个功能的实现都需要相应的操作控制信号, CPU必须把各种操作控制信号送往相应的部件, 从而控制这些部件完成相应的动作。
(3) 时间控制, 即对各种操作进行时间上的控制。 时间控制包括两方面内容: 一方面, 在每个操作步骤内的有效操 作信号均受时间的严格限制, 必须保证按规定的时间顺序启动各种动作; 另一方面, 对指令解释的操作步骤也要进行时间上的控制。 (4) 数据加工, 即对数据进行算术运算和逻辑运算处理。 完成数据的加工处理, 这是CPU的最基本的功能。
此外, CPU还具有异常处理和中断处理、 存储管理、 总线管理、 电源管理等扩展功能。异常处理和中断处理是指在运行程序时, 如果出现某种紧急的异常事件, 如算术运算时除数为零、 内存条故障、 外设发出中断请求等, CPU必须对这些事件进行处理; 存储管理包括虚拟存储器的管理及存储器的保护等; 总线管理是对CPU所连接的系统总线进行总线请求优先权的裁决、 总线数据传输的同步控制等; 电源管理是为减少CPU的功耗和减少CPU芯片的发热等。
5.1.2 CPU的基本组成 早期的CPU都由运算器和控制器两大部分组成, 而现代的CPU除了运算器和控制器外,还有高速缓冲存储器(Cache)。
图5.1 模型CPU的组成框图
5. 1. 3 CPU中的主要寄存器 在CPU中至少包含五类寄存器, 分别是 1 5.1.3 CPU中的主要寄存器 在CPU中至少包含五类寄存器, 分别是 1. 程序计数器(PC),指令地址寄存器,或指令指针。给出将要取出并执行的指令的地址。PC=PC+n;或由转移类指令形成转移地址,写入PC中,形成下一条指令的地址。 2. 指令寄存器(IR)。保存当前正在执行的一条指令。 3. 数据地址寄存器(AR)。保存当前CPU所访问的数据Cache单元的地址,直到一次读/写操作完成为止。 4. 通用寄存器(GR) 5. 状态字寄存器(PSW):运算结果状态、程序工作状态、机器状态
5.1.4 操作控制器和时序产生器 一条指令的解释过程实际上是一个信息的流动和处理的过程。 这里的信息包括指令、 数据和地址等, 但不管是哪类信息, 都是用二进制数据来表示的, 因此信息的流动和处理 过程也可以看成是数据的流动和处理过程。 如何来保证数据在CPU内各类寄存器、 ALU、 Cache、 主存储器和I/O设备之间正确地流动, 以实现指令要求的功能呢?这就要求有一个部件来根据指令的功能产生相应的控制信号, 控制数据的正确流动。
通常把各执行部件之间传送信息的通路称为数据通路。 数据在流动过程中从源部件到目标部件之间经过的三态门、 多路开关、 各类寄存器、 ALU、 Cache、 主存储器、 I/O设备等都要加以控制。 产生控制信号并建立正确数据通路的部件被称为操作控制器。 操作控制器的功能, 就是根据指令的操作码和时序信号, 产生各种具有时间标志的操作控制信号, 以便建立正确的数据通路, 从而完成取指令和执行指令的控制。
根据设计方法的不同, 现代计算机中操作控制信号的形成方法有两种: 1、组合逻辑设计方法:硬连线控制器(或组合逻辑控制器)。纯RISC微处理器架构。 2、微程序设计方法:微程序控制器。经典的CISC微处理器架构。 3、混合式:思想是简单的指令通过组合逻辑电路来产生操作控制信号, 而复杂的指令则通过微操作ROM来产生操作控制信号。
由于CPU在解释指令时, 通过操作控制器产生的各个操作控制信号之间存在严格的先后次序, 因此各个控制信号在什么时刻有效, 维持有效的时间有多长, 也都有严格的规定, 不能有任何差错。 例如, 执行加法指令时, 必须先将两个数送到ALU的输入端, 然后再发加法控制信号控制ALU进行加法运算, 待加法结果生成后, 才能将结果送到目的地。 因此, 需要引入时序的概念。 时序指时间序列, 在计算机内专门设置了时序产生器来产生一组时序信号,即一系列的节拍电位信号和节拍脉冲信号。 时序产生器的作用就是对各种操作控制信号实施时间上的控制。
5.2 指 令 周 期 5.2.1 指令周期的基本概念 CPU每次送出访存地址, 从内存中取出一条指令并且执行完这条指令所需的时间通常叫做一个指令周期。 指令周期有两种工作方式: 1、顺序串行方式 2、流水方式
指令周期包括: 1、取指周期:取出一条指令所花的时间称为取指周期 2、执行周期:执行一条指令所花的时间称为执行周期。 CPU周期:用CPU访存周期的时间长短来定义CPU周期 取指周期:1个或多个CPU周期 执行周期:至少一个CPU周期 机器周期=CPU周期:由若干时钟周期组成。时钟周期又称为节拍脉冲周期或T周期,它是处理操作的最基本单位。
(a) 定长CPU周期组成的指令周期; (b) 变长CPU周期组成的指令周期 图5.2 指令周期 (a) 定长CPU周期组成的指令周期; (b) 变长CPU周期组成的指令周期
CPU在解释指令时是根据指令完成的功能对指令格式进行解释的, 换句话来说, 相同指令格式编写出来的不同指令代码, 其解释过程完全相同。 表5
5.2.2 MOV指令的指令周期 MOV指令的指令格式中, 源操作数采用立即寻址, 目的操作数采用寄存器寻址。 MOV指令的指令周期由两个CPU周期组成, 其中取指周期占用一个CPU周期, 执行周期占用一个CPU周期。 在取指周期中, CPU主要完成如下功能: ①根据当前PC的值访存取指, 并将取出的指令代码送往指令寄存器IR; ②对程序计数器PC加1, 形成取下一条指令的地址; ③对指令的操作码进行译码或测试, 以确定指令实现的功能。
在执行周期中, CPU根据指令功能完成所要求的操作。 对MOV指令来说, 执行周期中完成将指令中的形式地址部分(立即数)送往目的寄存器的操作。 1. 取指周期 MOV指令在取指周期内实现取指的操作过程如图5.3所示。 此阶段, 在CPU中操作控制器的控制下按顺序完成如下操作: ① 程序中第一条指令的地址20装入程序计数器PC;
② PC的内容被送往指令地址总线ABUS(I)上, 地址译码后选中指令Cache的20存储单元, 并启动读操作命令; ③ 从20地址中读出MOV指令的指令代码, 通过指令总线IBUS装入指令寄存器IR; ④ 程序计数器PC的内容加1, 变为21, 形成取下一条指令的地址; ⑤ 对指令寄存器中的操作码进行译码或测试, 以确定指令实现的功能。
图5.3 MOV指令的取指周期
2. 执行周期 MOV指令在执行周期内实现指令功能的操作过程如图5 2. 执行周期 MOV指令在执行周期内实现指令功能的操作过程如图5.4所示。 此阶段, 在CPU中操作控制器的控制下按顺序完成如下操作: ① 指令格式中的形式地址, 即立即数11, 送往数据总线DBUS; ② 目的寄存器的编码I9、 I8经过2∶4译码器译码后选中R1寄存器; ③ 将数据总线DBUS上的数据装入R1寄存器, 此时R1的内容变为11。
图5.4 MOV指令的执行周期
5.2.3 LAD指令的指令周期 LAD指令的指令格式中, 源操作数采用寄存器间接寻址, 目的操作数采用寄存器寻址。 LAD指令的指令周期由三个CPU周期组成, 其中取指周期占用一个CPU周期, 执行周期占用两个CPU周期。 在执行周期中, 送操作数地址、 访数据Cache取数并装入目的寄存器各占一个CPU周期。
1. 取指周期 LAD指令在取指周期内实现取指的操作过程与MOV指令完全相同, 只是PC提供的指令地址为21。 从21地址中读出LAD指令的指令代码, 通过指令总线IBUS装入指令寄存器 IR中,然后将PC的内容加1, 变为22, 形成取下一条指令的地址。 由于此节在介绍MOV、 LAD、 ADD、 INC、 DEC、 JNZ、 STO和JMP指令的指令周期时, 都基于图5.1所示的CPU结构, 因此在取指周期内实现取指的操作过程都完全相同, 只是PC的具体内容有所不同。 在下面其他指令的指令周期介绍中, 将不再重复介绍这些指令的取指周期。
2. 执行周期 LAD指令在执行周期内实现指令功能的操作过程如图5 2. 执行周期 LAD指令在执行周期内实现指令功能的操作过程如图5.5所示。 在CPU中操作控制器的控制下按顺序完成如下操作: ① 源寄存器的编码I11、 I10控制多路开关选中R1寄存器; ② R1寄存器的内容11经数据总线DBUS装入地址寄存器AR; ③ AR的内容被送往数据地址总线ABUS(D)上, 地址译码后选中数据Cache的11存储单元, 并启动读操作命令, 从11地址中读出数据1送往数据总线DBUS; ④ 目的寄存器的编码I9、 I8经过2∶4译码器译码后选中R3寄存器; ⑤ 将数据总线DBUS上的数据装入R3寄存器, 此时R3的内容变为1。
图5.5 LAD指令的执行周期
5.2.4 ADD指令的指令周期 ADD指令的指令格式中, 源操作数和目的操作数均采用寄存器寻址。 ADD指令的指令周期由两个CPU周期组成, 其中取指周期占用一个CPU周期, 执行周期占用一个CPU周期。 下面只介绍执行周期。 ADD指令在执行周期内实现指令功能的操作过程如图5.6所示。 此阶段, 在CPU中操作控制器的控制下按顺序完成如下操作:
① 源寄存器的编码I11、 I10控制多路开关选中R3寄存器, 并将R3寄存器的内容1送往ALU的X总线, 与此同时, 目的寄存器的编码I9、 I8控制多路开关选中R0寄存器, 并将R0寄存器的内容0送往ALU的Y总线; ② ALU进行加法运算; ③ 将ALU运算的结果1送往数据总线DBUS; ④ 目的寄存器的编码I9、 I8经过2∶4译码器译码后选中R0寄存器; ⑤ 将数据总线DBUS上的数据装入R0寄存器, 此时R0的内容由0变为1。
图5.6 ADD指令的执行周期
5.2.5 INC指令的指令周期 INC指令的指令格式中只有一个目的操作数, 目的操作数采用寄存器寻址。 INC指令的指令周期由两个CPU周期组成, 其中取指周期占用一个CPU周期, 执行周期占用一个CPU 周期。 下面只介绍执行周期。 INC指令在执行周期内实现指令功能的操作过程如图5.7所示。 此阶段, 在CPU中操作控制器的控制下按顺序完成如下操作:
① 目的寄存器的编码I9、 I8控制多路开关选中R1寄存器, 并将R1寄存器的内容11送往ALU的Y总线; ② ALU进行加1运算; ③ 将ALU运算的结果12送往数据总线DBUS; ④ 目的寄存器的编码I9、 I8经过2∶4译码器译码后选中R1寄存器; ⑤ 将数据总线DBUS上的数据装入R1寄存器, 此时R1的内容由11变为12。
图5.7 INC指令的执行周期
5.2.6 DEC指令的指令周期 DEC指令的指令格式中只有一个目的操作数, 目的操作数采用寄存器寻址。 DEC指令的指令周期由两个CPU周期组成, 其中取指周期占用一个CPU周期, 执行周期占用一个CPU周期。 下面只介绍执行周期。 DEC指令在执行周期内实现指令功能的操作过程如图5.8所示。 此阶段, 在CPU中操作控制器的控制下按顺序完成如下操作:
① 目的寄存器的编码I9、 I8控制多路开关选中R2寄存器, 并将R2寄存器的内容6送往ALU的Y总线; ② ALU进行减1运算; ③ 将ALU运算的结果5送往数据总线DBUS; ④ 目的寄存器的编码I9、 I8经过2∶4译码器译码后选中R2寄存器; ⑤ 将数据总线DBUS上的数据装入R2寄存器, 此时R2的内容由6变为5。
图5.8 DEC指令的执行周期
5.2.7 JNZ指令的指令周期 JNZ指令的指令格式中只有一个源操作数, 源操作数采用直接寻址。 JNZ指令的指令周期由两个或三个CPU周期组成, 其中取指周期占用一个CPU周期, 执行周期占用一个或两个CPU周期。 在执行周期中, 若操作控制器采用硬连线控制, 则只需要一个CPU周期; 若操作控制器采用微程序控制, 由于要同时考虑到状态条件的取值和分支地址的确定, 执行周期将占用一个或两个CPU周期。
JNZ指令在执行周期内实现指令功能的操作过程如图5 JNZ指令在执行周期内实现指令功能的操作过程如图5.9所示。 此阶段, 在CPU中操作控制器的控制下按顺序完成如下操作: ① 根据状态字寄存器PSW的内容, 测试状态条件ZF; ② 若ZF=1, 则不执行任何操作, 若ZF=0, 则将指令格式中的形式地址, 即转移地址21, 送往数据总线DBUS; ③ 将数据总线DBUS上的数据装入PC, 实现分支, 此时, PC的内容由26变为21。
图5.9 JNZ指令的执行周期
5.2.8 STO指令的指令周期 STO指令的指令格式中, 源操作数采用寄存器寻址, 目的操作数采用直接寻址。 STO指令的指令周期由三个CPU周期组成, 其中取指周期占用一个CPU周期, 执行周期占用两个CPU周期。 在执行周期中, 送操作数地址、 将源寄存器的内容存入数据Cache各占一个CPU周期。 STO指令在执行周期内实现指令功能的操作过程如图5.10所示。 此阶段, 在CPU中操作控制器的控制下按顺序完成如下操作:
① 将指令格式中的形式地址10送往数据总线DBUS; ② 将数据总线DBUS上的数据装入地址寄存器AR, 此时AR的内容由16变为10; ③ 源寄存器的编码I11、 I10控制多路开关选中R0寄存器; ④ 将R0寄存器的内容5B送往数据总线DBUS; ⑤ AR的内容被送往数据地址总线ABUS(D)上, 地址译码后选中数据Cache的10存储单元, 并启动写操作命令, 将数据总线DBUS上的数据5B写入10地址中, 此时, 数据Cache 的10存储单元的内容由0变为5B。
图5.10 STO指令的执行周期
5.2.9 JMP指令的指令周期 JMP指令的指令格式中只有一个源操作数, 源操作数采用直接寻址。 JMP指令的指令周期由两个CPU周期组成, 其中取指周期占用一个CPU周期, 执行周期占用一个CPU周期。 JMP指令在执行周期内实现指令功能的操作过程如图5.11所示。 此阶段, 在CPU中操作控制器的控制下按顺序完成如下操作: ① 将指令格式中的形式地址, 即转移地址50, 送往数据总线DBUS; ② 将数据总线DBUS上的数据装入PC, 实现分支, 此时, PC的内容由28变为50。
图5.11 JMP指令的执行周期
练习: 1、CPU组成中不包括: () A 指令寄存器 B 地址寄存器 C 指令译码器 D 地址译码器 2、程序计数器PC在 ()中 A 运算器 B 控制器 C 存储器 D I/O接口 3、计算机主频的周期是指() A 指令周期 B 时钟周期 C CPU周期 D 存取周期 4、目前的CPU包括______、_______和Cache。 5、在程序执行过程中,控制器控制计算机的运行总是处于____、分析指令和__________的循环之中。
5.2.10 用方框图语言表示指令周期 前面我们介绍了八条典型指令的指令周期, 目的是让读者直观地了解各类指令在计算机上的执行流程。 但在进行计算机设计时, 必须根据计算机的组成和结构, 用更简单快捷的方法来描述指令的解释过程, 再根据指令的解释过程来设计操作控制器。 在进行计算机设计时, 可以采用方框图语言来表示指令的指令周期。 一个方框代表一个CPU周期, 方框中的内容表示一个CPU周期内在数据通路上完成的某些传送操作或控制操作。
图5.12 用方框图语言表示各指令的指令周期
[例5.1] 图5.13所示为双总线结构机器的数据通路。 其中, IR为指令寄存器, PC为程序计数器(具有自增功能), M为主存(受 信号控制, 既存放指令又存放数据), AR为地址寄存器, DR为数据缓冲寄存器, ALU由加、 减控制信号决定完成何种操作, 控制信号G控制的是一个门电路, 它相当于两条总线之间的桥。 另外, 线上标注有小圈表示有控制信号, 例如yi表示y寄存器的输入控制信号, R1o为寄存器R1的输出控制信号。 未标字符的线为直通线, 不受控制。
另外, 当Ri有效时, 根据目的寄存器Rd的编码决定R0i、 R1i、 R2i、 R3i中哪一个控制信号有效; 当Ro有效时, 根据源寄存器Rs和目的寄存器Rd的编码决定R0o、 R1o、 R2o、R3o中哪一个控制信号有效。 (1) “ADD Rs, Rd”指令完成(Rd)+(Rs)→Rd的功能操作, 假设该指令的地址已放入PC中, 画出其指令周期流程图, 并列出相应的微操作控制信号序列。 (2) “SUB Rs, Rd”指令完成(Rd)-(Rs)→Rd的功能操作, 假设该指令的地址已放入PC中, 画出其指令周期流程图, 并列出相应的微操作控制信号序列。
图5.13 双总线结构机器的数据通路
图5.14 ADD和SUB指令周期流程图 (a) 加法; (b) 减法
[例5.2] 单总线结构机器的数据通路如图5.15所示。 其中, IR为指令寄存器, PC为程序计数器, MAR为主存地址寄存器, MDR为主存数据缓冲寄存器, R0~Rn-1为n个通用寄存器, Y为ALU的输入数据暂存寄存器, Z为ALU的结果暂存寄存器, SR为状态寄存器。 (1) “ADD Rd, Rs1, Rs2”指令的功能是将Rs1和Rs2中的数据相加, 结果送入Rd中, 画出其指令周期流程图。
图5.15 单总线结构机器的数据通路
图5.16 ADD和LOAD指令周期流程图 (a) 加法; (b) 读存储器
5.3 时序产生器和控制方式 5.3.1 时序信号的作用和体制 由上一节对指令周期和指令解释过程的学习可知, 一个指令周期中, 每个CPU周期都有一定的持续时间, 各个CPU周期之间有严格的次序。 每个CPU周期内的各个操作控制信号安排在哪个时钟脉冲周期, 也都有严格的时间顺序。 我们把各时钟脉冲周期信号、 各CPU周期信号之间产生的时间次序称为时序。 计算机之所以能够准确、 迅速、 有条不紊地工作, 正是因为在CPU中有一个时序产生器专门用来产生各种时序信号。 时序信号的作用是为各种操作控制信号提供时间标志, 即实施时间上的控制。
在计算机的内存里存放的既有指令又有数据, 并且指令和数据在存储器中都是以二进制编码的形式来表示的, 那么CPU访存取出一串代码, 是如何来区分这串代码是指令还是数据呢?由上一节对指令周期的学习我们可以知道, 从时间上来看, 取指令事件总是发生在指令周期的第一个CPU周期内, 即发生在取指周期, 而取数据事件则发生在取指周期之后的几个CPU周期内, 即发生在执行周期。 从空间上来看, 如果取出的代码是指令, 则一定送往指令寄存器, 如果取出的代码是数据, 则一定送往通用寄存器或地址寄存器。 由此可见, 时间控制对指令的解释过程是相当重要的。
组成计算机的器件特性决定了时序信号最基本的体制是电位-脉冲制。 例如, 在寄存器之间传送数据时, 数据先要加到寄存器的电位输入端, 再将打入数据的控制信号加在寄存器的时钟输入端。 前者称为电位, 后者称为脉冲。 用电位的高低表示信息的“1”或“0”, 用脉冲的有无表示控制信号是否出现。电位信号必须在脉冲到来之前先建立并且达到稳定状态, 才能保证数据正确打入寄存器。 当然, 计算机中有些部件, 如ALU、 三态门、 多路开关等只用电位信号控制就可以了。
5. 3. 2 多级时序系统 1. 节拍电位=基准时间=CPU访问一次存储器的时间=1个或多个节拍脉冲=1个CPU周期。 2 5.3.2 多级时序系统 1. 节拍电位=基准时间=CPU访问一次存储器的时间=1个或多个节拍脉冲=1个CPU周期。 2. 节拍脉冲=最基本的定时信号=1个时钟周期 3. CPU周期=一个节拍电位 4、指令周期=一个或多个CPU周期
图5.17 多级时序系统示意图
5.3.3 时序信号产生器 时序信号产生器用于产生多级时序系统中需要的时序信号。 各种计算机的时序信号产生器电路不尽相同。 一般来说, 大型计算机的时序电路比较复杂, 而微型机的时序电路比较简单, 这是因为前者涉及的操作动作较多, 而后者涉及的操作动作较少。 从设计操作控制器的方法来讲, 硬连线控制器的时序电路比较复杂, 而微程序控制器的时序电路比较简单。 然而不管是哪一类, 时序信号产生器最基本的构成和设计原理都是一样的。
图5.18 时序信号产生器的结构图(两种方案)
(a) 循环移位寄存器; (b) 计数器和译码器 】。/ 图5.19 节拍脉冲信号发生器的两种组成方式 (a) 循环移位寄存器; (b) 计数器和译码器
在图5.19(a)所示的循环移位寄存器中, 开始时由CLR将移位寄存器置为0001, 然后在时钟信号CLK的作用下按0001→0010→0100→1000→0001→0010→…的规律依次变化, 输出节拍脉冲信号T1、 T2、 T3、 T4。 在图5.19(b)所示的线路中, 开始时由CLR将两位计数器清为00, 然后在时钟信号CLK的作用下按00→01→10→11→00→01→…的规律进行模4计数, 经2∶4译码器译码后, 输出T1、 T2、 T3、 T4。
5.3.4 控制方式 控制器控制一条指令运行的过程是依次执行一个确定的操作序列的过程, 无论在微程序控制还是硬连线控制计算机中都是这样。 由于不同指令的功能不同, 指令周期中所包含的CPU周期个数也不相同。 不同的CPU周期完成不同的操作功能, 需要的操作控制信号及总的个数也不相同。 即使是在同一个CPU周期内, 操作控制信号出现的时间也不尽相同。 形成控制不同操作序列时序信号的方法, 称为控制器的控制方式, 常用的有同步控制方式、 异步控制方式、 联合控制方式和人工控制方式四种。
1. 同步控制方式 同步控制方式又称为固定时序方式。 其基本思想是, 选取部件中最长的操作时间作为统一的CPU周期时间, 使所有的部件都能在一个CPU周期内启动并完成操作, 同时, 以最复杂指令所需的CPU周期数为标准作为所有指令的解释时间。 即指令系统中所有指令的解释具有相同的CPU周期数和时钟周期数。
例如, 对于指令的执行周期来说, 如果各种指令在执行周期的操作序列事先能准确地知道, 则可将其中执行时间最长的指令作为标准, 确定执行周期所需的CPU周期数, 所有其他指令都按这个统一的时间间隔安排它们的操作。 又例如, 选取存储器的工作周期作为标准时间间隔, 即一个CPU周期, 这样, 不同指令的执行周期中每个CPU周期的时间长短也是完全相同的。 同步控制方式的优点是时序关系比较简单, 控制器设计方便; 缺点是对于那些功能比较简单的指令, 将造成时间浪费。
前面讲到一条机器指令由确定的CPU周期(例如LAD和STO指令为3个CPU周期, ADD、INC、 DEC和JMP指令为2个CPU周期)组成, 每个CPU周期又分成4个节拍脉冲, 在频率固定的外部时钟脉冲作用下形成上述CPU周期和节拍脉冲周期。 若采用同步控制方式, 则所有指令的指令周期均固定为3个CPU周期, 每个CPU周期为4个节拍脉冲周期。
2. 异步控制方式 异步控制方式又称为可变时序控制方式, 其基本思想是, 系统不设立统一的CPU周期数和时钟周期数, 各部件按本身的速度需要占用时间。 其特点是: 当控制器发出进行某一操作的控制信号后, 等待执行部件完成该操作后发回的“回答”信号或“结束”信号, 再开始新的操作。 用这种方式所形成的操作序列没有固定的周期节拍和严格的时钟同步。 异步控制方式的优点是每个部件都按各自实际需要的时间工作, 没有快者等待慢者的过程, 从而提高了系统的速度; 缺点是异步控制方式的时序控制比较复杂。
3. 联合控制方式 联合控制方式是同步控制方式和异步控制方式相结合的方式。 在指令执行的时序控制中, 对大多数需要CPU周期数相近的指令, 用相同的CPU周期数来完成, 即采用同步控制; 而对少数需要CPU周期数多的指令或一个CPU周期内节拍脉冲周期数不固定的指令, 给予必要的延长,即采用异步控制。 由于异步控制只针对少数指令, 是局部性的, 故联合控制方式又称为局部性异步控制方式。 实现局部性异步控制的方法有:
① 各条指令的CPU周期数固定, 但是一个CPU周期内的节拍脉冲周期数不固定。 对于需要延长CPU周期的操作, 可以插入一个或多个节拍脉冲周期, 并回送“回答”信号作为本次操作的结束。 ② 一个CPU周期内的节拍脉冲周期数固定, 但是各条指令的CPU周期数不固定。 例如下一节所讲的微程序控制就 属于这一类控制方式。 大多数的计算机都采用同步控制与异步控制相结合的联合控制方式。
4. 人工控制方式 为了调试计算机硬件和软件开发的需要, 通常在机器面板或内部设置一些开关或按键, 来达到人工控制的目的, 此方式称为人工控制方式。 最常见的有reset键(复位键)、 连续执行或单条指令执行转换开关、 符合停机开关等。 (1) reset键。 按下reset键, 使计算机处于初始状态。 当机器出现死锁状态或无法继续运行时, 可按此键。 若在机器正常运行时按此键, 将会破坏机器内某些状态而引起错误, 因此要慎用。 有些微机没有设置此键, 当机器死锁时, 往往采用先停电再加电的方法重新启动计算机。
(2) 连续执行或单条指令执行转换开关。 由于调试计算机硬件或程序的需要, 有时需要观察每执行完一条指令后机器的状态, 有时又需要观察连续运行程序的结果。 设置连续或单条指令执行转换开关, 能为用户提供两种不同的选择。 (3) 符合停机开关。 有些计算机还配有符合停机开关, 这组开关指示存储器的位置, 当程序运行到与开关指示的地址相符时, 机器便停止运行, 称为符合停机。
1、在一地址指令格式中,下面论述正确的是: A。只能有一个操作数,它由地址码提供 B。一定有两个操作数,另一个隐含的 C。可能有一个操作数,也可能有两个操作数 D。如果有两个操作数,另一操作数一定在堆栈中 2、程序控制类指令的功能是: A。进行算术运算和逻辑运算 B。进行主存与CPU之间的护具传送 C。进行CPU与I/O设备之间的数据传送 D。改变程序的执行顺序
3、CPU内通用寄存器的位数取决于: A 存储器容量 B 机器字长 C 指令字长 D CPU的管脚数 4、一个节拍脉冲持续的时间长短是: A 指令周期 B 机器周期 C 时钟周期 D 以上都不是 5、直接转移指令的功能是将指令中的地址代码送入: A 累加器 B 地址寄存器 C PC D 存储器 6、程序状态字寄存器PSW用来存放 A 算术运算结果 B 逻辑运算结果 C 运算类型 D 算术、逻辑运算及测试指令的结果状态 7、微程序存放在: A 指令寄存器 B RAM C 控制存储器 D 内存
8、某寄存器中的值有时是地址,这只有计算机的()才能识别 A 指令译码器 B 指令 C 判断程序 D 时序信号 9、计算机时序信号最基本的体制是__________。 10、一个指令周期等于_______个CPU周期。 11、概念区分:微程序、微指令、微命令、微操作、微地址、微地址寄存器、微命令寄存器、控制存储器、微指令周期。 12、执行一条微命令的花费的时间长短为_______。
5. 4 微程序控制器 微程序控制的概念, 是在1951年由英国剑桥大学的M. V 5.4 微程序控制器 微程序控制的概念, 是在1951年由英国剑桥大学的M.V.Wilkes教授首先提出来的。 其基本思想是, 把操作控制信号编成所谓的“微指令”, 存放到一个只读存储器里。 当机器运行时, 一条又一条地读出这些微指令, 从而产生全机所需要的各种操作控制信号, 控制相应的执行部件完成规定的操作。 微程序控制器同硬连线控制器相比较, 具有规整性、 灵活性、 可维护性等一系列优点,因而在计算机设计中得到了广泛的应用。
5.4.1 微指令和微程序 1. 微命令和微操作 一台数字计算机基本上可以划分为两大部分, 即控制部件和执行部件。 操作控制器属于控制部件, 而运算器、 各类寄存器、 存储器、 外围设备相对操作控制器来说, 属于执行部件。 控制部件与执行部件的联系有两种, 一种是通过控制线, 另外一种是通过状态线。 我们把控制部件通过控制线发往执行部件的各种控制命令, 称为微命令。 而执行部件在微命令的控制下所进行的操作, 称为微操作。
执行部件通过状态线向控制部件反馈执行部件的操作结果状态和工作状态, 以便控制部件能根据执行部件的状态产生新的微命令, 这个过程称为状态测试。 由微命令和微操作的定义可以看出, 微命令属于一个控制信号, 而微操作则是对应的一个动作。 下面在介绍微操作时, 为方便描述, 直接用控制信号来表示相应的微操作。 微操作在执行部件中是最基本的操作, 由于数据通路的结构关系, 微操作可分为相容性和相斥性两种。 所谓相容性的微操作, 是指同时或在同一个CPU周期内可以并行执行的微操作。 所谓相斥性的微操作, 是指不能同时或不能在同一个 CPU周期内并行执行的微操作。
图5.20示出了一个模型机的运算器数据通路。 图中, ALU为算术逻辑运算单元, S2、 S1、 S0为ALU的操作控制信号, 控制ALU最多可实现八种不同的运算或操作。 运算器采用三数据总线结构, 其中X总线和Y总线为输入总线, ALU的输出在控制信号ALU_B的控制下经三态门送往数据总线DBUS, X总线上的内容还可以通过总线旁路器(三态门)在控制信号Rs_B的控制下经三态门直接送往数据总线DBUS。 R0、 R1、 R2、 R3为四个通用寄存器, 既可作源寄存器 使用, 也可同时作为目的寄存器使用。
图5.20 模型机的运算器数据通路图
源寄存器在指令格式中源寄存器Rs编码I11、 I10的控 制下经四选一多路开关输出到ALU的X总线或再经三态门输出到DBUS, 目的寄存器在指令格式中目的寄存器Rd编 码I9、 I8的控制下经四选一多路开关输出到ALU的Y总线。 控制信号LDRi用来控制将数据总线DBUS上的数据打入通用寄存器, 具体打入到哪一个通用寄存器, 由指令格式中目的寄 存器Rd编码I9、 I8决定。 在进行算术或逻辑运算时, 若需要锁存运算的结果状态, 则在控制信号LDPSW的控制下, 将ALU的结果状态锁存到状态字寄存器中。
由于控制信号S2、 S1、 S0的组合决定了ALU完成的具体操作, 虽然在一个CPU周期内只能进行一种功能的操作, 即S2、 S1、 S0只能有一种组合, 但S2、 S1、 S0的取值不受限制, 如没有限定S2、 S1、 S0中只能有一个为0或只能有一个为1, 因此S2、 S1、 S0是相容性的微操作。 ALU的结果在控制信号ALU_B的控制下输出到DBUS后, 再在控制信号LDRi的控制下打入到通用寄存器, 虽说这两个微操作不能同时完成, 但从运算器数据通路图来看, 在一个CPU周期内, 可在不同的节拍脉冲周期内完成, 因此ALU_B、 LDRi是相容性微操作。
由于在同一个CPU周期内, 不能同时将不同的数据送往数据总线DBUS, 因此ALU_B和Rs_B是互斥性微操作。 2 由于在同一个CPU周期内, 不能同时将不同的数据送往数据总线DBUS, 因此ALU_B和Rs_B是互斥性微操作。 2. 微指令和微程序 在机器的一个CPU周期内, 一组实现一定操作功能的微命令的组合, 构成一条微指令。 也就是说, 在一个CPU周期内完成的操作功能由一条微指令来实现。 图5.21给出了一个具体的微指令格式。 微指令字长为24位, 它由操作控制字段和顺序控制字段两大部分组成。 顺序控制字段又由P字段和直接微地址两部分组成。
图5.21 微指令基本格式
操作控制字段用来发出管理和指挥全机工作的控制信号, 为了形象直观, 在图5 操作控制字段用来发出管理和指挥全机工作的控制信号, 为了形象直观, 在图5.21所示的微指令基本格式中, 该字段为16位, 每一位表示一个微命令, 每个微命令的符号同图 5.1所示的CPU结构中的控制信号相对应, 具体功能示于微指令格式的上部。 微指令格式中给出的微命令都是节拍电位信号, 它们的持续时间都是一个 CPU周期。 微命令符号中加有 “′”的微命令表示该控制信号的输出需与节拍脉冲经过“与门”或“与非门”后, 才能作为真正的节拍脉冲控制信号来控制时序逻辑部件。
例如通用寄存器的时钟控制信号LDRi必须等到数据总线DBUS上的数据稳定后, 才能出现上边沿, 将指令格式中的立即数、 数据Cache的输出数据、 通用寄存器的输出或ALU的输出打入到某一通用寄存器, 其时间关系如图5.22所示。 微命令符号中没有加“′”的微命令表示该控制信号的输出直接作为真正的控制信号, 来控制组合逻辑部件。
图5.22 通用寄存器时钟控制信号的产生时序
操作控制字段中用来控制时序逻辑电路的微命令中, LDPC′、 LDAR′、 LDIR′、 LDR′i、LDPSW′为高电平有效。 用来控制存储器读/写的微命令中, 片选信号CS_I′、 CS_D′为低电平有效。 微命令中读/写信号RD_D′、RD_I′为高电平时表示读, 低电平时表示写。 其他微命令均为节拍电位信号, 这些微命令到底是高电平有效, 还是低电平有效, 或者是某种组合, 则根据具体部件内部的设计来确定。 为了教学的目的, 我们假定程序计数器PC的功能如表5.3所示, ALU的功能如表5.4所示, 节拍电位信号ALU_B、 Rs_B、 ADDR_B均为低电平有效。
在5.2节中, 利用图5.1解释一条STO指令需要3个CPU周期, 这就意味着用微指令来解释这条机器指令时, 共需要3条微指令。 这3条微指令按照一定的次序执行, 就可以解释 按照STO指令格式编写的具体指令的功能。 对于如“STO R1, 10”、 “STO R0, 20”、 “STO R2, 30”等指令, 其解释过程和所需的控制信号完全相同。
由此我们可以看到一条机器指令的功能是由若干条微指令组成的序列来实现的, 这个微指令序列通常叫微程序。 实现一条机器指令功能的微指令序列中, 各微指令的执行有严格的先后次序。 当执行当前一条微指令时, 必须给出后继微指令的微地址, 以便当前微指令执行完毕后, 取出下一条微指令。 确定后继微指令微地址的方法主要有计数器方式和多路转移方式两种, 具体将在5.5节中作详细介绍。
图5.21所举的微指令格式为全水平型微指令, 后继微地址的形成方法采用多路转移方式, 后继微地址由微指令格式中的顺序控制字段, 即P字段和直接微地址来决定。其中6位直接微地址用来直接给出下一条微指令的微地址。 P字段中的P1和P2为判别测试标志: 当P1、 P2均为“0”时, 表示不进行测试操作, 直接微地址字段给出的地址就是下一条微指令的微地址; 当P1或P2为“1”时, 表示要进行P1或 P2的判别测试, 根据测试结果, 需要对直接微地址的某一位或几位进行修改, 然后再按修改后的微地址取下一条微指令。
5. 4. 2 微程序控制器的组成和工作原理 1. 微程序控制器的组成 微程序控制器的组成框图如图5 5.4.2 微程序控制器的组成和工作原理 1. 微程序控制器的组成 微程序控制器的组成框图如图5.23所示, 它主要由控制存储器、 微指令寄存器和地址转移逻辑三大部分组成, 其中微指令寄存器分为微地址寄存器和微命令寄存器两部分。 控制存储器简称控存, 用来存放实现全部指令系统的所有微程序, 它是一种只读型存储器。 一旦微程序固化, 机器运行时则只能读不能写。 控制存储器的字长就是微指令字的长度,其存储容量视机器指令系统而定, 即取决于微程序的数量。 对控制存储器的要求是速度快,读出周期要短。
微指令寄存器用来存放由控制存储器读出的一条微指令信息, 其中, 微地址寄存器决定将要访问的下一条微指令的微地址, 而微命令寄存器则保存一条微指令的操作控制字段和判别测试字段的信息。 当P字段的取值不全为0, 即需要进行判别或测试时, 地址转移逻辑电路根据指令的操作码OP、 寻址方式X、 执行部件的“状态条件”反馈信息, 去强制修改微地址寄存器的内容, 并按修改好的微地址去读取下一条微指令, 从而实现微程序的分支。
图5.23 微程序控制器的组成框图
2. CPU周期与微指令周期的关系 在串行方式的微程序控制器中, 读出一条微指令并执行完该条微指令所花的时间称为一个微指令周期。 通常, 在串行方式的微程序控制器中, 微指令周期就是控制存储器的工作周期。 为了保证整个机器控制信号的同步, 可以将一个微指令周期时间设计得恰好和一个CPU周期时间相等, 如图5.24所示。 在图5.24中, 一个CPU周期包含T1、 T2、 T3、 T4共四个节拍脉冲周期, 在T4内形成微指令的微地址并读取微指令, 并在T1的上边沿将微指令打入微指令寄存器, 在T1、 T2、 T3内执行该条微指令, 并可利用T4的上边沿将结果打入通用寄存器或状态字寄存器中。
图5.24 CPU周期与微指令周期的关系
3. 微程序控制器的工作原理 (1)计算机开机时, 通过硬件, 一方面设置程序计数器PC的初值, 另一方面设置微地址寄存器的初值。 PC的初值为系统初始化程序中第一条指令在ROM BIOS中的地址, 微地址寄存器的初值为取指微指令在控制存储器中的微地址。 (2)微地址寄存器的内容经地址译码后选中控制存储器的某一存储单元,从控制存储器中读出取指微指令。 取指微指令的操作控制字段和P字段被送往微命令寄存器, 在接下来的一个CPU周期内根据操作控制字段输出的微命令信号, 控制执行部件完成取指操作。
图5.25 微程序控制器的工作原理
取指过程为PC的内容经地址译码后选中指令Cache、二级Cache或主存储器中的某一存储单元, 并将从内存中取出的指令代码送往指令寄存器IR, 同时PC加1, 形成下一条指令在内存中的地址。 (3)取指微指令的直接微地址字段被送往微地址寄存器, 由于微指令完成的是取指操作,不同的指令要实现不同的功能, 需用不同的微程序来解释, 因此在进行取指微指令设计时, P字段中包含有对指令操作码测试的编码。 在执行该条微指令的最后一个T周期到来时, 根据P字段和指令的操作码经地址转移逻辑电路强制修改微地址寄存器的内容, 从而实现微程序的分支。 不同的指令操作码将形成不同的分支微地址。
(4)接着又按修改后的微地址从控制存储器中读取下一条微指令, 又执行这一条微指令。 当读出的微指令中P字段的取值不全为0时, 地址转移逻辑电路根据指令的寻址方式、 执行部件的“状态条件”反馈信息, 强制修改微地址寄存器的内容, 并按修改好的微地址从控制存储器中读下一条微指令。 当读出的微指令中P字段的取值为全0, 即不需要进行任何判别或测试时, 直接根据微地址寄存器的内容, 即当前微指令的直接微地址去读下一条微指令。 当实现一条机器指令功能的微程序执行完毕后, 又返回取指微指令, 如此反复。
由微程序的工作原理, 我们可以发现机器指令与微指令之间存在如下关系: (1) 一条机器指令的功能由若干条微指令组成的序列来实现。 (2) 机器指令存放在内存储器中, 微指令固化在控制存储器中。 (3) 每一个CPU周期对应一条微指令。
5.4.3 微程序设计举例 一条机器指令是由若干条微指令组成的序列来实现的, 即由一段微程序来解释一条机器指令。 要解释指令系统中所有的机器指令, 就必须根据CPU结构图设计微指令格式, 再根据机器指令解释的微程序流程图和微指令格式设计每一条微指令。 下面我们仍然以图5.1所示的CPU结构图和图5.21所示的微指令格式来举例说明条件转移指令“JNZ addr”的微程 序设计过程。
“JNZ addr”指令完成的功能是: 若条件标志ZF=0, 则实现程序分支, 即将转移地址addr送往程序计数器PC。 该指令在图5 “JNZ addr”指令完成的功能是: 若条件标志ZF=0, 则实现程序分支, 即将转移地址addr送往程序计数器PC。 该指令在图5.1中的解释过程已在5.2.7节中作了详细的介绍。 微程序的设计过程如下: (1) 根据CPU结构图, 设计微指令格式。 根据图5.1所示的CPU结构图, 设计的微指令格式如图5.21所示。 各控制信号的含义及有效电平的定义描述如5.4.1节所述, 设P1为指令操作码测试, P2为零标志ZF测试。
(2) 根据CPU结构图、 JNZ指令的指令格式和功能, 画出机器指令解释的微程序流程图,并确定每条微指令在控制存储器中的微地址以及直接微地址。 微程序流程图与用方框图语言表示的该指令的指令周期是一致的, 都是一个方框表示一个CPU周期。 “JNZ addr”指令的微程序流程图如图5.26所示, 这与图5.12中“JNZ addr” 指令的指令周期流程图基本上是一致的, 只是指令操作码的测试写成了P1测试, 零标志ZF的测试写成了P2测试。
图5.26 JNZ指令的微程序流程图
在设计微地址时, 我们事先假设JNZ指令的操作码编码为0111。 由于在计算机开机时由硬件设置微地址寄存器的初值, 即取指微指令的微地址, 因此在设计取指微指令的微地 址时, 考虑到为方便硬件实现, 该微地址一般设置为全0, 这里设计为000000。 取指微指令中直接微地址的确定与操作码的位数有关, 若操作码为4位二进制, 则取指微指令中直接微地址至少有4位必须为0, 以便于在P1测试, 即指令操作码测试时, 根据指令的操作码修改微地址寄存器的内容, 形成分支微地址。
这里我们假定根据指令的操作码修改的是微地址寄存器中的低4位, 并且取指微指令的直接微地址为000000, 那么在P1测试后, JNZ指令在执行周期中第一条微指令微地址的设置为000111。 同样的道理, 我们可以设计出其他微指令在控制存储器中的微地址和微指令的直接微地址。 设计微地址时要注意, 第一条微指令的微地址和微程序中最后一条微指令的直接微地址相同, 一般设计为全0。 菱形框前面一条微指令的直接微地址和菱形框后面一条微指令的微地址不能随便确定, 它与测试的操作码位数、 测试的状态条件位数、 测试的寻址方式位数以及它们将修改哪一位或哪几位微地址有关。 其他微指令微地址的设置只要不和上述微地址重复即可。
(3) 根据微指令格式和微程序流程图中每个方框完成的功能, 设计各条微指令。 在机器指令解释的微程序流程图描述中, 一个方框表示一个CPU周期, 一个CPU周期对应一条微指令。 只要清楚了每个方框完成的功能, 以及微指令格式中各个控制信号的含义和高低电平的定义, 就可以顺利地编写出每个框对应的微指令。 由图5.26可知, JNZ指令的解释需要三个CPU周期, 因此对JNZ指令的解释需要三条微指令, 由这三条微指令组成了对JNZ指令解释的一段微程序。
第一条微指令为取指微指令, 按微程序流程图确定的微地址, 该微指令存放在控制存储器的000000微地址, 该条微指令的二进制编码如下: 第一条微指令为取指微指令, 按微程序流程图确定的微地址, 该微指令存放在控制存储器的000000微地址, 该条微指令的二进制编码如下: 该条微指令完成的功能是根据程序计数器PC的值, 访问指令Cache, 从相应存储单元取出一条指令并送往指令寄存器IR, 同时PC加1。 要实现上述功能, 在微指令的操作控制 字段中, 对应的有效微命令依次为:
CS_I′为“0”、 RD_I′为“1”, 完成读指令Cache功能;LDIR′为“1”, 完成将指令总线IBUS上的指令代码打入指令寄存器IR的功能; LOAD为“1”、 LDPC′为“1”, 完成PC加1功能; 其他微命令信号均无效, 即高电平有效的微命令编码为“0”,低电平有效的微命令编码为“1”。 由于ALU的输出控制信号ALU_B无效, S2、 S1、 S0的编码任意, 这里编码为000, 下面两条微指令中S2、 S1、 S0的编码与之相同。 在微程序设计时, 微程序流程图的判别测试框(菱形框)完成的功能与它所在的前一个方框放在同一个CPU周期内执行, 即判别测试操作与它所在的前一个方框完成的操作设计在同一条微指令内。
根据微程序流程图, 由于要进行P1测试, 因此该条微指令的P字段中P1的编码为“1”, P2的编码为“0”。 微指令的直接微地址字段指明了下一条微指令的微地址是000000。 但是, 由于要进行P1测试, 因此000000并不是下一条微指令真正的微地址。 P1测试的是指令寄存器IR中的操作码字段, 即根据操作码字段来形成下一条微指令的微地址。 我们假定在地址转移逻辑电路设计时, P1测试的结果是用指令的操作码来强制修改微地址寄存器的低4位, 于是在形成下一条微指令的微地址时, 微地址寄存器的内容被修改为000111。
按微程序流程图确定的微地址, 第二条微指令存放在控制存储器的000111微地址, 该条微指令的二进制编码如下: 按微程序流程图确定的微地址, 第二条微指令存放在控制存储器的000111微地址, 该条微指令的二进制编码如下: 该微指令不实现任何功能, 因此该微指令中所有的微命令信号均无效, 即高电平有效的微命令编码为“0”, 低电平有效的微命令编码为“1”。 根据微程序流程图, 由于要进行P2测试, 因此该条微指令的P字段中P1的编码为“0”, P2的编码为“1”, 微指令的直接微地址字段指明了下一条微指令的微地址是000000。
但是,由于要进行P2测试, 因此000000并不是下一条微指令真正的微地址。 P2测试的是状态字寄存器PSW中的ZF标志位, 即根据ZF标志位来形成下一条微指令的微地址。 我们假定在地址转移逻辑电路设计时, P2测试的结果是用ZF来强制修改微地址寄存器的第4位μA4(6位微地址为μA5~μA0), 于是在形成下一条微指令的微地址时, 有两个不同分支微地址。 若ZF的值为“1”, 则机器语言程序不实现转移, 微地址寄存器的内容保持不变; 若ZF的值为“0”, 则机器语言程序实现转移, 微地址寄存器的内容被修改为010000。
按微程序流程图确定的微地址, 第三条微指令存放在控制存储器的010000微地址, 该条微指令的二进制编码如下: 按微程序流程图确定的微地址, 第三条微指令存放在控制存储器的010000微地址, 该条微指令的二进制编码如下: 该条微指令完成的功能是将指令寄存器IR中的形式地址部分, 即转移地址打入程序计数器PC, 从而实现程序分支。 要实现上述功能, 在微指令的操作控制字段中, 对应的有效微命令依次为:
ADDR_B为“0”, 完成将指令寄存器IR中的形式地址部分送往数据总线DBUS;LOAD为“0”, LDPC′为“1”, 完成将数据总线DBUS上的内容打入程序计数器PC的功能; 其他微命令信号均无效, 即高电平有效的微命令编码为“0”, 低电平有效的微命令编码为“1”。 根据微程序流程图, 由于不需要进行P1或P2测试, 因此该条微指令的P字段中P1和P2的编码均为“0”, 微指令的直接微地址字段指明了下一条微指令的微地址是000000。 由于 该条微指令不需要进行任何判别或测试, 因此000000就是下一条微指令真正的微地址。
5.7 流 水 线 技 术 5.7.1 并行性的基本概念 1. 并行性的定义 所谓并行性, 是指在数值计算、 数据处理、 信息处理或是人工智能求解过程中可能存在某些可同时进行运算或操作的特性。 开发并行性的目的是为了能进行并行处理, 以提高计算机系统求解问题的效率。 例如单体多字存储器, 每次访存时能同时读出多个字, 以加快CPU的访存操作。 再如超标量流水线, 它通过在CPU中重复设置多条流水线, 由多个相同的流水线子部件来同时完成对多条指令的解释。 这些都是靠器件简单的重复来实现的。
5.7.2 并行处理技术 计算机的并行处理技术可贯穿于信息加工的各个步骤和阶段, 概括起来, 主要有三种形式: 时间并行、 空间并行、 时间并行+空间并行。 1. 时间并行 时间并行又称时间重叠, 是指在并行性概念中引入时间因素, 让多个处理过程在时间上相互错开, 轮流重叠地使用同一套硬件设备的各个部分, 以加快硬件周转而赢得速度。
2. 空间并行 空间并行又称资源重复, 是指在并行性概念中引入空间因素, 通过重复设置硬件资源来提高可靠性或性能。 随着硬件价格的降低, 这种方式在单处理机中被广泛使用, 如多模块交叉存取存储器、 超标量流水线等, 而单片多核处理器、 多处理机系统和多计算机系统本身就是资源重复的结果。 再例如热备用系统、 容错系统等, 它们根据不同性能和成本的要求, 利用资源重复的方式组织冗余部件, 来提高系统的可靠性。
3. 时间并行+空间并行 指时间重叠和资源重复的综合应用, 既采用时间并行性又采用空间并行性。 例如,Pentium 4采用了超标量流水技术, 流水线的级数可达到20级以上, 在一个处理器时钟周 期内可同时发射3条指令, 因而既具有时间并行性, 又具有空间并行性。 并行处理技术是当前设计高性能计算机的重要技术途径, 而且都同时采用了时间并行与空间并行。
5.7.3 流水线的工作原理、 特点及分类 1. 流水线的工作原理 假设计算机解释一条机器指令的过程可分解成取指令(IF)、 指令译码(ID)、 计算有效地址或执行(EX)、 访存(MEM)、 结果写回寄存器堆(WB)等五个子过程, 如图5.34所示。 每个子过程由独立的子部件来实现, 每个子部件也称为一个功能段。 如若没有特殊说明, 我们都假设各功能段经过的时间均为一个时钟周期。
IF指的是按程序计数器PC的内容访存,取出一条指令送到指令寄存器, 并修改PC的值以提前形成下一条指令的地址; ID指的是对指令的操作码进行译码, 并从寄存器堆中取操作数; EX指的是按寻址方式和地址字段形成操作数的有效地址, 若为非访存指令, 则执行指令功能; MEM指的是根据EX子过程形成的有效地址访存取数或存数; WB指的是将运算的结果写回到寄存器堆。 图5.34 一条机器指令的解释过程
指令的解释方式可以有顺序解释方式和流水解释方式两种。 指令的顺序解释方式是指各条机器指令之间顺序串行地执行, 执行完一条指令后才取出下一条指令来执行, 而且每条机器指令内部的各条微指令也是顺序串行地执行。 指令顺序解释的时空图如图5.35所示, 图中的横坐标表示指令解释经过的时间, 纵坐标表示指令解释经过的各功能段。 时空图描述的是某条指令在某个时钟周期内使用某一个功能段。 由图5.35可以看出, 由于各条指令之间顺序串行地执行, 因此, 每隔5个时钟周期才解释完一条指令。
图5.35 指令顺序解释的时空图
图5.36 指令流水解释的时空图
2. 流水线的特点 流水线技术一般有如下特点: (1) 一条流水线通常由多个流水段组成。 各个流水段分别承担不同的工作, 也可以把这些流水段看做功能部件。 如在图5.34中, 流水线由五个功能段组成, 依次是取指令(IF)、 指令译码(ID)、 计算有效地址或执行(EX)、 访存(MEM)、 结果写回寄存器堆(WB)。 在实际机器中, 一条流水线的功能部件完成的任务及采用的设计思想不同, 其数目也各不相同。
(2) 每个流水段有专门的功能部件对指令进行某种加工。 例如, Pentium的U、 V流水线分为5段, 分别为“指令预取(PF)”、 “指令译码(D1)”、 “指令译码(D2)”、 “取存储器数据或执行(EX)”和“结果写回(WB)”。 在PF段完成从指令Cache取指令工作。 在D1段完成所有的操作码和寻址方式的译码工作, 同时还要完成指令配对检查和转移指令预测功能。在D2段计算并产生存储器操作数的地址。 在EX段完成算术或逻辑运算功能, 需要的话还可能访问数据Cache。 在WB段以计算的结果修改目标寄存器或标志寄存器。
(3) 各流水段所需的时间是一样的。 若流水线的各流水段经过的时间相同, 则可以简化流水线的控制线路设计, 提高流水线的性能。 (4) 流水线工作阶段可分为建立、 满载和排空三个阶段。 从第一条指令进入流水线到流水线中所有的功能部件都处于工作状态的这个时期, 称为流水线的建立阶段。 当所有的功 能部件都处于工作状态时, 称为流水线的满载阶段。 从最后一条指令流入流水线到结果流出,称为流水线的排空阶段。
习题: P272 T2、5、6、7
练习: 1、存储容量单位有B、KB、GB、TB、PB和EB等。其中1T=() A. 2^30 B. 2^40 C. 2^50 D 练习: 1、存储容量单位有B、KB、GB、TB、PB和EB等。其中1T=() A. 2^30 B. 2^40 C. 2^50 D. 2^60 2、计算机的时钟频率fc=100MHz,1个节拍电位=4个节拍脉冲。某指令取指周期为1个CPU周期,执行周期为3个CPU周,则该指令的指令周期为:__________秒。 3、SRAM利用________电路来保存信息,只要不断电,信息就不会丢失;DRAM______来保存信息,但是容易漏电,因此需要定期_______才能稳定的保存数据。 4、写出SRAM读、写时序信号序列:___________。
5、地址总线为16位,数据总线也为16位,则1个字=_____字节。CPU能够访问的地址空间大小为______字。1个SRAM芯片容量为8K 5、地址总线为16位,数据总线也为16位,则1个字=_____字节。CPU能够访问的地址空间大小为______字。1个SRAM芯片容量为8K*8位,则构成一个32KB的存储器,需要_____片SRAM,这些SRAM按_____方式进行扩展。 6、分析这段程序的语义: mov R3, #0 jnz label mov R2, #100 store R3, sum mov R1, #1 lable: add R1, R3 inc R1 dec R2