閃存塊(Block)具有一定的壽命,不是長(zhǎng)生不老的。前面提到,當(dāng)一個(gè)閃存塊接近或者超出其最大擦寫次數(shù)時(shí),可能導(dǎo)致存儲(chǔ)單元的永久性損傷,不能再使用。隨著閃存工藝不斷向前,這個(gè)擦寫次數(shù)也變得越來越小。
圖1-1 閃存損壞狀態(tài)
在閃存當(dāng)中的存儲(chǔ)單元中,先天就有一些是壞掉的,或者說不穩(wěn)定的。并且隨著閃存的不斷使用,壞的存儲(chǔ)單元越來越多。所以,用戶寫入到閃存的數(shù)據(jù),必須有ECC糾錯(cuò)碼保護(hù),這樣即使其中的一些比特發(fā)生反轉(zhuǎn),讀取的時(shí)候也能通過ECC糾正過來。一旦出錯(cuò)的比特超過糾錯(cuò)能力范圍,數(shù)據(jù)就丟失,對(duì)這樣的閃存塊,我們應(yīng)該廢棄不再使用。
閃存先天有壞塊,也就是說有出廠壞塊。并且,用戶在使用的時(shí)候,也會(huì)新添壞塊,所以用戶在使用閃存的時(shí)候,必須有壞塊管理機(jī)制。
第二個(gè)問題是讀干擾(Read Disturb)。什么意思?從閃存讀取原理來看,當(dāng)你讀取一個(gè)閃存頁(yè)(Page)的時(shí)候,閃存塊當(dāng)中未被選取的閃存頁(yè)控制極都會(huì)加一個(gè)正電壓,以保證未被選中的MOS管是導(dǎo)通的。這樣問題就來了,頻繁的在一個(gè)MOS管控制極加正電壓,就可能導(dǎo)致電子被吸進(jìn)浮柵極,形成輕微的寫,從而最終導(dǎo)致比特翻轉(zhuǎn)。但是,這個(gè)不是永久性損傷,重新擦除閃存塊還能正常使用。注意的是,讀干擾影響的是同一個(gè)閃存塊中的其它閃存頁(yè),而非讀取的閃存頁(yè)本身。
圖1-2 讀干擾原理
第三個(gè)問題是寫干擾(Program Disturb)。除了讀干擾會(huì)導(dǎo)致比特翻轉(zhuǎn),寫干擾也會(huì)導(dǎo)致比特翻轉(zhuǎn)。還是要回到閃存內(nèi)部的寫原理上來。
圖1-3 寫干擾原理
我們寫一個(gè)閃存頁(yè)的時(shí)候,數(shù)據(jù)是0和1混合的。由于對(duì)擦除過的閃存塊,其所有的存儲(chǔ)單元初始值就是1,所以寫的時(shí)候,只有寫0的時(shí)候才真正需要寫。如圖3-48所示,方框里的單元是寫0,需要寫的,圓圈里的單元的代表寫1,并不需要寫操作。我們這里把方框里的單元稱之為Programmed Cells,圓圈里的單元叫Stressed Cells。寫某個(gè)閃存頁(yè)的時(shí)候,我們是在其 WordLine的控制極加一個(gè)正電壓(圖3-48是20V)。對(duì)于Programmed Cells所在的String,它是接地的;不需要寫的單元所在的String,它是接一正電壓(圖3-48為10V)。這樣最終產(chǎn)生的后果是,Stressed Cell也會(huì)被輕微寫。與讀干擾不同的是,寫干擾影響的不僅是同一個(gè)閃存塊當(dāng)中的其它閃存頁(yè),自身閃存頁(yè)也受影響。相同的是,都是不期望的輕微寫導(dǎo)致比特翻轉(zhuǎn),都非永久性損傷,經(jīng)擦除后,閃存塊還能再次使用。
第四個(gè)問題是存儲(chǔ)單元之間的耦合影響(Cell-to-Cell interference)。前面提到,浮柵極閃存存儲(chǔ)電荷的是導(dǎo)體,因此存儲(chǔ)單元之間存在耦合電容,導(dǎo)致存儲(chǔ)單元內(nèi)的電荷發(fā)生意外變化,最終導(dǎo)致數(shù)據(jù)讀取錯(cuò)誤;
還有個(gè)問題是電荷泄漏。存儲(chǔ)在閃存存儲(chǔ)單元的電荷,如果長(zhǎng)期不使用,會(huì)發(fā)生電荷泄漏。同樣是非永久性損傷,擦除后閃存塊還能使用。
上面說的這些,是所有閃存面臨的問題,包括SLC,MLC和TLC,這些問題的處理方法,在后面的FTL章節(jié)會(huì)進(jìn)行介紹。不同商家的閃存,不同制成的閃存,以及2D/3D閃存,還有其特有的問題,用戶在使用時(shí)需要用固件克服或者緩解這些問題。
壽命
我們大家生活在人間,祖祖輩輩和周圍觀察到的生靈告訴我們一個(gè)道理:所有的人和生物都不能像神仙一樣長(zhǎng)生不老。其實(shí)不只是生物,所有的存儲(chǔ)器件都是有壽命的。
圖1-4 SLC電壓分布(來源:Inside NAND Flash Memory)
我們?cè)賮砜磮D3-49這張0和1的分布圖,橫軸是電壓,縱軸是存儲(chǔ)單元的數(shù)量。0的區(qū)域表示被寫過的那些單元電壓分布區(qū)間,1的區(qū)域是被擦過的那些單元電壓分布區(qū)間。所以說,如果要正確地讀到數(shù)據(jù),0和1這兩個(gè)區(qū)間要盡量分割清楚,保證它們的主峰有足夠遠(yuǎn)的距離。
除了0和1靠近之外,閾值電壓也不能太偏?;貞浺幌伦x數(shù)據(jù)的原理。
圖1-5 讀操作電壓示例
要讀的單元柵極加 0V電壓,這時(shí)擦過的晶體管閾值電壓是-Vt,導(dǎo)通,溝道有電流,Bitline端的傳感器能夠檢測(cè)到,讀到“1”。而經(jīng)過寫的晶體管閾值電壓是+Vt,不導(dǎo)通,溝道電流很小,讀為“0”。隨著擦寫次數(shù)的增加,會(huì)發(fā)生三種故障:
l 擦過的晶體管閾值電壓變大,從-Vt向0V靠近,這樣讀的時(shí)候溝道電流變小,傳感器檢測(cè)不到,讀出錯(cuò)。
l 寫過的晶體管閾值電壓變小,從+Vt向0V靠近,有可能會(huì)被誤檢測(cè)為擦過的狀態(tài)。
l 寫過的晶體管閾值電壓變大(如圖3-50,>5V,即使控制極加5V電壓,它也是截止的),有可能在其他的單元讀的時(shí)候,把整個(gè)Bitline都給關(guān)了,一個(gè)死蒼蠅害了一鍋粥。
浮柵晶體管對(duì)浮柵極下面的絕緣層(Tunnel氧化物)很敏感,該氧化物厚度變?。ㄖ瞥滩粩鄿p小導(dǎo)致的)或者老化(Degradation,擦寫次數(shù)多了)對(duì)浮柵極里面的電荷影響大。我們之前介紹了Charge Trap晶體管,其實(shí)隨著擦寫次數(shù)增多,浮柵晶體管的氧化層漸漸老化,產(chǎn)生不少Charge Trap,這些陷阱會(huì)吃掉電子。導(dǎo)致寫之后,進(jìn)入浮柵的電子數(shù)量會(huì)減少,最終的結(jié)局就是0和1兩個(gè)區(qū)間不斷靠近。
如圖,上面是寫后的閾值電壓,下面是擦除后的閾值電壓,很明顯,擦除后的閾值電壓在擦很多次之后顯著變高。所以,一般擦除之后會(huì)做校驗(yàn),方法是把所有的Wordline設(shè)為0V,再去檢測(cè)每個(gè)Bitline的電流。如果某個(gè)Bitline電流是0,就意味著有個(gè)單元的擦除閾值電壓接近0V,導(dǎo)致晶體管關(guān)斷。所以這個(gè)閃存塊應(yīng)該標(biāo)為壞塊。
圖1-6 閾值電壓變化圖(來源:Inside NAND Flash Memory)
了解了閃存壽命的原理之后,我們?cè)賮砜纯垂虘B(tài)硬盤設(shè)計(jì)實(shí)踐中怎么解決這個(gè)問題。一般有以下方法:
Wear Leveling:通過磨損平衡算法,讓所有的閃存塊均衡擦寫,避免少數(shù)閃存塊先掛掉,導(dǎo)致固態(tài)硬盤容量下降。
降低寫放大:寫放大越低,固態(tài)硬盤的磨損速度越慢。
用更好的糾錯(cuò)算法:糾錯(cuò)能力更強(qiáng),容許的出錯(cuò)率更高,可以延長(zhǎng)使用壽命。
-
閃存
+關(guān)注
關(guān)注
16文章
1789瀏覽量
114931 -
存儲(chǔ)
+關(guān)注
關(guān)注
13文章
4314瀏覽量
85854
原文標(biāo)題:閃存存在的問題
文章出處:【微信號(hào):SSDFans,微信公眾號(hào):SSDFans】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論