Try   HackMD

SSD 筆記整理

SSD優點

  1. 性能好
  2. 功耗低
  3. 抗震防摔
  4. 無噪聲
  5. 身形小巧百變

架構

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

流程

INPUT:Command
OUTPUT:Data、Command Status

三大模組

  1. 前端接口相關協議
  2. FTL模組
  3. 後端和NAND FLASH通信模組
接口 Protocol Command 主機控制器接口 標準組織
SATA ATA/SATA AHCI ATA-IO
SAS SCSI SCSI T10 of INCITS
PCIe NVMe NVM PCIexpress/NVMexpress

How to Read/Write

主機 -> SSD -> FTL ->flash address -> flash space

*Flash 不能覆寫

練習1
SSD = 128GB
Logical Data Block = 4 KB
要有 (128/4) 10001000 個 Logical Data Block
要有 (128/4) 10001000 * 4B 大小的 Mapping Table

名詞解釋

Over Provisioning = (SSD bare capacity -user capacity)/user capacity
TBW = Capacity * NAND PE cycles/WA
DWPD = TBW/(years * 365 * Capacity)

SLC、MLC、TLC差別

介質信息 Speed Price Capacity lifetime
SLC fast expensive small long
MLC medium medium medium medium
TLC slow cheap big short

SSD 可靠性指標

UBER = uncorrectable bit error rate
RBER = raw bit error rate
MTBF = mean time bwtween failure

What cause error data

  1. P/E cycle:因為擦寫需要對MOSFET施加高電壓,會導致TOX變薄,讓數據容易出錯,甚至變成壞塊
  2. Read Disturb:因為FG有電子進入(例如我要讀A,但是我的電壓影響到B或是C,但是A本身不會受影響),額外的電子(帶負電)會讓Vth增加(例如原本要用5V,現在要用多用一些電壓來讓額外的電子跑出來),不過可以透過重新擦寫來恢復
  3. Program Disturb:因為進行Program前,需要對其他WL施加Vpass電壓,因此會造成跟Read Disturb相似的問題,電子會進入FG中,這邊又可以細分成影響本身的Program Disturb跟影響其他WL的Pass Disturb
  4. Data Retention Error:因為長期使用下來,電壓的施加會造成TOX的厚度變薄(本來就只有幾nm),因此容易讓本來被trap在TOX或是FG裡面的電子逃脫

差別在於,Disturb會造成Vth增加(右移),而Retention會造成減少(左移)

SSD 功耗

  1. idle
  2. max
  3. standby/sleep
  4. Devsleep

System Power State

S0 = 工作模式,OS可以管理SATA SSD的Power State
S1 = 低喚醒延遲狀態,系統上下文不會丟失,HW會負責維持所有的系統上下文
S2 = 和S1相似,但處理器和系統Cache上下文會丟失
S3 = 睡眠模式,CPU不運行指令,SATA SSD關閉,內存以外的上下文都會丟失,HW會保存部分的處理器跟L2 cache配置上下文
S4 = 休眠模式,CPU不運行指令,SATA SSD關閉,DDR內容寫到SSD中,所有的系統上下文都會丟失,OS負責上下文的保存跟恢復
S5 = Soft off state,和S4相似,但OS不會保存跟恢復上下文,可以透過滑鼠鍵盤喚醒

SSD 應用場合

  1. 數據加速層: PCIe SSD
  2. 熱數據層: SATA/SAS SSD
  3. 溫數據層: 高性能 HDD
  4. 冷數據層: HDD
  5. 歸檔層: 便宜HDD或是磁帶

Flash Memory Chip Architecture

Chip -> DIE(LUN) -> Plane -> Block -> Page -> Word Line -> Storage Unit

在一個LUN中,一次只能獨立執行一個命令(read or write)

在操作Page時,先把Data傳輸到該Page所對應的Cache Register,再把Cache Regsiter中的Data傳輸到Flash Array

為什麼需要Cache Register跟Page Register

  1. 正常讀:閃存介質->Page Register->Cache Register->主控
  2. Cache讀:閃存介質->Page Register、Cache Register->主控
  3. 正常寫:主控->Cache Register->Page Register->閃存介質
  4. Cache寫:主控->Cache Register

目的:優化閃存的訪問速度


