記憶體技術:DRAM、DDR 與新興記憶體

DRAM 記憶庫(bank)

想像一座巨大的圖書館被切成好幾間各自獨立的閱覽室,每間都有自己的館員和自己唯一的一張打開的書桌。要在某間室裡讀一本書,你得先從書架把它取到那間室的書桌上;書攤在桌上時,你可以瞬間翻到任何一頁。各室平行運作——A 館員可以去取一本新書,同時 B 館員還在從他的桌上讀。一個 DRAM 記憶庫(bank)就是 DRAM 晶片裡這樣一間獨立的閱覽室。

具體來說,一顆 DRAM 晶片被分成好幾個記憶庫(常見 8 到 32 個),每個記憶庫都是一個由列(row)與行(column)定址的二維單元格網。每個記憶庫剛好只有一個列緩衝區——它唯一那張「打開的書桌」。要存取資料,你得先啟動一列(activate),把那整列單元複製進記憶庫的列緩衝區(緩慢的列存取步驟);接著從那個緩衝區讀或寫特定的行(快速的行存取步驟)。關鍵是每個記憶庫都有自己的列緩衝區、可以處在不同狀態,所以好幾個記憶庫可以同時各開著一列、各自服務請求。

為何重要:記憶庫是記憶庫層級平行(bank-level parallelism)的來源,也是隱藏 DRAM 漫長延遲的主要手法。當某個記憶庫正忙著做緩慢的列啟動時,記憶體控制器可以對其他記憶庫發出請求,把它們的工作重疊起來,讓記憶體系統一直保持忙碌。誠實的限制就是每庫只有一個列緩衝區:對同一記憶庫不同列的兩個請求會衝突——必須先關掉開著的列、再啟動新的一列,付出整個列存取的代價。把存取散佈到各記憶庫,才能讓記憶體保持快速。

兩個請求打中「同一個」記憶庫的第 5 列和第 6 列:控制器必須啟動第 5 列、用它、關掉它(預充電),再啟動第 6 列——這是緩慢的列衝突。同樣兩個請求若打到「兩個不同」記憶庫,就能重疊、快得多就完成。

不同記憶庫可重疊;同庫不同列的請求只能串列進行並付出列代價。

記憶庫越多代表平行度越高,但前提是你的存取要散開到各庫。一個猛打單庫單列的工作負載得不到任何好處——控制器裡的位址交錯(interleaving)存在的目的,正是把存取灑到各記憶庫去。

又稱
bank記憶庫