苹果抛弃Intel的理由真的跟x86处理器品质不佳有关系?

自从苹果在今年WWDC宣示将用自研“Apple Silicon”收复英特尔(Intel)处理器占据十几年的“失土”,各方英雄好汉就纷纷跳出来“戳一下”凑个热闹。前阵子看了一篇海外报道,内容的重点是“某位前任英特尔总工程师指出,英特尔Skylake时代处理器的糟糕品质,让苹果成为提交最多问题回应的客户,促使苹果最终放弃英特尔”。

听说笔者的当下表情,就像劫后余生的幸存者。

先讲一下处理器bug这件事,天底下没有完美无缺的产品,处理器也不可免俗。1994年10月被发现的Pentium处理器浮点除法(FDIV)事件,提醒了世人,像处理器这种“科技结晶”,也会有产品设计问题。时至今日,高性能处理器的晶体管数目,个个数以10亿为基本单位,当然也造就了动辄上百条起的“产品勘误表”,有些可通过微码(Microcode)修正,有些则不行。

不过当计算机最基本语言的“指令集架构”(Instruction Set Architecture,ISA)本身先天不足、后天失调、又欠缺业界标准的时候(英特尔和众多竞争者打了很久的指令集扩展战争),这问题就会再度放大。

英特尔的Pentium Rro总工程师之一Robert Colwell曾在回忆录提到一个重点:开发x86指令集兼容处理器,最艰巨的挑战在于“确保兼容目前所有的应用程序”,特别当某些应用程序还“利用”常年累计的bug和没有被屏蔽掉的未定义运算码(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指令集容易制造处理器的bug,或着不同厂商之间的x86指令集兼容处理器彼此之间并不100%兼容,又跟苹果有什么关系?

首先,Mac的软件生态系统统相对封闭,苹果也是在“x86处理器市场版图大势确定”后才从IBM PowerPC转向英特尔x86,按理说也不该有造成麻烦的昔日包袱。

其次,苹果也没采用英特尔以外的x86指令集兼容处理器,更不可能发生不同厂商的兼容性问题,除非英特尔搞到自家不同时代产品之间会出现这种低级错误。

那假如这位前任英特尔总工程师讲的问题,不是指令集层面的兼容性,而是外部硬件功能呢?扣除苹果的7%个人计算机市场占有率,剩下93%应该早就统统跳起来了吧。但过去也不乏“20年前的AMD难以攻入品牌大厂供应链,就起因于产品品质不佳”的传闻,总之都是往事了。

所以笔者对这则报道的真实性抱着“看过就算了”态度,反倒是这些年来,微软究竟默默扛了多少黑锅,还真的让人满好奇的。

(首图来源:苹果)