我确信我们都听过64位和32位的条款,但它们究竟是什么意思?
我很确定它们与内存地址的大小有关。在64位机器上,对象的引用是64位。但是我想深入挖掘一下......
人们常常听到“64位机器”这个短语。计算机的哪一部分实际上是针对位数?处理器?操作系统?
拥有更大的内存地址有什么好处?
我可以添加更多问题,但我认为简短更好。
谢谢你们:D
答案 0 :(得分:17)
64位是指寄存器的宽度,存储器寻址空间等。一个好处是能够处理超过4GB的内存。
维基百科有an article on 64-bit computing了解更多详情。
编辑:优势更多内存是操作系统和程序具有更多的虚拟寻址空间--16艾字节(172亿GB) - 更重要的是,更多的物理内存可以被添加到系统并进行寻址,导致虚拟内存与磁盘的交换更少。
更宽的寄存器和数据总线的优点是可以更轻松,更快速地移动相同数量的数据。现在可以使用一个操作来完成需要两个或更多寄存器的操作。
因此,当软件重新编译为64位时,性能通常会提高。
缺点是更宽的数据意味着相同数据占用更多空间。例如,存储数字300需要九位。如果它以32位整数存储,则浪费23位。在64位中,该浪费变为55位。因此,在不进行重组的情况下,对64位进行简单的重新编译可以产生更快但更臃肿的软件。
编辑:此处还有 64位技术页:
答案 1 :(得分:6)
差别恰好是32位; - )
您需要64位硬件(处理器)才能运行64位操作系统。 您需要一个64位操作系统来运行64位软件。 这是依赖关系。
答案 2 :(得分:3)
对于某些程序,例如办公自动化套件,32位与64位之间的差别很小。
但是对于其他应用程序,例如数据库,图形/视频处理或托管虚拟机,能够同时访问更多物理内存并能够使用每条指令处理更多信息可能会对性能产生巨大影响。 / p>
答案 3 :(得分:2)
CPU寄存器和内存寻址。
系统可以参考(参见)更多的内存。
答案 4 :(得分:2)
让我们回到基础。
这些天99%的计算机都基于所谓的Von Neumann architecture。从本质上讲,计算机处于一个恒定的循环:
(来源:wikimedia.org)
当提到32/64位系统(或任何其他位大小)时,基本上你在谈论计算机的架构和实现:
如果您使用的是64位系统,则地址空间为2^64
。这就是为什么32位系统不能有超过4GB的RAM。如何处理大于2^32
的存储空间?
关于性能差异,没有明确的答案(正如没有明确的答案,如果CISC或RISC架构更好)。它在很大程度上取决于您使用的应用程序。
总结:64位架构只是构建计算机的另一种方式。这并不意味着它更好,或更糟,或者做不同的事情(在较低的层次上,每台计算机都在执行获取 - 执行)。它只是实现计算机的另一种方式。
答案 5 :(得分:2)
我认为最好的答案是在x86位x64汇编程序中进行比较
当你的x32位程序注册一个变量时,例如一个整数(5),代码就等于:
push 5
为了更好地理解事物,'push X'是一个捷径:
sub esp,4 //substracts esp with 4(4*8=32 bits.That's the size of a pointer in x32 executables) in order to make space for our variable
mov [esp],X //moves variable in @esp
这些寄存器是32位(4字节长),这是任何32位编程语言中指针的大小。
在64位代码中,但是大小是两倍大的寄存器。我们的寄存器ESP存在于x64可执行文件中,但它没有广泛使用,因为它在x32可执行文件中。
相反,所有注册表都会在其名称前面显示“R”(EAX变为RAX,ESP变为RSP,EDX变为RDX等等。)
所以我们在x64可执行文件中的代码没有任何不同,除了'push X'的快捷方式将是
sub esp,8
mov [rsp],X
RSP的大小是ESP的两倍--64位,8个字节。
底线是x64位可执行文件比x32位可执行文件使用更多内存。
答案 6 :(得分:-3)
64位或32位参考只是主总线的宽度。