解析固態(tài)硬盤讀取失敗的原因、怎樣做RETRY以及如何用DEEP RETRY技術(shù)保護(hù)好用戶數(shù)據(jù)時(shí)間: 2021-05-22 來源:大普微電子 當(dāng)今的主流NVME固態(tài)硬盤的讀取速率已經(jīng)達(dá)到了3500MB/s,這在前些年是不敢想象的,固態(tài)硬盤技術(shù)的發(fā)展給我們的網(wǎng)絡(luò)和設(shè)備帶來了巨大的性能提升。但在SSD固體硬盤中,并不是所有的讀操作都能夠一帆風(fēng)順,這時(shí)候就需要進(jìn)行Retry操作。需要Retry的大部分場(chǎng)景都還是比較復(fù)雜,下面我們展開講一講。 對(duì)于Retry我們需要找到讀失敗的原因,由于NAND介質(zhì)的原因,當(dāng)讀一個(gè)沒有寫滿的Block時(shí),這時(shí)候Block很不穩(wěn)定,所以非常容易讀失敗,這種Block我們稱之為OpenBlock。第二種情形是Data Retention, 說的是數(shù)據(jù)由于長(zhǎng)時(shí)間存放,隨著NAND充電單元的緩慢放電,將導(dǎo)致數(shù)據(jù)比特發(fā)生翻轉(zhuǎn)從而導(dǎo)致數(shù)據(jù)讀取失敗。 第三種是Readdisturb,我們知道,NAND介質(zhì)是一個(gè)巨大的存儲(chǔ)矩陣,如果一個(gè)存儲(chǔ)單元周圍的數(shù)據(jù)總是被頻繁讀取,那么會(huì)對(duì)本儲(chǔ)存單元造成干擾,從而有可能導(dǎo)致讀取本儲(chǔ)存單元數(shù)據(jù)的時(shí)候發(fā)生錯(cuò)誤。有Readdisturb,那么相應(yīng)的也有programdisturb,同樣的如果一個(gè)數(shù)據(jù)存儲(chǔ)單元周圍的存儲(chǔ)單元總是被頻繁的擦除寫入,也會(huì)對(duì)本存儲(chǔ)單元的數(shù)據(jù)造成干擾,從而導(dǎo)致讀失敗。 還有一種場(chǎng)景,那就是溫度的變化也會(huì)引起讀失敗,在不同溫度下半導(dǎo)體器件載流子的活躍程度是不一樣的,我們?cè)诟邷厍樾蜗聦懭氲臄?shù)據(jù)在低溫下去讀,或者低溫場(chǎng)景下寫入的數(shù)據(jù)在高溫下去讀,都有可能發(fā)生錯(cuò)誤需要進(jìn)行Retry。最后隨著SSD固體硬盤的使用,NAND器件的EPcycle也越來越高,數(shù)據(jù)存儲(chǔ)單元中柵極氧化層也磨損越來越嚴(yán)重,后果就是用來表示數(shù)據(jù)信息的柵極電路中的電荷流失會(huì)加劇,從而導(dǎo)致數(shù)據(jù)讀取失敗。 表1一些常見讀取失敗的原因 上面的描述中,幾乎所有的原因都不外乎NAND數(shù)據(jù)存儲(chǔ)單元的比特翻轉(zhuǎn),那我們?cè)趺磁卸ㄗx失敗呢?根據(jù)NAND存儲(chǔ)介質(zhì)的特性,存儲(chǔ)單元比特的翻轉(zhuǎn)幾乎是不可避免的(工藝成本的考慮,我們或許可以制作出不會(huì)比特翻轉(zhuǎn)的器件,但成本會(huì)高到與機(jī)械硬盤相比較的性能優(yōu)勢(shì)無法彌補(bǔ)的程度),但我們通過專門的數(shù)據(jù)冗余保護(hù)技術(shù)來解決這個(gè)問題。 將用戶的數(shù)據(jù)隨機(jī)化擾碼處理后,進(jìn)行編碼,將編碼后的數(shù)據(jù)和冗余校驗(yàn)數(shù)據(jù)都寫入NAND介質(zhì)。在讀取數(shù)據(jù)時(shí),如果存在少量的比特翻轉(zhuǎn),是可以通過冗余校驗(yàn)數(shù)據(jù)糾錯(cuò)回來的。但是,當(dāng)翻轉(zhuǎn)的比特?cái)?shù)目超過了解碼器的解碼能力后,就解碼失敗了,也就是上面我們說的讀取失敗了。 圖1數(shù)據(jù)寫入與讀取流程示意圖 既然有這么多可能導(dǎo)致讀取失敗的原因,那么在SSD固體硬盤運(yùn)行起來后,我們?cè)趺粗滥骋淮巫x失敗究竟是哪一個(gè)原因?qū)е碌哪??答案是并不知道。因?yàn)樽x失敗的現(xiàn)場(chǎng)并不會(huì)提供確切的信息來告訴我們具體的失敗原因。但是我們可以根據(jù)實(shí)際的測(cè)試數(shù)據(jù)結(jié)合理論進(jìn)行分析,將讀失敗的場(chǎng)景按照出現(xiàn)頻率進(jìn)行分類。針對(duì)高頻場(chǎng)景對(duì)相應(yīng)的Retry 策略進(jìn)行改進(jìn)優(yōu)化,降低Retry 的Latency,從而提高讀取性能和效率。 說完了發(fā)生Retry的場(chǎng)景,那我們到底是怎么做Retry呢?根據(jù)NAND存儲(chǔ)數(shù)據(jù)原理我們知道,讀取NAND存儲(chǔ)單元中的數(shù)據(jù),就是將NAND單元的存儲(chǔ)的電荷量通過電壓比較器讀取出電壓值來,電壓值所處于的檔位信息就是所存儲(chǔ)的數(shù)據(jù)。 在讀取失敗的場(chǎng)景中,這些電壓值都發(fā)生了不同程度的波動(dòng),偏離了寫入時(shí)的位置。因此,我們做Retry就是要改變電壓比較器的參考電壓值,去嘗試得出正確的電壓檔位。通過改變讀取電壓參考值,使得我們數(shù)據(jù)的讀取操作可以根據(jù)產(chǎn)品不同的使用場(chǎng)景,產(chǎn)品不同的壽命階段進(jìn)行靈活調(diào)整。 目前大部分NAND器件都提供了調(diào)整參考電壓的接口,并且針對(duì)一些普遍的場(chǎng)景給出了Retry的推薦參考電壓值。但是SSD固態(tài)硬盤廠家還是要對(duì)NAND顆粒進(jìn)行大量的測(cè)試,以徹底摸清其特性規(guī)律,為充分發(fā)掘產(chǎn)品潛力打下堅(jiān)實(shí)的基礎(chǔ)。DapuStor針對(duì)產(chǎn)品中使用的NAND顆粒做了大量的深入研究,針對(duì)NAND特性優(yōu)化了一系列的Retry策略,極大的提高了Retry的效率。 圖2 正常數(shù)據(jù)讀取比較過程 圖3 Retry讀取數(shù)據(jù)時(shí)參考電壓調(diào)整 如果通過調(diào)整參考電壓去Retry都沒有成功怎么辦呢?這時(shí)候我們可以使用更高級(jí)的解碼技術(shù):DEEP RETRY技術(shù)。DEEP RETRY以默認(rèn)的參考電壓為基準(zhǔn),在其附近不同位置進(jìn)行多次數(shù)據(jù)讀取。這樣以默認(rèn)參考電壓讀取的數(shù)據(jù)我們稱為Hard data,以附近不同位置參考電壓讀取的數(shù)據(jù)我們稱為Soft data,將Hard data和Soft data送入專門的解碼器進(jìn)行解碼,將大大的提高解碼的成功率。也就是說,單獨(dú)對(duì)Hard data和Soft data進(jìn)行解碼不能成功,但讀取的Soft data能提供額外的判決信息,從而提高解碼成功率。 圖4 DEEP RETRY技術(shù) DEEP RETRY技術(shù)擁有強(qiáng)大的解碼能力,但同時(shí)DEEP RETRY解碼功能也是復(fù)雜的而耗時(shí)的,啟用DEEP RETRY也會(huì)對(duì)產(chǎn)品的性能帶來一定沖擊。在DapuStor的產(chǎn)品中,經(jīng)過完整的測(cè)試,對(duì)軟件進(jìn)行了充分的優(yōu)化,將DEEP RETRY帶來的性能波動(dòng)將至最小,盡可能利用DEEP RETRY技術(shù)來保護(hù)好用戶數(shù)據(jù)。 |
|