32位和64位处理器有什么区别?

39 hardware 64-bit 32-bit processors 32bit-64bit

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

我不想听起来很愚蠢,但我不知道处理器.我假设64位通常优于32位.虽然我的电脑现在(一年前,Win 7,Intel Atom)有一个32位处理器.

Jak*_*kob 37

所有计算都在寄存器中进行.当你在代码中添加(或减去或者其他)变量时,它们会从内存加载到寄存器中(如果它们不存在,但是你可以声明无限数量的变量,寄存器的数量)是有限的).因此,拥有更大的寄存器允许您在同一时间执行"更大"的计算.并不是说这种尺寸差异在实际中对于常规程序而言非常重要(因为至少我很少操纵大于2 ^ 32的值),但这就是它的工作原理.

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

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


小智 19

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


Bub*_*oza 19

第一个32位和64位称为体系结构.

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

在一秒钟内,根据处理器设计,可能有数千到数十亿的指令周期.

32位表示微处理器可以在一个指令周期内执行4个字节的数据,而64位表示微处理器可以在一个指令周期内执行8个字节的数据.

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

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

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


tin*_*ast 9

This answer is probably 9 years too late, but I feel that the above answers don't adequately answer the question.

The definition of 32-bit and 64-bit are not well defined or regulated by any standards body. They are merely intuitive concepts. The 32-bit or 64-bit CPU generally refers to the native word size of the CPU's instruction set architecture (ISA). So what is an ISA and what is a word size?

ISA and word size

ISA is the machine instructions / assembly mnemonics used by the CPU. They are the lowest level of a software which directly tell what the hardware to do. Example:

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
Run Code Online (Sandbox Code Playgroud)

The old definition of word size would be the number of bits the CPU can compute in one instruction cycle. In modern context the word size is the default size of the registers or size of the registers the basic instruction acts upon (I know I kept a lot of ambiguity in this definition, but it's an intuitive concept across multiple architectures which don't completely match with each other). Example:

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
Run Code Online (Sandbox Code Playgroud)

Example bit-ness of a Pentium Pro CPU with PAE

First, various word sizes in general purpose instrucion:

  • Arithmetic, logical instructions: 32 bit (Note that this violates old concept of word size since multiply and divide takes more than one cycle)
  • 分支、跳转指令:32 位用于间接寻址,16 位用于立即寻址(同样,Intel 不是一个很好的例子,因为 CISC ISA 并且这里有足够的复杂性)
  • 移动、加载、存储:32 位用于间接,16 位用于立即(这些指令可能需要几个周期,因此字大小的旧定义不成立)

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

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

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

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

关于 Intel x86_64 的注意事项

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

参考

ARM 指令示例

英特尔寻址模式


Sim*_*mon 6

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

  • 您可以自由地提供更详细的答案。 (7认同)
  • 这是“一个”差异,但这并不是“唯一”差异。 (3认同)