前面幾篇,我們主要在講 DRAM。DRAM 是運行記憶體。電腦開機後,程序和資料會被載入到 DRAM 裡,CPU、GPU 再從裡面快速讀取。它速度快,適合程式執行,但有一個很明顯的特點:斷電後資料會消失。
那另一個問題就來了。手機關機以後,照片為什麼還在?電腦斷電以後,SSD 裡的檔案為什麼不會丟?U 盤拔下來放幾個月,再插回電腦,裡面的資料為什麼還能讀出來?這背後依賴的,就是另一類非常重要的儲存晶片:NAND Flash。
如果說 DRAM 是執行階段的工作台,那麼 NAND Flash 就更像長期倉庫。DRAM 負責讓程序跑起來,NAND 負責讓資料留下來。
這篇我們就從最基礎的角度講清楚:NAND Flash 到底怎麼存資料?為什麼它斷電後還能保存資料?為什麼 SSD、U 盤、手機機身儲存都離不開它?
一、NAND Flash 最大的特點:斷電後資料還在
理解 NAND Flash,第一件事就是抓住它和 DRAM 的根本區別。
DRAM 是易失性儲存。它靠電容裡的電荷狀態保存資料,但電容會漏電,所以必須不斷刷新。一旦斷電,電路無法繼續維護這些電荷狀態,資料也就消失了。
NAND Flash 不一樣。
NAND 屬於非易失性儲存。也就是說,資料寫進去之後,即使系統斷電,它也能在較長時間內保持資料。
這就是為什麼手機關機後,照片、視訊、App 還在;電腦關機後,SSD 裡的系統檔案、工程程式碼、文件還在;U 盤拔掉之後,裡面的資料不會馬上消失。它們背後主要依賴的,就是 NAND Flash 這種非易失性儲存。
當然,NAND 也不是魔法。它並不是把資料“刻死”在晶片裡,而是通過儲存單元裡的電荷狀態來表示資料。只不過它保存電荷的方式,和 DRAM 那種小電容臨時存電不一樣。NAND 的儲存單元可以在斷電後繼續保持狀態,所以它適合長期保存資料。
這也是 NAND 和 DRAM 分工不同的根源。
DRAM 適合高速執行階段訪問,但斷電會丟。NAND 速度沒有 DRAM 那麼適合 CPU 高頻直接訪問,但它容量大、成本低、斷電不丟,非常適合做長期儲存。
所以電腦裡才會同時有記憶體和 SSD。手機裡也會同時有運行記憶體和機身儲存。它們都叫儲存,但干的活完全不一樣。
二、NAND 怎麼表示 0 和 1?
NAND Flash 存資料,本質上也是利用電荷狀態。
只是這裡的電荷不是像 DRAM 那樣放在一個容易漏的小電容裡,而是通過特殊的儲存結構把電荷“困”在某個區域裡。這個電荷狀態會影響電晶體的閾值電壓,電路再通過判斷閾值電壓的不同,識別出儲存的資料。
簡單說,可以這樣理解:
NAND cell 不是直接放一個“0”或“1”進去,而是通過電荷多少改變這個 cell 的電學特性。讀資料時,外圍電路去檢測這個 cell 的狀態,再判斷它代表什麼資料。
如果只是最早期、最簡單的理解,一個 cell 可以存一個 bit,也就是兩種狀態:0 或 1。後來為了提高容量,一個 cell 裡可以區分更多電荷狀態,於是就有了 SLC、MLC、TLC、QLC 這些不同類型。這個我們下一篇單獨講。
這裡先記住一個核心點:
NAND 之所以斷電後還能保存資料,是因為它能在儲存單元中保持電荷狀態,而這些狀態不需要像 DRAM 那樣靠持續刷新來維護。這就決定了 NAND 很適合做長期儲存。
但也要注意,NAND 不是沒有代價。為了把電荷寫進去、擦掉、區分出來,NAND 的讀寫方式比 DRAM 複雜得多。
DRAM 可以被看作執行階段頻繁訪問的臨時工作區,而 NAND 更像一個長期倉庫。倉庫能放很多東西,也能斷電保存,但你不能像在工作台上一樣隨手拿起、隨手修改。
三、NAND 不是像 DRAM 那樣隨意讀寫
很多人容易把儲存想像成一個大陣列。想讀哪裡就讀哪裡,想改哪裡就改哪裡。從軟體層面看,檔案系統好像確實給了我們這種感覺。你打開一個檔案,改幾行內容,點保存,好像資料就直接被改到了原來的位置。
但 NAND 底層不是這樣工作的。
NAND 通常可以按 page 讀取和寫入,但擦除的單位往往更大,是 block。也就是說,它不是像 DRAM 那樣隨便改一個小位置就完事。這點非常重要。
NAND 寫資料之前,很多情況下需要先保證目標位置處於可寫狀態。而如果原來的地方已經寫過,就不能像普通記憶體那樣直接覆蓋修改,往往需要先擦除。而擦除不是擦一個小位元組,而是擦一個更大的 block。
所以 NAND 的基本特點是:讀和寫可以比較細,但擦除通常更粗。這就帶來一個工程問題:如果使用者只是修改了一個很小的檔案,底層 NAND 可能不能簡單地在原地改幾個 bit,而是需要通過更複雜的方式重新安排資料。這也是為什麼 SSD 裡必須有主控晶片。
因為 NAND 本身並不適合直接暴露給作業系統當成一個“隨便改的大陣列”。中間需要一個控制層,把作業系統看到的邏輯地址,對應到 NAND 真實的物理位置上。
你在電腦裡看到的是一個好用的磁碟。背後其實是 SSD 主控在幫你做大量整理、搬移、總和檢查碼管理。
四、NAND 裡面也有層級:Die、Plane、Block、Page、Cell
NAND Flash 不是一整塊平鋪空間,它內部也有自己的層級結構。大方向上,可以把它理解成從大到小幾層:die、plane、block、page、cell。
Die 可以理解成一片 NAND 晶片內部的一個儲存核心區域。一個封裝裡可能有多個 die。Plane 是 die 裡面進一步劃分出來的區域。Block 是擦除的基本單位。Page 通常是讀寫操作的重要單位。Cell 則是最小的儲存單元,真正保存電荷狀態的地方。
不用死記這些名詞,但要理解這個層級關係。因為它決定了 NAND 的工作方式。
你不是想擦哪裡就擦哪裡,而是要按 block 擦。你不是完全像 DRAM 那樣按很小粒度任意改寫,而是要順著 NAND 的結構特性來管理資料。這就是 NAND 和 DRAM 的一個大區別。
DRAM 更像執行階段工作台,追求快速、頻繁、細粒度訪問。NAND 更像長期倉庫,追求大容量、低成本、斷電保存,但它需要按自己的規則讀、寫、擦。
所以 SSD 能不能好用,不只取決於 NAND 顆粒本身,還取決於主控和韌體怎麼管理這些層級結構。
五、為什麼 SSD 需要主控?
很多人買 SSD 時,會關注容量、介面、速度,比如 PCIe 4.0、PCIe 5.0、讀取速度多少 GB/s。但真正理解 SSD,就不能只看 NAND 顆粒,還要看主控。
因為 NAND 自己有很多“麻煩事”。
第一,NAND 會出錯。隨著儲存密度提高,cell 裡的電荷狀態越來越難區分,讀寫干擾、老化、溫度都會影響可靠性。所以 SSD 主控必須做 ECC,也就是錯誤糾正。簡單說,就是即使底層讀出來有少量 bit 錯誤,主控也要儘量把正確資料恢復出來。
第二,NAND 會有壞塊。晶片製造出來時,可能就有一些塊不可用;使用過程中,也可能有新的壞塊出現。所以主控要做壞塊管理,記錄哪些 block 不能用,避免繼續把重要資料寫進去。
第三,NAND 有擦寫壽命。NAND 不能無限寫。每個 block 能經歷的程式設計/擦除次數,也就是常說的 P/E cycle,是有限的。如果總是反覆寫同一批 block,這些 block 會更早老化。所以 SSD 主控要做磨損均衡。
它會儘量讓寫入分散到不同 block 上,而不是讓某些地方被反覆折騰。這樣可以讓整塊 SSD 的壽命更均衡。
最後,主控還要做地址對應。作業系統看到的是連續的邏輯地址,但 NAND 真實物理位置會不斷變化。主控需要維護一張對應關係,把邏輯地址轉換成實際存放資料的實體位址。
所以你看到的是一個簡單的硬碟磁碟機代號,背後其實有一個複雜的儲存管理系統在工作。這也是 SSD 和一堆裸 NAND 顆粒的區別。
NAND 提供儲存介質,主控負責把它管理成一個可靠、可用、性能還不錯的儲存裝置。
六、NAND 為什麼適合做大容量長期儲存?
NAND 最大的優勢,是容量可以做得很大,單位容量成本也比較低。這來自它的結構特點。
NAND Flash 的單元可以做得很密,尤其進入 3D NAND 之後,儲存單元不只是平面上鋪開,而是往垂直方向堆疊。這樣就能在有限晶片面積裡放下更多儲存容量。
這也是為什麼這些年 SSD 容量越來越大,手機機身儲存從 64GB、128GB 到 512GB、1TB 變得越來越常見。
NAND 的優勢非常適合長期儲存場景。照片、視訊、文件、系統檔案、App 安裝包、遊戲資源,這些東西不需要像 CPU 暫存器或 Cache 那樣每個週期高速訪問,但需要斷電後繼續保存,需要容量大,需要成本可接受。
NAND 剛好適合這個位置。它沒有 DRAM 那麼適合做運行記憶體,但它能把大量資料長期保存下來。它沒有 SRAM 那麼快,但它的容量和成本優勢非常明顯。所以在現代裝置裡,NAND 的位置非常清楚:
它不是工作台,而是倉庫。電腦裡的 SSD 是倉庫。手機裡的機身儲存是倉庫。U 盤和儲存卡也是倉庫。這些倉庫的核心價值,就是斷電後資料仍然在,而且容量可以做得很大。
七、NAND 不是無限耐用,這點一定要講清楚
講 NAND,很容易出現一個誤區:既然斷電不丟,那是不是就可以一直寫、一直用?
不是。NAND 可以斷電保存資料,但它不是無限耐用。每個 NAND block 能承受的擦寫次數是有限的。每經歷一次擦除再寫入,都會對儲存單元帶來一定損耗。次數多了以後,cell 的可靠性會下降,出錯機率會上升,最後這個 block 可能就不適合繼續使用了。這就是 P/E cycle 壽命。
不同類型的 NAND,P/E cycle 能力不同。一般來說,一個 cell 裡存的 bit 越多,單位容量成本越低,但狀態區分越難,可靠性和壽命壓力也越大。SLC、MLC、TLC、QLC 的差別,本質上就和這個有關。下一篇會展開講。
但普通使用者也不用因此過度焦慮。因為 SSD 主控會通過 ECC、磨損均衡、壞塊管理、預留空間、垃圾回收等機制,儘量延長壽命並提高可靠性。正常使用下,SSD 並不是寫幾次就壞。真正要避免的是把 NAND 理解成“永遠不會壞、無限可寫”。它能長期保存資料,但也有物理限制。
這也是儲存晶片工程裡很典型的取捨:為了更大容量、更低成本,就要接受更複雜的可靠性管理。
八、為什麼 SSD 斷電後檔案不會丟?
現在回到開頭的問題。SSD 斷電後檔案為什麼不會丟?
因為 SSD 的底層主要依賴 NAND Flash,而 NAND 是非易失性儲存。資料寫入後,儲存單元中的電荷狀態可以在斷電後保持下來,不需要像 DRAM 那樣依賴持續供電和刷新。
但更完整地說,SSD 不怕斷電,不只是因為 NAND 能保存電荷狀態,還因為 SSD 主控把 NAND 管理成了一個可用的儲存系統。
- 它負責地址對應,讓作業系統看到連續磁碟空間。
- 它負責 ECC,儘量糾正讀寫中的 bit 錯誤。
- 它負責壞塊管理,把不可靠的區域隔離掉。
- 它負責磨損均衡,避免某些 block 被過度寫壞。
- 它還要處理垃圾回收、寫放大、掉電保護等問題。
所以 SSD 是 NAND 加主控、韌體、快取、介面和電源管理共同組成的系統。NAND 負責“能斷電保存”,主控負責“讓它可靠、可管理、可持續使用”。這點很重要。不要把 SSD 簡單理解成一堆 NAND 顆粒。真正讓 SSD 好用的,是 NAND 介質和控製器系統一起工作。
結尾:NAND 是長期倉庫,不是運行工作台
這一篇我們從 DRAM 轉到了 NAND。DRAM 是運行記憶體,適合程式執行時快速讀寫,但斷電會丟資料。NAND 是非易失性儲存,適合大容量、低成本、長期保存,斷電後資料仍然可以保留。手機裡的照片為什麼關機後還在?SSD 斷電後檔案為什麼不丟?U 盤拔掉後資料為什麼還能保存?
答案就在 NAND Flash。
但 NAND 也不是簡單的“永久儲存”。它有自己的讀寫規則,也有壽命限制。它通常按 page 讀寫,按 block 擦除。它不能像 DRAM 那樣隨意細粒度改寫,也不能無限擦寫。所以 NAND 需要主控來管理。
ECC、壞塊管理、磨損均衡、地址對應,這些機制共同把底層複雜的 NAND,包裝成我們平時看到的 SSD、U 盤、手機儲存。如果用一句話總結:NAND 負責把資料留下來,主控負責讓這些資料可靠地留下來。
下一篇,我們繼續講 NAND。同樣都是 NAND,為什麼有 SLC、MLC、TLC、QLC?為什麼容量越做越大,壽命和性能反而會面臨新的壓力? (文觀經技)
