Abort Retry Fail

Abort Retry Fail

The FDIV bug and release of the P6

到1994年,Intel 已经设法占据了个人电脑微处理器市场约 75% 的份额。该公司还成功进入汽车、工业控制、电信设备和超级计算机领域。Intel x86 架构将公司推向了如此巨大的高度,并且他们在 CPU 系列中建立了大约四年一次的发布节奏。个人和公司对该架构的硬件和软件的投资以数十亿美元计。

虽然 Pentium 于 1993 年 3 月 22 日发布,但围绕 Pentium 构建的系统于 1993 年 5 月 17 日发布,并且直到当年晚些时候才开始批量发货。Pentium 的 60MHz 变体可以使用 Dhrystone 1.1 基准测试提供每秒 1 亿条指令,而 66MHz 变体将其提升到 112MIPS。这些是第一批能够实现这种性能的 x86 芯片,它们的性能几乎是原始 i486 的两倍。这种性能几乎使 Intel 与基于 RISC 的 UNIX 工作站硬件展开竞争,而 Intel 最大的软件合作伙伴 Microsoft 支持那些运行 NT 的工作站。然而,一个关键的区别是 Pentium 的价格约为 900 美元,而 MIPS R8000 约为 2500 美元,Alpha 21064 超过 3000 美元。当然,批量购买时这些价格都更加合理,但 Intel 在性价比方面要好得多。客户可以用低于高性能 RISC CPU 的成本购买一整台基于 Pentium 的 PC,虽然不如前者强大,但能够完成相同种类的工作。这非常了不起,因为 PC 制造商遇到了工作站制造商已经解决的问题:散热、电压变化、RFI、EMI。对于 XT 来说,这些类型的考虑因素并不是太大的障碍,但对于 Pentium 来说,它们是严重得多的问题。它们非常严重,以至于 Intel 在提供芯片之前就向系统制造商提供了热模型。

1994 年初,Intel 宣布推出用于 Socket 5 的 Pentium P54C。这些芯片需要 3.3 伏电源,可以以 75MHz、90MHz 或 100MHz 运行,并利用内部时钟倍频器,使其能够以高于外部总线的频率运行。这些 Pentium 将晶体管数量增加到 330 万个,并且采用半微米 BiCMOS 工艺制造。这些 Pentium 还增加了对多处理器系统的支持,这是晶体管数量增加的主要来源。添加处理器时,机器需要更多的电路用于缓存、内存、中断和总线利用率。

虽然大多数关于 Intel 的消息都很棒,但并非所有消息都是如此。第一代 Pentium 处理器中的一小部分由弗吉尼亚州林奇堡学院的 Thomas R. Nicely 教授掌握,他们正在研究孪生素数的倒数。 1994 年 6 月 13 日,Nicely 指出,在向他的实验室添加三台基于 Pentium 的计算机后,他在浮点运算中得到了不一致的结果。他排除了 10 月 19 日硬件错误以外的所有原因。具体来说,Nicely 指出,在三台不同的 Pentium 系统上,1 除以 824633702441 是不正确的,而在多台 i486 和 i386 系统上则是正确的。然后,他在 24 日向 Intel 发送了一封电子邮件,记录了他的发现。 Intel 没有向他提供太多信息,只是说这个问题是已知的。然后,他在 30 日向其他人发送了一封电子邮件。他的邮件写道:

