繁體
  • 简体中文
  • 繁體中文

熱門資訊> 正文

CPU,瘋狂五十年

2024-02-03 11:37

如果您希望可以時常見面,歡迎標星 收藏哦~

來源:內容由半導體行業觀察(ID:icbank)編譯自pcwatch,謝謝。

1971年發佈的Intel 4004 中的晶體管總數約為 2,300 個(根據 Masatoshi Shima 的回憶錄為 2,237 個),但顯然在設計時有指示將其保持在 2,000 個以內。為什麼這麼難呢?答案在於當時的半導體制造技術還不成熟(與現在相比)。

回看細節,其製造工藝為10μm,芯片尺寸約為4mm x 3mm,12平方毫米(照片1)。當時我們還在用直徑50毫米(或者更確切地説是2英寸)的晶圓進行製造(圖2),理論上一塊50毫米的晶圓可以生產大約130種產品。然而,當時的生產良率很低,所以我們想知道是否可以生產 100 件。當時的晶圓製造成本並未公開,但有一個像這樣的圖表(圖3),顯示在1971年,一個晶體管的成本為0.3美元。這意味着 4004 的製造成本將略低於 700 美元。

順便説一句,英特爾最初以 60 美元的價格出售此產品,因此賣得越多,虧損就越多,但在 1974 年,當繼任者 4040 推出時,每個晶體管的成本為 0.07 美元,即 161 美元。到 1976 年,生產成本為每個晶體管的價格為 0.015 美元,製造成本低於 35 美元。所以,當然,如果從長遠來看,它是有利可圖的,但目前還不清楚英特爾管理層在多大程度上預見到了這一點。

不過,暫時虧損也還好,雖然除非市場建立起來纔不會帶來未來的生意,但想要限制虧損數額也是理所當然的。2,000 顆或更少意味着製造成本低於 600 美元,但 4004 無法滿足這個要求。這就是為什麼早期的 CPU 存在製造成本和良率問題,而大規模的第一個故事是電路無法安裝。

而且,晶圓最初是50毫米,后來逐漸增大到75毫米/100毫米/150毫米,但即便如此,也不可能突然製造出100平方毫米芯片的CPU。1974年的8080採用6μm工藝製造,尺寸為20.1平方毫米,1978年的8086採用3μm工藝製造,尺寸為32平方毫米。隨着芯片尺寸逐漸增大,可用晶體管的數量也隨之增加(8086已29,000。大約是 4004 的 10 倍。)換句話説,在那個時代,由於電路尺寸的原因,嘗試整合各種功能是不可能的,所以即使人們想要包含一些功能,也常常被推迟。

「iAPX 432」是一個很大的失敗,因為設計時根本沒有考慮到這一點。設計於1975年開始,芯片於1981年完成,但它不能包含在一個芯片中,而且指令有多個芯片配置由解碼器「iAPX 43201」(66.3平方毫米)、指令執行「iAPX 43202」(74平方毫米)和外圍I/O「iAPX 43203」(75.3平方毫米)組成。(更重要的是,甚至雖然它是一個如此巨大的芯片,但它沒有內置內存控制器;iAPX 43205 可用)。

而且,iAPX 43201和43202之間的通信成為瓶頸,工作頻率最高被限制在8MHz。畢竟幾乎沒有採用它的例子(英文版維基百科有一個SBC的形象:配備iAPX 432的單板計算機,並且可以肯定的是Intel本身以SBC的形式銷售了至少100套) .它就這樣消失了。總之,以當時的半導體制造技術,製造大型複雜的CPU仍然很困難。

邁向以IPC≧1為目標的時代

這個方向可能在 20 世紀 80 年代末發生了變化。指令集已變為32位,對包括虛擬內存在內的成熟操作系統的支持以及相關的安全實現已經完成,但可以使用的晶體管由於小型化而變得更加靈活。雖然這只是「輕微」的水平,並不會導致電路規模的急劇增加,但它已經使得創建與以前的設計不同的設計成為可能。

英特爾的「80486」和摩托羅拉的「MC68030」都在芯片中內置了高速緩存。80486 還將其解碼器從微碼更改為硬連線,大大提高了其吞吐量。以所謂的MIPS值來説,工作頻率為33 MHz的80386約為11.4 MIPS,這意味着執行一條指令平均需要3個周期,但工作頻率為25 MHz的80486為20 MIPS ,或每條指令 1.25。周期已縮短。

這一時期也見證了 RISC 處理器的興起。在商業產品中,先驅者是富士通和TI等公司生產的MIPS R2000和R3000、SPARC和microSPARC以及IBM的POWER( *1 ) ,但這些產品在一個周期內處理一條基本指令。假設可以完成了(儘管有一些值得懷疑的),並且通過擁有一個簡單的指令集使其成為可能,雖然代碼密度略有下降,但已經可以用高工作頻率來補償這一點。

