一、Flash基本原理及分類
1.1、基本存儲單元
存儲數(shù)據(jù)基本的元件:浮柵場效應管
存儲時,信息存放在浮置柵極中,浮置柵極有無電荷或電荷量來表明當前存儲的數(shù)據(jù):
1.2、存儲顆粒分類
當前存儲顆粒主要分類:SLC、MLC、TLC、QLC
單位存儲單元下數(shù)據(jù)存儲密度:(一個存儲單元要表示的數(shù)據(jù)類型)
SLC (Single-Level Cell) 單個存儲單元存儲1bit數(shù)據(jù),即表示2種(2^1)數(shù)據(jù)狀態(tài):0和1
MLC (Multi-Level Cell) 單個存儲單元存儲2bit數(shù)據(jù),即表示4種(2^2)數(shù)據(jù)狀態(tài):00,01,10,11
TLC (Trinary-Level Cell) 單個存儲單元存儲3bit數(shù)據(jù),即表示8種(2^3)數(shù)據(jù)狀態(tài):000,……,111
QLC (Quad-Level Cell) 單個存儲單元存儲4bit數(shù)據(jù),即表示16種(2^4)數(shù)據(jù)狀態(tài):0000,……,1111
注:單個存儲單元:指一個浮柵場效應管
對于一個存儲單元存儲多個bit的情況,識別和寫入通常是通過控制閾值電壓來實現(xiàn),閾值電壓可以通過調(diào)整浮置柵極的電荷量(電荷量越多導通性越好,分壓越?。崿F(xiàn)。
顆粒配合制作工藝實現(xiàn):2D和3D Flash技術,2D最早在SLC階段應用廣泛,3D在TLC階段應用廣發(fā),具體結(jié)構區(qū)分:
2D內(nèi)部結(jié)構:
3D內(nèi)部構造:
3D芯片內(nèi)部結(jié)構:
1.3、Flash存儲分類
存儲技術分類:NandFlash、NorFlash
存儲芯片分類:目前市面上常見的集成存儲芯片類型:eMMC、UFS、SPI-Flash、QSPI-Flash、各尺寸的SD卡等。
NandFlash存儲陣列:
NorFlash存儲陣列:
寫入數(shù)據(jù):
NorFlash:熱電子注入效應(高壓溝道雪崩擊穿注入電子流)
NandFlash:F-N隧道效應(P/N結(jié)半導體導電特性)
讀取時控制柵極的控制電壓不會過大影響浮置柵極的電荷,因此可以依據(jù)有無電荷讀取存儲的數(shù)據(jù),當浮置柵極有電荷時,源極和漏極可以導通,讀取到的bit是0;擦除后浮置柵極無電荷,源極和漏極不能導通,讀取的bit是1(控制柵極的電平);
讀取數(shù)據(jù):
NorFlash一次最小可以讀取1bit數(shù)據(jù),NandFlash一次最小可以讀取1byte數(shù)據(jù);
擦除數(shù)據(jù):
NorFlash和NandFlash都是通過F-N隧道效應擦除數(shù)據(jù)(消耗浮置柵極的電荷)
1.4、NandFlash和NorFlash異同
NandFlash:
存儲容量:適用于大容量的場景,不可運行程序;
擦寫次數(shù):擦寫次數(shù)相對NorFlash較高;
擦寫方式:按塊、頁擦寫,可擦寫次數(shù)較多,讀寫速率相對較高;
硬件接口:I/O口是數(shù)據(jù)線和地址線復用,通過CS等控制引腳控制時序完成地址傳輸和數(shù)據(jù)傳輸;
缺陷:需要管理壞塊,NandFlash存在隨機壞塊問題,需要算法探測壞塊并本分數(shù)據(jù),EDC/ECC等一般在文件系統(tǒng)下實現(xiàn),時序操作負責容易引起錯誤,只能以塊為單位擦寫,整體壽命相對短;
應用:當前市場的NandFlash用于大容量產(chǎn)品,如SSD的Flash、EMMC的Flash、UFS的Flash等都是NandFlash,不同的是SSD、EMMC、UFS等芯片集成的控制器和對外接口類型不同。
常見產(chǎn)品:市場常見產(chǎn)品均是串行接口,集成了控制器,控制器中集成壞塊替換、均衡等管理;
SSD(solid state disk)可以向外提供SATA或PCIe接口(代表產(chǎn)品有M.2 SSD,兼容SATA和PCIe接口);
EMMC(embeded MultiMedia Card)集成的控制器對外提供的接口類似于NandFlash的接口,統(tǒng)稱SDIO(適用于SD卡的數(shù)據(jù)總線類型),以I/O地址數(shù)據(jù)線復用形式提供,CMD等實現(xiàn)指令操作;
UFS(Universal Flash Storage)對外提供的接口MIPI(Mobile Industry Processor Interface:該接口由ARM組織發(fā)起,目的是將攝像頭、LCD顯示屏、存儲設備等統(tǒng)一為一個總線規(guī)范),處理器也需要支持MIPI接口,目前較新智能手機的SOC(ARM核)一般都支持該接口;
NorFlash:
存儲容量:適用于存儲容量小的場景,可運行程序;
擦寫次數(shù):擦寫次數(shù)相對NandFlash較低;
擦寫方式:按bit擦寫,極少出現(xiàn)壞塊,可靠性高,寫入速率相對低,讀取速率和NandFlash相差不大;
硬件接口:地址總線和數(shù)據(jù)總線是分開的,讀寫速率相對較高;
缺陷:寫入速度低,可擦寫次數(shù)相對NandFlash低;
應用:當前市場的NorFlash主要有串行和并行兩種接口形式,并行的NorFlash芯片提供類似SRAM的接口,即有地址總線和數(shù)據(jù)總線,串行的NorFlash一般提供SPI等串行協(xié)議的接口實現(xiàn)數(shù)據(jù)讀寫;
二、Flash的硬件電氣特性
2.1、芯片封裝類型
芯片封裝依據(jù)廠商的設計和應用場景而不同,目前主要有SOP類、BGA類,相關封裝對應的引腳定義參見以下描述;數(shù)據(jù)通道依據(jù)不同芯片也有不同的設計,當前有8bit數(shù)據(jù)通道和16bit數(shù)據(jù)通道。
以下是NandFlash的常見芯片封裝和引腳定義:
SOP類芯片封裝
8根數(shù)據(jù)線的存儲芯片:
16根數(shù)據(jù)線的存儲芯片:
BGA類芯片封裝
8根數(shù)據(jù)線的存儲芯片:
16根數(shù)據(jù)線的存儲芯片:
LGA-52封裝尺寸:
其他封裝具體參見開源文檔《Open Nand Flash Interface》描述。
以下是NorFlash的常見芯片封裝和引腳定義:
2.2、芯片和處理器接口
飛思卡爾(現(xiàn)屬于NXP)處理器下,存儲芯片等的硬件接口統(tǒng)稱為IFC(Integrated flash controller),該總線在嵌入式系統(tǒng)中比較常見。IFC總線可以連接NandFlash、NorFlash、SRAM/DDR、EEPROM以及ASIC類,處理器的IFC總線一般帶有NandFlash和NorFlash的控制器,以硬件的形式完成NandFlash或NorFlash的訪問和控制;
以LS1021A處理器(ARM核)為例:
The IFC contains one NAND controller, one NOR flash controller, and one GPCM/generic-ASIC controller.
即IFC總線包含了NorFlash/NandFlash/GPCM/ASIC等控制器,幫助處理器完成對外圍存儲、器件的訪問。
由上一節(jié)的芯片硬件接口可以看出,NandFlash沒有數(shù)據(jù)線和地址線,只有I/O總線,其余引腳用于時序控制完成對應功能;
RK系列ARM處理器(瑞芯微),處理器對外的存儲器接口,均以集成的方式展現(xiàn),如MIPI、EMMC PHY等,這種情況下,就需要EMMC、UFS等芯片去連接,而不能直接用NandFlash連接到處理器上。
全志A、H系列ARM處理器,可以通過本地數(shù)據(jù)總線連接NandFlash,但名稱不叫IFC,其中RK系列處理器的外置存儲控制器,更適用于安卓系統(tǒng)的驅(qū)動,對于嵌入式系統(tǒng)也是一個新的發(fā)展趨勢。
2.3、Flash讀寫
NorFlash需要熱電子注入,因此需要升壓,電壓要高于當前芯片的邏輯電壓,因此NorFlash的寫入速度較低,同樣電壓低的器件速度快,CPU從最初的5V電源系統(tǒng)更新到3.3V,乃至最新的1.8V和1.2V,都是為了提高元件的運行速度(頻率),減少因邏輯切換引起的電壓變換時延。
NandFlash由于借助半導體的P/N結(jié)特性,不存在電壓超過芯片自身工作電壓的工作情況,因此寫入速度要大于NorFlash。
NorFlash和NandFlash的擦除速度相當,擦除原理均基于P/N結(jié)特性(F-N隧道效應),因此擦除速率幾乎相等。
NandFlash的讀寫命令字規(guī)定(來自ONFI標準):
注:此規(guī)定是ONFI規(guī)定的,并非某廠商芯片的使用說明,某型號的芯片需要參照相關數(shù)據(jù)手冊。
Flash的讀、寫、擦以及回寫操作應為原子操作,執(zhí)行原子操作時不應切換邏輯分區(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》
?編程注意事項(包括回寫編程):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、制造工藝
制程相對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 目錄下的文件夾,即可知道當前的linux支持的文件系統(tǒng),同時該發(fā)行版支持的文件系統(tǒng)工具可以查看:ls /usr/sbin/ | grep mkfs。
如果是自行開發(fā)的linux內(nèi)核,則在linux內(nèi)核編譯時,已由開發(fā)人員指定了內(nèi)核支持的文件系統(tǒng)類型,(處理器架構非x86時)開啟UBIFS選項如下圖:
Linux下使用MTD工具管理Flash,其中支持在Flash上運行的文件系統(tǒng)有:cramfs、jffs、、ubifs等
Linux下文件系統(tǒng)的目錄:
3.2、軟件適配
Linux下適配NandFlash、NorFlash的分區(qū)信息時,通常是在設備樹中配置mtd信息,以供linux啟動后,用戶層軟件可以通過linux的ioctl實現(xiàn)對NandFlash或者NorFlash進行讀寫操作,來完成底層flash的數(shù)據(jù)替換等操作。
四、性能對比
各類型顆粒性能對比。
Nand和Nor特性參數(shù)對比。
責任編輯:lq6
-
FlaSh
+關注
關注
10文章
1635瀏覽量
148023
原文標題:Flash(NandFlash&NorFlash)基本原理
文章出處:【微信號:gh_9d9a609c9302,微信公眾號:SoC芯片】歡迎添加關注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論