计算机组成原理 第九章(控制单元的设计)—第一节(组合逻辑设计)

本文围绕《计算机组成原理》讲解了控制单元的组合逻辑设计,涉及操作码译码、控制信号生成、微操作节拍安排以及组合逻辑设计步骤,以微操作M(MAR)→MDR为例,详细阐述了指令处理过程中的关键环节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 写在前面:

  1. 本系列笔记主要以《计算机组成原理(唐朔飞)》为参考,大部分内容出于此书,笔者的工作主要是挑其重点展示,另外配合下方视频链接的教程展开思路,在笔记中一些比较难懂的地方加以自己的一点点理解(重点基本都会有标注,没有任何标注的难懂文字应该是笔者因为强迫症而加进来的,可选择性地忽略)。
  2. 视频链接:计算机组成原理(哈工大刘宏伟)135讲(全)高清_哔哩哔哩_bilibili

一、组合逻辑控制单元框图

        下图示出了控制单元的外特性,其中指令的操作码是决定控制单元发出不同控制信号的关键。为了简化控制单元的逻辑,将存放在IR的n位操作码经过一个译码电路产生2^{n}个输出这样,每对应一种操作码便有一个输出送至CU。当然,若指令的操作码长度可变,指令译码线路将更复杂。

        控制单元的时钟输入实际上是一个脉冲序列,其频率即为机器的主频,它使CU能按一定的节拍(T)发出各种控制信号节拍的宽度应满足数据信息通过数据总线从源到目的所需的时间。以时钟为计数脉冲,通过一个计数器(又称节拍发生器),便可产生一个与时钟周期等宽的节拍序列。如果将指令译码和节拍发生器从CU中分离出来,便可得简化的控制单元框图。

二、微操作的节拍安排

1、安排原则

        假设机器采用同步控制,每个机器周期包含3个节拍,而且CPU内部结构如下图所示,其中MAR和MDR分别直接和地址总线和数据总线相连,并假设IR的地址码部分与MAR之间有通路。

        安排微操作节拍时应注意以下3点:

        ①有些微操作的次序是不容改变的,故安排微操作节拍时必须注意微操作的先后顺序。

        ②凡是被控制对象不同的微操作,若能在一个节拍内执行,应尽可能安排在同一个节拍内以节省时间

        ③如果有些微操作所占的时间不长,应该将它们安排在一个节拍内完成,并且允许这些微操作有先后次序

        下面根据上一章介绍的10条指令为例进行节拍安排。

2、取指周期微操作的节拍安排

(1)根据原则②,T_{0}节拍可安排两个微操作:PC→MAR,1→R。

(2)根据原则②,T_{1}节拍可安排两个微操作:M(MAR)→MDR,(PC)+1→PC。

(3)T_{2}节拍可安排MDR→IR,考虑到指令译码时间较短,根据原则③,可将指令译码OP(IR)-ID也安排在T_{2}节拍内。

(4)实际上(PC)+1→PC操作也可安排在T_{2}节拍内,因为一旦PC→MAR后,PC的内容就可修改。

①M(MAR)→MDR:从主存取数据,用时较长,必须保证用一个时钟周期完成。

②MDR→IR:CPU内部寄存器间的数据传送,速度很快,用一个时钟周期完成它绰绰有余,可以紧接着安排另一条微命令。

3、间址周期微操作的节拍安排

(1)T_{0}节拍可安排两个微操作:Ad(IR)→MAR,1→R。

(2)T_{1}节拍可安排M(MAR)→MDR。

(3)T_{2}节拍可安排MDR→Ad(IR)。

4、执行周期微操作的节拍安排

(1)非访存指令:

①清除累加器指令CLA:

T_{0} (空)

T_{1} (空)

T_{2}  0\rightarrow AC

②累加器取反指令COM:

T_{0} (空)

T_{1} (空)

T_{2}  \overline{AC}\rightarrow AC

③算数右移一位指令SHR:

T_{0} (空)

T_{1} (空)

T_{2}  L\left ( AC \right )\rightarrow R(AC)AC_{0}\rightarrow AC_{0}

④循环左移一位指令SCL:

T_{0} (空)

T_{1} (空)

T_{2}  R\left ( AC \right )\rightarrow L(AC)AC_{0}\rightarrow AC_{n}

⑤停机指令STP:

T_{0} (空)

T_{1} (空)

T_{2}  0\rightarrow G

(2)访存指令:

①加法指令ADD X:

T_{0}  Ad(IR)→MAR,1→R

T_{1}  M(MAR)→MDR

T_{2}  (AC)+(MDR)→AC(该操作实际包括(AC)→ALU,(MDR)→ALU,ALU→AC)

②存数指令STA X:

T_{0}  Ad(IR)→MAR,1→W

T_{1}  AC→MDR

T_{2}  MDR→M(MAR)

③取数指令LDA X:

T_{0}  Ad(IR)→MAR,1→R

T_{1}  M(MAR)→MDR

T_{2}  MDR→AC

(3)转移类指令:

①无条件转移指令JMP X:

T_{0} (空)

T_{1} (空)

T_{2}   Ad(IR)→PC

②有条件转移(负则转)指令BAN X:

T_{0} (空)

T_{1} (空)

T_{2}   A_{0}\cdot Ad\left ( IR \right )+\overline{A_{0}}\cdot PC\rightarrow PC

5、中断周期微操作的节拍安排

        在执行周期的最后时刻,CPU要向所有中断源发中断查询信号,若检测到某个中断源有请求,并且未被屏蔽又被排队选中,则在允许中断的条件下,CPU进人中断周期,此时CPU由中断隐指令完成下列操作(假设程序断点存入主存0号地址单元内):

T_{0}  0→MAR,1→W

T_{1}  PC→MAR

T_{2}  MDR→M(MAR),向量地址→PC

        关中断,将允许中断触发器清零,记作0→EINT(该操作可直接由硬件线路完成)

三、组合逻辑设计步骤

1、列出微操作命令的操作时间表

2、写出微操作命令的最简逻辑表达式

        以M(MAR)→MDR微操作命令为例,可写出其逻辑表达式:

3、画出微操作命令的逻辑图

        以M(MAR)→MDR微操作命令为例,可画出其逻辑图:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zevalin爱灰灰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值