目录
上篇:第八章、CPU 的结构与功能
下篇:第十章、控制单元的设计
第九章 控制单元的功能
9.1 微操作命令的分析
控制单元具有发出各种微操作(即控制信号)序列的功能。概括的说,计算机的功能就是执行程序,在执行程序的过程中,控制单元要发出各种微操作命令,而且不同的指令应对不同的命令。
下面按照指令周期的四个阶段进一步分析其对应的微操作命令。
9.1.1 取指周期
假设 CPU
内有四个寄存器,MAR
与地址总线相连,存放欲访问的存储单元地址;MDR
与数据总线相连,存放欲写入存储器的信息或最近从存储器中读出的信息;PC
存放现行指令的地址,有计数功能;IR
存放现行指令。
取指令的过程可归纳为以下几个操作:
- ① 现行指令地址送至存储器地址寄存器,记作 P C ⟶ M A R PC \longrightarrow MAR PC⟶MAR
- ② 向主存发读命令,启动主存作读操作,记作 I ⟶ R I \longrightarrow R I⟶R
- ③ 将 MAR(通过地址总线)所指的主存单元中的内容(指令)经数据总线读至 MDR 内,记作 M ( M A R ) ⟶ M D R M(MAR) \longrightarrow MDR M(MAR)⟶MDR
- ④ 将 MDR 的内容送至 IR,记作 M D R ⟶ I R MDR \longrightarrow IR MDR⟶IR
- ⑤ 形成下一条指令的地址,记作 ( P C ) + 1 ⟶ P C (PC) + 1 \longrightarrow PC (PC)+1⟶PC
9.1.2 间址周期
间址周期完成取操作数有效地址的任务,具体操作如下:
- ① 将指令的地址码部分(形式地址)送至存储器地址寄存器,记作 A d ( I R ) ⟶ M A R Ad(IR) \longrightarrow MAR Ad(IR)⟶MAR
- ② 向主存发读命令,启动主存作读操作,记作 I ⟶ R I \longrightarrow R I⟶R
- ③ 将 MAR(通过地址总线)所指的主存单元中的内容(有效地址)经数据总线读至 MDR 内,记作 M ( M A R ) ⟶ M D R M(MAR) \longrightarrow MDR M(MAR)⟶MDR
- ④ 将有效地址送至指令寄存器的地址字段,记作 M D R ⟶ A d ( I R ) MDR \longrightarrow Ad(IR) MDR⟶Ad(IR),此操作有些机器可省略
9.1.3 执行周期
不同指令执行周期的微操作是不同的,主要分为:非访存指令、访存指令和转移指令。
-
非访存指令:这类指令在执行周期不访问存储器
- ① 清除累加器指令 CLA,记作 0 → A C C 0 → ACC 0→ACC
- ② 累加器取反指令 COM,记作 A C C ‾ → A C C \overline{ACC} → ACC ACC→ACC
- ③ 算术右移一位指令 SHR,记作 L ( A C C ) → R ( A C C ) , A C C 0 → A C C 0 L(ACC) → R(ACC),ACC_{0} → ACC_{0} L(ACC)→R(ACC),ACC0→ACC0 (ACC 的符号位不变)
- ④ 循环左移一位指令 CSL,记作 R ( A C C ) → L ( A C C ) , A C C 0 → A C C n R(ACC) → L(ACC),ACC_{0} → ACC_{n} R(ACC)→L(ACC),ACC0→ACCn (或 p-1(ACC))
- ⑤ 停机指令 STP,记作 0 → G 0 → G 0→G
-
访存指令:这类指令在执行阶段都需访问存储器
- 加法指令 ADD X:该指令在执行阶段需完成累加器内容与对应于主存 X 地址单元的内容柏加,结果送累加器的操作
- ① 将指令的地址码部分送至存储器地址寄存器,记作 A d ( I R ) → M A R Ad(IR) → MAR Ad(IR)→MAR
- ② 向主存发读命令,启动主存作读操作,记作 I → R I → R I→R
- ③ 将 MAR(通过地址总线)所指的主存单元中的内容(操作数)经数据总线读至 MDR 内,记作 M ( M A R ) → M D R M(MAR)→MDR M(MAR)→MDR
- ④ 给 ALU 发加命令,将 ACC 的内容和 MDR 的内容相加,结果存于 ACC,记作 ( A C C ) + ( M D R ) → A C C (ACC)+(MDR)→ACC (ACC)+(MDR)→ACC
- 存数指令 STA X:该指令在执行阶段需将累加器 ACC 的内容存于主存的 X 地址单元中
- ① 将指令的地址码部分送至存储器地址寄存器,记作 A d ( I R ) → M A R Ad(IR)→MAR Ad(IR)→MAR
- ② 向主存发写命令,启动主存作写操作,记作 I → W I→W I→W
- ③ 将累加器内容送至 MDR,记作 A C C → M D R ACC→MDR ACC→MDR
- ④ 将 MDR 的内容(通过数据总线〉写入到 MAR(通过地址总线)所指的主存单元中,记作 M D R → M ( M A R ) MDR→M(MAR) MDR→M(MAR)
- 取数指令LDA X:该指令在执行阶段需将主存 X 地址单元的内容取至累加器 ACC 中
- ① 将指令的地址码部分送至存储器地址寄存器,记作 A d ( I R ) → M A R Ad(IR)→MAR Ad(IR)→MAR
- ②向主存发读命令,启动主存作读操作,记作 I → R I→R I→R
- ③将 MAR(通过地址总线)所指的主存单元中的内容(操作数)经数据总线读至 MDR 内,记作 M ( M A R ) → M D R M(MAR)→MDR M(MAR)→MDR
- ④将 MDR 的内容送至 ACC,记作 M D R → A C C MDR→ACC MDR→ACC
- 加法指令 ADD X:该指令在执行阶段需完成累加器内容与对应于主存 X 地址单元的内容柏加,结果送累加器的操作
-
转移类指令:这类指令在执行阶段也不会访问存储器
- 无条件转移指令 JMP X:该指令在执行阶段完成将指令的地址码部分 X 送至 PC 的操作,记作 A d ( I R ) → P C Ad(IR)→PC Ad(IR)→PC
- 条件转移(负则转)指令 BAN X:该指令根据上一条指令运行的结果决定下一条指令的地址,若结果为负,则指令的地址码送至 PC,否则程序按原顺序执行,记作 A 0 ⋅ A d ( I R ) + A 0 ‾ ( P C ) → P C A_{0} \cdot Ad(IR) + \overline{A_{0}}(PC)→PC A0⋅Ad(IR)+A0(PC)→PC
9.1.4 中断周期
在执行周期结束时刻,CPU
要查询是否有允许中断的中断事件发生,如果有则进入中断周期。
- ① 将特定地址
0
送至存储器地址寄存器,记作 0 → M A R 0→MAR 0→MAR - ② 向主存发写命令,启动存储器作写操作,记作 I → W I→W I→W
- ③ 将 PC 的内容〈程序断点)送至 MDR,记作 P C → M D R PC→MDR PC→MDR
- ④ 将 MDR 的内容〈程序断点)通过数据总线写入到 MAR(通过地址总线)所指示的主存单元(0地址单元)中,记作 M D R → M ( M A R ) MDR→M(MAR) MDR→M(MAR)
- ⑤ 向量地址形成部件的输出送至 PC,记作 向量地址 → P C →PC →PC,为下一条指令周期作准备;
- ⑥关中断,将允许中断触发器清 0,记作 0 → E I N T 0→EINT 0→EINT
如果程序断点存入堆栈,只须将上述 ① 改为堆栈指针 S P → M A R SP→MAR SP→MAR。
9.2 控制单元的功能
9.2.1 控制单元的外特性
-
输入信号
- ① 时钟:为了使控制单元按一定的先后顺序、按一定的节奏发出各个控制信号,CU 必须受时钟控制,即每一个时钟脉冲使控制单元发一个操作命令,或发一组需同时执行的操作命令
- ② 指令寄存器:现行指令的操作码决定了不同指令在执行周期所需完成的不同操作,故指令的操作码字段是 CU 的输入信号,它与时钟配合可产生不同的控制信号
- ③ 标志:控制单元有时需依赖 CPU 当前所处的状态产生控制信号
- ④ 来自控制总线的控制信号:如中断请求、DMA 请求
-
输出信号
- ① CPU 内的控制信号,主要用于 CPU 内的寄存器之间的传送和控制 ALU 实现不同的操作
- ② 送至控制总线的信号,如命令主存或
I/O
读/写,中断响应等
9.2.2 控制信号举例
1. 不采用 CPU 内部总线的方式
2. 采用 CPU 内部总线的方式
9.2.3 多级时序系统
1. 机器周期
机器周期可看作是所有指令执行过程中的一个基准时间
,机器周期取决于指令的功能及器件的速度。确定机器周期时,通常要分析机器指令的执行步骤及 每一步骤
所需的时间。
基准时间的确定要 以完成最复杂指令功能的时间为准
,以访问一次存储器的时间为基准
,若指令字长等于存储字长,取指周期等于机器周期。
2. 时钟周期(节拍、状态)
在一个机器周期里可完成若干个微操作,每个微操作都需一定的时间,可用时钟信号来控制产生每一个微操作命令。这样,一个机器周期内就包含了若干个 时钟周期
,又称节拍或状态
。
每个节拍的宽度正好对应一个时钟周期。在每个节拍内机器可完成一个或几个需同时执行的操作。
3. 多级时序系统
机器周期、节拍(状态)组成多级时序系统
一个指令周期包含若干个机器周期,一个机器周期又包含若干个时钟周期(节拍)
4. 机器速度与机器主频的关系
机器的主频 f f f 越快,机器的速度越快
在机器周期所含时钟周期数相同的前提下,两机平均指令执行速度之比等于两机主频之比
M I P S 1 M I P S 2 = f 1 f 2 \frac{MIPS_{1}}{MIPS_{2}}=\frac{f_{1}}{f_{2}} MIPS2MIPS1=f2f1
机器速度不仅与主频有关,还与机器周期中所含时钟周期(主频的倒数)数以及指令周期中所含的机器周期数有关
9.2.4 控制方式
控制单元控制一条指令执行的过程,实质上是依次执行一个确定的微操作序列的过程。由于不同指令所对应的微操作数及其复杂程度不同,因此每条指令和每个微操作所需的执行时间也不同。通常将如何形成控制不同微操作序列所采用的时序控制方式称作 CU
的控制方式。常见的控制方式有同步控制、异步控制、联合控制和人工控制四种。
1. 同步控制方式
任何一条指令或指令中的任何一个微操作的执行,都由事先确定且有统–基准时标的时序信号所控制的方式,叫做 同步控制方式
。
同步控制中的三种方案:
- ① 采用完全统一的机器周期和节拍
这种方案的特点是:不论指令所对应的微操作序列有多长,也不管微操作的简繁,一律以最长的微操作序列和最繁的徼操作作为标准,采取完全统一的、具有相同时间间隔和相同数目的节拍作为机器周期来运行各种不同的指令。
显然,这种方案对于微操作序列较短的指令来说,会造成时间上的浪费。
- ② 采用不同节拍的机器周期
这种方案每个机器周期内的节拍数可以不等,如图
这种控制方式可解决微操作执行时间不统一的问题。通常把大多数微操作安排在一个较短的机器周期内完成,而对某些复杂的微操作,采用延长机器周期或增加节拍的办法来解决,如图所示
- ③ 采用中央控制和局部控制相结合的方法
这种方案将机器的大部分指令安排在统一的、较短的机器周期内完成,称为中央控制,而将少数操作复杂的指令中的某些操作采用周部控制方式来完成,如乘除法和浮点运算等。
2. 异步控制方式
异步控制方式不存在基准时标信号,没有固定的周期节拍和严格的时钟同步,执行每条指令和每个操作需要多少时间就占用多少时间,采用应答方式。
3. 联合控制方式
同步控制和异步控制相结合就是联合控制方式。这种方式对各种不同指令的微操作实现大部分统一、小部分区别对待的办法。例如,对每条指令都有的取指令操作,采用同步方式控制,对那些时间难以确定的微操作则用异步控制。
4. 人工控制方式
人工控制是为了调机和软件开发的需要,在机器面板或内部设置–些开关或按键,来达到人工控制的目的。
- ① Reset(复位)键
- ② 连续或单条执行转换开关
- ③ 符合停机开关
上篇:第八章、CPU 的结构与功能
下篇:第十章、控制单元的设计