【计算机组成原理】五、中央处理器:2.数据通路、控制器(单总线结构、专用数据通路、硬布线控制器、微程序控制器)

3.数据通路


如何设置部件之间的连接路径?

数据通路的基本结构:

  1. CPU内部单总线方式。
  2. CPU内部多总线方式。
  3. 专用数据通路方式。

3.1单总线结构

  1. 寄存器寄存器之间数据传输

一个out,一个in。

out:(PC)→Bus
in:Bus→MAR

或者简写:

(PC)→Bus→MAR

在这里插入图片描述

  1. 主存CPU之间数据传输

(PC)→Bus→MAR

1→R

MEM(MAR)→MDR

MDR→Bus→IR

在这里插入图片描述

  1. 执行算数/逻辑运算

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设计步骤
  1. 分析每个阶段的微操作序列(取值、间址、执行、中断四个阶段)

    • 确定哪些指令在什么阶段、在什么条件下会使用到的微操作?
  2. 选择CPU的控制方式

    • 采用定长机器周期还是不定长机器周期?每个机器周期安排几个节拍?

      假设采用同步控制方式(定长机器周期),一个机器周期内安排3个节拍(T0, T1, T2)

  3. 安排微操作时序

    • 如何用3个节拍完成整个机器周期内的所有微操作?
  4. 电路设计

    确定每个微操作命令的逻辑表达式,并具体用电路实现。

    1. 列出操作时间表
      • 列出在取指、间址、执行、中断周期,TO、T1、T2节拍内有可能用到的所有微操作。
    2. 写出微操作命令的最简表达式
    3. 画出逻辑图
微操作总结
1)分析每个阶段的微操作序列
  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

  1. 间址周期:所有指令都类似

Ad(IR)→MAR

1→R

M(MAR)→MDR #此时找到的地址是EA有效地址

(MDR)→Ad(IR) #把原先的间接地址A换成新的EA

  1. 执行周期:各不相同

在这里插入图片描述

2)安排微操作时序的原则

原则1:微操作的先后顺序不得随意更改。

原则2:被控对象不同的微操作,尽量安排在一个节拍内完成。因为被控对象(→右面的那个)不同,那么同时进行就不会相互影响。

原则3:占用时间较短的微操作尽量安排在一个节拍内完成,并允许有先后顺序

下面每一行就是一个微操作,每一个T执行一个微指令

  1. 取指周期:所有指令都相同
(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,也就是可以一次同时发出两个微命令。

  1. 间址周期:所有指令都类似
Ad(IR)→MAR
1→R			#存储器空闲即可
M(MAR)→MDR	#在(1)之后
(MDR)→Ad(IR)#在(3)之后

T0:1,2

T1:3

T2:4

  1. 执行周期:各不相同

在这里插入图片描述

3)电路设计

设计步骤:

  1. 列出操作时间表
    • 列出在取指、间址、执行、中断周期,TO、T1、T2节拍内有可能用到的所有微操作。
  2. 写出微操作命令的最简表达式
  3. 画出逻辑图

【备注】操作时间表巨长,很麻烦。

4.1.3特点
  1. 指令越多,设计和实现就越复杂,因此一般用于RISC(精简指令集系统)。
  2. 如果扩充一条新的指令,则控制器的设计就需要大改,因此扩充指令较困难。
  3. 由于使用纯硬件实现控制,因此执行速度很快。微操作控制信号由组合逻辑电路即时产生。

4.2微程序控制器

硬件+软件实现

采用“存储程序”的思想,CPU出厂前将所有指令的“微程序”存入“控制器存储器”中。

  • 分类:
  1. 静态微程序设计:微程序无需改变,采用 ROM。
  2. 动态微程序设计:通过改变微指令和微程序改变机器指令。有利于仿真,采用EPROM。

程序:由指令序列组成。

微程序:由微指令序列组成。

指令:是对程序执行步骤的描述,每一种指令对应一个微程序
比如 LDA X,这样一条指令对应的取指、间址、执行、中断全部看作一个微程序。

微指令:是对指令执行步骤的描述。

微命令与微操作一一对应

微指令中可能包含多个微命令。

微指令包含关系
  • 指令(4个微程序段部分构成一完整的微程序)
    • 微程序(段)(取指周期微程序、间址周期微程序…)
      • 微指令(一个节拍(T)内多行或一行微操作)
        • 微命令 = 微操作(一行微操作)

在这里插入图片描述

4.2.1基本结构

在这里插入图片描述

控制存储器CM(Memory Controller):

在这里插入图片描述

取指周期通常是公用的,故如果某指令系统中有n条机器指令(执行周期),则CM中微程序(段)的个数至少是n+1个。(因为 n条机器指令 是描述执行周期的微程序(段),所以还要加上一个取指周期微程序(段))

  • 为什么是+1(只加取指周期,没有间址周期…)?

因为一些早期的CPU、物联网设备的CPU可以不提供间接寻址和中断功能,因此这类CPU可以不包含间址周期、中断周期的微程序段。

4.2.2微指令格式

相容性微命令:可以并行完成的微命令。

互斥性微命令:不允许并行完成的微命令。

在这里插入图片描述

4.2.3微指令编码方式

微指令的编码方式又称为微指令的控制方式,它是指如何对微指令的控制字段进行编码,以形成控制信号。编码的目标是在保证速度的情况下,尽量缩短微指令字长。

  1. 直接编码(直接控制)方式
  2. 字段直接编码方式
  3. 字段间接编码方式(隐式编码)

在这里插入图片描述

优点:可以缩短微指令字长。

缺点:要通过译码电路后再发出微命令,因此比直接编码方式慢。

例题:

在这里插入图片描述
在这里插入图片描述

4.2.4微指令的地址形成方式

就是下一条指令地址的形成

  1. 微指令的下地址字段:指出微指令格式中设置一个下地址字段,由微指令的下地址字段直接指出后继微指令的地址,这种方式又称为==断定方式(断定法)==。

  2. 根据机器指令的操作码,形成当机器指令取至指令寄存器后,微指令的地址由操作码经微地址形成部件形成。

  3. 增量计数器法:(CMAR)+1→CMAR

    类似(PC)+1→PC

  4. 分支转移。

    操作控制字段转移方式转移地址

    转移方式:指明判别条件;
    转移地址:指明转移成功后的去向。

  5. 通过测试网络(顺序逻辑)

  6. 由硬件产生微程序入口地址

    第一条微指令地址,由专门硬件产生(用专门的硬件记录取指周期微程序首地址)。
    中断周期:由硬件产生中断周期微程序首地址(用专门的硬件记录)。

例题:

在这里插入图片描述

4.2.5设计微程序控制单元

设计步骤:

  1. 分析每个阶段的微操作序列
  2. 写出对应机器指令的微操作命令及节拍安排
  3. 确定微指令格式
    1. 根据微操作个数决定采用何种编码方式,以确定微指令的操作控制字段的位数。
    2. 根据CM中存储的微指令总数,确定微指令的顺序控制字段的位数。
    3. 最后按操作控制字段位数和顺序控制字段位数就可确定微指令字长。
  4. 编写微指令码点
    • 根据操作控制字段每一位代表的微操作命令,编写每一条微指令的码点。

与前面硬布线控器类似,也需要微指令(节拍)安排,唯一不同的是最后一个微操作。


微指令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(复杂指令集计算机)
易扩充性困难易扩充修改
  • 8
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值