在本文中,我们将详细讨论微指令格式的 Nano 编程,并通过示例帮助理解,还将讨论 Nano 编程的必要性。让我们一一讨论。
先决条件 –水平和垂直微指令
微指令格式:
微指令的控制域决定了要产生的控制信号。它有两种不同的格式水平或垂直。让我们一一讨论。
类型 1 :
横向微指令:
在这里,我们将讨论水平微指令格式如下。
- 微指令的每一位对应一个控制信号。
- 该位为1,表示微指令将产生相应的控制信号。如果微指令中有N位,那么它可以通过该微指令产生N个控制信号。
- 随着控制信号的增加,微指令变宽。因此,控制内存水平增长。
- 因为没有使用解码器,所以执行速度更快。
- 控制内存大,因为微指令很宽。
类型 2 :
垂直微指令:
在这里,我们将讨论垂直微指令格式如下。
- 微指令的位被解码。
- 解码输出决定要产生的控制信号。
- 微指令中的N位将总共产生2 N 个控制信号。
- 但是一条微指令可以产生一个控制。
- 需要更多的微指令。
- 此外,解码使执行速度变慢。
- 电路很复杂。
纳米编程的需要:
- 水平微指令可以同时产生多个控制信号,但范围很广。这使得控制内存非常大。
- 垂直微指令很窄,但解码后只产生一个控制信号。这使得控制内存较小,但执行速度较慢。
- 这两种方法各有优缺点。
- 因此,需要将这两种技术结合起来称为纳米编程。
纳米编程:
- 这里我们有一个两级控制存储器。
- 指令从主存储器中取出到指令寄存器 IR 中。
- 使用它的操作码,我们将它的第一个微指令的地址加载到 µPC 中,
- 使用这个地址,我们从微控制存储器 (μCM) 中获取微指令到微指令寄存器 μIR。
- 这是垂直形式并由解码器解码。
- 解码后的输出在纳米程序计数器 (nPC) 中加载新地址。
- 通过使用该地址,将纳米指令从纳米控制存储器(nCM)取出到纳米指令寄存器(nIR)中。
- 这是水平形式,可以直接产生控制信号,一次可以是多个。
- 这种组合提供了两种技术的优势。
- 由于微指令是垂直的,因此控制内存的大小很小。
例子 –
- 假设处理器有 32 条指令(8 条用于算术运算,8 条用于数据传输操作,8 条用于逻辑运算,8 条用于移位运算)。假设我们总共需要 32 个控制信号,其中 8 个负责执行数据传输操作,8 个用于逻辑,8 个用于移位,8 个用于算术。
- 如果我们用水平微指令来实现,那么每条微指令的大小应该是32位。很可能对于数据传输操作,我们不需要其他 3 种指令的控制信号,因此在整个微指令中,用于为不同的 3 种指令类型生成控制信号的 27 位为 0(垃圾),这会占用大量内存空间浪费,也控制内存大小的增加。
- 如果我们使用纳米编程,那么微控制存储器具有通过解码来识别指令类型的指令,即使用垂直微指令。在识别指令类型后,纳米控制存储器负责为先前识别的特定指令类型生成控制信号。所以这样做的好处是每个nano指令大小减少到8位,每个微指令大小减少到2位(用于识别4种不同类型的指令和2×4解码器)即垂直微指令的优势我们也可以生产同时针对特定指令类型的多个控制信号,这是水平指令的优点。
Nano编程的缺点
增加内存访问时间:-两级内存方法的主要缺点是由于 Nano 控制内存所需的额外内存访问而导致速度损失。