1. 程式人生 > >NOR flash 和NAND flash區別深入分析

NOR flash 和NAND flash區別深入分析

 快閃記憶體晶片讀寫的基本單位不同 
 
 應用程式對NOR晶片操作以“字”為基本單位。為了方便對大容量NOR快閃記憶體的管理,通常將NOR快閃記憶體分成大小為128KB或者64KB的邏輯塊,有時候塊內還分成扇區。讀寫時需要同時指定邏輯塊號和塊內偏移。應用程式對NAND晶片操作是以“塊”為基本單位。NAND快閃記憶體的塊比較小,一般是8KB,然後每塊又分成頁,頁的大小一般是512位元組。要修改NAND晶片中一個位元組,必須重寫整個資料塊。 
 
 2)NOR快閃記憶體是隨機儲存介質,用於資料量較小的場合;NAND快閃記憶體是連續儲存介質,適合存放大的資料。 
 
 3) 由於NOR地址線和資料線分開,所以NOR晶片可以像SRAM一樣連在資料線上。NOR晶片的使用也類似於通常的記憶體晶片,它的傳輸效率很高,可執行程式可以在晶片內執行( XI P, eXecute In Place),這樣應用程式可以直接在flash快閃記憶體內執行,不必再把程式碼 讀到系統RAM中。由於NOR的這個特點,嵌入式系統中經常將NOR晶片做啟動晶片使用。而NAND共用地址和資料匯流排,需要額外聯結一些控制的輸入輸出,所以直接將NAND晶片做啟動晶片比較難。 
 
 4) N AN D快閃記憶體晶片因為共用地址和資料匯流排的原因,不允許對一個位元組甚至一個塊進行的資料清空,只能對一個固定大小的區域進行清零操作;而NOR晶片可以對字進行操作。所以在處理小資料量的I/O操作的時候的速度要快與NAND的速度。比如一塊NOR晶片通 常寫一個字需要10微秒,那麼在32位總線上寫512位元組需要1280毫秒;而NAND快閃記憶體寫512位元組需要的時間包括:512×每位元組50納秒+10微秒的尋頁時間+200微秒的片擦寫時間=234微秒。 
 
 5)NAND快閃記憶體的容量比較大,目前最大容量己經達到8G位元組。為了方便管理,NAND的儲存空間使用了塊和頁兩級儲存體系,也就是說快閃記憶體的儲存空間是二維的,比如K9F5608UOA快閃記憶體塊的大小為16K,每頁的大小是512位元組,每頁還16位元組空閒區用來存放錯誤校驗碼空間(有時也稱為out-of-band,OOB空間);在進行寫操作的時候NAND快閃記憶體每次將一個位元組的資料放入內部的快取區,然後再發出“寫指令”進行寫操作。由於對NAND快閃記憶體的操作都是以塊和頁為單位的,所以在向NAND快閃記憶體進行大量資料的讀寫時,NAND的速度要快於NOR快閃記憶體。 
 
 6)NOR快閃記憶體的可靠性要高於NAND快閃記憶體,這主要是因為NOR型快閃記憶體的介面簡單,資料操作少,位交換操作少,因此可靠性高,極少出現壞區塊,因而一般用在對可靠性要求高的地方。相反的,NAND型快閃記憶體介面和操作均相對複雜,位交換操作也很多,關鍵性資料更是需安錯誤探測/錯誤更正〔EDC/ECC)演算法來確保資料的完整性,因此出現問題的機率要大得多,壞區塊也是不可避免的,而且由於壞區塊是隨機分佈的,連糾錯也無法做到。 
 
 7)NAND Flash一般地址線和資料線共用,對讀寫速度有一定影響;而NOR Flash快閃記憶體資料線和地址線分開,所以相對而言讀寫速度快一些。 
 
 NAND和NOR晶片的共性首先表現在向晶片中寫資料必須先將晶片中對應的內容清空,然後再寫入,也就是通常說的“先擦後寫”。只不過NOR晶片只用擦寫一個字,而NAND需要擦寫整個塊。其次,快閃記憶體擦寫的次數都是有限的.當快閃記憶體的使用接近使用壽命的時候,經常會出現寫操作失敗;到達使用壽命時,快閃記憶體內部存放的資料雖然可以讀,但是不能再進行寫操作了所以為了防止上面問題的發生,不能對某個特定的區域反覆進行寫操作。通常NAND的可擦寫次數高於NOR晶片,但是由於NAND通常是整塊擦寫,塊內的頁面中如果有一位失效整個塊就會失效,而且由於擦寫過程複雜,失敗的概率相對較高,所以從整體上來說NOR的壽命較長。 
 
 另一個共性是快閃記憶體的讀寫操作不僅僅是一個物理操作,實際上在快閃記憶體上存放資料必須使用演算法實現,這個模組一般在驅動程式的MTD' (Memory Technology Drivers)模組中或者在FTLZ (Flash Translation Layer)層內實現,具體演算法和晶片的生產廠商以及晶片型號有關係。

