讀寫存儲設(shè)備的數(shù)據(jù)映像中的虛擬邊界碼的制作方法
【專利說明】讀寫存儲設(shè)備的數(shù)據(jù)映像中的虛擬邊界碼
【背景技術(shù)】
[0001] 閃存是可W進(jìn)行電擦除和重新編程的非易失性計算機(jī)存儲巧片。NAND閃存(還稱 為NAND存儲器)是可W按照塊或頁來編程和讀取的高密度型的讀寫存儲器。NAND存儲器 用于存儲卡、U盤、固態(tài)硬盤和類似產(chǎn)品中,W進(jìn)行通常的存儲和數(shù)據(jù)傳輸,W及在眾多的數(shù) 字設(shè)備中用于存儲配置數(shù)據(jù)。
[0002] 只讀存儲器(ROM)是在計算機(jī)和其它電子設(shè)備中使用的一種類型的存儲介質(zhì)。傳 統(tǒng)的ROM是只讀存儲器,不能夠進(jìn)行修改,或者只能慢速地或困難地進(jìn)行修改,所W其主要 用于分配固件。固件是指專口被設(shè)計用于特定硬件的軟件。設(shè)備的固件可能很少或者從未 在其經(jīng)濟(jì)壽命期間被改變。更新固件的通常原因包括;修復(fù)問題或者向使用它的硬件添加 功能特征。用于更新固件的一種方式是利用結(jié)合ROM使用的特殊程序閃存進(jìn)行重新編程。 與ROM不同,NAND存儲器可W被多次擦除和重新編程。
[0003] NAND存儲器通常被W多個塊來進(jìn)行組織,每個塊包含多個頁。當(dāng)NAND存儲器的實 際的頁或塊的長度由制造商進(jìn)行設(shè)置時,它就被永久固定在該長度。"塊"(由于其設(shè)及計 算機(jī)存儲器,特別是NAND存儲器)包括具有標(biāo)稱長度的存儲字節(jié)或比特序列。該長度稱為 塊大小。將數(shù)據(jù)存儲到塊中的過程,通常是一次完成整個頁,而擦除數(shù)據(jù)則是W塊為單位進(jìn) 行。
[0004] 每個塊還可W被組織成多個頁,其中頁的大小通常為2, 048字節(jié)(~2邸)或 4, 096字節(jié)(~4KB)。與每一個塊的至少一頁相關(guān)聯(lián)的是少許字節(jié)(通常是數(shù)據(jù)大小的 1/32),該少許字節(jié)可W用于存儲糾錯碼巧CC)校驗和。典型的塊大小包括:
[0005] -64頁,每一頁具有2, 048字節(jié)(~2?。┖?4字節(jié)的備用區(qū),其意味著128?。▽?應(yīng)于頁數(shù)據(jù))加4KB(對應(yīng)于諸如糾錯碼、壞塊信息、元數(shù)據(jù)等等之類的備用數(shù)據(jù))的塊大 ??;
[0006] ? 64頁,每一頁具有4, 096字節(jié)(~4?。┖?28字節(jié)的備用區(qū),其意味著對應(yīng)于 頁數(shù)據(jù)的256KB的塊大?。籛及
[0007] '128頁,每一頁具有2, 048字節(jié)(~2邸)和128字節(jié)的備用區(qū),其意味著對應(yīng)于 頁數(shù)據(jù)的256邸的塊大小。
[000引在NAND存儲器的制造中經(jīng)常發(fā)生制造缺陷,其可能使一些存儲單元不具有功能 和不可用。包括有缺陷的存儲單元的塊稱為"壞塊"。由于制造過程,許多NAND設(shè)備出廠時 就具有一些壞塊。例如,通過允許一些壞塊,與所有塊都必須被驗證是好的相比,制造商實 現(xiàn)了高得多的產(chǎn)量。該顯著地降低了NAND閃存成本,并且只稍微地減少該些部件的存儲容 量。盡管如此,NAND存儲器的制造一般保證初始塊炬lock0)是好的,但并不保證剩余的 數(shù)據(jù)塊。
[0009] 一些壞塊管理方案在NAND存儲器上設(shè)置用于標(biāo)識該巧片上的壞塊的信息。該樣 的壞塊信息可W包括;指示要訪問的用于存儲映像的好塊或者要略過的壞塊的列表。但是,NAND存儲器自身的特性的變化,W及特定于經(jīng)銷商和/或制造商的壞塊檢測方案/格式,往 往需要定制的NAND存儲器處理和編程。
[0010] 另外,計算設(shè)備中的ROM固件設(shè)計與軟件相比受到某種程度的限制,該是由于一 旦該計算設(shè)備被制造完成,則該些例行程序在稍后的開發(fā)周期中幾乎不能被改寫,并且通 常是永久設(shè)定的。從而,由于閃存上的數(shù)據(jù)映像的全部或一部分可W被改寫并因此進(jìn)行更 新,所W閃存被用來運(yùn)行引導(dǎo)加載例程。如本文所使用的,術(shù)語"數(shù)據(jù)映像"是指讀寫存儲 設(shè)備(例如,NAND存儲設(shè)備)的一個或多個存儲單元中所保存的信息。對于趨于復(fù)雜的當(dāng) 代引導(dǎo)裝載程序來說,數(shù)據(jù)映像會耗盡閃存,該是由于它們試圖適應(yīng)特定于NAND設(shè)備的特 性,而如上所述,該些特性在經(jīng)銷商和/或制造商之間有很大的不同。
【發(fā)明內(nèi)容】
[0011] 各個實施例包括在諸如閃存之類的讀寫存儲器上存儲數(shù)據(jù)映像,其中該讀寫存儲 器接納壞塊,并使計算設(shè)備使用單一算法而不管存儲器制造商,在從該存儲器讀取數(shù)據(jù)時 能夠跳過壞塊。該方法包括:配置數(shù)據(jù)映像與數(shù)據(jù)的好塊的邊界處的碼或特殊值一起保存 在讀寫存儲器中。本文將該些碼或特殊值稱為"虛擬邊界碼",當(dāng)計算設(shè)備識別出該些碼或 特殊值時,其指示所標(biāo)識的塊包含有效數(shù)據(jù)??蒞將數(shù)據(jù)映像W-個或多個虛擬塊的方式 保存在存儲器中,其中所述一個或多個虛擬塊具有與指示虛擬塊的起始或結(jié)束的虛擬塊邊 界相對應(yīng)的虛擬塊大小。與NAND設(shè)備的實際塊大小相比,每一個虛擬塊的大小可W更小或 者相等??蒞將虛擬塊大小設(shè)置成預(yù)期該產(chǎn)品將支持的最低公共實際塊大小。用于在NAND 存儲器上存儲數(shù)據(jù)映像的系統(tǒng),使用該存儲器制造商所規(guī)定的算法來識別壞塊,隨后將數(shù) 據(jù)映像存儲在好塊中,同時跳過該些壞塊。虛擬邊界碼包含于用于存儲數(shù)據(jù)映像的每一個 好塊的虛擬塊邊界處。因此,數(shù)據(jù)映像包括虛擬邊界碼,其中當(dāng)計算設(shè)備訪問讀寫存儲器 時,可W查找虛擬邊界碼W識別要讀取的數(shù)據(jù)塊,而無需必須遵循特定于經(jīng)銷商的參數(shù)來 識別該存儲器巧片中的好塊或壞塊。
[0012] 另一個方面包括可W在計算設(shè)備中實現(xiàn)的、用于從讀寫存儲器中讀取數(shù)據(jù)映像的 方法。該方法可W包括;訪問存儲器的第一虛擬塊中的數(shù)據(jù),并針對虛擬邊界碼,對該存儲 設(shè)備進(jìn)行掃描。該虛擬邊界碼指示第一虛擬塊之后的第二虛擬塊的邊界。此外,該方法還 可W包括;響應(yīng)于識別出虛擬邊界碼,訪問第二虛擬塊中的數(shù)據(jù)。此外,該方法還可W包括: 至少基于在第一虛擬塊中訪問的數(shù)據(jù)和在第二虛擬塊中訪問的數(shù)據(jù),讀取數(shù)據(jù)映像。此外, 該方法還可W包括;響應(yīng)于在其它虛擬塊中識別的虛擬邊界碼,訪問其它虛擬塊中的數(shù)據(jù)。
[0013] 另外的方面包括具有處理器的計算設(shè)備,其中該處理器配置有處理器可執(zhí)行指 令,W執(zhí)行與上面所討論的方法相對應(yīng)的各種操作。
[0014] 另外的方面包括計算設(shè)備,其中該計算設(shè)備具有用于執(zhí)行與上面所討論的方法操 作相對應(yīng)的功能的各種單元。
[0015] 另外的方面包括其上存儲有處理器可執(zhí)行指令的非臨時性處理器可讀存儲介質(zhì), 其中所述處理器可執(zhí)行指令被配置為使處理器執(zhí)行與上面所討論的方法操作相對應(yīng)的各 種操作。
【附圖說明】
[0016] 被并入本文并且構(gòu)成本說明書一部分的附圖,描繪了本發(fā)明的示例性實施例,并 且連同上面給出的概括描述W及下面給出的詳細(xì)描述一起來解釋本發(fā)明的特征。
[0017] 圖1是根據(jù)一個實施例的讀寫存儲設(shè)備封裝的圖。
[001引圖2示出了用于配置圖1的讀寫存儲設(shè)備的處理步驟。
[0019] 圖3根據(jù)一個實施例,示出了五種讀寫存儲設(shè)備封裝場景。
[0020] 圖4根據(jù)一個實施例,示出了兩個另外的讀寫存儲設(shè)備封裝場景。
[0021] 圖5是示出用于在讀寫存儲器上保存數(shù)據(jù)映像的一個方面方法的處理流程圖。
[0022] 圖6是從讀寫存儲設(shè)備中讀取引導(dǎo)裝載程序并進(jìn)行執(zhí)行的一個方面方法的處理 流程圖。
[0023] 圖7示出了用于在讀寫存儲設(shè)備上重寫映像的處理步驟。
[0024] 圖8是在讀寫存儲設(shè)備上重寫映像的一個方面方法的處理流程圖。
[0025] 圖9是適合于結(jié)合各種實施例使用的計算設(shè)備的部件圖。
[0026] 圖10是適合于結(jié)合各種實施例使用的另一種計算設(shè)備的部件圖。
[0027] 圖11是適合于結(jié)合各種實施例使用的另一種計算設(shè)備的部件圖。
【具體實施方式】
[002引現(xiàn)在參照附圖來詳細(xì)地描述各個實施例。在可W的地方,貫穿附圖使用相同的附 圖標(biāo)記來指代相同或者類似的部件。對于特定示例和實現(xiàn)的引用只是用于說明目的,而不 是旨在限制本發(fā)明或者權(quán)利要求的保護(hù)范圍。在不脫離本發(fā)明的保護(hù)范圍的基礎(chǔ)上,可W 設(shè)計替代性的實施例。此外,為了避免造成本發(fā)明的相關(guān)細(xì)節(jié)的模糊,沒有詳細(xì)描述或者省 略了本發(fā)明的一些公知單元。
[0029] 本文所使用的"示例性的"一詞意味著"用作例子、實例或說明"。本文中描述為 "示例性"的任何實施方式不應(yīng)被解釋為比其它實現(xiàn)更優(yōu)選或更具優(yōu)勢。另外,為了清楚地 區(qū)分多個描述的組成元素,本文使用"第一"、"第二"、"第S"、"主要"、"輔助"、"第S級"之 類的詞語或者類似的措詞,但其并不旨在將本發(fā)明限于元素的特定順序或者層次。如本文 所使用的術(shù)語"訪問"或"訪問到"指代與電子存儲設(shè)備進(jìn)行交互的動作,或者當(dāng)指定其特 定部分時,用于掃描或讀取其上的數(shù)據(jù)或信息。此外,如本文所使用的術(shù)語"掃描"或"掃 描到"意味著檢查、解讀或查看數(shù)據(jù)或信息,特別是電子存儲設(shè)備中的數(shù)據(jù)或信息。相比而 言,如本文所使用的術(shù)語"讀取"或"讀取到"意味著獲得、提取、復(fù)制或獲取數(shù)據(jù)或信息,特 別是電子存儲設(shè)備中的數(shù)據(jù)或信息。
[0030] 本文所公開的各個方面提供用于將數(shù)據(jù)映像存儲到讀寫存儲器(例如,閃存),并 從該些存儲器中讀取數(shù)據(jù)映像的機(jī)制,其避免了對定制化的和/或特定于設(shè)備的壞塊檢測 /管理例程的需要。所公開的技術(shù)的一個方面包括;將數(shù)據(jù)映像存儲到讀寫存儲設(shè)備(例 如,閃存設(shè)備)的方法。該方法包括:基于針對讀寫存儲設(shè)備指定的一系列虛擬塊的虛擬塊 大小,來確定數(shù)據(jù)映像分布。該些虛擬塊是根據(jù)本發(fā)明的方面來生成的,而實際塊是該讀寫 存儲器(如,閃存)的固定參數(shù)。讀取存儲設(shè)備的實際塊大小可被虛擬塊大小整除,而沒有 余數(shù)。用此方式,一個或多個虛擬塊將精確地等于實際塊。如果數(shù)據(jù)映像大于虛擬塊大小, 則將其分割成多個部分,W便適應(yīng)用于存儲該數(shù)據(jù)映像的讀寫存儲器的塊大小。向該些數(shù) 據(jù)映像部分中的至少一個添加虛擬邊界碼。可W將虛擬邊界碼添加到數(shù)據(jù)映像部分的開始 處,作為虛擬塊的初始邊界。數(shù)據(jù)映像可W是引導(dǎo)啟動進(jìn)程中計算設(shè)備所使用的數(shù)據(jù)和軟 件的一部分??蒞根據(jù)虛擬塊大小和整個數(shù)據(jù)映像的大小,按照需要將數(shù)據(jù)映像分割成盡 可能多的部分。數(shù)據(jù)映像的全部或一部分,可W仍然存儲在NAND存儲器的塊0中。此外, 該方法還包括;將該數(shù)據(jù)映像部分存儲在所述一系列虛擬塊中的一個虛擬塊里。在存儲數(shù) 據(jù)映像部分時,跳過任何中間的壞塊。用此方式,一個或多個壞塊被布置在各個虛擬塊中所 保存的存儲的數(shù)據(jù)映像部分之間。可W將數(shù)據(jù)映像第一部分和第二部分布置在讀寫存儲設(shè) 備的共享實際塊中。該數(shù)據(jù)映像的后續(xù)部分中的每一個部分可W具有添加到自身的虛擬邊 界碼。該種方式利用虛擬邊界碼在讀寫存儲器上存儲數(shù)據(jù)映像,其中計算設(shè)備可W查找虛 擬邊界碼W定位要讀取的存儲器的虛擬塊,而無需必須依賴好塊/壞塊列表。該避免了對 計算設(shè)備進(jìn)行編程,W適應(yīng)變化非常大的各種好塊/壞塊方案的需求。用此方式,可W將相 同的數(shù)據(jù)映像部分(包括那些具有添加到自身的虛擬邊界碼的數(shù)據(jù)映像部分)存儲在另外 的讀寫設(shè)備上。該些另外的讀寫設(shè)備甚至可W彼此之間具有不同的特定于頁、塊和/或設(shè) 備的壞塊算法特性。
[0031] 計算設(shè)備可W實現(xiàn)從讀寫存儲器中讀取數(shù)據(jù)映像的方面的方法,其中該讀寫存儲 器利用使用上述方法所生成的數(shù)據(jù)映像。當(dāng)使用讀寫存儲器來存儲引導(dǎo)加載程序映像時, 可W在針對計算設(shè)備所執(zhí)行的引導(dǎo)加載例程中實現(xiàn)該方法。該引導(dǎo)加載程序映像不需要 是針對計算設(shè)備執(zhí)行的專有引導(dǎo)加載程序。該方法包括:訪問讀寫存儲器的虛擬塊中的數(shù) 據(jù)。讀取存儲設(shè)備的實際塊大小可被虛擬塊大小整除,而沒有余數(shù),其包括實際塊大小等于 虛擬塊大小的場景。如果在該虛擬塊中不包含被訪問的完整的數(shù)據(jù)映像,則該方法可W在 讀寫存儲器中向前掃描W查找虛擬邊界碼,其中虛擬邊界碼指示另一個虛擬塊的邊界(例 如,開始)。當(dāng)識別出虛擬邊界碼時,計算設(shè)備數(shù)據(jù)裝載例程(例如,引導(dǎo)加載例程)可W訪 問該其它虛擬塊中的數(shù)據(jù)。由于存儲器是通過上述方法來裝載的,因此虛擬邊界碼指示虛 擬塊(在該虛擬塊中標(biāo)識出該虛擬邊界碼)是好塊,并包括可W讀取的該數(shù)據(jù)映像的一部 分。在數(shù)據(jù)的其它塊中進(jìn)行讀取之后,如果仍然還沒有訪問完整的數(shù)據(jù)映像,則計算設(shè)備數(shù) 據(jù)裝載例程