這命題的答案可以很簡單,也可以很複雜,但不學無術又才疏學淺的筆者,嘗試用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?我的天啊。科科。
再來一篇不同時空環境:
硬科技:為何Intel的競爭者還是如此辛苦?