王志剛, 夏漢鑄
(中山火炬職業(yè)技術學院,廣東 中山 528436)
近年來,隨著半導體工藝和電子科學技術的不斷進步,閃速存儲器的存儲容量和讀寫速度得到了飛速的發(fā)展。閃存按其內部結構的不同分為NOR和NAND兩種。NOR閃存(Flash)技術是由Intel于1988年首先開發(fā)出的,其徹底改變了原先由EPROM和EEPROM一統天下的局面,日立公司在1989年發(fā)表了NAND Flash結構,這種結構強調降低每比特的成本、更高的存儲性能,并且能像磁盤一樣可以通過接口輕松升級,特別適合大容量文件和數據的存儲。相比NOR Flash而言NAND Flash以其高密度、大容量、高數據存儲速率以及更多擦除次數等優(yōu)勢,在消費類電子產品、數據采集系統和工業(yè)控制中得到了廣泛的應用[1-3]。
由于NAND Flash的操作特點是一次只能擦除操作整個物理塊,這就導致會頻繁的對NAND Flash進行讀寫操作。頻繁地讀寫NAND Flash勢必造成一定量的壞塊,壞塊是不可擦除或進行寫操作的,從而影響整個系統的性能和NAND Flash的使用壽命[4]。為了更有效的進行讀寫操作進而盡量減少壞塊的產生,文中提出了一種訪問NAND數據的方法,該方法可以有效提高訪問NAND的速度,從而延長NAND的使用壽命。
在用戶端和 NAND之間建立一個緩存,用于NAND讀寫過程中數據的緩存,緩存大小是NAND塊大小的整數倍,并以塊大小為單位進行管理,當緩存塊都被使用后,緩存塊申請采用基于“緩存塊使用率”高低來決定哪個緩存塊被替換,其數據緩存機制機構圖見圖1。

圖1 數據緩存機制結構
緩存機制包括以下幾個部分:
1)用戶端:指需要從 NAND讀數據的接口程序。對用戶端來說,NAND就是一段連續(xù)的存儲空間,使用線性地址對NAND進行訪問。
2)NAND邏輯塊:邏輯塊在地址上連續(xù),物理塊指的是NAND實際的塊,邏輯塊和物理塊有一一對應的關系。
3)NAND Buffer數據緩存:NAND數據緩存部分根據NAND的擦除特點(擦除以塊為單位)設計,緩存大小是塊的整數倍,以塊大小為單位對緩存進行管理。
用戶需要從 NAND讀出數據或者將數據寫入NAND,緩存用于暫時存儲讀寫過程中的數據[7]。
碳納米管提升復合材料力學性能的兩個主要性質包括高模量和高強度.碳納米管對于復合材料的力學增強主要是改變其本身的長徑比以及管徑尺寸,碳納米管與基體材料的界面結合情況也是影響復合材料力學強度的因素之一.故復合材料中碳納米管往往是決定其力學性能的關鍵.現有研究表明碳納米管能夠明顯改善復合材料的拉伸強度,同時溫度也是影響復合材料力學性能的重要因素,但并沒有對復合材料的其它性能造成明顯的影響.含碳納米管復合材料具有高模量、高強度、低密度和尺寸穩(wěn)定等優(yōu)良力學性能,可以廣泛應用于航天航空、能源交通和體育器材等領域.
本訪問NAND閃存數據的方法為,創(chuàng)建NAND緩存,在訪問NAND閃存數據時,先根據要訪問的NAND閃存的線性地址,計算出要訪問的NAND閃存的邏輯塊號(WriteBlockNum),再根據邏輯塊號判斷(邏輯塊)是否在NAND緩存中命中。如果命中,則對命中的緩存塊進行訪問;如果未命中,訪問為寫操作時,申請一個緩存塊,并將邏輯塊號記錄到緩存塊對應的信息中,再對此緩存塊進行寫操作;訪問為讀操作時,直接從NAND閃存中讀取數據;當緩存塊都已使用時,采用基于“緩存塊使用率”的緩存替換機制[8]。
具體實現包括寫操作、讀操作、同步操作、緩存塊替換操作。下面對各個過程作詳細的描述。
NANDBuf由n個(n>=1)BlockBuf組成,每個BlockBuf的大小是NAND塊大小,所以需要申請n個Block大小的內存。NAND Buffer需要創(chuàng)建一個計數器BufAccessCnt,用于記錄NANDBuf的訪問次數。
每個緩存塊又包含以下幾個信息:
status:緩存塊狀態(tài)。包含unused、clean、dirty這3種狀態(tài);unused表示緩存塊未申請;clean表示緩存塊已申請,且緩存數據和NAND中的數據一致;dirty表示已經申請且緩存的數據相對NAND的數據有修改;
HitBlockNum:命中的邏輯塊號。表示本緩存塊命中的邏輯塊號,如果沒有命中值為“-1”;
HitCntStart:邏輯塊數據剛緩存到緩存塊時,BufAccessCnt的值;
HitAccessTimes:邏輯塊命中周期內,對緩存塊讀寫的次數。這個值和 BufAccessCnt、HitCntStart一起用于計算緩存塊的使用率;
WriteBlockNum:用戶往NAND線性地址寫數據時,根據線性地址計算出來的NAND的邏輯塊號。計算方法:WriteBlockNum =(線性地址)/(塊大小)。
寫操作流程如圖2所示。首先計算WriteBlock Num,判斷WriteBlockNum是否在緩存中命中。

