当前位置: 华文世界 > 教育

计算机组成原理——第9章-控制单元的功能

2024-02-14教育

9.1 微操作命令的分析

9.1.1 取指周期

取指令的过程可归纳为以下几个操作:

  1. 现行指令地址送至存储器地址寄存器
  2. 向主存发送读命令
  3. 将MAR(通过地址总线)所指的主存单元中的内容(指令)经数据总线读至MDR内
  4. 将MDR的内容送至IR
  5. 指令的操作码送至CU译码
  6. 形成下一条指令的地址

9.1.2 间址周期

间址周期完成取操作数有效地址的任务。

  1. 将指令的地址码部分(形式地址)送至存储器地址寄存器
  2. 向主存发送读命令,启动主存作读操作
  3. 将MAR(通过地址总线)所指的主存单元中的内容(有效地址)经数据总线读至MDR内
  4. 将有效地址送至指令寄存器的 地址字段

9.1.3 执行周期

非访存指令

这类指令在执行周期不访问存储器。

例:清空ACC

  1. 清除累加器指令CLA
  2. 累加器取反指令COM
  3. 算术右移一位指令SHR
  4. 循环左移一位指令CSL
  5. 停机指令STP:运行标志触发器G,当G=1时,表示机器运行;当G=0时,表示停机。STP指令在执行阶段只需将运行标志触发器置「0」

访存指令

这类指令在执行阶段都需要访问存储器。

1. 加法指令ADD X

该指令在执行阶段需要完成累加器内容与对应与主存X地址单元的内容相加,结果送累加器的操作。

  1. 将指令的 地址码 部分送至MAR
  2. 向主存发读命令,启动主存作读操作
  3. 将MAR(通过地址总线)所指的主存单元中的内容(操作数)经数据总线读至MDR内
  4. 给ALU发送加命令,将ACC的内容和MDR的内容相加,结果存于ACC

2. 存数指令STA X

该指令在执行阶段需将累加器ACC的内容存于主存的X地址单元中。

  1. 将指令的地址码部分送至MAR
  2. 向主存发写命令,启动主存作写操作
  3. 将累加器内容送至MDR
  4. 将MDR的内容(通过数据总线)写入到MAR(通过地址总线)所指的主存单元中

3. 取数指令LDA X

该指令在执行阶段需将主存X地址单元的内容存至累加器ACC中。

  1. 将指令的 地址码 部分送至MAR
  2. 向主存发读命令,启动主存作读操作
  3. 将MAR的内容(通过地址总线)所指的主存单元中的内容经数据总线读至MDR内
  4. 将MDR的内容送至ACC

转移类指令

1. 无条件转移指令JMP X

该指令在执行阶段完成将指令的地址码部分X送至PC的操作

2. 条件转移指令BAN X

该指令根据上一条指令运行的结果决定下一条指令的地址,若结果为负(累加器最高位为1),则指令的地址码送至PC,否则程序按原顺序执行。

9.1.4 中断周期

在执行周期结束时刻,CPU要查询是否有请求中断的时事件发生,如果有则进入中断周期。假设程序断点存至主存的0地址单元,且采用 硬件向量法 寻找入口地址,则在中断周期需完成如下操作。

  1. 将特定地址「0」送至存储器地址寄存器
  2. 向主存发写命令,启动存储器作写操作
  3. 将PC的内容(程序断点)送至MDR
  4. 将MDR的内容(程序断点)通过数据总线写入到MAR(通过地址总线)所指示的主存单元(0地址单元)中
  5. 将向量地址形成部件的输出送至PC,为下一条指令的取指周期做准备。
  6. 关中断,将允许中断触发器清零(该操作可直接由硬件线路完成)。

如果程序断点存入堆栈,而且进栈操作是先修改指针,后存储数据。

9.2 控制单元的功能

9.2.1 控制单元的外特性

输入信号

