水平微程序控制单元与垂直微程序控制单元

2025年3月17日 | 阅读 8 分钟

为了理解水平和垂直控制单元,我们将首先学习控制单元、微程序,然后是微程序控制单元。之后,我们将学习水平和垂直控制单元之间的区别。

控制单元

控制单元可以被描述为 CPU(中央处理器)的一部分。它是一个引擎,使用适当顺序的控制信号,以便能够运行系统或计算机的全部功能。它用于指导处理器的操作。CU 的工作是告知系统内存、输入输出设备以及算术或逻辑单元如何响应已发送到处理器的那些类型的指令。

微程序设计

微程序设计可以被描述为编写微码以控制 CPU 内存的过程。当计算机的配置和微程序控制单元的建立都完成后,才能生成控制内存的微码。控制单元用于包含控制内存,控制内存可用于存储所有微程序。这类微程序不能频繁修改。微指令可以通过微程序的每一行来指定,这些指令用于定义一个或多个微操作。

微程序控制单元

微程序控制单元用于通过生成控制信号来执行每条指令。在微程序控制单元中使用了特殊的内存单元。通过该内存,我们可以存储与操作相关的控制信号。我们可以将一组控制信号假定为“微指令”,这些信号可执行特定的微操作。通过内部控制单元,我们可以存储微指令的序列。根据存储在控制内存中的控制字,微程序控制单元有两种类型。这些微程序控制单元是垂直微程序控制单元和水平微程序控制单元。现在我们将逐一描述这两种控制单元,如下所示:

水平微程序控制单元

通过解码的二进制格式,我们可以在水平微程序控制单元中表示控制信号,即 1bit/CS。在这里,'n' 个控制信号需要 'n' 位编码。通过单个控制点,水平微程序 CU 中的每一位都将被识别。此控制点用于表明相应的微操作即将执行。在此控制单元中,每个微程序需要较少数量的微指令。通过每一个微指令,可以同时控制多个资源。它还有一个更大的优势,即它能够利用更高效的硬件。

水平 CU 提供了更高程度的并行性。这种并行性包含独立的控制字段和最少的编码。在水平 CU 中,使用资源高效且最优地开发微程序的任务非常复杂。水平微程序控制单元中的每个控制位都是相互独立的。因此,此 CU 提供了极大的灵活性。水平微指令比垂直微指令包含更多信息,因为水平微指令的长度更大。

Horizontal Micro-programmed Vs. Vertical Micro-programmed Control Unit

图:水平微码

垂直微程序 CU

与水平微程序 CU 相比,垂直微程序控制单元可以应用更高程度的编码和可变格式。通过编码的二进制格式,我们可以在垂直微程序 CU 中表示控制信号。在这里,'n' 个控制信号需要 log2n 位编码。每条垂直微指令代表一个微操作。通过垂直 CU,我们可以缩短微指令的长度,同时防止微指令的长度直接受到不断增加的内存容量的影响。

微指令是通过代码执行的,该代码将通过解码器翻译成各个控制信号。因为我们只指定了要执行的微操作,并且微指令的字段被充分利用。基本上有 4 到 6 个字段,这些字段每个指令大约需要 16 到 32 位。与水平微程序相比,我们可以轻松编写垂直微程序。与传统的机器语言格式相同,垂直微指令也包含几个操作数和一个操作。因此,我们可以轻松地将垂直微指令用于微程序设计。

Horizontal Micro-programmed Vs. Vertical Micro-programmed Control Unit

图:垂直微码

水平和垂直微程序 CU 之间的区别

垂直程序化 CU 和水平程序化 CU 之间有许多区别,如下所述:

