現在,RISC–V的崛起,並有望與Arm和英特爾三分天下。但其實在幾十年前,處理器架構曾經有過一個諸神亂鬥的年代。而這一切,可以從上世紀七十年代的IBM System/360說起。


正文

20 世紀 70 年代初,IBM 的大型機主導了功能更強大的計算機市場。IBM 在 System/360 的开發上投資了 50 億美元(是當時年營業額的兩倍多)。1970 年,公司推出了高度兼容的後繼系統System/370。

S/370 有大量指令,而且通常很復雜。某些指令(例如“移動字符”指令)將從內存的一部分讀取多項數據,以某種方式對其進行操作,然後將該數據寫入內存的另一部分。

這種復雜性是由於需要避免緩慢的內存訪問(以獲取指令)減慢程序執行速度。指定大量活動的單個指令將節省獲取多個指令所需的工作。

客戶可以從一系列具有不同價格和性能特徵的 S/360 或 S/370 系統中進行選擇。更便宜的機器之所以成爲可能,部分原因是更廣泛地使用“微代碼”,其中指令被分解爲更小的“微指令”。解碼和執行這些微指令需要時間,因此減慢了程序的執行速度。典型的 S/370 指令可能使用 20 或 30 條微指令來執行。更昂貴的機器將更多的指令集“硬編碼”到電路中,因此速度更快。

這種方法對 IBM 的業務非常有效。預算較低的客戶可以購买更便宜的機器,並且始終可以選擇升級到更昂貴但仍然兼容的機器。

1971 年,愛立信電話公司與 IBM 接洽,提議成立一家合資企業,建立電話系統,與 IBM 的強大技術競爭對手 AT&T 競爭。

IBM 的工程師意識到像 S/370 這樣的架構不太適合電話技術。微編碼系統的性能不夠好,並且“硬連线”機器的成本太大。

因此,IBM 的工程師开始尋找更適合電話系統的替代方案。經過三個月的緊張工作,兩家公司的團隊在倫敦克拉裏奇酒店會面。在一次深夜會議上,IBM 團隊提出了他們的想法。獲得了繼續進行的許可。但第二天早上,愛立信又改變了想法。如果 IBM 的想法奏效,愛立信的核心業務就會遇到麻煩。合資企業關閉了。

但 IBM 需要愛立信嗎?該團隊認爲 IBM 可以單槍匹馬地對抗 AT&T。於是,電話系統的开發工作就开始了。

但是,該項目的結果再次被 IBM 高級管理層拒絕。

801項目开始

但隨着這些想法如此先進,IBM 的工程師也相信其帶來的好處,IBM 研究中心啓動了一個項目,將這些想法變成現實。

在約克鎮 Thomas J. Watson 研究中心的 801 大樓內,一個由大約 20 名工程師組成的團隊(最初由 Joel Birnbaum 管理)开始致力於將想法變爲現實。該機器以前被稱爲“電話機”,但這开始顯得不合適,因此團隊決定以他們工作的建築物的名稱命名。

該小組的領軍人物是 IBM 院士 John Cocke。科克是一名朝鮮战爭老兵,在开發計算機系統方面擁有豐富的經驗。他深入參與了 IBM Stretch(S/360 之前的大型機系列)的开發。他也是編譯器方面的專家,並撰寫了一本有關編譯器構造的开創性教科書。

Cocke 參與早期項目以及他對 S/360 开發項目的觀察已經开始在他的腦海中播下對 S/360 設計方法的懷疑種子。該項目的目標是創建一個明顯優於 IBM 平淡無奇的 System/3 小型機的系統,該系統正在與競爭對手 Digital Equipment Corporation 商業上成功的 VAX 系列作鬥爭。

該團隊的優勢在於擁有 S/360 上程序執行模式的大量詳細信息(稱爲“指令跟蹤”:Instruction Traces)。這顯示了哪些指令最常被執行,並且這些指令中的很大一部分實際上非常簡單。

引用團隊成員之一的話:令人驚訝的是……加載、存儲、分支和一些簡單的寄存器操作完全主導了指令組合。

此外,對更復雜的指令(例如“移動字符”)的分析表明,對於該指令的典型使用實例,所操作的數據量非常小,因此使用少量的簡單指令會更快。

有了 S/360 上的這些數據,團隊就能夠开始設計新系統。

構建 RISC 理念

爲了使他們的新設計工作需要許多功能,這些功能很快就會成爲 RISC 理念的一部分。並非所有這些想法都是新的,但這是第一次將它們結合在一起。

借鑑 Control Data 6600(Seymour Cray 設計的第一台“超級計算機”)的想法,新機器將具有“加載-存儲”(load-store)架構,其中簡單的“加載”或“存儲”指令將是訪問或更改存儲的唯一方式。S/360 的“內存到內存”指令已經不復存在。

這反過來又幫助機器實現了一種簡單的流水线形式,其中一條指令可以在從內存加載下一條指令的同時執行。

然後引入了與數據緩存不同的指令緩存,這有助於消除其他系統中由於訪問內存以讀取指令時的延遲而產生的損失。該團隊推斷,如果 S/360 能夠快速訪問保存微代碼的內存,那么他們就可以通過指令緩存提供對 801 指令的快速訪問。