1. 时钟

  • 完成每个操作都需占用一定的时间
  • 各个操作是有先后顺序的
  • 为了控制单元按一定的 先后顺序 、一定的节奏发出各个控制信号,控制单元必须受时钟控制,即每一个时钟脉冲使控制单元发送一个操作命令,或发送一组需要同时执行的操作命令。

    2. 指令寄存器

    现行指令的操作码决定了不同指令在执行周期所需完成的不同操作,故指令的操作码字段是控制单元的输入信号,它与时钟配合可产生不同的控制信号。

    3. 标志

    控制单元有时需依赖CPU当前所处的状态(如ALU操作的结果)产生控制信号,因此「标志」也是控制单元的输入信号。

    4. 来自系统总线(控制总线)的控制信号

    例如中断请求、DMA请求。

    输出信号

    1. CPU内的控制信号

    主要用于CPU内的寄存器之间的传送和控制ALU实现不同的操作。

    2. 送至系统总线的信号

    例如,命令主存或I/O读/写、中断响应等。

    9.2.2 控制信号举例

    不采用CPU内部总线的方式

    1. 取指周期

    1. 控制信号C0有效,打开PC送往MAR的控制门
    2. 控制信号C1有效,打开MAR送往地址总线的输出门
    3. 通过控制总线向主存发送 命令
    4. C2有效,打开数据总线送至MDR的输入门
    5. C3有效,打开MDR和 IR 之间的控制门,至此指令送至 IR
    6. C4有效,打开指令操作码送至CU的输出门。CU在操作码和时钟的控制下,可产生各种控制信号
    7. PC内容+1

    2. 间址周期

    1. C5有效,打开MDR和MAR之间的控制门,将指令的形式地址送至MAR
    2. C1有效,打开MAR送往地址总线的输出门
    3. 通过控制总线向主存放出读命令
    4. C2有效,打开数据总线送至MDR的输入门,至此,有效地址存入MDR
    5. C3有效,打开MDR和IR之间的控制门,将有效地址送至IR的地址码字段

    3.执行周期

    1. C5有效,打开MDR和MAR之间的控制门,将有效地址送至MAR
    2. C1有效,打开MAR送往地址总线的输出门
    3. 通过地址总线向主存发出读命令
    4. C2有效,打开数据总线送至MDR的输入门,至此,操作数存入MDR
    5. C6、C7同时有效,打开AC和MDR通往ALU的控制门
    6. 通过CPU内部控制总线对ALU发出「ADD」加控制信号,完成AC的内容和MDR的内容相加
    7. C8有效,打开ALU通往AC的控制门,至此将求和结果存入AC

    采用CPU内部总线的方式

    1. 取指周期

    1. PCo和MARi有效,完成PC经内部总线送至MAR的操作,即PC—>MAR
    2. 通过控制总线向主存发读命令,即1—>R
    3. 存储器通过数据总线将MAR所指单元的内容(指令)送至MDR
    4. MDRo和IRi有效,将MDR的内容送至IR,即MDR—>IR,至此,指令送至IR,其操作码字段开始控制CU
    5. PC的内容+1

    2. 间址周期

    1. MDRo和MARi有效,将指令的形式地址经内部总线送至MAR,即MDR—>MAR
    2. 通过控制总线向主存发读命令,即1—>R
    3. 存储器通过数据总线将MAR所指单元的内容(有效地址)送至MDR
    4. MDRo和IRi有效,将MDR的有效地址送至IR的地址码字段,即MDR—>Ad(IR)

    3. 执行周期

    1. MDRo和MARi有效,将有效地址经内部总线送至MAR,即MDR—>MAR
    2. 通过控制总线向主存发读命令,即1—>R
    3. 存储器通过数据总线将MAR所指单元的内容(操作数)送至MDR
    4. MDRo和Yi有效,将操作数送至Y,即MDR—>Y
    5. ACo和ALUi有效,同时CU向ALU发「ADD」加控制信号,使AC的内容和Y的内容相加(Y的内容送至ALU不必通过总线),结果送寄存器Z,即(AC)+(Y)—>Z
    6. Zo和ACi有效,将运算结果存入AC,即Z—>AC

    9.2.3 多级时序系统

    机器周期

    机器周期可看作是所有指令的执行过程中的一个基准时间,机器周期取决于 指令的功能 及器 件的速度。

    确定机器周期时,通常要分析机器指令的执行步骤及每一步骤所需的时间。通常以访问一次存储器的时间定为基准时间较为合理,这个基准时间就是机器周期。由于不论执行什么指令,都需要访问存储器取出指令, 因此在存储字长等于指令字长的前提下,取指周期也可看作机器周期。

    时钟周期

    在一个机器周期里可完成若干个微操作,每个微操作都需要一定的时间,可用时钟信号来控制产生每一个微操作命令。

    时钟信号可由机器主振电路发出的脉冲信号经整形后产生,时钟信号的频率即为CPU主频。用时钟信号控制节拍发生器,就可产生节拍。每个节拍的宽度正好对应一个时钟周期。在每个 节拍 内机器可完成一个或几个需同时执行的操作, 它是控制计算机操作的最小时间单位。

    多级时序系统

    一个 指令周期 包含若干个 机器周期 , 一个机器周期又包含若干个 时钟周期 ,每个指令周期内的机器周期数可以不等,每个机器周期内的节拍数也可以不等。 机器周期 节拍 组成了 多级时序系统

    一般来说,CPU的主频越快,机器的运行速度也越快 。在机器周期所含时钟周期数相同的前提下,两机平均指令执行速度之比等于两机主频之比。

    实际上机器的速度不仅与主频有关,还与机器周期中所含的时钟周期数以及指令周期中所含的机器周期数有关。同样主频的机器,由于机器周期所含时钟周期数不同,运行速度也不同。 机器周期所含时钟周期数少的机器,速度更快。

    9.2.4 控制方式

    控制单元控制一条指令执行的过程实质上是一次执行一个确定的微操作序列的过程。

    通常将如何形成控制不同微操作序列所采用的时序控制方式称为CU的控制方式。常见的控制方式有 同步控制、异步控制、联合控制、人工控制

    同步控制方式

    任何一条指令或指令中任何一个微操作的执行都是事先确定的,并且都是受 统一基准时标的时序信号 所控制的方式。

    1. 采用定长的机器周期

    不论指令所对应的微操作序列有多长,也不管微操作的简繁,一律以最长的微操作序列和最繁的微操作作为标准,采取完全统一的、具有相同时间间隔和相同数目的节拍作为机器周期来运行各种不同的指令

    2. 采用不定长的机器周期

    每个机器周期内的节拍数可以不等。通常把大多数微操作安排在一个较短的机器周期内完成,而对某些复杂的微操作,采用延长机器周期或增加节拍的方法来解决。

    3. 采用中央控制和局部控制结合的方法

    这种方案将机器的大部分指令安排在统一的、较短的机器周期内完成,称为 中央控制 ,而将少数操作复杂的指令中的某些操作采用局部控制方式来完成。

    在设计局部控制线路时需要注意两点:

    1. 使局部控制的每一个节拍T*的宽度与中央控制的节拍宽度相同
    2. 将局部控制节拍作为中央控制中机器节拍的延续,插入到中央控制的执行周期内,使机器以同样的节奏工作,保证了局部控制和中央控制的同步。

    异步控制方式

    异步控制方式不存在基准时标信号,没有固定的周期节拍和严格的时钟同步,采用应答方式,执行每条指令和每个操作需要多少时间就占用多少时间。结构比同步控制方式复杂。

    联合控制方式

    同步控制和异步控制相结合就是联合控制方式 。这种方式对各种不同指令的微操作实行 大部分统一、小部分区别对待 的办法。

    例如:

    对取指、取数等指令可以用同步控制

    对I/O设备采用异步控制

    人工控制方式

    人工控制是为了调机和软件开发的需要,在机器面板或内部设置一些开关或按键,来达到人工控制的目的。