Spi閃速存儲器的數(shù)據(jù)讀寫管理方法及數(shù)據(jù)讀寫管理裝置制造方法
【專利摘要】本發(fā)明提供一種SPI閃速存儲器的數(shù)據(jù)讀寫管理方法以及數(shù)據(jù)讀寫管理裝置,SPI閃速存儲器具有封裝體,封裝體內封裝有控制器以及NANDFlash存儲器,控制器的通信接口及電源接口與封裝體的引腳連接,該方法包括控制器將接收的SPI閃速存儲器的邏輯地址轉換成NANDFlash存儲器的物理地址;控制器將接收的數(shù)據(jù)寫入到物理地址對應的存儲區(qū)域或者從物理地址對應的存儲區(qū)域讀取數(shù)據(jù)。該裝置包括地址映射模塊,將控制器接收的SPI閃速存儲器的邏輯地址轉換成NANDFlash存儲器的物理地址,還設有數(shù)據(jù)讀寫模塊,將控制器接收的數(shù)據(jù)寫入到物理地址對應的存儲區(qū)域或者從物理地址對應的存儲區(qū)域讀取數(shù)據(jù)。本發(fā)明可提高SPI存儲器的通用性,并延長其使用壽命。
【專利說明】SPI閃速存儲器的數(shù)據(jù)讀寫管理方法及數(shù)據(jù)讀寫管理裝置
【技術領域】
[0001]本發(fā)明涉及數(shù)據(jù)處理領域,具體地,是SPI閃速存儲器的數(shù)據(jù)讀寫管理方法以及數(shù)據(jù)讀寫管理裝置。
【背景技術】
[0002]現(xiàn)在的便攜式電子設備,諸如MP3音樂播放器、手機、平板電腦等大量使用嵌入式芯片,嵌入式芯片可以視為一個嵌入式系統(tǒng),其包括一個嵌入式的微控制器(MCU)以及非易失性存儲器,非易失性存儲器通常是閃速存儲器(Flash)。現(xiàn)有的SPI閃速存儲器是一種小容量、封裝簡單、使用方便、可重復燒錄的非易失性存儲器件,其存儲容量由IMB到16MB不等,但生產成本隨著容量的增大而迅速升高。
[0003]現(xiàn)有的SPI閃速存儲器需要迅速地響應嵌入式控制的讀寫請求,通常其存儲結構為NOR Flash,也稱作SPI NOR Flash存儲器。嵌入式芯片啟動的時候,嵌入式微控制器將存儲在SPI NOR Flash存儲器中的程序讀取到微控制器中,并在隨機存儲器(RAM)中運行。隨著嵌入式芯片的功能越來越強大,需要存放在SPI NOR Flash存儲器的數(shù)據(jù)除了越來越龐大的程序文件外,還包括越來越多的音頻和視頻數(shù)據(jù),因此,現(xiàn)有的SPI NOR Flash存儲器的容量越來越難滿足現(xiàn)在的電子產品的要求。
[0004]NAND Flash存儲器是一種大容量、低成本、可重復燒錄的非易失性存儲器件,但是NAND Flash存儲器訪問方式復雜,輸入輸出端口較多,工作時需要強大的糾錯能力,且數(shù)據(jù)存儲管理難度大,存儲方式復雜。為了滿足巨大的程序和數(shù)據(jù)容量需求,現(xiàn)有的一些嵌入式芯片采用NAND Flash存儲器替換現(xiàn)有的SPI NOR Flash存儲器作為嵌入式芯片的非易失性存儲器件,但嵌入芯片的生產成本因此而大幅增加,嵌入式芯片的開發(fā)難度也越來越大。
[0005]為了解決存儲容量和成本的矛盾,人們研發(fā)了一種稱為SPI NAND Flash存儲器的SPI閃速存儲器,將NAND Flash存儲器和微控制器封裝在一起,并應用到嵌入式芯片中。進行數(shù)據(jù)讀寫時,現(xiàn)有SPI NAND Flash存儲器通常只會簡單地將SPI的地址轉換成NANDFlash存儲器的存儲地址并進行訪問。
[0006]然而,這種SPI NAND Flash存儲器只解決了 SPI NOR Flash存儲器的存儲容量問題,但是并不能有效地對SPI閃速存儲器的地址進行有效管理,影響SPI閃速存儲器的數(shù)據(jù)讀寫速度。
[0007]另外,NAND Flash存儲器具有的壞塊特性,即不宜長時間對同一固定區(qū)域進行擦寫的特性,且NAND Flash存儲器還具有類型多樣的特性,即存儲頁容量、塊容量多樣化的特性,等導致了嵌入式系統(tǒng)的難以實現(xiàn)像SPI NOR Flash存儲器一樣的通用化管理SPI NANDFlash存儲器,從而限制了 SPI NAND Flash存儲器的應用范圍。
【發(fā)明內容】
[0008]本發(fā)明的主要目的是提供一種對數(shù)據(jù)讀寫管理規(guī)范且易于實現(xiàn)的SPI閃速存儲器的數(shù)據(jù)讀寫管理方法。
[0009]本發(fā)明的另一目的是提供一種便于閃速存儲器被訪問的SPI閃速存儲器的數(shù)據(jù)讀寫管理裝置。
[0010]為了實現(xiàn)上述的主要目的,本發(fā)明提供的SPI閃速存儲器的數(shù)據(jù)讀寫管理方法中,SPI閃速存儲器具有封裝體,封裝體內封裝有控制器以及與控制器電連接的NAND Flash存儲器,控制器的通信接口及電源接口與封裝體的引腳連接,其中,該方法包括:控制器將接收的SPI閃速存儲器的邏輯地址轉換成NAND Flash存儲器的物理地址;控制器將接收的數(shù)據(jù)寫入到物理地址對應的存儲區(qū)域或者從物理地址對應的存儲區(qū)域讀取數(shù)據(jù)。
[0011]由上述方案可見,通過對SPI閃速存儲器的邏輯地址轉換成NAND Flash存儲器的物理地址,并根據(jù)物理地址對NAND Flash存儲器的數(shù)據(jù)進行讀寫操作,可以有效地建立邏輯地址與物理地址的對應關系,規(guī)范SPI閃速存儲器的數(shù)據(jù)讀寫,提高SPI閃速存儲器的讀寫速度。
[0012]進一步的方案是,控制器記錄NAND Flash存儲器每一存儲區(qū)域的擦寫次數(shù),向物理地址對應的存儲區(qū)域寫入數(shù)據(jù)后,控制器更新該物理地址的存儲區(qū)域的擦寫次數(shù);向NAND Flash存儲器寫入數(shù)據(jù)時,控制器挑選擦寫次數(shù)最少的存儲區(qū)域寫入數(shù)據(jù)。
[0013]由此可見,通過選擇擦寫次數(shù)最少的存儲區(qū)域寫入數(shù)據(jù),可以避免SPI閃速存儲器對同一存儲區(qū)域過多的擦寫,避免部分存儲區(qū)域因擦寫次數(shù)過多而導致整個NAND Flash存儲器無法使用的問題,從而提高SPI閃速存儲器通用性,同時延長SPI閃速存儲器的使用壽命。
[0014]進一步的方案是,控制器挑選擦寫次數(shù)最少的存儲區(qū)域的步驟包括:向物理地址對應的存儲區(qū)域寫入數(shù)據(jù)前,控制器判斷該存儲區(qū)域的擦寫次數(shù)是否高于閾值,如是,查找擦寫次數(shù)最少的存儲區(qū)域的新的物理地址;向新的物理地址寫入數(shù)據(jù)后,更新物理地址與邏輯地址的映射關系。
[0015]由此可見,只有判斷某一存儲區(qū)域的擦寫次數(shù)高于特定的閾值時才選擇擦寫次數(shù)最少的存儲區(qū)域存儲待寫入的數(shù)據(jù),避免每一次寫入數(shù)據(jù)的時候進行選擇,從而提高數(shù)據(jù)的寫入速度。
[0016]更進一步的方案是,NAND Flash存儲器具有映射表存儲區(qū)域,控制器向映射表存儲區(qū)域寫入數(shù)據(jù)前,判斷映射表存儲區(qū)域的某一存儲區(qū)域的擦寫次數(shù)高于閾值時,查找擦寫次數(shù)最少的映射表存儲區(qū)域內新的物理地址并向新的物理地址對應的存儲區(qū)域寫入數(shù)據(jù)。
[0017]可見,對NAND Flash存儲器的映射表存儲區(qū)域也采用選擇擦寫次數(shù)最少的存儲區(qū)域寫入數(shù)據(jù),可以避免映射表存儲區(qū)域出現(xiàn)過早損壞的情況,延長SPI存儲器的使用壽命。
[0018]更進一步的方案是,SPI閃速存儲器首次上電后,控制器對NAND Flash存儲器的所有存儲區(qū)域進行掃描,屏蔽已損壞的存儲區(qū)域,建立可用存儲區(qū)域的物理地址與SPI閃速存儲器的邏輯地址的映射關系。
[0019]由于SPI閃速存儲器首次上電后即屏蔽已經損壞的區(qū)域,避免數(shù)據(jù)寫入到已經損壞的存儲區(qū)域內,可以有效避免寫入到SPI存儲器的數(shù)據(jù)的損壞。
[0020]為實現(xiàn)上述的另一目的,本發(fā)明提供的SPI閃速存儲器的數(shù)據(jù)讀寫裝置中,SPI閃速存儲器具有封裝體,封裝體內封裝有控制器以及與控制器電連接的NAND Flash存儲器,控制器的通信接口及電源接口與封裝體的引腳連接;其中,該裝置包括地址映射模塊,將控制器接收的SPI閃速存儲器的邏輯地址轉換成NAND Flash存儲器的物理地址,還設有數(shù)據(jù)讀寫模塊,將控制器接收的數(shù)據(jù)寫入到物理地址對應的存儲區(qū)域或者從物理地址對應的存儲區(qū)域讀取數(shù)據(jù)。
[0021]由上述方案可見,SPI閃速存儲器數(shù)據(jù)讀寫時,將SPI邏輯地址轉換成NAND Flash存儲器的物理地址,再根據(jù)物理地址對數(shù)據(jù)進行讀寫操作,可以有效地實現(xiàn)對邏輯地址與物理地址之間的管理,提高SPI閃速存儲器的數(shù)據(jù)讀寫速度。
【專利附圖】
【附圖說明】
[0022]圖1是應用本發(fā)明實施例的SPI閃速存儲器的結構框圖。
[0023]圖2是本發(fā)明SPI閃速存儲器的數(shù)據(jù)讀寫裝置實施例的結構框圖。
[0024]圖3是本發(fā)明SPI閃速存儲器的數(shù)據(jù)讀寫方法實施例中SPI閃速存儲器上電時的工作流程圖。
[0025]圖4是本發(fā)明SPI閃速存儲器的數(shù)據(jù)讀寫方法實施例中邏輯地址與物理地址對應關系圖。
[0026]圖5是本發(fā)明SPI閃速存儲器的數(shù)據(jù)讀寫方法實施例中擦寫記錄表的示意圖。
[0027]圖6是本發(fā)明SPI閃速存儲器的數(shù)據(jù)讀寫方法實施例中讀寫步驟的流程圖。
[0028]圖7是本發(fā)明SPI閃速存儲器的數(shù)據(jù)讀寫方法實施例中數(shù)據(jù)編碼與數(shù)據(jù)解碼的示意圖。
[0029]圖8是本發(fā)明SPI閃速存儲器的數(shù)據(jù)讀寫方法實施例中數(shù)據(jù)解碼的流程圖。
[0030]以下結合附圖及實施例對本發(fā)明作進一步說明。
【具體實施方式】
[0031]本發(fā)明的SPI閃速存儲器的數(shù)據(jù)讀寫管理方法是一種用于對SPI閃速存儲器所存儲的數(shù)據(jù)進行讀寫操作的管理方法,包括對數(shù)據(jù)存儲地址的轉換、數(shù)據(jù)編碼與數(shù)據(jù)解碼等流程,SPI閃速存儲器的數(shù)據(jù)讀寫管理裝置是應用上述方法對數(shù)據(jù)的讀寫進行管理的軟件程序。
[0032]如圖1所示,SPI閃速存儲器10具有一個封裝體11,在封裝體11內設有控制器12以及NAND Flash存儲器20,控制器12為微控制器(MCU)或者專用的邏輯電路、可編程控制器等,NAND Flash存儲器20與控制器12電連接,并且可以被控制器12訪問,也就是控制器12可以讀取存儲在NAND Flash存儲器20內的數(shù)據(jù),也可以向NAND Flash存儲器20寫入數(shù)據(jù)。
[0033]封裝體11設有多個引腳,包括時鐘引腳CLK、電源引腳VDD、接地引腳GND、與SD卡連接的數(shù)據(jù)引腳SD0、SD1等??刂破?2內設有通信接口 16以及電源接口 17,通信接口 16與電源接口 17分別與封裝體11的多個引腳連接,接收封裝體的引腳提供的電源以及數(shù)據(jù)。
[0034]控制器12內設有數(shù)據(jù)緩沖器18,用于臨時存儲接收的數(shù)據(jù),控制器12接收的數(shù)據(jù)可以是來自SPI閃速存儲器10外部的數(shù)據(jù),這些數(shù)據(jù)是待寫入到NAND Flash存儲器20的數(shù)據(jù),也可以是來自NAND Flash存儲器20的數(shù)據(jù),這些數(shù)據(jù)是待發(fā)送至SPI閃速存儲器10外部的數(shù)據(jù)??刂破?2還設有控制接口 13,用于向NAND Flash存儲器20發(fā)出控制信號,由此控制NAND Flash存儲器20的工作。
[0035]為了實現(xiàn)數(shù)據(jù)在NAND Flash存儲器20內的存儲,控制器12需要將接收的數(shù)據(jù)的存儲地址為SPI邏輯地址轉換為NAND Flash存儲器20的物理地址,這就需要建立SPI邏輯地址與NAND Flash存儲器20的物理地址之間的映射關系,例如將NAND Flash存儲器20的存儲區(qū)域劃分為多個存儲區(qū)域,每一個存儲區(qū)域有一個對應的物理地址,并且建立一個映射表,將SPI邏輯地址映射到一個物理地址上。因此,SPI邏輯地址與NAND Flash存儲器20的物理地址之間存在一個映射關系,該映射關系形成一個表格,該表格就是映射表。映射表需要存儲在控制器12以及NAND Flash存儲器20內,因此,控制器12內設有映射表存儲區(qū)域14,NAND Flash存儲器20內也設有映射表存儲區(qū)域21,均存儲SPI邏輯地址與物理地址之間的映射關系。
[0036]此外,控制器12內設有映射緩沖器15,在對數(shù)據(jù)進行讀寫操作時,控制器12需要將映射表存儲區(qū)域14內的數(shù)據(jù)臨時讀取到映射表緩沖器15內。
[0037]NAND Flash存儲器20內除了設有映射表存儲區(qū)域21,還設有數(shù)據(jù)存儲區(qū)域22,用于存儲寫入到NAND Flash存儲器20的數(shù)據(jù)。數(shù)據(jù)存儲區(qū)域22被劃分為多個存儲區(qū)域,每一個存儲區(qū)域均有自己的物理地址,每一個存儲區(qū)域的物理地址對應有SPI邏輯地址。
[0038]如圖2所示,SPI閃速存儲器的數(shù)據(jù)讀寫管理裝置是運行在控制器12上的軟件程序,其包括地址映射模塊31、讀寫控制模塊32、損壞均衡模塊33、屏蔽模塊34、編碼模塊35以及解碼模塊36。地址映射模塊31用于將SPI地址轉換成NAND Flash存儲器20的物理地址,即在向NAND Flash存儲器20寫入數(shù)據(jù)前或者從NAND Flash存儲器20讀取數(shù)據(jù)時,根據(jù)映射表存儲區(qū)域內的數(shù)據(jù),通過查表的方式查找出SPI邏輯地址對應的NAND Flash存儲器20的物理地址。讀寫控制模塊32用于控制數(shù)據(jù)的讀寫操作,包括向NAND Flash存儲器20發(fā)出讀取數(shù)據(jù)的命令或者發(fā)出擦寫數(shù)據(jù)的命令。
[0039]為了避免NAND Flash存儲器20內某一個存儲區(qū)域擦寫操作過多而容易損壞,控制器12需要均衡多個存儲區(qū)域的擦寫次數(shù)。損壞均衡模塊33存儲有NAND Flash存儲器20每一個存儲區(qū)域的擦寫次數(shù),且在發(fā)現(xiàn)待寫入的數(shù)據(jù)寫入的存儲區(qū)域的擦寫次數(shù)過高時,選擇一個擦寫次數(shù)較少的存儲區(qū)域寫入數(shù)據(jù)。
[0040]此外,為了避免控制器12將數(shù)據(jù)寫入到NAND Flash存儲器20已損壞的存儲區(qū)域內,控制器12通過屏蔽模塊34將NAND Flash存儲器20內已損壞的存儲區(qū)域屏蔽。編碼模塊35用于對待寫入NAND Flash存儲器20的數(shù)據(jù)進行編碼,而解碼模塊36用于對從NANDFlash存儲器20讀取的數(shù)據(jù)進行解碼操作。
[0041]參見圖3,SPI閃速存儲器首次上電后,控制器12執(zhí)行步驟SI,掃描NAND Flash存儲器20的所有存儲區(qū)域,屏蔽模塊34將已經損壞的存儲區(qū)域屏蔽,以避免將數(shù)據(jù)寫入到已損壞的存儲區(qū)域內。接著,控制器12對NAND Flash存儲器20內未損壞的存儲區(qū)域分配SPI邏輯地址,將物理地址與SPI邏輯地址的映射關系存儲在映射表存儲區(qū)域14、21內,即執(zhí)行步驟S2。SPI邏輯地址與NAND Flash存儲器20的物理地址之間的映射關系如圖4所示。例如,SPI閃速存儲器10要對邏輯地址為{BlockO,PageO }的數(shù)據(jù)進行擦除或編程,經過地址映射后,擦除或編程的位置實際位于NAND Flash存儲器20的物理地址為{BlockX,PageO}對應的存儲區(qū)域。
[0042]當需要向NAND Flash存儲器20寫入數(shù)據(jù)或者從NAND Flash存儲器20讀取數(shù)據(jù)時,控制器12接收SPI邏輯地址,地址映射模塊31執(zhí)行步驟S3,將映射表存儲區(qū)域14內的數(shù)據(jù)讀入到映射表緩沖器15內,并執(zhí)行步驟S4,通過查表的方式將SPI邏輯地址轉換成NAND Flash存儲器20的物理地址。
[0043]接著,控制器12執(zhí)行步驟S5,判斷映射表是否需要更新,也就是判斷SPI邏輯地址與物理地址之間的對應關系是否已經發(fā)生改變,如果已經發(fā)生改變,則執(zhí)行步驟S6,更新映射表緩沖器以及映射表存儲區(qū)域所存儲的數(shù)據(jù),也就是更新映射表的數(shù)據(jù)。
[0044]由于損壞均衡模塊33需要均衡每一個存儲區(qū)域的擦寫次數(shù),因此損壞均衡模塊33內設有一個表格,如圖5所示,該表格記錄NAND Flash存儲器20每一個存儲區(qū)域的物理地址、對應的SPI邏輯地址以及相應存儲區(qū)域的擦寫次數(shù)。損壞均衡模塊33發(fā)現(xiàn)某一存儲區(qū)域擦寫次數(shù)過高時,需要更改待寫入數(shù)據(jù)的存儲區(qū)域。這樣,控制器12往往需要更改SPI邏輯地址與物理地址之間的對應關系,而更改對應關系時往往需要向映射表緩沖器15寫入新的映射關系的數(shù)據(jù),因此步驟S5中,控制器12對比映射表存儲區(qū)域14與映射表緩沖器15所存儲的數(shù)據(jù)是否不一致,不一致時則需要進行映射表的更新操作。
[0045]參見圖6,SPI閃速存儲器10接收到外部發(fā)送的數(shù)據(jù)后,首先執(zhí)行步驟S11,將接收的數(shù)據(jù)存儲在數(shù)據(jù)緩沖器18中,然后執(zhí)行步驟S12,編碼模塊35對接收的并存儲在數(shù)據(jù)緩沖器18內的數(shù)據(jù)進行編碼。
[0046]由于嵌入式系統(tǒng)所存儲的數(shù)據(jù)很可能出現(xiàn)大量數(shù)值類似的情況,例如一段聲音偏小的錄音數(shù)據(jù),數(shù)據(jù)的高位基本上都是二進制數(shù)據(jù)“O”。如果存儲到NAND Flash存儲器20之前不做編碼處理,NAND Flash存儲器20里存儲的大部分數(shù)據(jù)都是“O”。相反,在大部分數(shù)據(jù)為二進制數(shù)據(jù)“I”的情況也類似。這樣,NAND Flash存儲器20的使用壽命會大大縮短。
[0047]另外,由于NAND Flash存儲器20的物理存儲區(qū)域的訪問協(xié)議是公開并且通用的,敏感數(shù)據(jù)如果在存儲到NAND Flash存儲器20之前不做特殊處理,就可能被惡意竊取,造成損失。因此,有必要對存儲到NAND Flash存儲器20的數(shù)據(jù)進行編碼處理。如圖7所示,編碼模塊35將SPI原始數(shù)據(jù)流經過編碼后生成NAND Flash存儲器20的數(shù)據(jù)流,這些數(shù)據(jù)流暫存在數(shù)據(jù)緩沖器18內。
[0048]對數(shù)據(jù)進行編碼時,設置一個解碼密鑰,編碼模塊35根據(jù)該解碼密鑰對數(shù)據(jù)緩沖器18內的數(shù)據(jù)進行編碼,編碼方法可以采用CRC或者LFSR等簡單通用的算法。
[0049]對數(shù)據(jù)進行編碼后,控制器12執(zhí)行步驟S13,請求擦寫NAND Flash存儲器20的數(shù)據(jù),并分配存儲區(qū)域。在控制器12分配待寫入數(shù)據(jù)的存儲區(qū)域后,損壞均衡模塊33執(zhí)行步驟S14,根據(jù)所存儲的每一個存儲區(qū)域的擦寫次數(shù)判斷該存儲區(qū)域的擦寫次數(shù)是否過高。本實施例中,損壞均衡模塊33通過判斷該存儲區(qū)域的擦除次數(shù)是否高于某個閾值來判斷擦寫次數(shù)是否過高,優(yōu)選地,該閾值是NAND Flash存儲器20的所有存儲區(qū)域的擦寫次數(shù)的平均值。
[0050]如果判斷該存儲區(qū)域的擦除次數(shù)過高,則執(zhí)行步驟S15,否則執(zhí)行步驟S19,將待寫入的數(shù)據(jù)寫入到該存儲區(qū)域,損壞均衡模塊33執(zhí)行步驟S20,將寫入數(shù)據(jù)的存儲區(qū)域的擦寫次數(shù)加1,即更新圖5所示的表格。
[0051]步驟S15中,損壞均衡模塊33查找NAND Flash存儲器20中擦除次數(shù)最少的一個存儲區(qū)域,讀寫控制模塊22將編碼后的數(shù)據(jù)寫入到該存儲區(qū)域,損壞均衡模塊33執(zhí)行步驟S16,將寫入數(shù)據(jù)的存儲區(qū)域的擦寫次數(shù)加I。
[0052]最后,控制器12擦除并清空原先分配的NAND Flash存儲器20的存儲區(qū)域內所存儲的數(shù)據(jù),即執(zhí)行步驟S17,并執(zhí)行步驟S18,更新映射表的SPI邏輯地址與物理地址之間的映射關系,也就是對映射表存儲區(qū)域14、21內所存儲的數(shù)據(jù)進行更新。
[0053]由于映射表存儲區(qū)域21也是NAND Flash存儲器20的一個存儲區(qū)域,也存在由于該存儲區(qū)域的擦寫次數(shù)過多而影響使用壽命的問題,因此損壞均衡模塊33同樣記錄映射表存儲區(qū)域21中各個存儲區(qū)域的擦寫次數(shù),并且對映射表存儲區(qū)域21的存儲區(qū)域進行擦寫操作時,發(fā)現(xiàn)該存儲區(qū)域的擦寫次數(shù)過高的情況下,選擇擦寫次數(shù)最少的區(qū)域寫入數(shù)據(jù)。
[0054]控制器12從NAND Flash存儲器20讀取數(shù)據(jù)時,接收需要讀取的數(shù)據(jù)的SPI邏輯地址,然后地址映射模塊31將SPI邏輯地址轉換成物理地址后,根據(jù)該物理地址讀取數(shù)據(jù)。讀取數(shù)據(jù)后,執(zhí)行圖8所示的流程,首先執(zhí)行步驟S21,將NAND Flash存儲器20的數(shù)據(jù)讀入數(shù)據(jù)緩沖器18,然后執(zhí)行步驟S22,對讀取的數(shù)據(jù)進行解碼。由于向NAND Flash存儲器20寫入數(shù)據(jù)的時候,對寫入的數(shù)據(jù)進行編碼,讀取數(shù)據(jù)后,解碼模塊36根據(jù)解碼密鑰,將數(shù)據(jù)緩沖器18的數(shù)據(jù)進行解碼。解碼前后的數(shù)據(jù)如圖7所示。最后,控制器12將解碼后的數(shù)據(jù)通過通信接口 16發(fā)送出去,即執(zhí)行步驟S23。
[0055]由于本發(fā)明對接收的SPI地址轉換成NAND Flash存儲器20的物理地址,再將數(shù)據(jù)寫入到NAND Flash存儲器20,通過簡單的查表方式即可以時間,提高數(shù)據(jù)寫入的效率。此夕卜,由于SPI閃速存儲器首次上電后即屏蔽已經損壞的存儲區(qū)域,避免數(shù)據(jù)寫入到已損壞的存儲區(qū)域內,從而避免數(shù)據(jù)的丟失。另外,由于控制器將控制不同存儲區(qū)域的擦除次數(shù),避免同一存儲區(qū)域的擦寫次數(shù)過高,有效延長SPI閃速存儲器的使用壽命。
[0056]當然,上述實施例僅是本發(fā)明優(yōu)選的實施方式,實際應用時還可以有更多的變化,例如損壞均衡模塊可以設定存儲區(qū)域的擦寫次數(shù)的閾值為固定值,而不是所有存儲區(qū)域的平均值,這樣的改變并不影響本發(fā)明的實施。
[0057]最后需要強調的是,本發(fā)明不限于上述實施方式,如NAND Flash存儲器劃分的存儲區(qū)域的數(shù)量與大小的改變、編碼與解密方法的改變等變化也應該包括在本發(fā)明權利要求的保護范圍內。
【權利要求】
1.8?1閃速存儲器的數(shù)據(jù)讀寫管理方法,所述3?1閃速存儲器具有封裝體,所述封裝體內封裝有控制器以及與所述控制器電連接的^^0 存儲器,所述控制器的通信接口及電源接口與所述封裝體的引腳連接; 其特征在于,該方法包括: 所述控制器將接收的所述3?1閃速存儲器的邏輯地址轉換成所述^\冊存儲器的物理地址; 所述控制器將接收的數(shù)據(jù)寫入到所述物理地址對應的存儲區(qū)域或者從所述物理地址對應的存儲區(qū)域讀取數(shù)據(jù)。
2.根據(jù)權利要求1所述的3?1閃速存儲器的數(shù)據(jù)讀寫管理方法,其特征在于: 所述控制器記錄所述^\冊存儲器每一存儲區(qū)域的擦寫次數(shù),向所述物理地址對應的存儲區(qū)域寫入數(shù)據(jù)后,所述控制器更新該物理地址的存儲區(qū)域的擦寫次數(shù); 向所述^^0 存儲器寫入數(shù)據(jù)時,所述控制器挑選擦寫次數(shù)最少的存儲區(qū)域寫入數(shù)據(jù)。
3.根據(jù)權利要求2所述的3?1閃速存儲器的數(shù)據(jù)讀寫管理方法,其特征在于: 所述控制器挑選擦寫次數(shù)最少的存儲區(qū)域的步驟包括:向所述物理地址對應的存儲區(qū)域寫入數(shù)據(jù)前,所述控制器判斷該存儲區(qū)域的擦寫次數(shù)是否高于閾值,如是,查找擦寫次數(shù)最少的存儲區(qū)域的新的物理地址; 向新的物理地址寫入數(shù)據(jù)后,更新所述物理地址與所述邏輯地址的映射關系。
4.根據(jù)權利要求2或3所述的3?1閃速存儲器的數(shù)據(jù)讀寫管理方法,其特征在于: 所述^^0 存儲器具有映射表存儲區(qū)域,所述控制器向所述映射表存儲區(qū)域寫入數(shù)據(jù)前,判斷所述映射表存儲區(qū)域的某一存儲區(qū)域的擦寫次數(shù)高于閾值時,查找擦寫次數(shù)最少的所述映射表存儲區(qū)域內新的物理地址并向新的物理地址對應的存儲區(qū)域寫入數(shù)據(jù)。
5.根據(jù)權利要求1至3任一項所述的3?1閃速存儲器的數(shù)據(jù)讀寫管理方法,其特征在于: 所述3?1閃速存儲器首次上電后,所述控制器對所述^\冊存儲器的所有存儲區(qū)域進行掃描,屏蔽已損壞的存儲區(qū)域,建立可用存儲區(qū)域的物理地址與3?1閃速存儲器的邏輯地址的映射關系。
6.根據(jù)權利要求1至3任一項所所述的3?1閃速存儲器的數(shù)據(jù)讀寫管理方法,其特征在于: 所述控制器向所述^^0 存儲器寫入數(shù)據(jù)前,對待寫入的數(shù)據(jù)進行編碼; 所述控制器讀取所述^^0 存儲器的數(shù)據(jù)后,對所讀取的數(shù)據(jù)進行解碼。
7.8?1閃速存儲器的數(shù)據(jù)讀寫管理裝置,所述3?1閃速存儲器具有封裝體,所述封裝體內封裝有控制器以及與所述控制器電連接的^^0 存儲器,所述控制器的通信接口及電源接口與所述封裝體的引腳連接; 其特征在于,該裝置包括: 地址映射模塊,將所述控制器接收的所述3?1閃速存儲器的邏輯地址轉換成所述^八冊 存儲器的物理地址; 數(shù)據(jù)讀寫模塊,將所述控制器接收的數(shù)據(jù)寫入到所述物理地址對應的存儲區(qū)域或者從所述物理地址對應的存儲區(qū)域讀取數(shù)據(jù)。
8.根據(jù)權利要求7所述的3?1閃速存儲器的數(shù)據(jù)讀寫管理裝置,其特征在于: 還包括損耗均衡模塊,記錄所述^\冊存儲器每一存儲區(qū)域的擦寫次數(shù),向所述物理地址對應的存儲區(qū)域寫入數(shù)據(jù)后,更新該物理地址的存儲區(qū)域的擦寫次數(shù),并在所述^^0 存儲器寫入數(shù)據(jù)時,挑選擦寫次數(shù)最少的存儲區(qū)域寫入數(shù)據(jù)。
9.根據(jù)權利要求8所述的3?1閃速存儲器的數(shù)據(jù)讀寫管理裝置,其特征在于: 所述損耗均衡模塊還用于判斷所述^^0存儲器的映射表存儲區(qū)域的某一存儲區(qū)域的擦寫次數(shù)高于閾值時,查找擦寫次數(shù)最少的所述映射表存儲區(qū)域內新的物理地址并向新的物理地址對應的存儲區(qū)域寫入數(shù)據(jù)。
10.根據(jù)權利要求7至9任一項所述的3?1閃速存儲器的數(shù)據(jù)讀寫管理裝置,其特征在于: 還包括屏蔽模塊,在所述3?1閃速存儲器首次上電后,對所述^\冊存儲器的所有存儲區(qū)域進行掃描,屏蔽已損壞的存儲區(qū)域,建立可用存儲區(qū)域的物理地址與3?1閃速存儲器的邏輯地址的映射關系。
【文檔編號】G06F3/06GK104461401SQ201410826825
【公開日】2015年3月25日 申請日期:2014年12月25日 優(yōu)先權日:2014年12月25日
【發(fā)明者】龔成 申請人:珠?;蜆s集成電路科技有限公司