自从苹果在今年 WWDC 宣示将用自研“Apple Silicon”收复英特尔(Intel)处理器占据十几年的“失土”,各方英雄好汉就纷纷跳出来“戳一下”凑个热闹。前阵子看了一篇国外报导,内容的重点是“某位前任英特尔总工程师指出,英特尔 Skylake 世代处理器的糟糕品质,让苹果成为提交最多问题回报的客户,促使苹果最终放弃英特尔”。
听说笔者的当下表情,就像劫后余生的幸存者。
先讲一下处理器臭虫这件事,天底下没有完美无缺的产品,处理器亦不可免俗。1994 年 10 月被发现的 Pentium 处理器浮点除法(FDIV)事件,提醒了世人,像处理器这种“科技结晶”,也会有产品设计问题。时至今日,高效能处理器的晶体管数目,个个数以 10 亿为基本单位,当然也造就了动辄上百条起跳的“产品勘误表”,有些可透过微码(Microcode)修正,有些则不行。
不过当电脑最基本语言的“指令集架构”(Instruction Set Architecture,ISA)本身先天不足、后天失调、又欠缺业界标准的时候(英特尔和众多竞争者打了很久的指令集扩充战争),这问题就会再度放大。
英特尔的 Pentium Rro 总工程师之一 Robert Colwell 曾在回忆录提到一个重点:开发 x86 指令集相容处理器,最艰钜的挑战在于“确保相容目前所有的应用程序”,特别当某些应用程序还“利用”长年累积的臭虫和没有被遮蔽掉的未定义运算码(Opcode)。所谓的“资产”与“包袱”是同一枚硬币的两面,大概就是这么回事。
像老一辈电脑用户,应该或多或少记得微软 HMA(高内存位址区域)和 HIMEM.SYS 驱动程式,这就源自于 1986 年 Quartedeck 与微软的程序员,发现只要启动 A20 定址线,就会多出 1MB 定址(20 位元)以上的 64kB 空间,在那个内存容量寸土寸金的年代,自然就被“充分利用”。BIOS 选单的“A20 Gate”选项(IBM 利用 8042 键盘控制器某讯号脚位为控制 A20 的开关),则是确保相容 8086 应用程序,而日后所有 x86 指令集的操作系统也须保留这部分程式码。
“泡泡龙”(Bubble Bobble)这个知名游戏,曾在 486 处理器会因计时循环溢出(Timing Loop Overflow)而无法执行,却在 Pentium 4 起死回生,至今已鲜为人知。
但回过头来,x86 指令集容易制造处理器的臭虫,或著不同厂商之间的 x86 指令集相容处理器彼此之间并不 100% 相容,又跟苹果有什么关系?
首先,Mac 的软件生态系统相对封闭,苹果也是在“x86 处理器市场版图大势底定”后才从 IBM PowerPC 转向英特尔 x86,照理说也不该有造成麻烦的昔日包袱。
其次,苹果也没采用英特尔以外的 x86 指令集相容处理器,更不可能发生不同厂商的相容性问题,除非英特尔搞到自家不同世代产品之间会出现这种低级错误。
那假如这位前任英特尔总工程师讲的问题,不是指令集层面的相容性,而是外部硬件功能呢?扣除苹果的 7% 个人电脑市占率,剩下 93% 应该早就统统跳起来了吧。但过去也不乏“20 年前的 AMD 难以攻入品牌大厂供应链,就起因于产品品质不佳”的传闻,总之都是往事了。
所以笔者对这则报导的真实性抱着“看过就算了”态度,反倒是这些年来,微软究竟默默扛了多少黑锅,还真的让人满好奇的。
(首图来源:苹果)
延伸阅读:
- 苹果股价再登历史高!Silicon 并非单纯的 ARM 处理器
- 狼真的来了,苹果真的改用自研的 ARM 架构处理器⋯⋯然后呢?
- 库克公开自制 Mac 处理器大计,年底前出货首部搭载苹果芯片的 Mac 电脑