标签: microcoding

44
推荐指数
7
解决办法
1万
查看次数

x86/x64芯片还在使用微程序吗?

如果我理解这两篇文章,那么最低级别的英特尔架构已经过渡到使用RISC指令,而不是英特尔着名的传统CISC指令集:

http://www.hardwaresecrets.com/article/235/4

http://www.tomshardware.com/reviews/intel,264-6.html

如果是这种情况,那么x86/x64芯片是否仍然采用微程序设计,还是像传统的RISC芯片一样使用硬连线控制?我猜它仍然是微程序设计,但想验证.

64-bit x86 intel cpu-architecture microcoding

6
推荐指数
1
解决办法
4163
查看次数

机器代码如何与处理器通信?

我们以Python为例.如果我没有弄错,当你在其中编程时,计算机首先将代码"翻译"为C.然后再从C到汇编.汇编是用机器代码编写的.(这只是一个模糊的想法,我有这个,所以纠正我,如果我错了)但是什么是机器代码写入,或者更确切地说,处理器如何处理其指令,它如何"找出"做什么做?

interpreter processor machine-code microcoding

5
推荐指数
2
解决办法
6876
查看次数

CPU:CPU内部程序,用于确定指令的确切原理(?!)

在计算机科学讲座中,我们被告知有一个特殊的代码(低于汇编程序)来确定CPU内部写入CPU的行为.这意味着确定布尔逻辑中的每个指令究竟是什么意思......这听起来很奇怪 - 我没有找到任何关于它的信息.

可能他的意思不是CPU而是微控制器?但他告诉它确定了像MOV,ADD等这类指令的确切行为.所以,我很困惑.

或者他的意思是什么样的PCB布局语言?

cpu assembly microcoding

4
推荐指数
1
解决办法
206
查看次数

内存目标 BTS 如何比 load / BTS reg,reg / store 慢得多?

在一般情况下,可以使用内存或寄存器操作数的指令如何使用内存操作数变慢然后 mov + mov -> 指令 -> mov + mov

根据Agner Fog 指令表中的吞吐量和延迟(在我的案例中查看 Skylake,p238),我看到以下btr/bts指令数字:

instruction, operands, uops fused domain, uops unfused domain, latency, throughput
mov          r,r       1                  1                    0-1      .25
mov          m,r       1                  2                    2        1
mov          r,m       1                  1                    2        .5
... 
bts/btr      r,r       1                  1                    N/A      .5
bts/btr      m,r       10                 10                   N/A      5
Run Code Online (Sandbox Code Playgroud)

我不明白这些数字怎么可能是正确的。即使在没有可用寄存器的最坏情况下,并且您将一个寄存器存储在临时内存位置,这样做也会更快:

## hypothetical worst-case microcode that saves/restores a scratch register
mov m,r  // + 1  throughput , save a register
mov …
Run Code Online (Sandbox Code Playgroud)

performance assembly x86-64 cpu-architecture microcoding

4
推荐指数
1
解决办法
122
查看次数

如何使用微编程来修改Intel CPU的指令集架构?

假设我想修改现有指令的实现。例如,假设我想更改在获取和解码后执行“mov”指令时由处理器执行的微代码。我该怎么做呢?

另外,假设我想向 ISA 添加一条新指令。例如,假设有一个当前未使用的操作码,我希望我的处理器能够在获取它后对其进行解码和执行。我该怎么做呢?

说实话,我什至不知道从哪里开始,这就是我询问堆栈溢出的原因。我没有任何编写微代码的经验,我只从计算机架构课上知道这个术语。我知道查找 x86 指令列表非常容易,但我不知道在哪里查找微指令列表。我什至不知道英特尔是否公开了他们的微代码列表。我不知道需要使用什么程序将这些新的微程序加载到 CPU 内的适当内存中。我认为引导加载程序可能参与其中,但我对此可能完全错误。如果我拥有我的 CPU,我认为我可以合法地修改其微代码并对其指令进行逆向工程,但通过现有文档(而不是通过逆向工程)更容易理解我的 CPU 的工作原理以及如何更改其微代码。

我知道有一些较小的硬件供应商生产开源 ISA,所以如果我想尝试一下,从这些供应商之一购买 CPU 可能会更好?但我不知道替代供应商的哪种 CPU 最适合这种情况。但实际上,我认为对于我想做的事情来说没有必要购买新的 CPU,因为如果必须的话,我可以使用现有的 CPU 在虚拟机中运行开源 ISA(我是从软件角度而不是硬件角度对微指令和微程序感兴趣)。

x86 intel cpu-architecture microcoding

2
推荐指数
2
解决办法
296
查看次数