圖2 寫操作流程
如果未命中,從緩存中申請一個緩存塊(申請方法見3.5節(jié)),將WriteBlockNum對應的物理塊數據讀到緩存塊中,并將待寫數據寫入緩存塊中;同時更新對應緩存塊的管理信息:HitBlockNum為WriteBlockNum,status為 dirty,BufAccessCnt加“1”,HitCntStart等于 BufAccessCnt,HitAccessTimes加“1”。
如果命中,將數據寫入緩存塊中,同時更新緩存的管理信息,status為 dirty,BufAccessCnt、HitAccessTimes各加“1”。
讀操作流程如圖3所示。首先計算WriteBlock Num,判斷WriteBlockNum號是否在緩存中命中。
如果命中,則從緩存中讀取數據,并更新緩存相關信息:BufAccessCnt加 1,HitAccessTimes加 1。
如果未命中,則直接從NAND中讀取數據。

圖3 讀操作流程
同步是將緩存中的dirty數據回寫到NAND中,具體操作是遍歷整個緩存,看是否有dirty狀態(tài)的緩存塊,如果有則將將數據回寫到NAND中,并更新相應的狀態(tài)信息:status為unused, HitCntStart為-1,HitAccessTimes為0。其中同步的時機如下:
1)NANDBuf中所有緩存塊都已經被使用,而此時又有新的數據需要緩存,此時需要將使用率低的緩存塊取消命中,用作新的邏輯塊緩存,這種情況需要將緩存塊數據同步到NAND中。
2)設備要卸載,需要將緩存中的數據同步到NAND中。
3)系統需要重啟時,需要將緩存中的數據同步到NAND中。
此外,用于定時同步數據。創(chuàng)建一個定時器,設置一個時間值,如果在設定的時間內,用戶端沒有對緩存進行讀/寫操作,則執(zhí)行同步操作其同步操作流程圖見圖4。

圖4 同步操作流程
如果緩存塊未申請完,則申請一個未使用的緩存塊,如果緩存塊都已經被申請完,則會出現替換操作。替換就是把某一緩存塊數據回寫到NAND,使之處于未命中狀態(tài),然后將這個緩存塊用作其他邏輯塊的緩存。這里的替換采用基于“緩存塊使用率”的方法。使用率是指緩存塊被操作的概率,概率最低的,最先被替換。緩存塊使用率的計算方法是:(HitAccess Times)/( BufAccessCnt -HitCntStart) 。
緩存塊的申請流程流程圖見圖5。

圖5 緩存塊的申請流程
大量對NAND的讀寫操作,實際上只要通過操作緩存就可以實現,而緩存的讀寫速度又遠遠高于NAND設備的讀寫速度。因此文中提出基于內存的數據緩存機制訪問NAND的方法和基于“緩存塊使用率”的緩存替換機制,該方法不僅大大提高了緩存的有效命中率,而且大大提高NAND的讀寫速度;采用文中的數據緩存機制,對于NAND的寫操作,由于不需要每次都寫入NAND,因此減少了NAND的擦寫次數,降低了壞塊產生的幾率,從而延長了NAND的使用壽命。
[1] LIN Chuan-sheng, DUNG Lan-rong.A NAND Flash Memory Controller for SD/MMC Flash Memory Card[J]. IEEE Trans on Magnetics, 2007,43(02):78-84.
[2] HOYOUNG J, HYOKI S, SUNGMIN P. LRU-WSR: Integration of LRU and Writes Sequence Recording for Flash Memory[J]. Consumer Electronics, IEEE Trans on,2008(54):1215-1223.
[3] 韓勇豪,王少云.一種 NAND Flash動態(tài)壞塊管理算法的設計與實現[J].信息化研究,2011,37(03):23-26.
[4] ZHANG X M, PARHI K K.High-speed Architectures for Parallel Long BCH Encodes[J]. IEEE Trans on Very Large Scale Integration(VLSI)systems,2005,13(07):872-877.
[5] 侯建,帥仁俊,侯文.基于云計算的海量數據存儲模型[J].通信技術,2011,44(05):163-165.
[6] 祖研,帥仁俊,陳平.基于分布式文件系統的圖片存儲服務的研究[J].通信技術,2011,44(04):138-139.
[7] 楊金孝,趙強,楊百平,等.一種改進型SUSAN算法的FPGA實現[J].信息安全與通信保密,2010(03):57-59.
[8] 李巖,邱衛(wèi)東,盧致旭,等.計算機取證中磁盤快速搜索算法研究[J].信息安全與通信保密,2010(04):78-80.