第七章 微序列控制单元设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
同济大学 软件学院
⑤ 微指令的地址控制字段及有关状态条件送往微地址
形成电路,产生下条微指令的地址,再去读取并执
行下条微指令。如此循环,直到一条机器指令的微 程序全部执行完毕。 ⑥ 一条指令的微程序执行结束,再启动取指令微指令 或微程序,读取下条机器指令。根据该指令码形成 起始微地址,又转入执行它的一段微程序。
◆ DRM和PCIN都在FETCH2状态下发生,那么
这两种微操作必须被分配到不同的域中。
则该CPU的微操作至少需要两个域,把它
同济大学 软件学院
标记为M1和M2。 包括NOP操作在内每个域的微操作如下: M1 NOP M2 NOP
DRM
PCIN
( FETCH2: DR←M,PC←PC+1)
◆ PCIN和PCDR都能修改PC值,所以我们现在把PCDR
同济大学 软件学院
◆ 垂直微代码
所有微操作组合成组,组中的每个微操作 被分配一个唯一的编码值。 例如:16个微操作 —— 四位二进制来编码 微指令位数少,但需要译码器。
◆ 控制信号的直接生成
微代码将微操作组合在一起,不同的是,它 把控制信号值直接存储在微指令中。 代码的可读性差,调试困难。
同济大学 软件学院
微序列控制器:把控制信号存储在一个查找表
ROM,即微代码存储器中。按照正确的次序访问 ROM中的内容,查找表ROM就可以以适当的顺序发 出控制信号,从而实现处理器指令集中的指令。
同济大学 软件学院
几个基本概念 1. 微操作控制信号: 如:PCLOAD、ACINC 2. 微操作:由微操作控制信号控制实现的最基本操作。 一个微操作是在一组微操作控制信号的控制下实现的。 如:AR←PC ARLOAD、PCBUS
001010000
010001000 000001000 000000100
微指令
微指令 微指令 微指令
同济大学 软件学院
7.1 微序列控制器设计基础
7.1.1 微序列控制器的操作
1.典型微序列控制器的组成
◆ 寄存器存储的值与CPU状态图中的一个状态相对
应,且当作地址输入到微代码存储器中。
◆ 存储器的输出是一条微指令,即那个地址对应的
同济大学 软件学院
四、增加硬件把这些位值转换为所代表的微操作

M1:把这个域输入到一个3-8译码器中
例如:输出2 → 微操作ARPC
Biblioteka Baidu
M2:只有1位,不需要用译码器,直接驱动PCIN。
同济大学 软件学院
同济大学 软件学院
实践视角:毫微指令
毫微存储器与毫微指令
同济大学 软件学院
用毫微存储器可以减少微序列控制器中存储器的
总的大小。
如果10种不同的微指令有完全相同的微操作,那 么所有这些微指令可以指向毫微存储器的同一个单元。 例如:一个有128条微指令和32个不同微操作的 微序列控制器。
◆ 水平微代码的微序列控制器
128*32=4,096 位存储器
同济大学 软件学院
假设:这128条微指令中只有16种不同的微操作组合, 在一个16*32的毫微存储器中存储这16种模式。每条
同济大学 软件学院
除了FETCH3,状态图中的每一种状态都可以这么设臵。 FETCH3必须映射到正确的执行周期,所以要求 SEL=1,表示采用映射地址。
同济大学 软件学院
同济大学 软件学院
7.2.3 用水平微代码生成微操作
1.非常简单CPU的微操作及它们的助记符
1 -- 微操作发生
0 -- 不发生
◆ AIDR:M2→M1
M2的微操作数从5变到4,而M1的从5变
到6。这时,M1仍需要3位,但是M2现在只 需要2位,微代码的宽度就减少了1位。
◆ ARPC和PCDR :M2→M1
M1:8种微操作,需要3位 M2:两种微操作,需要1位
总共4位(最少)
同济大学 软件学院
同济大学 软件学院
三、生成该CPU的最终微代码
或者输入到组合逻辑以生成CPU 的控制信号,或者直接产生控制信号。
◆ 下一个地址(微序列控制器的序列控制部分)
用来产生存储到寄存器中的下一个地址,
这些位连同指令的操作码和标志值一起输入
到组合逻辑以产生下一条微指令的地址。
同济大学 软件学院
3. 微程序控制器的工作过程 ① 启动取指令微程序 (PC)→MAR,读出机器指令→IR,PC增量 ② 根据IR中的操作码,通过微地址形成电路产生该指令 的微程序的起始微地址,并送入μMAR中。 ③ μMAR中的微地址经译码、驱动,从被选的控存单元 中取出一条微指令。 ④ 微指令的操作控制字段经译码或直接产生一组微操作 控制信号并送往有关的功能部件,控制其完成所规定 的微操作。
1.典型的微指令格式
◆ 选择域:指明下一条微指令地址的来源
◆ 地址域:指明一个绝对地址
◆ 微操作域:一个或多个
同济大学 软件学院
2.微操作的三种编码方法
◆ 水平微代码

