詳述NOR Flash和NAND Flash區別

一、歷史

在介紹NOR Flash和NAND Flash之前,首先介紹一下NOR Flash和NAND Flash的產生歷史。

1、EPROM

Intel很早就發明了EPROM,這是一種可以用紫外線擦除的存儲器。相較於ROM,它的內容可以更新而且可以保持10~20年,老式電腦的BIOS都存儲於此。它的頂部必須被覆蓋住,以防被陽光裏的紫外線擦除。

發明者:Intel。

痛點:用紫外線擦除的存儲器,擦除很麻煩。

2、EEPROM

後來Intel在其基礎上於1978年發明了電可擦除的升級版叫做EEPROM。不需要陽光的幫忙,方便多了,可是讀取和擦除速度卻非常緩慢。

發明者:Intel。

痛點:擦除速度很慢。

3、NOR Flash

桀岡富士雄(Fujio Masuoka),他於1971年加入了東芝公司。受到了EEPROM的啓發,他開始利用自己夜晚和週末的時間鑽研一種能快速擦除的EERPOM(我們也要向他學習啊)。他在1980年取得突破,申請了一個叫做simultaneously erasable EEPROM的專利。當他拿着他的樣品參加當年的IEEE大會的時候,NOR Flash引起了轟動。由於新發明的這種EEPROM擦除速度飛快,富士雄的同事建議他把這種技術取名Flash,暗合相機的閃光燈飛快閃爍之意。

發明者:桀岡富士雄(Fujio Masuoka)(東芝)。

痛點:製造成本高。

4、NAND Flash

富士雄卻並沒有停止他的追求,在1986年發明了NAND Flash,大大降低了製造成本。

發明者:桀岡富士雄(Fujio Masuoka)(東芝)。

 

二、工作原理

1、存儲數據原理

兩種Flash都是用三端器件作爲存儲單元,分別爲源極、漏極和柵極,與場效應管的工作原理相同,主要是利用電場的效應來控制源極與漏極之間的通斷。柵極的電流消耗極小,不同的是場效應管爲單柵極結構,而 Flash爲雙柵極結構,在柵極與硅襯底之間增加了一個浮置柵極。浮置柵極是由氮化物夾在兩層二氧化硅材料之間構成的,中間的氮化物就是可以存儲電荷的電荷勢阱。上下兩層氧化物的厚度大於50埃(埃米是晶體學、原子物理、超顯微結構等常用的長度單位,音譯爲"埃",符號爲Å,1Å等於10-10m,即納米的十分之一),以避免發生擊穿。

2、浮柵的充放電

向數據單元內寫入數據的過程就是向電荷勢阱注入電荷的過程,寫入數據有兩種技術,熱電子注入(hot electron injection)和F-N隧道效應(Fowler Nordheim tunneling),前一種是通過源極給浮柵充電,後一種是通過硅基層給浮柵充電。NOR Flash通過熱電子注入方式給浮柵充電,而NAND Flash則通過F-N隧道效應給浮柵充電。

在寫入新數據之前,必須先將原來的數據擦除,這點跟硬盤不同,也就是將浮柵的電荷放掉,兩種Flash都是通過F-N隧道效應放電。

3、0和1

這方面兩種Flash一樣,向浮柵中注入電荷表示寫入了0,沒有注入電荷表示1,所以對 Flash清除數據是寫1的,這與硬盤正好相反。

對於浮柵中有電荷的單元來說,由於浮柵的感應作用,在源極和漏極之間將形成帶正電的空間電荷區,這時無論控制極上有沒有施加偏置電壓,晶體管都將處於導通狀態。而對於浮柵中沒有電荷的晶體管來說只有當控制極上施加有適當的偏置電壓,在硅基層上感應出電荷,源極和漏極才能導通,也就是說在沒有給控制極施加偏置電壓時,晶體管是截止的。如果晶體管的源極接地而漏極接位線,在無偏置電壓的情況下,檢測晶體管的導通狀態就可以獲得存儲單元中的數據,如果位線上的電平爲低,說明晶體管處於導通狀態,讀取的數據爲0,如果位線上爲高電平,則說明晶體管處於截止狀態,讀取的數據爲1。由於控制柵極在讀取數據的過程中施加的電壓較小或根本不施加電壓,不足以改變浮置柵極中原有的電荷量,所以讀取操作不會改變Flash中原有的數據。

