週邊元件

NAND Flash technology – SLC, MLC, TLC and “pSLC”

從事嵌入式相關的開發人員應該常會接觸到 NAND flash 相關的儲存裝置.

關於 NAND flash 有下列幾點特性 [1]:

  • 用不同程度的電壓來對 bit 進行編碼
  • 所有 bit 初始值為 1
  • 使用 PROGRAM 以及 ERASE 動作
    1. PROGRAM 的動作為 – 將 bit 值設成 0. 最小執行單位為 Page
    2. ERASE 的動作為 – 將 bit 值設成 1. 最小執行單位為 Block (一個 Block 有多個 Page)

800px-Nand_flash_structure.svg.png

source: https://en.wikipedia.org/wiki/Flash_memory

而近來常見的 eMMC (半雙工), eMCP (半雙工) 以及 UFS (全雙工) 則是 NAND flash 上加個 controller 來做 ECC, 故障區塊管理以及平均寫入.避免由 filesystem (ex: UBIFS, yaffs2 , …)  來處理而產生的整理效能議題. 這些帶有 controller 的 NAND flash 通常統稱為 managed NAND flash 如下圖所示:

圖片1

source: https://www.micron.com

NAND flash 顆粒主要分成 SLC, MLC 跟 TLC. 差別為在一個 NAND Flash 單元 (cell) 中, 分別能存1, 2 ,3 個 bits.

看到這裡會覺得奇怪, 不是能放越多 bits 越好嗎, 為什麼放越多 bits 的 TLC 反而便宜 ?

那就要從 NAND flash 的運作原理開始講了.NAND flash 主要使用 floating gate 來儲存電子. 而 floating gate 外面有一層絕緣體 (Insulator) 來保護. 所以每次進行 PROGRAM or ERASE 時, 都需要給予特定電壓, 形成電場讓電子強行通過絕緣體以進入或離開 floating gate. 但每次經過絕緣體, 都會造成對其損傷, 累積到一定程度後就會失去絕緣能力. 讓 floating gate 無法保存電子.

Overview

2017-03-22_143924.png

source: [6]

PROGRAM operation

2017-03-22_145200.png

source: [6]


以上述邏輯來看, 越常存取 floating gate, 會導致壽命越短. 所以如果一個 cell 存越多資料 (bits), 會因為常常存取的關係而減少壽命.

下圖為 flash type 的比較表:

Flash type SLC, Single Level Cell (1 bit) MLC, Multilevel Cell (2  bits) TLC, Triple Level Cell (3 bits)
Bits per cell 1 2 3
Program/Erase cycles Generally 100000 write erase cycles Anywhere from 3000 to 15000 write erase cycles

Anywhere from 1000 to 5000 write/erase cycles

Erase time Erase time: 1.5-2 ms Erase time: 2.5-3.5ms Erase time: 4-5ms
Operation scenario Industrial Commercial Commercial

但這幾年, 有一種稱為 “pSLC” (pseudo SLC)  的 flash type 逐漸興起. pSLC 以 MLC 的 flash type 為基底, 但在每個 cell 中只存 1 個 bit 而不是 2 個 bits . 由於在同一個 cell 中跟 SLC 一樣只儲存一個 bit, 但又不是真的 SLC, 所以稱之 “pSLC” (pseudo SLC).

依上述原理, 若將 MLC 切換成 pSLC, 儲存空間會隨之折半. ex: 8G MLC = 4G pSLC. 因為減少對 floating gate 的存取, 所以 pSLC 比起 MLC 來說可大幅增加讀寫壽命.

pSLC” (pseudo SLC) 的目的是以 MLC 的價格取得 “接近” SLC 的讀寫壽命以及存取效能. 代價是單位空間折半. 而pSLC 由 NAND flash controller 所控制, 所以不是每一個廠商都支援. 使用前需先確定儲存裝置為  managed NAND flash 且上面的 controller 有支援此模式.

下圖為加入 pSLC flash type 的比較表:

Flash type SLC, Single Level Cell (1 bit) pSLC, pseudo Single Level Cell (1 bit) MLC, Multilevel Cell (2  bits)
Bits per cell 1 1 2
Program/Erase cycles Generally 100000 write erase cycles Anywhere from 30000 to 50000 write erase cycles

Anywhere from 3000 to 15000 write erase cycles

Erase time Erase time: 1.5-2 ms N/A Erase time: 2.5-3.5ms
Operation scenario Industrial Industrial Commercial

note: pSLC 模式需要廠商支援


pSLC 使用時機:

pSLC 通常和 MLC 混用. 建議將下列重要檔案放進 pSLC 區塊中.

  • Boot code
  • Linux kernel
  • Data logger
  • key, certificate
心得:

善用 MLC & pSLC 的設計的確可以在價錢以及應用上取得平衡, 但需要注意每間廠商實作的方法略有差異. 有些支援動態切換, 有些不行. 再加上不同廠商對於 pSLC 模式有不同的命名以及使用方式. 所以在選用 managed NAND flash 儲存裝置上需要特別去瞭解以及注意.


ref:

[1]: https://www.micron.com/resource-details/fea5cfd9-ee93-47f4-b2af-cd494d3291c3

[2]: https://www.slideshare.net/ruchiusha/07flash-memory-technology/41

[3]: https://en.wikipedia.org/wiki/Flash_memory

[4]: https://events.linuxfoundation.org/sites/events/files/slides/brezillon-mlc-nand_0.pdf

[5]: http://electronicdesign.com/site-files/electronicdesign.com/files/uploads/2013/09/FAQs-Toshiba-September.pdf

[6]: http://events.linuxfoundation.org/sites/events/files/slides/Flash-technology-ELCE16_0.pdf

[7]: http://shawnhyde.com/post/2013/09/11/TLC-vs-MLC-vs-SLC-Performance-benchmarks-and-reliability

發表迴響