電腦達人養成計畫 3-1:記憶體簡介與認識記憶體階層架構

在經過超過半年的漫長過程後,終於要進入第三章了 (處理器發展史實在寫太多節了),第三章要談的是記憶體,不過由於凡是能夠儲存或暫存資料的都可以算是「廣義上」的記憶體,因此本節也會談到一點點有關暫存器、硬碟或是其他儲存裝置的內容 (之後硬碟會有專章介紹)。

記憶體階層架構

如同前面所說,下圖中出現的這些東西基本上都可以算做是廣義上的記憶體,從上而下大致上可以分成四大階層,這四個階層各自具有鮮明的特色。

MHA6855

暫存器 Register

暫存器是處理器運算核心中的一部分電路,基本上只有「暫存」的功能,一般來說暫存器是有專一性的記憶體 (這點跟其他記憶體有很明顯的不同),也就是只能儲存特定類型的資料 (像是馬上要接著執行的指令、馬上會用到的記憶體位置、當下運算單元的狀態等),而且通常都只會用於存放「馬上」就會用到 (例如指令暫存器或記憶體位置暫存器) 或是「隨時」可能用到的東西 (例如常數暫存器),因此位置通常也緊黏著會使用到該資料的電路,甚至在介紹的時候我們會乾脆省略不畫,只表現出其緊連著的功能電路。

↑ 最簡單的記憶電路-「正反器」

暫存器是所有種類的記憶體當中使用限制最多、成本最高 (也因此容量最小,是以 bit 計算的),但也是速度最快的一種,另一個明顯的特色是與處理器快取一樣,暫存器沒有固定共通的設計規範,在不同地方、不同用途、不同的處理器中可能會使用截然不同的方式來構成,一枚處理器當中也可能有很多種由不同技術設計出來的暫存器,而基本上同架構 (此處的架構是指第二章介紹處理器歷史時談及的 Micro-architecture,例如 Sandy Bridge) 的處理器會具有幾乎完全相同的暫存器規劃,然後因為我不想討論數位電路跟計算機組織的內容,所以暫存器只會介紹到這裡 XD。

處理器快取 Cache

比起暫存器那種通常只出現在技術解說與計算機組織相關書籍上的東西,處理器快取應該知道的人就多很多了吧,我們選購處理器的時候時常注意的一項規格之一就是「這枚處理器有幾 MB 的快取」,可不是嗎?

以上面這盒當年售價要將近兩萬元的 i7-4930K 來說,在包裝盒上就強調了其有內建 12 MB 的快取記憶體,不過實際上 Core i 家族討論快取大小的時候,指的其實只有快取中的一部分,或許你會好奇這是甚麼意思?實際上在現代的處理器中,處理器快取這一階層之中還有額外分層,最近比較常見的設計是三層式的,比較少見到四層甚至以上的做法,至於這個分層其實是有典故的,主要原因是技術的演化與成本的考慮

回顧上一章談了很久的處理器演化史,1985 年發佈的 Intel 80386 是第一款使用快取記憶體來加速處理器存取資料的處理器,不過當時的快取記憶體是獨立放在主機板上的晶片 (還可以拔起來換),基本上只能以處理器本身不到一半的時脈運作 (於是從此記憶體階層從三層變四層了),直到 1989 年發佈的 Intel 80486 才開始在 CPU 上整合 8KB 的快取記憶體,這就是現代 x86 處理器中 L1 (即 Level 1) Cache 的初登場,而原本在主機板上的快取記憶體晶片就變成 L2 Cache 了 (一如預期,L2 通常比 L1 來得大上許多,但也慢了不少)。

接下來在 1995 年 Intel Pentium Pro 就將 L2 快取也整合到處理器了,不過此時期的 L2 快取仍然是獨立晶片,只是跟處理器放在同一塊電路基版上而已 (MCP 封裝),隨後推出的 AMD K6-III 也做了類似的事情,但由於 K6-III 還繼續使用 Socket 7 主機板,因此主機板上仍然有快取記憶體的插槽,所以 K6-III 系統可以把主機板上的快取插槽當成 L3 快取用,在 Socket 7 之後主機板上的快取記憶體插槽就被取消了,接下來很長一段時間我們都不會看到 L3 快取這個名詞 (儘管時至今日幾乎所有 x86 處理器都是三層快取的架構了)。

之後在 1999 年 Pentium !!! Coppermine 把 L2 快取也整合到 CPU 核心裡面,從此 CPU 的 die shot 就都可以看見一大片很明顯的同質區域,通常那塊就是這個處理器的末級快取記憶體 (Last Level Cache, LLC) 的所在地,至於我們下次在個人電腦 x86 處理器上看見 L3 快取這名詞的時候,已經是 2003 年的事情了。

雖然 CPU 快取的階層設計有很多種,例如對 Core 架構來說 L2 快取是 LLC,大小通常有數 MB 不等且由所有運算核心共用,但後來 Nehalem 以降的 Intel x86 處理器架構卻都是三層結構,以超大的 L3 快取為 LLC,此時 L2 快取就不再由各核心共用了,而是每個核心只有專屬的 256 KB 快取,但階層設計的基本原則卻幾乎都是一樣的,其實與記憶體階層的概念很相似:L1 快取往往容量最小,但卻是速度最快的 CPU 快取,L2 快取通常容量比 L1 快取來得大,但速度就稍慢一些,L3 快取則會延續這樣的趨勢,容量變得更大但速度也變得更慢,但值得注意的是,末級快取記憶體還是比主記憶體 (也就是狹義上的記憶體) 快且小上許多

記憶體 Memory

這裡的記憶體所指的就是本章的主題-「狹義的記憶體」了,也就是大家所認識的,外觀是一條長條狀電路板,上面有一堆黑色晶片排列的東西,為了與其他記憶裝置區分所以通常也被稱為主記憶體 (Main Memory),一如前面說過的階層設計,記憶體的容量又比處理器快取來得大上許多 (時至今日記憶體單條就可以上看 32 GB,處理器快取了不起也就 50 MB 而已),但也慢了不少。

這裡談的記憶體最明顯的特色就是,它是「具揮發性」的,甚麼叫做具揮發性呢?就是斷電之後資料會不見的意思,與之相對的概念是 ROM 或 NVRAM,或是傳統硬碟、固態硬碟這類非揮發性的記憶體,一般而言在記憶體階層上記憶體這層指的是揮發性的記憶體,用於暫存執行中的資料與程式,儲存裝置這一階層指的則是非揮發性的記憶體,用於檔案的長期儲存 (關機之後東西可不能全部不見呀,所以當然要用非揮發性的)。

上圖中顯示的是用於電腦中主記憶體的「隨機存取記憶體」(Random Access Memory, RAM) 的發展譜系圖,其實還有一些旁支沒有被列進去,不過本系列我只打算討論跟電腦比較有關係的部分,因此就選擇了 SDRAM 與 RDRAM 兩大譜系 (其實後者在電腦上發展是失敗的,Intel Pentium 4 初期賣不好的一大原因其實就是 RDRAM)。

依照發展情況大致分類之後就會得到上面這樣的譜系圖,其中紅框部分就是目前絕大多數人電腦中使用的記憶體 (同步動態隨機存取記憶體 SDRAM),本篇接下來主要談的內容也是以這些為主,預計會分別介紹怎麼看記憶體的規格 (例如時序之類的)、SDRAM、DDR、DDR2、DDR3、DDR4 五代產品之間的發展歷程與主要強化內容等,至於藍框部分則是試圖挑戰 SDRAM 地位但目前看來在個人電腦市場是一敗塗地的 RDRAM,本章也會有一節稍微帶過,但主要是談為什麼 RDRAM 會失敗的原因與當年 Intel Pentium 4 的悲劇故事。

儲存裝置 Storage

記憶體的最下階層當然就是用來最終儲存資料的設備們了,包含光學儲存 (Optical Storage,例如 DVD、CD、藍光光碟都是)、傳統硬碟 (HDD,基於磁性紀錄)、固態硬碟 (SSD,非揮發式記憶體晶片),如果比較古典一點的則是磁片 (Floppy,基於磁性紀錄)、磁帶 (Tape,基於磁性紀錄)。

如同前面所說過的,這一階層與其他記憶體階層最大的不同就在於不具揮發性,也就是斷電之後這些裝置上儲存的資料不會消失或改變,因此可以做為資料長期保存的最終站,在四個階層當中是速度最慢的,但同時也是單位 GB 成本最低且容量最大的,例如當今記憶體 64 GB 就很大了,但硬碟隨便起跳就是幾 TB (1TB = 1000 GB),這部分之後也會有專章介紹。

記憶體階層綜合比較

暫存器 處理器快取 記憶體 儲存裝置
單位 GB 成本 趨近無限大 趨近無限大 每 GB 約 100~500 元台幣 每 GB 約 2 元台幣以下
存取速度 最高 極高
專一性 少部分是
揮發性 通常否
通常位置 運算核心內部 處理器晶片上 主機板上與處理器直連 主機板上與南橋連線
容量單位 bit KB/MB MB/GB MB/GB/TB
Exit mobile version