A. 儲存卡存儲數據原理
儲存卡也可以叫做快閃記憶體主要分為NOR Flash和NAND Flash兩種,兩種快閃記憶體的原理有所不同,下面介紹的就是這兩種快閃記憶體運作的基本原理。
NOR Flash
快閃記憶體將數據存儲在由浮閘晶體管組成的記憶單元數組內,在單階存儲單元(Single-level cell, SLC)設備中,每個單元只存儲1比特的信息。而多階存儲單元(Multi-level cell, MLC)設備則利用多種電荷值的控制讓每個單元可以存儲1比特以上的數據。
快閃記憶體的每個存儲單元類似一個標准MOSFET, 除了晶體管有兩個而非一個閘極。在頂部的是控制閘(Control Gate, CG),如同其他MOS晶體管。但是它下方則是一個以氧化物層與周遭絕緣的浮閘(Floating Gate, FG)。這個FG放在CG與MOSFET通道之間。由於這個FG在電氣上是受絕緣層獨立的, 所以進入的電子會被困在裡面。在一般的條件下電荷經過多年都不會逸散。當FG抓到電荷時,它部分屏蔽掉來自CG的電場,並改變這個單元的閥電壓(VT)。在讀出期間。利用向CG的電壓,MOSFET通道會變的導電或保持絕緣。這視乎該單元的VT而定(而該單元的VT受到FG上的電荷控制)。這股電流流過MOSFET通道,並以二進制碼的方式讀出、再現存儲的數據。在每單元存儲1比特以上的數據的MLC設備中,為了能夠更精確的測定FG中的電荷位準,則是以感應電流的量(而非單純的有或無)達成的。
邏輯上,單層NOR Flash單元在默認狀態代表二進制碼中的「1」值,因為在以特定的電壓值控制閘極時,電流會流經通道。經由以下流程,NOR Flash 單元可以被設置為二進制碼中的「0」值。
1. 對CG施加高電壓(通常大於5V)。
2. 現在通道是開的,所以電子可以從源極流入汲極(想像它是NMOS晶體管)。
3. 源-汲電流夠高了,足以導致某些高能電子越過絕緣層,並進入絕緣層上的FG,這種過程稱為熱電子注入。
由於汲極與CG間有一個大的、相反的極性電壓,藉由量子穿隧效應可 以將電子拉出FG,所以能夠地用這個特性抹除NOR Flash單元(將其重設為「1」狀態)。現代的NOR Flash晶元被分為若干抹除片段(常稱為區扇(Blocks or sectors)),抹除操作只能以這些區塊為基礎進行;所有區塊內的記憶單元都會被一起抹除。不過一般而言,寫入NOR Flash單元的動作卻可以單一位元組的方式進行。
雖然抹寫都需要高電壓才能進行,不過實際上現今所有快閃記憶體晶元是藉由晶元內的電荷幫浦產生足夠的電壓,所以只需要一個單一的電壓供應即可。
B. 內存卡的儲存數據的原理
存儲原理,還是要從EPROM和EEPROM說起。
EPROM是指其中的內容可以通過特殊手段擦去,然後重新寫入。其基本單元電路(存儲細胞)如下圖所示,常採用浮空柵雪崩注入式MOS電路,簡稱為FAMOS。它與MOS電路相似,是在N型基片上生長出兩個高濃度的P型區,通過歐姆接觸分別引出源極S和漏極D。在源極和漏極之間有一個多晶硅柵極浮空在SiO2絕緣層中,與四周無直接電氣聯接。這種電路以浮空柵極是否帶電來表示存1或者0,浮空柵極帶電後(譬如負電荷),就在其下面,源極和漏極之間感應出正的導電溝道,使MOS管導通,即表示存入0。若浮空柵極不帶電,則不形成導電溝道,MOS管不導通,即存入1。
EEPROM基本存儲單元電路的工作原理如下圖所示。與EPROM相似,它是在EPROM基本單元電路的浮空柵的上面再生成一個浮空柵,前者稱為第一級浮空柵,後者稱為第二級浮空柵。可給第二級浮空柵引出一個電極,使第二級浮空柵極接某一電壓VG。若VG為正電壓,第一浮空柵極與漏極之間產生隧道效應,使電子注入第一浮空柵極,即編程寫入。若使VG為負電壓,強使第一級浮空柵極的電子散失,即擦除。擦除後可重新寫入。
快閃記憶體的基本單元電路如下圖所示,與EEPROM類似,也是由雙層浮空柵MOS管組成。但是第一層柵介質很薄,作為隧道氧化層。寫入方法與EEPROM相同,在第二級浮空柵加以正電壓,使電子進入第一級浮空柵。讀出方法與EPROM相同。擦除方法是在源極加正電壓利用第一級浮空柵與源極之間的隧道效應,把注入至浮空柵的負電荷吸引到源極。由於利用源極加正電壓擦除,因此各單元的源極聯在一起,這樣,快擦存儲器不能按位元組擦除,而是全片或分塊擦除。 到後來,隨著半導體技術的改進,快閃記憶體也實現了單晶體管(1T)的設計,主要就是在原有的晶體管上加入了浮動柵和選擇柵,
在源極和漏極之間電流單向傳導的半導體上形成貯存電子的浮動棚。浮動柵包裹著一層硅氧化膜絕緣體。它的上面是在源極和漏極之間控制傳導電流的選擇/控制柵。數據是0或1取決於在硅底板上形成的浮動柵中是否有電子。有電子為0,無電子為1。
快閃記憶體就如同其名字一樣,寫入前刪除數據進行初始化。具體說就是從所有浮動柵中導出電子。即將有所數據歸「1」。
寫入時只有數據為0時才進行寫入,數據為1時則什麼也不做。寫入0時,向柵電極和漏極施加高電壓,增加在源極和漏極之間傳導的電子能量。這樣一來,電子就會突破氧化膜絕緣體,進入浮動柵。
讀取數據時,向柵電極施加一定的電壓,電流大為1,電流小則定為0。浮動柵沒有電子的狀態(數據為1)下,在柵電極施加電壓的狀態時向漏極施加電壓,源極和漏極之間由於大量電子的移動,就會產生電流。而在浮動柵有電子的狀態(數據為0)下,溝道中傳導的電子就會減少。因為施加在柵電極的電壓被浮動柵電子吸收後,很難對溝道產生影響。
C. U盤,儲存卡是如何儲存數據的啊,困擾我好久了。
轉一篇文章"U盤原理",很長,專業術語較多,希望能有幫助。
----------------------------
U盤設計
「USB快閃記憶體檔」(以下簡稱「U盤」)是基於USB介面、以快閃記憶體晶元為存儲介質的無需驅動器的新一代存儲設備。U盤的出現是移動存儲技術領域的一大突破,其體積小巧,特別適合隨身攜帶,可以隨時隨地、輕松交換資料數據,是理想的移動辦公及數據存儲交換產品。
U盤的結構基本上由五部分組成:USB埠、主控晶元、FLASH(快閃記憶體)晶元、PCB底板、外殼封裝。
U盤的基本工作原理
USB埠負責連接電腦,是數據輸入或輸出的通道;主控晶元負責各部件的協調管理和下達各項動作指令,並使計算機將U盤識別為「可移動磁碟」,是U盤的「大腦」;FLASH晶元與電腦中內存條的原理基本相同,是保存數據的實體,其特點是斷電後數據不會丟失,能長期保存;PCB底板是負責提供相應處理數據平台,且將各部件連接在一起。當U盤被操作系統識別後,使用者下達數據存取的動作指令後,USB移動存儲盤的工作便包含了這幾個處理過程。
通用串列匯流排(Universal serial Bus)是一種快速靈活的介面,
當一個USB設備插入主機時,識別出USB設備是一個支持Bulk-Only傳輸協議的海量存儲設備。這時應可進行Bulk-Only傳輸方式。在此方式下USB與設備之間的數據傳輸都是通過Bulk-In和Bulk-Out來實現的。在這種傳輸方式下,有三種類型數據在USB和設備傳送,它們是命令塊包(CBW),命令執行狀態包(CSW)和普通數據包。CBW是主機發往設備的命令。
格式如下:其中dCBWSignature的值為43425355h,表示當前發送的是一個CBW。
DCBWDataTransferLength:表示這次CBW要傳送數據長度。
BmCBWFlags:表示本次CBW是讀數據還是寫數所BBWCBLength:表示命令的長度。 CBWCB:表示本次命令內容。也即是SCSI命令。
當設備從主機收到CBW塊以後,它會把SCSI命令從CBW中分離出來,然後根據要求執行,執行的結果又以CSW的形式發給主機。 CSW的格式如下:
其中dCSWSignature的值為53425355h,表示當前發送的是一個CSW。 DCSWTag:必須和CBW中dCBWTag一樣。
DCSWDataResie:還要傳送的數據。
BCSWStatue:命令執行狀態,命令正確執行時,為0。
由於USB設備硬體本身的原因,它會使USB匯流排的數據信號線的電平發生變化,而主機會經常掃描USB匯流排。當發現電平有變化時,它即知道有設備插入。USB設備它本身會初始化,並認為地址是0。也就是沒有分配地址,這有點象剛進校的大學生沒有學號一樣。
正如有一個陌生人闖入時我們會問「你是什麼人」一樣,當一個USB設備插入主機時,,它也會問:「你是什麼設備」。並接著會問,你使用什麼通信協議等等。當這一些信息都被主機知道後,主機與USB設備之間就可以根據它們之間的約定進行通信。
USB的這些信息是通過描述符實現的,USB描述符主要包括:設備描述符,配置描述符,
介面描述符,端點描述符等。當一個U盤括入主機時,你立即會發現你的資源管理器里多了一個可移動磁碟,在Win2000下你還可以進一步從主機上知道它是愛國者或是朗科的。這里就有兩個問題,首先主機為什麼知道插入的是移動磁碟,而不是鍵盤或列印機等等呢?另外在Win2000下為什麼還知道是哪個公司生產的呢?其實這很簡單,當USB設備插入主機時,主機首先就會要求對方把它的設備描述符傳回來,這些設備描述符中就包含了設備類型及製造商信息。又如傳輸所採用的協議是由介面描述符確定,而傳輸的方式則包含在端點描述符中。
USB設備分很多類:顯示類,通信設備類,音頻設備類,人機介面類,海量存儲類.特定類的設備又可分為若乾子類,每一個設備可以有一個或多個配置,配置用於定義設備的功能。配置是介面的集合,介面是指設備中哪些硬體與USB交換信息。每個與USB交換信息的硬體是一個端點。因些,介面是端點的集合。
U盤應屬於海量存儲類。
USB海量存儲設備又包括通用海量存儲子類,CDROM,Tape等,U盤實際上屬於海量存儲類中通用海量存儲子類。通用海量存儲設備實現上是基於塊/扇區存儲的設備。
USB組織定義了海量存儲設備類的規范,這個類規范包括4個獨立的子類規范。主要是指USB匯流排上的傳輸方法與存儲介質的操作命令。
海量存儲設備只支持一個介面,即數據介面,此介面有三個端點Bulk input ,Bulk output,中斷端點
這種設備的介面採用SCSI-2的直接存取設備協議,USB設備上的介質使用與SCSI-2以相同的邏輯塊方式定址。
在源極和漏極之間電流單向傳導的半導體上形成貯存電子的浮動棚。浮動柵包裹著一層硅氧化膜絕緣體。它的上面是在源極和漏極之間控制傳導電流的選擇/控制柵。數據是0或1取決於在硅底板上形成的浮動柵中是否有電子。有電子為0,無電子為1。
快閃記憶體就如同其名字一樣,寫入前刪除數據進行初始化。具體說就是從所有浮動柵中導出電子。即將有所數據歸「1」。
寫入時只有數據為0時才進行寫入,數據為1時則什麼也不做。寫入0時,向柵電極和漏極施加高電壓,增加在源極和漏極之間傳導的電子能量。這樣一來,電子就會突破氧化膜絕緣體,進入浮動柵。
讀取數據時,向柵電極施加一定的電壓,電流大為1,電流小則定為0。浮動柵沒有電子的狀態(數據為1)下,在柵電極施加電壓的狀態時向漏極施加電壓,源極和漏極之間由於大量電子的移動,就會產生電流。而在浮動柵有電子的狀態(數據為0)下,溝道中傳導的電子就會減少。因為施加在柵電極的電壓被浮動柵電子吸收後,很難對溝道產生影響。
U盤原理的存儲是:計算機把二進制數字信號轉為復合二進制數字信號(加入分配、核對、堆棧等指令)讀寫到USB晶元適配介面,通過晶元處理信號分配給EPROM2存儲晶元的相應地址存儲二進制數據,實現數據的存儲。
D. SD卡是怎麼儲存數據的
SD 卡讀寫數據是以塊為單位進行的.
對卡讀一個或多個塊通過發送CMD17/CMD18命令來實現;
對卡寫一個或多個塊通過發送CMD24/CMD25命令來實現.
這些數據在末尾附有CRC校驗碼,如果校驗碼失敗,則所傳輸的數據都會被丟掉,數據的讀/
寫操作也會被中止.
Cache層
Cache原理: 使用較快的存儲裝置保留一份從較慢速存儲裝置中所讀數據, 使讀/寫動作
先在較快速的裝置上完成,這樣可以提升系統的響應速度. Cache越大,響應速度越快.
決定處理器成本的最主要的因素就是處理器晶元的面積
緩存的主要結構如下:
typedef struct _Disk_Cache {
U8 Drive; //表示Cache數組中某個元素的存儲狀態
U8 Flag; //表示某個元素可以被某種方式訪問: 只讀/只寫/讀||寫
U8 RW_ID; //計數器,表示元素有多久沒被訪問了
U32 SecIndex; //記錄被緩存的扇區的邏輯扇區索引
U8 buf[DISK_CACHE_SIZE]; //存放被緩存的扇區的具體內容
} Disk_cache;
當有讀/寫的需求時, 從SD卡讀取的數據一份放到Cache數組的空閑扇區中;
如果系統繼續要求讀取/寫入同一份數據或同一扇區時, 系統就可以直接從Cache中進行
讀/寫, 從而大大提高系統存取速度.
每次訪問Cache時, Cache數組中所有元素的RW_ID值會被加1,直至最大值;
當某個元素被訪問時, 這個元素的RW_ID值被清零;
當cache數組的所有元素都已分配又有新的扇區被訪問時, 找出Cache模塊中RW_ID值最大
的元素分配給新的扇區作為緩存(需要回寫的內容進行回寫後再分配給新的扇區).
需要注意的是: 這種技術如果僅用於讀數據是沒問題的. 但用於寫數據, 即如果寫入cac
he的數據不能立即寫回SD卡的物理內存中, 則一旦斷電會丟失數據; 若每次都將數據回
寫到SD上, 則影響寫速度.
基於這種情況,將Cache寫入的方式分為直寫式和回寫式.
a) 直寫式: 每次寫入cache的同時, 把數據回寫到SD卡物理內存中, 以保證cache的內容
和SD卡物理內存中相應單元的數據保持一致.
b) 回寫式: 只把數據寫入cache(這樣有可能出現cache中數據得到更新但物理內存中
數據陳舊的情況), 並在cache中通過設置Flag標明該緩沖區的數據是否需要回寫; 等
系統空閑或進行cache替換時,再將數據回寫到SD卡上
更多內容 http://wenda.tianya.cn/question/6312109b94254985