4、連接和編址方式

兩種Flash具有相同的存儲單元,工作原理也一樣,爲了縮短存取時間並不是對每個單元進行單獨的存取操作,而是對一定數量的存取單元進行集體操作。NOR Flash各單元之間是並聯的,而NAND Flash各存儲單元之間是串聯的。爲了對全部的存儲單元有效管理,必須對存儲單元進行統一編址。

NOR Flash的每個存儲單元以並聯的方式連接到位線,方便對每一位進行隨機存取;具有專用的地址線,可以實現一次性的直接尋址;縮短了Flash對處理器指令的執行時間。

NAND Flash的全部存儲單元分爲若干個塊,每個塊又分爲若干個頁,每個頁是 512B,就是512個8位數,就是說每個頁有512條位線,每條位線下有8個存儲單元;那麼每頁存儲的數據正好跟硬盤的一個扇區存儲的數據相同,這是設計時爲了方便與磁盤進行數據交換而特意安排的,那麼塊就類似硬盤的簇;容量不同,塊的數量不同,組成塊的頁的數量也不同。 在讀取數據時,當字線和位線鎖定某個晶體管時,該晶體管的控制極不加偏置電壓,其它的7個都加上偏置電壓而導通,如果這個晶體管的浮柵中有電荷就會導通使位線爲低電平,讀出的數就是0,反之就是1。

 

三、共性

1、都是非易失存儲介質

即掉電都不會丟失內容。

2、在寫入前都需要擦除

Flash進行寫操作時,只能將相應的位由1變0,而擦除才能把塊內所有位由0變1。所有寫入數據時,如果該頁已經存在數據,必須先擦除再寫。

 

四、特性

1、NOR Flash

(1)能像RAM一樣尋址

NOR Flash帶有SRAM接口,有足夠的地址引腳來尋址,可以很容易地存取其內部的每一個字節。

(2)用戶可以直接運行裝載在NOR Flash裏面的代碼

NOR Flash有自己的數據和地址總線,因此可採用類似RAM的隨機訪問。各單元之間是並聯的,對存儲單元進行統一編址(有獨立地址線),所以可以隨機訪問任意一個字。

應用程序可以直接在NOR Flash內運行(應用程序的Code和RO段可以直接在NOR Flash上運行,只需要把RW段和ZI段拷貝到RAM中運行即可),不必再把代碼讀到系統RAM中去。

NOR Flash不能像RAM以字節改寫數據,只能按頁依次寫數據,故NOR Flash不能代替RAM

(3)有更快的讀取速度,處理小數據量的I/O操作速度更快

NOR Flash可以對字進行操作,相比於NAND Flash有更快的讀取速度,更慢的擦寫速度。但NAND Flash頁是讀寫數據的最小單元(一般512B),塊是擦除數據的最小單元(一般是8KB)。相對而言,對小數據量的I/O操作NOR Flash速度更快且更方便。

(4)擦除既可整頁擦除,也可整塊擦除。擦寫次數是10萬次,不適合頻繁擦寫

Flash檫寫的次數都是有限的,Flash寫入和擦除數據時會導致介質的氧化降解。當Flash接近使用壽命時,經常會出現一些操作失敗。到達使用壽命時,Flash內部存放的數據雖然可以讀,但是不能再進行寫操作,所以爲了防止上面問題的發生,不能對Flash的某個特定的區域反覆進行擦寫操作。

(5)隨機存儲介質,適合做程序存儲並XIP

(6)在1~4MB的小容量時具有很高的成本效益

NOR Flash容量較小,成本較高。

(7)可靠性相對更高

NOR Flash的接口簡單,數據操作少,因此可靠性高,極少出現塊區塊,因而一般用在對可靠性要求高的地方。

(8)存儲密度較低

2、NAND Flash

(1)有更快的寫入和擦除速度

頁是讀寫數據的最小單元(一般512B),塊是擦除數據的最小單元(一般是8KB)。

