x86-64是否支持16-32或64位中的一个比其他更好?"本土"或"扩展"这个词有什么意义?

Cel*_*tas 0 performance assembly x86-64 cpu-architecture

根据wiki x86-64支持16位,32位和64位程序.在运行代码的意义上,它是否比其他更好地支持一个?有人(可能是我的屁股冒烟)告诉我Operteron CPU是第一个运行64位但仍然是32位原生的CPU.

在这种背景下成为"本土"意味着什么?我在维基百科上注意到它说64位是x86的扩展,那么它有什么影响呢?

Ira*_*ter 5

x86-64能够在基本相同的单位时间内执行各种操作数宽度的许多指令,因此具有64位操作数的指令实际上并不比其他宽度更快或更慢.(某些较小宽度的指令实际上可能因部分寄存器写入停顿而减慢).

但是64位指令在每单位时间处理更多数据位的意义上更有效.(对于整数操作数,我想知道这在实践中是多么有效:大多数只是普通整数都非常小并且处理全零或全1的前56位并不能真正增加价值,而只是增加了热量).

x86-64还为汇编编码器和编译器提供了额外的8个整数寄存器,这有助于复杂的循环避免溢出到内存,从而使一些程序实际上更快.

X86-64运行带有64位操作数的指令,x86-32根本无法做到,因此存在真正的质量差异.这允许处理更大的单个值,并且可能是64位系统的主要优点,更大的数据集而没有复杂的地址空间管理.从技术上讲,X86-64可以运行更大的程序,但实际上没有人编写足够大的单个程序来解决这个问题.

关于"native":我怀疑你的"某人"说"以32位为原生"只是意味着它将运行32位指令而没有任何有效的惩罚,除了操作数的大小.

我怀疑皓龙是第一个这样做的.(几乎没有人声称自己是第一位的;先考虑克里斯托弗·哥伦布).大型机人员(例如,IBM)在很长一段时间内从32位转换为64位,允许32位和64位指令形式在同一CPU上"原生"运行,只需更改PSW中的一位.Opterons可能是第一个在英特尔指令集空间中执行此操作的人.