SSD 讀、寫、擦

  1. Erase:在擦除前,FG上可能有電子,讓Pwell加20V電壓(高電壓),經過足夠的時間,利用穿隧效應,將電子從FG吸引到溝道裡,就可以完成一個Block的Erase(因為一整個Block是共用同一個Substrate)
  2. Write:要寫的單元WL為高電壓,要寫的BL為0V,不寫的BL為2V
  3. Read:不讀的WL為5V,保持導通,要讀的為0V

3D Flash Memory

BiCS TCAT
Cell Stack SONOS(Poly-Si Gate) TANOS(Metal Gate)
Word Line Poly-Si(High Rs) W(Low Rs)
Program/Erase 窗口 Narrow(SONOS) Wide(TANOS)
Erase方法 GIDL Bulk Erase

Result: TCAT is better but more expensive
Cons:

  1. 堆疊閘級層數目增加帶來的問題:
    1.1.串電流的減小(Read Disturb上升->Vread下降->串電流下降)
    1.2.高層和低層單元特徵的差異性增大
  2. 3D Flash size下降,單元間干擾上升(跟2D的問題一樣)

TCAT相較於BiCS:

  1. 單元間相互干擾降低84%
  2. 擦寫壽命提高10倍以上
  3. 編程時間減少50%
  4. 閥值電壓偏移降低67%

Charge Trap Flash Memory(CT)

距離下降->電容上升 公式:C = εS/4πkd

將原本的Floating Gate(導體)換成Charge Trap(絕緣,SI3N4)

Floating Gate像是水,Charge Trap像是奶酪

Flash Memory 特性

  1. Flash Bad Block:先天就會有壞塊,但是隨著使用次數增加,壞塊也會增加,因此需要搭配ECC糾錯碼保護,但如果無法糾正,則棄置不用
  2. Read Disturb:當頻繁的施加正電壓時,會導致輕微寫,但跟壞塊不一樣,可以透過重新擦寫來恢復功能,Read Disturb影響的不是本身,而是其他Page
  3. Program Disturb:Programmed Cells所在的是接地的,不需要寫的單元所在的String是接一個正電壓,所以也會被輕微寫,跟Read Disturb不同的是,連本身也會受到輕微寫的干擾,但是一樣都可以透過重新擦寫來恢復
  4. Cell to cell interference:因為FG是導體,所以會有耦合電容,讓電荷發生意外的變化,導致數據讀取錯誤
  5. Charge Leaked:電荷如果長期不使用,會導致洩漏,可以用重新擦寫來恢復

Flash Memory 壽命

經過擦寫,導致Tunnel Oxide(TOX)厚度變薄,不只是Floating Gate的電子容易釋放出來,連被TOX Trap住的電子也會容易釋放出來(學長認為是主因)
主要導致三種故障:

  1. Erase後的Vth變大,從原本的-Vth向0V靠近,所以讀的時候溝道的電流就會變小,Sensor就不容易檢測到,Read會出錯
  2. Write後的Vth變小,從原本的+Vth向0V靠近,Sensor容易誤檢測成讀過的,所以就不會寫
  3. Write後的Vth變大,有可能會大很多,導致即使施加更大的電壓也有可能是截止的

可以把所有的Wordline設定為0,來檢測所有Bitline的電流,如果電流為0(V=IR),也就代表Vth接近0,可以進一步的把該Block標為Bad Block

Solution of P/E Error

  1. Wear Leveling
  2. Decrease Write Amplification
  3. Better ECC

Trap-assisted tunneling(TAT):

Charge Detrapping:

Read Error 原因

  1. P/E cycle increase:TOX老化,導致電子進出變容易,因為儲存的電荷容易發生異常
  2. Data Retention:在儲存單元的電子流失,導致Vth分布向左移動
  3. Read Disturb:讀的時候,會先施加Vpass在其他Wordline上面,造成Read Disturb
  4. Disturbance Between Storage Unit:FG是導體,兩個導體之間會形成電容,所以相鄰的電荷會受影響
  5. Write Error:通常會發生在有Lower Page跟Upper Page的MLC或是TLC 2-pass

Read Retry

透過不斷改變vref來試著找到可以讀出數據的電壓點,理論上只要電壓分布沒有重疊就可以用Read Retry來恢復數據

ISPP

全名叫Increment Step Programming Pulse,每次電壓的步進增量都是設定好的,將Vpp施加在Cell CG上,檢查Vth是否有超過設定的值,如果有就結束,沒有就再施加更大的Vpp,如果施加的次數超過閥值則失敗