NAND FLash基礎概念介紹,nandflash基礎概念
一、引腳介紹
引腳名稱 |
引腳功能 |
CLE |
命令鎖存功能 |
ALE |
地址鎖存功能 |
/CE |
晶片使能 |
/RE |
讀使能 |
/WE |
寫使能 |
/WP |
防寫保護 |
R/B |
就緒/忙輸出訊號 |
Vcc |
電源 |
Vss |
地 |
N.C |
不接 |
IO0~IO7 |
傳輸資料、命令、地址 |
1. 命令、地址、資料都通過8個I/O口傳輸 2. 寫命令、地址、資料時,都需要將WE、CE訊號同時拉低 3. 資料在WE訊號的上升沿被NAND Flash鎖存 4. 命令鎖存訊號CLE和地址鎖存訊號ALE用來分辨、鎖存命令或地址 5. 在CLE上升沿,命令被鎖存 6. 在ALE上升沿,地址被鎖存
二、儲存群組織形式
1. NAND晶片內部分為die, plane,block, page 2. chip是指晶片,一個封裝好的晶片就是一個chip 3. die是晶圓上的小方塊,一個晶片裡可能封裝若干個die,由於flash的工藝不一樣,技術不一樣,由此產生了die 的概念,常見的有Mono Die,a Die, b die等,一個chip包含N個die 4. plane是NAND能夠根據讀、寫、擦除等命令進行操作的最小單位
一個plane就是一個儲存矩陣,包含若干個Block
5. Block是NANDFlash的最小擦除單位,一個Block包含了若干個Page 6. Page是NANDFlash的最小讀寫單位,一個Page包含若干個Byte
OOB/Spare Area
每一個頁,對應還有一塊地區,叫做空閑地區(SpareArea)。在Linux系統中,一般叫做OOB(Out of Band)。
資料在讀寫的時候相對容易錯誤,所以為了保證資料的正確性,必須要有對應的檢測和糾正機制,此機制叫做ECC/EDC,所以設計了多餘的地區,用於存放資料的校正值。
OOB的讀寫是隨著隨著頁的操作一起完成的。
OOB的具體用途包括以下幾個方面:
► 標記所處的block是否為壞塊
► 儲存ECC資料
► 儲存一些和檔案系統相關的資料。如jaffs2就會用到這些空間儲存一些特定資訊,而yaffs2檔案系統,會在 oob中存放很多和自己檔案系統相關的資訊
一個16G的NAND的儲存結構大致如下:
一個16G的NANDFlash需要34位地址,而傳輸地址的IO口是8位的,因此需要5個迴圈來傳輸地址資訊。
NAND Flash中的壞塊
Nand Flash 中,一個塊中含有1 個或多個位是壞的,就稱為其為壞塊Bad Block。壞塊的穩定性是無法保證
的,也就是說,不能保證你寫入的資料是對的,或者寫入對了,讀出來也不一定對的。與此對應的正常的塊,肯定
是寫入讀出都是正常的。
壞塊有兩種:
(1)出廠時就有存在的壞塊:
一種是出廠的時候,也就是,你買到的新的,還沒用過的Nand Flash,就可以包含了壞塊。此類出廠時就 有的壞塊,被稱作factory (masked) bad block 或initial bad/invalid block,在出廠之前,就會做對應的標記,
標為壞塊。
(2) 使用過程中產生的壞塊:
第二類叫做在使用過程中產生的,由於使用過程時間長了,在擦塊除的時候,出錯了,說明此塊壞了,也
要在程式運行過程中,發現,並且標記成壞塊的。具體標記的位置,和上面一樣。這類塊叫做worn-out
bad block。即用壞了的塊。
SLC和MLC的實現機制
NANDFlash按照內部儲存資料單元的電壓的不同層次,也就是單個記憶體單元中,是儲存1位元據,還是多位元 據,可以分為SLC和MLC。
► SLC(Single Level Cell)
單個儲存單元只儲存1位,表示1或0。
對於Nand Flash寫入1,就是控制ExternalGate去充電,使得儲存的電荷夠多,超過閾值Vth,就表示1了。
而對於寫入0,就是將其放電,電荷減少到小於Vth,就表示0了
► MLC(Multi Level Cell)
與SLC對應的,就是單個儲存單元可以儲存多個位,比如2位、4位等。其實現機制就是,通過控制內部電荷
的多少,分成多個閾值,從而儲存為不同的資料。
單個儲存單元可以儲存2位元據的,稱作2的2次方 = 4 LevelCell
Nand flash基本知識
nand flash 原理簡介【轉】Fisrt part :
NAND flash和NOR flash的不同NOR flash採用位讀寫,因為它具有sram的介面,有足夠的引腳來定址,可以很容易的存取其內部的每一個位元組。NAND flash使用複雜的I/O口來穿行地存取資料。8個引腳用來傳送控制、地址和資料資訊。NAND的讀和寫單位為512Byte的頁,擦寫單位為32頁的塊。
● NOR的讀速度比NAND稍快一些。
● NAND的寫入速度比NOR快很多。
● NAND的4ms擦除速度遠比NOR的5s快。
● 大多數寫入操作需要先進行擦除操作。
● NAND的擦除單元更小,相應的擦除電路更少。
在NOR器件上運行代碼不需要任何的軟體支援,在NAND器件上進行同樣操作時,通常需要驅動程式,也就是記憶體技術驅動程式(MTD),NAND和NOR器件在進行寫入和擦除操作時都需要MTD。
---------摘抄自網上流傳很廣的《NAND 和 NOR flash的區別》Second part:
NAND Flash結構與驅動分析一、NAND flash的物理組成
NAND Flash 的資料是以bit的方式儲存在memory cell,一般來說,一個cell 中只能儲存一個bit。這些cell 以8個或者16個為單位,連成bit line,形成所謂的byte(x8)/word(x16),這就是NAND Device的位寬。這些Line會再組成Page,(NAND Flash 有多種結構,我使用的NAND Flash 是K9F1208,下面內容針對三星的K9F1208U0M),每頁528Bytes(512byte(Main Area)+16byte(Spare Area)),每32個page形成一個Block(32*528B)。具體一片flash上有多少個Block視需要所定。我所使用的三星k9f1208U0M具有4096個block,故總容量為4096*(32*528B)=66MB,但是其中的2MB是用來儲存ECC校正碼等額外資料的,故實際中可使用的為64MB。
NAND flash以頁為單位讀寫資料,而以塊為單位擦除資料。按照這樣的組織方式可以形成所謂的三類地址:
Column Address:Starting Address of the Register. 翻成中文為列地址,地址的低8位
Page Address :頁地址
Block Address :塊地址
對於NAND Flash來講,地址和命令只能在I/O[7:0]上傳遞,資料寬度是8位。二、NAND Flash地址的表示
512byte需要9bit來表示,對於528byte系列的NAND,這512byte被分成1st half Page Register和2nd half Page Register,各自的訪問由地址指標命令來選擇,A[7:0]就是所謂的column address(列地址),在進行擦除操作時不需要它,why?因為以塊為單位擦除。32個page需要5bit來表示,佔用A[13:9],即該page在塊內的相對位址。A8這一位地址被用來設定512byte的1st half page還是2nd half page,0表示1st,1表示2nd。Block的地址是由A14以上的bit來表示。
例如64MB(512Mb)的NAND flash(實際中由於存在spare area,故都大於這個值),共4096block,因此,需要12個bit來表示,即......餘下全文>>
有關NAND flash 的壞區定義與容量定義
廠家所說的4G指的是4 000 000 000位元組,是按1000進位計算的,而電腦是按照1024進位計算的,所以標稱為4G的NAND Flash理論容量是4 000 000 000 / 1024 / 1024 / 1024 = 3.72529G。再扣掉Mp4自身的系統軟體所佔的空間和檔案系統所佔的空間,剩餘3.54G可用空間是正常的。
至於說你的Flash有壞區,大可不必擔心。所有的Flash都有壞區,只要起始地址沒壞,Flash就可以正常使用。儲存區如果有損壞,是會被自行替換的,無需使用者參與。
至於其它容量的Flash,按照相同的演算法,都可以算出相應的理論容量。