菜缤的世界 CairBin's Blog - 微程序
type: channel
link: https://blog.cairbin.top/index.php/tag/微程序/
items: 计算机组成原理——CPU数据通路与控制器

计算机组成原理——CPU数据通路与控制器
type: item
date: 2024-11-11T05:42:59+00:00
description: 计算机组成原理——CPU数据通路与控制器数据通路概念数据通路，即数据在功能部件之间的传输路径。数据通路基本结构可分为三种：CPU内部单总线方式CPU内部多总线方式专用数据通路数据的流动在之前的文章说过可以分为三类：寄存器与寄存器之间的流动寄存器与主存之间的流动寄存器与ALU之间的流动内部总线是指同一部件，如CPU内部连接各寄存器及运算部件之间的总线。系统总线是指同一台计算机系统各部件连接的总线，如CPU、内存、通道和各类IO接口之间互相连接的总线。CPU内部单总线方式寄存器之间的数据传送，比如把PC的内容送至MAR，实现传送操作的流程及控制信号为：PCout有效，PC内容送至总线。$$ (PC) \to Bus $$MARin有效，总线内容送MAR。$$ Bus\to MAR $$主存与CPU之间的数据传送，比如CPU从主存读取指令，实现传送操作的流程及控制信号为：PCout和MARin有效$$ (PC)\to Bus \to MAR $$CU发出读命令（通过控制总线发出）$$ 1 \to R $$MARout有效，MAR通过地址线送往主存。然后MDRinE有效，主存将指定位置的数据通过数据线送往MDR。（注意，MDRinE表示外部的输入控制信号，MDRin为CPU内部总线输入MDR的控制信号）$$ MEM(MAR)\to MDR $$MDRout与IRin有效$$ MDR \to Bus \to IR $$执行算术运算或逻辑运算的时候，数据是流行ALU的，比如执行一条加法指令，微操作序列以及控制信号为：MDRout和MARin有效，或者AdIRout和MARin有效$$ Ad(IR)\to Bus \to MAR $$CU发出读命令$$ 1 \to R $$MARout，MDRinE有效$$ MEM(MAR) \to dataBus \to MDR $$将操作数放到暂存寄存器Y中，MDRout和Yin有效$$ MDR \to Bus \to Y $$ACCout和ALUin有效，CU向ALU发送加命令$$ (ACC) + (Y) \to Z $$将运算结果送回ACC，Zout和ACCin有效$$ Z \to ACC $$采用内部单总线的方式，需要将结果暂存到通用寄存器，而内部双总线就不会。专用数据通路如图所示，$C_i$表示相应元件的控制信号。我们来看取指周期：$C_0$有效$$ PC \to MAR $$$C_1$有效$$ (MAR) \to Memory $$CU发出读命令$$ 1\to R $$$C_2$有效，将数据送给MDR$$ M(MAR)\to MDR $$将MDR中的内容送给MDR，令$C_3$有效，PC加1$$ (MDR) \to IR, \space (PC) + 1 \to PC $$IR将指令送给CU进行译码，$C_4$有效$$ Op(IR) \to CU $$控制器硬布线控制器硬布线控制器是将控制部件做成产生专门固定时序控制信号的逻辑电路，微操作控制信号由组合逻辑电路根据当前指令码、状态、时序即时产生。（时序信息包含机器周期、节拍）这种方式需要把微操作控制信号需要哪些条件用逻辑表达式写出来，再根据逻辑表达式进行电路设计，是纯硬件思想设计的。微程序控制器微程序控制器是通过软件的思路来设计的。程序本质上是由指令序列组成的，某一条指令的执行又会被分为一些列微操作，由微操作序列完成一条指令的功能。因此微程序控制器模仿指令执行的方式来处理微操作序列。我们可以把同一个时序内的微操作用一个微指令来指明，如微指令a会导致微操作1、2的完成，微指令b会导致微操作3的完成。微程序由一系列微指令组成，每一种指令对应一个微程序。机器指令是对程序执行步骤的描述，微指令是对指令执行步骤的描述。微命令与微操作一一对应，微命令强调是要发出哪一个控制信号，而微操作是接到控制信号后进行的操作，微指令中包含多个微命令。微程序控制器的结构如下：控制存储器CM：用于存放各指令对应的微程序，CM可用只读存储器ROM构成。每一条指令对应的微程序或者说微指令序列，在一开始由CPU厂商写好。CMAR：别名$\mu PC$，微地址寄存器接收微地址形成部件送来的微地址，在CM中读取微指令作准备。地址译码器：将地址码转换为存储单元控制信号。CMDR：别名$\mu IR$，用于存放从CM中取出的微指令，它的位数同微指令字长相等。微地址形成部件：产生初始微地址，以保证微指令的连续执行。顺序逻辑电路：用于控制微指令执行顺序，例如在有中断发生和没有中断发生的时候微指令执行顺序可能不一样。执行一条微指令的流程如下图所示，IR将操作码送往CU的微地址形成部件，微地址形成部件产生微地址，然后送往顺序逻辑电路，顺序逻辑电路根据标志位来判断是否存在间址，如果是间址则接下来执…