儲存技術 (Storage Technologies)
Overview Table
| 主題 | 核心概念 | 關鍵數字/公式 | 書頁 |
|---|---|---|---|
| SRAM | 雙穩態 (bistable) 6 電晶體 cell,不需 refresh | 存取約 1×,成本約 1,000×,用於 cache | p.617-618 |
| DRAM | 電容儲存電荷,1 電晶體 + 1 電容,需 refresh | 存取約 10×,成本 1×,retention 10-100 ms | p.618 |
| Conventional DRAM | d 個 supercell(每個 w bits)排成 r×c 陣列;RAS/CAS 兩步定址 | d×w DRAM 存 dw bits,rc = d |
p.618-619 |
| Memory module | DIMM 一次傳 64-bit;8 顆 8M×8 DRAM 各出 1 byte 組成一個 word | 240-pin DIMM | p.620 |
| Enhanced DRAM | FPM / EDO / SDRAM / DDR / VRAM,皆優化列緩衝或時脈利用 | DDR prefetch:DDR=2、DDR2=4、DDR3=8 bits | p.621-622 |
| Nonvolatile (ROM) | PROM(1 次)、EPROM(~1,000 次)、EEPROM(~10^5 次)、Flash | firmware / BIOS 存於 ROM | p.622-623 |
| Bus transaction | CPU ↔ I/O bridge ↔ 主記憶體;read/write 各三步驟 | system bus + memory bus | p.623-625 |
| Disk geometry | platter → surface → track → sector;cylinder = 等距 track 集合 | sector 通常 512 bytes | p.625-627 |
| Disk capacity | 容量公式五因子連乘;multiple zone recording 提升密度 | 見下方公式 | p.627-628 |
| Disk access time | seek + rotational latency + transfer,前兩者主宰 | T_access ≈ 2 × T_avg seek 經驗法則 |
p.628-631 |
| Logical blocks | disk controller 將邏輯 block 對映 (surface, track, sector) | B 個 sector 大小的 blocks | p.631 |
| I/O bus + DMA | memory-mapped I/O 下指令 → DMA 直傳 → interrupt 通知 | USB 3.0 = 625 MB/s | p.632-635 |
| SSD | Flash + FTL;讀快寫慢;寫入需整個 block 先 erase | block 約 10^5 次寫入後磨損 | p.636-638 |
| Trends | 密度/成本進步遠快於存取時間;CPU-記憶體差距擴大 | DRAM $/MB 降 44,000×,存取僅降 10× | p.638-640 |
6.1.1 隨機存取記憶體 (RAM)
SRAM vs DRAM (p.617-618)
RAM 分兩種:SRAM (static RAM) 用於 CPU 晶片內外的 cache;DRAM (dynamic RAM) 用於主記憶體 (main memory) 與繪圖系統的 frame buffer。典型桌機 SRAM 只有數十 MB,DRAM 則有數百到數千 MB。
- SRAM cell:雙穩態 (bistable) 6 電晶體電路,如倒立單擺 (inverted pendulum)——只有左倒、右倒兩個穩定態,其餘狀態(如垂直平衡)為 metastable,受最小擾動即倒向一側。只要供電,值可無限期保持,受電氣雜訊擾動後仍會回到穩定值。
- DRAM cell:1 個電容(約 30 fF =
30 × 10^-15F)+ 1 個存取電晶體,密度高但對干擾極敏感——電壓一旦被擾動就不會恢復,連光線都會改變電容電壓(數位相機感光元件本質上就是 DRAM cell 陣列)。漏電流使電荷在 10-100 ms 內流失,記憶體系統必須週期性 refresh(讀出再寫回)。 - 部分系統加上 error-correcting code (ECC):如 64-bit word 以 72 bits 編碼,可偵測並修正字組內單一位元錯誤。
| 特性 | SRAM | DRAM |
|---|---|---|
| 每 bit 電晶體數 | 6 | 1 |
| 相對存取時間 | 1× | 10× |
| 持久 (persistent)? | 是(供電期間) | 否(需 refresh) |
| 對干擾敏感? | 否 | 是 |
| 相對成本 | 1,000× | 1× |
| 用途 | Cache memory | Main memory、frame buffer |
Conventional DRAM 的組織與 RAS/CAS 讀取 (p.618-620)
DRAM 晶片的 cell 被分割成 d 個 supercell(此為本書為避免「cell/word」歧義而採用的術語,p.619 Aside),每個含 w 個 cell(bit);一顆 d × w DRAM 共儲存 dw bits。supercell 排成 r 列 c 行的矩形陣列(rc = d),每個 supercell 位址為 (i, j)。資訊經 pin(每 pin 傳 1 bit)進出:例如 16×8 晶片有 8 支 data pin 與 2 支 addr pin。
memory controller 讀取 supercell (i, j) 的流程——RAS (row access strobe) 後接 CAS (column access strobe),兩者共用同一組位址 pin:
步驟 1:RAS = i(選列) 步驟 2:CAS = j(選行)
┌────────────┐ addr: i ┌──────────┐ addr: j ┌──────────┐
│ Memory │ ─────────► │ DRAM │ ─────────► │ DRAM │
│ controller │ │ 整列 i │ │ 從 row │
│ │ │ 複製到 │ data │ buffer │
│ │ │ internal │ ◄───────── │ 取 (i,j) │
└────────────┘ │row buffer│ w bits │ 送回 │
└──────────┘ └──────────┘
- 採二維陣列而非線性陣列的理由:減少位址 pin 數(16 個 supercell 線性定址需 4 pins,4×4 陣列只需 2 pins)。
- 代價:位址必須分兩步傳送(先 RAS 後 CAS),增加存取時間。
r × c 使 max(br, bc) 最小(br、bc 為列/行定址所需位元數)——取最接近正方形的 2 的冪次分解;d 為 2 的奇數次冪時 br 與 bc 差 1。Memory Modules (p.620-621)
DRAM 晶片封裝在記憶體模組 (memory module) 上,插入主機板擴充槽。Core i7 使用 240-pin DIMM (dual inline memory module),以 64-bit 為單位與 memory controller 傳輸。
- 範例:64 MB 模組由 8 顆 8M × 8 DRAM(編號 0-7)組成;主記憶體位址
A的 64-bit word 由 8 顆 DRAM 中相同 supercell 位址(i, j)的 8 個 supercell 組成,DRAM 0 存最低位 byte(bits 0-7),DRAM 1 存次一 byte,依此類推。 - 讀取流程:controller 把
A轉成(i, j)→ 模組廣播(i, j)給所有 DRAM → 每顆輸出其 supercell 的 8 bits → 模組電路組合成 64-bit word 回傳 controller。 - 多個模組聚合成主記憶體:controller 收到位址
A時,先選出包含A的模組k,再把(i, j)送給模組k。
Enhanced DRAMs (p.621-622)
各種增強型 DRAM 皆基於 conventional DRAM cell,優化基本 cell 的存取速度:
| 類型 | 改進機制 |
|---|---|
| FPM DRAM (fast page mode) | conventional DRAM 把整列複製進 row buffer 卻只用一個就丟棄;FPM 讓同一列的連續存取直接由 row buffer 供應:讀同列 4 個 supercell 只需 1 次 RAS/CAS + 3 次 CAS(而非 4 組 RAS/CAS) |
| EDO DRAM (extended data out) | FPM 的加強版,允許各 CAS 訊號時間間隔更近 |
| SDRAM (synchronous) | conventional/FPM/EDO 皆為非同步(用明確控制訊號);SDRAM 以驅動 memory controller 的外部時脈上升緣取代多數控制訊號,輸出 supercell 速率更快 |
| DDR SDRAM (double data-rate) | 使用時脈兩個邊緣作控制訊號使速度加倍;依 prefetch buffer 大小分級:DDR = 2 bits、DDR2 = 4 bits、DDR3 = 8 bits(Core i7 只支援 DDR3) |
| VRAM (video RAM) | 用於 frame buffer,精神類似 FPM;差異:(1) 輸出為整個內部 buffer 依序移出 (2) 允許同時讀寫(邊以 frame buffer 像素畫螢幕、邊寫入下一幀) |
歷史脈絡 (p.622 Aside):FPM(1995 前主流)→ EDO(1996-1999)→ SDRAM/DDR(2002 起多數 PC)→ DDR3(2010 起伺服器與桌機主流)。
Nonvolatile Memory (p.622-623)
DRAM/SRAM 為 volatile(斷電失去資訊);nonvolatile memory 斷電後仍保存資訊,因歷史因素統稱 ROM (read-only memory)——即使有些其實可寫。分類依據:可重寫(reprogram)次數與重寫機制。
- PROM (programmable ROM):只能燒錄一次(每 cell 有保險絲,以高電流燒斷)。
- EPROM (erasable programmable ROM):有石英透明窗,以紫外線照射清為全 0,再用特殊裝置寫入 1;可清除重寫約 1,000 次。
- EEPROM (electrically erasable PROM):不需獨立燒錄裝置,可在電路板上就地重寫,約 10^5 次後磨損。
- Flash memory:基於 EEPROM 的重要儲存技術,遍布相機、手機、音樂播放器與各級電腦;SSD 即以 flash 為基礎(見 6.1.3)。
- Firmware:存於 ROM 裝置的程式。系統開機時執行 ROM 中的 firmware,例如 PC 的 BIOS(basic input/output system)提供基本 I/O 函式;顯示卡、磁碟控制器也靠 firmware 轉譯來自 CPU 的 I/O 請求。
Accessing Main Memory:Bus Transactions (p.623-625)
CPU 與 DRAM 主記憶體間的資料經共享電氣通道 bus 流動,每次傳輸由一系列步驟構成,稱 bus transaction:read transaction(主記憶體→CPU)、write transaction(CPU→主記憶體)。bus 是一組平行導線,攜帶位址、資料、控制訊號(依設計,位址與資料可共用或分開導線;控制線負責同步並識別交易類型)。
CPU chip
┌───────────────────────┐
│ Register file │
│ │ ALU │
│ ┌─────┴───────┐ │ system bus ┌────────┐ memory bus ┌────────┐
│ │Bus interface│◄─────┼──────────────►│ I/O │◄─────────────►│ Main │
│ └─────────────┘ │ │ bridge │ │ memory │
└───────────────────────┘ └────────┘ └────────┘
(含 memory controller)
I/O bridge(chipset,含 memory controller)負責轉換 system bus 與 memory bus 的電氣訊號,也把兩者連上 I/O bus(見 6.1.2)。
Read transaction(movq A,%rax,把位址 A 的內容載入 %rax)三步驟:
- CPU 的 bus interface 電路把位址
A放上 system bus;I/O bridge 轉傳至 memory bus。 - 主記憶體感測 memory bus 上的位址訊號,從 DRAM 取出資料字組
x寫上 memory bus;I/O bridge 轉為 system bus 訊號傳回。 - CPU 從 system bus 感測並讀取資料,複製進
%rax。
Write transaction(movq %rax,A)三步驟:
- CPU 把位址
A放上 system bus;記憶體從 memory bus 讀取位址後等待資料到達。 - CPU 把
%rax中的資料y複製到 system bus。 - 主記憶體從 memory bus 讀取
y,存入 DRAM 位址A。
6.1.2 磁碟儲存 (Disk Storage)
磁碟容量達數百至數千 GB(RAM 為數百至數千 MB),但讀取需毫秒級——比 DRAM 慢約 10 萬倍、比 SRAM 慢約 100 萬倍 (p.625)。
Disk Geometry (p.625-627)
單一 platter 俯視 多 platter 側視(cylinder k)
┌───── track(同心圓) Surface 0 ──┐
╭──┴───╮ Surface 1 ──┴─ Platter 0
╱ ╭────╮ ╲ ← sector(track 上 Surface 2 ──┐
│ │spindle │ │ 的等長分段, Surface 3 ──┴─ Platter 1 cylinder k =
│ │ (軸) │ │ 典型 512 bytes) Surface 4 ──┐ 所有 surface 上
╲ ╰────╯ ╱ ← gap(存格式化位元, Surface 5 ──┴─ Platter 2 等距的 track k
╰──────╯ 分隔並識別 sector) │ 的集合
spindle
- platter(碟片):雙面(surface)塗磁性記錄材料;中央 spindle 以固定轉速旋轉,典型 5,400-15,000 RPM;一或多片 platter 密封於容器中,整體稱 disk drive,亦稱 rotating disk 以區別無運動零件的 SSD。
- track(磁軌):surface 上的同心圓環;sector(磁區):track 的分段,各存等量資料位元(典型 512 bytes);sector 間以 gap 分隔——gap 不存資料,存識別 sector 的格式化位元。
- cylinder(柱面):所有 surface 上與 spindle 中心等距的 track 集合(3 platters、6 surfaces 時,cylinder k = 6 個 track k 的集合)。
Disk Capacity (p.627-628)
最大容量由三項技術因素決定:recording density(bits/in,1 英寸磁軌可塞入的位元數)、track density(tracks/in,1 英寸半徑可塞入的磁軌數)、areal density(bits/in²)= recording density × track density,約每兩年翻倍。
- 早期磁碟每 track 的 sector 數固定(由最內圈 track 決定),外圈 sector 間距被拉大而浪費空間。
- 現代高容量磁碟採 multiple zone recording:cylinder 集合分割成不相交的 recording zone(各 zone 為連續的 cylinder);同一 zone 內每個 track 的 sector 數相同,由該 zone 最內圈 track 可容納的 sector 數決定。
範例:5 platters、512 bytes/sector、20,000 tracks/surface、平均 300 sectors/track:
512 × 300 × 20,000 × 2 × 5 = 30,720,000,000 bytes = 30.72 GB(製造商以 1 GB = 10^9 bytes、1 TB = 10^12 bytes 標示)。
K=2^10, M=2^20, G=2^30, T=2^40;磁碟、網路容量與傳輸速率慣用 K=10^3, M=10^6, G=10^9, T=10^12。粗估時差異不大:(2^30 − 10^9)/10^9 ≈ 7%、(2^40 − 10^12)/10^12 ≈ 10%。另注意 formatted capacity 小於最大容量:格式化需在 gap 填入 sector 識別資訊、剔除瑕疵 cylinder、並在各 zone 保留備用 (spare) cylinder (p.632 Aside)。Disk Operation 與存取時間 (p.628-631)
read/write head 位於 actuator arm 末端;arm 沿半徑方向移動即 seek,可將 head 定位到任意 track。head 以約 0.1 micron 高度、約 80 km/h 速度「飛」在盤面氣墊上(比喻:把摩天大樓橫放、離地 2.5 cm 繞地球飛行,8 秒一圈)——撞到灰塵即 head crash,故磁碟一律密封。多 platter 磁碟每個 surface 一個 head,所有 head 垂直對齊、同步移動,任一時刻皆位於同一 cylinder 上。
磁碟以 sector 為單位讀寫,存取一個 sector 的時間有三個主要成分:
| 成分 | 定義 | 公式 / 典型值 |
|---|---|---|
| Seek time | 移動 arm 使 head 對準目標 track | T_avg seek 約 3-9 ms(隨機 seek 平均);T_max seek 可達 20 ms |
| Rotational latency | 等待目標 sector 第一個 bit 轉到 head 下方(最壞情況剛好錯過,等一整圈) | T_max rotation = (1/RPM) × (60 secs/1 min);T_avg rotation = (1/2) × T_max rotation |
| Transfer time | 讀寫 sector 內容 | T_avg transfer = (1/RPM) × (1/(avg # sectors/track)) × (60 secs/1 min) |
範例(7,200 RPM、T_avg seek = 9 ms、400 sectors/track):
T_avg rotation = 1/2 × (60/7,200) × 1,000 ≈ 4 msT_avg transfer = (60/7,200) × (1/400) × 1,000 ≈ 0.02 msT_access = 9 + 4 + 0.02 = 13.02 ms
- 存取時間由 seek time 與 rotational latency 主宰;存取 sector 的第一個 byte 最貴,其餘 bytes 幾乎免費。
- seek time 與 rotational latency 大致相當,故
2 × T_avg seek是估算磁碟存取時間的簡便經驗法則。 - 量級對比:64-bit word 存取 SRAM 約 4 ns、DRAM 約 60 ns;讀 512-byte block:SRAM ≈ 256 ns、DRAM ≈ 4,000 ns、磁碟 ≈ 10 ms——比 SRAM 慢約 40,000 倍、比 DRAM 慢約 2,500 倍。
Logical Disk Blocks (p.631)
現代磁碟幾何複雜(多 surface、各 surface 有多個 recording zone),對作業系統呈現簡化視圖:B 個 sector 大小的 logical blocks,編號 0, 1, ..., B−1。磁碟封裝內的小型硬體/韌體裝置 disk controller 維護 logical block number 與實體 sector 間的對映:
- OS 要讀某 logical block 時對 controller 下命令 → controller 韌體快速查表把 logical block number 轉成
(surface, track, sector)三元組 → controller 硬體據此移動 head 到對應 cylinder → 等待 sector 通過 head → 把感測到的位元收進 controller 上的小記憶體緩衝區 → 複製進主記憶體。
T_avg seek + T_avg rotation + n 個 block 的連續 transfer;隨機對映則每個 block 都要付一次 seek + rotation,總時間可差數千倍。這是 06-Memory-Hierarchy/02-Locality-and-Memory-Hierarchy 中 spatial locality 如此重要的硬體根源之一。Connecting I/O Devices (p.632-633)
I/O 裝置(顯示卡、螢幕、滑鼠、鍵盤、磁碟)經 I/O bus 連接 CPU 與主記憶體。與 CPU 專屬的 system bus / memory bus 不同,I/O bus 設計為與底層 CPU 無關;雖然較慢,但能容納多樣的第三方裝置:
CPU ── system bus ── I/O bridge ── memory bus ── Main memory
│
═══════════════ I/O bus ═══════════════════════════════
│ │ │ │
USB controller Graphics Host bus expansion slots
(滑鼠/鍵盤/ adapter adapter (其他裝置,如
SSD 等) (畫螢幕像素) (SCSI/SATA) network adapter)
│
Disk controller ── Disk drive
- USB controller:USB bus 上各式週邊的通道;USB 3.0 最大頻寬 625 MB/s、USB 3.1 為 1,250 MB/s。
- Graphics card (adapter):含硬體與軟體邏輯,代 CPU 在螢幕上繪製像素。
- Host bus adapter:依特定 host bus interface 協定連接一或多顆磁碟;兩大主流介面為 SCSI 與 SATA——SCSI 較快較貴且一個 adapter 可接多顆磁碟,SATA adapter 只支援一顆。
- 現代系統以 PCIe(高速串列、點對點鏈路 + 交換器,最大吞吐 16 GB/s)取代共享式 PCI bus(533 MB/s);除了 I/O 效能外,差異對應用程式不可見 (p.634 Aside)。
Accessing Disks:Memory-Mapped I/O、DMA、Interrupt (p.633-635)
CPU 以 memory-mapped I/O 技術對 I/O 裝置下指令:位址空間中保留一塊位址與 I/O 裝置通訊,每個這種位址稱為 I/O port;裝置接上 bus 時被對映到一或多個 port。
(1) CPU 發起讀取:對 disk controller 的 port(如 0xa0)執行三個 store
① 命令字(初始化讀取 + 參數,如完成後是否 interrupt)
② 要讀的 logical block number
③ 目的主記憶體位址
CPU ──store×3──► Disk controller (CPU 隨即去做其他工作)
(2) DMA transfer:controller 把 logical block 轉成 sector 位址、讀出內容
Disk ──► Disk controller ──(完全不經 CPU)──► Main memory
(3) 完成通知:
Disk controller ──interrupt(觸發 CPU 外部接腳)──► CPU
CPU 停下當前工作,跳到 OS 例程記錄 I/O 完成,再返回被中斷處
- 磁碟讀取的 16 ms 內,1 GHz(1 ns cycle)處理器可執行約 1,600 萬條指令;空等極度浪費,故 CPU 發出請求後通常繼續執行其他工作。
- 裝置自行執行 bus read/write transaction、無 CPU 介入的機制稱 DMA (direct memory access);該資料搬移稱 DMA transfer。
- 完成後以 interrupt 通知 CPU(interrupt 詳見 08-Exceptional-Control-Flow/01-Exceptions)。
商用磁碟實例(Seagate Barracuda 7400,p.636 Aside):formatted capacity 3 TB、3 platters / 6 surfaces、7,200 RPM、平均 seek 8.5 ms、平均 rotational latency 4.16 ms、track-to-track seek 1.0 ms、平均傳輸率 156 MB/s、logical block 512 bytes、共 5,860,533,168 個 logical blocks。
6.1.3 固態硬碟 (Solid State Disks)
SSD 是基於 flash memory(6.1.1)的儲存技術,插入 I/O bus 上的標準磁碟插槽(典型為 USB 或 SATA),行為與一般磁碟相同——處理 CPU 對 logical disk block 的讀寫請求。SSD 封裝 = 一或多顆 flash memory 晶片(取代旋轉磁碟的機械裝置)+ flash translation layer (FTL)(硬體/韌體裝置,角色等同 disk controller,把 logical block 請求轉譯為底層實體裝置的存取)。
I/O bus(USB / SATA)
│ logical disk block 讀寫請求
┌────────────┴──────────────┐
│ Flash translation layer │ ← 位址對映 / wear leveling / 寫入攤銷
├───────────────────────────┤
│ Flash memory │
│ ┌Block 0───────────┐ ┌Block B-1─────────┐
│ │Page 0│Page 1│…│Page P-1│…│Page 0│…│Page P-1│
│ └──────────────────┘ └──────────────────┘
└───────────────────────────┘
- 結構:flash memory =
B個 block 的序列,每個 block 含P個 page;page 典型 512 bytes-4 KB,一個 block 含 32-128 pages(block 總大小 16 KB-512 KB)。 - 資料以 page 為單位讀寫;但一個 page 必須在其所屬整個 block 被 erase 之後才能寫入(erase 通常指整個 block 的位元全設為 1);block 一旦 erase,其中每個 page 可各寫一次、不需再 erase。
- 一個 block 約 100,000 次重複寫入後磨損 (wear out),即不能再使用。
隨機寫入比讀取慢的兩個原因 (p.637):
- erase block 相當慢——約 1 ms,比存取一個 page 高一個數量級以上。
- 若寫入操作要修改已含資料的 page
p(即非全 1),則同 block 中所有含有用資料的 page 必須先複製到一個新的(已 erase)block,才能寫入p。FTL 以複雜邏輯攤銷 erase 成本、盡量減少內部複製,但隨機寫入不太可能追上讀取效能。
| 性能項目(Intel SSD 730,4 KB blocks,p.637) | 讀 (Reads) | 寫 (Writes) |
|---|---|---|
| 循序 throughput | 550 MB/s | 470 MB/s |
| 隨機 throughput (IOPS) | 89,000 IOPS | 74,000 IOPS |
| 隨機 throughput (MB/s) | 365 MB/s | 303 MB/s |
| 平均循序存取時間 | 50 μs | 60 μs |
優缺點比較:
| SSD | Rotating disk | |
|---|---|---|
| 隨機存取時間 | 快得多(半導體、無移動零件) | 慢(seek + rotation) |
| 功耗 / 耐用度 | 較低 / 較耐震 (rugged) | 較高 / 怕震、head crash |
| 磨損 | flash block 寫入次數有限;FTL 的 wear-leveling 把 erase 平均分散到所有 block,實務上需多年才磨損 | 機械磨損 |
| 單位成本與容量 | 每 byte 約貴 30 倍、容量較小(差距隨普及快速縮小) | 便宜、容量大 |
SSD 已完全取代可攜式音樂裝置中的旋轉磁碟、在筆電中流行,並開始進入桌機與伺服器 (p.637)。
壽命 = 保證總寫入量 ÷ 寫入速率。如 Intel 保證 128 PB(128 × 10^15 bytes)寫入:以 470 MB/s 連續循序寫 ≈ 8.6 年;以 303 MB/s 隨機寫 ≈ 13.4 年;以 20 GB/day 平均寫 ≈ 17,500 年——磨損在實務上幾乎不是問題。6.1.4 儲存技術趨勢 (p.638-640)
- 不同儲存技術有不同的價格/性能取捨:SRAM 略快於 DRAM,DRAM 遠快於 disk;快的儲存永遠比慢的貴。SSD 介於 DRAM 與 rotating disk 之間。
- 價格與性能以劇烈不同的速率演進(1985-2015,Figure 6.15):
| 技術 | 成本改善 | 存取時間改善 |
|---|---|---|
| SRAM | $/MB 降約 116× | 約 115×(大致同步) |
| DRAM | $/MB 降 44,000×(四個數量級以上) | 僅 10× |
| Rotating disk | $/GB 降 3,333,333×(六個數量級以上) | seek time 僅 25× |
→ 基本事實:提高密度(降低成本)遠比降低存取時間容易。
- DRAM 與 disk 性能落後 CPU 且差距擴大:1985-2010 CPU cycle time 改善 500×;effective cycle time(單一 CPU 的 cycle time ÷ 核心數)改善 2,000×(至 2015 約 2,075×)。2003 年左右 CPU 性能曲線分裂,反映多核心處理器的引入——之後單核 cycle time 一度微升再緩降。SRAM 性能雖落後但大致跟得上;CPU 與 DRAM/disk 的差距在多核心出現前是延遲 (latency) 問題(存取時間降得比 CPU cycle time 慢),之後日益成為吞吐量 (throughput) 問題(多核心平行對 DRAM 與 disk 發出請求)。
時間 (ns, 半對數尺度;Figure 6.16 示意)
10^7 ┤●────●────●────●── Disk seek time(降得很慢)
10^5 ┤ ●─── SSD access time
10^2 ┤●───●────●────●── DRAM access time(降得慢)
10^1 ┤ ●───●───●────●─ SRAM access time
10^0 ┤ ●──●──●╮
10^-1┤ ╰●───●─ CPU / effective CPU cycle time(降得快;2003 多核分裂)
└──┬────┬────┬────┬──
1985 1995 2005 2015 → gap 持續擴大
現代電腦大量使用 SRAM cache 來彌合處理器-記憶體差距;此法之所以有效,靠的是應用程式的基本性質 locality——見 06-Memory-Hierarchy/02-Locality-and-Memory-Hierarchy。
Exam/Test Patterns
| 情境 / 關鍵字 | 答案 |
|---|---|
| SRAM vs DRAM:每 bit 電晶體/速度/成本/用途 | SRAM:6T、1×、1,000×、cache;DRAM:1T+電容、10×、1×、main memory 與 frame buffer |
| 為何 DRAM 需要 refresh | 漏電流使電容 10-100 ms 內失去電荷;須週期性讀出再寫回;可加 ECC(64-bit 以 72 bits 編碼)修正單一位元錯誤 |
| DRAM 為何組成二維陣列 | 減少 addr pin 數;代價是位址分 RAS/CAS 兩步傳送,增加存取時間 |
| 給定 d 個 supercell 求最佳 r×c | 使 max(br, bc) 最小 → 取最接近正方形的 2 的冪次分解 |
| 讀 supercell (i,j) 的順序 | 先送 RAS = i(整列複製到 internal row buffer)再送 CAS = j(從 row buffer 取出該 supercell 的 w bits) |
| FPM DRAM 讀同列 4 個 supercell | 1 次 RAS/CAS + 3 次 CAS(conventional 需 4 次 RAS/CAS) |
| DDR / DDR2 / DDR3 差異 | prefetch buffer 大小:2 / 4 / 8 bits;皆用時脈雙邊緣傳輸 |
| PROM / EPROM / EEPROM 可重寫次數 | 1 次 / 約 1,000 次(紫外線清除)/ 約 10^5 次(電氣、就地重寫) |
movq A,%rax 在 bus 上發生什麼 |
read transaction 三步:CPU 放位址 → 記憶體取出資料放上 bus → CPU 讀入暫存器 |
| 磁碟容量計算 | 套五因子公式;注意 surfaces = 2 × platters、cylinders = tracks/surface;disk 用 G = 10^9 |
| 給 RPM、T_avg seek、sectors/track 求存取時間 | T_avg rotation = 0.5 × (60/RPM) × 1000 ms;T_avg transfer = T_max rotation ÷ (sectors/track);三者相加 |
| 磁碟存取時間的快速估計 | ≈ 2 × T_avg seek(seek 與 rotation 約略相等;transfer 相對可忽略) |
| 循序讀檔 vs 隨機讀檔時間 | 循序:1 次 (seek + rotation) + 連續 transfer;隨機:每個 block 各付一次 (seek + rotation) |
| logical block → 實體位置 | disk controller 韌體查表轉成 (surface, track, sector) 三元組 |
| CPU 讀磁碟三階段 | memory-mapped I/O 對 I/O port 下命令(命令字、block number、目的位址)→ disk controller DMA transfer 直入主記憶體 → interrupt 通知 CPU |
| SSD 讀寫單位與 erase 單位 | 讀寫以 page 為單位;erase 以 block 為單位;page 須待整個 block erase 後才能寫 |
| SSD 隨機寫入為何慢 | (1) erase block 約 1 ms,比 page 存取慢一個數量級以上;(2) 寫既有資料的 page 前,同 block 有用 pages 須先複製到新 block |
| SSD 磨損對策與壽命估算 | FTL 的 wear-leveling 平均分散 erase;壽命 = 保證寫入總量 ÷ 寫入速率 |
| 儲存技術長期趨勢 | 密度/成本改善遠快於存取時間;CPU-DRAM/disk gap 擴大;多核後由 latency 轉為 throughput 問題 |
| 為何 cache 能彌合 CPU-memory gap | SRAM 快 + 程式具 locality(下一節主題) |
Related Notes
- 06-Memory-Hierarchy/02-Locality-and-Memory-Hierarchy — locality 原理與記憶體階層,承接本節的 CPU-記憶體差距問題
- 06-Memory-Hierarchy/03-Cache-Memories — SRAM cache 的組織與運作細節
- 06-Memory-Hierarchy/04-Cache-Friendly-Code-and-Memory-Mountain — 撰寫善用儲存階層特性的程式
- 01-Computer-Systems-Tour/02-Hardware-Organization-and-Program-Execution — bus、I/O 裝置與系統硬體組織的全貌
- 08-Exceptional-Control-Flow/01-Exceptions — 磁碟完成 DMA 後的 interrupt 處理機制
- 05-Program-Optimization/04-Limiting-Factors-and-Memory-Performance — 記憶體性能對程式優化的限制