但 801 的开發不僅僅涉及硬件。801 的成功取決於編譯器能否避免大多數匯編語言編程並優化生成的代碼以充分利用新硬件。

因此該團隊還爲一種名爲 PL 0.8 的新語言構建了一個編譯器。PL 之所以選擇這個名稱,是因爲它最初是 IBM PL/1 語言的一個大子集,PL/1 被認爲對於重新實現這樣的實驗項目來說過於“豐富”。在適當的時候,小數點被刪除,它被稱爲 PL/8。

充分利用 801 硬件的關鍵是有效利用機器的寄存器。寄存器分配使用了一種稱爲“圖形着色”的方法。

801 架構和性能

那么801是什么樣子的呢?

801 是一台小型計算機而不是微處理器。它是使用摩托羅拉制造的安裝在許多電路板上的“現成”邏輯芯片構建的。電路板排列成半圓形,連接位於中心,從而縮短了組件之間的距離。在上面 John Cocke 的圖片中,可以看到他靠在 801 的一些從機器中心向外的板上。第一個版本有 7600 個邏輯門。

801 架構實際上有兩個版本。我們先來看看 801 的第一個版本。

按照計劃,說明保持簡單。沒有內存到內存指令或將從內存加載或存儲數據與其他操作相結合的指令。所有這些簡單的指令都可以實現,而無需求助於微代碼。

最初的 801 有 16 個 24 位寄存器,外加 3 個特殊用途寄存器,包括程序計數器和條件代碼寄存器。指令長度爲 16 位或 32 位。更長的指令允許包含可以添加的十六位常量。

指令集的簡單性意味着可以實現簡單的流水线操作——#Add。與寄存器長度一致,尋址內存爲 24 位長,允許機器訪問最多 16 兆字節(或 16777216 字節)的內存。分支給管道帶來了問題。因此 801 引入了“執行分支”指令(這些指令後來被稱爲“延遲分支”)。這些允許分支指令的伴隨指令,無論是否採用分支,該指令都將與分支指令並行執行。緩存失效帶來了一個潛在問題,團隊通過添加使緩存行無效的指令解決了這個問題:

按照IBM當時的團隊成員說:當時,人們普遍認爲正在運行的程序不會在執行時修改自身。因此,沒有添加任何機制來確保指令流中的存儲立即反映在指令緩存中。相反,指令集中添加了無效高速緩存行的功能。

大多數 801 指令可以按計劃在單個時鐘周期內執行。平均而言,機器每 1.1 或 1.2 個時鐘周期即可執行一條指令。

801 的第二個版本根據團隊的經驗和他們對用戶可能需求的看法進行了更新,做出了許多重大更改。所以。以至於兩台機器使用相同的名稱幾乎顯得很奇怪。

在研究寄存器分配之後,修訂版本將寄存器數量增加了一倍,從 16 個增加到 32 個。寄存器大小從 24 位增加到 32 位。第二個 801 具有統一的 32 位指令長度,這簡化了指令解碼機制,並且意味着指令不能再跨過高速緩存行,從而再次簡化了設計。

正如團隊預測的那樣,801 的性能明顯優於更傳統和更復雜的機器。當運行“real world”測試並與 IBM System/3 小型機進行比較時,發現實驗機的速度大約是原來的三到四倍。但 IBM 管理層再次放棄將 801 轉變爲商業項目。IBM 團隊似乎感覺到他們正在逆流而上。喬治·拉丁 (George Radin) 在該項目早期的一篇論文中評論道:

“從某種意義上說,801 似乎正朝着與該領域傳統觀點相反的方向前進。也就是說,其他人都忙着將軟件轉變爲硬件,而我們顯然正在將硬件轉變爲軟件。我們並沒有消耗預計更便宜、更快的硬件,而是致力於節省電路、縮短路徑長度並減少正常系統層次結構各個級別的功能。”

這些想法被擱置,團隊轉向其他事情。正如我們將看到的那樣,有關 RISC 理念的工作確實在 IBM 內部繼續進行,但該概念將在 IBM 外部引起重視。

John Cocke 和 IBM 團隊都沒有創造“Reduced Instruction Set Computer”這個術語。事實上,喬爾·伯恩鮑姆(Joel Birnbaum)和其他人會抗議說,這種哲學實際上應該是關於“Reduced Complexity Instruction Set Computer”。而 RISC 可以理解爲暗示它的全部目的是減少指令數量,這可能是一個副產品,但不是根本原因。但這個縮寫詞一直沿用至今,多年來導致了嚴重的混亂。

RISC 一詞是由伯克利大學的 David Patterson 發明的。Patterson和他的學生與斯坦福大學的 John Hennessy 一起學習了 RISC 概念,並使用 RISC 原理構建了第一個微處理器。


RISC的起源:David Patterson的創舉


如果說 IBM 是 RISC 技術的先驅,那么“RISC”這個名字以及使 RISC 成爲主流的真正推動力來自加州大學伯克利分校,其團隊包括 David Patterson(大衛 帕特森)。他們的工作仍然對我們今天使用的設計產生影響,包括直接在 RISC-V 架構中。但令人驚訝的是,performance 並不是在伯克利工作的最初動機。

David Patterson 和 VAX

與 DEC 的小型計算機的競爭促使 IBM 團隊尋找一種新的計算機架構方法。下一代 DEC 機器的工作將推動 RISC 概念的下一階段的發展。