看来许多甚至可能所有 Pentium 处理器的浮点单元(数字协处理器)中都存在一个错误。 简而言之,Pentium FPU 针对某些除法运算返回错误的值。例如,1/824633702441.0 的计算不正确(第八个有效数字之后的所有数字都出错)。这可以在编译的代码、普通的电子表格(例如 Quattro Pro 或 Excel)甚至 Windows 计算器(使用科学模式)中通过计算 (824633702441.0)(1/824633702441.0) 来验证,它应该完全等于 1(在一些极小的舍入误差内;通常,协处理器的结果应该包含 19 个有效十进制数字)。但是,经过测试的 Pentium 为此计算返回 0.999999996274709702。对于区间 824633702418 <= x <= 824633702449 中的大多数 x 值,以及通过将上述区间乘以或除以 2 的整数次幂获得的任何区间,x(1/x) 也获得了类似的错误值(还有其他一些区间也会产生除法错误)。 还可以通过计算上述 x 值的 1/(1/x) 来观察此错误。 Pentium FPU 将无法返回原始 x(事实上,它通常会返回一个完全大 3072 = 6*0x200 的值)。 该错误已在我测试或测试过的所有 Pentium 上观察到,包括 Dell P90、Gateway P90、Micron P60、Insight P60 和 Packard-Bell P60。在任何 486 或更早版本的系统上都没有观察到,即使是那些带有 PCI 总线的系统。如果 FPU 被锁定(并非总是可能),则错误消失;但随后 Pentium 变成了“586SX”,并且浮点必须在仿真中运行,从而使计算速度降低大约十倍。 早在 1994 年 6 月,我就遇到了与此错误相关的错误结果,但直到 1994 年 10 月 19 日,我才认为我已经消除了所有其他可能的错误来源(软件逻辑、编译器、芯片组等)。我于 10 月 24 日星期一联系了 Intel 技术支持,了解此错误(呼叫参考编号 51270)。联系人后来报告说,该错误已在 Intel 的 66-MHz 系统上观察到,但没有进一步的信息或解释,除了以前没有报告或观察到此类错误的事实。 可以通过直接联系我,以及通过 Internet 上的匿名 ftp 从 acavax.lynchburg.edu 机器的 [anonymous.nicely.pentium_bug] 目录下载文件来获得更多信息(密码为 ANONYMOUS,用户 ID = Internet ID)。这些文件包括一个文档文件、一个演示该错误的 DOS 可执行映像,以及该演示的源代码。 zip 文件使用 PKZIP 版本 2.04g。 我很想听到其他 Pentium 的测试结果,以及 486-DX4 和(如果有人有的话)AMD、Cyrix 和 NexGen Pentium 克隆的测试结果。 您可以随意使用此信息,只要您署上我的姓名和雇主即可。

这......正是 Intel 的人不想发生的事情。 Andrew Schulman,《Undocumented DOS》和《Undocumented Windows》的作者,是该电子邮件的收件人之一。当时,Schulman 没有 Pentium,因此他将电子邮件转发给 Phar Lap 的 Richard Smith,并要求他进行测试。 Smith 和他的公司确认了该错误,并且 Smith 将该电子邮件发布到 CompuServe 论坛。在 24 小时内,有 10 多个确认。这被称为 FDIV bug(以 x86 汇编语言中浮点除法的助记符命名),并且它成为了头条新闻。 1994 年 11 月 7 日,《电子工程时报》发表了一篇题为《Intel 修复 Pentium FPU 故障》的文章,内容如下:

