这命题的答案可以很简单,也可以很复杂,但不学无术又才疏学浅的笔者,尝试用1500字的篇幅,野人献曝给各位科科一些截然不同的观点。
一般电脑玩家谈到Intel的优势,第一时间不外乎就是“制程”,再来就是“Intel故意把x86指令集搞的乱七八糟,拉高实作高效能产品的门槛”,所以回顾自1990年代初期,x86处理器开始与“高性能”扯上关系的历史,大致上可以归纳成几个重点:
时脉差一截
除了AMD曾经在1GHz追逐赛中,用K7赶超Intel,以及摆明冲高时脉的推土机 (Bulldozer),研制x86指令集相容处理器的Intel竞争者,无一不是在账面上的时脉处于绝对的劣势,AMD与Cyrix先后采用的“PR值 (Performance Rating,虽然那个P实际上等于Pentium)”只能说是极度不得已的行销手段。
也许会有科科质疑:我只要性能够好就可以了,时脉有这么重要吗?但在处理器市场,尤其是尚未有多核心概念的年代,时脉这个数字意谓著产品区隔,更高的时脉支撑更高的产品价格,处理器微架构如具备更好的时脉延展性 (如P6微架构从150MHz的Pentium Pro一路成长到2.26GHz的Pentium M),也代表更长的市场寿命和更佳的研发投资报酬率。
像在1990年代勉强做出像样成绩的Cyrix,其号称有6x86 (M1微架构) 2倍效能的6x86MX (M2微架构,即使改进幅度实在称不上是全新的世代),在1999年7月才上市最高时脉300MHz的PR433版本,但Intel早在当年2月就推出500MHz的Pentium III,完全时不我与。
浮点输太多
这大概就是从Intel为了追赶众多RISC对手,寻求重大效能突破,在Pentium锐意打造管线化浮点运算单元之后 (性能表现几乎是同时脉486的4倍),Intel的x86竞争者们不得不扛下来的原罪了,后来也只有AMD有本钱跟Intel竞争浮点运算效能。浮点运算效能不彰,对1990年代末期3D游戏开始崛起的个人电脑市场,是极度负面的行销缺陷。
CPU SPECint92 SPECfp92
i486DX2-66 39.6 18.8
Pentium-66 78.0 63.6
相容性疑虑
讲白了就是“你的x86不等于我的x86”,你在秋名山送豆腐开的86跟我在箱根开来碰碰车的86不是同一台。
Intel持之以恒的扩充x86指令集 (为了迎合软件需求,这并没有错),也不像其他RISC指令集,为了推己及人,创造指令集的厂商,多少都会制定公开的版本演进规范。反正这间唯偏执者得以生存的公司,除了早期自身产能无法满足市场需求,外加古早年代的IBM要求第二货源,而不得不基于推广x86指令集的考量,开放其他厂商生产仿制品,Intel打从一开始就没有打算保留多少生存空间给这些“仿冒者”,连微码 (Microcode) 未经授权都要想办法活活告死你。
如果没有跟Intel签署指令集授权协定,或著Intel故意不讲清楚新增指令的细节 ,如Pentium使用者手册中那蓄意空白的附录H,包含有名的CPUID和计算指令周期数的RDTSC,要嘛就是牺牲相容性,强迫软件公司去补洞或消费者自己踩地雷,要嘛就是进行费时费工的逆向工程,延误产品上市时程。像Cyrix 6x86号称“第六世代等级性能”,结果指令集相容性却只有486水准,讽刺得很。
Intel竞争者们自己也不遑多让的抢著当麻烦制造者,企图争夺x86指令集的主导权,自行定义独有的指令,以强化产品效能及行销诉求,像AMD在K6的3DNow!、K8的x86-64,Cyrix在6x86MX的EMMI与Cyrix III的MMX-FP,都是很有名的案例。
但有鉴于市场接受度和有限的指令运算码 (Opcode) 空间,最终也仅有微软加持的x86-64存活下来,而且一开始Intel的IA-32e和AMD x86-64也并非完全相同:AMD多出了分页表NX (No Execute) 保护位元和3DNow!,Intel多出了CMPXCHG16B和SSE3。倒楣的是谁?就是以微软为首的众多软件厂商了,然后微软正站在x86处理器双雄的背后,还非常火大 (千万不要小看操作系统厂商的发言权和影响力)。
原本寄望彻底取代堆叠架构x87浮点指令的SSE2,早在2001年就问世,结果Visual Studio到了2012年才让编译器预设使用SSE2,“刚刚好”AMD在2011年底的推土机抛弃自己的3DNow!,也很“识相”的不硬推抢先Intel前面注册的SSE5,皈依Intel的AVX,你就知道要确保大家都彼此100%相容是有多麻烦的事情。
不过时过境迁,x86市场上实质仅剩下Intel和AMD,应该不会再有这些令人感到厌烦的陈年烂事了吧?什么?还有一沱AVX-512和TSX?我的天啊。科科。