David Patterson 曾在加州大學伯克利分校學習計算機科學,並撰寫了關於微程序(microprograms)的形式驗證的博士論文。微程序是用微代碼編寫的程序,微代碼(microcode)在計算機的中央處理單元中使用,以實現向用戶公开的指令集架構。

1977年,DEC推出了VAX,這是其最新、最強大的小型機設計系列。與 IBM 的大型機一樣,VAX 具有復雜的指令集 (CISC) 架構,並廣泛使用微代碼。

由於對微代碼的興趣,Patterson 在馬薩諸塞州 Boxborough 的 DEC 小型計算機設施之一積極參與,以幫助處理 VAX 系列微代碼中的錯誤。1979 年秋天,對 VAX 微代碼的研究使他確信,調試復雜 CISC 指令集的微代碼極具挑战性。

KA780(VAX 11/780 計算機的中央處理單元)在兩個地方有微代碼。它在只讀存儲器中具有 4k 復雜的 96 位長微代碼指令,在快速隨機存取存儲器中具有 2k 微代碼指令。RAM 中的微代碼將在啓動時從連接到 VAX 的 PDP-11 小型計算機加載到內存中。

RAM 中微代碼的存在提供了在 VAX 發貨後更新代碼的機會,包括修復任何錯誤。

20 世紀 70 年代末,第一批 16 位微處理器問世。隨着微處理器添加了更復雜的指令,公司开始轉向微代碼來實現他們的設計。一些公司,例如 Zilog 的 Z8000,堅持使用非微編碼設計,但正如我們看到的那樣,即使對於最熟練的設計師來說,這也是困難且耗時的。16 位時代最成功的兩種微處理器架構,Intel 8086 和 Motorola 68000,都廣泛使用了微代碼。

Patterson 使用 VAX 的經驗使他相信,隨着微處理器架構變得更加復雜,他們的微代碼設計將不可避免地存在錯誤。對於像 VAX 這樣的小型計算機,這些錯誤可以在出廠後使用 RAM 中的微代碼進行糾正。對於微處理器,微代碼硬編碼在 CPU 芯片上,更新意味着更換整個芯片,這是一個不方便且昂貴的過程。

因此帕特森寫了一篇論文,建議微處理器應該有兩種類型的微代碼存儲,大致遵循 VAX 中使用的方法。ROM 用於最簡單和最常用的指令,少量的高速緩存 RAM 用於更復雜的指令。

論文被拒絕了。帕特森回憶了拒絕的重要理由:“這是一種愚蠢的計算機設計方法。以這種方式設計微處理器沒有意義,而且需要額外的 RAM、成本、補丁和現場。這太瘋狂了。”

構建 RISC-I

幾個月後,即 1980 年秋天,帕特森开始教授研究生課程,其中包括微處理器架構的設計工作。他沒有採用被拒絕論文中的方法,而是嘗試了另一種方法。復雜的指令被完全省略,這意味着不需要微代碼。如果沒有微代碼,就不會有微代碼錯誤,也不需要 RAM 來緩存更復雜指令的微代碼。

帕特森和他的一位學生David Ditzel(戴維·迪澤爾)(當時在貝爾實驗室工作)已經將這些想法寫在一篇名爲《The Case for the Reduced Instruction Set Computer》的論文中。該論文承認 IBM 的 John Cocke 的工作(Cocke 甚至出現在伯克利校園討論他的一些想法),提出了支持 RISC 方法的幾個理由,包括更容易和更快的實現、更好地利用芯片面積和速度。

至關重要的是,帕特森和他的同事爲該方法發明了“RISC”名稱,並更廣泛地分享了其背後的想法。

帕特森將《The Case for the Reduced Instruction Set Computer》這篇論文的副本發送給了他在 DEC 休假期間共事的朋友。1980 年 9 月,VAX 團隊以論文“對“The Case for the Reduced Instruction Set Computer”的形式提出了反駁。反駁主要是因爲缺乏真正的硬件來支持Patterson和Ditzel的主張。

但 Patterson和他的同事 Carlo Séquin 以及他們的學生已經着手構建基於 RISC 原理的微處理器,最初被稱爲“Gold”,後來被稱爲“RISC-I”。只有國防高級研究計劃局 (DARPA) 爲許多相關項目提供資金,包括硅制造服務 (MOSIS) 和开發計算機輔助設計工具的項目,構建物理微處理器才成爲可能。

在實踐中,事實證明該設計對於在伯克利自己的 VAX 11/780 小型機上運行的設計工具來說過於復雜(也許有些諷刺)。該團隊被迫重寫工具,RISC-I 的工作進展緩慢。

RISC-I 設計最終於 1981 年 6 月被送往制造服務。在設計的初始制造出現了一系列問題之後,帶有工作芯片的晶圓於 1982 年 5 月才運回伯克利。伯克利團隊利用它構建了一個單板計算機,很快就能夠演示它運行 C 程序(盡管該設計在單個指令中存在錯誤,需要修改編譯器以避免)。

RISC-I 設計使用了 44,500 個晶體管,這些晶體管採用 4 微米 NMOS 工藝實現,芯片尺寸相對較大,爲 10mm x 7.8 mm。值得注意的是,由於指令集簡單,只有 6% 的芯片面積專用於解碼指令或處理器控制。事實上,超過一半的晶體管專用於提供 78 個物理 32 位長通用寄存器。