順便説一句,MC68030的處理器配置與MC68020基本相同,因此IPC方面沒有太大提升(MC68020為2.8MIPS@20MHz,MC68030為3.3MIPS@20MHz)。然而,遵循該模型的 MC68040 通過使用流水線處理實現了 44MIPS@40MHz。

然而,無論我們如何努力加速這條指令流水線,理論極限都是 1MIPS@1MHz。當然,一條流水線一次只能處理一條指令。而在同步電路(內部電路與時鍾同步運行的數字電路)中,無論延迟如何,吞吐量都不能高於 1。

直到20世紀80年代,方向是逐步增加可用晶體管的數量,並逐步增加功能和指令的數量,以提高性能。我認為最后一代將是英特爾的「80386」或摩托羅拉的「MC68020」。那是一個用晶體管來支持32位和虛擬內存的時代,而指令處理本身仍然是非流水線結構,並且只有一個指令處理單元。

那麼MC68040是如何達到1.1MIPS@1MHz的呢?它有多個指令流水線(MC68040有兩個)。這就是所謂的超標量方法(圖 4)。Intel 還在其 Pentium 一代中使用了這種超標量,達到 188MIPS@100MHz。自然,RISC處理器也紛紛效仿,通過推出配備超標量的產品(UltraSPARC和MIPS R10000),他們成功地將IPC提升到1以上。

那麼,如果繼續發展超標量,性能會不會有所提升呢?指令依賴性是有限制的(根據指令的上下文,可以同時發出的指令數量受到限制)。亂序首先在Intel的Pentium Pro中實現,然后是AMD的K6(或者更確切地説,舊的NexGen的Nx686)來解決這個問題,RISC處理器也引入了它。

