一、存儲(chǔ)數(shù)據(jù)的原理
兩種閃存都是用三端器件作為存儲(chǔ)單元,分別為源極、漏極和柵極,與場效應(yīng)管的工作原理相同,主要是利用電場的效應(yīng)來控制源極與漏極之間的通斷,柵極的 電流消耗極小,不同的是場效應(yīng)管為單柵極結(jié)構(gòu),而FLASH為雙柵極結(jié)構(gòu),在柵極與硅襯底之間增加了一個(gè)浮置柵極。
浮置柵極是由氮化物夾在兩層二氧化硅材料之間構(gòu)成的,中間的氮化物就是可以存儲(chǔ)電荷的電荷勢阱。上下兩層氧化物的厚度大于50埃,以避免發(fā)生擊穿。
二、浮柵的重放電
向數(shù)據(jù)單元內(nèi)寫入數(shù)據(jù)的過程就是向電荷勢阱注入電荷的過程,寫入數(shù)據(jù)有兩種技術(shù),熱電子注入(hot electron injection)和F-N隧道效應(yīng)(Fowler Nordheim tunneling),前一種是通過源極給浮柵充電,后一種是通過硅基層給浮柵充電。NOR型FLASH通過熱電子注入方式給浮柵充電,而NAND則通過 F-N隧道效應(yīng)給浮柵充電。
在寫入新數(shù)據(jù)之前,必須先將原來的數(shù)據(jù)擦除,這點(diǎn)跟硬盤不同,也就是將浮柵的電荷放掉,兩種FLASH都是通過F-N隧道效應(yīng)放電。
三、0和1
這方面兩種FLASH一樣,向浮柵中注入電荷表示寫入了‘0‘,沒有注入電荷表示‘1‘,所以對(duì)FLASH清除數(shù)據(jù)是寫1的,這與硬盤正好相反;
對(duì)于浮柵中有電荷的單元來說,由于浮柵的感應(yīng)作用,在源極和漏極之間將形成帶正電的空間電荷區(qū),這時(shí)無論控制極上有沒有施加偏置電壓,晶體管都將處于 導(dǎo)通狀態(tài)。而對(duì)于浮柵中沒有電荷的晶體管來說只有當(dāng)控制極上施加有適當(dāng)?shù)钠秒妷?,在硅基層上感?yīng)出電荷,源極和漏極才能導(dǎo)通,也就是說在沒有給控制極施 加偏置電壓時(shí),晶體管是截止的。
如果晶體管的源極接地而漏極接位線,在無偏置電壓的情況下,檢測晶體管的導(dǎo)通狀態(tài)就可以獲得存儲(chǔ)單元中的數(shù)據(jù),如果位線上的電平為低,說明晶體管處于 導(dǎo)通狀態(tài),讀取的數(shù)據(jù)為0,如果位線上為高電平,則說明晶體管處于截止?fàn)顟B(tài),讀取的數(shù)據(jù)為1。由于控制柵極在讀取數(shù)據(jù)的過程中施加的電壓較小或根本不施加 電壓,不足以改變浮置柵極中原有的電荷量,所以讀取操作不會(huì)改變FLASH中原有的數(shù)據(jù)。
四、連接和編址方式
兩種FLASH具有相同的存儲(chǔ)單元,工作原理也一樣,為了縮短存取時(shí)間并不是對(duì)每個(gè)單元進(jìn)行單獨(dú)的存取操作,而是對(duì)一定數(shù)量的存取單元進(jìn)行集體操作, NAND型FLASH各存儲(chǔ)單元之間是串聯(lián)的,而NOR型FLASH各單元之間是并聯(lián)的;為了對(duì)全部的存儲(chǔ)單元有效管理,必須對(duì)存儲(chǔ)單元進(jìn)行統(tǒng)一編址。
NAND的全部存儲(chǔ)單元分為若干個(gè)塊,每個(gè)塊又分為若干個(gè)頁,每個(gè)頁是512byte,就是512個(gè)8位數(shù),就是說每個(gè)頁有512條位線,每條位線下 有8個(gè)存儲(chǔ)單元;那么每頁存儲(chǔ)的數(shù)據(jù)正好跟硬盤的一個(gè)扇區(qū)存儲(chǔ)的數(shù)據(jù)相同,這是設(shè)計(jì)時(shí)為了方便與磁盤進(jìn)行數(shù)據(jù)交換而特意安排的,那么塊就類似硬盤的簇;容 量不同,塊的數(shù)量不同,組成塊的頁的數(shù)量也不同。在讀取數(shù)據(jù)時(shí),當(dāng)字線和位線鎖定某個(gè)晶體管時(shí),該晶體管的控制極不加偏置電壓,其它的7個(gè)都加上偏置電壓 而導(dǎo)通,如果這個(gè)晶體管的浮柵中有電荷就會(huì)導(dǎo)通使位線為低電平,讀出的數(shù)就是0,反之就是1。
NOR的每個(gè)存儲(chǔ)單元以并聯(lián)的方式連接到位線,方便對(duì)每一位進(jìn)行隨機(jī)存?。痪哂袑S玫牡刂肪€,可以實(shí)現(xiàn)一次性的直接尋址;縮短了FLASH對(duì)處理器指令的執(zhí)行時(shí)間。
NOR和NAND是現(xiàn)在市場上兩種主要的非易失閃存技術(shù)。Intel于1988年首先開發(fā)出NOR flash技術(shù),徹底改變了原先由EPROM和EEPROM一統(tǒng)天下的局面。緊接著,1989年,東芝公司發(fā)表了NAND flash結(jié)構(gòu),強(qiáng)調(diào)降低每比特的成本,更高的性能,并且象磁盤一樣可以通過接口輕松升級(jí)。但是經(jīng)過了十多年之后,仍然有相當(dāng)多的硬件工程師分不清NOR和NAND閃存。
相“flash存儲(chǔ)器”經(jīng)??梢耘c相“NOR存儲(chǔ)器”互換使用。許多業(yè)內(nèi)人士也搞不清楚NAND閃存技術(shù)相對(duì)于NOR技術(shù)的優(yōu)越之處,因?yàn)榇蠖鄶?shù)情況下閃存只是用來存儲(chǔ)少量的代碼,這時(shí)NOR閃存更適合一些。而NAND則是高數(shù)據(jù)存儲(chǔ)密度的理想解決方案。
NOR的特點(diǎn)是芯片內(nèi)執(zhí)行(XIP, eXecute In Place),這樣應(yīng)用程序可以直接在flash 閃存內(nèi)運(yùn)行,不必再把代碼讀到系統(tǒng)RAM中。NOR的傳輸效率很高,在1~4MB的小容量時(shí)具有很高的成本效益,但是很低的寫入和擦除速度大大影響了它的性能。
NAND結(jié)構(gòu)能提供極高的單元密度,可以達(dá)到高存儲(chǔ)密度,并且寫入和擦除的速度也很快。應(yīng)用NAND的困難在于flash的管理和需要特殊的系統(tǒng)接口。
性能比較
flash閃存是非易失存儲(chǔ)器,可以對(duì)稱為塊的存儲(chǔ)器單元塊進(jìn)行擦寫和再編程。任何flash器件的寫入操作只能在空或已擦除的單元內(nèi)進(jìn)行,所以大多數(shù)情況下,在進(jìn)行寫入操作之前必須先執(zhí)行擦除。NAND器件執(zhí)行擦除操作是十分簡單的,而NOR則要求在進(jìn)行擦除前先要將目標(biāo)塊內(nèi)所有的位都寫為0。
由于擦除NOR器件時(shí)是以64~128KB的塊進(jìn)行的,執(zhí)行一個(gè)寫入/擦除操作的時(shí)間為5s,與此相反,擦除NAND器件是以8~32KB的塊進(jìn)行的,執(zhí)行相同的操作最多只需要4ms。
執(zhí)行擦除時(shí)塊尺寸的不同進(jìn)一步拉大了NOR和NADN之間的性能差距,統(tǒng)計(jì)表明,對(duì)于給定的一套寫入操作(尤其是更新小文件時(shí)),更多的擦除操作必須在基于NOR的單元中進(jìn)行。這樣,當(dāng)選擇存儲(chǔ)解決方案時(shí),設(shè)計(jì)師必須權(quán)衡以下的各項(xiàng)因素。
● NOR的讀速度比NAND稍快一些。
● NAND的寫入速度比NOR快很多。
● NAND的4ms擦除速度遠(yuǎn)比NOR的5s快。
● 大多數(shù)寫入操作需要先進(jìn)行擦除操作。
● NAND的擦除單元更小,相應(yīng)的擦除電路更少。
From : globalsources
對(duì)于許多消費(fèi)類音視頻產(chǎn)品而言,NAND閃存是一種比硬盤驅(qū)動(dòng)器更好的存儲(chǔ)方案,這在不超過4GB的低容量應(yīng)用中表現(xiàn)得猶為明顯。隨著人們持續(xù)追求功耗更低、重量更輕和性能更佳的產(chǎn)品,NAND正被證明極具吸引力。
NAND閃存陣列分為一系列128kB的區(qū)塊(block),這些區(qū)塊是NAND器件中最小的可擦除實(shí)體。擦除一個(gè)區(qū)塊就是把所有的位(bit)設(shè)置為“1”(而所有字節(jié)(byte)設(shè)置為FFh)。有必要通過編程,將已擦除的位從“1”變?yōu)?#8220;0”。最小的編程實(shí)體是字節(jié)(byte)。一些NOR閃存能同時(shí)執(zhí)行讀寫操作(見下圖1)。雖然NAND不能同時(shí)執(zhí)行讀寫操作,它可以采用稱為“映射(shadowing)”的方法,在系統(tǒng)級(jí)實(shí)現(xiàn)這一點(diǎn)。這種方法在個(gè)人電腦上已經(jīng)沿用多年,即將BIOS從速率較低的ROM加載到速率較高的RAM上。
NAND的效率較高,是因?yàn)镹AND串中沒有金屬觸點(diǎn)。NAND閃存單元的大小比NOR要小(4F2:10F2)的原因,是NOR的每一個(gè)單元都需要獨(dú)立的金屬觸點(diǎn)。NAND與硬盤驅(qū)動(dòng)器類似,基于扇區(qū)(頁),適合于存儲(chǔ)連續(xù)的數(shù)據(jù),如圖片、音頻或個(gè)人電腦數(shù)據(jù)。雖然通過把數(shù)據(jù)映射到RAM上,能在系統(tǒng)級(jí)實(shí)現(xiàn)隨機(jī)存取,但是,這樣做需要額外的RAM存儲(chǔ)空間。此外,跟硬盤一樣,NAND器件存在壞的扇區(qū),需要糾錯(cuò)碼(ECC)來維持?jǐn)?shù)據(jù)的完整性。
存儲(chǔ)單元面積越小,裸片的面積也就越小。在這種情況下,NAND就能夠?yàn)楫?dāng)今的低成本消費(fèi)市場提供存儲(chǔ)容量更大的閃存產(chǎn)品。NAND閃存用于幾乎所有可擦除的存儲(chǔ)卡。NAND的復(fù)用接口為所有最新的器件和密度都提供了一種相似的引腳輸出。這種引腳輸出使得設(shè)計(jì)工程師無須改變電路板的硬件設(shè)計(jì),就能從更小的密度移植到更大密度的設(shè)計(jì)上。
NAND與NOR閃存比較
NAND閃存的優(yōu)點(diǎn)在于寫(編程)和擦除操作的速率快,而NOR的優(yōu)點(diǎn)是具有隨機(jī)存取和對(duì)字節(jié)執(zhí)行寫(編程)操作的能力(見下圖圖2)。NOR的隨機(jī)存取能力支持直接代碼執(zhí)行(XiP),而這是嵌入式應(yīng)用經(jīng)常需要的一個(gè)功能。NAND的缺點(diǎn)是隨機(jī)存取的速率慢,NOR的缺點(diǎn)是受到讀和擦除速度慢的性能制約。NAND較適合于存儲(chǔ)文件。如今,越來越多的處理器具備直接NAND接口,并能直接從NAND(沒有NOR)導(dǎo)入數(shù)據(jù)。
NAND的真正好處是編程速度快、擦除時(shí)間短。NAND支持速率超過5Mbps的持續(xù)寫操作,其區(qū)塊擦除時(shí)間短至2ms,而NOR是750ms。顯然,NAND在某些方面具有絕對(duì)優(yōu)勢。然而,它不太適合于直接隨機(jī)存取。
對(duì)于16位的器件,NOR閃存大約需要41個(gè)I/O引腳;相對(duì)而言,NAND器件僅需24個(gè)引腳。NAND器件能夠復(fù)用指令、地址和數(shù)據(jù)總線,從而節(jié)省了引腳數(shù)量。復(fù)用接口的一項(xiàng)好處,就在于能夠利用同樣的硬件設(shè)計(jì)和電路板,支持較大的NAND器件。由于普通的TSOP-1封裝已經(jīng)沿用多年,該功能讓客戶能夠把較高密度的NAND器件移植到相同的電路板上。NAND器件的另外一個(gè)好處顯然是其封裝選項(xiàng):NAND提供一種厚膜的2Gb裸片或能夠支持最多四顆堆疊裸片,容許在相同的TSOP-1封裝中堆疊一個(gè)8Gb的器件。這就使得一種封裝和接口能夠在將來支持較高的密度。
圖1 不同閃存單元的對(duì)比
圖2 NOR閃存的隨機(jī)存取時(shí)間為0.12ms,而NAND閃存的第一字節(jié)隨機(jī)存取速度要慢得多
NAND基本操作
以2Gb NAND器件為例,它由2048個(gè)區(qū)塊組成,每個(gè)區(qū)塊有64個(gè)頁(見圖3)。
圖3 2GB NAND閃存包含2,048個(gè)區(qū)塊
每一個(gè)頁均包含一個(gè)2048字節(jié)的數(shù)據(jù)區(qū)和64字節(jié)的空閑區(qū),總共包含2,112字節(jié)??臻e區(qū)通常被用于ECC、耗損均衡(wear leveling)和其它軟件開銷功能,盡管它在物理上與其它頁并沒有區(qū)別。NAND器件具有8或16位接口。通過8或16位寬的雙向數(shù)據(jù)總線,主數(shù)據(jù)被連接到NAND存儲(chǔ)器。在16位模式,指令和地址僅僅利用低8位,而高8位僅僅在數(shù)據(jù)傳輸周期使用。
擦除區(qū)塊所需時(shí)間約為2ms。一旦數(shù)據(jù)被載入寄存器,對(duì)一個(gè)頁的編程大約要300μs。讀一個(gè)頁面需要大約25μs,其中涉及到存儲(chǔ)陣列訪問頁,并將頁載入16,896位寄存器中。
除了I/O總線,NAND接口由6個(gè)主要控制信號(hào)構(gòu)成:
1.芯片啟動(dòng)(Chip Enable, CE#):如果沒有檢測到CE信號(hào),那么,NAND器件就保持待機(jī)模式,不對(duì)任何控制信號(hào)作出響應(yīng)。
2.寫使能(Write Enable, WE#): WE#負(fù)責(zé)將數(shù)據(jù)、地址或指令寫入NAND之中。
3.讀使能(Read Enable, RE#): RE#允許輸出數(shù)據(jù)緩沖器。
4.指令鎖存使能(Command Latch Enable, CLE): 當(dāng)CLE為高時(shí),在WE#信號(hào)的上升沿,指令被鎖存到NAND指令寄存器中。
5.地址鎖存使能(Address Latch Enable, ALE):當(dāng)ALE為高時(shí),在WE#信號(hào)的上升沿,地址被鎖存到NAND地址寄存器中。
6.就緒/忙(Ready/Busy, R/B#):如果NAND器件忙,R/B#信號(hào)將變低。該信號(hào)是漏極開路,需要采用上拉電阻。
數(shù)據(jù)每次進(jìn)/出NAND寄存器都是通過16位或8位接口。當(dāng)進(jìn)行編程操作的時(shí)候,待編程的數(shù)據(jù)進(jìn)入數(shù)據(jù)寄存器,處于在WE#信號(hào)的上升沿。在寄存器內(nèi)隨機(jī)存取或移動(dòng)數(shù)據(jù),要采用專用指令以便于隨機(jī)存取。
數(shù)據(jù)寄存器輸出數(shù)據(jù)的方式與利用RE#信號(hào)的方式類似,負(fù)責(zé)輸出現(xiàn)有的數(shù)據(jù),并增加到下一個(gè)地址。WE#和RE#時(shí)鐘運(yùn)行速度極快,達(dá)到30ns的水準(zhǔn)。當(dāng)RE#或CE#不為低的時(shí)候,輸出緩沖器將為三態(tài)。這種CE#和RE#的組合使能輸出緩沖器,容許NAND閃存與NOR、SRAM或DRAM等其它類型存儲(chǔ)器共享數(shù)據(jù)總線。該功能有時(shí)被稱為“無需介意芯片啟動(dòng)(chip enable don‘t care)”。這種方案的初衷是適應(yīng)較老的NAND器件,它們要求CE#在整個(gè)周期為低(譯注:根據(jù)上下文改寫)。
圖4 輸入寄存器接收到頁編程(80h)指令時(shí),內(nèi)部就會(huì)全部重置為1s,使得用戶可以只輸入他想以0位編程的數(shù)據(jù)字節(jié)
圖5 帶有隨機(jī)數(shù)據(jù)輸入的編程指令。圖中加亮的扇區(qū)顯示,該指令只需要后面跟隨著數(shù)據(jù)的2個(gè)字節(jié)的地址
所有NAND操作開始時(shí),都提供一個(gè)指令周期(表1)。
當(dāng)輸出一串WE#時(shí)鐘時(shí),通過在I/O位7:0上設(shè)置指令、驅(qū)動(dòng)CE#變低且CLE變高,就可以實(shí)現(xiàn)一個(gè)指令周期。注意:在WE#信號(hào)的上升沿上,指令、地址或數(shù)據(jù)被鎖存到NAND器件之中。如表1所示,大多數(shù)指令在第二個(gè)指令周期之后要占用若干地址周期。注意:復(fù)位或讀狀態(tài)指令例外,如果器件忙,就不應(yīng)該發(fā)送新的指令。
以2Gb NAND器件的尋址方案為例,第一和第二地址周期指定列地址,該列地址指定頁內(nèi)的起始字節(jié)(表2)。
注意:因?yàn)樽詈笠涣械奈恢檬?112,該最后位置的地址就是08h(在第二字節(jié)中)和3Fh(在第一字節(jié)中)。PA5:0指定區(qū)塊內(nèi)的頁地址,BA16:6指定區(qū)塊的地址。雖然大多編程和讀操作需要完整的5字節(jié)地址,在頁內(nèi)隨機(jī)存取數(shù)據(jù)的操作僅僅用到第一和第二字節(jié)。塊擦除操作僅僅需要三個(gè)最高字節(jié)(第三、第四和第五字節(jié))來選擇區(qū)塊。
圖6 典型的存儲(chǔ)方法
圖7 頁讀緩存模式
總體而言,NAND的基本操作包括:復(fù)位(Reset, FFh)操作、讀ID(Read ID, 00h)操作、讀狀態(tài)(Read Status, 70h)操作、編程(Program)操作、隨機(jī)數(shù)據(jù)輸入(Random data input, 85h)操作和讀(Read)操作等。
將NAND連接到處理器
選擇內(nèi)置NAND接口的處理器或控制器的好處很多。如果沒有這個(gè)選擇,有可能在NAND和幾乎任何處理器之間設(shè)計(jì)一個(gè)“無粘接邏輯(glueless)”接 口。NAND和NOR閃存的主要區(qū)別是復(fù)用地址和數(shù)據(jù)總線。該總線被用于指定指令、地址或數(shù)據(jù)。CLE信號(hào)指定指令周期,而ALE信號(hào)指定地址周期。利用這兩個(gè)控制信號(hào),有可能選擇指令、地址或數(shù)據(jù)周期。把ALE連接到處理器的第五地址位,而把CLE連接到處理器的第四地址位,就能簡單地通過改變處理器輸出的地址,任意選擇指令、地址或數(shù)據(jù)。這容許CLE和ALE在合適的時(shí)間自動(dòng)設(shè)置為低。
為了提供指令,處理器在數(shù)據(jù)總線上輸出想要的指令,并輸出地址0010h;為了輸出任意數(shù)量的地址周期,處理器僅僅要依次在處理器地址0020h之后輸出想要的NAND地址。注意,許多處理器能在處理器的寫信號(hào)周圍指定若干時(shí)序參數(shù),這對(duì)于建立合適的時(shí)序是至關(guān)重要的。利用該技術(shù),你不必采用任何粘接邏輯,就可以直接從處理器存取指令、地址和數(shù)據(jù)。
多層單元
編程或擦除操作之后,重要的是讀狀態(tài)寄存器,因?yàn)樗_認(rèn)是否成功地完成了編程或擦除操作。如果操作失敗,要把該區(qū)塊標(biāo)記為損壞且不能再使用。以前已編寫進(jìn)去的數(shù)據(jù)要從損壞的區(qū)塊中搬出,轉(zhuǎn)移到新的(好的)存儲(chǔ)塊之中。2Gb NAND的規(guī)范規(guī)定,它可以最多有40個(gè)壞的區(qū)塊,這個(gè)數(shù)字在器件的生命周期(額定壽命為10萬次編程/擦除周期)內(nèi)都適用。一些有壞塊的NAND器件能夠出廠,主要就歸根于其裸片面積大。管理器件的軟件負(fù)責(zé)映射壞塊并由好的存儲(chǔ)塊取而代之。
利用工廠對(duì)這些區(qū)塊的標(biāo)記,軟件通過掃描塊可以確定區(qū)塊的好壞。壞塊標(biāo)記被固定在空閑區(qū)的第一個(gè)位置(列地址2048)。如果在0或1頁的列地址2048上的數(shù)據(jù)是“non-FF”,那么,該塊要標(biāo)記為壞,并映射出系統(tǒng)。初始化軟件僅僅需要掃描所有區(qū)塊確定以確定哪個(gè)為壞,然后建一個(gè)壞塊表供將來參考。
小心不要擦除壞塊標(biāo)記,這一點(diǎn)很重要。工廠在寬溫和寬電壓范圍內(nèi)測試了NAND;一些由工廠標(biāo)記為壞的區(qū)塊可能在一定的溫度或電壓條件下仍然能工作,但是,將來可能會(huì)失效。如果壞塊信息被擦除,就無法再恢復(fù)數(shù)據(jù)。
聯(lián)系客服