为什么我们没有33位CPU?[关闭]


9

我已经看到,CPU和操作系统的位从8位上升到16位,再到32位,目前已经上升到64位。我知道此更改是为了增加CPU可寻址的最大内存量。

我不明白的是为什么总线大小总是增加一倍。将总线大小加倍只是一个任意/商业决定,还是还有其他原因?

为什么我们不能拥有33位CPU?或者,如果这还不够,那就是34位CPU?64位在地址空间和底层硅的复杂性中似乎是一种巨大且不必要的(昂贵的)跳跃。


3
@sawdust-然而,拥有8位的倍数,甚至更少的数据路径是8位的2倍的幂的数据路径并没有什么神圣的。
Daniel R Hicks

7
这个问题实际上并没有那么糟,而且还不如丹尼尔(和我的回答)所指出的那样简单,就像“哦,好学习二进制derp!”。出于这个原因,我将其投票回零。
Marshall Eubanks

1
您的问题包含错误的前提。位宽度的增加主要是为了增加通用寄存器的宽度。指针宽度的增加在历史上是次要的。
David Schwartz

1
@sawdust我对二进制的工作原理有一个很好的了解,这在我的问题中非常明显。谢谢您的无助和粗鲁的回应。
localhost,

1
@marshaul:这个问题实际上被否决为零以下吗?为什么??这是一个好问题!我认为拒绝投票的人可能比问题作者对二进制数字的了解还要少。
HelloGoodbye 2014年

Answers:


7

我见过12、14、15、17、18、20、24和48位CPU。但是,使用现代VLSI技术(或现在是ULSI?),向数据路径添加更多位并不昂贵。芯片开发人员将尽可能多的宽度塞进芯片,因为这以相对较少的额外成本和仅很少的周期时间损失来增加了吞吐量。

用狭窄的数据路径和更快的周期时间来实现更高的速度/吞吐量要困难得多。


(忘了提及60位CPU-旧的CDC 6600系列。)
Daniel R Hicks

即使这是一个有趣的答案,也仍然无法解释为什么现代PC首选使用2的幂,我认为这是问题的真正目的,尽管在创建之时尚未完全意识到。
HelloGoodbye 2014年

@HelloGoodbye不是2的幂,而是8的倍数。32位数据总线可以在一条指令中精确地写入4个字节。
jiggunjer 2015年

4

与计算机中的许多情况不同,例如寻址,其中将地址长度增加一位增加了可寻址内存的数量,即2的幂(以及为什么2的幂在内存中如此常见),即CPU 的实际字长可以是任何方便的值。

处理器(16、32和64位)的通用字长实际上是8的倍数(而不是2的幂),尽管这些8的特殊倍数也恰好是2的幂,其中8位是一个char的最小大小,它本身是最小的常用原始数据类型。

由于8位本身太不精确,以至于不能用于数字值(甚至对于扩展的字符集(例如UTF-16)),因此,当使用的精度超过了许多位数时,大于8位的单词可以提高效率。 ,并且8位(最小的常用数据类型)的倍数仍然是自然选择,允许人们在一个单词中存储整数(例如2、4、8个)字符,而不会浪费掉未使用的位。

维基百科上有关单词的文章有一个“ 单词大小的选择”部分,其细节更为详细。


1
并非8的所有倍数都是2的幂
。– cpast

好的一点,我的意思是说“这些2的幂”。我会解决。
Marshall Eubanks

已经有6位和10位“字符”构建的计算机。
Daniel R Hicks

可以肯定的是,单词长度可以是任何方便的数字,而不必基于字符长度或特别是任何东西。例如,一个很少对“字符”进行操作的ALU可能基于常用的最小精度整数而具有一个字长。我并不是要提出任何说明性的建议,仅是为了解释最常见选择(以及他询问的选择)的基本原因。
Marshall Eubanks
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.