順便説一句,與這種亂序相關的事情之一就是將 CISC 指令轉換為 RISC。Pentium Pro和Nx686/K6內部實現為RISC處理器,前端解碼器將x86指令轉換為獨特的RISC指令(最初流行稱此為RISC86,但現在不再如此。通過轉換為MicroOp(這是現在通常稱為 MicroOp),簡化結構並加快流程已成為可能。

之后AMD發展了K7,Intel發展了Pentium II/III,並支持基於SIMD的計算,但SIMD雖然帶來了數據處理性能的提升,但與IPC的提升沒有任何關係,這里就先不提了。

高工作頻率挑戰和多核實現失敗

那麼下一代會增加管線數量來提高性能嗎?事實並非如此。這稱為波拉克定律或波拉克經驗法則,這是因為性能受「處理器的性能與其複雜性的平方根成正比」這一表述的支配(圖 5)。

隨着管道數量的增加,面積大小也會增加,但性能僅以面積大小的平方根增加。換句話説,即使裸片尺寸增加一倍,性能也只會提升1.4倍。這是使用晶體管的低效方法。

第一個想法是提高工作頻率。Intel將其實現為Pentium 4,但正如你所知,它的目標是5GHz,但實際上未能達到4GHz。這是因為90nm工藝的漏電太大,導致其無法正常工作,而即使是採取了一些對策的65nm,仍然無法實現高速運行。

因此,英特爾將取消名為 Tejas 的核心,轉而專注於多核。

波拉克規則側重於單個核心內的複雜性,但如果幸運的話,您可以通過使用兩個核心使處理性能加倍。如果兩倍大小的核心只是1.4倍大小,那麼最好增加核心數量。

AMD從Athlon 64核心開始就為雙核準備了外圍電路,並於2005年推出了雙核Athlon 64 X2。英特爾還在 2005 年推出了一款名為 Pentium D 的雙芯片 MCM 配置產品,並於 2006 年發佈了 Core 2 Duo(一個芯片上有兩個核心)和 Core 2 Quad(有兩個芯片配置)。進入。至少從表面上看,性能隨着核心數量的增加而提高,現在的挑戰變成了如何讓所有核心都完成自己的工作。

順便説一句,隨着高工作頻率和多核開發的挑戰加劇,大多數 RISC 處理器失去了市場,只剩下 Arm(當時稱為 ARM 除外)。

阿姆達爾定律和再次改進 IPC

那麼,增加核心數量是否更有利呢?批發商並沒有回答這個問題。著名的阿姆達爾定律在這里脫穎而出。阿姆達爾定律定義為:

其中:

Slatency:整體性能提升率

p:可以並行執行的總處理的百分比

s:可並行運行的部件的性能提升率

例如,如果一個程序由4核CPU處理,但可以並行運行的部分佔總數的30%,則總體效率為1 ÷ ((1-0.3) + 0.3 ÷ 4) = 1.2903。..這意味着加速只有29%。簡而言之,無論你增加多少個核心,如果處理是順序的,那就沒有意義了。

使用 Excel,您可以感受到更快的速度,因為您可以在同時更新多個單元格時劃分處理,但是當您在 Word 中鍵入時,沒有同時處理,也沒有變慢,因此您不能指望性能改進.這並不是説沒有。

因此,在此期間,Intel和AMD積極與軟件供應商(主要是微軟,但也包括其他廠商)接洽,試圖以某種方式增加其應用程序中的多線程支持。這是值得的(?),而且我認為 Windows 變得越來越重並不是巧合。

核心數量不斷增加,64核心的產品實際上正在向消費者推出,但與此同時,企業再次致力於改進IPC。對於英特爾來説,這是 Sandy Bridge 一代,它顯着增強了后端處理管道。然而,儘管英特爾在 22 納米工藝方面表現良好,但由於未能推出后續的 14 納米和后續的 10 納米工藝,它有點絆腳石。

首先,提高IPC=加強流水線,因為可以使用的晶體管數量隨着工藝小型化而增加,所以我們實現它是爲了利用這種增加,所以如果我們不引入工藝,我們就會缺乏事實證明,我們需要資金來增加管道。結果,Intel此時別無選擇,只能增加核心數量(而忽略了die尺寸的增加),導致核心數量不必要的增加。

而AMD則在Bulldozer核心上遭遇重大失敗,一度處於默默無聞的狀態,但在2017年憑藉Zen核心捲土重來。核心數量和 IPC 的增長速度與英特爾的 Core i 相當,而且情況仍然如此。

異構計算時代?

在這些提高性能的技術中,異構計算或異構多核是自 20 世紀 90 年代以來人們一直在談論的一項技術,但尚未完全普及。簡而言之,CPU 可以為任何類型的處理提供一定水平的性能,但一般來説,它們不具備加速特定處理的功能。

例外的是基於SIMD的擴展指令,它已經逐漸演變為MMX/3DNow!/SSE/AVX,最近AMX也加入了這個羣體,這確實可以加快特定處理的速度。在 MMX 和 3DNow! 時代,它們旨在加速 JPEG 和 MPEG 的解碼速度,這在當時是有問題的,並且適用於數據處理性能比指令處理性能更重要的應用。事實上,這一點直到今天都沒有改變:CPU 繼續為指令處理性能很重要的應用程序努力工作,並且為數據處理性能很重要的應用程序安裝額外的加速器。

現在,「異構計算」這個術語自 20 世紀 90 年代以來就已存在,但其具體目標是在 2000 年代末出現的。簡而言之,它是一個 GPU。AMD特別熱情,爲了縮小當時已經消亡的Bulldozer核心的性能差距,該公司正在大輪子上開發硬件和軟件,以實現使用GPU進行異構計算的APU。實施將由雙方共同進行。

在硬件方面,第一代的結構是CPU和GPU簡單地通過PCI Express在內部連接,但從那時起,它逐漸演變為使用具有緩存一致性的總線連接兩者。

在軟件方面,我們採用了HSA(異構系統架構)這個術語,在這個術語下我們將利用OpenCL來推動應用接口的集成。HSA 最終發生的故事可以概括如下,但也許很自然地説,這只是在 Zen 出現之前爭取時間的一種方式,但也無可奈何…… 不過,你仍然可以使用OpenCL,所以這並不是浪費。

NVIDIA在此之前已經廣泛提供CUDA,但該公司只提供GPU(Tegra APX 2500自2008年起就已提供移動端,但仍然不為客户提供CPU)。(該公司還於2010年退出了芯片組業務) ),所以與其説是把GPU當作CPU的加速器,不如説感覺更像是GPU是處理的主處理器,CPU是對其的補充,意義與異構計算略有不同。

NVIDIA目前正在推出GH200,它將基於Arm的CPU核心和GPU結合在一個封裝中,特別是在HPC領域,並計劃使用這款Arm CPU + NVIDIA GPU作為異構計算平臺的核心。

英特爾是落后者。就該公司而言,我認為原因之一是當時的 CPU 太強大了。2013 年 Brian Krzanich 接任 CEO 后,公司突然開始收購各種非 CPU 資源。

特別是在AI方面,英特爾進行了各種收購,比如2016年收購了Nervana Systems,一個月后收購了Movidius,三年后收購了Habana Labs,同時英特爾也犯了各種錯誤,比如實際上放棄了Nervana Systems。我認為他們無論如何都應該收購 Imagination Technologies 的 GPU,但他們卻在 2017 年邀請了 AMD 的 Raja Koduri,並從那里再次開始構建 GPU。

