時代的眼淚系列:Cyrix 的高效能超純量處理器家族(上)

作者 | 發布日期 2017 年 10 月 22 日 8:48 | 分類 晶片 , 科技教育 , 處理器 follow us in feedly

來 HTC 以 11 億美元價碼,出售代工部門給 Google 的新聞,讓筆者不得不回憶起,1997 年 11 月先跟國家半導體合併、隨後出售給 VIA,在高效能 x86 處理器發展史佔有一席之地的 Cyrix,與史上第一款 Pentium 相容處理器 6×86M1」。



然後再來就是歷史了。

距今已 22 載的 1995 年,Windows 95 的問世前所未見地刺激個人電腦的市場需求,以 Intel Pentium 為首的高效能超純量(Superscalarx86 處理器,自然而然成為執行微軟全新 32 位元作業系統的引擎,而 1995 年底上市的 Intel Pentium Pro,和 1996 年擁有和 Windows 95 相同使用者介面的 Windows NT 4.0,更敲開了 x86 處理器湧入工作站與伺服器市場的大門。

在當時,「Pentium 跑 95Pentium Pro 跑 NT」是不可質疑的搭配,而 Pentium Pro 執行 16 位元程式碼效能不佳的疑慮,更讓這約定俗成的潛規則,更加牢不可破。

但過沒多久,1996 年個人電腦零售市場卻出現了 Intel 以外的另類選擇:價格較廉、時脈較低、整數運算更強,但浮點運算更弱、使用起來更燙的 Cyrix 6×86M1」,它也引爆了短暫的 x86 處理器戰國時代

1995 年到 2000 年這段期間,堪稱是處理器與顯示晶片市場最熱鬧的時期,這在論 x86 處理器只想到 Intel 和 AMD(可能連 VIA 都快被遺忘了)、顯示晶片僅列出 nVidia 和 AMD 的今天,實在令人難以想像。

微軟視窗作業系統最重大里程碑 Windows 95,和最普及辦公室生產工具 Office 95 的問世,帶來了個人電腦發展史上最巨大的升級潮與採購潮,遠較過去作業系統更飢渴難耐的系統效能需求,也刺激了對更高速處理器與更快 2D 視窗加速的需要,吸引來自四面八方的眾多英雄好漢,瓜分這塊肥美的市場。

套句當時 PC MagazineInside Track 專欄」的評論:市場仍可允許 x86 處理器標上不菲的高價,即使是小廠,只要些許市佔率,即可掠取豐厚的利潤。所以不分新秀老將,像「有晶圓廠才是真男人」的 AMD、「三百壯士」的 CyrixIDT 投資的 Centaur、眾多台灣企業集資的 Rise、僱用 Linus Torvalds的 TransmetaAMD K6 起源的 NexGen,甚至在前蘇聯開發超級電腦背景的 Elbrus 等,無不磨刀霍霍,企圖從 Intel 身上割下一塊肥肉。

但嚴格說來,真正勉強交出像樣成績單的,除了今天依舊與 Intel 激烈交火的 AMD,就僅剩 Cyrix 了,其他廠商的表現,實在不用多說。

以舊世代 Intel 處理器腳位進行升級,提供跨代性能表現的 Cyrix

有別於今日 IntelAMD 的處理器腳位,自從 K7 時代的 Slot A 開始「你走你的陽關道,我過我的獨木橋」,沒經歷過個人電腦上古時期的讀者,可能較難想像,當初眾多「Intel 腳位相容處理器」百家爭鳴的盛況,還包含今日少人知悉、在此市場以開發 x87 浮點輔助運算器起家的 Weitek 與 Chips and Technologies(後來被 Intel 購併)等。

筆者曾瞻仰其他網站的「達人高見」:使用與 Intel 相同的插槽,是個人電腦發展史上極為罕有的情況。拜託,在做主機板可以做到股王的年代(意思就是主機板的價格和獲利都高到令人髮指),你家的處理器不能和 Intel 共用腳位,才是讓人感到詭異的怪事。

這些廠商的共同點:在比較老舊的 Intel 處理器腳位上,提供接近下一世代產品效能表現的替代品,搶攻舊系統的升級市場。當然,如果效能和價格具競爭優勢,也有辦法取得 Intel 最新的系統匯流排授權,這些廠商也希望可直接跟 Intel 在相同腳位上硬碰硬,追求更高產品單價與獲利,並設法攻入 OEM 大廠的供應鏈。

Cyrix 就以此塊市場起家,例如 FasMath 83D87 可裝在 387 的腳位,提供比 Intel 80387 浮點輔助運算處理器多出 50% 的效能,而 486SLC/DLC 則是在 386 平台,帶來部分 Intel 80486 的特色,如第一階快取記憶體等。

而 Windows 95 推出之際,在 486 系統安裝 Cyrix 5×86(或 AMD 的 Am5x86)的「窮人第五世代電腦」,更是受學生歡迎的低階 Pentium 替代品,當年光在學生宿舍就不知見證了多少案例。

因延宕而錯失「首款非循序指令執行超純量 x86 處理器桂冠」的 Cyrix 6×86

前面提到,Windows 95 與 Windows NT 4.0 帶來的市場動量,引爆了 x86 處理器的效能革命,CISC 指令集的 x86 處理器,也破除了昔日 RISC 狂信者那「CISC 無法管線化、無法高時脈、無法超純量」的多年詛咒,從整數運算效能為起點,開始具備挑戰 RISC 諸神的實力(但浮點運算受制於堆疊架構的 x87 指令集,難以飛躍性成長,這瓶頸到了 SSE 出現後才慢慢消失)。

如同第五世代戰鬥機需要的 3S:匿蹤(Stealth)、超音速巡航(Super Cruise)、超機動性(Super Maneuverability),所謂 80586 時期的第五世代 x86 處理器,為了高效能,也同時追求 3 個 S

  • 超純量(Superscalar:一個時脈可同時執行一個以上的指令。
  • 超管線(Superpipeline:更高的運作時脈與後繼的成長空間。
  • 延展性(Scalability:支援伺服器與工作站市場必備的多處理器環境。

Cyrix 首款正面挑戰 Intel Pentium,甚至在整數運算保有越級挑戰 Pentium Pro 潛力的 6×86M1」,擁有前兩項特性,並多出減輕暫存器相依傷害的「暫存器重新命名機制(非循序指令執行)」與「預測執行」,而缺乏第 3 個要素。當時市場上唯一三者兼備的 x86 處理器,僅有 1995 年 11 月上市的 Intel 新旗艦 Pentium Pro,而上市時間一再延宕至 1996 年初,也讓 Cyrix 6×86 痛失了「史上首款非循序指令執行超純量 x86 處理器」的桂冠。

處理器既然是「產品」,產品就必然有「規格」,有規格就自然可以「比一比」,我們就來比較一下,在預定上市的 1995 年,6×86 跟同期的 x86 處理器(順便拖 MIPS R10000 進來當 RISC 對照組,讓各位看一下 RISC 全盛期的榮光),規格差在哪裡。

這張和後來實際狀況有點出入的簡略概觀比較,其實就已經隱隱約約散發出對 Cyrix 不妙的氣息了:製程劣勢,這在 1996 年 Intel 開始大量銷售 0.35 µm350nm)製程處理器時,就對 Cyrix 更加不利了。

奠定未來數年微架構基礎的 6×86M1

不過「三分靠打拚,七分天註定」的製程劣勢,帶來更燙的運作溫度和更高的製造成本是一回事,延宕已久的 Cyrix 6×86 在微架構設計,相較於對手 Intel Pentium,卻頗有看頭。這裡會花點篇幅仔細介紹,因為之後數年 Cyrix 的處理器產品,其管線結構均換湯不換藥。

超純量(Superscalar)部分,提供兩條功能相對完整的管線Intel Pentium 的 U/V 管線須完美配對指令,如限定兩個簡單的單時脈週期整數運算指令(有少數例外,在此不論),才能發揮 100% 的效率,因為只有 管線能執行全部指令,管線僅能處理較簡單者。所以像一個整數和一點浮點、或兩個浮點指令配對,在 Pentium 都不被允許同時執行。

但 6×86 即使也有類似限制,如 X/Y 管線僅前者可執行分支指令與浮點運算,但遠較 Pentium 彈性,且可在指令解碼階段,交換彼此負責的工作,所以在 Pentium 需要一個一個處理的指令流,在 6×86 就更有機會同時送作堆一起執行。

利於時脈發展空間的深度管線七階的超管線(Superpipeline)分離了「從記憶體載入資料」、「進行有效位址計算」與「回存資料到記憶體」3 個動作,有效減少了存取快取記憶體的延遲,足以媲美同期的 Alpha 21164(七階)與 MIPS R10000(八階),也意謂著比較高的時脈延展潛力,雖然受制於外包代工的製程(SGS ThomsonIBM),在與 Intel 競爭的過程中,完全顯現不出其價值。

因管線深度加長,勢必加強分支預測效率,與減輕預測錯誤的代價(Misprediction Penalty),這部份 6×86 大致近似 Pentium,但增加了存放函數返回位址緩衝區(Return Stack Buffer),而配置指令預先擷取緩衝區,也縮短了發生預測錯誤時,回復指令管線運行需要的時脈週期數。

暫存器重新更名(Register Renaming)與記憶體旁路(Memory Bypassing這些與非循序指令執行相關的功能,堪稱 M1 微架構的重頭戲。

講的單純一點,透過配置數量比指令集定義的邏輯暫存器、更多的實體暫存器為緩衝(6×86 用 32 個實體暫存器,「更名」成 個 x86 指令集定義的通用暫存器),可減輕因發生不同指令存取相同暫存器,導致「撞衫」但並非真正的資料相依時,指令管線的停滯時間。而發生快取誤失(Cache Miss)時,指令管線亦可繼續執行後繼指令。

如發生「真正的」暫存器資料相依,如第一個指令要從記憶體載入至某暫存器,第二個指令再對此暫存器進行加法運算,6×86 可同時執行這兩個指令,並將第一個指令在 AC2 階段的記憶體資料,「Bypass」到後面指令的 EX 執行階段。這情況發生在 Pentium 的話,就只能慢慢等了。

但這 3 種凌駕 Pentium 的特色,都被 1995 年底發表、採取解耦式超純量(Decoupled Superscalr)的 Pentium Pro 統統比下去了,後來 P6 微架構降尊紆貴為進入桌機市場的 Pentium II,更是 20 世紀末期 Intel 諸多競爭者的惡夢。

況且,除了製程以外,6×86 也不是沒有弱點。

指令集相容性僅有 486 水準Cyrix 在被國家半導體購併前,並未獲得 Intel 技術授權,完全藉由逆向工程獨立開發 x86 相容處理器,所以自然而然不是百分百相容 Intel 產品,像 Intel 在 Pentium 新增的指令,如非常知名的 CPUID,在 6×86 就付之闕如(原本 1994 年晶片 Tape Out 時,Cyrix 宣稱會支援,但後來預設關掉)。

Intel 在 Pentium 使用者手冊,故意保持空白的「附錄 H」中,描述的眾多新指令與新功能,如用來計算指令週期數的 RDTSCCyrix 也以「避免製造法律紛爭」為由,統統不碰,若不幸碰到了,就視為非法指令,至於所謂「Undocumented」的非公開指令,更連提都不用提了。無法完全相容的嚴重後果,就是軟體公司需要特別為 6×86 撰寫補丁程式,以確保相容性。

同場加映 AMD 當時的處境:拚死拚活逆向工程,也要在 K5 擠出附錄 的相容性,成果在此不論。

這也是 x86 處理器發展史一個潛在地雷,不像其他 RISC 家族都有明確的版本演進規範,x86 指令集一直缺乏公定版本,很多廠商自己光明正大搞自己的特殊指令(包括 Cyrix,後文會提到),而 Intel 基於「既得利益」,壓根不打算做這功德無量的好事。

支援多處理器環境受限初代 Pentium 可透過外掛單價 28 美元的 82498DX 先進可程式化中斷控制器(APIC)實作雙處理器環境,而 P54C 時期開始,更直接將其內建於處理器,成為無須外掛系統連結晶片(Glueless)的原生方案,但 6×86 並未整合 APIC,而是採用自家 SLiC,也只有 VIA Apollo 晶片組提供支援。

其實 x86 並不是到 Pentium 才有多處理器系統。由 17 位因 iAPX432 計畫失敗而離職的 Intel 員工所創立,堪稱對稱式多處理器架構(SMP)技術先驅,後來被 IBM 購併的 Sequent Computer Systems,就曾先後推出一系列採用 386 與 486 的多處理器產品線。這些象徵「x86 團結就是力量」的產品,全都仰賴特製系統晶片組與特化過的作業系統,才能搞定正確路由(route)系統中斷至各處理器的宿疾,且因專屬規格所費不貲,P54C 時代的 Pentium 才就此劃下句點。

但雙 Pentium 處理器環境,因低落的快取記憶體與系統匯流排效能而缺乏競爭力,這缺陷到了 Pentium Pro 才釜底抽薪(這也強化了用 Pentium Pro 跑 Windows NT 的誘因)。即使 Cyrix「硬上」,慘況只會跟 Pentium 如出一轍。

浮點運算效能不彰6×86 並沒有像 Pentium 一樣擁有管線化的浮點運算單元,浮點運算效能輸了 Intel 一大截,這對那時方興未艾的電玩遊戲需求是一大打擊,這也是一般電腦玩家對當時 Intel 競爭者的刻板負面印象。而軟體開發者優先為 Pentium 最佳化,加重了 Cyrix 的劣勢,並難以提高產品的銷售單價,對製造成本已偏高的 Cyrix 更是雪上加霜。

較落後的共享式第一階快取記憶體6×86 並非採取比較流行的指令資料分離式第一階快取,而是兩者共用一塊 16kB 雙埠的共享式設計。跟 Intel Pentium 指令/資料個別 8kB 相比,雖然單一 16kB 理應可提高命中率,但也容易發生存取指令與資料時「打架」的問題。為此,Cyrix 另外擺放了一塊「L0」的 256 Byte 指令快取,做為補強之用。

即使沒有任何證據足以證明,Cyrix 的設計真的比較差,但從事後「M3」(Jalapeno)企圖重回「正道」來看,我們有充分的理由相信,這只是基於成本考量而做的不得已決定。

後面我們會陸續介紹研發資源極度有限的 Cyrix,其 PR 值(P-Rating)的基準由來,如何勉力改造先天不足的 M1 微架構,持之以恆的推出新產品,以及改弦易轍為整合繪圖核心單晶片方案先驅者的故事。

(首圖來源:By Appaloosa (Own work by uploaderFuji FinePix S6500fd) [CC BY-SA 3.0 or GFDL], via Wikimedia Commons

關鍵字: , , ,