一、Flash基本原理及分類(lèi)
1.1、基本存儲(chǔ)單元
存儲(chǔ)數(shù)據(jù)基本的元件:浮柵場(chǎng)效應(yīng)管
存儲(chǔ)時(shí),信息存放在浮置柵極中,浮置柵極有無(wú)電荷或電荷量來(lái)表明當(dāng)前存儲(chǔ)的數(shù)據(jù):
1.2、存儲(chǔ)顆粒分類(lèi)
當(dāng)前存儲(chǔ)顆粒主要分類(lèi):SLC、MLC、TLC、QLC
單位存儲(chǔ)單元下數(shù)據(jù)存儲(chǔ)密度:(一個(gè)存儲(chǔ)單元要表示的數(shù)據(jù)類(lèi)型)
SLC (Single-Level Cell) 單個(gè)存儲(chǔ)單元存儲(chǔ)1bit數(shù)據(jù),即表示2種(2^1)數(shù)據(jù)狀態(tài):0和1
MLC (Multi-Level Cell) 單個(gè)存儲(chǔ)單元存儲(chǔ)2bit數(shù)據(jù),即表示4種(2^2)數(shù)據(jù)狀態(tài):00,01,10,11
TLC (Trinary-Level Cell) 單個(gè)存儲(chǔ)單元存儲(chǔ)3bit數(shù)據(jù),即表示8種(2^3)數(shù)據(jù)狀態(tài):000,……,111
QLC (Quad-Level Cell) 單個(gè)存儲(chǔ)單元存儲(chǔ)4bit數(shù)據(jù),即表示16種(2^4)數(shù)據(jù)狀態(tài):0000,……,1111
注:?jiǎn)蝹€(gè)存儲(chǔ)單元:指一個(gè)浮柵場(chǎng)效應(yīng)管
對(duì)于一個(gè)存儲(chǔ)單元存儲(chǔ)多個(gè)bit的情況,識(shí)別和寫(xiě)入通常是通過(guò)控制閾值電壓來(lái)實(shí)現(xiàn),閾值電壓可以通過(guò)調(diào)整浮置柵極的電荷量(電荷量越多導(dǎo)通性越好,分壓越小)實(shí)現(xiàn)。
顆粒配合制作工藝實(shí)現(xiàn):2D和3D Flash技術(shù),2D最早在SLC階段應(yīng)用廣泛,3D在TLC階段應(yīng)用廣發(fā),具體結(jié)構(gòu)區(qū)分:
2D內(nèi)部結(jié)構(gòu):
3D內(nèi)部構(gòu)造:
3D芯片內(nèi)部結(jié)構(gòu):
1.3、Flash存儲(chǔ)分類(lèi)
存儲(chǔ)技術(shù)分類(lèi):NandFlash、NorFlash
存儲(chǔ)芯片分類(lèi):目前市面上常見(jiàn)的集成存儲(chǔ)芯片類(lèi)型:eMMC、UFS、SPI-Flash、QSPI-Flash、各尺寸的SD卡等。
NandFlash存儲(chǔ)陣列:
NorFlash存儲(chǔ)陣列:
寫(xiě)入數(shù)據(jù):
NorFlash:熱電子注入效應(yīng)(高壓溝道雪崩擊穿注入電子流)
NandFlash:F-N隧道效應(yīng)(P/N結(jié)半導(dǎo)體導(dǎo)電特性)
讀取時(shí)控制柵極的控制電壓不會(huì)過(guò)大影響浮置柵極的電荷,因此可以依據(jù)有無(wú)電荷讀取存儲(chǔ)的數(shù)據(jù),當(dāng)浮置柵極有電荷時(shí),源極和漏極可以導(dǎo)通,讀取到的bit是0;擦除后浮置柵極無(wú)電荷,源極和漏極不能導(dǎo)通,讀取的bit是1(控制柵極的電平);
讀取數(shù)據(jù):
NorFlash一次最小可以讀取1bit數(shù)據(jù),NandFlash一次最小可以讀取1byte數(shù)據(jù);
擦除數(shù)據(jù):
NorFlash和NandFlash都是通過(guò)F-N隧道效應(yīng)擦除數(shù)據(jù)(消耗浮置柵極的電荷)
1.4、NandFlash和NorFlash異同
NandFlash:
存儲(chǔ)容量:適用于大容量的場(chǎng)景,不可運(yùn)行程序;
擦寫(xiě)次數(shù):擦寫(xiě)次數(shù)相對(duì)NorFlash較高;
擦寫(xiě)方式:按塊、頁(yè)擦寫(xiě),可擦寫(xiě)次數(shù)較多,讀寫(xiě)速率相對(duì)較高;
硬件接口:I/O口是數(shù)據(jù)線和地址線復(fù)用,通過(guò)CS等控制引腳控制時(shí)序完成地址傳輸和數(shù)據(jù)傳輸;
缺陷:需要管理壞塊,NandFlash存在隨機(jī)壞塊問(wèn)題,需要算法探測(cè)壞塊并本分?jǐn)?shù)據(jù),EDC/ECC等一般在文件系統(tǒng)下實(shí)現(xiàn),時(shí)序操作負(fù)責(zé)容易引起錯(cuò)誤,只能以塊為單位擦寫(xiě),整體壽命相對(duì)短;
應(yīng)用:當(dāng)前市場(chǎng)的NandFlash用于大容量產(chǎn)品,如SSD的Flash、EMMC的Flash、UFS的Flash等都是NandFlash,不同的是SSD、EMMC、UFS等芯片集成的控制器和對(duì)外接口類(lèi)型不同。
常見(jiàn)產(chǎn)品:市場(chǎng)常見(jiàn)產(chǎn)品均是串行接口,集成了控制器,控制器中集成壞塊替換、均衡等管理;
SSD(solid state disk)可以向外提供SATA或PCIe接口(代表產(chǎn)品有M.2 SSD,兼容SATA和PCIe接口);
EMMC(embeded MultiMedia Card)集成的控制器對(duì)外提供的接口類(lèi)似于NandFlash的接口,統(tǒng)稱(chēng)SDIO(適用于SD卡的數(shù)據(jù)總線類(lèi)型),以I/O地址數(shù)據(jù)線復(fù)用形式提供,CMD等實(shí)現(xiàn)指令操作;
UFS(Universal Flash Storage)對(duì)外提供的接口MIPI(Mobile Industry Processor Interface:該接口由ARM組織發(fā)起,目的是將攝像頭、LCD顯示屏、存儲(chǔ)設(shè)備等統(tǒng)一為一個(gè)總線規(guī)范),處理器也需要支持MIPI接口,目前較新智能手機(jī)的SOC(ARM核)一般都支持該接口;
NorFlash:
存儲(chǔ)容量:適用于存儲(chǔ)容量小的場(chǎng)景,可運(yùn)行程序;
擦寫(xiě)次數(shù):擦寫(xiě)次數(shù)相對(duì)NandFlash較低;
擦寫(xiě)方式:按bit擦寫(xiě),極少出現(xiàn)壞塊,可靠性高,寫(xiě)入速率相對(duì)低,讀取速率和NandFlash相差不大;
硬件接口:地址總線和數(shù)據(jù)總線是分開(kāi)的,讀寫(xiě)速率相對(duì)較高;
缺陷:寫(xiě)入速度低,可擦寫(xiě)次數(shù)相對(duì)NandFlash低;
應(yīng)用:當(dāng)前市場(chǎng)的NorFlash主要有串行和并行兩種接口形式,并行的NorFlash芯片提供類(lèi)似SRAM的接口,即有地址總線和數(shù)據(jù)總線,串行的NorFlash一般提供SPI等串行協(xié)議的接口實(shí)現(xiàn)數(shù)據(jù)讀寫(xiě);
二、Flash的硬件電氣特性
2.1、芯片封裝類(lèi)型
芯片封裝依據(jù)廠商的設(shè)計(jì)和應(yīng)用場(chǎng)景而不同,目前主要有SOP類(lèi)、BGA類(lèi),相關(guān)封裝對(duì)應(yīng)的引腳定義參見(jiàn)以下描述;數(shù)據(jù)通道依據(jù)不同芯片也有不同的設(shè)計(jì),當(dāng)前有8bit數(shù)據(jù)通道和16bit數(shù)據(jù)通道。
以下是NandFlash的常見(jiàn)芯片封裝和引腳定義:
SOP類(lèi)芯片封裝
8根數(shù)據(jù)線的存儲(chǔ)芯片:
16根數(shù)據(jù)線的存儲(chǔ)芯片:
BGA類(lèi)芯片封裝
8根數(shù)據(jù)線的存儲(chǔ)芯片:
16根數(shù)據(jù)線的存儲(chǔ)芯片:
LGA-52封裝尺寸:
其他封裝具體參見(jiàn)開(kāi)源文檔《Open Nand Flash Interface》描述。
以下是NorFlash的常見(jiàn)芯片封裝和引腳定義:
2.2、芯片和處理器接口
飛思卡爾(現(xiàn)屬于NXP)處理器下,存儲(chǔ)芯片等的硬件接口統(tǒng)稱(chēng)為IFC(Integrated flash controller),該總線在嵌入式系統(tǒng)中比較常見(jiàn)。IFC總線可以連接NandFlash、NorFlash、SRAM/DDR、EEPROM以及ASIC類(lèi),處理器的IFC總線一般帶有NandFlash和NorFlash的控制器,以硬件的形式完成NandFlash或NorFlash的訪問(wèn)和控制;
以LS1021A處理器(ARM核)為例:
The IFC contains one NAND controller, one NOR flash controller, and one GPCM/generic-ASIC controller.
即IFC總線包含了NorFlash/NandFlash/GPCM/ASIC等控制器,幫助處理器完成對(duì)外圍存儲(chǔ)、器件的訪問(wèn)。
由上一節(jié)的芯片硬件接口可以看出,NandFlash沒(méi)有數(shù)據(jù)線和地址線,只有I/O總線,其余引腳用于時(shí)序控制完成對(duì)應(yīng)功能;
RK系列ARM處理器(瑞芯微),處理器對(duì)外的存儲(chǔ)器接口,均以集成的方式展現(xiàn),如MIPI、EMMC PHY等,這種情況下,就需要EMMC、UFS等芯片去連接,而不能直接用NandFlash連接到處理器上。
全志A、H系列ARM處理器,可以通過(guò)本地?cái)?shù)據(jù)總線連接NandFlash,但名稱(chēng)不叫IFC,其中RK系列處理器的外置存儲(chǔ)控制器,更適用于安卓系統(tǒng)的驅(qū)動(dòng),對(duì)于嵌入式系統(tǒng)也是一個(gè)新的發(fā)展趨勢(shì)。
2.3、Flash讀寫(xiě)
NorFlash需要熱電子注入,因此需要升壓,電壓要高于當(dāng)前芯片的邏輯電壓,因此NorFlash的寫(xiě)入速度較低,同樣電壓低的器件速度快,CPU從最初的5V電源系統(tǒng)更新到3.3V,乃至最新的1.8V和1.2V,都是為了提高元件的運(yùn)行速度(頻率),減少因邏輯切換引起的電壓變換時(shí)延。
NandFlash由于借助半導(dǎo)體的P/N結(jié)特性,不存在電壓超過(guò)芯片自身工作電壓的工作情況,因此寫(xiě)入速度要大于NorFlash。
NorFlash和NandFlash的擦除速度相當(dāng),擦除原理均基于P/N結(jié)特性(F-N隧道效應(yīng)),因此擦除速率幾乎相等。
NandFlash的讀寫(xiě)命令字規(guī)定(來(lái)自O(shè)NFI標(biāo)準(zhǔn)):
注:此規(guī)定是ONFI規(guī)定的,并非某廠商芯片的使用說(shuō)明,某型號(hào)的芯片需要參照相關(guān)數(shù)據(jù)手冊(cè)。
Flash的讀、寫(xiě)、擦以及回寫(xiě)操作應(yīng)為原子操作,執(zhí)行原子操作時(shí)不應(yīng)切換邏輯分區(qū)選擇!
讀?。ò刈x)
o 《CMD: 00h》 《ADDR: Column & Row》 《CMD: 30h》
o 《CMD: 00h》 《ADDR: Column & Row》 《CMD: 31h》
o 《CMD: 00h》 《ADDR: Column & Row》 《CMD: 32h》
o 《CMD: 00h》 《ADDR: Column & Row》 《CMD: 35h》
?編程注意事項(xiàng)(包括回寫(xiě)編程):The Volume Select command may be issued prior to the 10h, 11h, or 15h command if the next command to this Volume is Change Row Address. After Volume Select command is issued to resume data input, the host shall wait tCCS before issuing Change Row Address command. o 《CMD: 80h》 《ADDR: Column & Row》 《DIN: Data Input》 《CMD: 10h》
o 《CMD: 80h》 《ADDR: Column & Row》 《DIN: Data Input》 《CMD: 11h》
o 《CMD: 80h》 《ADDR: Column & Row》 《DIN: Data Input》 《CMD: 15h》
o 《CMD: 81h》 《ADDR: Column & Row》 《DIN: Data Input》 《CMD: 10h》
o 《CMD: 81h》 《ADDR: Column & Row》 《DIN: Data Input》 《CMD: 11h》
o 《CMD: 81h》 《ADDR: Column & Row》 《DIN: Data Input》 《CMD: 15h》
o 《CMD: 85h》 《ADDR: Column & Row》 《DIN: Data Input》 《CMD: 10h》
o 《CMD: 85h》 《ADDR: Column & Row》 《DIN: Data Input》 《CMD: 11h》
o 《CMD: 85h》 《ADDR: Column & Row》 《DIN: Data Input》 《CMD: 15h》
? 擦除Flash命令:
o 《CMD: 60h》 《ADDR: Row》 《CMD: D0h》
o 《CMD: 60h》 《ADDR: Row》 《CMD: D1h》
o 《CMD: 60h》 《ADDR: Row》 《CMD: 60h》 《ADDR: Row》 《CMD: D1h》
2.4、制造工藝
制程相對(duì)CPU的小,一般在28nm左右
三、軟件適配和文件系統(tǒng)
3.1、文件系統(tǒng)
此處以Linux為例。
Linux操作系統(tǒng)本身支持很多文件系統(tǒng):ext系列(2~4)、cramfs、ubifs、jffs2、yaffs、yaffs2、等。
如果是發(fā)行版的linux,可以查看:/lib/modules/3.10.0-327.el7.x86_64/build/fs 目錄下的文件夾,即可知道當(dāng)前的linux支持的文件系統(tǒng),同時(shí)該發(fā)行版支持的文件系統(tǒng)工具可以查看:ls /usr/sbin/ | grep mkfs。
如果是自行開(kāi)發(fā)的linux內(nèi)核,則在linux內(nèi)核編譯時(shí),已由開(kāi)發(fā)人員指定了內(nèi)核支持的文件系統(tǒng)類(lèi)型,(處理器架構(gòu)非x86時(shí))開(kāi)啟UBIFS選項(xiàng)如下圖:
Linux下使用MTD工具管理Flash,其中支持在Flash上運(yùn)行的文件系統(tǒng)有:cramfs、jffs、、ubifs等
Linux下文件系統(tǒng)的目錄:
3.2、軟件適配
Linux下適配N(xiāo)andFlash、NorFlash的分區(qū)信息時(shí),通常是在設(shè)備樹(shù)中配置mtd信息,以供linux啟動(dòng)后,用戶(hù)層軟件可以通過(guò)linux的ioctl實(shí)現(xiàn)對(duì)NandFlash或者NorFlash進(jìn)行讀寫(xiě)操作,來(lái)完成底層flash的數(shù)據(jù)替換等操作。
四、性能對(duì)比
各類(lèi)型顆粒性能對(duì)比。
Nand和Nor特性參數(shù)對(duì)比。
責(zé)任編輯:lq6
-
FlaSh
+關(guān)注
關(guān)注
10文章
1679瀏覽量
151839
原文標(biāo)題:Flash(NandFlash&NorFlash)基本原理
文章出處:【微信號(hào):gh_9d9a609c9302,微信公眾號(hào):SoC芯片】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
STM32定時(shí)器基本原理及常見(jiàn)問(wèn)題之培訓(xùn)資料
六天專(zhuān)修課程!電子電路基本原理66課
無(wú)刷電機(jī)電調(diào)的基本原理
BP神經(jīng)網(wǎng)絡(luò)的基本原理
AN-282: 采樣數(shù)據(jù)系統(tǒng)基本原理[中文版]
![AN-282: 采樣數(shù)據(jù)系統(tǒng)<b class='flag-5'>基本原理</b>[中文版]](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評(píng)論