【组成原理-处理器】微程序控制器
文章目录
- 1 易混淆的几个概念
- 2 微指令的设计
- 2.1 水平型微指令
- 2.1.1 直接编码(直接控制)方式
- 2.1.2 字段直接编码方式
- 相关例题
- 2.1.3 字段间接编码方式
- 2.2 垂直型微指令
- 2.3 混合型微指令
- 3 微程序控制器的工作原理
- 3.1 微程序控制器的组成
- 控制存储器(CM)怎样存储微指令?
- 相关例题
- 3.2 微指令的地址形成
- 相关例题
- 4 微程序的设计
- 4.1 取指周期的微程序
- 4.2 间址周期的微程序
- 4.2.1 间接寻址
- 4.2.2 寄存器间接寻址
- 4.3 执行周期的微程序
- 5 综合例题
- 例 1
- 例 2
- 例 3
- 例 4
- 例 5
1 易混淆的几个概念
- 微操作:一条机器指令可分解为多条微操作。
- 微命令:控制部件向执行部件发出的控制命令。这些命令导致执行部件执行微操作。
微命令和微操作是一一对应的:微命令是微操作的控制信号,微操作是微命令的执行过程。
- 微指令:若干微命令的集合。
- 微程序:若干微指令的集合。
粒度大小:微命令&微操作 < 微指令 < 微程序
- 微周期:从控制存储器(CM)读取一条微指令并执行相应微操作所需的时间。
2 微指令的设计
2.1 水平型微指令
水平型微指令:一条微指令能定义多个可并行的微命令。
(1)优缺点:
- 优点:微程序短,执行速度快。
- 缺点:微指令长,编写微程序较麻烦。
(2)格式:
操作控制(微操作码) | 顺序控制(微地址码/下地址) | 顺序控制(微地址码/下地址) |
---|---|---|
A1, A2, A3,…,An | 判断测试字段 | 后继地址字段 |
下面来讨论水平型微指令的编码方式。
2.1.1 直接编码(直接控制)方式
在微指令的操作控制字段中,每一位代表一个微操作命令,某位为“1”表示该控制信号有效。
(1)格式:
操作控制(控制信号) | 下地址 |
---|---|
1 0 1 0 0 … 0 1 | ~ |
(2)优缺点:
- 优点:简单、直观,执行速度快,操作并行性好。
- 缺点:微指令字长过长,n 个微命令就要求微指令的操作字段有 n 位,造成控存容量极大。
2.1.2 字段直接编码方式
将微指令的控制字段分成若干“段”,每段经译码后发出控制信号。
(0)两个概念:
- 相容性微命令:可以并行完成的微命令。
- 互斥性微命令:不允许并行完成的微命令。
(1)原则:
- 互斥性微命令位于同一段内,相容性微命令位于不同段内。
- 每个小段中包含的信息位不能太多。
- 每个小段需留出一个状态,表示本字段不发出任何微命令。通常用 000 表示不操作。
例:当某字段的长度为 3 位时,最多只能表示 7 个互斥的微命令,用 000 表示不操作。
(2)格式:
操作控制 1 | 操作控制 2 | 操作控制 3 | 操作控制 4 | 下地址 |
---|---|---|---|---|
1 0 1 | 0 0 1 | 1 0 0 | 0 1 0 | ~ |
(3)优缺点:
- 优点:可以缩短微指令字长。
- 缺点:要通过译码电路后再发出微命令,因此比直接编码方式慢。
相关例题
【例】某计算机的控制器采用微程序控制方式,微程序中操作控制字段采用字段直接编码法,共有 33 个微命令,构成 5 个互斥类,分别包含 7、3、12、5 和 6 个微命令。问一共需要几位操作控制位?
【解】这 5 个互斥类实际包含的状态数为 8、4、13、6 和 7 个,因为 8 = 23, 4 = 22, 13 < 24, 6 < 23, 7 < 23,所以需要的位数分别为 3,2,4,3,3,操作控制位一共需要 3+2+4+3+3=15 位。
2.1.3 字段间接编码方式
一个字段的某些微命令需由另一个字段中的某些微命令来解释,由于不是靠字段直接译码发出的微命令,故称为字段间接编码,又称隐式编码。
优缺点:
- 优点:可进一步缩短微指令字长。
- 缺点:削弱了微指令的并行控制能力,故通常作为字段直接编码方式的一种辅助手段。
2.2 垂直型微指令
垂直型微指令:一条微指令只能定义一个微命令,由微操作码字段规定具体功能。
(1)优缺点:
- 优点:微指令短、简单、规整,便于编写微程序。
- 缺点:微程序长,执行速度慢,工作效率低。
(2)格式:
微操作码 | 目的地址 | 源地址 |
---|---|---|
uOP | Rd | Rs |
2.3 混合型微指令
混合型微指令:在垂直型的基础上增加一些不太复杂的并行操作。微指令较短,仍便于编写;微程序也不长,执行速度加快。
3 微程序控制器的工作原理
3.1 微程序控制器的组成
- 微地址形成部件:产生初始微地址和后继微地址,以保证微指令的连续执行。
- 控制存储器(CM):用于存放各指令对应的微程序,控制存储器可用只读存储器 ROM 构成。
- 微地址寄存器(CMAR,uPC):又称为微指令计数器,用于存放控制存储器(CM)的下一条微指令的地址。
- 微指令寄存器(CMDR,uIR):用于存放从控制存储器(CM)中读出的微指令。
控制存储器(CM)怎样存储微指令?
- 取指周期微程序:通常是公用的,故如果某指令系统中有 n 条机器指令,则 CM 中微程序的个数至少是 n+1 个。
- 间址周期微程序、中断周期微程序:一些早期的 CPU、物联网设备的 CPU 可以不提供间接寻址和中断功能,因此这类 CPU 可以不包含间址周期、中断周期的微程序段。
- 执行周期:不同指令的执行周期微程序。
【注意】物理上,取指周期、执行周期看起来像是两个微程序,但逻辑上应该把它们看作一个整体。因此,一般我们认为“一条指令对应一个微程序”!
相关例题
【例 1】某带中断的计算机指令系统共有 101 种操作,采用微程序控制方式时,控制存储器中相应最少有几个微程序?
【解】取指周期微程序 1 个,中断周期微程序 1 个,执行周期微程序 101 个,一共 103 个微程序。
【例 2】通常情况下,一个微程序的周期对应一个( )
A. 指令周期
B. 主频周期
C. 机器周期
D. 工作周期
【解】如果将“一个微程序”理解为“一个周期的微程序”,则对应的周期应为机器周期,选 C;而如果将“一个微程序”理解为“一条指令的微程序”,即上文所述的,通常情况下,“一条指令对应一个微程序”,则对应的周期应为指令周期,选 A,可见此题有歧义。不过幸运的是,统考一般不会出现这种带有歧义性的题目,但是一旦出现了,最好还是选 A。
3.2 微指令的地址形成
- 微指令的下地址字段指出:微指令格式中设置一个下地址字段,由微指令的下地址字段直接指出后继微指令的地址,这种方式又称为断定方式。
- 根据机器指令的操作码形成:当机器指令取至指令寄存器后,微指令的地址由操作码经微地址形成部件形成。
- 增量计数器:(CMAR) + 1 --> CMAR
- 分支转移
- 测试网络
- 由硬件产生微程序入口地址
相关例题
【例】某计算机采用微程序控制器,共有 32 条指令,公共的取指令微程序包含 2 条微指令,各指令对应的微程序平均由 4 条微指令组成,采用断定法(下地址字段法) 确定下条微指令地址,则微指令中下地址字段的位数至少是?
【解】一共有 32 条指令,每条指令的执行周期微程序有 4 条微指令,则一共有 32*4 = 128 条微指令,再加上公共的取指令微程序包含 2 条微指令,则总共为 128+2 = 130 条微指令。因为 130 < 28=256,所以下地址字段的位数至少有 8 位。
4 微程序的设计
4.1 取指周期的微程序
取指周期的微操作分析:
微操作 | 描述 |
---|---|
(PC)–>MAR | 指令对应的地址放入 MAR 中 |
1–>R | 允许读主存 |
M(MAR)–>MDR | 从主存的相应地址读出指令并存入 MDR 中 |
(PC)+1–>PC | 程序计数器加 1 个指令字长 |
(MDR)–>IR | MDR 存储的指令放入 IR 中 |
OP(IR)–>微地址形成部件 | 指令的操作码送入微地址形成部件进行译码 |
微地址形成部件–>CMAR | 根据指令操作码确定该指令的执行(或间址)周期微程序的首地址 |
因此,取指周期的微程序可以由以下几个微指令组成:
微指令条数 | 微操作 | 描述 |
---|---|---|
1 | (PC)–>MAR | 指令对应的地址放入 MAR 中 |
1 | 1–>R | 允许读主存 |
~ | Ad(CMDR)–>CMAR | 读取当前指令的下地址字段,并存放在 CMAR 中,这样就能确定下一条微指令的地址 |
2 | M(MAR)–>MDR | 从主存的相应地址读出指令并存入 MDR 中 |
2 | (PC)+1–>PC | 程序计数器加 1 个指令字长 |
~ | Ad(CMDR)–>CMAR | 读取当前指令的下地址字段,并存放在 CMAR 中,这样就能确定下一条微指令的地址 |
3 | (MDR)–>IR | MDR 存储的指令放入 IR 中 |
3 | OP(IR)–>微地址形成部件 | 指令的操作码送入微地址形成部件进行译码 |
~ | 微地址形成部件–>CMAR | 根据指令操作码确定该指令的执行(或间址)周期微程序的首地址 |
4.2 间址周期的微程序
4.2.1 间接寻址
间址周期的微操作分析:
微操作 | 描述 |
---|---|
Ad(IR)–>MAR 或 Ad(MDR)–>MAR | 读出指令的地址码部分,送入 MAR 中 |
1–>R | 允许读主存 |
M(MAR)–>MDR | 从主存的相应地址读出数据并存入 MDR 中 |
(MDR)–>Y | MDR 存储的数据放入暂存输入寄存器 Y 中 |
因此,该指令的间址周期的微程序可以由以下几个微指令组成:
微指令条数 | 微操作 | 描述 |
---|---|---|
1 | Ad(IR)–>MAR 或 Ad(MDR)–>MAR | 读出指令的地址码部分,送入 MAR 中 |
1 | 1–>R | 允许读主存 |
~ | Ad(CMDR)–>CMAR | 读取当前指令的下地址字段,并存放在 CMAR 中,这样就能确定下一条微指令的地址 |
2 | M(MAR)–>MDR | 从主存的相应地址读出数据并存入 MDR 中 |
~ | Ad(CMDR)–>CMAR | 读取当前指令的下地址字段,并存放在 CMAR 中,这样就能确定下一条微指令的地址 |
3 | (MDR)–>Y | MDR 存储的数据放入暂存输入寄存器 Y 中 |
~ | Ad(CMDR)–>CMAR | 读取当前指令的下地址字段(此时该字段应为执行周期微程序的首地址),并存放在 CMAR |
4.2.2 寄存器间接寻址
间址周期的微操作分析:
功能 | 描述 |
---|---|
(R0)–>MAR | 读出 R0 的数据,送入 MAR 中 |
1–>R | 允许读主存 |
M(MAR)–>MDR | 从主存的相应地址读出数据并存入 MDR 中 |
(MDR)–>Y | MDR 存储的数据放入暂存输入寄存器 Y 中 |
因此,该指令的间址周期的微程序可以由以下几个微指令组成:
微指令条数 | 微操作 | 描述 |
---|---|---|
1 | (R0)–>MAR | 读出 R0 的数据,送入 MAR 中 |
1 | 1–>R | 允许读主存 |
~ | Ad(CMDR)–>CMAR | 读取当前指令的下地址字段,并存放在 CMAR |
2 | M(MAR)–>MDR | 从主存的相应地址读出数据并存入 MDR 中 |
~ | Ad(CMDR)–>CMAR | 读取当前指令的下地址字段,并存放在 CMAR |
3 | (MDR)–>Y | MDR 存储的数据放入暂存输入寄存器 Y 中 |
~ | Ad(CMDR)–>CMAR | 读取当前指令的下地址字段(此时该字段应为执行周期微程序的首地址),并存放在 CMAR |
4.3 执行周期的微程序
以ADD (R0), R1
为例,功能为((R0))+(R1)–>(R0)
,说明执行周期的微程序。
执行周期的微操作分析:
微操作 | 描述 |
---|---|
(Y)+(R1)–>Z | Y 中数据和 R1 中数据相加,经过 ALU 计算的结果存入 Z 中 |
(Z)–>MDR | 将计算结果放入 MDR 中 |
1–>W | 允许写主存 |
(MDR)–>M(MAR) | 将 MDR 数据放入到主存相应地址中,注意此时 MAR 仍存储着 R0 的数据 |
因此,该指令的执行周期的微程序可以由以下几个微指令组成:
微指令条数 | 微操作 | 描述 |
---|---|---|
1 | (Y)+(R1)–>Z | Y 中数据和 R1 中数据相加,经过 ALU 计算的结果存入 Z 中 |
~ | Ad(CMDR)–>CMAR | 读取当前指令的下地址字段,并存放在 CMAR 中,这样就能确定下一条微指令的地址 |
2 | (Z)–>MDR | 将计算结果放入 MDR 中 |
2 | 1–>W | 允许写主存 |
~ | Ad(CMDR)–>CMAR | 读取当前指令的下地址字段,并存放在 CMAR 中,这样就能确定下一条微指令的地址 |
3 | (MDR)–>M(MAR) | 将 MDR 数据放入到主存相应地址中,注意此时 MAR 仍存储着 R0 的数据 |
~ | Ad(CMDR)–>CMAR | 读取当前指令的下地址字段(此时该字段应为取指周期微程序的首地址),并存放在 CMAR |
5 综合例题
例 1
【例 1】假设某机器有 80 条指令,平均每条指令由 4 条微指令组成,其中有一条取指微指令是所有指令公用的。微指令长度为 32 位,请估算控制存储器 CM 的容量。
【解】平均每条指令由 4 条微指令组成,其中有一条取指微指令是所有指令公用的,那么剩余的 3 条指令则是执行周期的指令,所以执行周期微指令一共有 80*3 = 240 条,再加上取指周期的微指令,CM 一共存储 240+1 = 241 条微指令。
考虑微指令的格式,因为 241 < 28=256,所以下地址位数至少有 8 位。因此,CM 的存储单元个数有 256 个,每个存储单元存放一个 32 位的微指令,则 CM 容量为 32b*256。
例 2
【例 2】某微程序控制器中,微指令采用水平型格式、长度为 26 位,操作控制字段采用字段直接编码法,共 5 组,每组共有 5 个、8 个、15 个、27 个、3 个微命令;顺序控制字段采用下址法 + 测试网络法(断定法),测试网络有 2 种外部测试条件。
(1)请设计该微程序控制器的微指令格式。
(2)控制存储器 CM 的容量最大应为多少?
【解】(1)操作控制字段采用字段直接编码法,共 5 组,每组共有 5 个、8 个、15 个、27 个、3 个微命令,则状态数分别为 6,9,16,28,4,因为 6 < 23, 9 < 24, 16 = 24, 28 = 25, 4 = 2^2,所以需要的位数为3,4,4,5,2,操作控制位一共 3+4+4+5+2=18 位。
测试条件有 2 种,因此测试字段占 2 位。剩余的下地址位数 26-18-2=6 位。
(2)下地址位数为 6,则 CM 存储单元个数为 26=64,容量为 26b*64。
操作控制(微操作码) | 顺序控制(判断测试字段) | 顺序控制(后继地址字段) |
---|---|---|
18b | 2b | 6b |
例 3
【例 3】某微程序控制器中,采用水平型直接控制(编码)方式微指令格式,后继微指令地址由微指令的下地址字段给出。已知机器共有 28 个微命令、6 个互斥的可判定的外部条件,控制存储器的容量为 512 × 40 位。设计其微指令格式。
【解】CM 容量为 512 × 40 位,说明微指令字长为 40 位,下地址需要 9 位(512 = 29)。6 个可判定的外部条件,且互斥,说明微指令的判断字段需要 3 位(6 < 23),这样控制字段需要 40-9-3=28 位。
操作控制(微操作码) | 顺序控制(判断测试字段) | 顺序控制(后继地址字段) |
---|---|---|
28b | 3b | 9b |
例 4
【例 4】某机共有 52 个微操作控制信号,构成 5 个相斥类的微命令组,各组分别包含 5、8、2、15、22 个微命令。已知可判定的外部条件有两个,微指令字长 28 位。
(1)请设计该微程序控制器的微指令格式。
(2)控制存储器 CM 的容量最大应为多少?
【解】(1)有 5 个相斥类的微命令组,各组分别包含 5、8、2、15、22 个微命令,则各组的状态数为 6,9,3,16,22,因为 6 < 23, 9 < 24, 3 < 2^2, 16 = 24, 22 < 25,所以控制位需要 3+4+2+4+5=18 位。
可判定的外部条件有两个,则判断位数需要 2 位。剩余的下地址位需要 28-2-18=8 位。
(2)CM 所需的容量为 28*28 = 256*28b。
操作控制(微操作码) | 顺序控制(判断测试字段) | 顺序控制(后继地址字段) |
---|---|---|
18b | 2b | 8b |
例 5
【例 5】有指令STA X
(X 为主存地址)。
(1)若采用硬布线控制器,写出全部的微操作命令。
(2)若采用微程序控制器,写出全部的微指令。
【解】
(1)若采用硬布线控制器,写出全部的微操作命令。
- 取指周期:
微操作 | 控制信号 |
---|---|
(PC)–>MAR | PCout, MARin |
1–>R | 无 |
M(MAR)–>MDR | MDRinE |
(PC)+1–>PC | PC+1 |
(MDR)–>IR | MDRout, IRin |
OP(IR)–>ID | 无 |
- 间址周期:
微操作 | 控制信号 |
---|---|
Ad(IR)–>MAR 或 Ad(MDR)–>MAR | MDRout, MARin |
1–>W | 无 |
ACC–>MDR | ACCout, MDRin |
MDR–>M(MAR) | MDRout |
- 无执行周期。
(2)若采用微程序控制器,写出全部的微指令。
- 取指周期:
微指令条数 | 微操作 |
---|---|
1 | (PC)–>MAR |
1 | 1–>R |
~ | Ad(CMDR)–>CMAR |
2 | M(MAR)–>MDR |
2 | (PC)+1–>PC |
~ | Ad(CMDR)–>CMAR |
3 | (MDR)–>IR |
~ | OP(IR)–>CMAR |
- 间址周期:
微指令条数 | 微操作 |
---|---|
1 | Ad(IR)–>MAR 或 Ad(MDR)–>MAR |
1 | 1–>W |
~ | Ad(CMDR)–>CMAR |
2 | ACC–>MDR |
~ | Ad(CMDR)–>CMAR |
3 | MDR–>M(MAR) |
~ | Ad(CMDR)–>CMAR |
- 无执行周期。
【组成原理-处理器】微程序控制器相关推荐
- 计算机组成与原理如何书写DEC微指令,计算机组成原理课程设计16位机微程序控制器指令系统设计与实现.doc...
计算机组成原理课程设计16位机微程序控制器指令系统设计与实现 一.设计题目 16位机微程序控制器指令系统的设计与实现 二.设计目的 通过看懂教学计算机组合逻辑控制器中已经设计好并正常运行的几条基本指令 ...
- 众友科技计算机组成原理,组成原理:采用微程序控制器的模型机CPU设计(10页)-原创力文档...
课程设计报告 课程名称: 计算机组成原理 设计题目: 采用微程序控制器的模型机 CPU设计 院 系: 班 级: 设 计 者: 学 号: 指导教师: 目 录 课程设计(大作业)报告 1 昆明学院课程设计 ...
- 计算机组成实验微程序控制器实验,计算机组成原理实验报告3++微程序控制器实验.doc...
文档介绍: 计算机组成原理实验报告3微程序控制器实验计算机组成原理实验报告实验三微程序控制器实验一.实验目的与要求:实验目的:1.理解时序产生器的原理,了解时钟和时序信号的波形;2.掌握微程序控制器的 ...
- 计算机微程序控制器实验报告,计算机组成原理微程序控制器实验报告
计算机组成原理实验报告三:微程序控制器实验 2011-05-06 01:00:09| 分类: 实验报告 | 标签:实验 微程序 字段 微指令 信号 |字号大中小 订阅 实验三:微程序控制器实验 一. ...
- 计算机组成原理微控制设计实验总结,计算机组成原理微程序控制器实验报告.doc...
计算机组成原理微程序控制器实验报告.doc 计算机组成原理实验报告三:微程序控制器实验?? 2011-05-06 01:00:09|??分类: 实验报告 |??标签:实验??微程序??字段??微指令? ...
- 计算机组成原理 微程序控制器实验
微程序控制器实验 实验环境 计算机组成原理实验环境 实验目的 掌握微程序控制器的组成原理和工作过程. 理解微指令和微程序的概念,理解微指令与指令的区别与联系. 掌握指令操作码与控制存储器中微程序的对应 ...
- 计算机微程序控制器实验报告,计算机组成原理实验报告三:微程序控制器实验.doc...
计算机组成原理实验报告三:微程序控制器实验.doc 微程序控制器实验报告一. 实验目的1 掌握微程序控制器的功能.组成知识.(2)掌握为程序的编制.写入.观察微程序的运行二.实验设备PC机一台,TD- ...
- 计算机组成原理实验四 微程序控制器实验报告
我班算是几乎最后一个做实验的班级了,报告参考了一些朋友提供的数据加上一些自己的主观拙见,本人水平有限加之制作仓促难免有错误,望大家批评指正. 4.1 微程序控制器实验 一.实验目的 (1) 掌握微程序 ...
- 计算机组成原理——微程序控制器
(截图来自MOOC平台华中科技大学计算机组成原理课程) 硬布线控制器存在一些缺陷:逻辑设计比较繁杂,而且每当需要新增或删除指令时,都需要对整个系统进行变更.因此,人们发明了微程序控制器. 硬布线控制器 ...
最新文章
- linux查看硬链接的对应文件,linux查看硬链接对应的所有文件
- 一些有用的资源分享(工具+电子书)
- 过滤脚本(C#,script,iframe,html)
- mysql格式化小数保留小数点后两位(小数点格式化)
- Spark学习笔记——在集群上运行Spark
- mysql innodb引擎数据存储方式和索引的概念
- 【elasticsearch】Failed Elasticsearch bulk request: request retries exceeded max retry timeout
- android java写文件_Android中文件的读写(一)----流操作
- 在maven项目中解决第三方jar包依赖的问题
- jQuery操作DOM元素
- 【php】基础学习4
- 仓库管理一团糟,WMS仓库管理系统如何解决这些难点
- mysql健康档案管理系统_益康居民健康档案管理系统(网络版)
- 官方完整HL7 ECG-XML例子及注释翻译(4)
- 美团开店宝Android pad,美团开店宝(com.sankuai.meituan.merchant) - 9.2.1 - 应用 - 酷安
- 基于web的小票打印
- 经典题:用Java打印空心菱形
- fpga卷积神经网络加速器,FPGA卷积神经网络综述
- ubuntu 破解Beyond compare 4
- Java面试题集(116-135)
热门文章
- 每日一问-ChapGPT-20221231-关于中医的各国看法
- 关于django外键设置的问题
- matlab syms函数例题,matlab函数计算syms f o s z k D t m q T x;p=f-o-(s-o)*(1-erf(0.5*
- Javaweb——水果系统基础版
- 住房公积金提取不再难,个人直接通过客户端搞定!
- 基于组态王的过程控制——以巧克力牛奶的生产为例
- 安卓recovery菜单中英文对照
- Servlet | ServletConfig接口、ServletContext接口详解
- 【视频】海康威视摄像头RTSP协议格式
- 班章管家:为什么出资会亏钱?在出资中“勤勉”并不管用