NOR和NAND是如今市場上兩種主要的非易失閃存技術。Intel於1988年首先開發出NOR flash技術,完全改變了原先由EPROM和EEPROM一統天下的局面。緊接着,1989年,東芝公司發表了NAND flash結構,強調下降每比特的成本,更高的性能,而且象磁盤同樣能夠經過接口輕鬆升級。可是通過了十多年以後,仍然有至關多的硬件工程師分不清NOR 和NAND閃存。
相「flash存儲器」常常能夠與相「NOR存儲器」互換使用。許多業內人士也搞不清楚NAND閃存技術相對於NOR技術的優越之處,由於大多數狀況下閃存只是用來存儲少許的代碼,這時NOR閃存更適合一些。而NAND則是高數據存儲密度的理想解決方案。
NOR的特色是芯片內執行(XIP, eXecute In Place),這樣應用程序能夠直接在flash閃存內運行,沒必要再把代碼讀到系統RAM中。NOR的傳輸效率很高,在1~4MB的小容量時具備很高的成本效益,可是很低的寫入和擦除速度大大影響了它的性能。
NAND結構能提供極高的單元密度,能夠達到高存儲密度,而且寫入和擦除的速度也很快。應用NAND的困難在於flash的管理和須要特殊的系統接口。
性能比較
flash 閃存是非易失存儲器,能夠對稱爲塊的存儲器單元塊進行擦寫和再編程。任何flash器件的寫入操做只能在空或已擦除的單元內進行,因此大多數狀況下,在進 行寫入操做以前必須先執行擦除。NAND器件執行擦除操做是十分簡單的,而NOR則要求在進行擦除前先要將目標塊內全部的位都寫爲0。
因爲擦除NOR器件時是以64~128KB的塊進行的,執行一個寫入/擦除操做的時間爲5s,與此相反,擦除NAND器件是以8~32KB的塊進行的,執行相同的操做最多隻須要4ms。
執行擦除時塊尺寸的不一樣進一步拉大了NOR和NADN之間的性能差距,統計代表,對於給定的一套寫入操做(尤爲是更新小文件時),更多的擦除操做必須在基於NOR的單元中進行。這樣,當選擇存儲解決方案時,設計師必須權衡如下的各項因素。
● NOR的讀速度比NAND稍快一些。
● NAND的寫入速度比NOR快不少。
● NAND的4ms擦除速度遠比NOR的5s快。
● 大多數寫入操做須要先進行擦除操做。
● NAND的擦除單元更小,相應的擦除電路更少。
接口差異
NOR flash帶有SRAM接口,有足夠的地址引腳來尋址,能夠很容易地存取其內部的每個字節。
NAND器件使用複雜的I/O口來串行地存取數據,各個產品或廠商的方法可能各不相同。8個引腳用來傳送控制、地址和數據信息。
NAND讀和寫操做採用512字節的塊,這一點有點像硬盤管理此類操做,很天然地,基於NAND的存儲器就能夠取代硬盤或其餘塊設備。
容量和成本
NAND flash的單元尺寸幾乎是NOR器件的一半,因爲生產過程更爲簡單,NAND結構能夠在給定的模具尺寸內提供更高的容量,也就相應地下降了價格。
NOR flash佔據了容量爲1~16MB閃存市場的大部分,而NAND flash只是用在8~128MB的產品當中,這也說明NOR主要應用在代碼存儲介質中,NAND適合於數據存儲,NAND在CompactFlash、 Secure Digital、PC Cards和MMC存儲卡市場上所佔份額最大。
可*性和耐用性
採用flahs介質時一個須要重點考慮的問題是可*性。對於須要擴展MTBF的系統來講,Flash是很是合適的存儲方案。能夠從壽命(耐用性)、位交換和壞塊處理三個方面來比較NOR和NAND的可*性。
壽命(耐用性)
在NAND閃存中每一個塊的最大擦寫次數是一百萬次,而NOR的擦寫次數是十萬次。NAND存儲器除了具備10比1的塊擦除週期優點,典型的NAND塊尺寸要比NOR器件小8倍,每一個NAND存儲器塊在給定的時間內的刪除次數要少一些。git
位交換
全部flash器件都受位交換現象的困擾。在某些狀況下(不多見,NAND發生的次數要比NOR多),一個比特位會發生反轉或被報告反轉了。
一位的變化可能不很明顯,可是若是發生在一個關鍵文件上,這個小小的故障可能致使系統停機。若是隻是報告有問題,多讀幾回就可能解決了。
固然,若是這個位真的改變了,就必須採用錯誤探測/錯誤更正(EDC/ECC)算法。位反轉的問題更多見於NAND閃存,NAND的供應商建議使用NAND閃存的時候,同時使用EDC/ECC算法。
這個問題對於用NAND存儲多媒體信息時倒不是致命的。固然,若是用本地存儲設備來存儲操做系統、配置文件或其餘敏感信息時,必須使用EDC/ECC系統以確保可*性。
壞塊處理
NAND器件中的壞塊是隨機分佈的。之前也曾有過消除壞塊的努力,但發現成品率過低,代價過高,根本不划算。
NAND器件須要對介質進行初始化掃描以發現壞塊,並將壞塊標記爲不可用。在已製成的器件中,若是經過可*的方法不能進行這項處理,將致使高故障率。
易於使用
能夠很是直接地使用基於NOR的閃存,能夠像其餘存儲器那樣鏈接,並能夠在上面直接運行代碼。
因爲須要I/O接口,NAND要複雜得多。各類NAND器件的存取方法因廠家而異。
在使用NAND器件時,必須先寫入驅動程序,才能繼續執行其餘操做。向NAND器件寫入信息須要至關的技巧,由於設計師毫不能向壞塊寫入,這就意味着在NAND器件上自始至終都必須進行虛擬映射。
軟件支持
當討論軟件支持的時候,應該區別基本的讀/寫/擦操做和高一級的用於磁盤仿真和閃存管理算法的軟件,包括性能優化。
在NOR器件上運行代碼不須要任何的軟件支持,在NAND器件上進行一樣操做時,一般須要驅動程序,也就是內存技術驅動程序(MTD),NAND和NOR器件在進行寫入和擦除操做時都須要MTD。
使 用NOR器件時所須要的MTD要相對少一些,許多廠商都提供用於NOR器件的更高級軟件,這其中包括M-System的TrueFFS驅動,該驅動被 Wind River System、Microsoft、QNX Software System、Symbian和Intel等廠商所採用。
驅動還用於對DiskOnChip產品進行仿真和NAND閃存的管理,包括糾錯、壞塊處理和損耗平衡。算法