# SSD 筆記整理 [TOC] # SSD優點 1. 性能好 2. 功耗低 3. 抗震防摔 4. 無噪聲 5. 身形小巧百變 # 架構  # 流程 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) *1000*1000 個 Logical Data Block > 要有 (128/4) *1000*1000 * 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本身不會受影響),==額外的電子(帶負電)會讓V~th~增加==(例如原本要用5V,現在要用多用一些電壓來讓額外的電子跑出來),不過可以透過重新擦寫來恢復 3. Program Disturb:因為進行Program前,需要對其他WL施加V~pass~電壓,因此會造成跟Read Disturb相似的問題,電子會進入FG中,這邊又可以細分成影響本身的Program Disturb跟影響其他WL的Pass Disturb 4. Data Retention Error:因為長期使用下來,電壓的施加會造成TOX的厚度變薄(本來就只有幾nm),因此容易讓本來被trap在TOX或是FG裡面的電子逃脫 > 差別在於,Disturb會造成V~th~增加(右移),而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πk==d== 將原本的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後的V~th~變大,從原本的-V~th~向0V靠近,所以讀的時候溝道的電流就會變小,Sensor就不容易檢測到,Read會出錯 2. Write後的V~th~變小,從原本的+V~th~向0V靠近,Sensor容易誤檢測成讀過的,所以就不會寫 3. Write後的V~th~變大,有可能會大很多,導致即使施加更大的電壓也有可能是截止的 > 可以把所有的Wordline設定為0,來檢測所有Bitline的電流,如果電流為0(V=IR),也就代表V~th~接近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:在儲存單元的電子流失,導致V~th~分布向左移動 3. Read Disturb:讀的時候,會先施加V~pass~在其他Wordline上面,造成Read Disturb 4. Disturbance Between Storage Unit:FG是導體,兩個導體之間會形成電容,所以相鄰的電荷會受影響 5. Write Error:通常會發生在有Lower Page跟Upper Page的MLC或是TLC 2-pass # Read Retry 透過不斷改變v~ref~來試著找到可以讀出數據的電壓點,理論上只要電壓分布==沒有重疊==就可以用Read Retry來恢復數據 # ISPP 全名叫Increment Step Programming Pulse,每次電壓的步進增量都是設定好的,將V~pp~施加在Cell CG上,檢查V~th~是否有超過設定的值,如果有就結束,沒有就再施加==更大==的V~pp~,如果施加的次數超過閥值則失敗 
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up