列出CPU所要执行的每一个微操作 将微指令微操作域中的一位分配给每个微操作
例如:一个CPU需要执行50个微操作, 它的每一条微指令的微操作域将占用50位。 微指令太长,大部分微操作位不是有效的。
3. 微指令:控制完成一组微操作的二进制编码字。
4. 微程序或微代码:一系列微指令的有序集合。 每一条机器指令对应着一段微程序,通过解释 执行这段微程序,完成指令规定的操作功能。
同济大学 软件学院
一段微程序
(在控制存储器ROM中)
FETCH1(0) 100000000 微指令
FETCH2(1)
机器指令ADD (在主存中) FETCH3(2) ADD1(8) ADD2(9)
有效,则相应的控制位臵1,否则臵0。
同济大学 软件学院
例如: FETCH2:DR←M和PC←PC+1
为了无条件转移到一种具体的状态,微序列
控制器通过地址域和选择域来提供状态的地址。 例如: FETCH1 → FETCH2 0号单元:SEL=0

ADDR=0001
0号单元对应于状态FETCH1


SEL=0使微序列控制器从地址域得到它的下一地址
把地址域臵为0001,使它转到状态FETCH2所对应 的单元。
存储单元内容。所有微指令集中组成CPU的微代
码或微程序。
◆ 下址产生模块产生所有可能的下一地址或下址,
然后从中选择一个正确的下址送入寄存器中。
同济大学 软件学院
典型微序列控制器的组成
同济大学 软件学院
2.微指令的组成 微指令由几个域组成,其bit位可分为两组。
◆ 微操作(微序列控制器的微序列部分)
(1) 映射函数与映射逻辑
◆ 映射函数:1IR[1..0]0
状态ADD1、AND1、JMP1和INC1 → 1000、1010、1100和1110 (即8,10,12和14)
同济大学 软件学院
◆ 映射逻辑
同济大学 软件学院
(2) 非常简单微序列控制器的状态地址表
同济大学 软件学院
2. 生成正确的微代码序列
(2)把这一地址装载到寄存器,微序列控制器就
能转入到正确的执行过程。
同济大学 软件学院
在取指令周期的末端使用一次。
◆ 微子程序
子程序入口地址:由微代码存储器给出绝对地址。 返回地址(当前地址加1):存储在微子程序寄存器 或硬件堆栈中,此地址 用从微子程序中返回。
同济大学 软件学院
7.1.2 微指令的格式
7.2 非常简单微序列控制器的设计和实现
采用微序列控制器重新设计第六章所讨论的非 常简单CPU。
指令集、有限状态机、数据通路和ALU单元都
是相同的,CPU内部的数据流也没有变化,只有控 制信号的产生方法有所改变。
同济大学 软件学院
步骤:
1.确定基本结构
下地址来源 微代码存储器的地址宽度 2.编写微程序 顺序控制部分:地址域、选择域
同济大学 软件学院
4.产生所需的控制信号
A R ← P C ; AR←DR[5..0]
PC←PC+1; PC←DR[5..0] DR←M IR←DR[7..6]
AC←AC + DR ; AC←AC ∧ DR ; AC←AC+1
同济大学 软件学院
7.2.4 用垂直微代码生成微操作
一、从垂直微代码中生成微操作的一般情况 在垂直微代码中,所有的微操作被分组到不 同的域中,使得任何状态一个域中最多只有一种
◆ 剩余的每一状态都必须转到一个具体的次态,
可以通过绝对跳转来实现。
同济大学 软件学院
必须确定CPU的几件事情: 从微代码存储器输出的绝对地址宽度有几位?
◆ CPU的状态图中共有九种状态,每种状态代表
一条微指令,从中选择的话最少需要4位绝对
地址。既然映射硬件也生成同样宽度的地址,
那么输出的地址就是4位宽度。
微指令需要一个4位的域来指向毫微存储器中的一个
正确的模式。
◆ 毫微存储器
16*32=512位
◆ 微代码存储器
额外的128*4=512位的指针
共512位+512位 = 1,024位
同济大学 软件学院
7.2.5 从微代码直接产生控制信号
1. 直接输出控制信号
微序列控制器为每个控制信号保留一位,以 代替水平微代码设计中的微操作和垂直微代码 设计中的M1和M2。 对微代码存储器的每个字来说,如果信号
微操作是有效的,然后域中的每个微操作被赋予
一个唯一的域值。 例如:8种不同的微操作 —— 3位二进制 (从000到111之间的任何一个值)
同济大学 软件学院
微操作域位从微代码存储器输出到一个译 码器,译码器的输出就是在水平微代码中直接
产生的微操作。
同济大学 软件学院
同济大学 软件学院
二、为非常简单CPU设计垂直微代码 任务:给各种微操作分配不同的域 1. 指导性原则 (1) 对于同一状态下发生的两个不同的微操作,
同济大学 软件学院
2.非常简单微序列控制器初步的水平微代码
同济大学 软件学院
3.非常简单微序列控制器优化后的水平微代码
优化微代码:
◆ 在所有的状态中,ARDR和IRDR的值是相同的。
用一个输出AIDR来驱动这两个微操作。
◆ AIDR组合了两个微操作AR←DR[5..0]和
IR←DR[7..6]
同济大学 软件学院
◆ 多路选择器输出到寄存器的输入、以及寄存器
输出到微代码存储器的输入,也都是4位宽度。
同济大学 软件学院
7.2.2 生成正确序列并设计映射逻辑
设计控制有限状态机状态转换的微代码。 1.给有限状态机的每种状态分配一个微代码地址 着重考虑:每一执行周期的第一个状态的地址分配
(它决定了实现映射功能的逻辑)
操作控制部分:微操作域
3.产生微操作控制信号
同济大学 软件学院
7.2.1 基本布局
1.非常简单微序列
控制器的基本结构
同济大学 软件学院
2. 只用到两种可能的下址方式
操作码映射 绝对跳转

