PC_控制器_微程序控制器和硬布线控制器
文章目录
硬布线控制器
🎈控制器硬布线构成
- 指令的操作码是决定控制单元CU发出不同操作命令(控制信号)的关键
- CU的输入信号来源有3类
- 经指令译码器译码产生的指令信息
- 时序系统产生的机器周期信号和节拍信号
- 执行单元的反馈信息(标志)
- 节拍发生器产生各机器周期中的节拍信号,使用不同的微操作命令 C i C_i Ci(控制信号)按时间顺序先后发出
- 个别指令不仅受操作码控制,还受到状态标志控制
- CU的输入来自于
- 操作码译码电路ID
- 节拍发生器
- 状态标志
- 此外,还接收来自系统总线(控制总线)的控制信号
- 中断请求
- DMA请求
- 将处理结果输出到CPU内部或者外部控制总线上
微操作命令分析
记号说明
- 为了简化书写,数将数据流经过的数据通路的总线部分(AB,CB,DB,IB)省略不写
取指周期的微操作命令
-
P C → M A R PC\to{MAR} PC→MAR
- 现行指令I地址(当前要执行的指令在存储器中的地址)存入到MAR,以便于从内存中将指令取出
-
1 → R 1\to{R} 1→R
- 即: C U ( R ) → M CU(R)\to{M} CU(R)→M
- 控制器向主存发送读命令(启动主存读操作)
- 可以用 1 → R 1\to{R} 1→R来表示控制器发出读命令(将R置为1)
-
M ( M A R ) → M D R M(MAR)\to{MDR} M(MAR)→MDR
-
将MAR(通过地址线AB)所指的主存单元M中保存的内容(指令)I,
经过数据总线DB读入到cpu的MDR寄存器中
-
-
M D R → I R MDR\to{IR} MDR→IR
- (在CPU内部)将MDR中的内容(指令)送往IR
-
O P ( I R ) → C U OP(IR)\to{CU} OP(IR)→CU
- 进入分析指令阶段
- 将指令的操作码OP(IR)传送到控制单元CU进行译码)
-
( P C ) + 1 → P C (PC)+1\to{PC} (PC)+1→PC
- 形成下一条指令的地址(默认自增1)
间址周期的微操作命令
- 取操作数有效地址的任务
- 先取得形式地址
- 再取得有效地址
- A d ( I R ) → M A R Ad(IR)\to{MAR} Ad(IR)→MAR
-
1
→
R
1\to{R}
1→R
- 即 C U ( R ) → M CU{(R)}\to{M} CU(R)→M
-
M
(
M
A
R
)
→
M
D
R
M(MAR)\to{MDR}
M(MAR)→MDR
- (现在MDR保存的是有效地址EA(对于一次寻址的指令而言)
-
M
D
R
→
A
d
(
I
R
)
MDR\to{Ad(IR)}
MDR→Ad(IR)
- 将有效地址EA传送到指令寄存器的地址字段
- 有些机器省略该步骤
执行周期
- 比如:
非访存指令
- 清除累加器指令CLA
- 0 → A C C 0\to{ACC} 0→ACC,将ACC寄存器置为0
- 累加器取反指令COM
- one’s complement反码
- A C C ‾ → A C C \overline{ACC}\to{ACC} ACC→ACC累加器内容取反
- 算数右移1位SHR
- ACC内容算数右移1位
- L ( A C C ) → R ( A C C ) L(ACC)\to{R(ACC)} L(ACC)→R(ACC)
- A C C 0 → A C C 0 ACC_0\to{ACC_0} ACC0→ACC0(表示符号位不变)
- 循环左移移位指令CSL
- ACC内容循环左移1位
- R ( A C C ) → L ( A C C ) R(ACC)\to{L(ACC)} R(ACC)→L(ACC)
- A C C 0 → A C C n ACC_0\to{ACC_n} ACC0→ACCn(或 ρ − 1 ( A C C ) \rho^{-1}(ACC) ρ−1(ACC))
- 停机指令STP
- 计算机中的运行标志触发器G=1时,机器处于运行黄台
- G=0时,机器停机
- STP指令在执行阶段只需要将运行标志触发器G置为0
- 即 0 → G 0\to{G} 0→G
- 2个寄存器内容相加指令ADD AX BX
- ( A X ) + ( B X ) → A X (AX)+(BX)\to{AX} (AX)+(BX)→AX
访存类指令
- 加法指令ADD X
- ACC的内容和主存X地址单元的内容相加
- 结果送回到ACC
- A d ( I R ) → M A R Ad(IR)\to{MAR} Ad(IR)→MAR
- 1 → R 1\to{R} 1→R
- M ( M A R ) → M D R M(MAR)\to{MDR} M(MAR)→MDR
- ( A C C ) + ( M D R ) → A C C (ACC)+(MDR)\to{ACC} (ACC)+(MDR)→ACC
- 存数指令STA X
- STore Accumulator( contents in memory)
- 取数指令LDA X
- LoaD Accumulator with the contents from memory.
- 总体效果: A D ( I R ) → A C C AD(IR)\to{ACC} AD(IR)→ACC
- A d ( I R ) → M A R Ad(IR)\to{MAR} Ad(IR)→MAR
- 1 → R 1\to{R} 1→R
- M ( M A R ) → M D R M(MAR)\to{MDR} M(MAR)→MDR
- M D R → A C C MDR\to{ACC} MDR→ACC
转移类指令
- 以无条件转移指令
J
M
P
X
JMP\ {X}
JMP X为例
-
A
d
(
I
R
)
→
P
C
Ad(IR)\to{PC}
Ad(IR)→PC
- 操作数地址码被传送到PC,cpu执行下一条指令的时候自然的跳转到指定位置执行新指令
-
A
d
(
I
R
)
→
P
C
Ad(IR)\to{PC}
Ad(IR)→PC
- 条件转移(负则转)BAN X
- 根据上一条指令的执行结果决定下一条指令的地址
- 如果结果为负
- 累加器最高位(符号位为1, A 0 = 1 A_0=1 A0=1)
- 将至令的地址码Ad(IR)送入到PC,作为下一条指令
- 否则,直接执行下一条指令(
A
0
=
0
A_0=0
A0=0)
- PC中的内容有取值阶段的PC+1操作已经完成了默认的自增操作( ( P C ) + 1 → P C (PC)+1\to{PC} (PC)+1→PC)
- 用紧凑的逻辑语言表达式:
- A 0 ⋅ A d ( I R ) + A 0 ‾ ⋅ ( P C ) → P C A_0\cdot Ad(IR)+\overline{A_0}\cdot (PC)\to{PC} A0⋅Ad(IR)+A0⋅(PC)→PC
🎈cpu(CU)的控制方式
- 控制单元CU控制一条指令的形成,实质是依次执行一个确定的微操作序列的过程
- 根据指令的复杂程度,不同指令的执行时间不同(执行每个微操作所需要的时间也不同)
- 将如何形成控制不同微操作序列所采用的时序控制方式称为CU的控制方式
同步控制方式
- 以最长的微操作序列和最繁琐的微操作为标准,系统用一个统一的时钟,所有信号都来自于这个统一时钟
- 采取完全统一的,具有相同的时间间隔和相同数目的节拍,作为机器周期来运行不同的指令
- 特点是控制电路简单
- 运行速度慢
异步控制方式
- 不存在基准时标信号
- 各个部件按照自身固有的速度工作
- 通过应答方式进行联络
- 特点:
- 速度快
- 控制线路复杂
(同步异步)联合控制方式
- 介于同步和异步之间的一种方式
- 对各种不同的指令的操作属性大部分采用同步控制,小部分采用异步控制的方法
硬布线控制单元设计
列出微操作命令的操作时间表
进行微操作信号综合
绘制微操作命令逻辑图
微程序控制
- 相比于硬布线方式设计,微程序控制方式更受欢迎
- 更加灵活
基本概念
- 将每条机器指令编写成一个微程序
- 每个微程序包含若干微指令
- 微程序可以存到一个控制存储器其中
- 用寻址用户程序机器指令的办法来寻址每个微程序中的微指令
- 每条微指令对应一个或多个微操作命令
🎈层次划分
- 程序
- 机器指令(大指令
↔
微
程
序
\leftrightarrow{微程序}
↔微程序)
- 微指令
- 微命令(微操作)
- 微指令
- 机器指令(大指令
↔
微
程
序
\leftrightarrow{微程序}
↔微程序)
微操作&微命令
- 微操作:是计算机中最基本的不可再分解的操作
- 一条机器指令可以分解为一串微操作序列
- 微命令:在微程序控制的计算机中,控制部件向执行部件发出的各种控制命令称为微命令
- 是构成控制序列的最小单位
- 例如:
- 打开/关闭某个控制门的电位信号
- 对一个寄存器打入脉冲
- 例如:
- 微命令和微操作是一 一对应的
- 微命令是微操作的控制信号
- 微操作是微命令的执行过程
- 是构成控制序列的最小单位
- 微命令和微操作在组合逻辑控制器中也有相应的概念
微命令的相容性和互斥性
-
它们描述的是微命令间的相对协作关系
-
相容性:具有相容性的微命令可以同时产生,共同完成一些微操作的微命令
-
互斥性:机器中不允许同时出现的微命令
-
相容性和互斥性具有相对性
- 假设有微命令A,B,C
- A和B相容
- A和C互斥
- 假设有微命令A,B,C
微指令&微周期
- 微指令:
- 若干微命令的集合
- 微周期
- 从控制存储器中读取一段微指令并执行相应的微操作所需的时间
- 微地址
- 存放微指令的控制存储器单元地址
微指令包含的信息
- 操作控制字段
- 即微操作码字段,用于产生某一个操作所需要的各种操作控制信号
- 顺序控制字段
- 微地址码字段,用于控制产生下一条要执行的微指令地址
主存储器和控制存储器的比较
-
主存储器用于存放程序和数据,在cpu外部,用RAM实现
-
控制存储器CM(controlMemory)在cpu内部,用ROM实现
程序和微程序
- 程序:
- 指令的有序集合,用于完成特定的功能
- 微程序
- 微指令的有序集合;一条指令的功能有一段微程序来是实现
- 微程序是由微指令组成的,用于描述机器指令
- 微指令是机器指令的实时解释器
- 由计算机设计者事先编制好,并存放在cpu的控制存储器CM中
- 不提供给用户
- 对于程序员来说,计算机系统的微程序的结构和功能是透明的
- 而程序最终由机器指令组成,是有软件设计人员事先编制好并存放在主存或者辅存中的
寄存器对比
- 地址寄存器MAR
- 微地址寄存器CMAR
- 存放微指令地址
- 指令寄存器IR
- 微指令寄存器CMDR或
μ
I
R
\mu{IR}
μIR
- 存放微指令
微程序控制器组成
- 微程序控制器性对于组合逻辑控制器要多出一些部件
- 控制存储器CM
- 存放各个指令对应的微程序
- 控制存储器可以用ROM构成
- 微指令寄存器(
μ
I
R
或
C
M
D
R
\mu{IR}或CMDR
μIR或CMDR)
- 存放从CM中取出的微指令
- 它的位数同微指令字长相等
- 微地址形成部件
- 用户产生初始微地址
- 后继微地址
- 以保证微指令的连续执行
- 微地址寄存器
- 接受微地址形成部件送来的微地址,为cpu在CM中读取微指令做准备
- 控制存储器CM
微程序控制器的工作过程
- 执行取微指令公共操作
- 有机器指令的操作码字段通过微地址形成部件该机器指令的所对应的微程序的入口地址,并送入CMAR
- 机器指令 ↔ \leftrightarrow ↔微程序
- 从CM中逐条读取微指令执行
- 执行完对应于一条机器指令的一个微程序后
- 回到取指 微程序的入口地址机器
- 执行第一步的执行取微指令公共操作,完成下一条机器指令的公共操作
微程序和机器指令
- 通常一条机器指令对应于一个微程序
- 任何机器指令的取指操作都是相同的取指操作都是相同的
- 可以将取值操作的微命令统一编成一个微程序,这个微程序只负责取指操作(将指令从主存单元中取出并送至指令寄存器IR)
- 对应的,可以编制间址周期的微程序和中断周期的微程序
- 控制存储器中的微程序数量为:
- 机器指令数
- 对应取指/间址/中断等共用的微程序数
- 如果指令系统中有n种机器指令,控制存储器中有至少n+1个微程序
- +1表示公共取指微程序
微指令的编码方式
- 又称为微指令的控制方式
- 如何对微指令的控制字段进行编码,形成控制信号
- 在保证速度的情况下,缩短微指令字长
直接编码方式
- 直接控制方式
- 无需进行译码
- 微指令的微命令字段中的每一位都表示一个微命令
- 特点:
- 速度快
- 简单直观
- 操作并行性好
字段直接编址方式
- 将微指令的微命令字段分成若干个小字段
- 互斥性微命令组合在同一个字段中
- 相容性微命令组合在不同字段中
- 每个小段中包含的信息位不能够太多,否则增加译码线路的复杂性和译码时间
- 每个小段流出一个状态,表示本字段不发出任何微命令
- 当某个字段的长度为3时,最多只能够表示7个互斥微命令
- 通常用000表示不操作
- 每个字段独立编码
- 每种编码方式代表一个微命令,且各个字段编码含义单独定义,与其他字段无关
- 特点
- 可以缩短指令字长
- 需要通过移码电路后再发送微命令,比直接编码方式慢
字段间接编码
- 一个字段的某些微命令需要由另一个字段中的某些微命令来解释
- 称为隐式编码
- 这种方式可以进一步缩短微指令字长
- 当时削弱了微指令的并行控制能力,通常作为字段直接编码的一种辅助手段
微指令地址的形成方式
直接由微指令的下地址字段指出
- 微指令格式中设置一个下地址字段
- 由微指令的下地址字段直接勾出后继微指令的地址
- 又称为断定方式
根据机器指令的操作码形成
- 机器指令取值指令寄存器(IR)后,微指令的地址由操作码经过微地址形成部件
其他方式
- 增量计数法
- ( C M A R ) + 1 → C M A R (CMAR)+1\to{CMAR} (CMAR)+1→CMAR,适用于后继微指令的地址连续的情况
- 根据各种标志决定微指令分支转移的地址
- 通过测试网络形成
- 硬件直接产生微程序入口地址
微指令格式
- 微指令的格式和编码方式有关
- 分为水平型微指令和垂直型微指令两类
水平型
-
从编码方式上看,直接编码/间接编码/字段间接编码/混合编码 都属于水平型微指令
- A 1 A 2 ⋯ A n − 1 A n ⏟ 操 作 控 制 ; 判 断 测 试 字 段 ; 后 继 地 址 字 段 ⏟ 顺 序 控 制 \underbrace{A_1A_2\cdots{A_{n-1}}A_n}_{操作控制};\underbrace{判断测试字段;后继地址字段}_{顺序控制} 操作控制 A1A2⋯An−1An;顺序控制 判断测试字段;后继地址字段
-
特点:
- 微程序短,执行速度快,(执行一条指令时间短)
- 并行操作能力强,效率高,灵活性强
- 微指令长,编写微程序比较麻烦
垂直型
-
类似机器指令操作码的方式,在微指令中设置微操作码字段
-
采用微操作码编译法,有微操作码规定微指令的基本功能
-
μ O P R d R s 微操作码 目的地址 源地址 \begin{array}{|c|c|c|} \hline \mu \mathrm{OP} & \mathrm{Rd} & \mathrm{Rs} \\ \hline \text { 微操作码 } & \text { 目的地址 } & \text { 源地址 } \\ \hline \end{array} μOP 微操作码 Rd 目的地址 Rs 源地址
-
特点
- 微指令短,简单规整
- 便于编写微程序(和指令比较类似,相对容易掌握)
- 微程序长,执行速度慢,工作效率低
混合型微指令
- 在垂直型的基础上增加一些不太复杂的并行操作
- 特点
- 微指令较短,便于编写
- 微程序不长,执行速度较快
微程序控制单元的设计
- 编写各条机器指令对应的微程序
写出机器指令的微操作命令以及节拍安排
- 对于相同的cpu架构,无论是组合逻辑设计还是微程序设计,微操作命令和节拍安排都是极为相似
确定微指令格式
- 微指令格式包括
- 编码方式
- 后继微指令地址的形成方式
- 微指令字长
- 微操作的个数决定了采用何种编码方式
- 确定微指令的操作控制字段的位数
- 微指令数确定微指令顺序控制字段数
- 按照操作控制字段位数和顺序控制字段位数确定微指令字长
编写微指令码点
- 根据操作控制字段 每位代表的微操作命令,编写每条微指令的码点
🎈对比:微程序控制器和硬布线控制器
-
微程序控制器 硬布线控制器 工作原理 微操作控制信号以微程序的形式存放在控制存储器中,执行指令是读取出来 微操作控制信号有组合逻辑电路根据当前的指令码/状态/时序 即时产生 执行速度 慢 快 规整性 比较规整 不规整 应用场合 CISC cpu RISC cpu 扩充性 易于扩充修改 困难
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了