順便説一句,他們還收購了 Altera(儘管它最近已成為一家獨立公司,並且將不再受到支持)。一個名為 oneAPI 的龐大框架已經被建立來集成所有這些東西。

異構計算有效嗎?

這樣一來,各個公司都準備了異構計算的平臺,但這行得通嗎?本月的主題是:首先得出結論,我想:「這不是不可能嗎?」 原因是各個公司的解決方案不兼容。

Intel 説 oneAPI 涵蓋了一切,但實際情況是 oneAPI 本身就是一個巨大的拼湊體,或者説他們只是想讓它看起來像是他們把所有不相關的東西都集成在了 oneAPI 的名下。oneAPI 的最初願景是能夠通過一個 API 統一處理所有計算資源,但即使是現在

oneDPL(oneAPI DPC++ 庫)

oneMKL(oneAPI 數學內核庫)

oneDAL(oneAPI數據分析庫)

oneDNN(oneAPI深度神經網絡庫)

oneCCL(oneAPI集體通信庫)

oneTBB(oneAPI 線程構建塊)

oneVP(oneAPI視頻處理庫)

oneAPI 庫有七種類型,除此之外,OpenVINO 正在推廣用於 AI 推理。此外,之前的 Habana Labs 產品線仍然不受 oneAPI 支持。不過,如果説這是多平臺就好了,也就是説,它涵蓋了所有 AMD 和 NVIDIA GPU、AMD NPU 等,但當然事實並非如此。

對於 AMD 來説,情況有點複雜。IEEE FCCM23(現場可編程定製計算機)於去年 (2023 年) 5 月舉行,以下是該活動的幻燈片(圖 7)。套上像oneAPI這樣的外衣是不現實的,應用程序基於MLIR(多級中間表示)編寫,然后通過LLVM/ROCm/MLIR-AIE/CIRCT由CPU或加速器處理。故事是關於分配的。

乍一看,這似乎自由度相當高,很容易支持多供應商,但例如 NVIDIA 或 Intel 會為自己的 GPU 或 NPU 提供圖 7 中的紅色部分嗎?,似乎有可能。感覺沒有任何好處,而且一開始在 MLIR 中編寫應用程序時障礙很高。

另外,我理解使用 CIRCT 進行編程FPGA。

更籠統地説,AMD 目前將所有精力都集中在 ROCm 作為 GPU 的庫上,ROCm 當然可以在 Radeon 上使用,但當然不適用於 NVIDIA 和 Intel 的 GPU。是的(雖然我很高興Windows 自去年以來已被添加到支持列表中,儘管之前它不受支持)。

關於AI,如果你想用GPU,就用ROCm,如果你想用CPU,就用ZenDNN,如果你用NPU,就用基於ONNX的Ryzen AI軟件。根據2022年金融分析師日路線圖(圖8),Unified AI Stack 2.0計劃逐步發佈,包括面向客户,但具體發佈日期目前尚未透露。所以,據我所知,AMD只考慮自己的硬件。更不用説英偉達了。

在這種情況下,異構計算的普及意味着在檢查應用程序運行在什麼平臺上后,Intel應該使用oneAPI或OpenVINO,AMD應該使用ROCm或Unified AI Stack,NVIDIA應該使用CUDA。這意味着你必須編寫代碼,以便您可以使用每個代碼來執行處理。

類似的故事在遊戲世界中已經存在。所謂超分辨率,可以在遊戲中支持所有NVIDIA的DLSS、AMD的FSR、Intel的XeSS,然后根據運行環境啟用/禁用各個選項,異構計算也必須做同樣的事情。有多少應用程序需要這樣的時間和精力呢?當然,如果供應商(即AMD、Intel、NVIDIA)願意支付支持它的成本,他們可能會支持它,但我認為他們負擔不起那個成本。

應用程序供應商可能不願意支持它,除非提供一個可以被多個供應商統一使用的通用API,類似於OpenCL。然而,像OpenCL一樣,這種通用API往往是半成品,即使制定了規範,它們也可能在沒有得到太多使用的情況下最終消失。

考慮到這一點,我不禁認為異構計算只會在某些環境中變得流行,例如HPC和嵌入式系統,在這些環境中可以唯一確定要使用的組件。也許客户唯一的選擇是繼續使用異構計算以外的方法來爭取更快的速度。

風險及免責提示:以上內容僅代表作者的個人立場和觀點,不代表華盛的任何立場,華盛亦無法證實上述內容的真實性、準確性和原創性。投資者在做出任何投資決定前,應結合自身情況,考慮投資產品的風險。必要時,請諮詢專業投資顧問的意見。華盛不提供任何投資建議,對此亦不做任何承諾和保證。