專利名稱:用于塊內(nèi)頁面分組的方法及設(shè)備的制作方法
相關(guān)申請(qǐng)交叉參考本發(fā)明與下列專利申請(qǐng)案有關(guān)于2002年10月28日提交的標(biāo)題為″WEARLEVELING IN NON-VOLATILE STORAGE SYSTEMS″的共同待決美國專利申請(qǐng)案第10/281,739號(hào)(代理案號(hào)SANDP023/SDK0366.000US);于2002年10月28日提交的標(biāo)題為″TRACKING THE MOST FREQUENTLY ERASEDBLOCKS IN NON-VOLATILE MEMORY SYSTEMS″的共同待決美國專利申請(qǐng)案第10/281,670號(hào)(代理人案號(hào)SANDP025/SDK0366.002US);于2002年10月28日提交的標(biāo)題為″TRACKING THE LEAST FREQUENTLY ERASEDBLOCKS IN NON-VOLATILE MEMORY SYSTEMS″的共同待決美國專利申請(qǐng)案第10/281,824號(hào)(代理人案號(hào)SANDP026/SDK0366.003US);于2002年10月28日提交的標(biāo)題為″METHOD AND APPARATUS FOR SPLITTING ALOGICAL BLOCK″的共同待決美國專利申請(qǐng)案第10/281,631號(hào)(代理人案號(hào)SANDP028/SDK0371.000US);于2002年10月28日提交的標(biāo)題為″METHODAND APPARATUS FOR RESOLVING PHYSICAL BLOCKS ASSOCIATEDWITH A COMMON LOGICAL BLOCK″的共同待決美國專利申請(qǐng)案第10/281,762號(hào)(代理人案號(hào)SANDP030/SDK0416.000US);于2002年10月28日提交的標(biāo)題為″MAINTAINING ERASE COUNTS IN NON-VOLATILESTORAGE SYSTEMS″的共同待決美國專利申請(qǐng)案第10/281,696號(hào)(代理人案號(hào)SANDP031/SDK0420.000US);于2002年10月28日提交的標(biāo)題為″METHODAND APPARATUS FOR MANAGING AN ERASE COUNT BLOCK″的共同待決美國專利申請(qǐng)案第10/281,626號(hào)(代理人案號(hào)SANDP032/SDK0420.001US);以及于2002年10月28日提交的標(biāo)題為″METHOD AND APPARATUS FORPERFORMING MULTI-PAGE READ AND WRITE OPERATIONS IN ANON-VOLATILE MEMORY″的共同待決美國專利申請(qǐng)案第10/281,804號(hào)(代理人案號(hào)SANDP033/SDK0426.000US),上述專利申請(qǐng)案的全文皆以引用方式并入本文中。
發(fā)明
背景技術(shù):
領(lǐng)域本發(fā)明大致上是關(guān)于大容量數(shù)字?jǐn)?shù)據(jù)存儲(chǔ)系統(tǒng)。更具體而言,本發(fā)明是關(guān)于用于有效地寫入一閃存存儲(chǔ)器塊的系統(tǒng)及方法。
背景技術(shù):
由于諸如閃存存儲(chǔ)系統(tǒng)等非易失性存儲(chǔ)系統(tǒng)的實(shí)際尺寸緊湊且非易失性存儲(chǔ)器具有可重復(fù)編程的能力,所以此類存儲(chǔ)系統(tǒng)的使用正在增加。閃存存儲(chǔ)器存儲(chǔ)系統(tǒng)緊湊的實(shí)際尺寸有利于將此種存儲(chǔ)系統(tǒng)用于各種日益流行的裝置內(nèi)。使用閃存存儲(chǔ)系統(tǒng)的裝置包括(但不限于)數(shù)字照相機(jī)、數(shù)字?jǐn)z像機(jī)、數(shù)字音樂播放器、手持式個(gè)人計(jì)算機(jī)及全球定位裝置。閃存存儲(chǔ)系統(tǒng)內(nèi)所包含的可對(duì)非易失性存儲(chǔ)器重復(fù)編程的能力使得閃存存儲(chǔ)系統(tǒng)可使用并再利用。
通常,閃存存儲(chǔ)系統(tǒng)可以包括閃存存儲(chǔ)器卡和閃存存儲(chǔ)器芯片組。閃存存儲(chǔ)器芯片組一般包括閃存存儲(chǔ)器部件和一控制器部件。通常,可將一閃存存儲(chǔ)器芯片組布置組裝到一嵌入式系統(tǒng)內(nèi)。此種組件或主機(jī)系統(tǒng)的制造商一般會(huì)以部件形式購入閃存存儲(chǔ)器以及其它部件,然后將所述閃存存儲(chǔ)器與所述其它部件組裝到主機(jī)系統(tǒng)中。
如圖1a所示,在一文件系統(tǒng)內(nèi),存儲(chǔ)器10被有效地劃分為一系統(tǒng)或目錄區(qū)12以及一數(shù)據(jù)區(qū)14。系統(tǒng)區(qū)12一般包括根目錄和文件分配表(FAT),而數(shù)據(jù)文件一般包括在數(shù)據(jù)區(qū)14內(nèi)。一文件系統(tǒng)可以按扇區(qū)(例如一次一個(gè)頁面)將數(shù)據(jù)寫入系統(tǒng)區(qū)12內(nèi),而按簇(例如一次復(fù)數(shù)個(gè)頁面)將數(shù)據(jù)寫入數(shù)據(jù)區(qū)14內(nèi)。每個(gè)簇的大小可以不同,一般是一與數(shù)據(jù)區(qū)14相關(guān)聯(lián)的文件的最小尺寸。例如,在一運(yùn)行Windows系統(tǒng)或DOS系統(tǒng)的完整系統(tǒng)內(nèi),一個(gè)簇的大小可以設(shè)計(jì)為包括約4到約256個(gè)頁面。
與一邏輯塊或與一文件系統(tǒng)相關(guān)的的塊的任何更新均被有效地傳播至閃存媒體,其中一物理塊被映射至一邏輯塊。圖1b是一圖示,顯示一閃存媒體的一邏輯塊與一物理塊之間的映射。邏輯塊52包括復(fù)數(shù)個(gè)頁面,每個(gè)頁面被映射至物理塊54的頁面,如此,當(dāng)與邏輯塊52相關(guān)的頁面被更新時(shí),所述更新被寫入物理塊54。
當(dāng)一頁面如邏輯頁面被更新時(shí),寫入所述一與頁面相關(guān)的物理塊。按常規(guī),可以一“固定”方式或一“隨機(jī)”方式寫入一塊。當(dāng)以一固定方式寫入一塊時(shí),將一頁面按相應(yīng)的頁面偏移寫入一塊。如圖2a所示,當(dāng)一邏輯塊頁面214被更新時(shí),與所述邏輯塊頁面214相關(guān)的內(nèi)容一般被寫入一物理塊210內(nèi)的相應(yīng)頁面218中。例如,當(dāng)邏輯塊頁面214對(duì)應(yīng)于物理塊頁面218h而所述物理塊面頁面218h可用時(shí),所述邏輯塊頁面214的內(nèi)容可被寫入所述物理塊頁面218h中。當(dāng)所述物理塊頁面218h可用時(shí),指示實(shí)際上未曾有頁面號(hào)高于物理塊頁面218h的頁面218被寫入到塊210內(nèi)。
如果曾經(jīng)有頁面號(hào)高于一含有待寫內(nèi)容的邏輯塊頁面的頁面218被寫入塊210內(nèi),則在安排以固定方式寫入塊210時(shí),所述邏輯塊頁面的內(nèi)容不能寫入塊210。在較高頁面已被寫入閃存存儲(chǔ)器后再寫入一較低頁面的操作是一“失序”寫操作。所屬領(lǐng)域的技術(shù)人員將了解,某些閃存媒體不允許此種類型的操作。因此,所述邏輯塊頁面的內(nèi)容以及頁面218的內(nèi)容被寫入一新塊內(nèi)。圖2b是一圖示,顯示一舊塊(例如圖2a的塊210)以及一被安排用于容納所述舊塊的內(nèi)容的新塊。當(dāng)一邏輯塊頁面234的內(nèi)容需要以一固定方式寫入一物理塊時(shí),需要確定塊210(即當(dāng)前塊)是否可以被寫入。如果邏輯頁面234具有一比塊210可用頁面號(hào)低的頁面號(hào)碼,則邏輯頁面234的內(nèi)容不能被寫入塊210。換句話說,如果一具有一與邏輯塊234相應(yīng)的頁面偏移的物理頁面218不可用——即已經(jīng)被寫入,則一般必須獲得一新的物理頁面230以能夠?qū)懭脒壿嬳撁?34的內(nèi)容。
因?yàn)檫壿媺K234對(duì)應(yīng)于物理塊210的頁面218c,當(dāng)獲得塊230時(shí),除了頁面218c的內(nèi)容,頁面218的內(nèi)容一般會(huì)拷入物理塊230的相應(yīng)頁面238中。頁面218c的內(nèi)容不拷入頁面238c,取而代之的是將邏輯塊234的內(nèi)容拷入頁面238c。因此,在經(jīng)過拷貝或?qū)懖僮骱?,頁?38a、頁面238b以及頁面238d-238g分別含有218a、頁面218b以及頁面218d-g的內(nèi)容,而頁面238c則含有與邏輯頁234相關(guān)的內(nèi)容。一旦塊230已被寫入,塊210即可以被擦除。
以一固定方式寫入一塊的操作通常在當(dāng)在所述塊內(nèi)存在一具有相應(yīng)頁面偏移的頁面可用于一正被寫入的頁面時(shí)是有效的。但是,當(dāng)不存在一具有相應(yīng)頁面偏移的頁面可供寫入時(shí),則即使在所述塊內(nèi)存在可用的頁面,一般也必須獲得一新塊來完成所述寫操作。獲得一新塊會(huì)耗用大量的計(jì)算開銷,通常必須運(yùn)行將內(nèi)容拷入所述新塊的拷貝操作以及擦除一舊塊的擦除操作。所屬領(lǐng)域的技術(shù)人員將了解,此類操作尤其是寫操作和擦除操作相當(dāng)昂貴。
作為以固定方式寫入一塊的替代手段,可以實(shí)施以一隨機(jī)方式將數(shù)據(jù)寫入一塊。在以隨機(jī)方式寫入塊時(shí),與基本上任何邏輯頁面相關(guān)聯(lián)的內(nèi)容均可寫入一塊內(nèi)的下一可用頁面空間內(nèi)。下文將結(jié)合圖3描述將數(shù)據(jù)寫入一塊內(nèi)的隨機(jī)方式。當(dāng)一邏輯塊頁面314的內(nèi)容需要寫入一物理塊310內(nèi)而塊310內(nèi)又存在可用的頁面318時(shí),則邏輯塊頁面314的內(nèi)容可以寫入下一繼之的可用頁面318。例如,邏輯頁面314a的內(nèi)容可以被寫入頁面318h,而邏輯頁面314b的內(nèi)容可以被寫入頁面318i中。
應(yīng)了解,盡管邏輯頁面314b可對(duì)應(yīng)于頁面318c,但如果頁面318i是塊310內(nèi)的下一可用頁面,則邏輯頁面314b的更新內(nèi)容可以被寫入頁面318i。當(dāng)基本上要讀取邏輯頁面314時(shí),一般必需識(shí)別塊310內(nèi)的頁面318i中含有與邏輯頁面314b相關(guān)的最新內(nèi)容。如圖所示,當(dāng)頁面318i是塊310內(nèi)的最末頁面時(shí),識(shí)別頁面318i含有與邏輯頁面314b相關(guān)的內(nèi)容可能需要讀取塊310的全部頁面,因而,可能需要相對(duì)大量的讀操作。讀取整個(gè)塊310的基本上全部的內(nèi)容以存取與邏輯頁面314b相關(guān)的內(nèi)容可能相當(dāng)耗時(shí)。盡管有許多技術(shù)可以利用整體系統(tǒng)的存儲(chǔ)器或閃存存儲(chǔ)器來快取與頁面318相關(guān)的信息以及頁面318的內(nèi)容,從而減少用于查找和存取與邏輯頁面(例如邏輯頁面314)相關(guān)的內(nèi)容的讀操作的次數(shù),但是此等技術(shù)提高了對(duì)整體系統(tǒng)的存儲(chǔ)器要求,或更具體而言,提高了對(duì)整體系統(tǒng)中軟件執(zhí)行的要求。
因此,需要一種用于有效地使與物理塊相關(guān)的頁面能被寫入和存取的設(shè)備及混合方法。也就是說,所需要的是一種混合系統(tǒng),其利用固定和隨機(jī)兩種過程來使一塊內(nèi)的頁面能夠有效地被寫入和容易地被存取,且基本上不需要相對(duì)頻繁的塊擦除或相對(duì)大量的讀操作。
發(fā)明內(nèi)容
本發(fā)明是關(guān)于一種可有效地使一塊內(nèi)的頁面能夠被存取的系統(tǒng)和方法。根據(jù)本發(fā)明的一個(gè)方面,一種用于將數(shù)據(jù)寫入在一非易失性存儲(chǔ)器內(nèi)的包括被劃分為復(fù)數(shù)個(gè)組的復(fù)數(shù)個(gè)頁面且每個(gè)組包括兩個(gè)或更多頁面的一第一塊的方法包括確定所述復(fù)數(shù)個(gè)組的一第一組何時(shí)可用于接收所述數(shù)據(jù)。當(dāng)確定所述第一組可用于接收所述數(shù)據(jù)時(shí),所述數(shù)據(jù)被寫入所述第一組中所包括的一第一頁面。本方法也包括在確定所述第一組不可用于接收所述數(shù)據(jù)的情況下確定所述復(fù)數(shù)個(gè)組中的一第二組何時(shí)可用于接收所述數(shù)據(jù),并在確定所述第二組可用于接收所述數(shù)據(jù)時(shí),將所述數(shù)據(jù)寫入所述第二組中所包括的一第二頁面。
在一實(shí)施例中,所述方法也包括在確定所述第二組不可用于接收所述數(shù)據(jù)的情況下確定一第二塊何時(shí)可用于接收所述數(shù)據(jù)。在另一實(shí)施例中,所述數(shù)據(jù)與一邏輯頁面相關(guān)聯(lián),而所述第一塊是一第一物理塊。
對(duì)塊內(nèi)的頁面進(jìn)行分組,以便在待寫入一頁面時(shí)可獲得一在一物理塊內(nèi)的頁面組而非新的物理塊,這樣可以提高與寫頁面相關(guān)的總體效率。換句話說,降低了必須獲取一新塊才能寫入數(shù)據(jù)的可能性,因?yàn)榇嬖诳墒褂迷撔聣K內(nèi)的一組的可能性。這樣,可以更高效地進(jìn)行一寫入過程,此至少部分地是因?yàn)榭梢源蟠蟮亟档筒脸^程的發(fā)生,例如一旦獲得新塊時(shí)用于擦除舊塊的擦除過程。
另外,一用于讀取存儲(chǔ)于一特定頁面內(nèi)的一組數(shù)據(jù)的讀取過程也可更高效地進(jìn)行,因?yàn)榭梢约?xì)讀(peruse)復(fù)數(shù)個(gè)組以試圖識(shí)別特定頁面,而不需要讀取整個(gè)塊來查找所述特定頁面。例如,如果一頁面組被確定不含所述特定頁面,則不需要對(duì)所述組中的頁面進(jìn)行逐一讀取,也就是說,基本上只有含有所述特定頁面的組中的頁面才需要讀取。通過應(yīng)用了組概念,由于基本上只需要檢查同一組內(nèi)的頁面,因此,讀操作的速度比以一有效的隨機(jī)方式執(zhí)行讀操作時(shí)的速度快。一與組概念相關(guān)聯(lián)的寫操作比一常規(guī)固定過程更快,因?yàn)樵谝粏蝹€(gè)物理塊中有更多的位置用于向所述頁面寫入。這樣,就減少了分配新塊和擦除舊塊的需要。
根據(jù)本發(fā)明的另一個(gè)方面,一構(gòu)成一非易失性存儲(chǔ)器的一部分的存儲(chǔ)塊包括復(fù)數(shù)個(gè)頁面,該等頁面被劃分為至少一第一組頁面和一第二組頁面。所述存儲(chǔ)塊也包括一第一組。所述第一組含有所述第一組頁面,并具有用于識(shí)別所述第一組的一第一個(gè)組識(shí)別符并存儲(chǔ)在所述第一組內(nèi)。此外,所述存儲(chǔ)塊也包括一第二組。所述第二組含有所述第二組頁面,并具有用于識(shí)別所述第二組的一第二個(gè)組識(shí)別符。所述第二個(gè)組識(shí)別符存儲(chǔ)于所述第二組內(nèi)。在一實(shí)施例中,所述第一組頁面所含頁面的次序相對(duì)于所述第一組的一開始部位是基本上固定的,而所述第二組頁面所含頁面的次序相對(duì)于所述第二組的一開始部位是基本上固定的。
根據(jù)本發(fā)明的另一個(gè)方面,一種用于將數(shù)據(jù)寫入在一非易失性存儲(chǔ)器內(nèi)的包括被劃分為具有兩個(gè)或更多物理頁面的復(fù)數(shù)個(gè)物理組的復(fù)數(shù)個(gè)物理頁面的一第一物理塊的方法包括識(shí)別與一第一邏輯頁面相關(guān)聯(lián)的一第一組數(shù)據(jù),確定復(fù)數(shù)個(gè)物理組中的一第一物理組何時(shí)與所述第一邏輯組相關(guān)聯(lián)。所述第一邏輯頁面是一邏輯塊的一第一邏輯組中所包含的復(fù)數(shù)個(gè)邏輯頁面之一。本方法也包括在確定所述第一物理組已與所述第一邏輯組相關(guān)聯(lián)的情況下確定所述第一物理組中所包含的一第一物理頁面何時(shí)可用于容納所述第一組數(shù)據(jù);以及在確定所述第一物理頁面可用于容納所述第一組數(shù)據(jù)時(shí)將所述第一組數(shù)據(jù)寫入所述第一物理頁面。
在一實(shí)施例中,所述將數(shù)據(jù)寫入一第一物理塊的方法也包括在確定所述第一物理頁面不可用于容納所述第一組數(shù)據(jù)的情況下確定所述復(fù)數(shù)個(gè)物理組中所包括的一第二物理組何時(shí)可用;及將所述第一組數(shù)據(jù)寫入與所述第二物理組相關(guān)聯(lián)的一第二物理頁面。在此一實(shí)施例中,所述方法可以進(jìn)一步包括在確定所述第二物理組不可用的情況下確定一與所述非易失性存儲(chǔ)器相關(guān)的第二物理塊何時(shí)可用于容納所述第一組數(shù)據(jù)。
在閱讀以下詳細(xì)說明并研究圖紙中的各附圖后,本發(fā)明的這些及其它優(yōu)點(diǎn)即顯而易見。
結(jié)合附圖并參閱下文描述,可更清楚地了解本發(fā)明,其中圖1a是一圖示,其顯示被一文件系統(tǒng)有效劃分的存儲(chǔ)器。
圖1b是一圖示,其顯示一邏輯塊與一物理塊之間的映射。
圖2a是一圖示,其顯示一被安排用于以固定方式容納與一邏輯塊頁面相關(guān)的內(nèi)容的物理塊。
圖2b是一圖示,其顯示一舊物理塊(如圖2a的塊210)以及一被安排用于容納所述舊塊的內(nèi)容的新物理塊。
圖3是一物理塊的圖示,與一邏輯塊頁面相關(guān)的內(nèi)容將要以一隨機(jī)方式被寫入該物理塊中。
圖4a是一圖示,其顯示一含有一非易失性存儲(chǔ)器的通用主機(jī)系統(tǒng)。
圖4b是一圖示,其顯示一存儲(chǔ)器裝置,例如圖4a的存儲(chǔ)器裝置120。
圖4c是一圖示,其顯示含有一嵌入式非易失性存儲(chǔ)器的主機(jī)系統(tǒng)。
圖5是一圖示,其顯示根據(jù)本發(fā)明一實(shí)施例的一具有邏輯塊的文件系統(tǒng)和一具有物理塊的媒體。
圖6是一圖示,其顯示根據(jù)本發(fā)明一實(shí)施例的一具有安排成組的頁面的塊。
圖7是一圖示,其顯示根據(jù)本發(fā)明的一實(shí)施例的一個(gè)頁面。
圖8a是一圖示,其顯示根據(jù)本發(fā)明的一實(shí)施例的分別劃分為組的一邏輯塊和一物理塊。
圖8b是一圖示,其顯示一邏輯塊和一物理塊,即圖8a的邏輯塊802和物理塊806,其指示根據(jù)本發(fā)明的一實(shí)施例可如何寫入所述物理塊內(nèi)的組。
圖8c是一圖示,其顯示一邏輯塊和一物理塊,即圖8a的邏輯塊802和物理塊806,其指示根據(jù)本發(fā)明的一個(gè)實(shí)施例可如何關(guān)聯(lián)所述塊內(nèi)的組。
圖8d是一圖示,其顯示根據(jù)本發(fā)明的一實(shí)施例的一邏輯塊(即圖8a-c的邏輯塊802)與一新的物理塊在一合并操作后的關(guān)聯(lián)關(guān)系。
圖9是一圖示,其顯示根據(jù)本發(fā)明的一實(shí)施例的一當(dāng)前工作塊信息表。
圖10a和10b是程序流程圖,其顯示根據(jù)本發(fā)明的一實(shí)施例將與一構(gòu)成一邏輯組的一部分的邏輯頁面相關(guān)的內(nèi)容寫入一構(gòu)成一物理組一部分的物理頁面的步驟。
圖11是一方塊圖,其顯示根據(jù)本發(fā)明的一實(shí)施例的一個(gè)系統(tǒng)架構(gòu)。
具體實(shí)施例方式
降低存儲(chǔ)或重寫更新頁面所需要的開銷和時(shí)間總量可使整體系統(tǒng)——例如,具有一嵌入式非易失性存儲(chǔ)器芯片的整體主機(jī)系統(tǒng)——更高效地運(yùn)行。每次當(dāng)與一物理塊相關(guān)聯(lián)的一頁面具有一低于新近寫入的其它頁面的頁面號(hào)碼時(shí)要更新所述頁面時(shí)均獲取一個(gè)新的物理塊會(huì)消耗相當(dāng)大量的系統(tǒng)資源,因而會(huì)相對(duì)低效。另一方面,使實(shí)際上任何頁面能寫入一塊的下一可用空間可導(dǎo)致在要查找一特定頁面時(shí)必須執(zhí)行過紊亂而大量的讀操作。
通過將塊內(nèi)的頁面劃分成組,使得在當(dāng)物理塊內(nèi)存在至少一個(gè)可用組時(shí)可獲得所述物理塊內(nèi)的一個(gè)組而非新的物理塊用來將一頁面寫入其中,因?yàn)橐话憧梢蕴岣吲c寫頁面相關(guān)的總體效率。換句話說,這樣可以降低為了能寫數(shù)據(jù)而不得不獲得一新塊的可能性,因?yàn)榇嬖诳捎盟鲂聣K內(nèi)的一個(gè)組的可能性。通過使用組或子塊,總體上可以更高效地分配塊。
可獲益于在一物理塊內(nèi)進(jìn)行頁面分組的閃存存儲(chǔ)器系統(tǒng)(或更廣泛而言,非易失性存儲(chǔ)器裝置)包括閃存存儲(chǔ)器卡和芯片組。通常,閃存存儲(chǔ)器系統(tǒng)是與主機(jī)系統(tǒng)結(jié)合使用,如此所述主機(jī)系統(tǒng)可以將數(shù)據(jù)寫入所述閃存存儲(chǔ)器系統(tǒng)或從中讀取數(shù)據(jù)。但是,某些閃存存儲(chǔ)器系統(tǒng)包括嵌入式閃存存儲(chǔ)器和軟件,其在一主機(jī)上執(zhí)行以基本上充當(dāng)嵌入式閃存存儲(chǔ)器的控制器,具體將在下文中參照?qǐng)D4c加以討論。參照?qǐng)D4a,將描述一包括一非易失性存儲(chǔ)器裝置(例如一CompactFlash存儲(chǔ)器卡)的通用主機(jī)系統(tǒng)。一主機(jī)或計(jì)算機(jī)系統(tǒng)100一般包括一系統(tǒng)總線104,其使微處理器108、隨機(jī)存取存儲(chǔ)器(RAM)112和輸入/輸出電路116之間能夠通信。應(yīng)了解,主機(jī)系統(tǒng)100一般可以包括其它部件(為說明目的未顯示在圖中),例如顯示裝置和連網(wǎng)裝置。
一般而言,主機(jī)系統(tǒng)100能夠捕獲信息,所述信息包括(但不限于)靜止圖像信息、音頻信息和視頻圖像信息。此種信息可以實(shí)時(shí)捕獲,并可以按無線方式傳送到主機(jī)系統(tǒng)100。盡管主機(jī)系統(tǒng)100實(shí)際上可以是任何系統(tǒng),但是主機(jī)系統(tǒng)100通常是諸如數(shù)字相機(jī)、攝像機(jī)、蜂窩通信裝置、音頻播放器或視頻播放器等的系統(tǒng)。但是,應(yīng)了解,主機(jī)系統(tǒng)100一般而言可以是實(shí)際上任何存儲(chǔ)數(shù)據(jù)或信息和檢索數(shù)據(jù)或信息的系統(tǒng)。
主機(jī)系統(tǒng)100也可以是一僅捕獲數(shù)據(jù)或僅檢索數(shù)據(jù)的系統(tǒng)。也就是說,在一實(shí)施例中,主機(jī)系統(tǒng)100可以是一存儲(chǔ)數(shù)據(jù)的專用系統(tǒng),或者主機(jī)系統(tǒng)100也可以是一讀取數(shù)據(jù)的專用系統(tǒng)。舉例而言,主機(jī)系統(tǒng)100可以是被布置僅用于寫入或存儲(chǔ)數(shù)據(jù)的一存儲(chǔ)器寫入器。或者,主機(jī)系統(tǒng)100也可以是一通常被布置用于讀取或檢索數(shù)據(jù)但不捕獲數(shù)據(jù)的裝置,例如一MP3播放器。
在一實(shí)施例中,非易失性存儲(chǔ)器裝置120是一可拆卸式非易失性存儲(chǔ)器裝置,其被布置成與總線104對(duì)接以存儲(chǔ)信息。一可選接口塊130可使非易失性存儲(chǔ)器裝置120與總線104間接對(duì)接。所屬領(lǐng)域的技術(shù)人員將理解,在存在輸入/輸出電路模塊116的情況下,輸入/輸出電路模塊116用于降低總線104上的負(fù)載。非易失性存儲(chǔ)器裝置120包括非易失性存儲(chǔ)器124和一可選存儲(chǔ)器控制系統(tǒng)128。在一實(shí)施例中,非易失性存儲(chǔ)器裝置120可構(gòu)建在一單個(gè)芯片或一電路小片(die)上?;蛘?,非易失性存儲(chǔ)器裝置120可構(gòu)建于一多芯片模塊或復(fù)數(shù)個(gè)離散部件上,所述復(fù)數(shù)個(gè)離散部件可構(gòu)成一芯片組或可以一起用作非易失性存儲(chǔ)器裝置120。下文將結(jié)合圖4b更詳細(xì)地介紹非易失性存儲(chǔ)器裝置120的一個(gè)實(shí)施例。
非易失性存儲(chǔ)器124——例如,諸如NAND閃存存儲(chǔ)器的閃存存儲(chǔ)器——被布置用于存儲(chǔ)數(shù)據(jù),以便在需要時(shí)可以存取和讀取數(shù)據(jù)。存儲(chǔ)于非易失性存儲(chǔ)器124中的數(shù)據(jù)也可在合適時(shí)擦除,但應(yīng)當(dāng)了解,非易失性存儲(chǔ)器124中的某些數(shù)據(jù)是不可以擦除的。存儲(chǔ)數(shù)據(jù)、讀取數(shù)據(jù)和擦除數(shù)據(jù)的過程一般由存儲(chǔ)器控制系統(tǒng)128控制,或者,在不存在存儲(chǔ)器控制系統(tǒng)128的情況下,由微處理器108所執(zhí)行的軟件來控制??梢怨芾矸且资源鎯?chǔ)器124的運(yùn)行,通過使非易失性存儲(chǔ)器124的各部分基本上均勻地磨損從而使非易失性存儲(chǔ)器124的壽命最大化。
非易失性存儲(chǔ)器裝置120一般被描述為包括一可選存儲(chǔ)器控制系統(tǒng)128,即控制器。非易失性存儲(chǔ)器裝置120經(jīng)常可包括用于非易失性存儲(chǔ)器124和存儲(chǔ)器控制系統(tǒng)128(即控制器)功能的單獨(dú)的芯片。(句子堆砌)舉例而言,盡管包括(但不限于)PC卡、CompactFlash卡、MultiMedia卡和Secure Digital卡的非易失性存儲(chǔ)器裝置包括可構(gòu)建于一單獨(dú)芯片上的控制器,但是其它非易失性存儲(chǔ)器裝置可能并不包括構(gòu)建于一單獨(dú)芯片上的控制器。在一實(shí)施例中,非易失性存儲(chǔ)器裝置120不包括單獨(dú)的存儲(chǔ)器和控制器芯片,此處所屬領(lǐng)域的技術(shù)人員將了解,所述存儲(chǔ)器和控制器功能可以集成到一單個(gè)芯片中?;蛘?,存儲(chǔ)器控制系統(tǒng)128的功能可以由微處理器108提供,例如,在上文討論的其中非易失性存儲(chǔ)器裝置120不包括存儲(chǔ)器控制器128的實(shí)施例中。
參照?qǐng)D4b,下將根據(jù)本發(fā)明的一實(shí)施例更詳細(xì)地描述非易失性存儲(chǔ)器裝置120。如上文所述,非易失性存儲(chǔ)器裝置120包括非易失性存儲(chǔ)器124,并可能包括存儲(chǔ)器控制系統(tǒng)128。存儲(chǔ)器124和控制系統(tǒng)128或控制器可以是非易失性存儲(chǔ)器裝置120的主要部件,盡管(例如)當(dāng)存儲(chǔ)器124是一嵌入式NAND裝置時(shí),非易失性存儲(chǔ)器裝置120可不包括控制系統(tǒng)128。存儲(chǔ)器124可以是在一半導(dǎo)體基底上形成的存儲(chǔ)單元陣列,其中通過將兩個(gè)或更多電荷電平中的一個(gè)存儲(chǔ)在存儲(chǔ)單元的個(gè)別存儲(chǔ)元件上來將一或多位數(shù)據(jù)存儲(chǔ)于個(gè)別存儲(chǔ)單元中。一非易失性閃存電可擦除可編程只讀存儲(chǔ)器(EEPROM)是此類系統(tǒng)的一通用類型存儲(chǔ)器的一個(gè)實(shí)例。
若存在,則控制系統(tǒng)128通過總線15與主計(jì)算機(jī)或使用所述存儲(chǔ)器系統(tǒng)存儲(chǔ)數(shù)據(jù)的其它系統(tǒng)進(jìn)行通信??偩€15一般是圖4a的總線104的一部分。控制系統(tǒng)128也控制存儲(chǔ)器124的操作,所述存儲(chǔ)器124也可包括一存儲(chǔ)單元陣列11,用于寫由所述主機(jī)提供的數(shù)據(jù)、讀取所述主機(jī)請(qǐng)求的數(shù)據(jù)以及執(zhí)行存儲(chǔ)器124運(yùn)行過程中所需的各種內(nèi)務(wù)管理功能??刂葡到y(tǒng)128一般包括一通用微處理器,其具有相關(guān)的非易失性軟件存儲(chǔ)器、各種邏輯電路等。其通常也包括一個(gè)或更多狀態(tài)機(jī),用于控制專用例程的執(zhí)行。
存儲(chǔ)單元陣列11通常由控制系統(tǒng)128或微處理器108通過地址譯碼器17尋址。譯碼器17可向陣列11的門和位線施加恰當(dāng)?shù)碾妷?,以將?shù)據(jù)編程至由所述控制系統(tǒng)128尋址的一存儲(chǔ)單元組中、從中讀取數(shù)據(jù)或擦除所述存儲(chǔ)單元組。附加電路19可以包括編程驅(qū)動(dòng)器,所述編程驅(qū)動(dòng)器控制根據(jù)正被編程至一被尋址單元組中的數(shù)據(jù)而施加到所述陣列元件的電壓。電路19也可包括讀出放大器和其它從被尋址存儲(chǔ)單元組中讀取數(shù)據(jù)所需的電路。將要編程到陣列11中的數(shù)據(jù)或最近自陣列11讀取出的數(shù)據(jù)可以存儲(chǔ)于一緩沖存儲(chǔ)器21內(nèi),如圖所示,其可位于控制系統(tǒng)128內(nèi)。控制系統(tǒng)128也可包含各種寄存器,用于臨時(shí)存儲(chǔ)命令和狀態(tài)數(shù)據(jù)等。
陣列11可被劃分為大量的BLOCKS 0-N存儲(chǔ)單元。如閃存EEPROM系統(tǒng)中所常見的,塊可以是最小的擦除單位。也就是說,每個(gè)塊可包括被一起擦除的最小數(shù)目的存儲(chǔ)單元。每個(gè)塊通常被劃分為若干頁面。所屬領(lǐng)域的技術(shù)人員將了解,頁面可以是最小的編程單位。也就是說,一基本編程操作將數(shù)據(jù)寫入存儲(chǔ)單元的最少一個(gè)頁面內(nèi),或從其中讀取數(shù)據(jù)。如圖4b所示,一個(gè)扇區(qū)包括用戶數(shù)據(jù)和開銷數(shù)據(jù)。開銷數(shù)據(jù)通常包括從所述扇區(qū)的用戶數(shù)據(jù)計(jì)算得出的糾錯(cuò)碼(ECC)。所述控制系統(tǒng)128的一部分23可以在數(shù)據(jù)正被編程至陣列11內(nèi)時(shí)計(jì)算所述糾錯(cuò)碼,也可以在數(shù)據(jù)從陣列11讀取時(shí)檢查所述糾錯(cuò)碼。或者,將所述糾錯(cuò)碼存儲(chǔ)于與其所從屬的用戶數(shù)據(jù)不同的頁面或不同的塊內(nèi)。
一用戶數(shù)據(jù)扇區(qū)通常是512個(gè)字節(jié),相當(dāng)于磁盤驅(qū)動(dòng)器內(nèi)一扇區(qū)的大小。在所述的實(shí)施例中,開銷數(shù)據(jù)通常為另外的16個(gè)字節(jié)。最常見的是,一個(gè)數(shù)據(jù)扇區(qū)包括在一個(gè)頁面中,但也可以由兩個(gè)或更多的扇區(qū)來形成一個(gè)頁面。一般而言,任何數(shù)目的頁面可構(gòu)成一個(gè)塊。舉例來說,一塊可由達(dá)8頁至512頁、1024頁或更多頁構(gòu)成??梢酝ㄟ^選擇塊的數(shù)目為所述存儲(chǔ)器系統(tǒng)提供所要的數(shù)據(jù)存儲(chǔ)容量。陣列11通常被劃分為若干子陣列(未顯示),每個(gè)子陣列包括一部分所述塊,這些子陣列在一定程度上互相獨(dú)立的運(yùn)行,以提高執(zhí)行各種存儲(chǔ)器操作中的平行度。在美國專利第5,890,192號(hào)中描述了使用復(fù)數(shù)個(gè)子陣列的一個(gè)實(shí)例,該專利的全文以引用的方式并入本文中。
在一實(shí)施例中,非易失性存儲(chǔ)器被嵌入一系統(tǒng)中,例如一主機(jī)系統(tǒng)。圖4c是一圖示,其顯示一包括一嵌入式非易失存儲(chǔ)器的主機(jī)系統(tǒng)。主機(jī)或計(jì)算機(jī)系統(tǒng)150一般包括一系統(tǒng)總線154,其允許微處理器158、隨機(jī)存取存儲(chǔ)器(RAM)162和輸入/輸出電路166以及主機(jī)系統(tǒng)150的其它部件(未顯示)進(jìn)行通信。
一非易失性存儲(chǔ)器174,例如一閃存存儲(chǔ)器,使信息可以被存儲(chǔ)于主機(jī)系統(tǒng)150內(nèi)。在非易失性存儲(chǔ)器174和總線154之間可以提供一接口180,以供從非易失性存儲(chǔ)器174讀取信息并向其中寫入信息。
非易失性存儲(chǔ)器174可由微處理器158管理,所述微處理器158有效地執(zhí)行布置用于控制非易失性存儲(chǔ)器174的軟件和/或固件。也就是說,微處理器158可以運(yùn)行代碼裝置(未顯示),即軟件代碼裝置或固件代碼裝置,其可使非易失性存儲(chǔ)器174受到控制。此類代碼裝置可以是一與CPU一起封裝在微處理器158內(nèi)的閃存存儲(chǔ)器、一單獨(dú)的閃存只讀存儲(chǔ)器(ROM)或位于非易失性存儲(chǔ)器174內(nèi),其可使非易失性存儲(chǔ)器174內(nèi)的物理塊被尋址,并可使信息能夠被存儲(chǔ)在所述物理塊、從中讀取信息或從中擦除信息,此將在下文中具體描述。
通常,當(dāng)用戶寫入數(shù)據(jù)時(shí),所述用戶使用一文件系統(tǒng)有效地寫入數(shù)據(jù)。所述文件系統(tǒng)將所述數(shù)據(jù)與一邏輯塊,或更具體而言,一邏輯塊的頁面關(guān)聯(lián)起來,所述邏輯塊被映射至一與存儲(chǔ)媒體相關(guān)聯(lián)的物理塊。圖5是一圖示,其顯示根據(jù)本發(fā)明的一實(shí)施例的一具有邏輯塊的文件系統(tǒng)和一具有物理塊的媒體。一文件系統(tǒng)514的邏輯塊510包括任何數(shù)目的頁面518。包括于一邏輯塊(例如邏輯塊510a)內(nèi)的頁面518的數(shù)目取決于一擦除單元的大小。例如,如圖所示,當(dāng)最小擦除單元含有約32個(gè)頁面時(shí),邏輯塊510a可以包含約32個(gè)頁面。
媒體534(例如,嵌入式閃存存儲(chǔ)器)的物理塊530包含若干數(shù)量的頁面538。所屬領(lǐng)域的技術(shù)人員將了解,物理塊530中所包含的頁面538的數(shù)量通常與邏輯塊530中所包含的頁面518的數(shù)量相等。
如在下文中結(jié)合圖5所描述,利用一數(shù)據(jù)管理器或數(shù)據(jù)管理軟件,邏輯塊510可被映射至物理塊530。邏輯塊510與物理塊530之間的映射可以各自為一對(duì)一的映射,即其中一邏輯塊地址上的第一邏輯塊510被映射至一基本上與所述邏輯塊地址相同的物理塊地址上的第一物理塊530a。然而,邏輯塊510與物理塊530之間的映射經(jīng)常是使得一邏輯塊地址上的第一邏輯塊510a并非被映射至第一物理塊530a,而是映射至一具有與所述邏輯塊地址不同的物理塊地址的物理塊(例如物理塊530c)。
盡管與一邏輯塊相關(guān)聯(lián)的一組頁面地址可有效地全部對(duì)應(yīng)于與物理模塊相關(guān)聯(lián)的一組頁面地址,例如,一邏輯塊可能與邏輯頁面0-31相關(guān)聯(lián),而一物理塊可能與物理頁面0-31相關(guān)聯(lián),但是與一給定邏輯頁面地址相關(guān)聯(lián)的內(nèi)容可不必位于對(duì)應(yīng)的物理頁面地址。為便于存取到所包含的與一邏輯塊相關(guān)聯(lián)且物理上包含在一物理塊內(nèi)的所要內(nèi)容,與一塊相關(guān)聯(lián)的頁面可以被劃分為復(fù)數(shù)個(gè)組或子塊。與一邏輯塊相關(guān)聯(lián)的頁面和/或與一物理塊相關(guān)聯(lián)的頁面可以被劃分為組或單元。圖6是一圖示,其顯示根據(jù)本發(fā)明的一個(gè)實(shí)施例的一具有劃分為組的復(fù)數(shù)個(gè)頁面的塊。塊600包括若干頁面604。應(yīng)當(dāng)了解,塊600一般可包括任何數(shù)量的頁面604。
頁面604被布置成組608。一般而言,塊600內(nèi)的組608的數(shù)量和一組608內(nèi)頁面604的數(shù)量可大不相同。通常,組608內(nèi)頁面604的數(shù)量須選擇為可容納基本上任何大小的簇大小。例如,在某些系統(tǒng)中,簇大小可以為大約4個(gè)頁面604。在一個(gè)簇大小為約4個(gè)頁面604時(shí),組608內(nèi)頁面604的數(shù)量可以是4的倍數(shù),例如每個(gè)組608可有4或8個(gè)頁面604。
所屬領(lǐng)域的技術(shù)人員將了解,簇一般被視為一個(gè)文件的最小尺寸。因此,即使當(dāng)一文件系統(tǒng)試圖為一文件寫入基本上僅一個(gè)字節(jié)時(shí),實(shí)際上整個(gè)簇被指配給所述文件。繼之的文件將被寫入其它簇內(nèi)。
返回到圖6,在所示實(shí)施例中,每個(gè)組608包括4個(gè)頁面604。每個(gè)組608內(nèi)頁面604的次序相對(duì)于每個(gè)組608的開始部位是固定的。舉例而言,組608a內(nèi)頁面604a-d的次序是固定的,組608b內(nèi)頁面604e-h的次序也同樣如此。雖然每個(gè)組608內(nèi)頁面604的次序相對(duì)于每個(gè)組608的開始部位是固定的,但是塊600內(nèi)組608的次序一般是不固定的。
每一邏輯頁面和物理頁面一般包括一冗余區(qū)和一數(shù)據(jù)區(qū)。在所述實(shí)施例中,一冗余區(qū)或開銷區(qū)(overhead area)可包括最多約16個(gè)字節(jié)的信息,其包括(但不限于)用于識(shí)別一特定頁面所屬的組的組識(shí)別符,其可以是1個(gè)字節(jié)。圖7是根據(jù)本發(fā)明的一實(shí)施例的頁面的示意代表圖。頁面700包括一冗余區(qū)706和一數(shù)據(jù)區(qū)710。一般而言,頁面700包括約528個(gè)字節(jié),其中約16個(gè)字節(jié)可以包括在冗余區(qū)706內(nèi)且約512個(gè)字節(jié)可以包括在數(shù)據(jù)區(qū)710內(nèi)。盡管冗余區(qū)706可與頁面700內(nèi)最后的字節(jié)相關(guān)聯(lián),但在所述實(shí)施例中,冗余區(qū)706與頁面700的第一字節(jié)相關(guān)聯(lián)。
數(shù)據(jù)區(qū)710被布置用于存儲(chǔ)數(shù)據(jù)內(nèi)容712,例如用戶數(shù)據(jù)內(nèi)容。冗余區(qū)706被布置為包括可使頁面700被跟蹤的信息。例如,冗余區(qū)706可以包括一個(gè)組識(shí)別符714,其可識(shí)別頁面700屬于哪個(gè)組(即一塊內(nèi)的組)的一部分。為便于識(shí)別一組,組識(shí)別符714可以是與冗余區(qū)706從而與頁面700相關(guān)聯(lián)的第一個(gè)字節(jié)。
通常,如果組識(shí)別符714與一特定組的一識(shí)別符不匹配,則不讀取頁面700,此時(shí)讀取組識(shí)別符714并(例如)使用一整體系統(tǒng)的軟件或固件進(jìn)行檢查,以確定組識(shí)別符714是否與一特定組相關(guān)聯(lián)的識(shí)別符相匹配。由于組識(shí)別符714是與頁面700相關(guān)聯(lián)的第一字節(jié),因此讀取組識(shí)別符714需要相對(duì)較少的開銷,而且效率相對(duì)較高。如果組識(shí)別符714匹配一特定組的識(shí)別符,則在讀取冗余區(qū)706的剩余部分之外,還可讀取數(shù)據(jù)712。另一方面,如果組識(shí)別符714不匹配所述特定組的識(shí)別符,則數(shù)據(jù)712和冗余區(qū)706的剩余部分不被讀取。
通過在組識(shí)別符714匹配一特定組的識(shí)別符時(shí)基本上僅讀取與頁面700相關(guān)的全部位元,當(dāng)組識(shí)別符714不匹配一特定組的識(shí)別符時(shí),基本上可去除通常與轉(zhuǎn)移約527個(gè)字節(jié)數(shù)據(jù)相關(guān)的轉(zhuǎn)移時(shí)間。換句話說,當(dāng)組識(shí)別符714不匹配一特定組的識(shí)別符時(shí),可以有效地去除與讀取或轉(zhuǎn)移頁面700的剩余字節(jié)相關(guān)的時(shí)間。
或者,如果(例如)因?yàn)榻M識(shí)別符714匹配一特定組的識(shí)別符而要讀取剩余字節(jié),則有效的節(jié)省了一次存取時(shí)間,或從發(fā)出一讀取數(shù)據(jù)指令到所述數(shù)據(jù)準(zhǔn)備就緒供從所述閃存存儲(chǔ)器轉(zhuǎn)移所消耗的時(shí)間。冗余區(qū)706也可被置于數(shù)據(jù)區(qū)710之后。盡管在冗余區(qū)706被置于數(shù)據(jù)區(qū)710之后時(shí)一讀操作可能并未最優(yōu)化,但如上文所述,由于塊擦除操作的數(shù)量減少,寫操作的性能一般仍可得到提高。
圖8a是一圖示,其顯示根據(jù)本發(fā)明的一個(gè)實(shí)施例的各自被劃分為組的一邏輯塊和一物理塊。邏輯塊802和物理塊806分別被均等地劃分為組810和組814。在一實(shí)施例中,組810、814的數(shù)量通常是2的個(gè)冪。例如,在邏輯塊802中可能有1、2、4或8個(gè)組810。
邏輯塊802和物理塊806各包括32個(gè)頁面,但應(yīng)當(dāng)了解,邏輯塊802和物理塊806中頁面的數(shù)量可大不相同。邏輯塊802的每個(gè)組810包括8個(gè)頁面,例如,組810c包括8個(gè)頁面826,而物理塊806的每個(gè)組814包括8個(gè)頁面,例如組814a包括8個(gè)頁面834。通常,每個(gè)組810、814的頁面次序基本上是固定的。舉例來說,在組810c內(nèi),第一頁面826a基本上固定為“頁面0”,而第八頁面826h基本上被固定為“頁面7”。如此,在組814被排序成組814a為“組0”且組814d為“組3”時(shí),寫物理塊806的總“頁面30”基本上相當(dāng)于寫組814d的“頁面6”846g。
一般而言,物理塊806中組814的次序可以是隨機(jī)的。如上文相對(duì)于圖7所述的,組814的實(shí)際組號(hào)可以存儲(chǔ)在頁面的冗余區(qū)內(nèi)。存儲(chǔ)于組814a的頁面834中的組號(hào)被布置用于將頁面834識(shí)別為包含在組814a中。類似地,存儲(chǔ)于頁面838中的組號(hào)將頁面838識(shí)別為包含在組814b中;存儲(chǔ)于頁面842中的組號(hào)將頁面842識(shí)別為包含在組814c中;以及存儲(chǔ)于頁面846中的組號(hào)將頁面846識(shí)別為包含在組814d中。
如圖所示,物理組814a(即物理“組0”)中的頁面834的數(shù)據(jù)區(qū)被布置用于存儲(chǔ)與邏輯組810d相關(guān)聯(lián)的數(shù)據(jù)。物理組814c的頁面842也被布置用于存儲(chǔ)與邏輯組810d相關(guān)聯(lián)的數(shù)據(jù)。與邏輯組810c相關(guān)聯(lián)的數(shù)據(jù)被布置以存儲(chǔ)于物理組814b的頁面838的數(shù)據(jù)區(qū)內(nèi)。具體而言,在所述實(shí)施例中,與邏輯組810d相關(guān)聯(lián)的數(shù)據(jù)被寫入組814a中,然后與邏輯組810c相關(guān)聯(lián)的數(shù)據(jù)被寫入物理組814b中。在物理組814b被寫入數(shù)據(jù)后,再寫入與邏輯組810d相關(guān)聯(lián)的數(shù)據(jù)時(shí),寫入到物理組814c中。
參照?qǐng)D8b,將根據(jù)本發(fā)明的一個(gè)實(shí)施例描述如何寫入物理塊806的物理組814以實(shí)現(xiàn)如圖8a所示的組關(guān)聯(lián)關(guān)系的一個(gè)實(shí)例。用戶可以選擇將與邏輯組810d的邏輯“頁面1”830b相關(guān)聯(lián)的數(shù)據(jù)寫入物理組814a中,或更具體而言,物理組814a的物理“頁面1”834b,如860所示。一旦物理“頁面1”834b被寫入后,用戶可將與邏輯“頁面3”830d相關(guān)聯(lián)的數(shù)據(jù)寫入物理組814a的“頁面3”834d中,如862所示。
如果下一用戶指令是寫入與邏輯組810c相關(guān)聯(lián)的數(shù)據(jù),則即使在物理組814a中有額外的頁面834可用時(shí),與邏輯組810c相關(guān)聯(lián)的數(shù)據(jù)仍會(huì)寫入一基本上為空的物理組814中,或處于基本上被擦除狀態(tài)的物理組814中。例如,與組810c的邏輯“頁面2”826c相關(guān)聯(lián)的數(shù)據(jù)可以被寫入組814b的物理“頁面”838c,如864所示。與邏輯組810c相關(guān)聯(lián)的其它頁面也可被寫入組814b中,如866和868所示。
一旦寫入與邏輯塊810c相關(guān)聯(lián)的數(shù)據(jù)后,用戶可以決定再次寫入與邏輯塊810d相關(guān)聯(lián)的數(shù)據(jù)。這樣,與組810d的邏輯“頁面5-7”830f-h相關(guān)聯(lián)的數(shù)據(jù)可以被寫入組814c的適當(dāng)物理頁面842內(nèi),如870、872和874所示。通常,與邏輯“頁面5-7”830f-h相關(guān)聯(lián)的數(shù)據(jù)不可寫入物理組814a中,因?yàn)檫@樣可能會(huì)發(fā)生一失序?qū)戝e(cuò)誤,原因是物理組814b已被寫入而在組814b之后再寫入814a一般是不允許的。因此,與邏輯組810d相關(guān)聯(lián)的數(shù)據(jù)可被置于物理組814a和物理組814c內(nèi)。
與與邏輯塊802相關(guān)聯(lián)的更高總體邏輯塊地址相關(guān)聯(lián)的數(shù)據(jù)可以存儲(chǔ)到總體物理塊地址低于與較低整體邏輯塊地址相關(guān)聯(lián)的數(shù)據(jù)的物理塊806的物理頁面中。舉例來說,盡管與邏輯頁面830b相關(guān)聯(lián)的內(nèi)容可以被寫入物理頁面834b中,而所述物理頁面834b的總體物理塊地址可低于用來寫入與邏輯頁面826c相關(guān)聯(lián)的內(nèi)容的物理頁面838c,但是與邏輯頁面830b相關(guān)聯(lián)的總體邏輯塊地址可以高于與邏輯頁面826c相關(guān)聯(lián)的總體邏輯塊地址。
如果一先前寫過的頁面被蓋寫,例如在邏輯“頁面1”830b已被寫入“頁面1”834且物理組814b已被寫入之后某時(shí),與邏輯“頁面1”830b相關(guān)聯(lián)的數(shù)據(jù)被寫入物理組814d(未顯示),則存儲(chǔ)于“頁面1”834b的數(shù)據(jù)區(qū)中的內(nèi)容可視為無效。這樣,檢索與邏輯“頁面1”830b相關(guān)聯(lián)的內(nèi)容的命令會(huì)導(dǎo)致物理塊806被有效地反向搜索,直到發(fā)現(xiàn)一相應(yīng)的物理頁面。換句話說,首先會(huì)搜索物理組814d,然后是物理組814c、物理組814b和物理組814a。通過反向搜查,一般可存取到最新的數(shù)據(jù)。
如圖所示,在物理組814a-c已經(jīng)寫入之后,物理組814d仍然基本上處于未指配狀態(tài)。如果將要寫入邏輯組810b,則與邏輯組810b相關(guān)聯(lián)的數(shù)據(jù)可被寫入物理組814d中。也就是說,如圖8c所示,物理組814d可以有效地被指配給邏輯組810b。與邏輯組810b相關(guān)聯(lián)的數(shù)據(jù)被寫入物理組814d,而與邏輯組810c相關(guān)聯(lián)的數(shù)據(jù)被寫入物理組814b。邏輯組810d與物理組814a和物理組814c兩者均有關(guān)聯(lián)。
當(dāng)物理組814d被指配給邏輯組810b,且與邏輯組810b相關(guān)聯(lián)的數(shù)據(jù)被寫入物理組814d的數(shù)據(jù)區(qū)時(shí),如果與邏輯組810d相關(guān)聯(lián)的數(shù)據(jù)再次被寫入,則沒有可用的物理組814供寫入數(shù)據(jù)。如此,實(shí)際上獲得一新的物理塊(例如,備用物理塊)作為與邏輯塊802相對(duì)應(yīng)的物理塊。換句話說,分配一新的物理塊,以使與物理塊806(即當(dāng)前物理塊)相關(guān)聯(lián)的基本上所有的當(dāng)前數(shù)據(jù)以及新的用戶數(shù)據(jù)可被合并到所述新物理塊中。
圖8d是一圖示,其顯示根據(jù)本發(fā)明的一個(gè)實(shí)施例在合并操作后一邏輯塊(即圖8a-c的邏輯塊802)與一新的物理塊之間的關(guān)聯(lián)關(guān)系。當(dāng)圖8c中物理塊806的內(nèi)容以及與邏輯塊802相關(guān)聯(lián)的新用戶數(shù)據(jù)被合并為一新的物理塊880時(shí),應(yīng)了解,空白頁面和無效頁面(例如已被有效蓋寫的頁面)不能寫入新的物理塊880中。此外,新數(shù)據(jù)——例如因圖8c的物理塊806內(nèi)缺乏可用空間而提示分配新物理塊880的數(shù)據(jù)——有效地超越了與所述新數(shù)據(jù)對(duì)應(yīng)的現(xiàn)有數(shù)據(jù),即新數(shù)據(jù)超越了與所述新數(shù)據(jù)位于同一邏輯頁面上的現(xiàn)有數(shù)據(jù)。
一旦合并已經(jīng)發(fā)生且新數(shù)據(jù)已被寫入新物理塊880后,邏輯塊802和新物理塊880之間的關(guān)聯(lián)關(guān)系可為使得與邏輯塊802的組810b相關(guān)聯(lián)的數(shù)據(jù)被存儲(chǔ)于一物理組884a中;與邏輯塊802的組810c相關(guān)的數(shù)據(jù)被存儲(chǔ)于一物理組884b中;與邏輯塊802的組810d相關(guān)的數(shù)據(jù)被存儲(chǔ)于一物理組884c中。物理組884d保持在一基本上被擦除的狀態(tài),直到需要所述物理組884d。所屬領(lǐng)域的技術(shù)人員將了解,一旦數(shù)據(jù)被合并或?qū)懭胄挛锢韷K880中,則圖8a中的原始物理塊806可被擦除并用作一備用物理塊。
為使存取與頁面相關(guān)聯(lián)的組識(shí)別符的讀操作更有效地發(fā)生,可以在例如圖4c的RAM 162中建立一當(dāng)前工作塊信息表,以記錄何時(shí)讀或?qū)懏?dāng)前塊內(nèi)的頁面。圖9是一圖示,其顯示一根據(jù)本發(fā)明的一實(shí)施例的當(dāng)前工作塊信息表。信息表950被布置用于存儲(chǔ)組號(hào)954。當(dāng)讀取一頁面時(shí),其組號(hào)954即被存儲(chǔ)入信息表950中。存儲(chǔ)組號(hào)954通常用于減少相同塊——即包括組號(hào)954被存儲(chǔ)在信息表950中的頁面的塊——的下一請(qǐng)求讀取時(shí)的讀取次數(shù)。通常,與一當(dāng)前工作塊相關(guān)的信息基本上被保持于信息表950中。為了基本上將一整體系統(tǒng)內(nèi)對(duì)RAM的需求降至最小,可以僅針對(duì)當(dāng)前被存取的塊建立信息表950。當(dāng)存取一不同的塊時(shí),現(xiàn)有信息表中的信息有效地被所述新塊的信息所取代。
參照?qǐng)D10a和10b,下文將根據(jù)本發(fā)明的一個(gè)實(shí)施例描述與一方法相關(guān)的步驟,所述方法是用于將與一構(gòu)成一邏輯組一部分的邏輯頁面相關(guān)聯(lián)的內(nèi)容寫入一構(gòu)成一物理組一部分的物理頁面。將內(nèi)容寫入一物理頁面的過程1000開始于步驟1004,其中識(shí)別將要寫入一物理頁面的內(nèi)容。也就是說,獲取或識(shí)別將要寫入的與一邏輯頁面(例如邏輯頁面“A”)相關(guān)聯(lián)的新數(shù)據(jù)。
在識(shí)別了將要寫入的內(nèi)容之后,在步驟1008確定是否存在一與邏輯頁面“A”相對(duì)應(yīng)的物理頁面。換句話說,確定邏輯頁面“A”或更一般而言包含邏輯頁面“A”的邏輯組是否與上次指配或關(guān)聯(lián)的物理組相同。如果確定它是上次被指配的邏輯頁面“A”的物理組,則在步驟1012確定在已指配的物理組中是否有一合適的頁面可供用于寫入與邏輯頁面“A”相關(guān)的內(nèi)容。確定是否存在一合適的頁面的步驟可包括確定假如要將與邏輯頁面“A”相關(guān)聯(lián)的內(nèi)容寫入所述指配的物理組是否會(huì)發(fā)生一失序?qū)戝e(cuò)誤。所述確定步驟也可包括確定在所述已指配的物理組內(nèi)是否存在一未寫頁面可用于寫入與邏輯頁面“A”相關(guān)聯(lián)的內(nèi)容。
如果在步驟1012確定在所述已指配的物理組內(nèi)有一合適的頁面,則在步驟1016,將與邏輯頁面“A”相關(guān)聯(lián)的數(shù)據(jù)或內(nèi)容寫入所述合適頁面。應(yīng)當(dāng)了解,基本上可以采用任何合適的方法來將數(shù)據(jù)寫入一物理頁面內(nèi)。在數(shù)據(jù)被寫入后,向一物理組的一物理頁面寫數(shù)據(jù)的過程即告完成。
或者,如果在步驟1012確定在所述已指配的物理組內(nèi)沒有合適的頁面,則指示可能是所指配的物理組內(nèi)的頁面已滿,或者不存在不會(huì)導(dǎo)致失序?qū)戝e(cuò)誤的合適頁面。如此,所述流程從步驟1012轉(zhuǎn)至步驟1020,在步驟1020中確定在所述物理塊內(nèi)是否有一可用物理組。換句話說,在步驟1020中確定在所述物理塊內(nèi)是否有組尚未與一特定邏輯組相關(guān)聯(lián)。
當(dāng)確定存在可用的物理組時(shí),在步驟1024,將所述可用的物理組有效地指配給包含邏輯頁面“A”的邏輯組。一旦將所述可用的物理組指配給所述邏輯組,與邏輯頁面“A”相關(guān)聯(lián)的數(shù)據(jù)或內(nèi)容在步驟1028中被寫入所述新指配的物理組內(nèi)的合適頁面中。一旦寫入所述數(shù)據(jù),向一物理組的一物理頁面寫數(shù)據(jù)的過程即告完成。
返回至步驟1020,并確認(rèn)在指配給邏輯頁面“A”的所述物理塊內(nèi)是否存在一可用物理組,如果確定不存在可用的物理組,則意味著與邏輯頁面“A”相關(guān)聯(lián)的數(shù)據(jù)或內(nèi)容不能被寫入所述物理塊,即當(dāng)前物理塊。相應(yīng)地,流程前進(jìn)到步驟1032,確定是否有一備用物理塊可用。如果確定沒有備用的物理塊可用,則在步驟1036發(fā)出一異常指示,指示與邏輯頁面“A”相關(guān)聯(lián)的內(nèi)容不能被寫入。一旦發(fā)出所述異常指示,向一物理組的物理頁面寫入數(shù)據(jù)的過程即告停止,且通常會(huì)報(bào)告一失敗指示。控制器軟件和固件的設(shè)計(jì)正常情況下會(huì)盡量避免此情況的發(fā)生,除非閃存存儲(chǔ)器被平均地應(yīng)用至其壽命結(jié)束。
另一方面,如果在步驟1032中確定有一可用的備用物理塊,則在步驟1040中將所述備用物理塊指定用于包含邏輯頁面“A”的邏輯塊。然后,在步驟1044,來自先前指配到包含邏輯頁面“A”的所述邏輯塊的“舊”物理塊的有效數(shù)據(jù)被合并到所述“新的”或備用物理塊內(nèi)的組中。此外,在步驟1004中獲得的所述新數(shù)據(jù)或與邏輯頁面“A”相關(guān)聯(lián)的內(nèi)容被寫入與所述備用物理塊相關(guān)聯(lián)的組中的頁面內(nèi)。在所述舊物理塊的有效數(shù)據(jù)被合并入所述備用物理塊后,在步驟1048中,擦除所述舊物理塊。例如,如果所述舊物理塊尚未基本上達(dá)到其壽命終點(diǎn),對(duì)舊物理塊的擦除可將該舊物理塊隨后用作一備用物理塊。一旦所述舊物理塊被擦除,則向一物理組的物理頁面寫入數(shù)據(jù)的過程即告停止。
一般而言,以軟件形式提供與塊內(nèi)頁面分組相關(guān)的功能,例如,作為程序代碼裝置或作為一主機(jī)系統(tǒng)的固件。圖11顯示一與提供給一主機(jī)系統(tǒng)用于啟動(dòng)損耗平衡(wear leveling)的軟件或固件相關(guān)聯(lián)的合適系統(tǒng)架構(gòu)的實(shí)施例。一系統(tǒng)架構(gòu)900一般包括多種模塊,其可包括(但不限于)一應(yīng)用接口模塊904、一系統(tǒng)管理器模塊908、一數(shù)據(jù)管理器模塊912、一數(shù)據(jù)完整性管理器916以及一裝置管理器和接口模塊920。一般而言,可使用可被一處理器(例如圖4a的處理器108)所存取的軟件代碼裝置或固件來構(gòu)建系統(tǒng)架構(gòu)900。
一般而言,應(yīng)用接口模塊904可被安排用于與主機(jī)、操作系統(tǒng)或用戶直接通信。應(yīng)用接口模塊904也與系統(tǒng)管理器模塊908和數(shù)據(jù)管理器模塊912通信。當(dāng)用戶想要讀、寫或格式化閃存存儲(chǔ)器時(shí),用戶向操作系統(tǒng)發(fā)送一請(qǐng)求,所述請(qǐng)求被傳送至所述應(yīng)用接口模塊904。應(yīng)用接口模塊904視所述請(qǐng)求而定將所述請(qǐng)求送往系統(tǒng)管理器模塊908或數(shù)據(jù)管理器模塊912。
系統(tǒng)管理器模塊908包括一系統(tǒng)初始化子模塊924、一擦除計(jì)數(shù)塊管理子模塊926以及一電源管理塊子模塊930。系統(tǒng)初始化子模塊924一般被布置用于使一初始化請(qǐng)求能得到處理,并通常與擦除計(jì)數(shù)塊管理子模塊926通信。擦除計(jì)數(shù)塊管理子模塊926的功能包括使塊的擦除計(jì)數(shù)被存儲(chǔ),以及使用個(gè)別的擦除計(jì)數(shù)來計(jì)算平均擦除計(jì)數(shù)并予以更新。擦除計(jì)數(shù)的使用在2002年10月28日提交的共同待決美國專利申請(qǐng)案第10/281,739號(hào)(代理案號(hào)SANDP023)中作了描述,此專利申請(qǐng)案的全文以引用方式并入本文中。
除與應(yīng)用接口模塊904通信外,系統(tǒng)管理器模塊908也與數(shù)據(jù)管理器模塊812以及設(shè)備管理器和接口模塊920通信。與系統(tǒng)管理器模塊908和應(yīng)用接口模塊904通信的數(shù)據(jù)管理器模塊912可以包括提供扇區(qū)映射的功能,其有效地將邏輯扇區(qū)轉(zhuǎn)換成物理扇區(qū)。也就是說,數(shù)據(jù)管理器模塊912被布置用于將邏輯塊映射至物理塊。數(shù)據(jù)管理器模塊912也可包括與操作系統(tǒng)和文件系統(tǒng)接口層相關(guān)聯(lián)的功能,并可使塊內(nèi)的組得到管理。
與系統(tǒng)管理器模塊908、數(shù)據(jù)管理器912和數(shù)據(jù)完整性管理器916通信的設(shè)備管理器和接口模塊920通常提供一閃存存儲(chǔ)器接口,并包括與硬件抽象(例如一I/O接口)相關(guān)的功能。數(shù)據(jù)完整性管理器模塊916提供糾錯(cuò)碼(ECC)處理以及其它功能。
盡管本文已經(jīng)闡述了本發(fā)明的幾個(gè)實(shí)施例,但是應(yīng)了解,在不脫離本發(fā)明的精神或范圍的條件下,可采用許多其它具體形式來實(shí)施本發(fā)明。舉例而言,盡管文中將邏輯塊內(nèi)的邏輯組和物理塊內(nèi)相應(yīng)的物理組描述為具有基本上相同的大小,但是邏輯組和物理組一般可具有不同的大小。換句話說,一邏輯組內(nèi)所含的頁面數(shù)量和與所述邏輯組相應(yīng)的物理組內(nèi)所含的頁面數(shù)量可不必相同。
與本發(fā)明的各種方法相關(guān)的步驟可有很多變化。一般而言,可以增加、刪除、重新排序和改變步驟。因此,應(yīng)將本發(fā)明的實(shí)例視為舉例說明性而非限制性的作用,并且本發(fā)明并非僅限于本文所給出的詳細(xì)闡述,而可在隨附權(quán)利要求的范圍內(nèi)進(jìn)行修改。
權(quán)利要求
1.一種用于將數(shù)據(jù)寫入與一非易失性存儲(chǔ)器相關(guān)聯(lián)的一第一塊的方法,所述第一塊包括復(fù)數(shù)個(gè)頁面,所述復(fù)數(shù)個(gè)頁面被劃分為復(fù)數(shù)個(gè)組,其中所述復(fù)數(shù)個(gè)組中的每個(gè)組包括兩個(gè)或更多頁面,所述方法包括確定所述復(fù)數(shù)個(gè)組中的一第一組何時(shí)可用于接收所述數(shù)據(jù);在確定所述第一組可用于接收所述數(shù)據(jù)時(shí),將所述數(shù)據(jù)寫入所述第一組中所包含的一第一頁面;在確定所述第一組不可用于接收所述數(shù)據(jù)時(shí),確定所述復(fù)數(shù)個(gè)組中的一第二組何時(shí)可用于接收所述數(shù)據(jù);及在確定所述第二組可用于接收所述數(shù)據(jù)時(shí),將所述數(shù)據(jù)寫入所述第二組中所包含的一第二頁面。
2.根據(jù)權(quán)利要求1所述的方法,其進(jìn)一步包括在確定所述第二組不可用于接收所述數(shù)據(jù)時(shí),確定一第二塊何時(shí)可用于接收所述數(shù)據(jù)。
3.根據(jù)權(quán)利要求1所述的方法,其中確定所述第一組何時(shí)可用于接收所述數(shù)據(jù)包括確定何時(shí)所述第一頁面適合用于接收所述數(shù)據(jù)。
4.根據(jù)權(quán)利要求1所述的方法,其中所述數(shù)據(jù)與一邏輯頁面相關(guān)聯(lián),且所述第一塊是一第一物理塊。
5.根據(jù)權(quán)利要求1所述的方法,其中所述第一組是由一個(gè)組識(shí)別符識(shí)別,所述組識(shí)別符被存儲(chǔ)在與所述第一組相關(guān)聯(lián)的一冗余區(qū)內(nèi),且確定何時(shí)所述第一組可用于接收所述數(shù)據(jù)包括獲取所述組識(shí)別符。
6.一種存儲(chǔ)器系統(tǒng),其包括一非易失性存儲(chǔ)器,所述非易失性存儲(chǔ)器包括一第一塊,所述第一塊包括復(fù)數(shù)個(gè)頁面,所述復(fù)數(shù)個(gè)頁面被劃分為復(fù)數(shù)個(gè)組,其中所述復(fù)數(shù)個(gè)組中的每個(gè)組包括兩個(gè)或更多頁面;用于確定所述復(fù)數(shù)個(gè)組的一第一組何時(shí)可用于接收一組數(shù)據(jù)的復(fù)數(shù)個(gè)代碼裝置;用于在確定所述第一組可用于接收該組數(shù)據(jù)時(shí),將該組數(shù)據(jù)寫入所述第一組中所包含的一第一頁面的復(fù)數(shù)個(gè)代碼裝置;用于在確定所述第一組不可用于接收該組數(shù)據(jù)時(shí),確定所述復(fù)數(shù)個(gè)組中的一第二組何時(shí)可用于接收該組數(shù)據(jù)的復(fù)數(shù)個(gè)代碼裝置;及用于在確定所述第二組可用于接收該組數(shù)據(jù)時(shí),將該組數(shù)據(jù)寫入所述第二組中所包含的一第二頁面的復(fù)數(shù)個(gè)代碼裝置。
7.根據(jù)權(quán)利要求6所述的存儲(chǔ)器系統(tǒng),其進(jìn)一步包括用于在確定所述第二組不可用于接收該組數(shù)據(jù)時(shí),確定一第二塊何時(shí)可用于接收該組數(shù)據(jù)的復(fù)數(shù)個(gè)代碼裝置,所述第二塊包含在所述非易失性存儲(chǔ)器中。
8.根據(jù)權(quán)利要求7所述的存儲(chǔ)器系統(tǒng),其進(jìn)一步包括用于在確定所述第二塊可用于接收該組數(shù)據(jù)時(shí),將所述復(fù)數(shù)個(gè)頁面中某些頁面的內(nèi)容拷入所述第二塊的復(fù)數(shù)個(gè)代碼裝置;及用于在確定所述第二塊可用于接收該組數(shù)據(jù)時(shí),將該組數(shù)據(jù)寫入所述第二塊的復(fù)數(shù)個(gè)代碼裝置。
9.根據(jù)權(quán)利要求6所述的存儲(chǔ)器系統(tǒng),其進(jìn)一步包括用于確定所述第一組的復(fù)數(shù)個(gè)代碼裝置;及用于確定所述第二組的復(fù)數(shù)個(gè)代碼裝置。
10.根據(jù)權(quán)利要求6所述的存儲(chǔ)器系統(tǒng),其中用于確定所述第一組何時(shí)可用于接收該組數(shù)據(jù)的所述代碼裝置包括用于確定所述第一頁面何時(shí)適合用于接收該組數(shù)據(jù)的復(fù)數(shù)個(gè)代碼裝置。
11.根據(jù)權(quán)利要求6所述的存儲(chǔ)器系統(tǒng),其中所述數(shù)據(jù)與一邏輯頁面相關(guān)聯(lián),且所述第一塊是一第一物理塊。
12.根據(jù)權(quán)利要求1所述的存儲(chǔ)器系統(tǒng),其中所述第一組由一個(gè)組識(shí)別符識(shí)別,所述組識(shí)別符被存儲(chǔ)于一與所述第一組相關(guān)聯(lián)的冗余區(qū)內(nèi),且用于確定所述第一組何時(shí)可用于接收該組數(shù)據(jù)的代碼裝置包括用于獲取所述組識(shí)別符的復(fù)數(shù)個(gè)代碼裝置。
13.根據(jù)權(quán)利要求6所述的存儲(chǔ)器系統(tǒng),其進(jìn)一步包括一用于存儲(chǔ)所述代碼裝置的存儲(chǔ)器;及一用于處理所述代碼裝置的處理器。
14.根據(jù)權(quán)利要求6所述的存儲(chǔ)器系統(tǒng),其中所述非易失性存儲(chǔ)器是一閃存存儲(chǔ)器。
15.根據(jù)權(quán)利要求14所述的存儲(chǔ)器系統(tǒng),其中所述閃存存儲(chǔ)器是一NAND閃存存儲(chǔ)器。
16.根據(jù)權(quán)利要求6所述的存儲(chǔ)器系統(tǒng),其中所述代碼裝置是軟件代碼裝置。
17.根據(jù)權(quán)利要求6所述的存儲(chǔ)器系統(tǒng),其中所述代碼裝置是固件代碼裝置。
18.一種存儲(chǔ)塊,所述存儲(chǔ)塊包含于一非易失性存儲(chǔ)器內(nèi),所述存儲(chǔ)塊包括復(fù)數(shù)個(gè)頁面,所述復(fù)數(shù)個(gè)頁面包括一第一組頁面和一第二組頁面;一第一組,所述第一組包括所述第一組頁面,所述第一組具有用于識(shí)別所述第一組的一第一個(gè)組識(shí)別符,所述第一個(gè)組識(shí)別符存儲(chǔ)于所述第一組內(nèi);及一第二組,所述第二組包括所述第二組頁面,所述第二組具有用于識(shí)別所述第二組的一第二個(gè)組識(shí)別符,所述第二個(gè)組識(shí)別符存儲(chǔ)于所述第二組內(nèi)。
19.根據(jù)權(quán)利要求18所述的存儲(chǔ)塊,其中包含于所述第一組頁面內(nèi)的該等面的一次序相對(duì)于所述第一組的一開始部位是基本上固定的,且包含于所述第二組頁面內(nèi)的該等頁面的一次序相對(duì)于所述第二組的一開始部位是基本上固定的。
20.根據(jù)權(quán)利要求18所述的存儲(chǔ)塊,其中所述存儲(chǔ)塊是一物理塊,且所述非易失性存儲(chǔ)器是一閃存存儲(chǔ)器。
21.一種將數(shù)據(jù)寫入與一非易失性存儲(chǔ)器相關(guān)聯(lián)的一第一物理塊的方法,所述物理塊包括復(fù)數(shù)個(gè)物理頁面,所述復(fù)數(shù)個(gè)物理頁面被劃分為復(fù)數(shù)個(gè)物理組,其中所述復(fù)數(shù)個(gè)物理組中的每個(gè)物理組包括兩個(gè)或更多物理頁面,所述方法包括識(shí)別與一第一邏輯頁面相關(guān)聯(lián)的一第一組數(shù)據(jù),所述第一邏輯頁面是包含于一邏輯塊的一第一邏輯組中的復(fù)數(shù)個(gè)邏輯頁面中的一個(gè);確定何時(shí)所述復(fù)數(shù)個(gè)物理組中的一第一物理組與所述第一邏輯組相關(guān)聯(lián);在確定所述第一物理組與所述第一邏輯組相關(guān)聯(lián)時(shí),確定包含于所述第一物理組中的一第一物理頁面何時(shí)可用于容納所述第一組數(shù)據(jù);及在確定所述第一物理頁面可用于容納所述第一組數(shù)據(jù)時(shí),將所述第一組數(shù)據(jù)寫入所述第一物理頁面。
22.根據(jù)權(quán)利要求21所述的方法,其進(jìn)一步包括在確定所述第一物理組與所述第一邏輯組不相關(guān)聯(lián)時(shí),確定所述第一物理組何時(shí)可用;在確定所述第一物理組可用時(shí),使所述第一物理組與所述第一邏輯組相關(guān)聯(lián);及將所述第一組數(shù)據(jù)寫入與所述第一物理組相關(guān)聯(lián)的一第二物理頁面。
23.根據(jù)權(quán)利要求22所述的方法,其進(jìn)一步包括識(shí)別與所述第一邏輯組相關(guān)聯(lián)的一第二組數(shù)據(jù);及將所述第二組數(shù)據(jù)寫入與所述第一物理組相關(guān)聯(lián)的一第三物理頁面。
24.根據(jù)權(quán)利要求23所述的方法,其進(jìn)一步包括確定所述第三物理頁面何時(shí)可用于容納所述第二組數(shù)據(jù),其中在確定所述第三物理頁面可用于存儲(chǔ)所述第二組數(shù)據(jù)時(shí),將所述第二組數(shù)據(jù)寫入所述第三物理頁面。
25.根據(jù)權(quán)利要求21所述的方法,其進(jìn)一步包括在確定所述第一物理頁面不可用于存儲(chǔ)所述第一組數(shù)據(jù)時(shí),確定包含于所述復(fù)數(shù)個(gè)物理組中的一第二物理組何時(shí)可用;及將所述第一組數(shù)據(jù)寫入與所述第二物理組相關(guān)聯(lián)的一第二物理頁面。
26.根據(jù)權(quán)利要求25所述的方法,其進(jìn)一步包括在確定所述第二物理組可用時(shí),使所述第二物理組與所述第一邏輯組相關(guān)聯(lián)。
27.根據(jù)權(quán)利要求25所述的方法,其進(jìn)一步包括在確定所述第二物理組不可用時(shí),確定與所述非易失性存儲(chǔ)器相關(guān)聯(lián)的一第二物理塊何時(shí)可用于容納所述第一組數(shù)據(jù)。
28.根據(jù)權(quán)利要求27所述的方法,其中在確定所述第二物理塊可用時(shí),所述方法進(jìn)一步包括將包含于所述第一物理塊中的所述復(fù)數(shù)個(gè)物理頁面的某些內(nèi)容拷入所述第二物理塊中所包含的物理頁面;及將所述第一組數(shù)據(jù)寫入與所述第二物理塊相關(guān)聯(lián)的一第三物理頁面。
29.根據(jù)權(quán)利要求28所述的方法,其進(jìn)一步包括擦除所述第一物理塊。
30.根據(jù)權(quán)利要求28所述的方法,其中與所述第二物理塊相關(guān)聯(lián)的所述第三物理頁面是所述第二物理塊中所包含的一第三物理組的一部分,所述第三物理組包括兩個(gè)或更多物理頁面。
31.根據(jù)權(quán)利要求30所述的方法,其進(jìn)一步包括使所述第三物理組與所述第一邏輯組相關(guān)聯(lián)。
32.根據(jù)權(quán)利要求21所述的方法,其中確定所述第一物理組何時(shí)與所述第一邏輯組相關(guān)聯(lián)包括自所述第一物理組獲取一個(gè)組識(shí)別符,其中所述組識(shí)別符被安排用于識(shí)別所述第一物理組;及確定所述組識(shí)別符是否與所述第一邏輯組相關(guān)聯(lián)。
33.一種存儲(chǔ)器系統(tǒng),其包括一非易失性存儲(chǔ)器,所述非易失性存儲(chǔ)器包括一具有復(fù)數(shù)個(gè)物理頁面的第一物理塊,所述復(fù)數(shù)個(gè)物理頁面被劃分為復(fù)數(shù)個(gè)物理組,其中所述復(fù)數(shù)個(gè)物理組中的每個(gè)物理組包括兩個(gè)或更多頁面;及一模塊,所述模塊被安排用于識(shí)別與一第一邏輯頁面相關(guān)聯(lián)的一第一組數(shù)據(jù),所述第一邏輯頁面是一邏輯塊的一第一邏輯組中所包含的復(fù)數(shù)個(gè)邏輯頁面中的一個(gè),所述模塊進(jìn)一步被安排用于確定所述復(fù)數(shù)個(gè)物理組中的一第一物理組何時(shí)與所述第一邏輯組相關(guān)聯(lián);在確定所述第一物理組與所述第一邏輯組相關(guān)聯(lián)時(shí),確定所述第一物理組中所包含的一第一物理頁面何時(shí)可用于容納所述第一組數(shù)據(jù);及在確定所述第一物理頁面可用于容納所述第一組數(shù)據(jù)時(shí),將所述第一組數(shù)據(jù)寫入所述第一物理頁面。
34.根據(jù)權(quán)利要求33所述的存儲(chǔ)器系統(tǒng),其中所述模塊又進(jìn)一步被安排用于在確定所述第一物理組與所述第一邏輯組不相關(guān)聯(lián)時(shí),確定所述第一物理組何時(shí)可用;在確定所述第一物理組可用時(shí),使所述第一物理組與所述第一邏輯組相關(guān)聯(lián);及將所述第一組數(shù)據(jù)寫入與所述第一物理組相關(guān)聯(lián)的一第二物理頁面。
35.根據(jù)權(quán)利要求34所述的存儲(chǔ)器系統(tǒng),其中所述模塊又進(jìn)一步被安排用于識(shí)別與所述第一邏輯組相關(guān)聯(lián)的一第二組數(shù)據(jù);及將所述第二組數(shù)據(jù)寫入與所述第一物理組相關(guān)聯(lián)的一第三物理頁面。
36.根據(jù)權(quán)利要求35所述的存儲(chǔ)器系統(tǒng),其中所述模塊又進(jìn)一步被安排用于確定所述第三物理頁面何時(shí)可用于容納所述第二組數(shù)據(jù),其中在確定所述第三物理頁面可用于容納所述第二組數(shù)據(jù)時(shí),將所述第二組數(shù)據(jù)寫入所述第三物理頁面。
37.根據(jù)權(quán)利要求33所述的存儲(chǔ)器系統(tǒng),其中所述模塊又進(jìn)一步被安排用于在確定所述第一物理頁面不可用于容納所述第一組數(shù)據(jù)時(shí),確定包含于所述復(fù)數(shù)個(gè)物理組的一第二物理組何時(shí)可用;在確定所述第二物理組可用時(shí),使所述第二物理組與所述第一邏輯組相關(guān)聯(lián);及將所述第一組數(shù)據(jù)寫入與所述第二物理組相關(guān)聯(lián)的一第二物理頁面。
38.根據(jù)權(quán)利要求37所述的存儲(chǔ)器系統(tǒng),其進(jìn)一步包括一第二物理塊,其中所述模塊又進(jìn)一步被安排用于在確定所述第二物理組不可用時(shí),確定與所述非易失性存儲(chǔ)器相關(guān)聯(lián)的所述第二物理塊何時(shí)可用于容納所述第一組數(shù)據(jù);在確定所述第二物理塊可用時(shí),將包含于所述第一物理塊內(nèi)的所述復(fù)數(shù)個(gè)物理頁面的某些內(nèi)容拷入包含于所述第二物理塊內(nèi)的物理頁面;及在確定所述第二物理塊可用時(shí),將所述第一組數(shù)據(jù)寫入與所述第二物理塊相關(guān)聯(lián)的一第三物理頁面。
39.根據(jù)權(quán)利要求38所述的存儲(chǔ)器系統(tǒng),其中所述模塊又進(jìn)一步被安排用于擦除所述第一物理塊。
40.根據(jù)權(quán)利要求33所述的存儲(chǔ)器系統(tǒng),其中所述模塊被安排用于確定所述第一物理組何時(shí)與所述第一邏輯組相關(guān)聯(lián)包括通過自所述第一物理組獲取一個(gè)組識(shí)別符,其中所述組識(shí)別符被安排用于識(shí)別所述第一物理組,及確定所述組識(shí)別符是否與所述第一邏輯組相關(guān)聯(lián)。
41.根據(jù)權(quán)利要求33所述的存儲(chǔ)器系統(tǒng),其中所述非易失性存儲(chǔ)器是一NAND閃存存儲(chǔ)器。
42.一種用于將數(shù)據(jù)寫入與一非易失性存儲(chǔ)器相關(guān)聯(lián)的一第一物理塊的系統(tǒng),所述第一物理塊包括復(fù)數(shù)個(gè)物理頁面,所述復(fù)數(shù)個(gè)物理頁面被劃分為復(fù)數(shù)個(gè)物理組,其中所述復(fù)數(shù)個(gè)物理組中的每個(gè)物理組包括兩個(gè)或更多物理頁面,所述系統(tǒng)包括識(shí)別構(gòu)件,其用于識(shí)別與一第一邏輯頁面相關(guān)聯(lián)的一第一組數(shù)據(jù),所述第一邏輯頁面是一邏輯塊中的一第一邏輯組中所包含的復(fù)數(shù)個(gè)邏輯頁面中的一個(gè);確定構(gòu)件,其用于確定所述復(fù)數(shù)個(gè)物理組中的一第一物理組何時(shí)與所述第一邏輯組相關(guān)聯(lián);確定構(gòu)件,其用于在確定所述第一物理組與所述第一邏輯組相關(guān)聯(lián)時(shí),確定所述第一物理組中所包含的一第一物理頁面何時(shí)可用于容納所述第一組數(shù)據(jù);及寫入構(gòu)件,其用于在確定所述第一物理頁面可用于存儲(chǔ)所述第一組數(shù)據(jù)時(shí),將所述第一組數(shù)據(jù)寫入所述第一物理頁面。
43.根據(jù)權(quán)利要求42所述的系統(tǒng),其進(jìn)一步包括確定構(gòu)件,其用于在確定所述第一物理組與所述第一邏輯組不相關(guān)聯(lián)時(shí),確定所述第一物理組何時(shí)可用;關(guān)聯(lián)構(gòu)件,其用于在確定所述第一物理組可用時(shí),使所述第一物理組與所述第一邏輯組相關(guān)聯(lián);及寫入構(gòu)件,其用于將所述第一組數(shù)據(jù)寫入與所述第一物理組相關(guān)聯(lián)的一第二物理頁面。
44.根據(jù)權(quán)利要求43所述的系統(tǒng),其進(jìn)一步包括識(shí)別構(gòu)件,其用于識(shí)別與所述第一邏輯組相關(guān)聯(lián)的一第二組數(shù)據(jù);寫入構(gòu)件,其用于將所述第二組數(shù)據(jù)寫入與所述第一物理組相關(guān)聯(lián)的一第三物理頁面;確定構(gòu)件,其用于確定所述第三物理頁面何時(shí)可用于容納所述第二組數(shù)據(jù),其中在確定所述第三物理頁面可用于容納所述第二組數(shù)據(jù)時(shí),將所述第二組數(shù)據(jù)寫入所述第三物理頁面。
45.根據(jù)權(quán)利要求42所述的系統(tǒng),其進(jìn)一步包括確定構(gòu)件,其用于在確定所述第一物理頁面不可用于容納所述第一組數(shù)據(jù)時(shí),確定所述復(fù)數(shù)個(gè)物理組中所包含的一第二物理組何時(shí)可用;及寫入構(gòu)件,其用于將所述第一組數(shù)據(jù)寫入與所述第二物理組相關(guān)聯(lián)的一第二物理頁面。
46.根據(jù)權(quán)利要求45所述的系統(tǒng),其進(jìn)一步包括關(guān)聯(lián)構(gòu)件,其用于在確定所述第二物理組可用時(shí),使所述第二物理組與所述第一邏輯組相關(guān)聯(lián)。
47.根據(jù)權(quán)利要求45所述的系統(tǒng),其進(jìn)一步包括確定構(gòu)件,其用于在確定所述第二物理組不可用時(shí),確定與所述非易失性存儲(chǔ)器相關(guān)聯(lián)的一第二物理塊何時(shí)可用于容納所述第一組數(shù)據(jù)。
48.根據(jù)權(quán)利要求47所述的系統(tǒng),其進(jìn)一步包括拷貝構(gòu)件,其用于在確定所述第二物理塊可用時(shí),將所述第一物理塊內(nèi)所包含的所述復(fù)數(shù)個(gè)物理頁面的某些內(nèi)容拷入所述第二物理塊內(nèi)所包含的物理頁面;寫入構(gòu)件,其用于在確定所述第二物理塊可用時(shí),將所述第一組數(shù)據(jù)寫入與所述第二物理塊相關(guān)聯(lián)的一第三物理頁面。
49.根據(jù)權(quán)利要求48所述的系統(tǒng),其進(jìn)一步包括用于擦除所述第一物理塊的構(gòu)件。
50.根據(jù)權(quán)利要求48所述的系統(tǒng),其中與所述第二物理塊相關(guān)聯(lián)的所述第三物理頁面是所述第二物理塊中所包含的一第三物理組的一部分,且所述第三物理組包括兩個(gè)或更多物理頁面。
51.根據(jù)權(quán)利要求50所述的系統(tǒng),其進(jìn)一步包括關(guān)聯(lián)構(gòu)件,其用于使所述第三物理組與所述第一邏輯組相關(guān)聯(lián)。
52.根據(jù)權(quán)利要求42所述的系統(tǒng),其中用于確定所述第一物理組何時(shí)與所述第一邏輯組相關(guān)聯(lián)的構(gòu)件包括用于從所述第一物理組獲取一個(gè)組識(shí)別符的構(gòu)件,其中所述組識(shí)別符被安排用于識(shí)別所述第一物理組;及用于確定所述組識(shí)別符是否與所述第一邏輯組相關(guān)聯(lián)的構(gòu)件。
全文摘要
本發(fā)明揭示用于有效地使一塊內(nèi)的頁面能夠被存取的方法及裝置。根據(jù)本發(fā)明的一個(gè)方面,一種用于將數(shù)據(jù)寫入一非易失性存儲(chǔ)器中的包括復(fù)數(shù)個(gè)劃分為復(fù)數(shù)個(gè)組的頁面且每個(gè)組包括兩個(gè)或更多頁面的一第一塊內(nèi)的方法包括確定一第一組何時(shí)可用于接收所述數(shù)據(jù)。當(dāng)確定所述第一組可用于接收所述數(shù)據(jù)時(shí),將所述數(shù)據(jù)寫入所述第一組中所包含的一第一頁面。本方法也包括在確定所述第一組不可用于接收所述數(shù)據(jù)的情況下確定一第二組何時(shí)可用于接收所述數(shù)據(jù),并在確定所述第二組可用于接收所述數(shù)據(jù)時(shí),將所述數(shù)據(jù)寫入所述第二組中所包含的一第二頁面。
文檔編號(hào)G06F12/02GK1795437SQ03824770
公開日2006年6月28日 申請(qǐng)日期2003年9月10日 優(yōu)先權(quán)日2002年10月28日
發(fā)明者羅伯特·C·張, 巴赫曼·卡瓦邁, 法施德·薩伯特-沙吉 申請(qǐng)人:桑迪士克股份有限公司