儲存級記憶體(storage-class memory)
幾十年來,電腦都活在兩個世界之間一道硬牆的兩側:又快又健忘的記憶體(DRAM,一位元組一位元組地存取,斷電就沒)以及又慢又永久的儲存(磁碟與 SSD,以大區塊存取,挺得過關機)。程式必須不斷地把資料在這道牆兩邊搬來搬去——把檔案載入記憶體、把記憶體存回檔案。儲存級記憶體就是這樣一個構想:一種活在這道鴻溝裡的單一技術,快得足以像記憶體般使用,卻又像儲存般持久,把這道牆溶解掉。
具體來說,儲存級記憶體是一種快到、且細到能讓 CPU 用普通的載入與儲存指令存取的非揮發性記憶體——可按位元組定址,像 DRAM——同時它沒電也能保住內容,像磁碟。它用新興的持久記憶體(相變、MRAM、ReRAM)或特製快閃打造,嵌進階層中 DRAM 與 SSD 之間:比 DRAM 慢、但更密更便宜,比起區塊儲存則快得多且可按位元組定址。一個程式可以把一個資料結構「放在記憶體裡」,而它在重開機後就單純地、完好無損地還在那裡——沒有存檔/載入這一步。
為何重要與誠實的現實:SCM 承諾要把記憶體/儲存的區別塌縮掉,這會重塑軟體的寫法(不必再把一切序列化成檔案)。這是個真正令人興奮的方向。但要老實說:真實的產品一直很掙扎。最著名的商用 SCM(Intel Optane 持久記憶體,建在 3D XPoint 上)已停產,而 SCM 比聽起來難——為當機一致的持久性寫程式很微妙,而它的性價比尚未明確勝過「大量 DRAM 加快速 SSD」這個更簡單的組合。SCM 是個強大的概念,它在實務上的勝利仍未定論。
想像一個資料庫把它的索引放在儲存級記憶體裡:它用普通的記憶體載入與儲存、以接近 DRAM 的速度讀取與更新項目,但在停電之後索引仍然完好——不必從磁碟慢慢重建。
SCM 的目標是像記憶體一樣可按位元組定址、又像儲存一樣持久——一個層級,沒有牆。
SCM 是個有前景的方向,不是已定的勝利:旗艦產品(Intel Optane)已停產,而在持久記憶體上寫出正確、當機一致的程式碼確實很難。把它當成一個演進中的構想,而不是保證的未來。