(2)NAND的擦寫次數是100萬次

通常NAND Flash的可擦寫次數高於NOR Flash,但是由於NAND Flash通常是整塊檫寫,塊內的頁面中如果有一位失效整個快就會失效,而且由於擦寫過程複雜,失敗的概率相對較高,所以從整體上來說NOR Flash的壽命較長。

(3)連續存儲介質,適合做數據存儲

(4)容量較大,成本較低

由於對NAND Flash的操作都是以塊和頁爲單位的,所以在向NAND Flash進行大量數據讀寫時,NAND Flash的速度要快於NOR Flash,並且NAND Flash成本較低。

(5)可靠性相對更低

NAND Flash接口和操作均相對複雜,NAND器件使用複雜的I/O口來串行地存取數據,各個產品或廠商的方法可能各不相同。8個引腳用來傳送控制、地址和數據信息。同時NAND Flash位交換操作也很多,關鍵性數據更是需安錯誤探測/錯誤更正算法來確保數據的完整性,因此出現問題的機率要大的多,壞區塊也是不可避免的,而且由於壞區塊是隨機分佈的,連糾錯也無法做到。建議在使用NAND Flash時,要採用EDC/ECC等校驗算法。

(6)壞塊隨機分配,需要進行壞塊管理

在NAND Flash中,由於壞塊是隨機分佈的,因此需要進行掃描並將壞塊打上標記。壞塊的存在使得向NAND Flash寫入信息需要相當的技巧,因爲絕不能向壞塊寫入,這意味着在NAND Flash上自始自終都必須進行虛擬映射。

(7)存儲密度較高

(8)使用NAND Flash時,必須先寫入驅動程序,才能繼續執行其他操作

在使用NAND器件時,必須先寫入驅動程序,才能繼續執行其他操作。向NAND器件寫入信息需要相當的技巧,因爲設計師絕不能向壞塊寫入,這就意味着在NAND器件上自始至終都必須進行虛擬映射。

3、總結

屬性

NOR Flash

NAND Flash

容量

較小

很大

XIP(可執行code)

可以

不可以

讀取速度

很快

寫入速度

擦除速度

很慢

可擦除次數

10,000-100,000

100,000-1000,000

存儲方式

隨機存儲

連續存儲

存儲密度

較低

較高

內部結構

地址線和數據線分開

地址線和數據線共用

可靠性

較低

訪問方式

可隨機訪問

塊方式

操作方式

簡單

複雜

價格

適用場合

程序存儲

數據存儲

 

五、應用場景

1、NOR Flash

(1)BIOS程序存儲介質和機頂盒

NOR Flash和普通的內存比較像的一點是他們都可以支持隨機訪問,這使它也具有支持XIP(eXecute In Place)的特性,可以像普通ROM一樣執行程序。這點讓它成爲BIOS等開機就要執行的代碼的絕佳載體。

NOR Flash根據與Host端接口的不同,可以分爲Parallel NOR Flash和Serial NOR Flash兩類。

Parallel NOR Flash可以接入到Host的控制器 上,所存儲的內容可以直接映射到CPU地址空間,不需要拷貝到RAM中即可被CPU訪問。NOR Flash在BIOS中最早就是這種接口,叫做FWH(Firmware HUB),由於其接的是並行接口,速度緩慢,現在基本已經被淘汰。Serial NOR Flash的成本比 Parallel NOR Flash 低,主要通過SPI接口與Host 也就是PCH相連。

現在幾乎所有的BIOS和一些機頂盒上都是使用NOR Flash,它的大小一般在1MB到32MB之間,價格昂貴。

(2)單片機外掛Flash

單片機外掛的Flash一般是SPI Flash。

SPI Flash(serial peripheral interface)是一種常見的時鐘同步串行通信接口,是NOR Flash的一種。

NOR Flash根據數據傳輸的位數可以分爲並行(Parallel)NOR Flash和串行(SPI)NOR Flash(即SPI Flash)。

SPI NOR Flash每次傳輸一個bit的數據,parallel NOR Flash每次傳輸多個bit的數據(有x8bit和x16bit兩種)。