为什么可以这样做?
考虑第六章所示的该CPU的状态图。
◆ 取指令周期的最后一个状态FETCH3可以转到
四个执行周期中的一个,这必须通过映射输 入来实现。
同济大学 软件学院
4.下址的产生 四种常用方法:
◆ 当前地址加1:微代码存储器中的下一地址,
即当前地址加1。
微代码程序在微代码存储器中顺序存放。
(提高可读性、微程序易于调试)
同济大学 软件学院
◆ 绝对地址:由微代码存储器提供。 ◆ 映射逻辑
每个微序列控制器必须能够访问正确的执
行周期,这功能可用映射逻辑来实现。 (1)已读取指令的操作码输入到一个映射硬件, 此硬件将该操作码转换或映射成该指令执行 周期的第一条微指令所在的地址;
将它们分配到不同的域中。每个域在一个
周期中只能输出唯一一个微操作的值,如 果两个微操作要同时出现,则它们不可能 在同一个域中。 (2) 必要的话在每个域中包括一个NOP操作
同济大学 软件学院
(3) 分配剩下的微操作以便充分地利用微操作的 域位。
(4) 把修改相同的寄存器的微操作组合在同一个
域中。 2. 步骤 (1) 将微操作分组
也加到M2中。
同济大学 软件学院
◆ 把剩下的微操作任意分配给这两个域,但要注意
把那些改变同一个寄存器值的微操作放到同一个域中。
◆ 产生如下的分配
M1 NOP DRM ACIN
M2 NOP PCIN PCDR
PLUS
AND
同济大学 软件学院
ARPC
AIDR
(2) 每个域有五种微操作,因此每个域需要3位。 (3) 对这种分配进行一些调整,减少总的位数。
同济大学 软件学院
程序、指令、微程序、微指令、微操作控制信号、微 操作的关系
1 1、微命令2、 微命令n) 微指令(微命令 完成一组微操作 指令1微程序1微指令2 程序 微指令n 微程序2 指令2 微程序n 指令n
相关文档
最新文档