-
NAND
(計算機閃存設備)
編輯
NAND閃存是一種比硬盤驅動器更好的存儲方案,這在不超過4GB的低容量應用中表現得猶爲明顯。隨着人們持續追求功耗更低、重量更輕和性能更佳的產品,NAND正被證實極具吸引力。NAND閃存是一種非易失性存儲技術,即斷電後仍能保存數據。它的發展目標就是下降每比特存儲成本、提升存儲容量。
-
中文名
-
NAND
-
外文名
-
NAND flash memory
-
性 質
-
比硬盤驅動器更好的存儲方案
-
優 勢
-
功耗更低、重量更輕和性能更佳
-
工做原理
-
結合了EPROM和EEPROM結構
工做原理
閃存結合了EPROM的高密度和EEPROM結構的變通性的優勢。
EPROM是指其中的內容能夠經過特殊手段擦去,而後從新寫入。其基本單元電路以下圖所示。常採用浮空柵雪崩注入式MOS電路,簡稱爲FAMOS。它與MOS電路類似,是在N型基片上生長出兩個高濃度的P型區,經過歐姆接觸分別引出源極S和漏極D。在源極和漏極之間有一個多晶硅柵極浮空在 絕緣層中,與四周無直接電氣聯接。這種電路以浮空柵極是否帶電來表示存1或者0,浮空柵極帶電後(例如負電荷),就在其下面,源極和漏極之間感應出正的導電溝道,使MOS管導通,即表示存入0.若浮空柵極不帶電,則不能造成導電溝道,MOS管不導通,即存入1。
EPROM基本單元結構
EEPROM基本
存儲單元電路的工做原理如圖2.2所示。與EPROM類似,它是在EPROM基本單元電路的浮空柵極的上面再生成一個浮空柵,前者稱爲第一級浮空柵,後者稱爲第二級浮空柵。可給第二級浮空柵引出一個電極,使第二級浮空柵極接某一電壓VG。若VG爲正電壓,第一浮空柵極與漏極之間產生隧道效應,使電子注入第一浮空柵極,即編程寫入。若使VG爲負電壓,強使第一浮空柵極的電子散失,即擦除。擦除後可從新寫入。
EEPROM單元結構
閃存的基本單元電路與EEPROM相似,也是由雙層浮空柵MOS管組成。可是第一層柵介質很薄,做爲隧道氧化層。寫入方法與EEPROM相同,在第二級浮空柵加正電壓,使電子進入第一級浮空柵。讀出方法與EPROM相同。擦除方法是在源極加正電壓利用第一級浮空柵與漏極之間的隧道效應,將注入到浮空柵的負電荷吸引到源極。因爲利用源極加正電壓擦除,所以各單元的源極聯在一塊兒,這樣,擦除不能按字節擦除,而是全片或者分塊擦除。隨着半導體技術的改進,閃存也實現了單晶體管設計,主要就是在原有的晶體管上加入浮空柵和選擇柵,
NAND閃存單元結構
NAND
閃存陣列分爲一系列128kB的區塊(block),這些區塊是NAND器件中最小的可擦除實體。擦除一個區塊就是把全部的位(bit)設置爲「1」(而全部字節(byte)設置爲FFh)。有必要經過編程,將已擦除的位從「1」變爲「0」。最小的編程實體是字節(byte)。一些NOR閃存能同時執行讀寫操做(見下圖1)。雖然NAND不能同時執行讀寫操做,它能夠採用稱爲「映射(shadowing)」的方法,在系統級實現這一點。這種方法在我的電腦上已經沿用多年,即將BIOS從速率較低的ROM加載到速率較高的RAM上。
傳輸速率
當芯片磨損,抹除與程序的操做速度會降到至關慢。傳遞多個小型文件時,如果每一個文件長度均小於閃存芯片所定義的區塊大小時,就可能致使很低的傳輸速率。訪問的遲滯也會影響性能,但仍是比硬盤的遲滯影響小。
閃存控制器的質量也是影響性能的因素之一。即便閃存只有在製造時作縮小晶粒(die-shrink)的改變,但若是欠缺合適的控制器,就可能引發速度的降級。[1]
不一樣種類、不一樣工藝、不一樣技術水平的NAND閃存在讀寫速率上存在差別。同時,閃存產品的讀寫性能也與讀寫方式有關。通常閃存的數據接口爲8位或者16位,其中8位較爲常見。若是產品支持多通道並行讀寫,那麼就會有更高的速度。[1]
優點
NAND的效率較高,是由於NAND串中沒有金屬觸點。NAND
閃存單元的大小比NOR要小(4F2:10F2)的緣由,是NOR的每個單元都須要獨立的金屬觸點。NAND與硬盤驅動器相似,基於扇區(頁),適合於存儲連續的數據,如圖片、音頻或我的電腦數據。雖然經過把數據映射到RAM上,能在系統級實現隨機存取,可是,這樣作須要額外的RAM存儲空間。此外,跟硬盤同樣,NAND器件存在壞的扇區,須要糾錯碼(ECC)來維持數據的完整性。
存儲單元面積越小,裸片的面積也就越小。在這種狀況下,NAND就可以爲當今的低成本消費市場提供存儲容量更大的閃存產品。NAND閃存用於幾乎全部可擦除的存儲卡。NAND的複用接口爲全部最新的器件和密度都提供了一種類似的引腳輸出。這種引腳輸出使得設計工程師無須改變電路板的硬件設計,就能從更小的密度移植到更大密度的設計上。
NAND
閃存的優勢在於寫(編程)和擦除操做的速率快,而NOR的優勢是具備隨機存取和對字節執行寫(編程)操做的能力(見下圖圖2)。NOR的隨機存取能力支持直接代碼執行(XiP),而這是嵌入式應用常常須要的一個功能。NAND的缺點是隨機存取的速率慢,NOR的缺點是受到讀和擦除速度慢的性能制約。NAND較適合於存儲文件。現在,愈來愈多的處理器具有直接NAND接口,並能直接從NAND(沒有NOR)導入數據。
編程速度快、擦除時間短
NAND的真正好處是編程速度快、擦除時間短。NAND支持速率超過5Mbps的持續寫操做,其區塊擦除時間短至2ms,而NOR是750ms。顯然,NAND在某些方面具備絕對優點。然而,它不太適合於直接隨機存取。
對於16位的器件,NOR
閃存大約須要41個I/O引腳;相對而言,NAND器件僅需24個引腳。NAND器件可以複用指令、地址和數據總線,從而節省了引腳數量。複用接口的一項好處,就在於可以利用一樣的硬件設計和電路板,支持較大的NAND器件。因爲普通的TSOP-1封裝已經沿用多年,該功能讓客戶可以把較高密度的NAND器件移植到相同的電路板上。NAND器件的另一個好處顯然是其封裝選項:NAND提供一種厚膜的2Gb裸片或可以支持最多四顆堆疊裸片,允許在相同的TSOP-1封裝中堆疊一個8Gb的器件。這就使得一種封裝和接口可以在未來支持較高的密度。
NOR
閃存的隨機存取時間爲0.12ms,而NAND閃存的第一字節隨機存取速度要慢得多
以2Gb NAND器件爲例,它由2048個區塊組成,每一個區塊有64個頁
2GB NAND閃存包含2,048個區塊
每個頁均包含一個2048字節的數據區和64字節的空閒區,總共包含2,112字節。空閒區一般被用於ECC、耗損均衡(wear leveling)和其它軟件開銷功能,儘管它在物理上與其它頁並無區別。NAND器件具備8或16位接口。經過8或16位寬的雙向數據總線,主數據被鏈接到NAND存儲器。在16位模式,指令和地址僅僅利用低8位,而高8位僅僅在數據傳輸週期使用。
擦除區塊所需時間約爲2ms。一旦數據被載入寄存器,對一個頁的編程大約要300μs。讀一個頁面須要大約25μs,其中涉及到存儲陣列訪問頁,並將頁載入16,896位寄存器中。
接口由6個主要控制信號構成
除了I/O總線,NAND接口由6個主要控制信號構成:
1.芯片啓動(Chip Enable, CE#):若是沒有檢測到CE信號,那麼,NAND器件就保持待機模式,不對任何控制信號做出響應。
2.寫使能(Write Enable, WE#): WE#負責將數據、地址或指令寫入NAND之中。
3.讀使能(Read Enable, RE#): RE#容許輸出數據緩衝器。
4.指令鎖存使能(Command Latch Enable, CLE): 當CLE爲高時,在WE#信號的上升沿,指令被鎖存到NAND指令寄存器中。
5.地址鎖存使能(Address Latch Enable, ALE):當ALE爲高時,在WE#信號的上升沿,地址被鎖存到NAND地址寄存器中。
6.就緒/忙(Ready/Busy, R/B#):若是NAND器件忙,R/B#信號將變低。該信號是漏極開路,須要採用上拉電阻。
數據每次進/出NAND寄存器都是經過16位或8位接口。當進行編程操做的時候,待編程的數據進入數據寄存器,處於在WE#信號的上升沿。在寄存器內隨機存取或移動數據,要採用專用指令以便於隨機存取。
數據寄存器輸出數據的方式
數據寄存器輸出數據的方式與利用RE#信號的方式相似,負責輸出現有的數據,並增長到下一個地址。WE#和RE#時鐘運行速度極快,達到30ns的水準。當RE#或CE#不爲低的時候,輸出緩衝器將爲三態。這種CE#和RE#的組合使能輸出緩衝器,允許NAND
閃存與NOR、SRAM或DRAM等其它類型存儲器共享數據總線。該功能有時被稱爲「無需介意芯片啓動(chip enable don't care)」。這種方案的初衷是適應較老的NAND器件,它們要求CE#在整個週期爲低(譯註:根據上下文改寫)。
輸入寄存器接收到頁編程(80h)指令時,內部就會所有重置爲1s,使得用戶能夠只輸入他想以0位編程的數據字節
帶有隨機數據輸入的編程指令。該指令只須要後面跟隨着數據的2個字節的地址
指令週期
全部NAND操做開始時,都提供一個指令週期
當輸出一串WE#時鐘時,經過在I/O位7:0上設置指令、驅動CE#變低且CLE變高,就能夠實現一個指令週期。注意:在WE#信號的上升沿上,指令、地址或數據被鎖存到NAND器件之中。如表1所示,大多數指令在第二個指令週期以後要佔用若干地址週期。注意:復位或讀狀態指令例外,若是器件忙,就不該該發送新的指令。
注意:由於最後一列的位置是2112,該最後位置的地址就是08h(在第二字節中)和3Fh(在第一字節中)。PA5:0指定區塊內的頁地址,BA16:6指定區塊的地址。雖然大多編程和讀操做須要完整的5字節地址,在頁內隨機存取數據的操做僅僅用到第一和第二字節。塊擦除操做僅僅須要三個最高字節(第3、第四和第五字節)來選擇區塊。
整體而言,NAND的基本操做包括:復位(Reset, FFh)操做、讀ID(Read ID, 00h)操做、讀狀態(Read Status, 70h)操做、編程(Program)操做、隨機數據輸入(Random data input, 85h)操做和讀(Read)操做等。
選擇內置NAND接口的處理器或控制器的好處不少。若是沒有這個選擇,有可能在NAND和幾乎任何處理器之間設計一個「無粘接邏輯(glueless)」接口。NAND和NOR
閃存的主要區別是複用地址和數據總線。該總線被用於指定指令、地址或數據。CLE信號指定指令週期,而ALE信號指定地址週期。利用這兩個控制信號,有可能選擇指令、地址或數據週期。把ALE鏈接處處理器的第五地址位,而把CLE鏈接處處理器的第四地址位,就能簡單地經過改變處理器輸出的地址,任意選擇指令、地址或數據。這允許CLE和ALE在合適的時間自動設置爲低。
爲了提供指令,處理器在數據總線上輸出想要的指令,並輸出地址0010h;爲了輸出任意數量的地址週期,處理器僅僅要依次在處理器地址0020h以後輸出想要的NAND地址。注意,許多處理器能在處理器的寫信號周圍指定若干時序參數,這對於創建合適的時序是相當重要的。利用該技術,你沒必要採用任何粘接邏輯,就能夠直接從處理器存取指令、地址和數據。
多層單元(MLC)的每個單元存儲兩位,而傳統的SLC僅僅能存儲一位。MLC技術有顯著的密度優越性,然而,與SLC相比(表3),其速度或可靠性稍遜。所以,SLC被用於大多數媒體卡和無線應用,而MLC器件一般被用於消費電子和其它低成本產品。
NAND須要ECC以確保數據完整性。
NAND閃存的每個頁面上都包括額外的存儲空間,它就是64個字節的空閒區(每512字節的扇區有16字節)。該區能存儲ECC代碼及其它像磨損評級或邏輯到物理塊映射之類的信息。ECC能在硬件或軟件中執行,可是,硬件執行有明顯的性能優點。在編程操做期間,ECC單元根據扇區中存儲的數據來計算誤碼校訂代碼。數據區的ECC代碼而後被分別寫入到各自的空閒區。當數據被讀出時,ECC代碼也被讀出;運用反操做能夠覈查讀出的數據是否正確。
有可能採用ECC算法來校訂數據錯誤。
能校訂的錯誤的數量取決於所用算法的校訂強度。在硬件或軟件中包含ECC,就提供了強大的系統級解決方案。最簡單的硬件實現方案是採用簡單的漢明(Simple Hamming)碼,可是,只能校訂單一位錯誤。
瑞德索羅門(Reed-Solomon)碼提供更爲強大的糾錯,並被控制器廣爲採用。此外,BCH碼因爲比瑞德索羅門方法的效率高,應用也日益普及。LSI SHIELD技術採用多級ECC模式,對SSD進行優化的高級糾錯功能解決NAND閃存存儲器的可靠性下降和使用壽命縮短等問題。
要用軟件執行NAND閃存的區塊管理。
該軟件負責磨損評級或邏輯到物理映射。該軟件還提供ECC碼,若是處理器不包含ECC硬件的話。
編程或擦除操做以後,重要的是讀狀態寄存器,由於它確認是否成功地完成了編程或擦除操做。若是操做失敗,要把該區塊標記爲損壞且不能再使用。之前已編寫進去的數據要從損壞的區塊中搬出,轉移到新的(好的)存儲塊之中。2Gb NAND的規範規定,它能夠最多有40個壞的區塊,這個數字在器件的生命週期(額定壽命爲10萬次編程/擦除週期)內都適用。一些有壞塊的NAND器件可以出廠,主要就歸根於其裸片面積大。管理器件的軟件負責映射壞塊並由好的存儲塊取而代之。
軟件經過掃描塊能夠肯定區塊的好壞
利用工廠對這些區塊的標記,軟件經過掃描塊能夠肯定區塊的好壞。壞塊標記被固定在空閒區的第一個位置(列地址2048)。若是在0或1頁的列地址2048上的數據是「non-FF」,那麼,該塊要標記爲壞,並映射出系統。初始化軟件僅僅須要掃描全部區塊肯定以肯定哪一個爲壞,而後建一個壞塊表供未來參考。
當心不要擦除壞塊標記
這一點很重要。工廠在寬溫和寬電壓範圍內測試了NAND;一些由工廠標記爲壞的區塊可能在必定的溫度或電壓條件下仍然能工做,可是,未來可能會失效。若是壞塊信息被擦除,就沒法再恢復。
其餘
另外,NAND在某些地方,尤爲是數字電路,和vhdl等一些描述語言中表明與非,或是
與非門的意思[2]
------------------------------------
與磁性的HDD不一樣,NAND必須處於數據能夠被寫入的狀態,沒有HDD所具備的「位寫入」(write-in-place)功能。若是數據已經被寫在NAND上,那麼該數據必須被擦除NAND才能接受新的數據。擦除是一個破環薄層材質的過程。
NAND機構的簡單解釋起到了對此稍作澄清的做用,雖然這仍然使人困惑。
NAND記憶體實質上由被稱爲頁(page)和區塊(block)的兩類結構組成。每頁最多見是4/2 KB(能夠是其它大小,但這是最多見的),表明一個讀取和寫入單元。多個頁組成32/128 KB或者128/512 KB的區塊。NAND讀取和寫入是在頁的級別上被執行的。相反,擦除是在區塊級別上被執行的。[3]