隨着 RISC-I 工作的進展,帕特森在伯克利的兩名學生开始了第二個設計,稱爲“Blue”(後來的 RISC-II)。RISC-II的進展比RISC-I順利。RISC-II 設計的寄存器數量比 RISC-I 還要多,有 138 個 32 位通用寄存器。它能夠通過更經濟的設計來實現它們,每位僅使用 6 個晶體管,而不是 RISC-I 中使用的 11 個晶體管,因此總共只需要 40,760 個晶體管。它還採用了更先進的3微米NMOS制造工藝。

RISC-I 和 RISC-II 性能

構建 RISC-I 的最初動機是避免復雜的微代碼,但帕特森和他的同事對新設計的性能表示了很高的期望。Patterson 和 Séquin 的論文總結了 RISC 項目的初步結果,其摘要中有一個驚人的結論:初步基准測試證明了 RISC 的性能優勢。構建比 VAX 11/780 更快的單芯片計算機似乎是可能的。

然而,最初的 RISC-I 芯片的速度在某些方面令人失望。一些指令的執行符合伯克利團隊的預期,但其他指令的速度慢了五倍,該團隊將這一結果歸因於制造問題而不是設計。後來的一篇論文更詳細地闡述了 RISC-I(使用模擬來糾正制造問題)與 VAX 11/780 和 Zilog Z8000 微處理器的強大理論性能。

RISC-II 不存在 RISC-I 的制造問題,並且輕松優於 VAX 和當時最先進的微處理器設計 Motorola 68000。現在,通過實際硬件的結果,大多數挑战和懷疑都得到了表達DEC VAX 團隊已經給出了答案。

這些成果是顯着的。VAX 11/780 是一台復雜且昂貴的小型計算機。它被 RISC-I 和 RISC-II(單芯片微處理器設計)擊敗。

伯克利團隊關於 RISC 的論文被廣泛傳播。不出所料,人們對 RISC 設計的興趣、投資和工作很快就會出現“寒武紀爆發”。


RISC 战爭:寒武紀大爆發


上文談到的伯克利的這項工作得到了國防高級研究計劃局 (DARPA) 的支持,作爲其超大規模集成 (VLSI) 計劃的一部分。這種支持包括資助構建設計工具和支持 VLSI 制造服務 MOSIS 的工作。

與此同時,DARPA 還資助了斯坦福大學的 RISC 設計工作。在那裏,John Hennessy 和他的研究生於 1981 年初开始了名爲“MIPS”的設計工作,MIPS 是“Microprocessor without Interlocked Pipeline Stages”的縮寫。

MIPS 與伯克利 RISC 共享許多功能,但有兩個重要區別:

Register windows:MIPS 設計沒有像 Berkeley RISC 設計那樣使用寄存器窗口。因此,當調用子例程時,通常需要將寄存器保存到內存中;

Pipeline Hazards:設計沒有硬件來處理Pipeline Hazards,例如,流水线意味着指令的結果尚不可用於需要該結果的後續指令。相反,編譯器應該能夠處理這個hazard,這一假設可以簡化 MIPS 處理器的設計;

與伯克利 RISC 項目的情況一樣,斯坦福大學的團隊發表了大量論文。這些再次表明 RISC 可以勝過當時領先的 CISC 微處理器,例如 Motorola 68000。此表來自 John Hennessy 等人於 1982 年發表的論文“MIPS a Microprocessor Architecture”。

伯克利分校和斯坦福大學的論文現在公开了 RISC 背後的想法,並揭示了 RISC 設計可以實現的性能。自然地,人們對 RISC 的興趣开始迅速增長。

與性能同樣重要的是,它們都是由研究生小團隊在一年多一點的時間範圍內構建的,並且幾乎沒有錯誤。如果公司能夠復制這一點,那么這將是一個引人注目的商業主張。Acorn 計算機公司的 Steve Furber(後來繼續开發 ARM 架構)後來說:

“伯克利和斯坦福故事的另一個特點是,他們僅使用一班研究生一年的時間就成功地生產出了具有相當競爭力的微處理器。因此,與大公司相比,他們的經驗和資源要少得多,因此我們認爲,也許,只是也許,有了這些想法,如果我們出發,我們可能會想出一些有趣的東西。”

但這些簡單的設計可以勝過大公司復雜而昂貴的計算機的想法並不總是受歡迎。引用大衛·帕特森的話,很久以後談到對他和約翰·軒尼詩的作品的反應:“這是兩位助理教授,而不是終身教授,他們讓強大的公司對他們非常生氣,也許因爲我的個性,我比約翰更生氣。我認爲他們更加生氣了,約翰說他們並沒有對他生氣。現在,他是大學校長。我還是個教授。他們真的非常非常生我的氣。”

這將是一場長達數十年、有時甚至是激烈的關於 RISC 與 CISC 優劣爭論的开始,這一爭論一直持續到今天。

伯克利的 RISC 工作將繼續進行,但重點略有不同。Patterson 和同事首先希望構建一個修改後的 RISC 設計來運行 Smalltalk 編程語言(在一個名爲 SOAR 的項目中,即 Smalltalk On A RISC),然後形成桌面工作站的基礎(稱爲 SPUR,用於符號處理) RISC)。

