64 位处理器处理多少字节?

64 位处理器处理多少字节?

这是一道面试题 -http://www.glassdoor.com/Interview/Yelp-Software-Engineering-Intern-Interview-Questions-EI_IE43314.0,4_KO5,32_IP4.htm

“没有多种方法可以回答,例如 64 位处理器处理的字节数和 Linux 的终止信号”

Linux 的 Kill signal 很容易找到。我只需快速谷歌搜索一下就能找到这篇文章。http://www.maketecheasier.com/kill-command-in-linux/

我对“64 位处理器处理的字节数”部分感到困惑。一篇文章(http://blog.boson.com/bid/87673/A-Few-Bytes-About-32-bit-vs-64-bit-Processing) 指出“事实上,64 位处理器理论上可以同时处理多达 18,446,744,073,709,551,616 字节,或 16 艾字节 (EB)。另一篇文章(http://mindprod.com/bgloss/sixtyfourbit.html),这更直观,它指出“在 64 位 CPU(中央处理器)中,例如 Athlon、Itanium 和 Opteron,程序一次处理 64 位(或 8 字节)的信息”。这个对我来说很有意义,因为 64 位是 8 字节(每字节 8 位)

两篇文章中的 at a time 是指纳秒吗?还是毫秒?从这两篇文章中,面试官会期待什么答案?他/她会期待每次 8 个字节的答案,以及更大的答案吗?

答案1

这个数字很大,是 2^64(2 的 64 次方)。这是 x64 寄存器可以处于的唯一状态的数量,因为寄存器中有 64 位可以设置为开启或关闭,因此有 2^64 个设置为开启和关闭的唯一位组合。

假设寄存器值指向内存中的字节地址,那么它可以“精确定位”2^64 字节内存中的任何字节。因此,从这个意义上讲,它可以随时“到达”理论上 16 EB RAM 中的所有字节。但这并不像 CPU 有 16 EB 的内置 RAM,boson.com 文章中说的那样。

一次可能并不意味着特定的时间跨度,而是单个处理行程。我想说答案确实是 8 个字节。如果时间跨度对于这个问题很重要,那么计算起来会更困难,因为需要 CPU 的时钟速度,然后还需要定义计数是否包括对同一数据的纠错重试、用于基于 CPU 的图形/音频的周期和许多其他事情。

答案2

基本上,你的第一个参考是错误的,而你的第二个参考是正确的,但他们没有提供完整的画面。

以下是(我希望)更完整、更准确的 CPU/内存基础知识:

64 位处理器具有 64 位内部“总线”。这实际上是 64 条线,每条线都可以随时传递高电压或低电压(1 或 0)。这允许以下几件事:

1) 64 位(8 字节)数据可以在任何给定时间“流过”总线。每次 CPU“时钟”滴答作响时,这些数据都会“推送”到总线。如果您好奇的话,CPU“时钟”通常是一种内部晶体,当它带电时会振动(“振荡”)。振荡晶体产生电子“波”,然后将其转换为刚性的“切换”波形。这是处理器的心跳,每次节拍都会将数据“推送”到总线(简单地说)。例如,1Ghz、64 位 CPU 每秒可以“推送”数据 10 亿次,每次推送 64 位。因此,它的处理能力或“带宽”是 640 亿位/秒或 8 Gb/s“带宽”。

2) 由于有 64 条二进制线,因此总线可能产生的值有 2^64 个。由于这些值可以引用内存“地址”,因此 64 位处理器能够指向最多 2^64 个内存位置,每个位置长度为 1 字节。这非常庞大……185 亿 GB 的 RAM……这意味着地球上每个人都有 2 GB 的 RAM……在一台计算机中。但为了更好地说明这一点,请考虑 32 位 CPU,它可以引用最多 2^32 个内存地址 (RAM)。同样,每个 RAM“地址”通常为 1 字节(8 位),因此这是 2^32 字节(4GB)的 RAM。这就是为什么任何具有 32 位处理器或 32 位 Windows 的计算机都只能使用 4GB 的 RAM。即使安装了更多 RAM,系统也只能使用其中的 4GB。此外,运行 32 位 Windows 的 64 位 CPU 仍然限制为 4GB RAM,因为 Windows 软件设计不允许连接超过 4GB(2^32)个内存“地址”。

注意:请记住,随着三态位、多核处理器、光纤等技术的添加,这些基本计算会变得更加复杂。

资料来源:2010 年获得普渡大学 (IUPUI) 计算机/电气工程理学学士学位,过去 8 年一直从事数据/IT/分析工作。我也是一名游戏电脑制造商/爱好者,也是 AnadTech/TomsHardawre 文章的狂热爱好者 :)

问候, - Jonathan Mathews

答案3

我觉得问题的提法很奇怪,但我会尝试解释一些事情。32 位和 64 位与处理能力关系不大。处理能力以每秒计算次数或整数运算或浮点运算(Flops)来衡量。
更多的位数(16 vs 32 vs 64)实际上意味着数据可以以更大的块处理,这也意味着更准确。浮点值可以具有更高的精度(整数部分后的数字更多)。
拥有更多位数还使系统能够指向或寻址物理内存中的更多位置。32
位系统是 16 位的升级版,因为它们可以寻址高达 4GB 的内存。(2^32 = 超过 40 亿)。
现在应用程序需要超过 4 GB 的内存,64 位现已广泛传播。可寻址值变为 2^64(16 EB)。因此,最接近的说法是 64 位 CPU 最多可以寻址 2^64-1 个内存地址。实际上,这个值要小于这个值,因为没有接近这个值的 RAM。
纳秒与这个问题无关。所以总结一下答案,这种情况对你有利,因为问题不够清楚,无法提供确切的答案。
问“64 位处理器处理多少字节”从根本上来说是错误的,因为没有时间或其他类型的参考。“每秒多少字节”是一个不错的表述,但这又与处理速度更相关,而处理速度更依赖于架构和速度(GHz),而不是 32/64 位。

答案4

在相同的时钟速度下,64 位 CPU 比 32 位 CPU 更快,因为机器代码的长度是 32 位的两倍,因此它可以在每个 CPU 周期处理更多的代码……有点像 32 位

购买牛奶 ----cpu 时钟周期 1 购买啤酒 ----cpu 时钟周期 2

在 64 位中它是购买牛奶和啤酒... CPU 时钟周期 1

但这并不意味着 64 位 CPU 的速度是原来的两倍。而且它们在运行 32 位代码时速度也没有更快……

这就是为什么 32 位 CPU 无法运行 64 位代码或操作系统的原因.....但反过来也是可能的。这是我的看法。

相关内容