读书频道 > 系统 > 其他综合 > 计算机系统:系统架构与操作系统的高度集成
3.5.1 ROM加状态寄存器
2015-08-19 16:49:16     我来说两句 
收藏    我要投稿   
本书采用集成方法,系统地讲解了计算机系统的软件和硬件知识。全书分为5个模块:处理器、内存系统、存储系统、并行系统和网络,分别讨论了处理器及其相关的软件问题、内存系统和分级存储体系、I O和文件系统、操  立即去当当网订购
我们来看一个非常简单的设计。首先,我们需要知道处理器处于什么状态。前面我们介绍了控制单元的FSM,它包含FETCH(取指)、DECODE(译码)和EXECUTE(执行)状态。这是FSM抽象中处理器宏的状态。在真实实现中,根据数据通路的功能,需要许多微状态来表示宏状态的细节。例如,我们假设需要3个微状态来实现FETCH宏状态。我们将这些为微状态进行编码:
现在我们引入状态寄存器,它的内容就是这些微状态的编码。所以,在任何情况下,这个寄存器的值都表示处理器的状态。
 
状态寄存器的引入让我们又从FSM抽象向硬件实现接近了一步。下面,为了在每个微状态下控制数据通路的各个元件,我们需要产生之前列出的控制信号。下面我们来讨论如何才能产生这些控制信号。
 
一种最简单的方法是,用状态寄存器作为表的索引。表中的每一项都包含该状态所需要的全部控制信号。用前面的乐队做比喻,指挥面前有整个音乐的乐谱。在演奏曲子时,指挥指导管弦乐队的演奏。指挥能从乐谱的每一行中看出,谁应该在哪一个时间点演奏哪一个音符。同理,我们能从控制单元表的表项看出,数据通路的元件在这个状态下应该做什么。每个演奏者都知道自己需要演奏什么。同样,每个数据通路元件也知道自己的功能。两者的相同之处是,他们都需要别人(别的东西)告诉他们现在该做什么。所以,指挥者和控制单元有着极其类似的工作,他们在时间上为演奏者和数据通路提供了必要的线索(解决了“什么时候”的问题),使其能够在正确的时间做相应的事情。这似乎很简单,所以表中的每个控制信号用1位表示。如果该位为1,则表示产生该控制信号;为0,则不产生。当然,func和regno字段的位数与它们在数据通路中的宽度有关(见图3-15,分别为2位和4位)。图3-17给出了控制信号表中的表项。
 
驱动信号 加载信号 写信号
当前状态 PC ALU Reg MEM OFF PC A B MAR IR Z MEM REG func regno
 
控制单元需要从一个状态转移到另一个状态。例如,FETCH宏状态需要3个微状态,那么就会存在下面的情况:
 
当前状态 下一状态
 
ifetch1 ifetch2
 
ifetch2 ifetch3
 
如果将下一个状态也写在表中,那么状态转移就变得相对简单。现在来看看图3-18中的表。


 
驱动信号 加载信号 写信号
 
当前状态 PC ALU Reg MEM OFF PC A B MAR IR Z MEM REG func regno Next state
 
 
...
 
 
让我们来研究如在硬件上实现这个表。
 
这个表其实就是存储元件。这种存储元件的特性是,一旦我们决定了某个状态所需要的控制信号,该表项的内容就被冻结。我们称这种存储器为只读存储器,或ROM。
 
所以,控制单元的硬件实现看起来就像图3-19那样。在每过一个时钟周期上,状态寄存器就转移到使用当前时钟周期内ROM表项输出指定的下一个状态。这是驱动数据通路中所有边沿触发存储元件的同一个时钟(见图3-15)。从ROM发出的所有加载信号(LdPC、LdMAR等)充当时钟信号的掩码,决定它们控制的存储元件是否在该时钟周期内被驱动。
 
下一件要做的事情就是将数据通路和控制单元结合起来。只要简单地将数据通路(见图3-15)的相应命名的实体与对应的ROM输出连接起来。
 
 
控制单元的工作方式如下:
 
1)状态寄存器给出了本时钟周期内处理器的状态。
 
2)通过状态寄存器的值对ROM进行索引访问。
 
3)ROM的输出就是当前传送给数据通路的控制信号集合。
 
4)在本时钟周期内数据通路执行控制信号指定的功能。
 
5)将ROM给出的下一状态传送给状态寄存器的输入,使之在下一个时钟周期开始时能够转移到下一个状态。
 
每个时钟周期都重复上述5个步骤。
 
图3-13将处理器的控制单元描述为一个FSM。为了方便起见,我们再将它画在图3-20中。现在我们来检查图3-20中的每个宏状态需要发生什么,还有控制单元如何实现它们。对于每个微状态,我们在旁边标出了数据通路的操作。
 
点击复制链接 与好友分享!回本站首页
分享到: 更多
您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:3.5 控制单元设计
下一篇:3.5.2 FETCH宏状态
相关文章
图文推荐
2.7.12 使用仿真器查
2.7.11 栈和寄存器组
2.7.8 出栈
2.7.7 压栈
排行
热门
文章
下载
读书

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训
版权所有: 红黑联盟--致力于做最好的IT技术学习网站