846
技術社區[雲棲]
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型閃存。根據這一原則,設計人員也可以把兩種閃存芯片結合起來使用,用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等廠商所采用。
最後更新:2017-04-03 14:54:36