從使用角度來看,NOR快閃記憶體與NAND快閃記憶體是各有特點的:(1)NOR的儲存密度低,所以儲存一個位元組的成本也較高,而NAND快閃記憶體的儲存密度和儲存容量均比較高;(2)NAND型快閃記憶體在擦、寫檔案(特別是連續的大檔案)時速度非常快,非常適用於順序讀取的場合,而NOR的讀取速度很快,在隨機存取的應用中有良好的表現。               NOR與NAND各有所長,但兩種優勢無法在一個晶片上得到體現。所以,設計人員在選用晶片時,只能趨其利而避其害,依照使用目的和主要功能在兩者之間進行適當的選擇。

 

 


NAND與NOR技術的比較

 

       一般的原則是:在大容量的多媒體應用中選用NAND型快閃記憶體,而在資料/程式存貯應用中選用NOR型快閃記憶體。根據這一原則,設計人員也可以把兩種快閃記憶體晶片結合起來使用,用NOR晶片儲存程式,用NAND晶片儲存資料,使兩種快閃記憶體的優勢互補。事實上,這種聰明的設計早已普遍應用於手機、PocketPC、PDA及電子詞典等裝置中了。

      在選擇儲存解決方案時,設計師必須在多種因素之間進行權衡,以獲得較高的價效比。以手機為例,採用支援XIP技術的NOR快閃記憶體能夠直接執行OS,速度很快,既簡化了設計,又降低了成本,所以許多手機都採用NOR+RAM的設計。NOR快閃記憶體的不足之處是儲存密度較低,所以也有采用NAND+RAM的設計。對於這兩種方案,很難說哪一種更好,因為我們不能離開具體的產品而從某一個方面單純地去評價。追求小巧優雅的手機將需要NOR快閃記憶體支援;追求大儲存容量的手機則將更多地選擇NAND快閃記憶體;而同時追求功能和速度的手機則會採用NOR+NAND+RAM的設計,這種取長補短的設計能夠發揮NOR和NAND各自的優勢。

        除了速度、儲存密度的因素,設計師在選擇快閃記憶體晶片時,還需要考慮介面設計、即插即用設計和驅動程式等諸多問題,因為兩種型別的快閃記憶體在上述幾個方面也有很多的不同。譬如在驅動程式方面,NOR器件執行程式碼不需要任何的軟體支援,而在NAND器件上進行同樣操作時就需要儲存技術驅動程式(MTD)的支援。雖然NAND和NOR器件在進行寫入和擦除操作時都需要MTD,但對於NAND來說驅動程式的開發難度更大,因為NAND快閃記憶體的糾錯和壞塊處理功能都需要通過驅動程式來實現。

使用性差異

在使用性上體現出的差異也是與NOR和NAND自身的架構設計分不開的,首先在介面方面,NOR的設計有明顯的傳統快閃記憶體的特徵,因此實際應用起來相對於NAND全新的複雜I/O設計要容易得多。而且,在使用NAND快閃記憶體時,必須先寫入驅動程式,才能繼續執行其他操作。

其次,在可重複擦寫的能力方面,NAND的每塊可擦寫次數在10萬至100萬次之間,NOR則只是它的1/10,而且NAND的每個擦除塊的容量也只有NOR的1/8至1/2,這就表明,每個塊的擦寫的頻率要少於NOR快閃記憶體,從而有助於延長使用壽命。在資料的儲存時間上,兩者都差不多,為10年的水平。

不過,由於串聯的架構,NAND的電晶體之間更容易造成影響,使邏輯0變成邏輯1,並且也很難發現出問題的電晶體,這種現象可稱為位翻轉(Bit-Flipping),這就需要動用EDC/ECC(錯誤檢測碼/錯誤修正碼)來進行校正,這方面的問題NOR則較少出現。

另外,NAND在使用中還存在著壞塊管理的問題,在NAND快閃記憶體中,由於壞塊是隨機分佈的,因此需要進行掃描並將壞塊打上標記,就像對付硬碟中的壞扇區一樣。目前的產品中,可最多允許出現80個壞塊。壞塊的存在使得向NAND快閃記憶體寫入資訊需要相當的技巧,因為設計師絕不能向壞塊寫入,這就意味著在NAND快閃記憶體上自始至終都必須進行虛擬對映。

在軟體支援程度方面,應該區別基本的讀/寫/擦操作和高一級的用於磁碟模擬和快閃記憶體管理演算法的軟體,包括效能優化。

在NOR快閃記憶體上執行程式碼不需要任何的軟體支援,在NAND快閃記憶體上進行同樣操作時,通常需要驅動程式,也就是記憶體技術驅動程式(MTD),NAND和NOR快閃記憶體在進行寫入和擦除操作時都需要MTD。

使用NOR快閃記憶體時所需要的MTD要相對少一些,許多廠商都提供用於NOR快閃記憶體的更高階軟體,這其中包括M-System的TrueFFS驅動,該驅動被Wind River System、Microsoft、QNX Software System、Symbian和Intel等廠商所採用。