为了纠正导致某些高精度计算结果不准确的异常现象,Intel Corp. 上周确认已更新了 Pentium 微处理器中的浮点单元 (FPU) 该公司表示,该故障是在年中发现的,并通过最近硅芯片中的掩模更改进行了修复。 Intel Pentium 工程经理 Steve Smith 表示:“这是一个非常罕见的条件,每 9 到 100 亿个操作数对才会发生一次。” 上周的抽查表明,至少在一台最近制造的基于 Pentium 的 PC 中存在此问题。 Intel 表示无法量化有多少此类系统在现场。 Intel 发言人说:“这甚至不符合勘误表的资格。我们已在后续步骤中修复了它。” 错误的除法 该问题于上周在 Compuserve 的“Canopus”论坛上的一条消息中曝光,该消息是林奇堡学院(弗吉尼亚州林奇堡)数学教授 Thomas Nicely 的私人电子邮件通信的重新发布。“Pentium 浮点单元针对某些除法运算返回错误的值,”他写道。“例如,1/824633702441 的计算不正确(第八个有效数字之后的所有数字都出错)。可以通过计算...(824633702441.0) X (1/824633702441.0) 来验证,它应该完全等于 1(在一些极小的舍入误差内;通常,协处理器的结果应该包含 19 个有效十进制数字)。但是,经过测试的 Pentium 为此计算返回 0.999999996274709702。” “该错误已在我测试或测试过的所有 Pentium 上观察到,包括 Dell P90、Gateway P90、Micron P60、Insight P60 和 Packard-Bell P60。在任何 486 或更早版本的系统上都没有观察到,即使是那些带有 PCI 总线的系统。如果浮点单元被锁定(并非总是可能),则错误消失。” Intel 的 Smith 强调说,该异常现象不会影响普通用户。在谈到 Nicely 时,Smith 说:“他是最极端的用户。他日夜不停地计算倒数。他在运行几个月后观察到的是我们有八个小数位正确,而第九个小数位没有正确显示的情况。因此,您会在尾数右侧的第九个小数位中得到一个错误。我认为即使您是一名工程师,您也不会看到这一点。” Nicely 说他向 Intel 指出了这个问题,因为“它对数学有重大影响,因为我们必须具有绝对的精度。我怀疑对大多数人来说,它将无关紧要。但是工程师可能会有不同的看法。” 《EE Times》上周进行的一项抽查测试了 Nicely 在 Acer America 刚刚收到的 AcerPower Minitower Pentium/60 机器上的表达式。结果为 0.999999996247。 Intel 表示,它通过自己的随机测试发现了该异常现象。修复涉及更改 Pentium 浮点单元的掩模。具体来说,根据 Intel 的 Smith 的说法,该纠正需要更新 Pentium 上的可编程逻辑阵列 (PLA)。 “这与浮点单元中的状态机有关。在某些情况下,在我们操作的过程中,我们没有正确处理精度,”他说。“这是一个迭代计算,在每一点,您都必须经历一个查找过程,该过程会说出您对尾数中更远的位(相当于小数点右侧的数字)的下一个近似值是什么。” 更好的结果 修复需要向 PLA 添加项或额外的门序列。这纠正了从有问题的查找表访问返回的错误结果。 Intel 表示,更新后的微处理器上没有零件编号指定或其他标记 - 这些微处理器在最近几个月内上市 - 以将其与早期异常零件区分开来。但是,Intel 发言人说:“如果客户有疑虑,他们可以致电,我们将更换”包含该错误的任何零件。

CNN 在 11 月 22 日报道了该错误,然后在 1994 年 11 月 23 日,《纽约时报》发表了一篇题为《缺陷破坏了 Pentium 芯片的准确性》的文章,其中部分内容如下:

该缺陷出现在目前市场上所有 Pentium 芯片中,出现在涉及超过五个有效数字的某些类型的除法问题中,有效数字是一个数学术语,可以包括小数点前后的数字。 Intel 拒绝透露其制造或销售了多少 Pentium 芯片,但位于加利福尼亚州圣何塞的市场研究公司 Dataquest 估计,Intel 在 1994 年将销售 550 万至 600 万个 Pentium,约占全球销售的个人电脑数量的 10%。 Intel 昨天表示,它不认为该芯片需要召回,并声称普通用户遇到因该错误导致的不准确结果的机会超过九十亿分之一,因此商业或家庭计算机的用户没有注意到后果。事实上,该公司表示,它仍在向计算机制造商发送在发现问题之前制造的 Pentium 芯片。

这很可能是微处理器中硬件错误的第一个广为人知的实例。然而,宣传并没有促使 Intel 采取行动。只有当客户能够向 Intel 代表证明他/她需要的精度超出了他/她的 Pentium 所能提供的精度时,他们才会发货更换件。 12 月 12 日,IBM 宣布停止发货基于 Pentium 的机器。虽然 Intel 表示普通用户可能每 27,000 年才会遇到一次该错误,但 IBM 发现用户可能会每隔几天就会遇到该错误。 Intel 迅速改变了他们的计划,并在 19 日宣布他们将更换所有有缺陷的 Pentium。这使他们损失了 4.75 亿美元(或按 2025 年美元计算约为 10.18 亿美元)。

