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

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


    推荐阅读