3.数据通路
文章目录
如何设置部件之间的连接路径?
数据通路的基本结构:
- CPU内部单总线方式。
- CPU内部多总线方式。
- 专用数据通路方式。
3.1单总线结构
- 寄存器与寄存器之间数据传输
一个out,一个in。
out:(PC)→Bus
in:Bus→MAR
或者简写:
(PC)→Bus→MAR
- 主存与CPU之间数据传输
(PC)→Bus→MAR
1→R
MEM(MAR)→MDR
MDR→Bus→IR
- 执行算数/逻辑运算
Ad(IR)→Bus→MAR
1→R
MEM(MAR)→MDR
MDR→Bus→Y
(ACC)+(Y)→Z
Z→ACC
例题:
ADD (R0), R1
(R0)是间接寻址,R1是直接寻址
##最靠前的是核心操作
#1. 取指周期:公共操作
(PC)→MAR
1→R #CU控制内存。R:读指令,W:写指令
M(MAR)→MDR #从内存memory取指令
(PC)+1→PC #执行完指令PC就自动加1
(MDR)→IR #指令放入指令寄存器IR,instruction register
OP(IR)→ID #指令译码。指令译码器ID,instruction decoder
#2. 间址周期:取R0
(R0)→MAR
M(MAR)→MDR
(MDR)→Y
3. 执行周期
(R1)+(Y)→Z
(Z)→MDR
(MDR)→M(MAR) #因为这里的MAR地址还是R0的地址
3.2专用数据通路
取指周期
(PC)→MAR
(MAR)→MEM
1→R
M(MAR)→MDR
(MDR)→IR
(PC)+1→PC
OP(IR)→ID(译码)
例题:
5.3.2_数据通路-专用通路结构_哔哩哔哩_bilibili
(2)
(PC)→MAR
M(MAR)→MDR
(MDR)→IR
答案没写后面两个
(PC)+1→PC
OP(IR)→微操作信号发生器
(3)
(4)简述完成指令 LDA X 的数据通路(X为主存地址,LDA的功能为(X)→ACC)。
X→MAR
M(MAR)→MDR
(MDR)→ALU→ACC
(5)简述完成指令 ADD Y 的数据通路(Y为主存地址,ADD的功能为(ACC)+(Y)→ACC)。
Y→MAR
M(MAR)→MDR
(ACC)→ALU, (MDR)→ALU
ALU→ACC
(6)简述完成指令 STA Z 的数据通路(Z为主存地址,STA的功能为(ACC)→Z)。
Z→MAR
(ACC)→MDR
MDR→M(MAR)
4.控制器
控制器如何指挥整个系统的工作?
控制器的设计
- 硬布线控制器
- 微程序控制器
- 毫微程序控制器(套娃)
- 微程序设计用微程序解释机器指令,毫微程序设计用毫微程序解释微程序。
4.1硬布线控制器
纯用硬件实现的。
微操作控制信号由组合逻辑电路根据指令操作码、目前的机器周期、节拍信号、机器状态条件,即可确定现在这个节拍下应该发出哪些“微命令”。而且是即时产生。
4.1.1基本结构
标志触发器FE(取指周期)、IND(间址周期)、EX(执行周期)、INT(终端周期)。
取指周期:
T0: (PC)→MDR: C1 = DE · T0
T1: M(MAR)→MDR C2 = FE·T1 + IND·T1(ADD+STA+LDA+JMP+BAN) + EX·T1(ADD+LDA)
FE·T1表示FE(取指令)阶段的T1时钟周期;
IND·T1(ADD+STA+LDA+JMP+BAN)表示IND阶段的T1时钟周期在ADD等操作下进行;
EX·T1(ADD+LDA)表示在EX阶段的T1时钟周期在ADD等操作下进行。
4.1.2设计步骤
-
分析每个阶段的微操作序列(取值、间址、执行、中断四个阶段)
- 确定哪些指令在什么阶段、在什么条件下会使用到的微操作?
-
选择CPU的控制方式
-
采用定长机器周期还是不定长机器周期?每个机器周期安排几个节拍?
假设采用同步控制方式(定长机器周期),一个机器周期内安排3个节拍(T0, T1, T2)。
-
-
安排微操作时序
- 如何用3个节拍完成整个机器周期内的所有微操作?
-
电路设计
确定每个微操作命令的逻辑表达式,并具体用电路实现。
- 列出操作时间表
- 列出在取指、间址、执行、中断周期,TO、T1、T2节拍内有可能用到的所有微操作。
- 写出微操作命令的最简表达式
- 画出逻辑图
- 列出操作时间表
微操作总结
1)分析每个阶段的微操作序列
- 取指周期:所有指令都相同
(PC)→MAR
1→R #CU控制内存。R:读指令,W:写指令
M(MAR)→MDR #从内存memory取指令
(PC)+1→PC #执行完指令PC就自动加1
(MDR)→IR #指令放入指令寄存器IR,instruction register
OP(IR)→ID #指令译码。指令译码器ID,instruction decoder
- 间址周期:所有指令都类似
Ad(IR)→MAR
1→R
M(MAR)→MDR #此时找到的地址是EA有效地址
(MDR)→Ad(IR) #把原先的间接地址A换成新的EA
- 执行周期:各不相同
2)安排微操作时序的原则
原则1:微操作的先后顺序不得随意更改。
原则2:被控对象不同的微操作,尽量安排在一个节拍内完成。因为被控对象(→右面的那个)不同,那么同时进行就不会相互影响。
原则3:占用时间较短的微操作尽量安排在一个节拍内完成,并允许有先后顺序。
下面每一行就是一个微操作,每一个T执行一个微指令。
- 取指周期:所有指令都相同
(PC)→MAR
1→R #存储器空闲即可
M(MAR)→MDR #因为前面有MAR,所以在(1)之后
(PC)+1→PC #在(1)之后
(MDR)→IR #在(3)之后
OP(IR)→ID #在(4)之后
所以:
T0:1,2
T1:3,4
T2:5,6(因为虽然5,6有前后关系,但是执行时间都很短,根据原则3,把它们放到一个节拍)
【说明】M(MAR)→MDR从主存取数据,用时较长,因此必须一个时钟周期才能保证微操作的完成。
MDR→IR是CPU内部寄存器的数据传送,速度很快,因此在一个时钟周期内可以紧接着完成OP(IR)→ID,也就是可以一次同时发出两个微命令。
- 间址周期:所有指令都类似
Ad(IR)→MAR
1→R #存储器空闲即可
M(MAR)→MDR #在(1)之后
(MDR)→Ad(IR)#在(3)之后
T0:1,2
T1:3
T2:4
- 执行周期:各不相同
3)电路设计
设计步骤:
- 列出操作时间表
- 列出在取指、间址、执行、中断周期,TO、T1、T2节拍内有可能用到的所有微操作。
- 写出微操作命令的最简表达式
- 画出逻辑图
【备注】操作时间表巨长,很麻烦。
4.1.3特点
- 指令越多,设计和实现就越复杂,因此一般用于RISC(精简指令集系统)。
- 如果扩充一条新的指令,则控制器的设计就需要大改,因此扩充指令较困难。
- 由于使用纯硬件实现控制,因此执行速度很快。微操作控制信号由组合逻辑电路即时产生。
4.2微程序控制器
硬件+软件实现
采用“存储程序”的思想,CPU出厂前将所有指令的“微程序”存入“控制器存储器”中。
- 分类:
- 静态微程序设计:微程序无需改变,采用 ROM。
- 动态微程序设计:通过改变微指令和微程序改变机器指令。有利于仿真,采用EPROM。
程序:由指令序列组成。
微程序:由微指令序列组成。
指令:是对程序执行步骤的描述,每一种指令对应一个微程序。
比如 LDA X,这样一条指令对应的取指、间址、执行、中断全部看作一个微程序。
微指令:是对指令执行步骤的描述。
微命令与微操作一一对应。
微指令中可能包含多个微命令。
微指令包含关系
- 指令(4个微程序段部分构成一完整的微程序)
- 微程序(段)(取指周期微程序、间址周期微程序…)
- 微指令(一个节拍(T)内多行或一行微操作)
- 微命令 = 微操作(一行微操作)
- 微指令(一个节拍(T)内多行或一行微操作)
- 微程序(段)(取指周期微程序、间址周期微程序…)
4.2.1基本结构
控制存储器CM(Memory Controller):
取指周期通常是公用的,故如果某指令系统中有n条机器指令(执行周期),则CM中微程序(段)的个数至少是n+1个。(因为 n条机器指令 是描述执行周期的微程序(段),所以还要加上一个取指周期微程序(段))
- 为什么是+1(只加取指周期,没有间址周期…)?
因为一些早期的CPU、物联网设备的CPU可以不提供间接寻址和中断功能,因此这类CPU可以不包含间址周期、中断周期的微程序段。
4.2.2微指令格式
相容性微命令:可以并行完成的微命令。
互斥性微命令:不允许并行完成的微命令。
4.2.3微指令编码方式
微指令的编码方式又称为微指令的控制方式,它是指如何对微指令的控制字段进行编码,以形成控制信号。编码的目标是在保证速度的情况下,尽量缩短微指令字长。
- 直接编码(直接控制)方式
- 字段直接编码方式
- 字段间接编码方式(隐式编码)
优点:可以缩短微指令字长。
缺点:要通过译码电路后再发出微命令,因此比直接编码方式慢。
例题:
4.2.4微指令的地址形成方式
就是下一条指令地址的形成
-
微指令的下地址字段:指出微指令格式中设置一个下地址字段,由微指令的下地址字段直接指出后继微指令的地址,这种方式又称为==断定方式(断定法)==。
-
根据机器指令的操作码,形成当机器指令取至指令寄存器后,微指令的地址由操作码经微地址形成部件形成。
-
增量计数器法:(CMAR)+1→CMAR
类似(PC)+1→PC
-
分支转移。
操作控制字段 转移方式 转移地址 转移方式:指明判别条件;
转移地址:指明转移成功后的去向。 -
通过测试网络(顺序逻辑)
-
由硬件产生微程序入口地址
第一条微指令地址,由专门硬件产生(用专门的硬件记录取指周期微程序首地址)。
中断周期:由硬件产生中断周期微程序首地址(用专门的硬件记录)。
例题:
4.2.5设计微程序控制单元
设计步骤:
- 分析每个阶段的微操作序列
- 写出对应机器指令的微操作命令及节拍安排
- 确定微指令格式
- 根据微操作个数决定采用何种编码方式,以确定微指令的操作控制字段的位数。
- 根据CM中存储的微指令总数,确定微指令的顺序控制字段的位数。
- 最后按操作控制字段位数和顺序控制字段位数就可确定微指令字长。
- 编写微指令码点
- 根据操作控制字段每一位代表的微操作命令,编写每一条微指令的码点。
与前面硬布线控器类似,也需要微指令(节拍)安排,唯一不同的是最后一个微操作。
微指令a,T0: (PC)→MAR
微指令a,T0: 1→R
微指令b,T1: M(MAR)→MDR
微指令b,T1: (PC)+1→PC
微指令c,T2: (MDR)→IR
微指令c,T2: OP(IR)→为地址形成部件(硬布线:OP(IR)→ID)
取指周期的第一条微指令a地址由硬件自动给出,后面的指令由前面指令的下地址指出。
所以要加上下地址的一个微操作:
AD(CMDR)→CMAR
就变成了:
微指令a,T0: (PC)→MAR
微指令a,T0: 1→R
T1:Ad(CMDR)→CMAR
微指令b,T2: M(MAR)→MDR
微指令b,T2: (PC)+1→PC
T3:Ad(CMDR)→CMAR
微指令c,T4: (MDR)→IR
微指令c,T4: OP(IR)→为地址形成部件(硬布线:OP(IR)→ID)
T5:微地址形成部件→CMAR
取指周期的最后一条微指令完成后,要根据指令操作码确定其执行周期的微程序首地址。
4.3硬布线vs微程序比较
硬布线控制器 | 微程序控制器 | |
---|---|---|
工作原理 | 微操作控制信号由组合逻辑电路根据当前的指令码、状态和时序,即时产生。 | 微操作控制信号以微程序的形式存放在控制存储器中,执行指令时读出即可。 |
执行速度 | 快 | 慢 |
规整性 | 繁琐、不规整 | 较规整 |
应用场合 | RISC CPU(精简指令集计算机) | CISC CPU(复杂指令集计算机) |
易扩充性 | 困难 | 易扩充修改 |