英特尔8087浮点芯片核心的加法器
1980年,英特尔发布了英特尔8087浮点协处理器,这是一款可以使数学运算速度提高100倍的芯片。除了进行算术和平方根运算外,8087还计算包括正切、指数和对数在内的超越函数。但这一切都依赖于一个69位的加法器:“浮点执行单元的算术核心围绕一个由加法器及其相关寄存器、移位器和控制电路组成的纳米机器进行构建,”专利中这样描述。在本文中,我将解释这个加法器的电路。照片下方显示的是在显微镜下观察到的8087芯片。在芯片的边缘,细如发丝的连接线将芯片连接到它的40个外部引脚。芯片上的复杂图案由金属布线以及其下的多晶硅和硅形成。在芯片的顶部,总线接口单元连接到系统的其余部分:与主8086处理器和内存进行协调。芯片的指令由中间的大型微代码ROM定义。英特尔8087浮点单元芯片的芯片晶粒,相关功能块标注清晰。芯片尺寸为5mm×6mm。单击可查看更大图像。芯片的下半部分是“数据通路”,执行计算的电路;它分为处理浮点数指数的指数数据通路和处理小数部分(或有效数字)的分数数据通路。加法器(红色)位于分数数据通路的中间;为了对指数进行加法,必须将指数复制到分数数据通路中。加法器的结构构建一个二进制加法器是简单的,而困难的部分是使它快速。关键问题在于如何处理从一个位位置向下一个位位置的进位。每个进位可能依赖于所有的低位进位,但您不想等待进位在69位的逻辑中传播。(这类似于用长加法计算999999+1:您需要依次进位,依次进位……)8087的加法器通过将加法分解为4位块,利用两种技术使每个块内部的计算变得快速,从而加速性能。进位需要从一个块传播到另一个块,但这将进位步骤的数量减少了四倍。8087加法器中一个四位块的简化图。上图显示了一个4位块的结构,进位生成电路目前被抽象掉。加法器有两个输入:一个(F)来自芯片的分数总线,该总线连接着分数数据通路的组件。第二个输入(B)来自一个称为B寄存器的寄存器。和每个位置的进位一起,和是通过将一个F输入、一个B输入和该位位置的进位进行异或运算来得到的。由于下面将解释的原因,中间值(F XOR B)被称为“传播”。每个块的进位输出与下一个块的进位输入相连。但进位电路内部发生了什么?1959年,曼彻斯特大学的研究人员为一台名为Atlas的计算机开发了一种快速的进位技术。这个技术称为曼彻斯特进位链,通过设置并行开关来计算进位值,然后让进位通过导线快速传播,由开关控制。尽管进位仍需要从位到位传播,但它以信号在导线中的速度传播,而不是受到逻辑门的速度限制。曼彻斯特进位链围绕“生成”、“传播”和“删除”(也称为“清除”)的概念构建,这些概念在添加两个位和一个进位时出现。如果您添加1+1,则会生成进位输出,无论是否有进位输入。相比之下,如果您添加0+0,则无论进位输入如何,都不会有进位输出;任何进位输入都会被删除。一个有趣的情况是如果您添加0+1:只有在有进位输入时才会产生进位输出;也就是说,进位输入被传播到进位输出。在逻辑术语中,生成信号是两个输入位的与,删除信号是或非,传播信号是异或。重要的是,这些信号可以在所有位位置上并行计算,耗时是固定的。曼彻斯特进位链的构想。注意低位在左侧,因此进位从左到右流动。曼彻斯特进位链的构造如上所示,各个位的开关根据生成/传播/删除值设置。一旦开关设置完成,进位状态就会快速流过电路,在每个位置生成进位值,而没有任何逻辑延迟。如果传播开关闭合,则前一个进位会通过。但是如果生成或删除开关闭合,进位则分别被设置或清除。一旦进位值可用,最终的和可以与异或运算并行计算。8087使用优化的电路用于曼彻斯特进位链,将生成和删除的情况结合起来。下面显示了加法器进位链的一个阶段。对于传播情况,进位输入Cin会通过。
本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。
☕请我喝杯咖啡