从CPU架构和技术的演变看GPU未来发展
首先我们来重拾一个几乎快要被遗忘的名词——协处理器,它是一种芯片,用于减轻系统微处理器的特定处理任务,早些年协处理器主要是用以辅助进行浮点运算。
★ 最初的CPU只能进行整点运算,浮点运算效率极低
CPU最基本的运算就是“加减乘除”,但实际上计算机只能用加法器来完成整数以及固定小数点位置(整点)的算术运算,而不能处理小数点可以浮动的数值(浮点)。对于小数多采用的是二进制的科学计数法、也就是浮点数表示法:尾数、阶数符号位各占一位,然后再对其余数位尾数、阶数的有效数位合理分配。
在CPU运算时,浮点数的运算量远比整数复杂,因为不仅尾数要参与运算,阶数也要参与,并且需要对尾数和阶数的符号位都进行处理,所以,最早的CPU并没有能力进行浮点运算(8088/8086,80286,80386SX),需要浮点运算时,由CPU通过软件模拟来实现,所以,进行浮点运算时就会慢很多。
★ 协处理器诞生,专门处理浮点运算
8086处理器和它的协处理器8087
8086是当今CPU的鼻祖,所谓X86架构也就是指8086处理器所开创的指令集体系。为了弥补8086在进行浮点运算时的不足,Intel与1980年设计了8087数学协处理器,并且为X86体系推出了第一个浮点格式IEE754。8087提供两个基本的32/64bit浮点资料形态和额外的扩展80bit内部支援来改进复杂运算之精度。除此之外,8087还提供一个80/17bit封装BCD (二进制编码之十进制)格式以及16/32/64bit整数资料形态。
386处理器和它的协处理器387
X87协处理器新增约60个指令给程序员,所有的指令都是以“F”开头跟其他的标准8086整数运算指令有所区别,举例来说,相对于ADD/MUL,8087提供FADD/FMUL。
8087是于1980年发布,然后被80287、80387DX/SX和487SX所取代。
★ 协处理器被整合进入CPU内部
以往,协处理器都是可选配件,在主板上X86处理器旁边一般都会为X87设计一个空的插槽,只有当用户确实有需要时才会专门购买相应的X87协处理器插进去,来加速浮点运算。
486DX是第一颗整合了浮点运算协处理器的产品,相当于486SX+487SX
随着时代的发展,越来越多的程序要求使用更高精度的浮点运算,X87协处理器几乎成为必备品。于是在制造工艺日趋成熟之后,Intel在486一代将X86和X87整合在了一起,浮点运算成为了CPU的一项基本功能,而且重要性越来越大。
Intel 486DX、Pentium之后的CPU都内含了协处理器,AMD K5、K6之后的CPU都内建了协处理器,所以此后就很少有人会提及协处理器的概念了。