408答疑
文章目录
三、数据通路的功能和基本结构
数据通路的功能
随着技术的发展,更多的功能逻辑被集成到 CPU 芯片中,但不论 CPU 的内部结构多么复杂,它都可视为由数据通路(Data Path)和控制部件(Control Unit)两大部分组成。
- 数据在指令执行过程中所经过的路径,包括路径上的部件,称为数据通路,ALU、通用寄存器、状态寄存器、异常和中断处理逻辑等都是指令执行时数据流经的部件,都属于数据通路的一部分。
- 数据通路描述了信息从哪里开始,中间经过哪些部件,最后被传送到哪里。
- 数据通路由控制部件控制,控制部件根据每条指令功能的不同,生成对数据通路的控制信号。
数据通路的组成
组成数据通路的元件主要分为组合逻辑元件和时序逻辑元件两类。
组合逻辑元件(操作元件)
- 在组合逻辑元件中,任何时刻产生的输出仅取决于当前的输入。
- 组合逻辑元件不含存储信号的记忆单元,也不受时钟信号的控制,输出与输入之间无反馈通路,信号是单向传输的。
- 数据通路中常用的组合逻辑元件有加法器、算术逻辑单元(ALU)、译码器、多路选择器、三态门等,如下图所示。
- 上图中虚线表示控制信号,译码器可用于操作码或地址码译码,n 位输入对应 2 n 2^n 2n 种不同组合,因此有 2 n 2^n 2n 个不同输出。
- 多路选择器(MUX)需要控制信号 Select 来确定选择哪个输入被输出。
- 三态门可视为一种控制开关,由控制信号 EN 决定信号线的通断,当 E N = 1 EN = 1 EN=1 时,三态门被打开,输出信号等于输入信号;当 E N = 0 EN = 0 EN=0 时,输出端呈高阻态(隔断态),所连寄存器与总线断开。
时序逻辑元件(状态元件)
- 任何时刻的输出不仅与该时刻的输入有关,还与该时刻以前的输入有关,因此时序电路必然包含存储信号的记忆单元。此外,时序逻辑元件必须在时钟节拍下工作。
- 各类寄存器和存储器,如通用寄存器组、程序计数器、状态/移位/暂存/锁存寄存器等,都属于时序逻辑元件。
数据通路的基本结构
数据通路的基本结构主要有以下几种。
CPU 内部单总线方式
- 将 ALU 及所有寄存器都连接到一条内部总线上,称为单总线结构的数据通路。
- 这种结构比较简单,但数据传输存在较多的冲突现象,性能较低。
- 此总线在 CPU 内部,注意不要把它与连接 CPU、存储器和外设的系统总线相混淆。
- 下图所示为单总线的数据通路和控制信号。
- GPRs 为通用寄存器组,rs、rd 分别为所读、写的通用寄存器的编号;
- Y 和 Z 为暂存器;
- FR 为标志寄存器,用于存放 ALU 产生的标态信息。
- 带箭头的虚线表示控制信号,字母加 “in” 表示该部件允许写入,字母加 “out” 表示该部件允许输出。
- MDRin 表示内部总线上信息写入 MDR,MDRout 表示 MDR 的内容送入内部总线。
- 能输出到总线的部件均通过一个三态门与内部总线相连,用于控制该部件与内部总线之间数据通路的连接与断开。
注意:
单周期处理器( C P I = 1 CPI = 1 CPI=1)不能采用单总线方式,因为单总线将所有寄存器都连接到一条公共总线上,一个时钟内只允许一次操作,无法完成一条指令的所有操作。
CPU 内部多总线方式
- CPU 内部有两条或更多的总线时,构成双总线结构或多总线结构。
- 将所有寄存器的输入端和输出端都连接到多条公共通路上,相比之下单总线中一个时钟内只允许传送一个数据,指令执行效率很低。
- 因此采用多总线方式,同时在多个总线上传送不同的数据,提高效率。
专用数据通路方式
根据指令执行过程中的数据和地址的流动方向安排连接电路,避免使用共享的总线,性能较高,但硬件量大。
注意:
内部总线是指同一部件(如 CPU 内部连接各寄存器及运算部件)之间的总线;系统总线是指同一台计算机系统的各部件(如 CPU、内存和各类 I/O 接口)间互相连接的总线。
数据通路的操作举例
总线是一组共享的传输信号线,它不能存储信息,任一时刻也只能有一个部件把信息送到总线上。
通用寄存器之间传送数据
- 在寄存器和总线之间有两个控制信号:Rin 和 Rout。
- 当 Rin 有效时,控制将总线上的信息存到寄存器 R 中;
- 当 Rout 有效时,控制将寄存器 R 的内容送至总线。
- 下面以程序计数器 PC 为例,将 PC 的内容送至 MAR,如下图所示。
- 实现该操作的流程及控制信号为:
(PC) → MAR # PCout 和 MARin 有效,PC 内容 → MAR
从主存读取数据
取指令阶段所需时钟周期分析
- 从主存中读取的信息可能是数据或指令,现以 CPU 从主存中取指令为例,说明数据在单总线数据通路中的传送过程,如下图所示。
- 实现该操作的流程及控制信号为:
(PC) → MAR # PCout 和 MARin 有效,现行指令地址 → MAR
MEM(MAR) → MDR, (PC) +1 → PC # MDRin 有效,CU 发出读命令,取出指令后 PC+1
(MDR) → IR # MDRout 和 IRin 有效,现行指令 → IR
- 第一步,将 PC 的内容通过内部总线送至 MAR,需要 1 个时钟周期。
- 第二步,CU 向主存发出读命令,从 MAR 所指主存单元读取一个字,并送至 MDR;同时 PC 加 1 为取下一条指令做准备,需要 1 个主存周期。
- 第三步,将 MDR 的内容通过内部总线送至 IR,需要 1 个时钟周期。
将数据写入主存
- 将寄存器 R1 的内容写入寄存器 R2 所指的主存单元。
- 完成该操作的流程及控制信号为:
(R1) → MDR # R1out 和 MDRin 有效
(R2) → MAR # R2out 和 MARin 有效
MDR → MEM(MAR) # MDRout 有效,CU 发出写命令
执行算术或逻辑运算
在单总线数据通路中,每一时刻总线上只有一个数据有效。
- 因为 ALU 是一个没有存储功能的组合逻辑元件,在其执行运算时必须保持两个输入端同时有效,所以先将一个操作数经内部总线送入暂存器 Y 保存,Y 的内容在 ALU 的左输入端始终有效,再将另一个操作数经内部总线直接送到 ALU 的右输入端。
- 此外,ALU 的输出端也不能直接与总线相连,否则其输出会通过总线反馈到输入端,影响运算结果,因此将运算结果暂存在暂存器 Z 中(ALU 中设置暂存器的原因)。
- 下图所示为加法指令 A D D A C C , R 1 ADD\ ACC,R1 ADD ACC,R1,实现将 ACC 的内容和 R1 的内容相加并写回 ACC。
- 完成该操作的流程及控制信号为:
(R1) → Y # R1out 和 Yin 有效,操作数 → Y
(ACC) + (Y) → Z # ACCout 和 ALUin 有效,CU 向 ALU 发出加命令,结果 → Z
(Z) → ACC # Zout 和 ACCin 有效,结果 → ACC
以上 3 步不能同时执行,否则会引起总线冲突,因此该操作需要 3 个时钟周期。
修改程序计数器的值
- 转移指令通过修改程序计数器 PC 的值来达到转跳的目的。
- 转移指令 J M P A d d r JMP\ Addr JMP Addr(Addr 为目标转移地址)实现将 IR 中的地址字段写入 PC。
- 完成该操作的流程及控制信号为:
Ad(IR) → PC # IRout 和 PCin 有效
数据通路结构直接影响 CPU 内各种信息的传送路径,数据通路不同,指令执行过程的微操作序列的安排也不同,它关系着微操作信号形成部件的设计。
八、参考资料
鲍鱼科技课件
b站免费王道课后题讲解:
网课全程班: