記憶體單元
半導體記憶體的基本單位是記憶體單元(memory cell),共同性質:(1) 呈現兩種穩定狀態,表示 0 與 1;(2) 可被寫入以設定狀態;(3) 可被讀取以感測狀態。單元有三個功能端子:選擇(select)、控制(讀/寫)、資料/感測。
DRAM 與 SRAM
| DRAM(動態) | SRAM(靜態) | |
|---|---|---|
| 儲存機制 | 電容上的電荷 | 正反器(flip-flop)邏輯 |
| 單元電晶體數 | 1T1C(1 電晶體 + 1 電容) | 6T |
| 重新整理 | 需要(電荷會漏失,約每 64 ms) | 不需要 |
| 密度 | 高(單元小) | 低 |
| 每位元成本 | 低 | 高 |
| 速度 | 較慢 | 快 |
| 典型用途 | 主記憶體 | 快取記憶體、晶片內 SRAM |
DRAM 的「動態」指電荷會漏失、需週期性重新整理(refresh);即使電源持續供應,不整理資料就會消失。兩者皆為揮發性記憶體。快取用 SRAM、主記憶體用 DRAM,正是第 4 章記憶體階層「速度—成本」權衡的直接體現。
ROM 家族與快閃記憶體
ROM:製造時寫入,不可更改;適合大量出貨的固定微碼/查表。
PROM:出廠後可用電氣方式寫入一次。
EPROM:紫外線照射整顆晶片抹除後可重寫;讀取快,但抹除麻煩。
EEPROM:可位元組層級電氣抹寫,寫入慢於讀取。
快閃記憶體(Flash):以區塊為單位電氣抹除,密度高、成本低;是今日 SSD、記憶卡、韌體儲存的基礎。NAND flash 循序吞吐高,NOR flash 支援隨機讀取(可就地執行程式碼,常見於微控制器)。
晶片組織與模組擴充
記憶體晶片內部是單元的二維陣列。以 16 Mb DRAM(4M \(\times\) 4)為例:2048\(\times\)2048\(\times\)4 的陣列,11 條位址線分時多工傳送列位址與行位址,由 \(\overline{RAS}\)(列位址選通)與 \(\overline{CAS}\)(行位址選通)訊號鎖存。位址多工使腳位減半,且每一代容量可以四倍成長。
重新整理以列為單位:重新整理計數器依序選列,讀出即回寫。典型晶片另含資料緩衝、時序與控制邏輯。
模組組織:若需要 1M\(\times\)8 的記憶體而晶片為 256K\(\times\)1,則以 8 顆晶片並聯供應 8 位元資料、4 組(rank)提供 4 倍深度,高位位址經解碼器選組。現代 DIMM 模組原理相同。
錯誤更正
錯誤類型與基本架構
半導體記憶體會發生硬性失效(單元永久損壞)與軟性錯誤(電源雜訊、宇宙射線 \(\alpha\) 粒子造成的隨機位元翻轉)。防禦手段是錯誤更正碼(ECC):
寫入時,對 \(M\) 位元資料計算 \(K\) 位元檢查碼,一併存入(共 \(M+K\) 位元);讀出時重新計算並比較,產生症狀字(syndrome):全 0 表示無錯;非 0 則指出錯誤位置,將該位元反轉即可更正。
漢明碼(單錯更正 SEC)
檢查位元數 \(K\) 須滿足 \(2^K \ge M + K + 1\)。例如 \(M=8\) 時 \(K=4\)(SEC);再加一個總同位位元可達 SEC-DED(單錯更正、雙錯偵測),是伺服器記憶體的標準配置。
把檢查位元放在位置 1、2、4、8(2 的冪次),資料位元放其餘位置。每個檢查位元是「位置編號中含該冪次的所有資料位元」的偶同位。讀出時重算四個檢查位元,四位症狀字直接就是出錯位元的位置編號。例如症狀 \(0110_2 = 6\):第 6 個位元錯,反轉即恢復。
| 資料位元數 | SEC 檢查位元 | SEC-DED 檢查位元 | SEC-DED 額外開銷 |
|---|---|---|---|
| 8 | 4 | 5 | 62.5% |
| 16 | 5 | 6 | 37.5% |
| 32 | 6 | 7 | 21.9% |
| 64 | 7 | 8 | 12.5% |
資料寬度愈大,ECC 相對開銷愈小——這是 ECC DIMM 以 72 位元存 64 位元資料(+8 檢查位元)的原因。
先進 DRAM 組織
同步 DRAM(SDRAM)
傳統(非同步)DRAM 由 \(\overline{RAS}\)/\(\overline{CAS}\) 交握控制,處理器必須等待。SDRAM 改與系統時脈同步:控制器發出命令後可以去做別的事,固定延遲(CAS latency)後資料出現;內部多個 bank 可交錯操作;burst 模式下,给一個位址即可連續輸出多筆資料,完美搭配快取行填充。
DDR 世代
DDR SDRAM 在時脈的上升與下降緣各傳一筆資料,頻寬倍增。其後每一代以更高的預取深度與 I/O 頻率延續:
| 世代 | 預取 | 典型資料速率 | 電壓 |
|---|---|---|---|
| DDR | 2n | 200–400 MT/s | 2.5 V |
| DDR2 | 4n | 400–1066 MT/s | 1.8 V |
| DDR3 | 8n | 800–2133 MT/s | 1.5 V |
| DDR4 | 8n(bank group) | 1600–3200 MT/s | 1.2 V |
| DDR5 | 16n,雙 32 位元子通道 | 4800–8800+ MT/s | 1.1 V |
書中提及的 RDRAM(Rambus)曾與 DDR 競爭,最終市場由開放標準的 DDR 勝出;而 HBM(高頻寬記憶體,3D 堆疊、極寬介面)則接續了「以組織創新換頻寬」的路線,成為 GPU/AI 加速器的標配。
無論 DRAM 介面如何演進,核心陣列的存取延遲改善極慢(數十年僅約 2 倍),進步主要在頻寬。這正是第 4 章快取階層、以及第 12 章管線容忍延遲技術存在的根本理由。
本章重點回顧
DRAM:1T1C、高密度、需重新整理,作主記憶體;SRAM:6T、快、貴,作快取。
ROM/PROM/EPROM/EEPROM/Flash 依「可否重寫、抹除單位」漸進;Flash 是現代非揮發儲存核心。
晶片以二維陣列組織,位址分時多工(RAS/CAS);模組以多晶片擴充寬度與深度。
漢明碼:\(2^K \ge M+K+1\);症狀字直接指出錯誤位置;SEC-DED 為伺服器標準。
SDRAM/DDR 以同步介面、多 bank、burst 與雙緣傳輸提升頻寬;延遲改善有限。
複習問題
DRAM 為何需要重新整理?SRAM 為何不需要?
為什麼快取用 SRAM、主記憶體用 DRAM?
EPROM、EEPROM、Flash 的抹寫方式有何不同?
32 位元資料的 SEC 需要幾個檢查位元?SEC-DED 呢?
依漢明碼規則,若讀出時症狀字為 \(1010_2\),代表什麼?
SDRAM 的 burst 模式為何與快取行填充「天作之合」?
DDR 如何在不提高核心時脈的情況下倍增頻寬?
9 W. Stallings, Computer Organization and Architecture, 6th ed., Chapter 5. JEDEC, DDR5 SDRAM Standard, JESD79-5. https://www.jedec.org B. Jacob et al., Memory Systems: Cache, DRAM, Disk, Morgan Kaufmann, 2007.