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