• home > theory > CST > hardware >

    为什么没有128位cpu甚至更多位的处理器呢?

    Author:[email protected] Date:

    世界上第一款cpu是英特尔的4004,是4位cpu。这个世界是1971到1978推出大名鼎鼎的8086,16位的cpu………………不过那时候,那时候咋没都没有

    世界上第一款cpu是英特尔的4004,是4位cpu。这个世界是1971

    到1978推出大名鼎鼎的8086,16位的cpu……

    …………不过那时候,那时候咋没都没有生…文革什么的,高这些还不如买茶叶蛋!

    ——才刚刚开始改革开放呢…

    按接触的也就是window 95,32位,奔腾,到后面的 x64,印象没有什么深……

    但那么多年过去,128位cpu一直是口号中……

    或者在xxx网站。论坛上,唧唧歪歪……

    还有什么国产 重大突破 比如:大连-1  128位cpu,世界————(你懂的的,当年的汉芯

    ,陈进叫兽狠狠第伤害了我……稚嫩心灵!

    我觉得,目前情况来讲……

    128位cpu,这10年普及的可能性为0……because:

    我们为什么要换64位cpu,或者为什么要x64 系统?

    因为,32位用不了4g以上内存

    为什么用不了4g以上内存,寻址空间不够……

    32位地址总线可以支持的内存地址代码是4096MB,也就是有4GB的地址代码,可以编4GB个地址。这4GB个地址码正好可以分配给4GB内存。但是,这4GB个地址码不能全部分配给安装在主板上的物理内存。因为个人电脑还有很多设备需要地址代码,以便CPU可以根据地址码找到它们,同时CPU和这些设备交换数据需要暂时存放数据的存储器——寄存器,这些寄存器也需要地址代码。比如硬盘控制器、软驱控制器、管理插在PCI槽上的PCI卡的PCI总线控制器,PCI-E总线控制器和PCI-E显卡,它们都有寄存器都需要系统分配给它们地址代码。这些地址由系统分配,电脑用户在使用中感觉不到。这样一来,当我们为电脑插上总容量为4GB的内存时,就有一部分内存分配不到地址代码而不能使用。


    64位的寻址能力是2^64字节,大约是1.84467441 × 10^19 字节,如果你对这个科学计数法表示的数字没什么感觉,我用另外一种写法:18.45 EB 也就是大约18200000 TB,如果说这个不够用,那你需要的不是人类目前的硅芯片计算机,你需要求助于E.T.。

    使用大地址空间有几个额外的问题,尤其是对RISC处理器来说,会带来致命的性能问题。很多用户,尤其是初级的计算机用户,并不知道RISC这四个字母下隐藏的计算机哲学,或者说艺术:所有的OP code都是定长。以POWER为例,访问32位的常量地址,需要分两次计算16位的地址,因为OP code中只有16bits来存放这样的数据,64位则需要四个OP存放。而在CISC处理器中,地址可以直接编码在指令里,导致指令明显变长,比如32位的跳转通常是5个字节,而64位下面甚至需要15个字节。这只是问题的开始:随着使用的OP的增多,对CPU总线和cache的压力也越来越大,原本一个时钟周期能fetch两条指令,现在可能一条都取不到;原本可以存放两条、四条指令的cache空间,现在只能存放一条指令。

    另一个原因是程序中的数据结构。学过计算机科学初级内容的人都知道,现代数据结构中最最最最最基本的要素是:指针。大多数关键的数据结构都离不开指针:链表、树……,对于程序来说,从32位编译成64位会大幅增加运行时的内存消耗,道理很简单,指针本身变长了,存储指针自身需要的空间增加了。变成128位是什么样呢?可想而知。同样访问内存中的数据需要更多的时间,因为数据本身变大了,假设一个结构体里面有两个指针,32位下编译出来需要8个字节,64位就需要16个字节(假设4字节对齐)。同理,cache面临更大的压力。

    上面是软件上的,或者说是理论上的,那么我们来看看硬件上的问题。既设我们需要制造“128位”的通用处理器,有128位的地址总线,128位甚至256位的数据总线,那么什么样的封装能满足要求呢?在现代处理器3~~4G的这个工作频率上,安排这么大量的总线连接,那么保守估计需要1500~~2500个针脚的封装才能稳定工作(需要大量的供电和接地针脚来平衡电流和改善信号质量),而且这么高密度的,还有大电流,估计要12~24层布线,设计生产这样的一块PCB本身就是挑战电子制造业,至于良品率和价格就不敢想了。

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

    假设用户需要算两个64位整形数相乘, 对于32位cpu, 需要计算4次, 对于64位cpu仅需一次.
    对于绝大多数数据, 32位整形计算足矣, 如果用户非要用64位整形数计算, 64位cpu才有优势.但是,我们编程中,一般也就 int (2^31-1 ~ -2^31)不管他了吧!—— 一般科学计算64位就够了. 普通的x86 CPU也就支持80位, 也没见科学家反应精度低, 所以, 与计算吞吐量(即Flops)相比, 精度需求本不大.

    128位处理器最大寻址是3*10^38,地球上总原子个数大概在10^48左右(可能有一定误差),换句话说,如果地球上每个原子都用来存储1字节,那么整个地球上的所有资源加起来,能造出的用满128位的存储器大概也就是10^10个,大概100亿个,就算是有一两个数量级的误差,现在智能设备+电脑的总量也差不多有100亿个了吧。况且人类还没办法做到1个原子保存一个字节。


    所以,除非把地球拆了,否则地球上的有限资源注定了真正的128位计算机不会大量普及。


    至于256位处理器,还请有时间的人算算太阳系的资源够不够用。

    ……什么128位,512位cpu,其实是dsp,或者特用cpu,通用cpu,做到128位,人家上跟的上马?作为程序员,起码,见过的,没有多少现在为x64系列作优化。…………人家跑的还是32环境下……



    所以,128位,不去瞎起哄了,跟别说512位了,省省吧……

    外面有下雨了,洗澡去了……




    转载本站文章《为什么没有128位cpu甚至更多位的处理器呢?》,
    请注明出处:https://www.zhoulujun.net/html/theory/ComputerScienceTechnology/computBase/2016_0405_7733.html