为什么没有“128位”的通用处理器

在专用领域,比如DSP,GPU中,通用寄存器通常都很宽,也就是说大于通常的32位或者64位。其原因在于,这些针对特定领域设计的处理器,其硬件架构是为问题服务的,举例来说,GPU处理颜色的时候,一个像素ARGB是四个32位或者16位的浮点数,所以寄存器有128位或者64位宽也就不足为奇了。

那么我们为什么没有见到,或者说市场上为什么没有“128位”的通用处理器呢?这有很多计算机体系结构的原因在里面,容我一一说来:

首先,我们得定义这个“128位”是什么。以传统的POWER、x86和x64来说,处理器的位数是用通用寄存器的宽度来定义的,即32位处理器的通用寄存器是32位,64位处理器的寄存器是64位,那么如果我们有了128位处理器,也应该一样。但是,这么做有必要么?常规的整数运算是用不到这么大的寄存器的,真正的大数运算也不会用这种方法来实现。而在现代的32位、64位处理器中,更重要的浮点运算所使用的浮点寄存器早已经是128位甚至256位了。所以128位通用寄存器在这里没什么意义。

那么就有人说,我们需要128位的寻址能力。好吧,64位的寻址能力是2^64字节,大约是1.84467441 × 1019 字节,如果你对这个科学计数法表示的数字没什么感觉,我用另外一种写法: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本身就是挑战电子制造业,至于良品率和价格就不敢想了。

既然我们有了便宜的4核、8核处理器,为什么要设计生产完全不可行,没有任何工业和商业价值的“128位”处理器呢?所以,市场上没有“128位”通用处理器。

DX 贴膜秘籍

UntitledE-INK的脆弱是总所周知的,加之DXG的屏幕又比较大,所以贴张膜方便以后清理还是很有必要的,现在最常见的是这样的膜,市价大约30元上下:

但是,这个膜有一个很大的问题就是,它的尺寸太精确了,精确到什么程度呢?和屏幕尺寸的误差不超过1mm!而DXG的屏幕是凹进去的,换句话说,一旦贴上,再想揭开几乎没有任何稳妥的办法,我在论坛上看到有各种主意:绣花针挑,牙签,甚至还有拆机的……这样的操作显然已经违背了贴膜保护屏幕的初衷了。

那么怎么解决呢?其实只要贴之前对贴膜做一个小手脚就可以了:

 

 

 

cut找一个你认为不重要的角(我倾向于左下角),用剪刀剪去大约2mm宽的一条即可(见左图)。对于9.7寸这么大的膜来说,剪去这么一点完全没有影响。

 

 

 

 

 

 

cut2

以后想要揭开,或者干脆就是贴的时候没贴好想揭开处理,就很简单了,找一张比较薄又比较有韧性的纸,比如杂志用的铜版纸或者超市小条,裁下10x30mm的一条慢慢从这剪去的一角插进去(见左图),然后用透明胶带纸和膜本身固定即可,然后就随便揭开处理了。