Flash Memory從結構上大體上可以分為AND、NAND、NOR和DINOR等幾種,現在市場上兩種主要的Flash Memory技術是NOR和NAND結構。
Intel于1988年首先開發(fā)出NOR flash技術,徹底改變了原先由EPROM和EEPROM一統(tǒng)天下的局面。緊接著,1989年,東芝公司發(fā)表了NAND flash結構,強調降低每比特的成本,更高的性能,并且象磁盤一樣可以通過接口輕松升級。
Nor Flash器件以及NAND Flash器件都是采用浮柵器件,在寫入之前必須先行擦除。浮柵器件也是利用電場的效應來控制源極與漏極之間的通斷,柵極的電流消耗極小,不同的是場效應管為單柵極結構,而FLASH為雙柵極結構,在柵極與硅襯底之間增加了一個浮置柵極。
浮置柵極是由氮化物夾在兩層二氧化硅材料之間構成的,中間的氮化物就是可以存儲電荷的電荷勢阱。上下兩層氧化物的厚度大于50埃,以避免發(fā)生擊穿。
一 存儲單元工作原理
cc1. NOR存儲單元
快閃存儲器的擦寫技術來源于溝道熱電子發(fā)射(Channel Hot-Electron Injection)與隧道效應(Fowlerordheim)。
NOR結構的Flash memory主要用于存儲指令代碼及小容量數據的產品中,目前的單片最高容量為512M,NOR Flash memory產品的主要領導者為Intel公司、AMD公司、Fujitsu公司、ST Microelectronics和公司。
ccNOR結構的Flash memory采用NOR SGC(Stacked Gate Cell)存儲單元,是從EPROM結構直接發(fā)展而來,非常成熟的結構,采用了簡單的堆疊柵構造。圖1是其結構原理圖。溝道熱電子發(fā)射(CHEI)器件的浮柵的充電(寫)是通過傳統(tǒng)的溝道熱電子發(fā)射(CHEI)在漏端附近完成的;浮柵的放電(擦除)在源端通過隧道氧化層的隧道效應來實現。
cccc cc
cc這種結構單元面積小,同EPROM的面積相當,編程(寫)時間短,在10μs左右,源漏結可以分開優(yōu)化,漏結優(yōu)化溝道熱電子發(fā)射,源結優(yōu)化隧道效應,采用了自對準工藝。
cc隨著制造技術的進步,存儲單元的特征尺寸越來越小,工作電壓降低,帶來的負面影響是熱電子發(fā)射效率降低,編程時較難工作于4V漏源電壓下。為提高熱電子發(fā)射效率,需要對源結、漏結、溝道摻雜分布進行優(yōu)化1,整體工藝較復雜,編程電流也較大,大約400μA/bit(0.5μm)技術。工藝流程以0.25μm-0.35μm產品為例,采用DPDM制造的快閃存儲器需要23塊Mask版,進行27次光刻。
cc2. 隧道效應(Fowlerordheim)存儲單元
cc隧道效應存儲單元是目前快速發(fā)展的快閃存儲器生產技術,在快閃存儲器中一般組成NAND存儲陣列,單元面積小,其工藝較簡單,容量大,成本低,適用于低價格、高容量、速度要求不高的Flash memory客戶用于數據存儲;在MP3、PAD、數碼相機、2.5G及3G無線系統(tǒng)中得到了廣泛的應用。
cc圖2是隧道效應存儲單元結構原理圖,其編程、擦除通過隧道氧化層的隧道效應來實現,類似EEPROM,其優(yōu)點是在編程時可以工作在2.5V的源漏電壓下,功耗低,非常適合非接觸式IC卡,同時NAND陣列的單元面積是NOR SGC單元面積的二分之一,適合于大容量集成。
cc
cc隧道效應存儲單元擦寫工作電壓高,一般要求達到16V-20V,對器件、電路的設計要求高,編程(寫)時間較長,在50μs-100μs,不適合字節(jié)編程,適用于大容量頁編程,像EEPROM一樣,編程時,加在隧道氧化層上電場強度高,存在SILC(stress induced leakage currents)效應,對工藝要求高。
3. 數據讀取原理
對于NOR以及NAND FLASH Memory,向浮柵中注入電荷表示寫入了‘0’,沒有注入電荷表示‘1’,所以對FLASH清除數據是寫1的,這與硬盤正好相反;
對于浮柵中有電荷的單元來說,由于浮柵的感應作用,在源極和漏極之間將形成帶正電的空間電荷區(qū),這時無論控制極上有沒有施加偏置電壓,晶體管都將處于導通狀態(tài)。而對于浮柵中沒有電荷的晶體管來說只有當控制極上施加有適當的偏置電壓,在硅基層上感應出電荷,源極和漏極才能導通,也就是說在沒有給控制極施加偏置電壓時,晶體管是截止的。
如果晶體管的源極接地而漏極接位線,在無偏置電壓的情況下,檢測晶體管的導通狀態(tài)就可以獲得存儲單元中的數據,如果位線上的電平為低,說明晶體管處于導通狀態(tài),讀取的數據為0,如果位線上為高電平,則說明晶體管處于截止狀態(tài),讀取的數據為1。由于控制柵極在讀取數據的過程中施加的電壓較小或根本不施加電壓,不足以改變浮置柵極中原有的電荷量,所以讀取操作不會改變FLASH中原有的數據。
二 連接和編址方式
兩種FLASH具有相同的存儲單元,工作原理也一樣,為了縮短存取時間并不是對每個單元進行單獨的存取操作,而是對一定數量的存取單元進行集體操作,NAND型FLASH各存儲單元之間是串聯(lián)的,而NOR型FLASH各單元之間是并聯(lián)的,為了對全部的存儲單元有效管理,必須對存儲單元進行統(tǒng)一編址。
1. NOR Flash連接
NOR Flash的每個存儲單元以并聯(lián)的方式連接到位線,方便對每一位進行隨機存?。痪哂歇毩⒌臄祿€和地址線,可以實現隨機存取;縮短了FLASH對處理器指令的執(zhí)行時間。
NOR Flash可以單字節(jié)或單字編程,但不能單字節(jié)擦除,必須以塊為單位或對整片執(zhí)行擦除操作,在對存儲器進行重新編程之前需要對塊或整片進行預編程和擦除操作,但是擦除和編程速度較慢。
2. NAND Flash的結構
NAND Flash 的數據是以bit的方式保存在memory cell,一般來說,一個cell 中只能存儲一個bit。這些cell 以8個或者16個為單位,連成bit line,形成所謂的byte(x8)/word(x16),這就是NAND Device的位寬。這些Line會再組成Page,若干個Page構成一個Block,一個NAND Flash存儲器包含若干個Block。
三星的K9F1208U0M每頁528Bytes(512byte(Main Area)+16byte(Spare Area),參見說明1),每32個page形成一個Block(32*528B),具有4096個block,故總容量為4096*(32*528B)=66MB,但是其中的2MB是用來保存ECC校驗碼等額外數據的,故實際中可使用的為64MB。
說明1:NAND閃存的每一頁都有8B(頁長度 256B)或者16B(頁長度為512B)的OOB(Out Of Band)數據區(qū),用來存放ECC(Error Checking &Correction)、ECC有效標志、壞塊標志等。
NAND flash以頁為單位讀寫數據,而以塊為單位擦除數據。按照這樣的組織方式可以形成所謂的三類地址:
Column Address:Starting Address of the Register. 翻成中文為列地址,地址的低8位
Page Address :頁地址
Block Address :塊地址
對于NAND Flash來講,地址和命令只能在I/O[7:0]上傳遞,數據寬度是8位。
3. NAND Flash尋址舉例
512byte需要9bit來表示,對于528byte系列的NAND,這512byte被分成1st half Page Register和2nd half Page Register,各自的訪問由地址指針命令來選擇,A[7:0]就是所謂的column address(列地址),在進行擦除操作時不需要它,因為以塊為單位擦除。32個page需要5bit來表示,占用A[13:9],即該page在塊內的相對地址。A8這一位地址被用來設置512byte的1st half page還是2nd half page,0表示1st,1表示2nd。Block的地址是由A14以上的bit來表示。
例如64MB(512Mb)的NAND flash(實際中由于存在spare area,故都大于這個值),共4096block,因此,需要12個bit來表示,即A[25:14],如果是128MB(1Gbit) 的528byte/page的NAND Flash,則block address用A[26:14]表示。而page address就是blcok address|page address in block。NAND Flash 的地址表示為: Block Address|Page Address in block|halfpage pointer|Column Address 地址傳送順序是Column Address,Page Address,Block Address。
由于地址只能在I/O[7:0]上傳遞,因此,必須采用移位的方式進行。 例如,對于512Mbit x8的NAND flash,地址范圍是0~0x3FF_FFFF,只要是這個范圍內的數值表示的地址都是有效的。 以NAND_ADDR 為例:
第1 步是傳遞column address,就是NAND_ADDR[7:0],不需移位即可傳遞到I/O[7:0]上,而halfpage pointer即A8 是由操作指令決定的,即指令決定在哪個halfpage 上進行讀寫,而真正的A8 的值是不需程序員關心的。
第2 步就是將NAND_ADDR 右移9位,將NAND_ADDR[16:9]傳到I/O[7:0]上;
第3 步將NAND_ADDR[24:17]放到I/O上;
第4步需要將NAND_ADDR[25]放到I/O上;
因此,整個地址傳遞過程需要4 步才能完成,即4-step addressing。 如果NAND Flash 的容量是32MB(256Mbit)以下,那么,block adress最高位只到bit24,因此尋址只需要3步。
下面,就x16 的NAND flash 器件稍微進行一下說明。 由于一個page 的main area 的容量為256word,仍相當于512byte。但是,這個時候沒有所謂的1st halfpage 和2nd halfpage 之分了,所以,bit8就變得沒有意義了,也就是這個時候 A8 完全不用管,地址傳遞仍然和x8 器件相同。除了,這一點之外,x16 的NAND使用方法和 x8 的使用方法完全相同。
三 NAND Flash和NOR Flash的比較
如果只是用來存儲少量的代碼,這時NOR閃存更適合一些。而NAND則是高數據存儲密度的理想解決方案。
NOR的特點是芯片內執(zhí)行(XIP, eXecute In Place),這樣應用程序可以直接在flash閃存內運行,不必再把代碼讀到系統(tǒng)RAM中。NOR的傳輸效率很高,在1~4MB的小容量時具有很高的成本效益,但是很低的寫入和擦除速度大大影響了它的性能。
NAND結構能提供極高的單元密度,可以達到高存儲密度,并且寫入和擦除的速度也很快。應用NAND的困難在于flash的管理和需要特殊的系統(tǒng)接口。
1.性能比較
flash閃存是非易失存儲器,可以對稱為塊的存儲器單元塊進行擦寫和再編程。任何flash器件的寫入操作只能在空或已擦除的單元內進行,所以大多數情況下,在進行寫入操作之前必須先執(zhí)行擦除。NAND器件執(zhí)行擦除操作是十分簡單的,而NOR則要求在進行擦除前先要將目標塊內所有的位都寫為0。
由于擦除NOR器件時是以64~128KB的塊進行的,執(zhí)行一個寫入/擦除操作的時間為5s,與此相反,擦除NAND器件是以8~32KB的塊進行的,執(zhí)行相同的操作最多只需要4ms。
執(zhí)行擦除時塊尺寸的不同進一步拉大了NOR和NADN之間的性能差距,統(tǒng)計表明,對于給定的一套寫入操作(尤其是更新小文件時),更多的擦除操作必須在基于NOR的單元中進行。這樣,當選擇存儲解決方案時,設計師必須權衡以下的各項因素。
.NOR的讀速度比NAND稍快一些。
.NAND的寫入速度比NOR快很多。
.NAND的4ms擦除速度遠比NOR的5s快。
。大多數寫入操作需要先進行擦除操作。
.NAND的擦除單元更小,相應的擦除電路更少。
2.接口差別
NOR flash帶有SRAM接口,有足夠的地址引腳來尋址,可以很容易地存取其內部的每一個字節(jié)。
NAND器件使用復雜的I/O口來串行地存取數據,各個產品或廠商的方法可能各不相同。8個引腳用來傳送控制、地址和數據信息(地址總線、數據總線復用)。
NAND讀和寫操作采用512字節(jié)的塊,這一點有點像硬盤管理此類操作,很自然地,基于NAND的存儲器就可以取代硬盤或其他塊設備。
3.容量和成本
NAND flash的單元尺寸幾乎是NOR器件的一半,由于生產過程更為簡單,NAND結構可以在給定的模具尺寸內提供更高的容量,也就相應地降低了價格。
NOR flash占據了容量為1~16MB閃存市場的大部分,而NAND flash只是用在8~128MB的產品當中,這也說明NOR主要應用在代碼存儲介質中,NAND適合于數據存儲,NAND在CompactFlash、Secure Digital、PC Cards和MMC存儲卡市場上所占份額最大。
4.可靠性和耐用性
采用flahs介質時一個需要重點考慮的問題是可靠性。對于需要擴展MTBF的系統(tǒng)來說,Flash是非常合適的存儲方案??梢詮膲勖陀眯裕?、位交換和壞塊處理三個方面來比較NOR和NAND的可靠性。壽命(耐用性)在NAND閃存中每個塊的最大擦寫次數是一百萬次,而NOR的擦寫次數是十萬次。NAND存儲器除了具有10比1的塊擦除周期優(yōu)勢,典型的NAND塊尺寸要比NOR器件小8倍,每個NAND存儲器塊在給定的時間內的刪除次數要少一些。
(1)位交換
所有flash器件都受位交換現象的困擾。在某些情況下(很少見,NAND發(fā)生的次數要比NOR多),一個比特位會發(fā)生反轉或被報告反轉了。
一位的變化可能不很明顯,但是如果發(fā)生在一個關鍵文件上,這個小小的故障可能導致系統(tǒng)停機。如果只是報告有問題,多讀幾次就可能解決了。
當然,如果這個位真的改變了,就必須采用錯誤探測/錯誤更正(EDC/ECC)算法。位反轉的問題更多見于NAND閃存,NAND的供應商建議使用NAND閃存的時候,同時使用EDC/ECC算法。
這個問題對于用NAND存儲多媒體信息時倒不是致命的。當然,如果用本地存儲設備來存儲操作系統(tǒng)、配置文件或其他敏感信息時,必須使用EDC/ECC系統(tǒng)以確保可靠性。
(2)壞塊處理
NAND器件中的壞塊是隨機分布的。以前也曾有過消除壞塊的努力,但發(fā)現成品率太低,代價太高,根本不劃算。
NAND器件需要對介質進行初始化掃描以發(fā)現壞塊,并將壞塊標記為不可用。在已制成的器件中,如果通過可靠的方法不能進行這項處理,將導致高故障率。
5.易于使用
可以非常直接地使用基于NOR的閃存,可以像其他存儲器那樣連接,并可以在上面直接運行代碼。
由于需要I/O接口,NAND要復雜得多。各種NAND器件的存取方法因廠家而異。在使用NAND器件時,必須先寫入驅動程序,才能繼續(xù)執(zhí)行其他操作。向NAND器件寫入信息需要相當的技巧,因為設計師絕不能向壞塊寫入,這就意味著在NAND器件上自始至終都必須進行虛擬映射。
6.軟件支持
當討論軟件支持的時候,應該區(qū)別基本的讀/寫/擦操作和高一級的用于磁盤仿真和閃存管理算法的軟件,包括性能優(yōu)化。
在NOR器件上運行代碼不需要任何的軟件支持,在NAND器件上進行同樣操作時,通常需要驅動程序,也就是內存技術驅動程序(MTD),NAND和NOR器件在進行寫入和擦除操作時都需要MTD。
使用NOR器件時所需要的MTD要相對少一些,許多廠商都提供用于NOR器件的更高級軟件,這其中包括M-System的TrueFFS驅動,該驅動被Wind River System、Microsoft、QNX Software System、Symbian和Intel等廠商所采用。
驅動還用于對DiskOnChip產品進行仿真和NAND閃存的管理,包括糾錯、壞塊處理和損耗平衡。(糾正一點:NOR擦除時,是全部寫1,不是寫0,而且,NOR FLASH SECTOR擦除時間視品牌、大小不同而不同,比如,4M FLASH,有的SECTOR擦除時間為60ms,而有的需要最大6S。)NOR FLASH的主要供應商是INTEL ,MICRO等廠商,曾經是FLASH的主流產品,但現在被NAND FLASH擠的比較難受。它的優(yōu)點是可以直接從FLASH中運行程序,但是工藝復雜,價格比較貴。NAND FLASH的主要供應商是SAMSUNG和東芝,在油盤、各種存儲卡、MP3播放器里面的都是這種FLASH,由于工藝上的不同,它比NOR FLASH擁有更大存儲容量,而且便宜。但也有缺點,就是無法尋址直接運行程序,只能存儲數據。另外NAND FLASH 非常容易出現壞區(qū),所以需要有校驗的算法。在掌上電腦里要使用NAND FLASH 存儲數據和程序,但是必須有NOR FLASH來啟動。除了SAMSUNG處理器,其他用在掌上電腦的主流處理器還不支持直接由NAND FLASH 啟動程序。因此,必須先用一片小的NOR FLASH 啟動機器,在把OS等軟件從NAND FLASH 載入SDRAM中運行。
參考資料
1. 嵌入式Flash Memory Cell技術2. NAND與NOR FLASH的原理與異同
3. NAND Flash和NOR Flash的比較
4. nand flash 原理簡介
內容來自百科網