当前位置: 华文问答 > 数码

为什么没有128位甚至更多位的处理器呢?用不着?还是做不出来?

2013-09-13数码

Belleve说的非常正确, 128位处理器做的出来, 用不上.

反对匿名用户的答案, 处理器的应用与变革, 是由市场驱动的, 并不是想象力.

参考现在的处理器性能, 十年之内不会有128位通用处理器的需求.

第一点, 处理器位宽的增加, 对数据/地址空间是指数级增长. 不需要128bit.

用主流桌面x86处理器举例, 从32位到64位的过度, 主要原因是为了增大寻址空间. 32位地址总线寻址能力固定在了4G, AMD的第一代64位处理器采用了40位地址总线, 寻址空间为1T. 增加8根线, 空间翻倍是256倍. 如果地址总线增加32根, 寻址空间会翻倍2^32. 更_本_用_不_上!

实际上, 即使是Intel最新的处理器, 地址总线也没超过48根.

第二点. 处理器位宽增加, 并不会带来大幅性能提升.

64bit运算为什么比32bit更有效率?

假设用户需要算两个32位整形数相乘, 对于32位cpu或64位cpu, 都需要计算1次.

假设用户需要算两个64位整形数相乘, 对于32位cpu, 需要计算4次, 对于64位cpu仅需一次.

对于绝大多数数据, 32位整形计算足矣, 如果用户非要用64位整形数计算, 64位cpu才有优势.

如果有用户非要用128位整形数计算, 128位cpu才有优势, 这种情况我建议他重写代码.

浮点一会再说.

第三点, 很多人证明过了, 64bit比32bit CPU跑分高, 所以128bit CPU更好?

64bit比32bit CPU跑分高是必然的, 因为CPU内部寄存器数量翻倍了. 但是, 寄存器翻倍带来的性能提升也不过10~15%. 假设某128bit通用CPU比64bit CPU寄存器再多一倍, 也许性能提升仅会再增加3~5%.

这个不难解释, 一个用户, 带一个手机觉得够用, 带两个手机觉得富余, 带四个手机觉得和带两个手机差不多.

第四点, 在某些测试上, 64bit比32bit CPU更慢, 128bit CPU同理.

因为数据宽度变大了, 先说同频CPU, 假设结构差不多, Cache大小1024bit.

那么这个Cache可以存32个32bit数, 或者16个64bit数. 对于普通程序来说, 当然前者更快, 因为Cache容数多Miss少. 假设某128bit CPU的Cache仍是1024bit, 那么它仅能存放8个数据拷贝, 不得不频繁访问内存, 降低效率.

此外, 128bit CPU意味着更宽的内部总线, 这一点会制约CPU主频上限, 不过对诸如Intel这样的大厂不是大问题.

第五点, 市面上的128bit CPU是怎么运作.

市面上并没有128bit的商业通用CPU. 而专用CPU, 或DSP的位宽有可能超过128bit, 但是它们基本不运行桌面操作系统.

楼上两位知友提到了1999年Sony的CPU

Emotion Engine

, 这可以算是通用CPU了, 但是很遗憾它仍然是64位的. 知友"韦诚"的回答中提到了它整形数据是64bit, 虽然它支持128bit的load/store, 我相信它也是仅供SIMD使用的, 而且是32bit x 4的格式(注意没有单个数据超过32bit). 而且, 这款CPU的仅是数据总线到了128bit (bus带宽待考), 地址线我相信仍没有超过32位. 要说是128bit CPU还很勉强. 另外, 由于它的主频低(300MHz), 所以才敢上128bit的数据总线. 要知道同期的Pentium4主频在2.5G以上.

最后一点, 128bit及以上的真正意义是SIMD.

仅在CPU范围讨论. 假设CPU浮点位宽128bit, 那有两种用法. 1. 数据精度更高. 2. 可以同时存多个低精度数据.

第一项, 数据精度, IEEE 754规范, 浮点数可以到128位. 一般科学计算64位就够了. 普通的x86 CPU也就支持80位, 也没见科学家反应精度低, 所以, 与计算吞吐量(即Flops)相比, 精度需求本不大.

第二项, SIMD将多个低精度数据打包使用, 这是现代通用CPU的浮点计算单元格式. 这个Intel在1997年的MMX指令集就实现了. 最新的AVX指令集位宽是256bit. 马上会有512bit的新指令集诞生.

因此, 如果说Sony Emotion Engine是128bit, 那Intel Core就是256bit.

废话了不少, 结论就是128bit的通用CPU造出来不难, 但用不上, 市场也不需要. 而现有的64bit CPU的浮点部分已经是256bit了, 可以满足绝大多数科学计算的需求.

谢邀.