作者:admin 日期:2023-08-25 瀏覽: 次
手機(jī)閃存和固態(tài)硬盤為什么擦除多了會(huì)損壞?
點(diǎn)擊上方“公眾號(hào)” 可以訂閱哦!
在我們閃存系列文章中多次提到,構(gòu)成手機(jī)存儲(chǔ)和固態(tài)硬盤SSD的基本存儲(chǔ)單元的NAND閃存,它的壽命是由擦除次數(shù)來(lái)決定的。準(zhǔn)確的來(lái)說(shuō),是由Program/Erase(P/E)次數(shù)來(lái)決定的。有很多朋友留言問(wèn)其中的具體原因,今天我就專門撰文來(lái)詳細(xì)討論一下其中的原理。本文專注于NAND Flash,有些原理有可能同樣適用于NOR Flash,但本文并不關(guān)心。如果不做特殊說(shuō)明,下文閃存(Flash)指代NAND Flash。如果有朋友對(duì)NOR Flash感興趣,見(jiàn)此專門文章:雜談閃存二:NOR和NAND
閃存的工作原理
閃存價(jià)格節(jié)節(jié)攀升,讓三星大賺特賺。其實(shí)它的基本原理在1980年代之后基本就沒(méi)有變化過(guò)。它的構(gòu)成和場(chǎng)效應(yīng)管(MOSFET)十分類似:
它由:源極(Source)、漏極(Drain)、浮動(dòng)?xùn)牛‵loat Gate)和控制柵(Control Gate)組成。相對(duì)場(chǎng)效應(yīng)管的單柵極結(jié)構(gòu),閃存是雙柵極結(jié)構(gòu)。浮動(dòng)?xùn)攀怯傻飱A在二氧化硅材料(Insulator)之間構(gòu)成。
我們的寫操作(Program)是這樣:
在控制柵加正電壓,將電子(帶負(fù)電)吸入浮動(dòng)?xùn)?。在此后,由于浮?dòng)?xùn)派舷碌亩趸璨牧喜⒉粚?dǎo)電,這些電子被囚禁(Trap)在浮動(dòng)?xùn)胖?,出不去了。這樣無(wú)論今后控制柵電壓有否,這個(gè)狀態(tài)都會(huì)保持下去,所以閃存可以掉電保存數(shù)據(jù)。注意寫操作完畢后,該閃存單元存儲(chǔ)的是0,后面我們將會(huì)介紹為什么。
我們的擦除操作(Erase)剛好相反:
在源極加正電壓利用浮空柵與漏極之間的隧道效應(yīng),將注入到浮空柵的負(fù)電荷吸引到源極,排空浮動(dòng)?xùn)诺碾娮?。這時(shí)讀取的狀態(tài)是1。
那為什么有電子是0,沒(méi)電子是1呢?以為讀取的時(shí)候,需要給控制柵加一個(gè)低的讀取電壓,對(duì)于被Program過(guò)的閃存單元來(lái)說(shuō),被囚禁的電子可以抵消該讀取電壓,造成源極和漏極之間是處于被關(guān)閉的狀態(tài):
如果是被擦除過(guò)的就剛好相反,源極和漏極在控制柵的低電壓作用下,處于導(dǎo)通狀態(tài):
也就是說(shuō)通過(guò)向控制柵加讀取電壓,判斷漏極-源極之間是否處于導(dǎo)通狀態(tài)來(lái)讀取閃存單元的狀態(tài),如果被Program過(guò)的,就是處于關(guān)閉OFF狀態(tài),為0;而被Erase過(guò)的,就是處于導(dǎo)通狀態(tài)ON,為1。
理論上來(lái)說(shuō),閃存可以每個(gè)單元來(lái)單獨(dú)擦除和編程。但是為了節(jié)省成本,實(shí)際上作用在控制柵上的擦除電壓是整個(gè)塊(Block)連接在一起的,這就是為什么擦除要以塊為單位了。
為什么閃存會(huì)損壞
每次電子在包圍浮動(dòng)?xùn)诺亩趸枭线M(jìn)進(jìn)出出,都會(huì)造成它的老化:
長(zhǎng)此以往,浮動(dòng)?xùn)啪筒荒芎芎玫逆i住電子,電子會(huì)流失造成漏極-源極之間是否處于導(dǎo)通狀態(tài)錯(cuò)誤,進(jìn)而數(shù)據(jù)讀取錯(cuò)誤。閃存控制器通過(guò)校驗(yàn)發(fā)現(xiàn)錯(cuò)誤后會(huì)將其標(biāo)為不可用,而在OP空間找一塊來(lái)替代,并在FTL表里改變對(duì)應(yīng)關(guān)系。
而 SLC(Single-Level Cell)的省錢版:MLC(Multi-Level Cell) 和 TLC(Triple-Level Cell) 的引入讓這個(gè)問(wèn)題更加嚴(yán)重。原來(lái)SLC只有ON/OFF兩種狀態(tài),現(xiàn)在的TLC要有8種狀態(tài):
主要靠精確控制浮動(dòng)?xùn)爬锩娴碾娮觼?lái)實(shí)現(xiàn),老化會(huì)讓這種控制很容易出錯(cuò)。這樣就是為什么MLC和TLC相比SLC,生命周期更短的原因:
注意圖中的P/E Cycle。
結(jié)論
閃存單元的損壞是個(gè)不可逆的過(guò)程,壞了就是壞了,人死不能復(fù)生,節(jié)哀順變吧。幾個(gè)壞塊不會(huì)產(chǎn)生多大問(wèn)題,OP空間完全可以罩得住,問(wèn)題是只要產(chǎn)生壞塊,慢慢壞塊會(huì)越來(lái)越多,寫放大也會(huì)越來(lái)越嚴(yán)重,慢慢的就會(huì)產(chǎn)生讀寫錯(cuò)誤,或者速度嚴(yán)重下降。這時(shí)我們一定要考慮換塊SSD了。
也許僅僅依靠抽象的判斷速度對(duì)普通用戶并不是很好掌握。就像買西瓜都要拍一下,實(shí)際上估計(jì)很多人都是做個(gè)樣子而已。真正科學(xué)判斷SSD的狀態(tài)要靠SMART(Self-Monitoring Analysis and Reporting Technology)等工具,我們可以借助SSD廠家提供的工具來(lái)查看SSD的健康情況,今后我會(huì)專文寫寫相關(guān)內(nèi)容。