摩爾定律還能走多遠?―― CPU 的內存瓶頸
在2002年之前,隨著(zhù)芯片密度的增加, CPU的時(shí)鐘頻率也一直不斷增加。 對于普通消費者而言,CPU 的頻率就代表計算機的快慢。 1981年最早出廠(chǎng)的 IBM PC, CPU 的頻率是 4.77 兆赫, 相當于一秒鐘四百七十七萬(wàn)個(gè)時(shí)鐘周期。 假設 CPU 一個(gè)時(shí)鐘周期可以運行一條指令, 頻率越高, 就算得越快。
本文引用地址:http://dyxdggzs.com/article/201808/386099.htm1995年的奔騰芯片,時(shí)鐘頻率達到了 100 兆赫, 是 1980年的二十倍還多。
而到了 2002年, 英特爾新型奔騰芯片時(shí)鐘頻率第一次突破 3000 兆赫 (3 GHz)。
限制時(shí)鐘頻率的第一個(gè)主要物理約束條件是: 信號在晶體管之間傳輸的遲滯。 這也是為什么晶體管密度越大,時(shí)鐘頻率可以越高。
2002年之后, CPU 時(shí)鐘頻率增加遇到了第二個(gè)技術(shù)瓶頸: 能量消耗。
簡(jiǎn)單說(shuō), CPU的能量消耗和時(shí)鐘頻率的三次方近似成正比, 在 3 Ghz 之后, 頻率的繼續提高會(huì )使芯片過(guò)熱而面臨被燒毀的風(fēng)險。
實(shí)際上, 2002 年之后, 英特爾CPU 的時(shí)鐘頻率大多一直在 2 GHz - 4 GHz 之間, 十四年來(lái)沒(méi)有本質(zhì)提高。

但時(shí)鐘頻率不再增長(cháng), 并不意味著(zhù) CPU 性能的停滯不前。 就像人類(lèi)的大腦, 過(guò)去二十萬(wàn)年沒(méi)有本質(zhì)變化, 但并不意味著(zhù)人類(lèi)文明不會(huì )發(fā)生開(kāi)天辟地的進(jìn)步。
這時(shí)候,最有用的思路,是尋找新的維度,去進(jìn)攻解決問(wèn)題。
如果說(shuō), CPU的時(shí)鐘速度好比人腦的計算速度, 那么 CPU 的內存讀取速度就好比人獲取信息的速度。 這是提升 CPU 性能的第一個(gè)不同的維度。
有過(guò)基本工作或者研究經(jīng)驗的人,都會(huì )有這樣的體會(huì ):
大多數時(shí)候,限制工作效率的瓶頸是: 查資料,找東西。
找不到就只能干著(zhù)急。
二十年前的科研者,查資料要去圖書(shū)館,小圖書(shū)館沒(méi)有資料就要去更大的圖書(shū)館,沒(méi)有計算機檢索之前需要一張張翻卡片查。 查找資料的時(shí)間,動(dòng)輒就是幾個(gè)小時(shí)甚至更多,超過(guò)了真正研究分析的時(shí)間。 這和今天,十秒鐘內就可以在互聯(lián)網(wǎng)上,精準搜索和下載世界上大部分論文資料,完全不可同日而語(yǔ)。
電腦的內存架構,實(shí)際上要細分為 Register (寄存器), Cache (高速緩存), Memory(內存), Disk (硬盤(pán))。 而緩存又可以細分為一級緩存 (Level 1 Cache), 二級緩存, 三級緩存, 甚至四級緩存。

打個(gè)比方, 寄存器上的數據,好比你手中那張紙上寫(xiě)的信息, 信息量很少,但立等可取。
一級緩存, 好比桌面上的書(shū), 信息量多一些, 伸一下手可以拿到;
二級緩存, 好比抽屜里的書(shū),打開(kāi)抽屜后仍然很快可以拿到;
內存,好比書(shū)架上的書(shū),要站起來(lái)去查找;
硬盤(pán),就是圖書(shū)館的資料,需要花幾個(gè)小時(shí)到外面跑一趟才可以查到了。
研究者,如果無(wú)法迅速獲取需要的資料,天天要往圖書(shū)館跑,即使牛頓/愛(ài)因斯坦再世, 聰明的腦瓜也只能像高速的 CPU 一樣, 無(wú)效地空轉, 痛苦地在來(lái)去圖書(shū)館的道路上等待。
以 Intel 的 i7-4770 CPU 為例,其時(shí)鐘頻率 3.4 GHz. 一級和二級緩存,讀取數據的延遲一般在 5 - 12個(gè)時(shí)鐘周期,相當于約 2-4 納秒。如果要到內存讀取數據,遲滯則約 70 納秒,等價(jià)于200多個(gè)時(shí)鐘周期。如果內存找不到,不幸地要去硬盤(pán)搜索,延遲超過(guò) 4 毫秒 (等價(jià)于四百萬(wàn)納秒),再快的 CPU 時(shí)鐘頻率, 此時(shí)也然并卵矣。
摩爾定律的發(fā)展,對于 CPU 的時(shí)鐘速度,和普通內存 (DRAM) 的讀取延遲上,進(jìn)步速度是不一樣的。其差距每年以 50%的速度增長(cháng)。

為了緩解這個(gè)矛盾,高速緩存 (Cache) 最早是以外置的形式出現在1985年的英特爾的 386的處理器上。
真正的芯片上的內置的緩存,最早是在1989年的 486處理器上出現,當時(shí)容量只有 8 KB, 到九十年代容量提高到 16 KB.
緩存容量過(guò)大,會(huì )影響搜尋速度,所以又出現了二級, 三級緩存。 這里有很多微妙的設計細節,此處不表。
緩存, 本質(zhì)上就是以 SRAM (靜態(tài)隨機存儲器)為基礎的內存。 而SRAM, 本質(zhì)上就是六個(gè)晶體管結構組成的邏輯單元, 如下圖。

隨著(zhù)晶體管的小型化,芯片設計者就不斷在 CPU 芯片上增加更多的內置的高速緩存。
以 2015年九月英特爾出品的 14 納米 i7-6560U 處理器為例, 它有兩個(gè)內核 (core), 每個(gè)內核有 64 KB 的一級緩存, 256 KB 的二級緩存, 并共享一個(gè) 4 MB的三級緩存。
用于緩存的晶體管占整個(gè)CPU 芯片上的晶體管的比例,也從 486時(shí)代的 40%左右,到今天許多CPU上接近 90%. (數據出處來(lái)自威斯康辛大學(xué) Doug Burger 的論文, “Syetem-level Implication of Processor Memory Integration” )
換句話(huà)說(shuō),計算的管理,將近90%的內涵, 實(shí)際上是對內存記憶的管理。
不管在什么行業(yè),如果做到了高效地搜尋和存儲海量的數據, 你可能就已經(jīng)成功了90%.
評論