轉(zhuǎn)自: http://blog.sina.com.cn/s/blog_4b4b54da01016rx3.html 這里我想以一個(gè)純玩家的角度來談?wù)勱P(guān)于NAND Flash的底層結(jié)構(gòu)和解析,可能會(huì)有錯(cuò)誤的地方,如果有這方面專家強(qiáng)烈歡迎指正。
NAND Flash作為一種比較實(shí)用的固態(tài)硬盤存儲(chǔ)介質(zhì),有自己的一些物理特性,需要有基本的管理技術(shù)才能使用,對(duì)設(shè)計(jì)者來說,挑戰(zhàn)主要在下面幾點(diǎn): 1.需要先擦除才能寫入。 2.損耗機(jī)制,有耐久度限制。 3.讀寫時(shí)候造成的干擾會(huì)造成數(shù)據(jù)出錯(cuò)。 4.數(shù)據(jù)的保存期。 5.對(duì)初始和運(yùn)行時(shí)候的壞塊管理。 只有至少滿足這些基本的管理技術(shù),才能讓NAND Flash成為一款可以使用的固態(tài)存儲(chǔ)介質(zhì)。(這里還沒有談到任何關(guān)于性能的地方,因?yàn)槟鞘沁@些基本條件滿足后的事。) 當(dāng)滿足了上面的5點(diǎn)后,才該談到穩(wěn)定,性能,耐久度,影響這些的5大因素為: 1.SLC和MLC 2.平衡磨損算法 3.透過壞塊管理技術(shù)確保數(shù)據(jù)的完整性。 4.使用錯(cuò)誤檢測和校正技術(shù) 5.寫入放大 只有滿足了這些條件,才能得到一款理想中的完美的固態(tài)硬盤。 ----------------------------------------------------------------------- Flash全名叫做Flash Memory,屬于非易失性存儲(chǔ)設(shè)備(Non-volatile Memory Device),與此相對(duì)應(yīng)的是易失性存儲(chǔ)設(shè)備(Volatile Memory Device)。關(guān)于什么是非易失性/易失性,從名字中就可以看出,非易失性就是不容易丟失,數(shù)據(jù)存儲(chǔ)在這類設(shè)備中,即使斷電了,也不會(huì)丟失,這類設(shè)備,除了Flash,還有其他比較常見的如硬盤,ROM等,與此相對(duì)的,易失性就是斷電了,數(shù)據(jù)就丟失了,比如大家常用的內(nèi)存,不論是以前的SDRAM,DDR SDRAM,還是現(xiàn)在的DDR2,DDR3等,都是斷電后,數(shù)據(jù)就沒了。 Flash的內(nèi)部存儲(chǔ)是金屬-氧化層-半導(dǎo)體-場效晶體管(MOSFET),里面有個(gè)懸浮門(Floating Gate),是真正存儲(chǔ)數(shù)據(jù)的單元。 數(shù)據(jù)在Flash內(nèi)存單元中是以電荷(electrical charge) 形式存儲(chǔ)的。存儲(chǔ)電荷的多少,取決于圖中的控制門(Control gate)所被施加的電壓,其控制了是向存儲(chǔ)單元中沖入電荷還是使其釋放電荷。而數(shù)據(jù)的表示,以所存儲(chǔ)的電荷的電壓是否超過一個(gè)特定的閾值Vth 來表示。 1.對(duì)于NAND Flash的寫入(編程),就是控制Control Gate去充電(對(duì)Control Gate加壓),使得懸浮門存儲(chǔ)的電荷夠多,超過閾值Vth,就表示0。 2.對(duì)于NAND Flash的擦除(Erase),就是對(duì)懸浮門放電,低于閥值Vth,就表示1。 NAND Flash的架構(gòu): 如上圖所示,這是一個(gè)8Gb 50nm的SLC顆粒內(nèi)部架構(gòu)。 每個(gè)page有33,792個(gè)單元,每個(gè)單元代表1bit(SLC),所以每個(gè)page就是4096Byte + 128Byte(SA)。 每個(gè)Block有64個(gè)page組成,所以每個(gè)Block容量為262,114Byte + 8192Byte (SA) page是NAND Flash上最小的讀/寫單位(一個(gè)page上的單元共享一根字符線Word line),塊是最小的擦除單位(。不同廠牌不同型號(hào)顆粒有不同的page和block大小。 下圖是個(gè)8Gb 50nm的SLC顆粒。 4KB的頁尺寸,256KB的塊尺寸。圖中4096字節(jié)用于存儲(chǔ)數(shù)據(jù),另外128字節(jié)用來做管理和ECC用。 SLC 和 MLC 區(qū)別: SLC主要針對(duì)軍工,企業(yè)級(jí)應(yīng)用,有著高速寫入,低出錯(cuò)率,長耐久度特性。 MLC主要針對(duì)消費(fèi)級(jí)應(yīng)用,有著2倍容量于SLC,低成本,適合USB閃盤,手機(jī),數(shù)碼相機(jī)等儲(chǔ)存卡。如今也被用于消費(fèi)級(jí)固態(tài)硬盤上。 由上圖可以看到,MLC和SLC雖然使用相同的電壓值,但是電壓之間的閥值被分成了4份,直接影響了性能和穩(wěn)定性。主要有下面幾點(diǎn): 1.相鄰的存儲(chǔ)電荷的懸浮門間會(huì)互相干擾,造成懸浮門里的電荷不穩(wěn)定出現(xiàn)bit錯(cuò)誤,MLC由于閥值相比SLC更接近,造成出錯(cuò)幾率更大。 2.MLC讀寫性能降低,寫入更是降低50%以上,因?yàn)樾枰_認(rèn)充入電荷的量,這需要更精確的處理。SLC只有0和1,也就是有和沒有,而MLC會(huì)有00,01,10,11 4個(gè)狀態(tài),在充入電荷后還要去判斷是哪個(gè)狀態(tài),自然就慢了。 3.因?yàn)樯厦嬲f的,造成額外的讀寫壓力,所以功耗明顯增大。 4.因?yàn)轭~外的讀寫壓力,造成閃存的寫入耐久度和數(shù)據(jù)保存期受到影響。 eMLC和eSLC的耐久度提升是用犧牲了數(shù)據(jù)保存期和增加讀寫時(shí)間換來的。(也就是性能會(huì)更差點(diǎn)) ------------------------------------------------------------------- 挑戰(zhàn)1:需要先擦除才能寫入。 當(dāng)今的NAND Flash可以讀/寫一個(gè)page,但是必須以block大小擦除。 擦除操作就是讓塊中所有的bit變?yōu)?,從一個(gè)干凈的“已擦除”狀態(tài)的block重新開始。當(dāng)里面的頁變?yōu)?后,只有擦除整個(gè)塊才能讓這個(gè)頁變?yōu)?。為了盡量減少擦除的次數(shù),成熟的塊管理技術(shù)必不可少。 挑戰(zhàn)2:讀/寫干擾。 NAND Flash的電荷非常不穩(wěn)定,在讀/寫中很容易對(duì)鄰近的單元造成干擾,干擾后會(huì)讓附近單元的電荷脫離實(shí)際的邏輯數(shù)值,造成bit出錯(cuò),因?yàn)殚y值接近的關(guān)系,MLC相對(duì)SLC來說更容易受到干擾。 讀取干擾 寫入干擾 讀取干擾指的是在讀取某個(gè)page時(shí),鄰近的bit會(huì)受到升高電壓的干擾,造成bit出錯(cuò)。寫入干擾指的是,某個(gè)page在寫入時(shí),鄰近bit的電壓也被升高了,造成bit出錯(cuò)。相對(duì)寫入干擾來說,讀取干擾明顯小的多。在讀/寫干擾中,可能造成某些bit被改變,結(jié)果造成數(shù)據(jù)出錯(cuò)。所以需要在返回?cái)?shù)據(jù)給主機(jī)前,用ECC/EDC算法來糾正這些bit的錯(cuò)誤。隨著閃存工藝的提升,同樣大小的晶片上被封裝入更多的單元,造成干擾越來越厲害,所以需要更強(qiáng)大的ECC/EDC來糾正bit。 挑戰(zhàn)3:數(shù)據(jù)保存期限 數(shù)據(jù)保存期指的是當(dāng)完全斷電后,數(shù)據(jù)能在NAND Flash里保存多久。NAND單元必須保證一個(gè)穩(wěn)定的電壓水平,來保證數(shù)據(jù)是有效的。典型的SLC一般為10年。電荷從懸浮門里漏出,我們叫做電子遷移,當(dāng)隨著時(shí)間的流逝,電荷泄漏到一定程度,改變了NAND單元里懸浮門的電壓對(duì)應(yīng)的邏輯值,這樣就造成bit出錯(cuò)。 數(shù)據(jù)保存期會(huì)隨著擦寫次數(shù)的增加而明顯降低,而且從上面的原理中看出,MLC的數(shù)據(jù)保存期明顯會(huì)比SLC少。(更容易被干擾) 挑戰(zhàn)4: 壞塊 NAND Flash里有2種壞塊類型: 1,出廠壞塊:由于為了保證產(chǎn)量和控制成本,出廠的NAND Flash某些就會(huì)有壞塊。廠商保證SLC出廠壞塊低于2%,MLC出廠壞塊低于5%。 2,積累壞塊:在多次的寫入/擦除循環(huán)中,某些NAND單元的電荷電壓被永久性的改變了,那就意味著包含這個(gè)NAND單元不可用了。 所以固態(tài)硬盤需要有壞塊管理才能使用,主控制器用壞塊表來映射出廠壞塊和積累壞塊到壞塊區(qū)內(nèi),出廠時(shí),顆粒的第一個(gè)塊Block 0廠商會(huì)保證是可用的(至少ECC后可用)。 挑戰(zhàn)5:擦寫次數(shù)限制 造成NAND Flash有擦寫次數(shù)限制的主要有2個(gè)因素: 1,電荷被困在氧化層,不能進(jìn)入懸浮門。 2,氧化層結(jié)構(gòu)被破壞。 如圖,一旦氧化層損壞到達(dá)一定程度,造成電荷越來越難在P-substrate和懸浮門之間交流。電荷被困在氧化層造成懸浮門中的電壓到不了閥值,所以說這個(gè)NAND單元就要被放入壞塊區(qū)了。 當(dāng)前主流SLC的P/E為10萬次,50nm MLC為1萬次,3xnm的MLC為5000次。到了這個(gè)數(shù)字并不意味著就不能用了,這個(gè)只是代表平均壽命,也就是說到了這個(gè)次數(shù)后,壞塊就會(huì)開始大量增加了。 隨著工藝提升,ECC的要求越來越高,50nm的SLC顆粒,三星規(guī)定1bit ECC的就夠了,而50nm MLC要4bit ECC,到了3xnm要求達(dá)到24bit ECC。 ----------------------------------------- 附; ECC 影響NAND Flash穩(wěn)定性和耐久度的一個(gè)主要因素就是ECC能力,目前最常用的三種算法是: 1.Reed-Solomon。2.Hamming。3.BCH (Bose, Ray-Chaudhuri, Hocquenghem) 不管何種ECC算法,何種主控,檢測錯(cuò)誤的方式是相同的: 1.每當(dāng)一個(gè)page寫入NAND Flash,數(shù)據(jù)會(huì)通過ECC引擎,創(chuàng)造獨(dú)特的ECC簽名。 2.數(shù)據(jù)和對(duì)應(yīng)的ECC簽名存都存放在NAND Flash里,數(shù)據(jù)放在數(shù)據(jù)區(qū),ECC簽名放在 SA區(qū)。 3.當(dāng)需要讀取數(shù)據(jù)時(shí),數(shù)據(jù)和ECC簽名一起被送往主控制器,此時(shí)新的ECC簽名被生成。 4.此時(shí)主控把2個(gè)簽名對(duì)照,如果簽名相同,說明數(shù)據(jù)沒有錯(cuò)誤,數(shù)據(jù)就會(huì)被送往主機(jī)。如果簽名不同,數(shù)據(jù)就會(huì)先放在主控里,而不是直接送往主機(jī)。 某些主控會(huì)把改正后的數(shù)據(jù)再次寫回閃存,另一些則不會(huì),因?yàn)檎l也不知道下次讀取會(huì)不會(huì)再出錯(cuò)。 ECC的能力直接關(guān)系到NAND Flash的耐久度,數(shù)據(jù)保存期。當(dāng)NAND Flash的P/E數(shù)到了之后,錯(cuò)誤數(shù)會(huì)越來越多,ECC弱的直接就報(bào)壞塊并標(biāo)記退休,如果ECC能力足夠強(qiáng),就能挖掘出Flash所有潛力。 |
|