RISC寒武紀大爆發

很快,幾乎每個對半導體制造感興趣的人都擁有了自己的 RISC 設計。

以下是 20 世紀 70 年代後半葉和 1980 年代出現的重要 RISC(或 RISC 派生)架構的(非詳盡)列表(如果我在評論中遺漏了任何值得注意的設計,請告訴我)。

▪️ 1、1975年(1978年設計)

IBM 801:由 John Cocke 領導的團隊採用 ECL 集成電路(而非微處理器)構建的第一個完全 RISC 設計。

▪️ 2、1977 年(1984 年公开,1986 年首次出現在產品中)

IBM ROMPIBM ROMP:原始 IBM 801 項目的开發。

▪️ 3、1980年(1981年开始設計)

加州大學伯克利分校RISC-I / RISC-II:DARPA 資助了包括 David Patterson 在內的團隊的研究項目。

▪️ 4、1981年(1982年开始設計)

斯坦福大學MIPS:DARPA 資助了 John Hennessy 領導的團隊的研究項目。

▪️ 5、1982年(1986年引入產品)

惠普PA-RISC (PA for Precision Architecture):設計旨在取代所有 HP 非 IBM PC 兼容機器中的處理器。

▪️ 6、1982-1984

DEC的Multiple projects

以下內容引用自維基百科:

來自位於加利福尼亞州帕洛阿爾托的 DEC 西部研究實驗室 (WRL) 的TitanTitan是一種基於 ECL 的高性能設計,於 1982 年开始設計,旨在運行 Unix。

SAFE(Streamlined Architecture for Fast Execution)是同年开始的 64 位設計,由 Alan Kotok(因太空战爭而聞名)和 Dave Orbits 設計,旨在運行 VMS。

HR-32(Hudson, RISC, 32-bit)由 Rich Witek 和 Dan Dobberpuhl 在馬薩諸塞州 Hudson 工廠於 1984 年啓動,旨在用作 VAX 機器中的協處理器。

同年,Dave CutlerT在華盛頓州貝爾維尤的 DECwest啓動了CASCADE項目。

▪️ 7、1985年

DEC PRISM (Parallel Reduced Instruction Set Machine):在 Rich Witek 的指導下統一了 DEC 的 RISC 工作。

▪️ 8、1984 年(第一個設計於 1985 年推出)

MIPS計算機系統的MIPS:斯坦福 MIPS 項目的商業衍生品。

▪️ 9、1984 年(第一個工作設計於 1985 年)

英特爾的i960:最初是與西門子的合資企業,由 iAPX432 首席工程師 Fred Pollack 領導。

▪️ 10、1984 年(1988 年發布)

AMD Am29000:設計受到 Berkeley RISC 的影響。

▪️ 11、1984年(1985年工作設計)

Acorn Computers的Acorn RISC Machine (later Advanced RISC Machine or ARM):由 Sophie Wilson 和 Steve Furber 領導的團隊更換了 BBC Micro 的 6502。

▪️ 12、1986 年(1987 年商業發行)

Sun Microsystems的SPARC (Scalable Processor Architecture):商業开發深受 Berkeley RISC 項目的影響,該項目最初是爲 Sun 工作站提供支持的。

▪️ 13、1986 年(1990 年首次商業發布)

IBM Power:IBM 801 开發之後的 IBM 研究項目的頂峰。

14、1986年(商業介紹)

Fairchild / Intergraph的Clipper:RISC 通過“Macro instruction ROM”中定義的一些更復雜的指令影響了設計。

▪️ 15、1987 年(1988 年商業發行)

摩托羅拉88000:針對高端市場,發布時聲稱是世界上最快的微處理器。

▪️ 16、1988 年(1989 年商業發行)

英特爾i860:第一個百萬晶體管CPU也採用了超長指令字方法。

▪️ 17、1988年

Apollo的PRISM (Parallel Reduced Instruction Set Microprocessor):專爲 Apollo 的 DN10000 工作站提供動力。

CISC 的消亡?

也許與所有新的 RISC 設計一樣值得注意的是,新的 CISC 架構將變得罕見。

20 世紀 70 年代末出現了英特爾 8086、摩托羅拉 68000、國家半導體 32016,以及德州儀器 (Texas Instruments) 和幾家小型計算機制造商的努力,希望將其設計縮小到 VLSI 上。然而 20 世紀 80 年代因缺乏新的 CISC 設計而引人注目。當开發速度更快的 RISC 架構會便宜得多時,爲什么有人會花更多的錢來構建新的 CISC 架構呢?

David Patterson 親自參與了可能是這個時代最復雜的設計的命運,即我們在他們於1982 年 5 月發布的論文“Intel iAPX432 : Gordon Moore, Risk and Intel’s Super-CISC Failure’”中討論的英特爾 iAPX432微主機。討論結果表明,iAPX432 不僅在與 VAX 11/780 相比時表現不佳,而且在與第一代 16 位微處理器(例如 8086)相比時也表現不佳。

那么,到 20 世紀 80 年代中期,RISC 已經贏得了這場战鬥嗎?不是完全。已經立足市場的CISC架構不斷更新。Intel 的 8086 的後繼者是 80286,然後是 80386,每一個都在性能和功能以及最重要的向後軟件兼容性方面提供了階躍變化。憑借英特爾的制造專業知識以及 IBM 兼容設計在商用個人計算機市場上的控制力,x86 架構的未來是有保障的。

