我知道32位有32位寄存器,64位有64位寄存器,但我想知道的是什么是x86和x86-64架构,它们是否比32位和64位更先进?
答案 0 :(得分:5)
当谈到32b与64b架构时,你谈论的是它的register大小。它是地址的大小,为pointer。
主要问题是32 b只能有2 ^ 32~4×10 ^ 9个不同的值。字节被解决,因此我们有4 GB的可寻址内存。有些东西是为kernel保留的,普通程序不能全部使用,甚至在理论上都没有。
拥有更大的地址会使地址空间大小无问题。 64b指针大到足以处理即使将来可用的任何内存。 IIRC 2 ^ 64大于宇宙中估计的质子数。 我的意思是Eddington number而且它要大得多。但是,2 ^ 64仍然很大。
但还有另一个实际问题。地址现在是原来的两倍,消耗的内存是原来的两倍。如果有很多,这是不好的。但它不是一个显示阻止,只是一个缺点,要记住。
首先,我必须说明这两个架构有很多名称。 x86 = x86_32 = i686 = IA32 = Intel32是来自英特尔的32b架构,直到不久之前,这是台式机系统最流行的架构。扩展x86意味着整个backward-compatible架构系列,包括x86_64。但x86_64不是来自英特尔,而是来自AMD。您还可以将其标记为amd64或x64,但不要将其误认为IA64,它来自英特尔并且是失败的。
使用x86_64不仅寄存器大小加倍(它是64b),而且程序可用的寄存器数量也大大增加。新的ABI充分利用了寄存器中的空间。以前在函数调用之间在堆栈上传递的许多东西现在都驻留在寄存器中,这减少了load/store个操作的数量,从而加快了计算速度。
32 b和64 b是架构的特征。 x86和x86_64是特定体系结构的名称。 x86通常表示为32b,x86_64表示为64b。
x86_64比x68_32更高级吗?当然是。由于它是向后兼容的,它可以处理x86_32可以处理的所有内容,但也可以处理更多内容。但是,程序员可见的部件或CPU架构并不是唯一重要的部件。即使两个x86_64 CPU也可能存在性能差异。
但这会变得太长,更好地问一个更具体的问题或者在某个地方查找。我只想补充一点,大部分的黑暗魔法都安全地锁定在程序员身上,程序员的安慰性为von Neumann architecture。在引擎盖下,疯狂的优化发生。现实根本不是连续的。编译器和汇编程序员必须知道发生了什么,并巧妙地利用隐藏的CPU内部结构。
答案 1 :(得分:0)
x86是32位,x86-64是64位。
答案 2 :(得分:0)
这实际上取决于。 64位机器的最大优点是它可以容纳更多数据,具有更大的地址空间,支持更大的内存。这里的地址是虚拟地址或物理地址范围。