Ken Sherriff 在硅芯片中发现了该错误,并提供了对到底出了什么问题以及如何更正它的深入解释,如果您想了解更多详细信息。

对于 Intel 来说,在超级计算机领域,这一年要好得多,i960 成为芯片总销量领先的 RISC 芯片。这种小小的硅片可以在网络设备、激光打印机以及当时世界上最强大的超级计算机中找到,它由 Sandia 国家实验室的两台 Intel Paragon XP/S 140 组成。

到年底,Intel 的 Tape Carrier Packaging (TCP) 已上市。 Intel 将 TCP 描述为提供更小的间距、更薄的封装外形和更小的板载占位面积。他们还表示:“主要封装功能包括表面贴装技术设计、0.25 毫米的引脚间距、48 毫米的磁带格式、用于拾放的聚酰亚胺向上和滑架处理。以平面形式装运在滑架中,引脚设计成‘鸥翼’配置,并通过多种方法回流到 PCB 上。”这意味着 Pentium 可以用于笔记本电脑。据我所知,第一款是 Toshiba T4900CT。这款笔记本电脑配备了 75MHz 的 Intel Pentium(3.3 伏,16K 缓存)、10.4 英寸 SVGA TFT-LCD、772MB HDD、8MB RAM(可扩展到 40MB)、2 个 PCMCIA、VL 总线 GPU、3.5 英寸 1.44MB 软盘驱动器,并且运行 Windows 3.11 for Workgroups。如果您知道更早的 Pentium 笔记本电脑,请在评论中告诉我。

尽管存在 FDIV bug 并且在资本和研发上花费了 35.5 亿美元,但 Intel 在 1994 年的收入为 22.8 亿美元,收入为 115 亿美元。

随着更正后的 Pentium 和 P54C 的推出,1995 年对该公司来说是伟大的一年。随着 8 月 24 日 Windows 95 的发布,Pentium 的销量大幅增加,PC 的全球销量增长了 25%,达到约 6000 万台。 Microsoft 的成功正在推动 PC 市场的所有业务发展,并且是以一种戏剧性的方式进行。它对 PCI 总线的支持也没有损害 Intel。

Intel Pentium Pro die image, from Intel

1995 年 11 月 1 日,Intel 发布了 Pentium Pro,如果 Intel 保留其原始命名方案,这将是 i686。最初的 Pentium Pro 采用半微米或 0.35 微米 BiCMOS 工艺制造,由 550 万个晶体管组成。它采用 387 针 CPGA(Socket 8)封装,支持 150MHz 至 200MHz 的时钟速度,并且可以支持单处理器、双处理器和四处理器配置。虽然 Pentium Pro 是 32 位 CPU,但它具有 36 位地址宽度并支持 PAE,这使其可以寻址高达 64GB 的 RAM。它具有 8K L1 指令缓存、8K L1 数据缓存和低端的 256K L2 以及高端的 1MB L2。 L2 是封装上的,但不是芯片上的,并且它有自己的背面总线。这种设计允许 CPU 同时读取内存和缓存。 TDP 的范围从 29.2W 到 44W,具体取决于时钟、总线速度(60MHz 或 66MHz)和缓存大小。

Intel Pentium Pro 200 in socket, image from computerbase.de

