應用程式對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等廠商所採用。
NOR型flash與NAND型flash的區別
1 快閃儲存器晶元讀寫的基本單位不同 應用程式對nor晶元操作以 字 為基本單位。為了方便對大容量nor快閃儲存器的管理,通常將nor快閃儲存器分成大小為128kb或者64kb的邏輯塊,有時候塊內還分成扇區。讀寫時需要同時指定邏輯塊號和塊內偏移。應用程式對nand晶元操作是以 塊 為基本單位。nan...
NOR型flash與NAND型flash的區別
1 快閃儲存器晶元讀寫的基本單位不同 nor 以 字 為最小操作單位 nand 以 塊 為最小操作單位 應用程式對nor晶元操作以 字 為基本單位。為了方便對大容量nor快閃儲存器的管理,通常將nor快閃儲存器分成大小為128kb或者64kb的邏輯塊,有時候塊內還分成扇區。讀寫時需要同時指定邏輯塊號...
NOR型flash與NAND型flash的區別
快閃儲存器晶元讀寫的基本單位不同 應用程式對nor晶元操作以 字 為基本單位。為了方便對大容量nor快閃儲存器的管理,通常將nor快閃儲存器分成大小為128kb或者64kb的邏輯塊,有時候塊內還分成扇區。讀寫時需要同時指定邏輯塊號和塊內偏移。應用程式對nand晶元操作是以 塊 為基本單位。nand快...