假设我想修改现有指令的实现。例如,假设我想更改在获取和解码后执行“mov”指令时由处理器执行的微代码。我该怎么做呢?
另外,假设我想向 ISA 添加一条新指令。例如,假设有一个当前未使用的操作码,我希望我的处理器能够在获取它后对其进行解码和执行。我该怎么做呢?
说实话,我什至不知道从哪里开始,这就是我询问堆栈溢出的原因。我没有任何编写微代码的经验,我只从计算机架构课上知道这个术语。我知道查找 x86 指令列表非常容易,但我不知道在哪里查找微指令列表。我什至不知道英特尔是否公开了他们的微代码列表。我不知道需要使用什么程序将这些新的微程序加载到 CPU 内的适当内存中。我认为引导加载程序可能参与其中,但我对此可能完全错误。如果我拥有我的 CPU,我认为我可以合法地修改其微代码并对其指令进行逆向工程,但通过现有文档(而不是通过逆向工程)更容易理解我的 CPU 的工作原理以及如何更改其微代码。
我知道有一些较小的硬件供应商生产开源 ISA,所以如果我想尝试一下,从这些供应商之一购买 CPU 可能会更好?但我不知道替代供应商的哪种 CPU 最适合这种情况。但实际上,我认为对于我想做的事情来说没有必要购买新的 CPU,因为如果必须的话,我可以使用现有的 CPU 在虚拟机中运行开源 ISA(我是从软件角度而不是硬件角度对微指令和微程序感兴趣)。