基于NAND閃存的固態(tài)硬盤(SSD)正在取代許多應(yīng)用中的硬盤驅(qū)動(dòng)器(HDD),尤其是便攜式和消費(fèi)類設(shè)備。由于閃存固有的高性能,這種技術(shù)也正在進(jìn)軍企業(yè)存儲(chǔ)領(lǐng)域,同樣由于其堅(jiān)固性(robustness),也得以進(jìn)軍工業(yè)應(yīng)用領(lǐng)域。閃存控制器在這些系統(tǒng)中起著至關(guān)重要的作用,能夠提供主機(jī)和閃存設(shè)備之間的物理接口,也可以高效地利用閃存來實(shí)現(xiàn)所需的可靠性和性能。
控制器架構(gòu)
圖1: 一個(gè)通常的閃存控制器架構(gòu)
圖1所示為一個(gè)典型的閃存控制器的簡單框圖,其中主要包括三個(gè)部分:與NAND閃存的接口,與主機(jī)系統(tǒng)的接口,以及執(zhí)行所有管理功能的中央處理器。 ROM只提供初始引導(dǎo)代碼,控制器的固件存儲(chǔ)在閃存中,因而便于更新升級(jí)。選擇使用何種CPU是決定控制器性能、功能和功耗的關(guān)鍵。
主機(jī)和閃存接口包含用于數(shù)據(jù)讀寫的緩沖區(qū)。由于主機(jī)和閃存采用的速度和數(shù)據(jù)大小不同,而且主機(jī)上的數(shù)據(jù)在寫入之前可能需要重新組織,因而緩沖區(qū)是必需的。控制器應(yīng)該能夠透明地交叉訪問多個(gè)閃存,以達(dá)到所需的讀寫速度。
為了達(dá)到要求的性能、可靠性和使用壽命,控制器必須能夠管理閃存的許多特性。
地址轉(zhuǎn)換和映射
基于文件系統(tǒng)的扇區(qū)大小并使用“邏輯塊地址”,主機(jī)通常以塊為單位寫入閃存。控制器必須管理這些傳輸?shù)介W存存儲(chǔ)器頁和塊的數(shù)據(jù),并跟蹤主機(jī)邏輯地址和閃存中物理地址之間的映射,如圖2所示。出于速度考慮,映射信息將保留在RAM中,但需要儲(chǔ)存到閃存,以便在斷電時(shí)能夠得以保存。
所使用的映射類型和更新方法將決定性能和堅(jiān)固性,例如電源意外斷開的情況。
圖2: 基本的基于塊的地址映射
糾錯(cuò)碼
與所有存儲(chǔ)設(shè)備一樣,數(shù)據(jù)讀取時(shí)可能會(huì)出現(xiàn)錯(cuò)誤。這些可能是由輻射引起的偶然錯(cuò)誤,或者是附近的單元被讀取或編程時(shí)存儲(chǔ)值被擾亂引起的暫時(shí)故障,或者是編程單元時(shí)的失效。使用閃存時(shí),由于閃存單元的編程/擦除周期有限,這些錯(cuò)誤隨著時(shí)間的推移會(huì)變得更加頻繁。為此,控制器使用糾錯(cuò)碼(ECC)來檢測(cè)和糾正錯(cuò)誤。這意味著當(dāng)數(shù)據(jù)寫入閃存時(shí),會(huì)寫入包含ECC的額外字節(jié)。為了檢查錯(cuò)誤,當(dāng)數(shù)據(jù)被讀取時(shí),ECC被重新計(jì)算,并且與存儲(chǔ)的值進(jìn)行比較。通常情況下,允許校正單字節(jié)的錯(cuò)誤,并且可檢測(cè)多字節(jié)的錯(cuò)誤。重復(fù)的故障可能表示壞塊(bad block)。然后控制器需要跟蹤壞塊,一面它們被再次使用。
因此,高質(zhì)量的ECC實(shí)施是確保閃存存儲(chǔ)器中數(shù)據(jù)完整性的關(guān)鍵。可以使用的ECC類型有很多,這些都包括非常復(fù)雜的數(shù)學(xué)函數(shù),可以在校正速度和質(zhì)量、硬件要求和處理性能方面提供不同的權(quán)衡。ECC的選擇需要與原始誤碼率和誤碼分布等閃存的特性相匹配。一個(gè)好的控制器需要認(rèn)真考慮這些因素,并有足夠的處理能力來實(shí)現(xiàn)最佳的ECC算法。
磨損平衡
為了最大限度地減少閃存單元有限的編程/擦除耐久性的影響,并最大限度地延長閃存的使用壽命,控制器使用磨損平衡(wear levelling)算法來確保所有塊的均勻使用。這意味著控制器在寫入數(shù)據(jù)時(shí)必須從未使用的塊中選擇使用最少的頁。此外,有幾種方法可以用于在有效性和處理性能之間進(jìn)行不同的取舍。
閃存的一個(gè)特點(diǎn)是數(shù)據(jù)只能寫入擦除的頁面。因此,如果對(duì)小于一頁的數(shù)據(jù)塊進(jìn)行隨機(jī)寫入,則當(dāng)前在頁中的數(shù)據(jù)可能需要被重新定位到新的已擦除頁面。這是產(chǎn)生寫入放大的主要原因之一,即閃存的實(shí)際寫入比主機(jī)要求的寫入要多。控制器必須確保數(shù)據(jù)重新定位期間的數(shù)據(jù)完整性,并需要更新邏輯地址映射。
由于數(shù)據(jù)是以頁的形式寫入,但卻只能以由多個(gè)頁面組成的塊進(jìn)行擦除,因此控制器將必須進(jìn)行垃圾收集(garbage collection)。這需要復(fù)制數(shù)據(jù)以便把已經(jīng)使用的頁整合到塊,并釋放可被擦除進(jìn)而重新使用的空白塊。垃圾收集的時(shí)間和頻率需要進(jìn)行管理,以減少對(duì)主機(jī)系統(tǒng)性能的影響,還需要確保斷電時(shí)數(shù)據(jù)不會(huì)丟失。
控制器可以利用閃存中塊的超量配置,從而使壞塊不會(huì)降低閃存的可用容量或壽命。可用的備用塊也能夠提高垃圾收集和隨機(jī)寫入的性能。
半導(dǎo)體可靠性
系統(tǒng)可靠性的一個(gè)重要方面是控制器本身的質(zhì)量。首先,通過嚴(yán)格的設(shè)計(jì)和測(cè)試流程可以確保設(shè)備在特定的環(huán)境中可靠地工作。另外,由于半導(dǎo)體對(duì)輻射的敏感性,所選擇的封裝對(duì)于最小化α粒子的影響非常重要。同樣,封裝和互連材料也需要耐受使用期間由溫度變化引起的應(yīng)力。生產(chǎn)測(cè)試中使用的方法是加速老化來確認(rèn)設(shè)備能夠滿足故障率和平均無故障時(shí)間(MTBF)的要求。
健康監(jiān)測(cè)
與任何其他存儲(chǔ)系統(tǒng)一樣,閃存的使用壽命有限。控制器可以監(jiān)控和記錄總的擦除和編程周期次數(shù)、壞塊和備用塊的數(shù)量、以及由ECC檢測(cè)到的錯(cuò)誤率等數(shù)據(jù),由此可向主機(jī)系統(tǒng)和用戶提供關(guān)于閃存的健康狀態(tài)信息。這樣可以提前預(yù)警潛在的故障,以便在發(fā)生數(shù)據(jù)丟失風(fēng)險(xiǎn)之前更換設(shè)備。對(duì)于通過標(biāo)準(zhǔn)ATA接口連接的SSD設(shè)備,可以通過自我監(jiān)測(cè)、分析和報(bào)告技術(shù)(SMART)協(xié)議來報(bào)告此類信息。
結(jié)論
通過管理數(shù)據(jù)傳輸并“隱藏”閃存存儲(chǔ)技術(shù)的固有缺點(diǎn),控制器是實(shí)現(xiàn)可靠的基于閃存存儲(chǔ)的關(guān)鍵組件。要實(shí)現(xiàn)消費(fèi)和企業(yè)級(jí),尤其是工業(yè)或嵌入式系統(tǒng)中的數(shù)據(jù)存儲(chǔ)所需的性能、可靠性和使用壽命,高質(zhì)量的控制器至關(guān)重要。
評(píng)論