微指令测序技术设计需要:
第一个目的是最小化控制存储器的大小,因为控制存储器存在于处理器内部。
第二个目的是尽可能快地执行微指令。这意味着可以尽快计算出下一条微指令的地址。
负责减少控制内存大小的因素是——
- 并行度,即可以同时执行多少个微操作。
- 控制信息的表示/编码。
- 指定下一条微指令地址的方式。
处理器中执行的微操作数量取决于处理器架构,而指令的编码使其简短。但主要关心的是计算下一条微指令的地址。
下一条微指令的地址可以是——
- 序列中下一条微指令的地址,即一个接一个。
- 分支地址(可以是有条件的或无条件的)。
- 根据指令的操作码计算。
第一条微指令的地址可以从存在于指令寄存器中的指令的操作码计算一次,然后将该地址加载到 CMAR(控制存储器地址寄存器)中。 CMAR 将地址传递给解码器。解码器从控制存储器中识别出相应的微指令。
一条微指令有两个字段:控制字段和地址字段。
- 控制领域——
确定要生成哪些控制信号。 - 地址字段 –
确定下一条微指令的地址。 - 该地址被进一步加载到 CMAR 中以获取下一条微指令。
众所周知,通常微指令不会长时间按顺序执行。假设在 4 或 5 条微指令之后,分支通常会发生。因此,我们的主要动机是使分支算法更好,以便可以有效地计算下一条微指令的地址。
因此,微指令排序是确定微程序流程的方法。
所以有一些基于用于排序的地址数量的技术——
- 每个微指令中的两个地址字段(双地址字段)。
- 单地址字段(Single address field)。
- 可变格式微指令
1. 双地址字段 –
.
- 在这种方法中,微指令不是按顺序执行的。
- 指令寄存器(IR)给出了第一条微指令的地址。
- 此后,每条微指令给出下一条微指令的地址。
- 如果是条件微指令,它会包含两个地址字段。
- 一个条件为真,另一个条件为假。因此,它被称为双地址字段。
- 多路复用器将根据状态标志决定将加载到控制存储器地址寄存器 (CMAR) 的地址。
此处,浪费了大量控制存储器,因为在许多(即对于顺序或无条件)微指令中至少不需要地址字段之一。
2. 单一地址字段 –
通过一些修改和添加的逻辑,地址数量减少到一个。这里使用了一个称为微程序计数器的新寄存器。在这种情况下, 下一个微指令地址可以是下一个连续地址的地址,也可以是使用操作码生成的地址,也可以是存储在微指令地址字段中的地址。
- 在这种方法中,微指令是按顺序执行的。
- 指令寄存器 (IR) 将第一条微指令的地址提供给 CMAR。
- 此后,地址简单地递增。
- 因此,每条微指令都不需要携带下一条的地址。
- 只要微程序以顺序方式执行,这就是正确的。
- 对于无条件分支,微指令包括分支地址。该地址将加载到 CMAR 中。
- 对于条件分支,微指令包含真条件的分支地址。如果条件为假,CMAR 中的当前地址将简单地递增。
- 这意味着即使在最坏的情况下,微指令也只会携带一个地址。
- 因此,它被称为单地址字段。
- 多路复用器将根据状态标志决定将加载到控制存储器地址寄存器 (CMAR) 的地址。
这种方法是常用的。但是如果指令是顺序执行的,那么单个地址字段中每个微指令中提供的空间就不是很有用了。
3. 可变地址格式——
- 在该技术中使用了两种格式。在这种技术中,微指令中需要一个位来区分控制微指令或分支微指令。第一种格式提供控制微指令(即位用于产生控制信号),而第二种格式提供分支逻辑和地址(可以有条件或无条件分支)。
- 在第一种格式中,微指令包含控制信号,那么下一个微指令地址要么使用指令寄存器的操作码计算,要么是顺序下一个微指令的地址。在这种方法中,分支微指令需要一个额外的周期。