CPU 中的微程序(以 x86 为例)

本文适合对逻辑电路和 x86 汇编有一定了解的读者阅读。本文会尽量通俗地解释所有概念,因此本文不需要您对计算机组成的知识有任何了解。

如果您有相关方面的设计或工作经验,欢迎您对本文提出批评和建议。

什么是微程序?

最简单的两种 CPU 设计方案分别是单周期(single cycle)和多周期(multicycle)设计。一个单周期或多周期的 CPU 核心通常由 数据通路(datapath)和 控制器(control)两部分组成。数据通路中定义了寄存器、内存输入输出接口,以及在不同元件间传输数据的通道。而控制器中含有 CPU 的控制逻辑,它通过向数据通路发出控制信号,控制数据的流动,以此来完成指令的执行。

微程序(microcode,又称 微代码)是一种代替单周期或多周期的 CPU 设计方案,通常用于解决 CISC 处理器的设计问题。不同于 RISC 指令,一条 CISC 指令通常需要被分解成很多个动作,比如 x86 中的 add [eax+4], ebx 指令的执行流程可以表示成下图:

add m32, r32 指令执行流程图

这条指令总共需要两次 ALU 操作和两次内存操作。在实际的 CPU 中,这条指令可能需要分解成如下这些动作:

  • eax 寄存器的值,发送到 ALU 的 A 输入端口;
  • 取立即数 4,发送到 ALU 的 B 输入端口;
  • 控制 ALU 计算出 eax+4 的值,并发送到内存地址端口;
  • 控制内存进行读操作;
  • 等待内存返回 [eax+4] 的数据,并把数据发送到 ALU 的 A 输入端口;
  • ebx 寄存器的值,并发送到 ALU 的 B 输入端口;
  • 控制 ALU 计算出 [eax+4] + ebx 的值,并发送到内存数据端口;
  • 控制内存进行写操作,并等待写入完成。

如果只靠控制器中的逻辑门来表达所有这些动作,就需要消耗大量的逻辑门,并且电路的深度(逻辑门层数)会显著增加,这样会使得 CPU 设计变得过于复杂且低效。

由于以上这些动作具有程序化、串行化的特点,C

  • 5
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值