水平微程序 CU垂直微程序 CU
此控制单元能够支持更长的控制字此控制单元能够支持更短的控制字
在此 CU 中,我们不需要任何类型的附加硬件。在此 CU 中,我们需要附加硬件来生成控制信号。这类硬件必须是解码器的形式。
与垂直微程序控制单元相比,此控制单元灵活性较低与水平微程序控制单元相比,此控制单元灵活性更高
与垂直微程序控制单元相比,此控制单元速度更快与水平微程序控制单元相比,此控制单元速度更慢
与垂直微程序控制单元相比,此控制单元较少利用ROM 编码与水平微程序控制单元相比,此控制单元更多地利用ROM 编码,从而可以缩短控制字的长度。
水平微程序 CU 允许更高程度的并行性。如果存在 'n' 个度,则一次可以启用 n 个控制信号。垂直微程序 CU 允许较低程度的并行性。这意味着并行性可以为 0 或 1。
水平微程序 CU 使用水平微指令。在这里,控制线连接到控制字段的每一位。垂直微程序 CU 使用垂直微指令。在这里,每个操作将通过一个代码来执行,该代码将通过解码器翻译成各个控制信号。

例如

在此示例中,我们将假设一个由假设的控制单元支持的 4k 字。硬件中总共有 16 个标志和 64 个控制单元。现在,我们必须为两种编程类型(即水平和垂直编程)找到字节大小的控制内存和位大小的控制字。

解决方案

Horizontal Micro-programmed Vs. Vertical Micro-programmed Control Unit

对于水平编程

64 位用于 64 个信号

控制字大小 = 4 + 64 + 12 = 80 位

控制内存大小 = 4 KW = ((4 * 80) / 8) = 40 kByte

对于垂直编程

6 位用于 64 个信号,即 log264

控制字大小 = 4 + 6 + 12 = 22 位

控制内存大小 = 4 KW = ((4 * 22) / 8) = 11 kByte

水平和垂直微程序 CU 之间的一些其他区别

现在我们将根据一些参数来描述这些区别,例如顺序、编码、设计和灵活性。这些区别如下:

编码

垂直微程序包含更高程度的编码和可变格式。在这里,代码用于编码控制位。每个操作将通过此代码执行,并且此代码将通过指令解码器解码为多个控制信号。与垂直微程序控制单元相比,水平微程序 CU 能够包含不使用任何编码的水平微指令。水平 CU 用于显示数据通路中的每个控制位。在这里,将单独的位以微指令格式分配给数据通路。控制线用于连接控制字段中的每一位。

序列

水平微程序设计中,我们可以通过顺序方法指定微程序中的下一个指令。这种方法与传统机器学习格式相同。单个控制点用于识别水平微程序中的每一位。此控制点用于表明相应的微操作即将执行。为了打破顺序,我们必须使用特殊的条件和无条件微指令。垂直微程序中使用了相对寻址方案。根据该方案,我们可以通过几位来指定向后跳转或向前相对跳转。在此过程中,每个步骤都需要地址计算。

设计

垂直微程序具有更好的代码密度。由于此功能,控制存储的大小获得了很大的好处。与传统机器语言格式相同,垂直微指令也包含几个操作数和一个操作。每条微指令代表一个微操作。数据接收端和资源通过操作数指定。相比之下,水平微程序表示将同时执行的一个或多个微操作。在极端情况下,每个水平 CU 可用于同时控制一个或多个硬件资源。

灵活性

水平微程序中的每个控制位都是相互独立的。因此,此 CU 提供了改进的灵活性。与垂直微指令相比,它的长度更长。因此,水平微程序 CU 能够包含更长的长度。最常见的水平微程序通常包含 48 位或更多位。此 CU 能够更有效地利用硬件,这是水平微程序的优势。水平控制单元所需每微程序的微指令数量较少。与水平微程序控制单元相比,垂直微程序更紧凑但灵活性较低。在微程序设计的案例中,因此易于使用的接近方式是垂直方式。

水平和垂直微程序的总结

垂直微指令能够代表一个微操作,而水平微指令则没有此功能。水平微程序执行更高程度的并行性。这种并行性包含独立的控制字段和最少的编码。而垂直微程序用于编码控制位。在选择这两种方法时,我们应该非常小心。然而,在实践中,设计者通过结合垂直和水平微指令的格式来创建紧凑而有效的结构。