- 2
- 0
- 约7.56千字
- 约 9页
- 2018-11-07 发布于江苏
- 举报
上一章我们讲述两个简单的CPU的设计的完整过程,它们的
上一章我们讲述了两个简单的CPU的设计的完整过程,它们的控制单元都使用硬布线逻辑直接实现的。实现控制单元的另外一种方法就是微序列控制单元,我们将在本章进行讨论。
1基本的微序列设计
当我们设计一个CPU的控制单元的时候我们往往是先给出一个CPU的状态图,然后设计一个有限状态机。硬布线逻辑是根据CPU的现态和输入(包括操作码和标志寄存器的内容)来进行状态转移,同时输出数据路径个组件的控制信号。
1.1微序列操作
一个微序列控制器也是一个有限状态机,一个通用的微序列控制器如下图:
说明:
图中寄存器用来存储CPU状态图中的一个状态,把它作为微代码存储器的地址访问微代码存储器。
微代码存储器输出微指令,可以分成两个部分:一个部分是微操作,这些信号被输出到CPU的其他部分用以产生CPU数据路径中的控制信号。另一部分被用来产生下一个访问微代码存储器的地址。这一部分加上操作码、标志寄存器以及CPU现在的状态(也就是Register中的内容)一起产生下一次访问微代码存储器的地址。
下一个地址产生单元接受操作码、标志寄存器内容和微代码存储器的输出,然后根据现在CPU所处的状态决定产生下一次访问微代码存储器的地址。它生成所有可能的转移地址,然后选择正确的输出到寄存器中。
一个可能的地址就是微代码存储器现在地址加一。
另一个可能的地址是要跳转的绝对地址。
每个微序列控制其还需要能够正确地访问执行例程,这就需要用到影射逻辑。把取指得到的操作码影射到执行子例程的第一条微指令的地址上。这个影射操作时在每个取指周期结束时进行的。
像所有高级语言编程一样,微代码也可以有子程序。当几条指令执行同一段微代码时,这段微代码就可以用一个子程序来实现。当调用此子程序时,这个子程序的微代码地址就被作为一个跳转的绝对地址赋给寄存器,而当前地址加一的地址则被保存为返回地址。(需要硬件的寄存器或者堆栈来实现)
一个微序列控制器最基本的四个部分就是:
现在地址加一
绝对地址
影射逻辑地址
子例程返回地址
1.2微指令格式
每个微程序控制器可以有它自己的微指令格式。但是每条微指令必须包含以下几个部分的内容:
下面我们分别介绍这几个部分的内容:
SELECT域
SELECT域用于指名下条指令地址的来源。它仅仅是指名下条指令地址的来源,而不直接给出下条指令的地址。例如:取指例程最后一条指令时,它的SELECT域会指名下一条地址将来自影射逻辑。
对于条件转移指令,执行子例程的执行需要根据标志为的判断来进行。对于这样的指令SELECT域要有相应的标志寄存器的选择。然后根据所选择的标志寄存器以及SELECT域的内容来决定下一地址的来源。
ADDR域
ADDR域就是来指名下一条指令执行的绝对地址的。例如当执行完一个例程需要进入取指例程时,对指明了下一个地址来源的微指令来说,ADDR域是无用的。例如:影射逻辑地址。
MICOR-OPERATION域
MICRO-OPERATION域用来描述要执行的微操作,有三种描述方法:
水平微代码(全编码??)
为了实现水平微代码,我们先列出CPU执行的所有微操作。然后我们给每个微操作赋MICRO-OPERATION域中的1bit。这将导致MICRO-OPERATION域的位数很多。而且这种编码方法将使很多的MICRO-OPERATION域中的位在大多数时间无用。
垂直微代码(全编码??)
为了实现垂直微代码,CPU可以执行的微操作被分组,然后每个微操作被赋予一个组合的二进制数,例如:16个微操作可以用4bit的MICRO-OPERATION域来描述(0000~1111)。事实上我们用4bit只能表示15个微操作,因为我们必须空出一个状态来描述空操作。垂直微代码的编码方式需要很少的MICRO-OPERATION域的位数,但是它需要一个译码器来产生真正的微操作信号。
直接生成控制信号
在以上两种方法中,CPU都必须要把微操作信号转换成控制信号来进行数据路径的载入(LOAD)、清零(CLR)、加一(INC)、ALU控制以及总线上各个Buffers的开关等操作。第三种微代码的编码方法就是把控制信号直接存储到微指令中,这种方法不需要另外的组合逻辑,但是它可读性差,不宜于调试。
2设计和实现A Very Simple CPU的微序列控制单元
为了验证为序列控制器的设计过程,我们首先来考虑前一章中的Very Simple CPU的控制单元的设计。本节将用微序列控制器重新设计其控制单元。我们将不在重新讲述指令集、有限状态机、数据路径以及ALU的设计。我们只讲述控制信号的产生过程。
2.1基本流程
这个Very Simple CPU的微序列控制器的基本框图如下:
在这个Very Simple CPU中只有两种可能的地址,一个是操作码影射地址另一个是绝对跳转地址
原创力文档

文档评论(0)