同樣,摩托羅拉不斷更新 68000 架構,這些設計將用於蘋果的 Mac、Steve Job 的 Next 工作站以及 Atari 和 Commodore 的其他工作站和家用電腦。不過,這與 RISC 潮流背道而馳。許多 CISC 設計被 RISC 新設計所取代,例如在 Sun 工作站中,68000 系列被 Sun 自己的 SPARC RISC 處理器所取代。

但如果在 20 世紀 80 年代初構建新的 RISC 芯片是一項低成本、低風險的提議,那么更新並確保其獲得適當的支持將會更加昂貴。市場總是不太可能支持如此多的 RISC 設計,而且這些設計之間沒有任何軟件兼容性。

這些簡單的 RISC 設計开始添加更多功能並變得更加復雜。他們需要浮點協處理器、高速緩衝存儲器、更復雜的管道等等。另外,它們必須採用越來越昂貴的工藝來制造。所有這些都使得公司开發和支持它們的成本更高。

那么,問題是:誰將在 RISC 市場取得勝利?

這不是一個容易回答的問題。由於 RISC 背後的原理相對簡單,而且設計通常有很多共同點,因此架構之間幾乎沒有什么可挑剔的。甚至現在的情況是,以復雜指令的形式添加新功能可能會被視爲違背 RISC 的整體理念。

所以這取決於其他因素。1988 年的電子雜志在“RISC Slugfest”標題下問道“營銷力量是否變得比芯片性能更重要?”。文章接着說,英特爾和摩托羅拉憑借其在微處理器市場的地位,也可能成爲 RISC 市場的贏家。一位評論員引用了這樣的話:

“摩托羅拉因其經驗、聲譽、客戶關系以及 68000 系列以及其他 8 位處理器產品的成功而位居榜首,英特爾也是如此。如果你看一下 RISC 的整體情況,大多數公司都不是傳統的微處理器廠商。目前在 RISC 競爭中被公認爲長期微處理器創新者的只有摩托羅拉和英特爾,AMD 緊隨其後位列第三,但 29000 再次標志着他們的一次全新冒險。”

另一個人接着說:

“由於 RISC 架構更加簡單,英特爾和摩托羅拉進入該市場的开發成本只是他們在 32 位 CISC 產品上花費的一小部分。這意味着他們有更多的[可用資源]用於軟件支持、營銷和推廣”。

那么,誰會贏得 RISC 架構之战呢?是英特爾和摩托羅拉等現有微處理器供應商,IBM、惠普或 DEC 等計算機制造商,還是 MIPS 和 ARM 等初創公司?

大多數架構的消亡

在 RISC 的競爭者名單中,我們需要着重強調一家公司——DEC。他們在 20 世紀 80 年代中期構建了多個新的實驗性 RISC 架構,甚至發布了使用 MIPS 設計的工作站後,DEC 最終致力於自己的新設計,最初稱爲“DECchip”,該名稱將在 90 年代中期被“DEC  Alpha”取代。第一個 Alpha CPU Alpha 21064 於 1992 年 11 月問世。

競爭公司可以被視爲屬於三個類別之一。第一批制造和銷售計算機的公司需要強大的 RISC 處理器來爲這些計算機提供動力。IBM、DEC、HP 和 Sun 均屬於此類。其中一些公司還擁有自己的工廠來構建這些設計。

第二類是由半導體制造商組成,他們希望利用自己的制造專業知識來制造和銷售 RISC 微處理器。英特爾、摩托羅拉和 AMD 均屬於這一組。

最後一類由新的獨立公司組成,這些公司純粹是爲了設計和銷售 RISC 處理器或設計而創建的。MIPS 和 ARM(從 Acorn 中分離出來後)就屬於這一類,他們既沒有自己的產品可以使用他們的設計,也沒有能力進行自己的設計。

每個群體都有自己的競爭優勢,也都有自己的問題。

計算機制造商的產品擁有現成的市場,並且有能力开發在其系統上運行的軟件堆棧。即使對於像 IBM 這樣大的公司來說,這些系統的銷量與基於 Intel x86 的個人計算機的銷量相比也相形見絀。

一些評論家認爲,英特爾或摩托羅拉憑借其制造專業知識以及在微處理器市場的良好記錄,最終將在 RISC 市場取得勝利,就像他們分別在 x86 和 68000 上取得的勝利一樣。但這些公司將銷售 RISC 處理器,這些處理器將與他們自己領先的 CISC 設計競爭。

最後一類似乎有最大的困難。獨立公司 MIPS 和 ARM(從 Acorn 分拆出來後)。他們必須爭取新客戶,資金有限,而且與大公司相比沒有明顯的競爭優勢。

聯盟時代

對於大多數 RISC 供應商來說,其 RISC 設計最重要的用途是在 Unix 工作站或其他台式計算機中。其中有 Sun 工作站 (SPARC)、Silicon Graphics (MIPS)、IBM PC/RT (RT)、Acorn Archimedes (ARM)、HP 工作站 (PA-RISC)。然而,這些產品產量低,通常價格昂貴,並且越來越需要與高端 x86 PC 市場競爭。

