什么是水平微码?

在水平微码中,每个微操作由每个微指令中的一位表示。水平微码通常包含在一个相当宽的控制范围内,每个工作为 56 位或更多并不例外。每次单击定序器时钟时,都会读取、解码一个微码字,并用于控制构成 CPU 的功能组件。微操作及其助记符如表所示。

非常简单的 CPU 的微操作及其助记符

助记符微操作
ARPCAR←PC
ARDRAR←DR[5….0]
PCINPC←PC+1
PCDRPC←DR[5…0]
DRM博士←M
IRDRIR←DR[7…6]
PLUSAC←AC+DR
ANDAC←AC ^ DR
ACINAC←AC+1

由于有9个微操作,微码的每个字需要9位来表示,每个微操作1位。值为 1 表示会发生微操作,值为 0 表示不会发生。要完成微码,它可以简单地填写微操作的值。结果微码如表所示。

非常简单的微序列器的初步水平微码

状态地址SELARPCARDR个人识别号码PCDR数字版权管理IRDRACIN地址
FETCH10000 (0)01000000000001
FETCH20001(1)00010100000010
FETCH30010(2)1010001000XXXX
添加11000(8)00000100001001
添加21001(9)00000001000000
AND11010(10)00000100001011
AND21011(11)00000000100000
JMP11100(12)00001000000000
INC11110(14)00000000010000

在生成控制信号之前,它会检查微代码以了解如何对其进行优化。ARDR 和 IRDR 具有相同的值。它不能要求两个输出来表示相同的值,它可以使用一个输出来导出两个微操作 AIDR,它结合了两个微操作AR←DR[5….0]IR←DR[7…6]。修改后的微码显示在表格中。

为非常简单的微序列器优化的水平微码

状态地址SELARPCARDR个人识别号码PCDR数字版权管理IRDRACIN地址
FETCH10000 (0)01000000000001
FETCH20001(1)00010100000010
FETCH30010(2)1010001000XXXX
添加11000(8)00000100001001
添加21001(9)00000001000000
AND11010(10)00000100001011
AND21011(11)00000000100000
JMP11100(12)00001000000000
INC11110(14)00000000010000