64位/ 32位的低级优点和缺点是什么?

问题描述:

我敢肯定,我们都听过64bit和32bit的术语,但它们究竟意味着什么?64位/ 32位的低级优点和缺点是什么?

我很确定他们必须处理内存地址的大小。在64位机器上,对象的引用是64位。但我想挖得更深一点....

  1. 人们经常会听到“64位机器”一词。计算机的哪一部分实际上面向的是位数?处理器?操作系统?

  2. 有更大的内存地址的优点是什么?

我可以添加更多的问题,但我认为简短会更好。

感谢球员:d

+1

与http:// stackoverflow相同。com/questions/132930/32-vs-64-bits-what-the-big-deal – 2009-08-15 16:13:11

+0

尽管你已经提到了你的问题中的内存“深入一点”,但每个人仍然回答“这是内存”无论如何... – chakrit 2009-08-15 16:18:23

+0

它不是记忆。 – 2009-08-15 16:18:57

64位是指寄存器宽度,内存寻址空间等。一个好处是能够处理大于4GB的内存。

维基百科有an article on 64-bit computing与更多的细节。

编辑:优势更多的内存是操作系统和程序有更多的虚拟寻址空间-16亿兆字节(172亿GB) - 更重要的是,更多的物理内存可以添加到一个系统并进行寻址,从而减少了虚拟内存与磁盘的交换。

更广泛的寄存器和数据总线的优点是移动相同数量的数据更容易,更快速。需要两个或更多寄存器的操作现在可以使用一个来完成。

因此,当软件重新编译为64位时,性能通常会提高。

A 缺点是更广泛的数据可能意味着更多的空间由相同的数据。例如,存储数字300需要9位。如果存储在32位整数中,则会浪费23位。在64位中,该浪费变为55位。因此,如果不进行重新编译,对64位的简单重新编译可以产生更快的速度,但稍微更臃肿的软件。

编辑:也有64位技术的网页这里:

  1. CPU寄存器和存储器寻址。

  2. 该系统可以引用(请参阅)更多的内存。

  • 64位系统可以直接处理显著更多的内存
  • 64位系统可以处理的数据块数据两倍32位,这有助于一些操作去更快地

对于某些节目,像办公自动化套件一样,32位和64位的差别不大。但是对于其他应用程序(例如数据库,图形/视频处理或托管虚拟机)来说,能够一次访问更多的物理内存并能够使用每条指令处理更多信息可以使性能发生巨大差异。请注意,今天,许多32位芯片都具有64位扩展功能,因为许多FPU(数学)或SSMD(矢量)操作已经在64位模式下完成。

有关更多信息,请参阅32-bit Vs. 64-bit Systems: What's The Difference?

+0

32位机器具有可以访问超过4GB内存的硬件;任何特定的进程将仅限于“直接”访问少于4GB,但在32位窗口中不支持超过4GB的决定与技术上的决定一样是市场决定。 – supercat 2014-03-09 19:23:52

所不同的是恰好32位;-)

需要64位硬件(处理器)运行一个64位操作系统。 您需要一个64位操作系统来运行64位软件。 这是依赖关系。

  • 在32位系统中,您仅限于寻址4 GiByte(2^32)内存,在64位中,理论极限为2^64字节。
  • 64位的软件需要稍多存储器,主要用于指针是8个字节,而不是4
  • 在x86_64
  • ,64个可执行需要更多的存储器,因为有许多指令的额外操作码,并且因此可以运行速度较慢
  • 在x86_64,64位软件可以使用更多的寄存器,并且具有运行刚到主总线的宽度更快
+1

您的意思是“...在64位中有......”在第一个项目符号中。 – Thomas 2009-08-15 17:20:18

+0

感谢您指出错字。 – hirschhornsalz 2009-08-15 21:02:33

+0

你的答案当然是正确的,但只是一个小评论。英特尔具有物理地址扩展(PAE),它具有允许36位地址的附加地址行,通过重新排列页表层次结构,您可以获得64 GB的虚拟内存空间。这就是为什么您可以在大多数32位Intel处理器上(在Pentium Pro之后)处理超过4 GB的RAM的原因。 – alps123 2009-08-18 22:18:17

完全的64位或32位的参考电位。

+3

号 废话。 有很多情况下,这是不正确的。 68008或8088,它有一个8位总线,32或16位的拱门,或者是老式的Pentium/II/III,或者Athlon/XP,它们都是64位的主总线,同时是32位结构。 – hirschhornsalz 2009-08-15 16:35:41

+0

啊......谢谢drhirsch,你带回了回忆。 :) – 2009-08-15 21:06:02

让我们回到基础。

这些天的99%的计算机都基于什么被称为Von Neumann architecture。本质上,计算机是在恒定周期:

  1. 从RAM
  2. 撷取的指令的CPU

alt text http://upload.wikimedia.org/wikipedia/commons/1/1c/Von_Neumann_architecture.png

上执行此命令当提及六十四分之三十二位系统(或任何其他位大小),基本上你是在谈论计算机的体系结构和实现:

  • 内存空间大小(RAM)
  • CPU寄存器的大小
  • 总线大小(即,在CPU,RAM,I/O等之间......)

如果你有一个64位系统,你的地址空间为2^64。这就是为什么32位系统不能有超过4GB的RAM。你如何解决大于2^32的内存空间?

至于性能上的差异,也没有明确的答案(就像目前还没有明确的答案,如果CISC或RISC架构是更好)。它很大程度上取决于您使用的应用程序。

综上所述:一个64位体系结构是简单地建立一个计算机的不同方式。这并不意味着它会更好,或者更糟糕,或者以不同的方式做事(在低级别上,每台计算机都在执行抓取执行)。这只是实现计算机的一种不同方式。

我认为最好的回答将是在86位x64汇编的比较

当您的X32位程序寄存器的变量,例如一个整数(5),该代码相当于此:

push 5 

理解事物更好,“推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 

那些registeres是32位(4个字节长),这是一个指针的大小在任何32位编程 语言。

在64位代码中,但是尺寸大两倍,因此是registers.Our寄存器ESP存在于64可执行文件,但它没有被广泛使用,因为它是在32倍的可执行文件。

而是所有registeres在其名字前得到一个“R”(EAX成为RAX,ESP成为RSP,EDX变得RDX等)。

因此,我们在64可执行代码将不会被任何不同,除了快捷方式“推X”将是

sub esp,8 
mov [rsp],X 

RSP具有ESP的两倍大小 - 64位,8个字节。

的底线是64位可执行使用比的X32位可执行更多的存储器。