我們可以將 1990 年和 1991 年 Unix 工作站市場的銷量(來源 Computerworld)與 IBM PC 兼容銷量進行比較,1990 年 IBM PC 兼容銷量超過 1500 萬台:

與容量大得多的 x86 架構相比,RISC 架構處於巨大劣勢。

對於許多這樣的公司來說,他們的反應是爭取其他公司支持他們的架構。這並不是什么新鮮事。“second sourcing”有着悠久的傳統,擁有多個供應商被認爲對於確保重要部件的供應連續性至關重要。最接近“second sourcing”的方法是將架構許可給第三方。

Sun 於 1989 年开始授權 SPARC,當時設計被傳遞給“SPARC International”,這是一家爲發展 SPARC 生態系統而創建的新公司。SPARC 授權商包括富士通、德州儀器、Atmel、賽普拉斯和松下。

1992 年的 TI SuperSPARC 1

ARM 於 1990 年從 Acorn 中分離出來,與蘋果成立了一家合資企業。盡管新公司已籤約爲合資夥伴進行設計,但該公司立即开始尋找能夠授權 ARM 設計的新合作夥伴。

但在某些情況下,企業尋求建立聯盟的目的往往不僅僅是許可,聯盟通過自己的專業知識來補充彼此的技術。

高級計算環境 (ACE) 聯盟於 1991 年 4 月宣布成立。ACE 匯集了 21 個成員公司,包括 MIPS、DEC、康柏、微軟和 SCO(銷售基於 Unix 的操作系統)等。ACE 帶來了高級 RISC 計算 (ARC),它开發了圍繞 MIPS 設計的硬件標准。

1991 年 10 月,AIM 緊隨其後,將蘋果、IBM 和摩托羅拉聯合起來。這三個公司集中資源來構建基於 IBM Power 架構的設計。結果,摩托羅拉放棄了自己的 88000 架構的开發。

爲了不被排除在聯盟遊戲之外,惠普圍繞 PA-RISC 架構組建了自己的團隊。Precision RISC組織是由HP領導的行業組織,成立於1992年,旨在推廣PA-RISC架構。成員包括 Convex、日立、休斯飛機公司、三菱、NEC、OKI 和 Prime Computers。

然後在 1992 年,Silicon Graphics 收購了 MIPS,以確保爲其工作站提供所需的處理器。

在企業起舞繼續進行的同時,這些設計繼續快速推進。所倡導的變革的簡短列表以及採用這些變革的設計示例包括:

64 位:MIPS R4000(1991 年 10 月)

SIMD 指令:具有 MAX 指令集擴展的 HP PA-7100LC(1994 年 1 月)

超標量架構:DEC Alpha 21064(1992 年 9 月)

在每種情況下,我們都在將這些功能引入 x86 之前就對其進行了介紹。但英特爾往往會很快迎頭趕上,在 RISC 中出現後不久就添加功能。英特爾在 x86 中添加的 MMX SIMD 於 1997 年出現。奔騰 (Pentium) 是第一個 x86 超標量設計,於 1993 年出現。

聯盟的破裂

RISC 聯盟看起來很強大,通常將財力雄厚或擁有豐富制造專業知識的公司聚集在一起。然而,他們經常遇到一個主要問題:合作夥伴的利益不一致。

第一個失敗的是ACE。

ACE 從一开始就注定要失敗。它支持多種架構(MIPS 和 x86)以及多種操作系統(Windows 和 Unix)。

在某些情況下,ACE 成員的利益不僅不一致,而且實際上是直接對立的:微軟與 SCO(生產競爭性操作系統)以及康柏與 MIPS(最大的 x86 PC 制造商之一與競爭性架構)。

ACE 崩潰的第一個跡象出現在 1992 年 1 月,當時康柏宣布終止與 MIPS 生產台式機的合作。康柏承認:“很明顯,我們合作得越多,我們就越發現我們確實有非常不同的策略。”康柏最終於當年 5 月退出 ACE。一些符合 ARC 標准的機器將由 ACE 聯盟的剩余成員發布,但這永遠不會成爲 x86 PC 的可信競爭。

一些人猜測,康柏成立該聯盟只是因爲擔心作爲其業務支柱的 x86 PC 會輸給 Sun 等公司的由 SPARC 驅動的工作站。據說康柏想在英特爾的領導下“點燃一把火”。

無論這是否是有意爲之,英特爾很快就推出了 Pentium、Pentium Pro 和 Pentium II 處理器來應對 RISC 設計帶來的挑战。

我們在上文看到的不少商業 RISC 設計也一一被擱置,或者變得越來越不相關。隨着 x86 設計變得更加強大以及 PC 市場的增長,英特爾將重點放在其最大的產品上是有意義的。當它需要更強大的服務器 CPU 時,它於 1992 年與 HP 合作支持 Itanium(一種超長指令字 (VLIW))設計。

英特爾在 20 世紀 90 年代放棄了 i860 和 i960,轉而採用基於 Arm 的 StrongARM 設計,該設計是作爲訴訟和解的一部分從 DEC 獲得的。隨後,StrongARM 業務更名爲 XScale,並於 2006 年出售給 Marvell。同樣,惠普放棄了 PA-RISC,轉而採用安騰。

