53

我一直在尝试阅读 32 位和 64 位处理器(http://en.wikipedia.org/wiki/32-bit_processing)。我的理解是 32 位处理器(如 x86)具有 32 位宽的寄存器。我不确定那是什么意思。所以它有特殊的“内存空间”,可以存储高达 2^32 的整数值?

我不想听起来很愚蠢,但我对处理器一无所知。我假设 64 位通常比 32 位好。虽然我现在的电脑(一岁了,Win 7,Intel Atom)有一个 32 位处理器。

4

10 回答 10

47

所有计算都在寄存器中进行。当您在代码中一起添加(或减去,或其他)变量时,它们会从内存加载到寄存器中(如果它们不存在,但虽然您可以声明无限数量的变量,但寄存器的数量是有限的)。因此,拥有更大的寄存器可以让您同时执行“更大”的计算。对于常规程序,这种大小差异在实践中并不是那么重要(因为至少我很少操作大于 2^32 的值),但这就是它的工作原理。

此外,某些寄存器用作指向内存空间的指针,因此限制了您可以引用的最大内存量。32 位处理器只能引用 2^32 字节(大约 4 GB 的数据)。64 位处理器可以更明显地管理更多内容。

还有其他后果,但这是我想到的两个。

于 2010-12-29T09:36:06.403 回答
26

最初的 32 位和 64 位称为架构。

这些架构意味着微处理器将在一个指令周期内处理多少数据,即获取-解码-执行

一秒钟内可能有数千到数十亿个指令周期,具体取决于处理器设计。

32位意味着微处理器可以在一个指令周期内执行4字节数据,而64位意味着微处理器可以在一个指令周期内执行8字节数据。

由于微处理器需要与计算机的其他部分(即内存、数据总线和视频控制器等)进行通信以获取和发送数据,因此理论上它们也必须支持 64 位数据传输。但是,出于兼容性和成本等实际原因,其他部分可能仍以 32 位与微处理器通信。这发生在最初的 IBM PC 中,其微处理器 8088 能够执行 16 位,而由于成本和与现有部件的兼容性,它以 8 位与计算机的其他部分通信。

想象一下,在一台 32 位计算机上,您需要将 'a' 写为 'A' 即 CAPSLOCK,因此该操作只需要 2 个字节,而计算机将读取 4 个字节的数据,从而产生开销。这种开销在 64 位计算机中增加到 6 个字节。因此,64 位计算机不一定总是很快。

请记住,只有支持 64 位执行的微处理器才能在微处理器上运行 64 位窗口。

于 2016-08-31T04:57:44.970 回答
20

处理器通过将其地址提供给 MAR(内存地址寄存器)来从内存(即 RAM)调用数据。选择器电子设备然后在内存库中找到该地址并检索数据并将其放入 MDR(内存数据寄存器)中。该数据被记录在处理器中的一个寄存器中以供进一步处理。这就是为什么数据总线的大小决定了处理器中寄存器的大小。现在,如果我的处理器有 32 位寄存器,它一次只能调用 4 字节大小的数据。如果数据大小超过 32 位,则需要两个提取周期才能将数据放入其中。与 64 位相比,这减慢了 32 位机器的速度,后者仅在一个取指周期内完成操作。因此,显然对于较小的数据,如果我的处理器以相同的速度运行并没有什么区别。再次,

于 2013-09-18T11:04:22.233 回答
3

32 位处理器可以用 32 位地址寻址一个内存库。因此,您可以拥有 2^32 个内存单元,因此可寻址内存数量有限(约 4GB)。即使您将另一个内存库添加到您的机器,也无法对其进行寻址。因此,64 位机器最多可以寻址 2^64 个内存单元。

于 2010-12-29T09:31:14.123 回答
2

这个答案可能已经晚了 9 年,但我觉得上面的答案并不能充分回答这个问题。

32 位和 64 位的定义没有被任何标准机构很好地定义或规范。它们只是直观的概念。32 位或 64 位 CPU 一般是指 CPU 的指令集架构 (ISA) 的原生字长。那么什么是ISA,什么是字长?

ISA 和字长

ISA是CPU使用的机器指令/汇编助记符。它们是软件的最低级别,直接告诉硬件要做什么。例子:

ADD r2,r1,r3   # add instruction in ARM architecture to do r2 = r1 + r3
               # r1, r2, r3 refer to values stored in register r1, r2, r3
               # using ARM since Intel isn't the best when learning about ISA

字长的旧定义是 CPU 在一个指令周期内可以计算的位数。在现代上下文中,字长是寄存器的默认大小或基本指令所作用的寄存器的大小(我知道我在这个定义中有很多歧义,但它是跨多个架构的直观概念,并不完全匹配彼此)。例子:

ADD16 r2,r1,r3 # perform addition half-word wise (assuming 32 bit word size)
ADD r2,r1,r3   # default add instruction works in terms of the word size

具有 PAE 的 Pentium Pro CPU 的位数示例

首先,通用指令中的各种字长:

  • 算术、逻辑指令:32 位(请注意,这违反了字长的旧概念,因为乘法和除法需要一个以上的周期)
  • 分支、跳转指令:间接寻址 32 位,立即寻址 16 位(同样,英特尔不是一个很好的例子,因为 CISC ISA,这里有足够的复杂性)
  • 移动、加载、存储:32 位用于间接,16 位用于立即(这些指令可能需要几个周期,因此字长的旧定义不成立)

二、硬件架构中的总线和内存访问大小:

  • 虚拟地址转换前的逻辑地址大小:32 位
  • 虚拟地址大小:64 位
  • 物理地址大小后翻译:36位(系统总线地址总线)
  • 系统总线数据总线大小:256位

所以从以上所有大小来看,大多数人直观地称其为 32 位 CPU(尽管对 ALU 字长和地址位大小没有明确的共识)。

这里要注意的有趣的一点是,在过去(70 年代和 80 年代),有一些 CPU 架构,其 ALU 字长与其内存访问大小有很大不同。另请注意,我们甚至还没有处理非通用指令中的怪癖。

关于英特尔 x86_64 的注意事项

与流行的看法相反,x86_64 并不是真正意义上的 64 位架构。它是一个 32 位架构,支持可以进行 64 位操作的扩展指令。它还支持 64 位逻辑地址大小。英特尔自己将此 ISA 称为 IA32e(IA32 扩展,IA32 是他们的 32 位 ISA)。

参考

ARM 指令示例

英特尔寻址模式

于 2019-05-21T07:18:56.580 回答
0

这里

32 位处理器和 64 位处理器之间的主要区别在于它们的运行速度。64 位处理器可以提供用于家庭计算的双核、四核和六核版本(即将推出八核版本)。多核允许增加处理能力和更快的计算机操作。在大多数情况下,需要许多计算才能运行的软件程序在多核 64 位处理器上运行得更快。需要注意的是,即使 Windows 操作系统是 64 位版本,64 位计算机仍然可以使用基于 32 位的软件程序。

32 位处理器和 64 位处理器之间的另一个重大区别是支持的最大内存 (RAM) 量。32 位计算机最多支持 3-4GB 的内存,而 64 位计算机可以支持超过 4 GB 的内存量。这对于用于图形设计、工程设计或视频编辑的软件程序很重要,其中执行许多计算以渲染图像、绘图和视频片段。

需要注意的一点是 3D 图形程序和游戏不会从切换到 64 位计算机中受益很多(如果有的话),除非程序是 64 位程序。32 位处理器足以满足为 32 位处理器编写的任何程序。在电脑游戏的情况下,通过升级视频卡而不是获得 64 位处理器,您将获得更多的性能。

最后,64 位处理器在家用电脑中变得越来越普遍。由于价格更便宜,而且现在有更多用户使用 64 位操作系统和程序,大多数制造商都使用 64 位处理器制造计算机。计算机零件零售商提供的 32 位处理器越来越少,而且很快可能根本不提供任何产品。

于 2013-10-07T10:17:35.903 回答
0

32位或64位进程的含义是什么? 通过 kenshin123 :

进程的虚拟地址是对应于系统上真实物理内存的地址表的映射。出于效率和安全性的原因,内核为一个进程创建了一个抽象,使其具有自己的地址空间的错觉。这种抽象称为虚拟地址空间。它只是一个指向物理内存的指针表。

因此,一个 32 位进程会获得大约 2^32 或 4GB 的地址空间。这意味着该进程被赋予了一个 32 位的页表。此外,这个页表有一个 32 位的 VAS,映射到系统上的 4GB 内存。

所以是的,64 位进程具有 64 位 VAS。那有意义吗?

于 2017-11-21T06:50:34.240 回答
0

32位和64位基本上是寄存器大小,寄存器是最快的内存类型,也是最接近CPU的。与 32 位寄存器相比,64 位处理器可以存储更多用于寻址和传输的数据,但也有其他因素取决于测量的处理器速度,例如内核数量、高速缓存、架构等。

参考:32位处理器和64位处理器的区别

于 2017-07-22T07:11:43.520 回答
-4

一个字节有 8 位,所以如果它是 32 位,那么您正在处理 4 个字节的数据,无论您的 CPU 以每秒多少 ghz 或 mhz 运行。因此,如果有一个 64 位 cpu 和 32 位 cpu 以相同的速度计时,那么 64 位 cpu 会更快

于 2013-01-07T23:12:32.520 回答
-5

32 位处理器每秒处理基于 Ghz 处理器的 32 位数据,而 64 位处理器每秒处理 64 位数据,速度取决于 PC 的速度。34 位处理器也适用于 4GB 的 RAM。

于 2013-03-12T06:48:04.087 回答