Intel 于 1980 年推出的 8087 协处理器旨在加速 IBM PC 及其他系统的浮点运算。虽然现代处理器原生支持这些计算,但 8087 依靠专用电路与微代码的复杂结合,在基础算术运算上实现了比标准 8086 处理器高出近 100 倍的性能提升。该芯片的架构分为包含 1,648 条指令的微代码 ROM,以及负责在 80 位数值上执行计算的数据通路。

此图显示了第一段中描述的负责在 80 位数值上执行计算的数据通路。
浮点运算比整数运算复杂得多,因为在进行任何操作之前,必须先对数字的二进制点进行对齐。例如,在加法中,指数较小的数字的尾数必须向右移动,直到指数匹配。8087 通过大型位移器和前导零电路来辅助这一过程,这些电路通过计算零位的数量来确定所需的移动量。对于减法,过程类似,但包含额外的逻辑来处理负结果以及结果为零的情况,因为这些情况会阻止标准的规范化处理。

此图描绘了在浮点加法和减法期间用于对齐二进制点的前导零电路。
在内部,8087 使用 80 位“临时实数”格式,包含 15 位指数和 64 位尾数。该芯片使用由八个内部寄存器组成的堆栈来管理这些数值,每个寄存器都被标记为零、有效、特殊或空。处理的核心是一个 69 位整数加法器,负责执行实际的数学运算,而微代码则负责管理寄存器之间的数据流、处理无穷大等特殊情况,并执行必要的规范化位移。通过将这些复杂的对齐和舍入步骤卸载到专用硬件上,8087 为当时的计算能力提供了巨大的飞跃。

此图展示了第三段提到的内部 80 位临时实数格式和寄存器堆栈结构。

此流程图代表了微代码在管理数据流和处理无穷大等特殊情况中的作用。