AMD 對 Am 29000 开發的支持一直持續到 1995 年,當時從事該架構的團隊被轉移到 AMD 的 x86 設計上。

DEC 於 1996 年嘗試與三星結盟生產 Alpha 設計,但 DEC 於 1998 年被康柏收購,康柏於 2001 年放棄了 Alpha,再次轉而支持英特爾的安騰。康柏本身於 2002 年被惠普收購,Alpha 的开發在幾年後結束。

Apple 繼續使用 PowerPC 設計,直到 2006 年才轉向英特爾的 x86 設計。蘋果的 Mac 業務越來越專注於筆記本電腦,改用英特爾更節能的筆記本電腦 CPU 顯着提高了性能和電池壽命。

Sun繼續在其工作站中使用SPARC,但於2010年被甲骨文收購,甲骨文於2017年終止了SPARC开發。富士通暫時繼續生產SPARC處理器,但在新設計中已改用自己的基於ARM的設計。

因此,MIPS 和 ARM 這兩家公司的起始地位最弱。

MIPS 於 1998 年從 Silicon Graphics 中分離出來,其公司劇變的歷史在 2010 年代仍在繼續。2013 年,它被 Imagination Technologies 收購,四年後又將其賣給了一家風險投資公司。第二年被出售給Wave Computing,並於2020年破產。Wave更名爲MIPS,但最終在2021年放棄了MIPS,轉而採用RISC-V。

只剩下ARM了。那么,當其他架構消失時,爲什么 ARM 能夠幸存下來呢。

與聯盟共贏

到 2010 年代中期,只有一種原始 RISC 架構擁有可行的未來。只是 2010 年代的 ARM 架構看起來與 1980 年代有很大不同。64 位 ARM64 指令集放棄了許多使原始 ARM 及其直接後繼產品與衆不同的功能(條件執行、16 位長指令)。

英國劍橋的 Advanced RISC Machines 誕生於一個看起來特別弱的聯盟。蘋果想要爲牛頓配備處理器,但該設備從來都不是蘋果業務的核心。當 Acorn Computer 推出 ARM 技術時,其業務已經陷入困境。

但合資夥伴的弱點意味着該公司必須將目光投向其創始夥伴之外的領域。

ARM 的成功可以歸因於許多因素:它對移動市場的承諾和成功、滿足客戶需求的敏捷性、它的文化、Robin Saxby 領導的團隊的承諾,或者它在移動市場上避免與英特爾競爭的方式。桌面。所有這些無疑都很重要。但還有另一個因素:它找到了一種建立聯盟的方式,這種方式對 ARM 及其所有合作夥伴都有效。

ARM 方法與其他方法有何不同?ARM 不與其合作夥伴競爭,其开展業務的方式在所有合作夥伴之間建立了相對公平的競爭環境。這意味着合作夥伴關系可以持續,並且與 ARM 合作的公司範圍可以繼續擴大。

這種關系建立在簡單而明確的合同基礎上。合作夥伴將獲得 Arm 設計的許可,以換取預付費用和版稅。這些關系的直接性將使它們更有彈性。


結論


那么我們可以從 20 世紀 80 年代和 90 年代的 RISC 战爭中學到什么呢?

我確信讀者會發現,本文中幾乎沒有討論支撐每種 RISC 設計的技術。因爲20 世紀 80 年代 RISC 設計架構之間的差異可能並不重要。有些功能被證明存在問題,而其他創新則流行起來。我認爲可以公平地說,這些都不是決定建築是否幸存的決定性因素。事實上,這些架構中最成功的 ARM 會根據需要不斷調整、添加或刪除功能。

英特爾憑借 x86 成爲了當時最成功的微處理器設計者,盡管 x86 架構至少在這一時期的大部分時間裏明顯不如其 RISC 競爭對手。運行 IBM PC 兼容軟件的能力是大多數台式計算機購买決策中最重要的因素,而 PC 市場給英特爾帶來的銷量使其能夠繼續投資於 x86 架構並保持其制造領先地位。

所以最終,架構可能並不重要。

RISC 在 20 世紀 80 年代可能是一個好主意。然而,隨着 20 世紀 90 年代的發展,x86 顯然可以成功地與最好的 RISC 設計競爭。

第二個事實與每個聯盟中涉及的公司之間關系的性質有關。利益不同的公司之間的松散聯盟很難維持,並且常常會破裂和失敗。

例如,對於 ACE 和 AIM,合作夥伴的利益要么從一开始就存在分歧,要么隨着時間的推移而出現分歧。盡管所涉及的公司規模和能力都很大,但聯盟的實力還不足以確保它們及其架構的生存。

同樣,如果沒有強大的合作夥伴和足夠大的生態系統,任何新的 RISC 架構都不足以支持持續不斷上升的开發和支持成本。

與此相反,ARM 得以生存並繁榮發展,部分原因在於不妨礙英特爾的發展,而且還在於創建了一種圍繞創建、維持和擴大聯盟的商業模式。

雖然RISC的諸神亂鬥時代結束了,但RISC-V在2010年的橫空出世,又掀开了RISC架構的另一頁,這容我們後面再說。



標題:RISC,諸神亂鬥的時代!

地址:https://www.iknowplus.com/post/27107.html

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播信息之目的,不構成任何投資建議,如有侵權行為,請第一時間聯絡我們修改或刪除,多謝。