SPI Flash便宜,接口簡單,但速度慢。

(3)單片機片上Flash

單片機片上Flash一般都是NOR Flash。

(4)引導NAND Flash

NAND Flash 沒有采取內存的隨機讀取技術,它的讀取是以一次讀取一塊的形式來進行的, 通常是一次讀取 512 個字節,採用這種技術的 Flash 比較廉價。用戶不能直接運行 NAND Flash 上的代碼,因此好多使用 NAND Flash 的開發板除了使用 NAND Flash 以外,還做上了 一塊小的 NOR Flash 來運行啓動代碼

2、NAND Flash

(1)存儲卡,U盤,SSD,eMMC

NAND Flash廣泛應用在各種存儲卡,U盤,SSD,eMMC等等大容量設備中。它的顆粒根據每個存儲單元內存儲比特個數的不同,可以分爲 SLC(Single-Level Cell)、MLC(Multi-Level Cell) 和 TLC(Triple-Level Cell) 三類。其中,在一個存儲單元中,SLC 可以存儲 1 個比特,MLC 可以存儲 2 個比特,TLC 則可以存儲 3 個比特。

NAND Flash 的單個存儲單元存儲的比特位越多,讀寫性能會越差,壽命也越短,但是成本會更低。

現在高端SSD會選取MLC甚至SLC,低端SSD則選取TLC。SD卡一般選取TLC。

(2)啓動Flash

但目前很多CPU 都可以在上電時,以硬件的方式先將NAND Flash的第一個Block 中的內容(一般是程序代碼,且也許不足一個Block ,如2KB大小)自動Copy到RAM中,然後再運行,因此只要CPU 支持,NAND 也可以當成啓動設備。

 

六、其他

最早的手機等設備之中既有NOR Flash也有NAND Flash。NOR Flash很小,因爲支持XIP,所以負責初始化系統並提供NAND Flash的驅動,類似BootLoader。而NAND Flash則存儲數據和OS鏡像。三星最早提出Norless的概念,在它的CPU on die ROM中固化了NAND Flash的驅動,會把NAND Flash的開始一小段拷貝到內存低端作爲BootLoader,這樣昂貴的NOR Flash就被節省下來了,降低了手機主板成本和複雜度。漸漸NOR Flash在手機中慢慢消失了。

NAND Flash相對NOR Flash更可能發生比特翻轉,就必須採用錯誤探測/錯誤更正(EDC/ECC)算法,同時NAND Flash隨着使用會漸漸產生壞塊;我們在使用NAND Flash的SD卡上經常使用FAT文件系統,文件分配表會被頻繁改寫,而每塊的擦寫次數是NAND Flash壽命的決定性因素。如何才能平衡各塊的擦寫和爲可能的壞塊尋找替換呢?通常需要有一個特殊的軟件層次,實現壞塊管理、擦寫均衡、ECC、垃圾回收等的功能,這一個軟件層次稱爲 FTL(Flash Translation Layer)。根據 FTL 所在的位置的不同,可以把 Flash Memory 分爲 Raw Flash 和 Managed Flash 兩類。最早大家都是使用Raw Flash,FTL全由驅動程序實現。後來發展到SD和eMMC等,則由設備固件實現抽象。

 

參考文獻

[1] https://zhuanlan.zhihu.com/p/26745577

[2] https://www.cnblogs.com/saulgoodman611/p/11444687.html

[3] https://blog.csdn.net/fxltsbl007/article/details/79395078

[4] https://blog.csdn.net/tigerjibo/article/details/9322035

[5] https://zhidao.baidu.com/question/424957114222804852.html

[6] https://baike.baidu.com/item/%E5%9F%83%E7%B1%B3/9584915?fr=aladdin

[7] https://blog.csdn.net/yexiangcsdn/article/details/81383361

[8] https://baijiahao.baidu.com/s?id=1610041455262486965&wfr=spider&for=pc

[9] https://blog.csdn.net/qq_39642794/article/details/85003977

 

注:轉載請註明出處

 

微信公衆號

喜歡我的還可以關注我的微信公衆號:夢想園地,裏面有你意想不到的驚喜哦!

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章