8087数学协处理器的快速位移器的芯片分析
浮点数在科学编程中非常有用,但早期的微处理器只直接支持整数。虽然浮点数在1950年代和1960年代的主机中很常见,但直到1980年,英特尔才为微型计算机推出8087浮点协处理器。将该芯片添加到IBM PC等微型计算机中,使浮点运算速度提高了最多100倍。这对AutoCAD、电子表格或飞行模拟器等应用来说是个巨大的好处。缺点是8087芯片的成本达数百美元。实现浮点运算并使其计算快速且准确是困难的。溢出、舍入、超越运算和许多边缘情况都可能引发问题。在8087之前,每个制造商都有自己不兼容的浮点实现。然而,英特尔请来了数值分析专家威廉·凯汉设计基于严格原则的准确浮点。最终的结果是8087的浮点架构。这成为几乎所有现代计算机使用的IEEE 754标准,因此我认为8087是有史以来设计的最具影响力的芯片之一。英特尔8087浮点单元芯片的芯片图,标注了主要功能模块。芯片尺寸为5mm×6mm。位移器用红色框起来。点击查看大图。为了探索8087的工作原理,我打开了一颗8087芯片,并用显微镜拍摄了硅芯片的照片。8087包含40,000个晶体管,推动芯片制造达到了极限;相比之下,其伴侣8086微处理器仅有29,000个晶体管。为了使该芯片成为可能,英特尔开发了新技术。在本文中,我重点介绍高速二进制位移器(如上图所示的红框部分)。位移器占用了芯片很大一部分面积,因此最小化其面积对实现8087至关重要。浮点数由一个小数(也称为有效数字或尾数)、一个指数和一个符号位组成。(这些以二进制表示,但用十进制类比,数字6.02×10^23中,小数部分为6.02,指数为23。)处理小数的电路位于芯片照片的底部。从左到右,小数电路包含一个常量只读存储器、一台位移器(高亮显示)、加法器/减法器和寄存器堆。指数处理电路位于芯片的中间。在它的上方,微代码引擎和只读存储器控制芯片。位移器的作用是将二进制数向左或向右移动,这在浮点运算中有多个关键角色。当两个浮点数相加或相减时,必须移动数字以使二进制点对齐。(二进制点类似于小数点,但适用于二进制数。)8087的超越指令围绕位移和加法运算构建,使用一种称为CORDIC的算法。位移器还用于从内存中读取的16位块组装浮点数。由于位移对性能至关重要,8087使用“筒位移器”,可以在一步中将数字移动任意数量的位。英特尔采用了两阶段的位移器设计,使其体积可控,同时仍然提供高性能。第一阶段将值移动0到7位,第二阶段将其移动0到7字节。结合起来,这两个阶段将值移动0到63位。位移器我将开始描述位移器,它执行0到7位位置的位移。下面的图显示了位移器的结构,显示了五个输入和输出;完整的位移器支持68位。概念是,通过激活特定的列,输入按所需的数量进行位移。每个圆圈表示一个晶体管,它可以作为输入线和输出线之间的开关。垂直选择线用于激活所需的晶体管。每个输入线与八个晶体管对角连接,允许它指向八个输出之一。例如,图中显示选择线3被激活,打开了相关的晶体管(绿色)。高亮的输入20(橙色)被指向输出23(蓝色)。同样,其他输入也连接到相应的输出,产生3位的位移。通过激活不同的选择线,输入将以0到7位之间的不同数量进行位移。位移器的结构。通过激活选择线,输入与所需的位位移连接到输出。为了说明位移器的内部构造,我将首先描述8087芯片中使用的NMOS晶体管。晶体管是通过对硅基底的区域掺杂杂质,创造不同电气特性的“扩散”区域而建造的。晶体管可以被视为一个开关,控制电流在称为源极和漏极的两个区域之间的流动。晶体管处于激活状态时...
本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。
☕请我喝杯咖啡