我无法理解 32 位处理器和 64 位处理器之间的区别。我知道 32 位处理器一次可以访问 32 位,而 64 位处理器一次可以访问 64 位。但是,一次访问一定数量的位究竟意味着什么?
6 回答
我想真正的答案是它很复杂。除了专门的研究之外,隐喻是唯一能给你一个基本概念的东西。Wallyk 走在正确的轨道上。
有几件事可以驱动处理器。一是每秒可以执行多少次操作(以赫兹为单位)。虽然架构无法给出简单的答案,但 1Ghz 单核处理器每秒执行 1,000,000,000 次操作。大致。虽然可以获得更具体的答案,但它不会澄清这种情况。
处理器也是其他东西,例如内存控制器(在 i7 中)、ALU 和 FPU 以及其他专用电路,这使得即使是这个问题也很难回答。
不过,出于您的意图和目的,每个处理器都有寄存器。寄存器就像暂存空间(比内存快),供处理器在处理少量数据时存储。这些由 L1 和 L2(有时是 L3)缓存支持,速度也快得离谱。基本上,64 位是指暂存空间的大小(通过代理,将寄存器连接到缓存的管道,因为数据一次加载和加载)。
更大的暂存空间意味着无需从缓存或内存中读取新信息即可完成更多工作。然而,仅仅因为它可以做到并不意味着它总是会。程序通常必须在 64 位支持下编译以利用加速,即使那样,除非您处理大于 32 位可以存储的数据,否则您通常也不会看到差异。不过,对于系统程序员来说,这更像是一个问题。
处理器还需要密切关注内存中的内容(例如,正在使用的内容和未使用的内容。)它使用特殊的寄存器来执行此操作。32 位处理器通常不能寻址超过 4GB 的 RAM 的原因与该寄存器的大小有关。虽然 PAE 等处理器扩展允许 32 位处理器上的 32 位操作系统处理多达 64 GB 的 RAM,但大多数操作系统通常不支持它。
TL;DR,64 位处理器可以通过正确的编程一次对更大的数据块执行操作,并寻址更多内存。除此之外,没有太大的区别。
EDIT: Lest people get the wrong idea, by "operations" I'm not specifically referring to THE operations (addition, multiplication, etc.). My bad, I was focusing on answering the question rather than giving a full introduction to microprocessor architecture.
基本上,这意味着能够对这种大小的数字进行操作(例如添加它们)。尽管 32 位和 64 位架构之间的差异远不止于此。
这不是一个非常精确的表达方式,但我认为它是指内存地址的长度。例如,32 位意味着 4 GiB(2个 32字节)可供程序使用。
(为了好玩,请查看31 位的IBM s390架构。)
此外,它并不总是 CPU 一次可以读取或操作的最大数据量。例如,64 位 AMD/Intel 处理器具有一系列片上缓存,可以从大块的主内存中提取数据。它们还具有 128 位 SSE 寄存器。
我注意到你标记了内存,所以我会用这个答案:
在 32 位处理器中,处理器只能使用 32 位来寻址内存。这意味着有 2^32 个唯一的组合,因此,处理器只能寻址 2^32 个字节。(4GB)
在 64 位处理器中,处理器可以(理论上)使用 64 位来寻址内存,或 2^64 字节的可寻址内存。我相信这相当于 16 个 Exo 字节,这是一个巨大的数量,几乎可以计算出你机器中分子的数量。但在实践中,由于当前的硬件限制,今天在线上的大多数 CPU 只允许您处理 42 位物理内存和 48 位虚拟内存。
64 位的Wikipedia 条目为该主题提供了一些亮点
这是处理能力的衡量标准。就像一辆可以搭载 4 名乘客或 12 名乘客的车辆,其能量大致相同。
例如,32 位包含 4 个字节,即 4 个普通字符,而 64 位是 8 个字节,而对于浪漫语言,则为 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,775,808至9,223,372,036,854,775,807至9,223,372,036,854,775,807至9,223,372,036,854,775,807