Chinaunix首页 | 论坛 | 博客
  • 博客访问: 555244
  • 博文数量: 99
  • 博客积分: 5015
  • 博客等级: 大校
  • 技术积分: 1209
  • 用 户 组: 普通用户
  • 注册时间: 2009-05-28 23:08
文章存档

2011年(7)

2010年(6)

2009年(86)

我的朋友

分类: LINUX

2011-04-16 11:17:21

圖解NAND Flash

Nand-flash記憶體是flash記憶體的-種,其內部採用非線性巨集單元模式,為固態大容量記憶體的實現提供了廉價有效的解決方案。Nand-flash存儲器具有容量較大,改寫速度快,適用於大量資料的存儲,因而在業界得到了越來越廣泛的應用,如嵌入式產品中包括數碼相機、MP3隨身聽記憶卡、體積小巧的U盤等。

記憶體和NOR型快閃記憶體的基本存儲單元是bit,用戶可以隨機訪問任何一個bit的資訊。而NAND型快閃記憶體的基本存儲單元是頁(Page)(可以看到, NAND型快閃記憶體的頁就類似硬碟的磁區,硬碟的一個磁區也為512位元組)。每一頁的有效容量是512位元元組的倍數。所謂的有效容量是指用於資料存儲的部分,實際上還要加上16位元組的校驗資訊,因此我們可以在快閃記憶體廠商的技術資料當中看到“(512+16Byte”的表示方式。目前2Gb以下容量的NAND型快閃記憶體絕大多數是(512+16)位元組的頁面容量,2Gb以上容量的NAND型快閃記憶體則將頁容量擴大到(2048+64)位元組。

  NAND型快閃記憶體以塊為單位進行擦除操作。快閃記憶體的寫入操作必須在空白區域進行,如果目標區域已經有資料,必須先擦除後寫入,因此擦除操作是快閃記憶體的基本操作。一般每個塊包含32512位元組的頁,容量16KB;而大容量快閃記憶體採用2KB頁時,則每個塊包含64個頁,容量128KB。每顆NAND型快閃記憶體 I/O介面一般是8條,每條資料線每次傳輸(512+16bit資訊,8條就是(512+16)×8bit,也就是前面說的512位元組。但較大容量的 NAND型快閃記憶體也越來越多地採用16I/O線的設計,如三星編號K9K1G16U0A的晶片就是64M×16bitNAND型快閃記憶體,容量1Gb,基本資料單位是(256+8)×16bit,還是512位元組。

  定址時,NAND型快閃記憶體通過8I/O介面資料線傳輸位址資訊包,每包傳送 8位元位址資訊。由於快閃記憶體晶片容量比較大,一組8位位址只夠定址256個頁,顯然是不夠的,因此通常一次位元址傳送需要分若干組,佔用若干個時鐘週期。 NAND的位址資訊包括列位址(頁面中的起始操作位址)、塊位址和相應的頁面位址,傳送時分別分組,至少需要三次,佔用三個週期。隨著容量的增大,位元址資訊會更多,需要佔用更多的時鐘週期傳輸,因此NAND型快閃記憶體的一個重要特點就是容量越大,定址時間越長。而且,由於傳送位址週期比其他存儲介質長,因此 NAND型快閃記憶體比其他存儲介質更不適合大量的小容量讀寫請求。

和磁片類似,NAND Flash讀寫資料的基本粒度為頁(page),然而讀、寫資料所需的時間卻不一樣,一般寫入時間是讀出的310倍。此外,Flash不允許資料的直接覆蓋寫,必須首先擦除舊有資料才能寫入新的,而擦除的粒度為塊(block),通常一個塊包含有64個頁。擦除的速度是很慢的,而且每一塊的擦除次數也有限,平均為100萬次。下面將給出一個例子來具體說明NAND Flash的特點。下麵是三星K9K8G08U0M晶片的Flash組織結構圖。

NAND Flash 組織結構圖

從圖中可以看出,整個Flash的容量為8448Mbit,其中含有8192個物理塊,每塊包含64個頁,每頁除了2K的資料區之外,還有64位元組的額外空間用於存放錯誤校驗碼等資訊。除了Flash的主體,我們還可以看到一個一頁大小的資料寄存器。事實上,每一次Flash的讀寫操作都需要使用這個寄存器來完成。例如,讀操作實際上分成兩個階段,首先是把指定位址中的整頁數據載入到寄存器中(時間為20微秒),然後再從寄存器輸出資料,可以連續輸出,也可以根據指定偏移量隨機輸出,且隨機輸出的次數不限(每個位元組的輸出週期為20納秒);而寫操作也分為兩個階段,第一階段是把資料從外界輸入到寄存器,可以整頁輸入,也可以隨機輸入,且隨機輸入的次數不限,每位元組的輸入週期也是20納秒,第二階段便是把寄存器中的資料固化到Flash上,時間為200微秒,每一頁原則上只能有一次固化操作,然而大部分NAND Flash(如本例)允許在同一頁中的幾個片斷按照先後順序分幾次寫入,本例中為4次,這種情況叫做partial page programming

除了partial page programmingNAND Flash還有另外一種有意思的操作,也和資料寄存器相關,叫做copy-back。就是說,當某個資料頁需要被複製到新的位置時,只需將其載入到資料寄存器中,然後根據接收到的目標位址將該頁數據固化到Flash上新的位置,這樣就省去了整頁數據在寄存器和RAM之間的輸入輸出過程。另外,在資料被載入到寄存器之後,Flash允許程式使用隨機輸入資料的方式改寫該頁的部分內容,然後再固化到目標位置。

阅读(2268) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~