我看到 CPU 和操作系统的位数从 8 位上升到 16 位,再到 32 位,现在又上升到 64 位。我理解这种变化是为了增加 CPU 可寻址的最大内存量。
我不明白的是为什么总线大小总是加倍。将总线大小加倍只是一个武断/商业决定,还是有其他原因?
为什么我们不能拥有 33 位 CPU?或者如果这还不够,那么可以拥有 34 位 CPU?64 位似乎在地址空间方面是一个如此巨大且不必要的(昂贵的?)飞跃,并且可能增加了底层硅片的复杂性。
答案1
我见过 12、14、15、17、18、20、24 和 48 位 CPU。但借助现代 VLSI 技术(或者现在是 ULSI?),向数据路径添加更多位并不那么昂贵。芯片开发人员尽可能地将宽度塞进芯片,因为这样可以增加吞吐量,而额外成本相对较小,并且只会对周期时间造成轻微的损失。
通过狭窄的数据路径和更快的循环时间实现更高的速度/吞吐量要困难得多。
答案2
与计算机中的许多情况不同,例如寻址,将地址长度增加一位会导致可寻址内存的数量增加 2 的幂(这也是为什么 2 的幂在内存中如此常见),实际字长CPU 可以是任何方便的值。
处理器的常见字长(16、32 和 64 位)实际上是 8 的倍数(而不是 2 的幂,尽管这些 8 的特定倍数也恰好是 2 的幂),8 位是单个字符,本身就是最小的常用原始数据类型。
由于 8 位本身太不精确,对于数值(甚至对于 UTF-16 等扩展字符集)来说不是很有用,因此,大于 8 位的字在处理利用超过那么多精度位的值时可以提供更高的效率,并且 8 位的倍数(最小常用数据类型)仍然是自然的选择,允许人们在一个字中存储整数(例如 2、4 或 8)个字符,而不会留下浪费的未使用的位。
维基百科关于单词的文章有一个部分字长选择并附有更多细节。