除了名称、制造商和 ISA 之外,Pentium Pro 与其前身几乎没有任何共同之处。首席设计师是 Fred Pollack,他之前曾在 iAPX 432 上工作过。在内部,Pentium Pro 是一款超标量、乱序、RISC 芯片,支持推测执行和寄存器重命名。在每个周期中,最多可以从指令缓存中提取 16 字节,并将其发送到三个解码器。这些解码器获取 x86 指令并将其转换为 RISC 微操作。其中两个解码器仅用于简单的 x86 指令(此处简单定义为在单个周期中转换为单个 RISC 微操作的指令),而第三个解码器可以处理任何指令。 Pentium Pro 在很大程度上依赖于微代码,并且该微代码可以在 BIOS 或操作系统控制下进行升级。与早期 x86 芯片的另一个偏差是向后兼容性。与早期 Intel x86 CPU 不同,Pentium Pro 虽然能够运行 16 位代码,但并未强调这一点,事实上,它在执行 16 位代码方面比当时的其他 x86 芯片更慢。速度降低的原因是读取大型寄存器(例如 EAX)会停止,直到写入部分寄存器(例如 AX)退休为止。然后,此停止将导致流水线刷新。 Pentium Pro 旨在完全运行 32 位软件,并且运行早期芯片软件的能力旨在提供便利。 Pentium Pro 专门针对工作站和服务器,在这些工作站和服务器中通常不会运行标准的文字处理器、电子表格或视频游戏。这些应用程序是 i386、i486 或原始 Pentium 的领域。

Pentium Pro was a monster, image from Microprocessor Report, Vol9, Num15, 13th Nov 1995

对于那些想要以比传统的 UNIX on RISC 系统更低的成本获得疯狂性能的工作站和服务器用户来说,Pentium Pro 交付了。当该芯片于 11 月 2 日发货时,定价为 974 美元至 1325 美元(最高端 SKU 将稍后以 1989 美元的价格发货),并且它在 32 位整数性能方面比所有竞争对手都快。虽然它在浮点方面落后,但在单个系统中组合多个 Pentium Pro 的能力,使 Intel 能够很好地竞争,尽管存在这种缺点。确实,Pentium Pro 非常出色。最慢的部分(166MHz)在 SYSmark/NT 中提供的整数性能略高于 200MHz R4400 的两倍。显然,在处理真实世界的应用程序时,这可能会有所不同,但对于许多应用程序来说,Pentium Pro 的确超出了其价格。为了将完整系统的定价纳入考量,Intergraph 将于 1996 年 11 月推出第一款四 CPU Pentium Pro 工作站。此系列中的所有机器都配备了 Intergraph 制造的图形插件卡(G76、G95 或 Intense 3D)。最便宜的是 TD-200,价格从 1500 美元到 5000 美元不等,具体取决于使用的显卡。在顶级单 CPU 型号中,该机器提供的图形性能大约是 SGI O2 的两倍(根据 Intergraph)。完成 Intergraph 产品线的是 TD-310、TD-410 和 TD-610。这些配备了一个、两个或四个 Pentium Pro。这些可以配置高达 1GB 的 RAM、Ultra SCSI 硬盘、以太网控制器、Creative Labs Vibra 16c(集成)、高达十个扩展插槽(PCI 和 ISA)在台式机型号中,一个 8x CD-ROM、一个 3.5 英寸软盘驱动器、双屏幕支持和 Windows NT 4.0。

Intergraph TD-310, image from intergraph manual

Pentium Pro 不会有 Pentium 那样的市场成功,但这不是它的目的。它旨在打入工作站和服务器市场;它实现了这些目标。此外,Pentium Pro (P6) 的架构将在十多年内为 Intel 提供良好的服务。

Intel 以 35 亿美元的收入和 162 亿美元的收入结束了 1995 年。从 1996 年开始,随着 Pentium、Windows 95 和 万维网 的爆炸式增长,Intel 受益于巨大的生态系统增长。虽然 FDIV bug 肯定获得了大量的宣传,花费了大量的资金,并且 Intel 肯定更愿意避免这种情况,但它根本没有损害公司的发展轨迹。 Intel 在 1996 年的《财富》杂志最受赞赏公司排行榜上排名第五,并且该公司的市值达到了 1110 亿美元。 Intel 以 51.57 亿美元的收入和 208.47 亿美元的收入结束了 1996 年,资产为 136.84 亿美元,负债为 48.63 亿美元。

我现在有来自许多公司的读者,这些公司的历史我都在报道,你们中的许多人都亲身经历了我报道的时间段。你们中的一些人在我的文章中被点名。欢迎所有更正记录;请随时发表评论。