32位与64位...或者,'处理信息'到底是什么意思

21

我很难理解32位处理器和64位处理器之间的区别。我知道32位处理器每次可以访问32位,而64位处理器每次可以访问64位。但是每次访问特定数量的位到底意味着什么?


1
这太模糊和含糊不清了。 - Earlz
6个回答

25

我想真正的答案是比较复杂的。除了专注研究之外,隐喻是唯一能给你一个基本概念的东西。Wallyk的说法是正确的。

处理器有几个驱动因素。其中一个是每秒可以执行多少操作(以赫兹为单位)。尽管架构阻止了简单的答案,但1GHz的单核处理器每秒执行10亿次操作。大致如此。虽然可以得到更具体的答案,但这并不会澄清这种情况。

处理器还包括其他东西,例如内存控制器(在i7中),ALU和FPU以及其他专门的电路,这也使得回答这个问题变得困难。

但对于您的目的,每个处理器都有寄存器。寄存器就像处理器用来存储少量数据的临时空间(比内存更快)。它们由L1和L2(有时是L3)高速缓存支持。基本上,64位指的是临时空间的大小(以及由代理连接寄存器和缓存的管道,因为数据一次性加载进出)。

更大的临时空间意味着可以做更多的事情,而不必从缓存或内存中读取新的信息。但是,仅仅因为它可以做到并不意味着总是会这样做。一个程序通常必须编译带有64位支持才能利用加速,并且即使这样,除非您正在操作大于32位所能存储的数据,否则通常不会看到任何区别。这更多是一个系统程序员的问题。

处理器还需要跟踪内存中的内容(即使用和未使用的内容)。它通过一种特殊的寄存器来实现。32位处理器通常无法寻址超过4GB的RAM,原因在于该寄存器的大小。虽然处理器扩展如PAE允许32位处理器上的32位操作系统寻址多达64 GB的RAM,但大多数操作系统通常不支持它。

简而言之,64位处理器在正确编程的情况下可以一次性处理更大的数据块并寻址更多的内存。除此之外,并没有太大的区别。

编辑:为了避免人们误解,“操作”并不特指加法、乘法等运算。抱歉,我只是专注于回答问题而没有给出微处理器架构的完整介绍。


4
从程序员的角度来看,这正是它的意思。在更复杂的事情(如优化指令或考虑数据是否已经在缓存中或必须从内存获取)之前,赫兹规定了每秒执行多少次操作,即使该操作没有完成。有些操作需要更长时间(除法/乘法/模数是值得注意的,因为它们是基于加/减操作进行连续构建的)。也许您想给我一个答案/澄清,而不仅仅是点个踩和谴责?这不是一个回答的地方吗? - emcee
很棒的解释。我来这里是因为苹果刚刚推出了带有64位处理器的iPhone5S,所以想知道它是否真的很重要。 - Vishal Singh
@emcee 只是好奇,你说“32位处理器通常无法寻址超过4GB的RAM”。64位的RAM限制是什么? - Kellen Stuart

4

基本上它意味着能够对这样大小的数字进行操作(例如相加)。但是32位和64位架构之间还有更多的差异。


1

这不是一个非常精确的表达方式,但我理解它是指内存地址的长度。例如,32位表示程序可以使用4 GiB(232字节)的内存。

(开个玩笑,请查看IBM s390架构,它是31位的。)

此外,这并不总是CPU一次可以读取或操作的最大数据量。例如,64位AMD / Intel处理器具有一系列芯片上缓存,可以以大块从主内存中提取数据。它们还具有128位SSE寄存器。


1

我注意到你标记了内存,所以我选择这个答案:

在32位处理器中,处理器只能使用32位来寻址内存。这意味着有2^32种独特的组合,因此,处理器只能寻址2^32字节。(4Gb)

在64位处理器中,处理器(理论上)可以使用64位来寻址内存,或2^64字节的可寻址内存。我相信这相当于16艾字节,这是一个巨大的数量,几乎能达到数清楚机器中分子的数量的程度。然而,在实践中,由于当前硬件限制,今天市面上大多数CPU只允许你寻址42位物理内存和48位虚拟内存。


1
32位并不是关于地址总线的。例如,Intel架构中有许多带有36位地址总线(如PAE和PSE-36)的32位机器。 - JUST MY correct OPINION
是的,但这有点不相关。我想我应该指出一个32位处理器可以拥有多于或少于32个可寻址的内存位。 - Earlz

0

64位的{{link2:维基百科条目}}对这个主题有很好的阐述。


这个回答在理论上可能是正确的,但最好在此处包含答案的关键部分以供未来用户参考,并提供链接作为参考。 - Mogsdad

-3

这是处理能力的度量。有点像一辆可以搭载4个或12个乘客的车,几乎消耗同样的能量。

例如,32位可以容纳4个字节或4个普通字符,64位是8个字节和-对于罗曼语言来说-八个字符。这些可以一次性进行许多种操作以对应架构数据宽度。

另一种看待它的方式是一个体系结构可以直接处理多大的整数。对于每个宽度,相应的范围为

8位: 0到255 / -128到127
16位:0到65,535 / -32768到32767
32位:0到4,294,967,295 / -2,147,483,648到2,147,483,647
64位:0到18,446,744,073,709,551,615 / -9,223,372,036,854,775,808到9,223,372,036,854,775,807


2
这完全不是真的。32位处理器并不一定比64位处理器性能差。 - Earlz
当然。这并不比特定引擎的排量更能反映整体性能。 - wallyk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接