專(zhuān)利名稱(chēng):改進(jìn)的閃速文件系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種處理閃速設(shè)備上數(shù)據(jù)存儲(chǔ)的系統(tǒng),具體來(lái)說(shuō),涉及一種管理分頁(yè)方式閃速設(shè)備上信息存儲(chǔ)和檢索的系統(tǒng),使其性能猶如閃速磁盤(pán)。
閃速設(shè)備包括由閃速類(lèi)型的浮柵晶體管構(gòu)成的電可擦除和可編程只讀存儲(chǔ)器(EEPROM),這是一種非易失性存儲(chǔ)器,在功能和性能上類(lèi)似EPROM存儲(chǔ)器,只不過(guò)增加了一種功能,允許線(xiàn)路內(nèi)可編程的操作擦除存儲(chǔ)器的頁(yè)。與傳統(tǒng)的磁盤(pán)比較,閃速設(shè)備的優(yōu)點(diǎn)是價(jià)格相當(dāng)便宜,而且只需要相當(dāng)小的功率。但是在閃速設(shè)備中,如果不對(duì)存儲(chǔ)器的某個(gè)已經(jīng)被寫(xiě)入的區(qū)域預(yù)先進(jìn)行頁(yè)面擦除,就不能對(duì)該區(qū)域重新寫(xiě)入。閃速設(shè)備的這種局限性使之與典型的現(xiàn)有操作系統(tǒng)程序不兼容,因?yàn)閿?shù)據(jù)不能再被寫(xiě)入到閃速設(shè)備中已經(jīng)寫(xiě)入數(shù)據(jù)的那些存儲(chǔ)器區(qū)域上,除非預(yù)先對(duì)該區(qū)域進(jìn)行擦除。
當(dāng)前的技術(shù)已經(jīng)提供了這樣的軟件產(chǎn)品,允許現(xiàn)有操作系統(tǒng)程序在不作修改的情況下對(duì)閃速設(shè)備進(jìn)行管理。然而,這些當(dāng)前技術(shù)的程序都具有缺陷。例如,一種程序?qū)㈤W速存儲(chǔ)器作為“寫(xiě)一次讀多次”的設(shè)備來(lái)操作。這種現(xiàn)有技術(shù)的軟件產(chǎn)品不能反復(fù)使用已經(jīng)被寫(xiě)入的存儲(chǔ)器位置。當(dāng)所有的位置都最終被寫(xiě)入時(shí),該存儲(chǔ)器就不能再進(jìn)一步使用,如果用戶(hù)不進(jìn)行特殊處理的話(huà)。其他當(dāng)前技術(shù)的程序,例如SanDisk公司提供的程序,每當(dāng)新數(shù)據(jù)將要被寫(xiě)入某個(gè)頁(yè)時(shí),該程序能擦除并且重寫(xiě)整個(gè)存儲(chǔ)器的頁(yè)。該系統(tǒng)的缺點(diǎn)是要求多個(gè)擦除周期,這是相當(dāng)緩慢和低效的而且將導(dǎo)致物理介質(zhì)本身更快的退化。
為了克服現(xiàn)有技術(shù)的這些缺陷,美國(guó)5404485號(hào)專(zhuān)利提供了一種閃速文件系統(tǒng)(FFS),這里將加以引用。FFS提供了一種閃速設(shè)備上數(shù)據(jù)存儲(chǔ)和操縱的系統(tǒng),該系統(tǒng)允許這些設(shè)備仿真磁的基于盤(pán)的數(shù)據(jù)存儲(chǔ)器。如上所述,閃速設(shè)備相當(dāng)便宜的費(fèi)用和低功率消耗使其成為數(shù)據(jù)存儲(chǔ)器的一種令人喜愛(ài)的選擇,尤其是對(duì)于膝上型的便攜式計(jì)算機(jī)。FFS提高了閃速設(shè)備代替磁盤(pán)存儲(chǔ)器的能力。實(shí)際上,美國(guó)5404485號(hào)專(zhuān)利提供的FFS已經(jīng)被證明是如此有用,以至其數(shù)據(jù)設(shè)計(jì)規(guī)格已經(jīng)被PCMCIA(個(gè)人計(jì)算機(jī)存儲(chǔ)器卡國(guó)際協(xié)會(huì))和JEIDA(日本電子工業(yè)開(kāi)發(fā)協(xié)會(huì))采用作為一種標(biāo)準(zhǔn),稱(chēng)之為閃速轉(zhuǎn)換層(FTL)。
FFS主要描述了閃速EEPROM設(shè)備的虛擬映射系統(tǒng)。該虛擬映射圖是一個(gè)表,將閃速設(shè)備中讀/寫(xiě)塊的物理地址和該塊的虛擬地址聯(lián)系起來(lái)。由于每個(gè)這樣的塊都很小,為512字節(jié),而該虛擬映射圖本身的規(guī)模很大。FFS還包括在閃速EEPROM上存儲(chǔ)和維護(hù)大量虛擬映射圖的方法,最大程度地減少存儲(chǔ)虛擬映射圖所需的其他存儲(chǔ)量。
如上所述,F(xiàn)FS對(duì)于將閃速設(shè)備轉(zhuǎn)換為磁盤(pán)存儲(chǔ)的仿真器已經(jīng)被證明是相當(dāng)成功的,由于如此成功使之已經(jīng)被采用作為一種工業(yè)標(biāo)準(zhǔn)。然而,F(xiàn)FS并不能滿(mǎn)足更新型閃速設(shè)備技術(shù)的所有需求。具體來(lái)說(shuō),F(xiàn)FS對(duì)NAND和AND閃速技術(shù)并不成功。
企圖克服當(dāng)前技術(shù)閃速存儲(chǔ)器結(jié)構(gòu)的某些缺陷、具體來(lái)說(shuō)就是寫(xiě)之前先擦除的系統(tǒng)的另一個(gè)例子是由美國(guó)5479638號(hào)專(zhuān)利提供的。在該專(zhuān)利的系統(tǒng)中,如果需要對(duì)某個(gè)被寫(xiě)塊進(jìn)一步編程,則某個(gè)特定讀/寫(xiě)塊的物理位置被移位。但是,該系統(tǒng)的缺點(diǎn)是只能對(duì)每次能夠擦除單個(gè)512字節(jié)讀/寫(xiě)塊的閃速設(shè)備進(jìn)行操作。因?yàn)檫@樣的一個(gè)要求是在硬件級(jí)上實(shí)現(xiàn)的,因此,該系統(tǒng)也不能用于較新的NAND和AND閃速技術(shù)。
NAND和AND在以下幾個(gè)方面不同于較老的閃速設(shè)備技術(shù)。首先,與較老閃速設(shè)備的64KB相比,NAND和AND的可擦除單位規(guī)模較小,約為8KB。其次,對(duì)于NAND和AND來(lái)說(shuō),擦除時(shí)間要快得多,即使按擦除單個(gè)字節(jié)所要求的時(shí)間來(lái)計(jì)算也如此。第三,閃速存儲(chǔ)器被分成NAND和AND的若干頁(yè),長(zhǎng)度為256或512字節(jié),這是硬件設(shè)備本身的一個(gè)固定特性。應(yīng)該注意到,這里所用到的術(shù)語(yǔ)“頁(yè)”大概相當(dāng)于較老閃速技術(shù)中用到的術(shù)語(yǔ)“塊”,雖然“頁(yè)”和“塊”的具體特性有些不同。這些特征對(duì)基于NAND和AND技術(shù)的閃速設(shè)備的操作具有若干含義。
首先,分頁(yè)方式存儲(chǔ)器在寫(xiě)一頁(yè)或其中的任何部分時(shí)具有一個(gè)固定的開(kāi)銷(xiāo)。而用于當(dāng)前閃速技術(shù)中寫(xiě)操作的開(kāi)銷(xiāo)是與被寫(xiě)入的字節(jié)數(shù)成比例的。其次,NAND和AND中的閃速存儲(chǔ)器被配置使得每一頁(yè)都有幾個(gè)可特殊尋址的備用字節(jié)。這些備用字節(jié)是有關(guān)閃速存儲(chǔ)器系統(tǒng)信息存儲(chǔ)的方便位置。最后,在某個(gè)頁(yè)被擦除之前,對(duì)該頁(yè)可以被寫(xiě)的次數(shù)有一個(gè)限定。這個(gè)限定是相當(dāng)?shù)偷模?次或10次,在此之后,如果沒(méi)有預(yù)先擦除,進(jìn)一步寫(xiě)入是不可靠的。因此,分頁(yè)方式存儲(chǔ)器對(duì)于成功的數(shù)據(jù)存儲(chǔ)和檢索具有突出的優(yōu)點(diǎn)和新的挑戰(zhàn)。
不幸的是,如上所述,當(dāng)前可用的現(xiàn)有技術(shù)數(shù)據(jù)處理系統(tǒng)FFS對(duì)于采用分頁(yè)方式的閃速存儲(chǔ)器的操作具有明顯的缺點(diǎn)。具體來(lái)說(shuō),由于分頁(yè)方式編程所強(qiáng)加的限制,使得FFS對(duì)例如NAND和AND這樣的分頁(yè)方式閃速技術(shù)表現(xiàn)了非優(yōu)化的性能。另外,美國(guó)5479638號(hào)專(zhuān)利中提供的系統(tǒng)也不能用于這樣的閃速技術(shù),因?yàn)樗笾饓K的擦除操作。
因此,需要提供一種處理NAND和AND閃速設(shè)備上數(shù)據(jù)存儲(chǔ)的系統(tǒng),它將具有很大的優(yōu)勢(shì),該系統(tǒng)不但能優(yōu)化分頁(yè)方式閃速技術(shù)的性能,而且也能用于較老的、非分頁(yè)方式的設(shè)備。
本發(fā)明提供了一種存儲(chǔ)器組織方法,在該存儲(chǔ)器中,數(shù)據(jù)只能被寫(xiě)入還沒(méi)有被寫(xiě)過(guò)的部分,這樣,該存儲(chǔ)器的被寫(xiě)過(guò)部分必須被擦除以便成為沒(méi)有被寫(xiě)過(guò)的,并且其中,用于讀或?qū)憯?shù)據(jù)的存儲(chǔ)器部分的規(guī)模,不同于擦除的最小存儲(chǔ)器部分的規(guī)模,該方法包括步驟(a)提供該存儲(chǔ)器的若干個(gè)物理單元,每個(gè)物理單元都是擦除的最小存儲(chǔ)器部分,每個(gè)物理單元都由一個(gè)物理單元號(hào)指定,而且每個(gè)物理單元都被分解為若干物理塊,每個(gè)物理塊都是用于讀或?qū)憯?shù)據(jù)的存儲(chǔ)器部分,并且每個(gè)物理塊都由物理單元中的一個(gè)物理塊偏移指定;(b)提供該存儲(chǔ)器的若干個(gè)虛擬單元,每個(gè)虛擬單元都由一個(gè)虛擬單元號(hào)指定,并且每個(gè)虛擬單元體現(xiàn)了若干個(gè)虛擬塊,每個(gè)虛擬塊由虛擬單元中的一個(gè)虛擬塊偏移指定;(c)提供一個(gè)虛擬映射圖,將每個(gè)虛擬單元至少映射到一個(gè)物理單元;并且(d)將虛擬單元中的每個(gè)虛擬塊映射到至少一個(gè)物理單元中的一個(gè)物理塊。
該方法最好還包括步驟(e)接收在虛擬塊上寫(xiě)入數(shù)據(jù)的寫(xiě)命令;(f)尋找包含該虛擬塊的虛擬單元;(g)在被映射到該虛擬單元的物理單元中尋找一個(gè)可寫(xiě)入的塊;并且(h)將數(shù)據(jù)寫(xiě)入該可寫(xiě)入物理塊。該方法最好還包括步驟(i)如果在一個(gè)被寫(xiě)過(guò)的物理單元中找不到一個(gè)沒(méi)有被寫(xiě)過(guò)的物理塊,則尋找一個(gè)沒(méi)有被寫(xiě)過(guò)的物理單元;(j)將數(shù)據(jù)寫(xiě)入該沒(méi)有被寫(xiě)過(guò)的物理單元中的一個(gè)可寫(xiě)入物理塊;并且(k)通過(guò)另外將該虛擬單元映射到該沒(méi)有被寫(xiě)過(guò)的物理單元來(lái)更新該虛擬映射圖,這樣,該虛擬單元既對(duì)應(yīng)沒(méi)有被寫(xiě)過(guò)的物理單元,又對(duì)應(yīng)寫(xiě)過(guò)的物理單元,沒(méi)有被寫(xiě)過(guò)的物理單元和被寫(xiě)過(guò)的物理單元形成一個(gè)物理單元鏈。沒(méi)有寫(xiě)過(guò)的物理單元的可寫(xiě)入物理塊最好有一個(gè)物理塊偏移,并且該物理塊偏移對(duì)應(yīng)被映射的虛擬單元的虛擬塊偏移。該方法最好還進(jìn)一步包括步驟(1)如果在某個(gè)寫(xiě)過(guò)的物理單元中找不到一個(gè)沒(méi)有被寫(xiě)過(guò)的物理塊,則尋找對(duì)應(yīng)某個(gè)鏈中多個(gè)物理單元的第二個(gè)虛擬單元;(m)尋找該鏈中的最后一個(gè)物理單元;(n)將數(shù)據(jù)從被寫(xiě)過(guò)的物理單元的每個(gè)物理塊中移動(dòng)到最后物理單元的一個(gè)可寫(xiě)入物理塊中,可寫(xiě)入物理塊確實(shí)具有與被寫(xiě)過(guò)物理單元的物理塊相同的塊偏移;并且(o)通過(guò)將該虛擬單元映射到最后物理單元來(lái)更新該虛擬映射圖,這樣,該虛擬單元實(shí)際上只對(duì)應(yīng)最后的物理單元。該方法最好還進(jìn)一步包括步驟(p)真正擦除該鏈中所有被寫(xiě)過(guò)的物理單元,只留下最后的物理單元。
另外,該方法還可以進(jìn)一步包括步驟(l)如果在該鏈上找不到可分配的沒(méi)有寫(xiě)過(guò)的物理單元,則分配一個(gè)沒(méi)有被寫(xiě)過(guò)的物理單元以便重新組織;(m)將數(shù)據(jù)從被寫(xiě)過(guò)物理單元的每個(gè)物理塊中移動(dòng)到?jīng)]有被寫(xiě)過(guò)的物理單元的一個(gè)可寫(xiě)入物理塊中,并且(n)通過(guò)將虛擬單元映射到?jīng)]有被寫(xiě)過(guò)的物理單元以更新該虛擬映射圖,這樣,該虛擬單元實(shí)際上只對(duì)應(yīng)沒(méi)有被寫(xiě)過(guò)的物理單元。該方法最好還進(jìn)一步包括步驟(o)擦除所有的被寫(xiě)過(guò)物理單元。
根據(jù)本發(fā)明的其他最佳實(shí)施例,該方法進(jìn)一步包括步驟(i)如果在寫(xiě)過(guò)的物理單元中找不到?jīng)]有被寫(xiě)過(guò)的物理塊,則分配一個(gè)沒(méi)有被寫(xiě)過(guò)的物理單元來(lái)形成一條物理單元鏈,這樣,這個(gè)沒(méi)有被寫(xiě)過(guò)的物理單元就是該鏈中的最后一個(gè)物理單元;(j)將數(shù)據(jù)寫(xiě)入最后物理單元中的一個(gè)沒(méi)有被寫(xiě)過(guò)的物理塊;(k)除了在步驟(j)中被寫(xiě)入的數(shù)據(jù)將數(shù)據(jù)從每個(gè)物理塊移到?jīng)]有被寫(xiě)過(guò)的物理單元的一個(gè)可寫(xiě)入物理塊中;并且(m)更新該虛擬映射圖,即將虛擬單元映射到寫(xiě)過(guò)的物理單元,這樣虛擬單元就對(duì)應(yīng)寫(xiě)過(guò)的物理單元。
根據(jù)本發(fā)明的另一個(gè)實(shí)施例,提供了為某個(gè)存儲(chǔ)器寫(xiě)入數(shù)據(jù)的一種方法,在這種方法中,數(shù)據(jù)只能寫(xiě)入存儲(chǔ)器的沒(méi)有被寫(xiě)過(guò)的部分,這樣,存儲(chǔ)器的被寫(xiě)過(guò)部分必須被擦除以便成為沒(méi)有被寫(xiě)過(guò)的,該方法包括步驟(a)提供若干個(gè)物理單元而且每個(gè)物理單元又被分成若干個(gè)物理塊,每個(gè)物理單元具有一個(gè)物理單元號(hào)并且每個(gè)物理塊也有一個(gè)在其物理單元內(nèi)的物理塊偏移;(b)提供若干個(gè)虛擬單元而且每個(gè)虛擬單元又被分成若干個(gè)虛擬塊,每個(gè)虛擬單元有一個(gè)虛擬單元號(hào)并且每個(gè)虛擬塊也有一個(gè)在其虛擬單元內(nèi)的虛擬塊偏移,每個(gè)虛擬單元被映射到至少一個(gè)物理單元上;(c)接收在虛擬塊上寫(xiě)入數(shù)據(jù)的寫(xiě)命令;(d)確定包含帶有虛擬塊偏移的虛擬塊的一個(gè)虛擬單元;(e)尋找對(duì)應(yīng)該虛擬單元的一個(gè)物理單元;(f)在該物理單元內(nèi)尋找一個(gè)物理塊;(g)判定該物理塊是否沒(méi)有被寫(xiě)過(guò);(h)僅當(dāng)該物理塊沒(méi)有被寫(xiě)過(guò)時(shí),將數(shù)據(jù)寫(xiě)入該物理塊;(i)反之,如果該物理塊已經(jīng)被寫(xiě)過(guò),分配一個(gè)沒(méi)有被寫(xiě)過(guò)的物理單元;(j)在該沒(méi)有被寫(xiě)過(guò)的物理單元中尋找一個(gè)可寫(xiě)入的物理塊,可寫(xiě)入的物理塊具有物理塊偏移;(k)將數(shù)據(jù)寫(xiě)入該可寫(xiě)入物理塊中;并且(1)另外將該虛擬單元映射到包含該可寫(xiě)入物理塊沒(méi)有被寫(xiě)過(guò)的物理單元,這樣,該虛擬單元被另外映射到?jīng)]有被寫(xiě)過(guò)物理單元,以便形成一個(gè)物理單元鏈??蓪?xiě)入物理塊的物理塊偏移最好具有與該虛擬塊偏移相同的塊偏移號(hào)。
該方法最好進(jìn)一步包括步驟(m)如果在寫(xiě)過(guò)的物理單元中找不到?jīng)]有被寫(xiě)過(guò)的物理塊,則尋找對(duì)應(yīng)鏈中若干個(gè)物理單元的第二個(gè)虛擬單元;(n)尋找該鏈的最后一個(gè)物理單元;(o)將寫(xiě)過(guò)的物理單元的物理塊中的所有數(shù)據(jù)傳送到最后物理單元的物理塊中;并且(p)更新虛擬映射圖,使得該虛擬單元只對(duì)應(yīng)最后的物理單元。該方法最好進(jìn)一步包括步驟(q)擦除所有的寫(xiě)過(guò)物理單元。
另外,該方法還可以進(jìn)一步包括步驟(1)如果找不到?jīng)]有被寫(xiě)過(guò)的物理單元?jiǎng)t尋找該鏈中的最后一個(gè)物理單元;(m)將寫(xiě)過(guò)的物理單元的物理塊中的所有數(shù)據(jù)都傳送到最后物理單元的物理塊中;并且(n)更新虛擬映射圖,使得該虛擬單元只對(duì)應(yīng)最后的物理單元。該方法最好進(jìn)一步包括步驟(o)實(shí)際上除了最后的物理單元之外擦除所有的寫(xiě)過(guò)的物理單元。
本發(fā)明提供了組織某種閃速存儲(chǔ)器的方法,其中,用于讀或?qū)憯?shù)據(jù)的存儲(chǔ)器部分的規(guī)模,例如一個(gè)塊,不同于擦除的最小部分的規(guī)模,例如一個(gè)單元。閃速存儲(chǔ)器類(lèi)型的例子可以根據(jù)本發(fā)明的方法來(lái)組織,包括但不局限于由NAND和AND技術(shù)示例的分頁(yè)方式設(shè)備。并且提供了對(duì)閃速存儲(chǔ)器讀寫(xiě)數(shù)據(jù)的方法,以及當(dāng)找不到更多的沒(méi)有被寫(xiě)過(guò)的物理單元時(shí),重新組織該閃速存儲(chǔ)器的方法。
此后,術(shù)語(yǔ)“物理單元”被定義為物理介質(zhì)或存儲(chǔ)器的硬件上的一個(gè)單元,是可以被擦除的存儲(chǔ)器的最小部分,或者是其整數(shù)倍。這是存儲(chǔ)器中相連的、規(guī)模固定的并且是可擦除的一個(gè)部分。術(shù)語(yǔ)“物理塊”被定義為用于讀或?qū)憯?shù)據(jù)的存儲(chǔ)器的部分。此后,術(shù)語(yǔ)“虛擬單元”被定義為與物理單元具有相同的規(guī)模。對(duì)于例如NAND和AND這樣的分頁(yè)存儲(chǔ)技術(shù),可擦除的存儲(chǔ)器的最小部分大于其頁(yè)的規(guī)模,通常約為8KB。正如這里所用到的,術(shù)語(yǔ)“物理塊”等于分頁(yè)方式的存儲(chǔ)技術(shù)中的術(shù)語(yǔ)“頁(yè)”。因此,虛擬單元和物理單元一樣大。
此后,術(shù)語(yǔ)“虛擬映射圖”指的是一張表,該表將一個(gè)虛擬單元與至少一個(gè)對(duì)應(yīng)的物理單元聯(lián)系起來(lái)。如上所述,每個(gè)單元,虛擬的或物理的,都由若干個(gè)塊組成。單元內(nèi)塊的準(zhǔn)確位置可根據(jù)一個(gè)或多個(gè)預(yù)置的規(guī)則來(lái)確定,下面進(jìn)一步描述。
每個(gè)物理單元由一個(gè)物理單元號(hào)指定。每個(gè)物理塊的位置由物理塊偏移給出。同樣,每個(gè)虛擬單元由一個(gè)虛擬單元號(hào)指定。每個(gè)虛擬塊位置由虛擬塊偏移給出。應(yīng)該注意到,每個(gè)虛擬單元號(hào)可以對(duì)應(yīng)一個(gè)或多個(gè)物理單元號(hào)。因此,虛擬單元和物理單元之間的映射可以是一對(duì)一,也可以是一對(duì)多。
此后,術(shù)語(yǔ)“寫(xiě)數(shù)據(jù)”描述在閃速存儲(chǔ)器上存儲(chǔ)數(shù)據(jù)的動(dòng)作。術(shù)語(yǔ)“讀數(shù)據(jù)”說(shuō)明從閃速存儲(chǔ)器中檢索數(shù)據(jù)的動(dòng)作。此后,術(shù)語(yǔ)“沒(méi)有被寫(xiě)過(guò)”表示可以將數(shù)據(jù)寫(xiě)入的存儲(chǔ)器的某個(gè)部分,例如一個(gè)物理塊。因此,術(shù)語(yǔ)“沒(méi)有被寫(xiě)過(guò)”包括但不局限于剛被擦除的存儲(chǔ)器的某個(gè)部分。
在具有根據(jù)本發(fā)明進(jìn)行組織的閃速存儲(chǔ)器的計(jì)算機(jī)或其他電子設(shè)備中,該設(shè)備的操作系統(tǒng)與虛擬單元和虛擬塊交互作用以便讀寫(xiě)數(shù)據(jù)。包括虛擬單元和虛擬塊的虛擬介質(zhì)作為操作系統(tǒng)與閃速存儲(chǔ)設(shè)備交互作用的一個(gè)界面。例如,操作系統(tǒng)發(fā)出一個(gè)寫(xiě)命令,要求將數(shù)據(jù)寫(xiě)入具有某個(gè)虛擬塊偏移的一個(gè)虛擬塊。接著尋找包含該虛擬塊的虛擬單元。虛擬映射圖尋找在存儲(chǔ)器某個(gè)物理單元內(nèi)對(duì)應(yīng)的物理塊,數(shù)據(jù)被實(shí)際存儲(chǔ)在這里。雖然操作系統(tǒng)發(fā)出讀寫(xiě)命令,似乎虛擬單元和虛擬塊是閃速存儲(chǔ)器的實(shí)際硬件,事實(shí)上,真正的硬件是閃速存儲(chǔ)器的物理單元和物理塊。因此操作系統(tǒng)僅僅知道虛擬單元和虛擬塊,而不是直接和硬件本身交互作用。
這樣一個(gè)界面的優(yōu)點(diǎn)是閃速存儲(chǔ)器的固有缺點(diǎn),例如在可以進(jìn)一步寫(xiě)入之前需要進(jìn)行一次擦除,已經(jīng)通過(guò)操作系統(tǒng)和虛擬存儲(chǔ)器的交互作用來(lái)加以克服。此外,電子設(shè)備的操作系統(tǒng)并不需要組織閃速存儲(chǔ)器的地址。另外,操作系統(tǒng)可以和多種不同的閃速存儲(chǔ)器技術(shù)交互作用而不需要更多的修改,因?yàn)橐粋€(gè)界面可以用于多種類(lèi)型的閃速存儲(chǔ)設(shè)備。因此,本發(fā)明的方法允許對(duì)閃速存儲(chǔ)器設(shè)備和使用它們的電子設(shè)備具有最大的靈活性。
這里僅僅通過(guò)示例的方式,參考以下的附圖來(lái)描述本發(fā)明,其中
圖1是根據(jù)本發(fā)明的物理閃速存儲(chǔ)器設(shè)備的一個(gè)示意圖;圖2是根據(jù)本發(fā)明組織閃速存儲(chǔ)設(shè)備的基本系統(tǒng)的示意圖;圖3A和3B分別表示根據(jù)本發(fā)明的AND和FMAX系統(tǒng);
圖4A和4B分別表示根據(jù)本發(fā)明的AND和FMAX系統(tǒng)的寫(xiě)算法;以及圖5A和5B分別表示根據(jù)本發(fā)明的AND和FMAX系統(tǒng)的重新組織算法。
本發(fā)明提供了一種用于組織分頁(yè)方式閃速存儲(chǔ)設(shè)備的系統(tǒng),例如NAND和AND閃速設(shè)備。該系統(tǒng)包括對(duì)這樣的閃速設(shè)備讀寫(xiě)的方法。此外,該系統(tǒng)還提供一個(gè)界面使得閃速設(shè)備能夠成功地仿真磁盤(pán)存儲(chǔ)器。這樣的閃速存儲(chǔ)器設(shè)備可以安裝在各種主設(shè)備中,例如個(gè)人計(jì)算機(jī)或膝上計(jì)算機(jī)。
雖然本發(fā)明將在閃速存儲(chǔ)器的環(huán)境中描述,但熟悉這一技術(shù)的人應(yīng)該理解,其原理同樣適用于具有與閃速存儲(chǔ)器相同的寫(xiě)、讀和單元擦除特性的數(shù)據(jù)存儲(chǔ)設(shè)備。
結(jié)合附圖和相關(guān)的描述,可以更好地理解根據(jù)本發(fā)明用于組織頁(yè)式閃速存儲(chǔ)設(shè)備的系統(tǒng)的原理和操作。
現(xiàn)在參看附圖,圖1根據(jù)例如NAND這樣的技術(shù),示意性地說(shuō)明當(dāng)前技術(shù)的物理頁(yè)式閃速存儲(chǔ)設(shè)備。術(shù)語(yǔ)“物理設(shè)備”此后被定義為實(shí)際的硬件本身,包括閃速存儲(chǔ)設(shè)備的物理介質(zhì)。這樣的物理介質(zhì)通常由閃速EEPROM器件組成,雖然任何合適的非易失性、可編程的存儲(chǔ)設(shè)備都可以代替。術(shù)語(yǔ)“可編程”此后被定義為可例如通過(guò)將數(shù)據(jù)寫(xiě)入存儲(chǔ)設(shè)備修改的。
閃速存儲(chǔ)器物理設(shè)備10被表示為至少帶有一個(gè)物理單元12。物理單元12是物理設(shè)備10可以被擦除的最小段。物理單元12包括整數(shù)個(gè)塊,獨(dú)立地被表示為塊1到塊n,其中n為整數(shù),并且集中地被表示為塊14。塊14是由一組相連的、固定長(zhǎng)度的物理字節(jié)地址組成,并且是其硬件的一個(gè)特征。具體來(lái)說(shuō),塊14的規(guī)模是物理設(shè)備10的一個(gè)特性。用戶(hù)數(shù)據(jù)可以被存放在塊14的主數(shù)據(jù)區(qū)域16中。每一塊14也有一個(gè)控制數(shù)據(jù)區(qū)18??刂茢?shù)據(jù)區(qū)18可由來(lái)自塊14主部分的獨(dú)立算法實(shí)現(xiàn)尋址,并且不被包含在塊14規(guī)模的計(jì)算中。正如以下將進(jìn)一步描述的,控制數(shù)據(jù)區(qū)18便于存儲(chǔ)與閃速文件系統(tǒng)本身有關(guān)的信息。每個(gè)物理單元12可以是被分配的單元,也可以是一個(gè)非分配的單元。每個(gè)非分配單元是自由的,不包括有用的數(shù)據(jù),并且隨時(shí)準(zhǔn)備被定位和分配。每個(gè)分配的單元已經(jīng)被定位并且包含數(shù)據(jù)。
圖2說(shuō)明一種用于組織基本閃速存儲(chǔ)設(shè)備的系統(tǒng)。系統(tǒng)20控制虛擬介質(zhì)22和物理設(shè)備10,并且通過(guò)虛擬映射圖24將虛擬介質(zhì)22和物理設(shè)備10聯(lián)系起來(lái)。虛擬介質(zhì)22包含若干個(gè)虛擬單元26。每個(gè)虛擬單元26具有多個(gè)虛擬塊28。每個(gè)虛擬單元26由虛擬地址指定。虛擬地址包括虛擬單元號(hào),指定某個(gè)特定的虛擬單元26。每個(gè)虛擬塊28由虛擬塊偏移指定。同樣,每個(gè)物理單元12都有一個(gè)物理地址。物理地址包括物理單元號(hào),指定某個(gè)特定的物理單元12。每個(gè)物理塊14有一個(gè)物理塊偏移。
虛擬映射圖24將一個(gè)被分配的虛擬單元26,映射至至少一個(gè)被分配的物理單元12。對(duì)于物理單元,如果某個(gè)虛擬單元已經(jīng)被映射到至少一個(gè)物理單元,則這是一個(gè)被分配的虛擬單元。然而,一個(gè)虛擬單元26可以被映射到多個(gè)物理單元12。因此,虛擬單元26和物理單元12之間的對(duì)應(yīng)關(guān)系可以是一對(duì)一,也可以是一對(duì)多。
系統(tǒng)20操作如下。帶有閃速存儲(chǔ)設(shè)備(沒(méi)有表示)的電子設(shè)備的操作系統(tǒng)對(duì)某個(gè)特定的虛擬單元26中的某個(gè)特定的虛擬塊28發(fā)出命令,例如讀命令或?qū)懨?。虛擬映射圖24隨后尋找某個(gè)物理單元12中對(duì)應(yīng)的物理塊14。
如果該映射的對(duì)應(yīng)關(guān)系是如圖所示的一對(duì)一關(guān)系,每個(gè)虛擬單元26被映射到一個(gè)物理單元12,這種情況似乎顯得相當(dāng)簡(jiǎn)單。然而,如上所述,物理設(shè)備10對(duì)讀寫(xiě)數(shù)據(jù)具有特定的物理限制,包括在另一個(gè)數(shù)據(jù)可以被寫(xiě)入之前執(zhí)行周期性擦除的要求。對(duì)于這些限制,有兩個(gè)可能的解決方案,不包括對(duì)物理設(shè)備10或其中的部分進(jìn)行經(jīng)常重復(fù)的擦除。
圖3A給出第一種解決方案,其中虛擬單元26和物理單元12之間的對(duì)應(yīng)關(guān)系是一對(duì)多關(guān)系,因此,每個(gè)虛擬單元26對(duì)應(yīng)多個(gè)物理單元12。虛擬映射圖必須具有執(zhí)行這樣一種映射所需的信息。圖3A給出虛擬映射圖24部分的一個(gè)例子,并且可用于本發(fā)明的AND系統(tǒng)。
虛擬圖24的這個(gè)部分表示物理單元12中的物理塊14,以及虛擬單元26中的虛擬塊28。在該例子中,一個(gè)特定的虛擬單元30對(duì)應(yīng)兩個(gè)物理單元12。第一個(gè)物理單元12是主單元32。第二個(gè)物理單元12是替換單元34。每個(gè)虛擬單元26只能有一個(gè)主單元34。但是,與每個(gè)虛擬單元26相關(guān)的可能沒(méi)有、也可能有多個(gè)替換單元34。作為一個(gè)例子,虛擬單元36只對(duì)應(yīng)一個(gè)主單元38而沒(méi)有替換單元34,因此,虛擬單元36是非替換虛擬單元的一個(gè)例子。
虛擬塊28的組織將取決于對(duì)應(yīng)某個(gè)特定虛擬單元26的物理塊14的數(shù)目。對(duì)于虛擬單元30,某些虛擬塊28對(duì)應(yīng)主單元32中的物理塊14,而其他虛擬塊28則對(duì)應(yīng)替換單元34中的物理塊14。對(duì)于虛擬單元36,實(shí)際上所有的虛擬塊28都對(duì)應(yīng)主單元38中的物理塊14。
在這種最簡(jiǎn)單的情況下,其中的虛擬單元是一個(gè)非替換單元,定位某個(gè)特定物理塊14的過(guò)程如下。虛擬單元36帶有指定該單元的虛擬單元號(hào)44,以及指定虛擬塊42的虛擬塊偏移46。注意,虛擬塊偏移46也是一個(gè)號(hào)。物理單元號(hào)50指定主單元38。物理塊偏移52指定主單元38中的物理塊54。為了實(shí)現(xiàn)讀或?qū)憯?shù)據(jù)操作而定位物理塊54,第一個(gè)規(guī)則就是將所需虛擬塊的偏移46除以每個(gè)虛擬單元中的塊數(shù),以便確定虛擬單元號(hào)44。虛擬映射圖24隨后將虛擬單元號(hào)44映射到物理單元號(hào)50。第二個(gè)規(guī)則是根據(jù)物理塊偏移52必須與虛擬塊偏移46具有相同的號(hào),從而定位物理單元38中所需的物理塊14,在這種情況下是物理塊54。因此,虛擬映射圖24只包含有關(guān)虛擬和物理單元的信息,但規(guī)則被用來(lái)確定合適的塊偏移。
在更復(fù)雜的情況下,每個(gè)虛擬單元對(duì)應(yīng)多個(gè)物理單元。在這種情況下,兩個(gè)或多個(gè)物理單元的組被稱(chēng)為一個(gè)“鏈”。例如,虛擬單元號(hào)72指定虛擬單元30,而虛擬塊偏移74指定虛擬塊70。物理單元號(hào)78指定替換單元34并且物理塊偏移80指定替換單元34中的物理塊82。因此,虛擬單元30的虛擬塊70對(duì)應(yīng)替換單元34的物理塊82。
為了實(shí)現(xiàn)讀或?qū)憯?shù)據(jù)操作而定位物理塊82,第一個(gè)規(guī)則也是將所需虛擬塊的偏移74除以每個(gè)虛擬單元中的塊數(shù),以便確定虛擬單元號(hào)72。虛擬映射圖24隨后將虛擬單元號(hào)72映射到物理單元號(hào)78。但是有一個(gè)問(wèn)題。如上所述,第二個(gè)規(guī)則是根據(jù)物理塊偏移(必須與虛擬塊偏移具有相同的號(hào)),定位物理單元中所需的物理塊。在這種情況下,該鏈中有若干個(gè)物理塊14。為了確定哪個(gè)物理塊14有數(shù)據(jù),第三個(gè)規(guī)則是檢查該鏈的每個(gè)物理單元中具有與虛擬塊70相同的塊偏移的每個(gè)物理塊14。最后的非自由物理塊14,在這種情況下是替換單元34的物理塊82,包括供讀出的所需數(shù)據(jù)。反之,對(duì)于寫(xiě)數(shù)據(jù),第一個(gè)自由的物理塊14是所需的塊。
由于物理塊是按照它們?cè)谒鶎俚逆溨械奈锢韱卧拇涡虮粚?xiě)入的,術(shù)語(yǔ)“最后的非自由物理塊”指的是在該鏈中最遠(yuǎn)的、但仍然是非自由的單元中的物理塊。或者在該鏈中沒(méi)有更多的單元,或者具有與該鏈中的下一個(gè)單元相同的塊偏移的物理塊是自由的。同樣,為了找到第一個(gè)自由的物理塊,對(duì)該鏈中的每個(gè)物理單元中具有所需塊偏移的每個(gè)物理塊進(jìn)行檢查,從主單元開(kāi)始,并且依次通過(guò)每個(gè)替換單元繼續(xù)下去,直到發(fā)現(xiàn)一個(gè)自由塊。
反之,F(xiàn)MAX雖然使用相同的虛擬映射圖和尋址系統(tǒng),但每個(gè)主單元只有一個(gè)替換單元,如圖3B所示。為此,F(xiàn)MAX使用簡(jiǎn)單和組合替換(物理)單元。簡(jiǎn)單替換單元是這樣一個(gè)單元,其中物理單元的所有物理塊偏移實(shí)際上都與對(duì)應(yīng)虛擬單元的虛擬塊偏移直接相關(guān)。組合替換單元是這樣的一個(gè)單元,其中并不需要存在虛擬塊偏移和物理塊偏移之間的這樣一種直接對(duì)應(yīng)關(guān)系。反之,如果具有對(duì)應(yīng)物理塊偏移的物理塊不能用于寫(xiě)入,則選擇另一個(gè)物理塊。隨后將控制信息寫(xiě)入控制數(shù)據(jù)區(qū)以便確定虛擬塊和物理塊之間的實(shí)際對(duì)應(yīng)關(guān)系。
如圖3B所示,主單元97有一個(gè)簡(jiǎn)單替換單元98,該單元具有若干個(gè)物理塊100,每個(gè)塊對(duì)應(yīng)虛擬單元104中的一個(gè)虛擬塊102。每個(gè)物理塊偏移對(duì)應(yīng)一個(gè)虛擬塊偏移,該偏移是相同的偏移號(hào)。
然而,如果得不到具有所需物理塊偏移的物理塊,則在相同物理單元中的另一個(gè)物理塊必須被寫(xiě)入,并且該替換單元成為一個(gè)組合替換單元。第二個(gè)主單元109有一個(gè)組合的物理單元110,該單元也有若干個(gè)物理塊112,其中的每個(gè)對(duì)應(yīng)虛擬單元116中的一個(gè)虛擬塊114。然而,一個(gè)物理塊偏移可以對(duì)應(yīng)一個(gè)相同的偏移號(hào)的虛擬塊偏移,而第二個(gè)物理塊偏移可以對(duì)應(yīng)第二個(gè)不是相同的偏移號(hào)的虛擬塊偏移。為了找到一個(gè)特定的物理塊,必須檢查被寫(xiě)入控制數(shù)據(jù)區(qū)的控制信息。正如下面將進(jìn)一步描述的,這對(duì)于寫(xiě)數(shù)據(jù)以及必要時(shí)重新組織FMAX系統(tǒng)都具有重要的意義。
圖4A給出了處理圖3A中虛擬映射圖的流程圖,而圖4B則給出處理圖3B中虛擬映射圖的流程圖。在這種最簡(jiǎn)單的情況下,所有的替換單元或者是簡(jiǎn)單單元,或者是只有一個(gè)替換單元的主單元,相同的步驟可以被用于AND和FMAX。首先,計(jì)算虛擬單元號(hào)和虛擬塊偏移,即把將被定位的虛擬塊的數(shù)目除以每個(gè)虛擬單元中的塊數(shù)從而給出虛擬單元號(hào)。而模數(shù),或者除法的余數(shù)就是虛擬塊偏移。
接著,檢查虛擬映射圖以便找到對(duì)應(yīng)該虛擬單元的物理單元。如果找不到對(duì)應(yīng)該虛擬單元的物理單元,則物理存儲(chǔ)器所要的部分并不存在該閃速設(shè)備上。如上所述,這種簡(jiǎn)單的模式僅在所有的替換單元都是簡(jiǎn)單單元、或者主單元只有一個(gè)替換單元時(shí)起作用。然而,如果將要寫(xiě)入數(shù)據(jù)的物理塊已經(jīng)被其他數(shù)據(jù)編程或者寫(xiě)入,該模式將不起作用。在這種情況下,需要一種替換模式,該模式能夠找到可以寫(xiě)入數(shù)據(jù)的另一個(gè)物理塊。
圖4A(ANAND)和圖4B(FMAX)說(shuō)明兩個(gè)不同的算法。這兩個(gè)算法都以相同的方式開(kāi)始。在步1中,所需的物理單元被定位。在步2中對(duì)應(yīng)所標(biāo)識(shí)的塊偏移的物理塊在該物理單元中被定位。在步3中,如果該塊是沒(méi)有被寫(xiě)過(guò)的,則數(shù)據(jù)被寫(xiě)入該塊中。如果找不到所要的物理塊,則本發(fā)明的這兩個(gè)系統(tǒng),AND和FMAX中,每個(gè)技術(shù)處理所要的物理塊已經(jīng)被寫(xiě)入的情況的方式就不同。
如圖4A所示,AND系統(tǒng)將通過(guò)檢查替換單元處理這種情況。在步4中,檢查第x個(gè)替換物理單元,這里x是初始值為1的一個(gè)整數(shù)。如果該物理單元有一個(gè)具有所要的物理塊偏移的沒(méi)有被寫(xiě)過(guò)的物理塊,則數(shù)據(jù)被寫(xiě)入該物理塊。如果找不到這樣的塊,則如步5所示,x增1并且重復(fù)步4。步4和步5被重復(fù)直到該數(shù)據(jù)或者被寫(xiě)入某個(gè)塊中,或者在該鏈中找不到其他的替換單元。在步6中,一個(gè)沒(méi)有分配的物理單元被分配作為一個(gè)替換單元,并且該數(shù)據(jù)被寫(xiě)入到具有所要塊偏移的塊中。
FMAX系統(tǒng)采用不同的方式處理這種情況,如圖4B所示。在步4中,替換單元中具有相同物理塊偏移的一個(gè)物理塊被定位。如果該物理塊是沒(méi)有寫(xiě)過(guò)的,則數(shù)據(jù)被寫(xiě)入該物理塊中。否則,如步5所示,該替換單元中具有不同物理塊偏移的一個(gè)物理塊被定位。步5被重復(fù),直到一個(gè)沒(méi)有寫(xiě)過(guò)的物理塊被找到。該替換單元現(xiàn)在是一個(gè)組合單元,因?yàn)樘摂M塊偏移不再與物理塊偏移相同。在步6中,控制信息被加到控制數(shù)據(jù)區(qū)中,使得該映射模式能夠發(fā)現(xiàn)組合單元中任何物理塊的正確位置。
然而,即使這些替換算法也不能滿(mǎn)足對(duì)閃速設(shè)備所有的不同需要的處理。AND和FMAX系統(tǒng)最終都將遇到這樣的一種情況,進(jìn)一步的數(shù)據(jù)不能被寫(xiě)入物理單元的一個(gè)塊中,因?yàn)椴淮嬖谶@樣的一個(gè)物理塊。
在這種情況下,虛擬單元必須被重新組織以便重新把數(shù)據(jù)構(gòu)造為其最簡(jiǎn)單的狀態(tài),這是一個(gè)非替換的主單元。在這個(gè)重新組織的過(guò)程中,以前屬于該虛擬單元表示的物理替換單元被釋放,因此成為沒(méi)有分配的或自由的物理單元。對(duì)于AND替換單元以及簡(jiǎn)單FMAX替換單元,這個(gè)重新組織過(guò)程被稱(chēng)為折疊,如以下圖5A所示。
折疊要求物理塊按照與本來(lái)應(yīng)該被寫(xiě)入主單元相同的替換單元中的相同物理塊偏移被寫(xiě)入,其理由將隨著該過(guò)程的描述而更加清楚。在折疊的第一步,該鏈中最后一個(gè)物理單元物理單元x,被識(shí)別,其中,x是一個(gè)整數(shù),取值范圍從1到某個(gè)預(yù)定的取決于執(zhí)行情況的限定值。注意,其中的x等于1的替換單元實(shí)際上是主單元,并且該算法的其余部分沒(méi)有被執(zhí)行。還要注意,對(duì)于FMAX,x等于1或2。
在步2中,單元x的塊n被檢查,其中n是個(gè)整數(shù)。如果數(shù)據(jù)被寫(xiě)入塊n,n增1。否則,則在步3中x減1。步2和步3被重復(fù),直到或者x等于0,或者找到一個(gè)寫(xiě)過(guò)的塊n。如果找到一個(gè)寫(xiě)過(guò)的塊n,則在步4中將數(shù)據(jù)移動(dòng)到該鏈中最后一個(gè)替換單元的塊n中。步2到步4被重復(fù),直到所有的數(shù)據(jù)已經(jīng)被傳送到最后的替換單元,該單元隨后成為主單元。該鏈中的所有其他單元,如果有的話(huà),包括以前的主單元,隨后都被釋放并且可以用于分配。該虛擬映射圖也被更新以便反映該虛擬單元現(xiàn)在對(duì)應(yīng)一個(gè)物理單元的事實(shí)。
不幸的是,折疊并不適用于組合FMAX替換單元,因?yàn)樵撎鎿Q單元中的塊并不是總有一個(gè)等于該虛擬塊偏移的物理塊偏移。圖5B中給出了對(duì)這樣組合物理單元的一個(gè)不同的重新分配過(guò)程。在步1中,一個(gè)新的、沒(méi)有被分配的物理單元被指定作為新的主物理單元。在步2中,檢查組合物理單元的塊n。如果數(shù)據(jù)被寫(xiě)入組合物理單元的塊n,則在步3中將數(shù)據(jù)拷貝到新的主單元。否則,原來(lái)的主單元的塊n中的數(shù)據(jù)被寫(xiě)入到新的主單元。在步4中對(duì)n增1。重復(fù)步2到步4,直到所有的塊已經(jīng)被拷貝。一旦所有的塊已經(jīng)被拷貝,以前的替換單元,以及原來(lái)的主單元,都被釋放并且可以分配。象在以前的過(guò)程中一樣,虛擬映射圖被更新以便反映該虛擬單元現(xiàn)在只對(duì)應(yīng)一個(gè)物理單元這樣的事實(shí)。
一個(gè)大大簡(jiǎn)化的重新組織的實(shí)施例也是可能的。在這個(gè)簡(jiǎn)化的實(shí)施例中,替換單元被分配后,立即進(jìn)入該重新組織的過(guò)程。因此,替換單元只是系統(tǒng)的一個(gè)過(guò)渡特征,并且處于靜止?fàn)顟B(tài),其中物理存儲(chǔ)器沒(méi)有經(jīng)受寫(xiě)入處理,數(shù)據(jù)全部都存在非替換的主單元中。替換單元的存在僅僅是為了寫(xiě)入過(guò)程的處理。在該過(guò)程結(jié)束時(shí)所有的信息都被傳送到一個(gè)新的單元,因此該替換單元消失了。這種方法的優(yōu)點(diǎn)是實(shí)施起來(lái)簡(jiǎn)單,而且管理這個(gè)過(guò)程所需的控制結(jié)構(gòu)也簡(jiǎn)單。但是,其缺點(diǎn)是效率不高,降低了該系統(tǒng)的寫(xiě)入性能。
本發(fā)明的所有方法都必須能夠?qū)⒖刂菩畔⒂涗浽谖锢黹W速設(shè)備本身上,以便描述被存儲(chǔ)數(shù)據(jù)的狀態(tài)。具體來(lái)說(shuō),單元和塊的控制信息最好被保存起來(lái),雖然這些數(shù)據(jù)也可以另外從其他類(lèi)型的數(shù)據(jù)中重新構(gòu)造出來(lái)。單元控制信息描述了被分配給該物理單元的物理單元號(hào)、該物理單元本身作為主單元或替換單元的狀態(tài)、以及它與其他單元相對(duì)的位置。塊控制信息說(shuō)明該物理塊是否被占用、是自由的或被駐留在某個(gè)不同物理塊中的信息所取代。
這些不同類(lèi)型信息的一種或兩種可以被記錄在該物理設(shè)備的某個(gè)特定部分上。如上述圖1中所提到的,AND和FMAX系統(tǒng)最好將每個(gè)物理單元12分成存放記錄在物理閃速設(shè)備上的實(shí)際用戶(hù)數(shù)據(jù)的主數(shù)據(jù)區(qū)16以及存放控制信息的控制數(shù)據(jù)區(qū)18。雖然這些區(qū)域被表示為塊16的子分區(qū),但物理單元12也可以被分成主數(shù)據(jù)區(qū)和控制數(shù)據(jù)區(qū),實(shí)際上與分塊無(wú)關(guān)。應(yīng)該注意,控制數(shù)據(jù)區(qū)18沒(méi)有被包含在主數(shù)據(jù)區(qū)16的塊定位模式中,并且當(dāng)計(jì)算物理閃速盤(pán)的全部規(guī)模時(shí)也沒(méi)有被包含。
由于NAND和AND閃速技術(shù)對(duì)每個(gè)存儲(chǔ)塊都有備用區(qū),因此控制信息一般都記錄在該塊的備用區(qū)中,而用戶(hù)數(shù)據(jù)則是位于主塊區(qū)中。
對(duì)于那些沒(méi)有提供備用區(qū)的閃速技術(shù),每個(gè)物理單元可以被分成用于存放用戶(hù)數(shù)據(jù)的主區(qū)以及用于存放所需控制信息的一個(gè)附加區(qū)。
應(yīng)該理解,上面的描述僅僅是用作示例,而在本發(fā)明的實(shí)質(zhì)和范圍內(nèi)還可以有許多其他的實(shí)施例。
權(quán)利要求書(shū)按照條約第19條的修改1.一種存儲(chǔ)器組織方法,在該存儲(chǔ)器中數(shù)據(jù)只能被寫(xiě)入還沒(méi)有被寫(xiě)過(guò)的部分,這樣,該存儲(chǔ)器的被寫(xiě)過(guò)部分必須被擦除以便成為沒(méi)有被寫(xiě)過(guò)的,并且其中用于讀或?qū)憯?shù)據(jù)的存儲(chǔ)器部分的規(guī)模不同于擦除的最小存儲(chǔ)器部分的規(guī)模,該方法包括步驟(a)提供該存儲(chǔ)器的若干個(gè)物理單元,每個(gè)所述物理單元都是擦除的最小存儲(chǔ)器部分的規(guī)模,每個(gè)所述物理單元都由一個(gè)物理單元號(hào)指定,而且每個(gè)所述物理單元都被分解為若干物理塊,每個(gè)所述物理塊都是用于讀或?qū)憯?shù)據(jù)的存儲(chǔ)器部分的規(guī)模,并且每個(gè)所述物理塊都由所述物理單元中的一個(gè)物理塊偏移指定;(b)提供該存儲(chǔ)器的若干個(gè)虛擬單元,每個(gè)虛擬單元都由一個(gè)虛擬單元號(hào)所指定,并且每個(gè)所述虛擬單元體現(xiàn)了若干個(gè)虛擬塊,每個(gè)所述虛擬塊由所述虛擬單元中的一個(gè)虛擬塊偏移指定;(c)將每個(gè)虛擬單元映射到至少一個(gè)物理單元,以形成一個(gè)虛擬映射圖;并且(d)根據(jù)所述虛擬映射圖,將所述虛擬單元中的每個(gè)虛擬塊映射到所述至少一個(gè)物理單元中的一個(gè)物理塊。
2.權(quán)利要求1的方法,進(jìn)一步包括步驟(e)改變?cè)摯鎯?chǔ)器的所述多個(gè)虛擬單元中至少一個(gè)與該存儲(chǔ)器的所述多個(gè)物理單元中的至少一個(gè)之間的對(duì)應(yīng)關(guān)系,從而修改所述虛擬映射圖以便反映該存儲(chǔ)器的一個(gè)變化。
3.權(quán)利要求1的方法,進(jìn)一步包括步驟(e)接收在某個(gè)虛擬塊上寫(xiě)入數(shù)據(jù)的寫(xiě)命令;(f)尋找包含所述虛擬塊的一個(gè)虛擬單元;(g)在被映射到所述虛擬單元的物理單元中尋找一個(gè)可寫(xiě)入的塊;并且(h)將所述數(shù)據(jù)寫(xiě)入所述可寫(xiě)入物理塊以形成一個(gè)被寫(xiě)過(guò)的物理單元。
4.權(quán)利要求3的方法,進(jìn)一步包括步驟(i)如果在所述被寫(xiě)過(guò)的物理單元中找不到一個(gè)沒(méi)有被寫(xiě)過(guò)的物理塊,則尋找第二個(gè)物理單元;(j)將所述數(shù)據(jù)寫(xiě)入所述第二個(gè)物理單元中的一個(gè)可寫(xiě)入物理塊;并且(k)通過(guò)另外將所述虛擬單元映射到所述第二個(gè)物理單元來(lái)更新所述虛擬映射圖,以使所述虛擬單元既對(duì)應(yīng)所述第二個(gè)物理單元,又對(duì)應(yīng)所述寫(xiě)過(guò)的物理單元,所述第二個(gè)物理單元和所述被寫(xiě)過(guò)的物理單元形成一個(gè)物理單元鏈。
5.權(quán)利要求4的方法,其中所述第二個(gè)物理單元的所述可寫(xiě)入物理塊有一個(gè)物理塊偏移,并且所述物理塊偏移對(duì)應(yīng)所述被映射的虛擬單元的所述虛擬塊偏移。
6.權(quán)利要求4的方法,其中所述第二個(gè)物理單元的所述可寫(xiě)入物理塊具有一個(gè)物理塊偏移,并且所述物理塊偏移不同于所述被映射的虛擬單元的所述虛擬塊偏移。
7.權(quán)利要求4的方法,進(jìn)一步包括步驟(1)如果在任何物理單元中找不到一個(gè)沒(méi)有被寫(xiě)過(guò)的物理塊,則尋找對(duì)應(yīng)某個(gè)鏈中多個(gè)物理單元的第二個(gè)虛擬單元;(m)尋找所述鏈中的所述最后物理單元;(n)將數(shù)據(jù)從所述被寫(xiě)過(guò)的物理單元的每個(gè)所述物理塊中移動(dòng)到所述最后物理單元的一個(gè)可寫(xiě)入物理塊中,所述可寫(xiě)入物理塊具有與所述被寫(xiě)過(guò)物理單元的所述物理塊相同的塊偏移;并且(o)通過(guò)將所述虛擬單元映射到所述最后物理單元來(lái)更新所述虛擬映射圖,以使所述虛擬單元只對(duì)應(yīng)所述最后物理單元。
8.權(quán)利要求7的方法,進(jìn)一步包括步驟(p)除所述最后物理單元外,擦除所述鏈中所有所述被寫(xiě)過(guò)物理單元。
9.權(quán)利要求4的方法,進(jìn)一步包括步驟(1)如果在所述鏈上找不到可分配的沒(méi)有寫(xiě)過(guò)的物理單元,則分配一個(gè)沒(méi)有被寫(xiě)過(guò)的物理單元以便重新組織;(m)將數(shù)據(jù)從所述被寫(xiě)過(guò)物理單元的每個(gè)所述物理塊中移動(dòng)到所述沒(méi)有被寫(xiě)過(guò)的物理單元的一個(gè)可寫(xiě)入物理塊中,并且(n)通過(guò)將所述虛擬單元映射到所述沒(méi)有被寫(xiě)過(guò)的物理單元以更新所述虛擬映射圖,以使所述虛擬單元只對(duì)應(yīng)所述沒(méi)有被寫(xiě)過(guò)的物理單元。
10.一種存儲(chǔ)器組織方法,在該存儲(chǔ)器中數(shù)據(jù)只能被寫(xiě)入存儲(chǔ)器中還沒(méi)有被寫(xiě)過(guò)的部分,這樣,該存儲(chǔ)器的被寫(xiě)過(guò)部分必須被擦除以便成為沒(méi)有被寫(xiě)過(guò)的,并且其中用于讀或?qū)憯?shù)據(jù)的存儲(chǔ)器部分的規(guī)模不同于擦除的最小存儲(chǔ)器部分的規(guī)模,該方法包括步驟(a)提供該存儲(chǔ)器的若干個(gè)物理單元,所述每個(gè)物理單元都是擦除的最小存儲(chǔ)器部分,每個(gè)所述物理單元都由一個(gè)物理單元號(hào)指定,而且每個(gè)所述物理單元都被分解為若干物理塊,每個(gè)所述物理塊都是用于讀或?qū)憯?shù)據(jù)的存儲(chǔ)器部分,并且每個(gè)所述物理塊都由所述物理單元中的一個(gè)物理塊偏移指定;(b)提供該存儲(chǔ)器的若干個(gè)虛擬單元,每個(gè)虛擬單元都由一個(gè)虛擬單元號(hào)所指定,并且每個(gè)所述虛擬單元體現(xiàn)了若干個(gè)虛擬塊,每個(gè)所述虛擬塊由所述虛擬單元中的一個(gè)虛擬塊偏移指定;(c)提供一個(gè)虛擬映射圖,用于將每個(gè)虛擬單元映射到至少一個(gè)物理單元;并且(d)將所述虛擬單元中的每個(gè)虛擬塊映射到所述至少一個(gè)物理單元中的一個(gè)物理塊。
(e)接收在某個(gè)虛擬塊上寫(xiě)入數(shù)據(jù)的寫(xiě)命令;(f)尋找包含所述虛擬塊的一個(gè)虛擬單元;(g)在被映射到所述虛擬單元的物理單元中尋找一個(gè)可寫(xiě)入的塊;(h)將所述數(shù)據(jù)寫(xiě)入所述可寫(xiě)入物理塊。
(i)如果在一個(gè)寫(xiě)過(guò)的物理單元中找不到?jīng)]有被寫(xiě)過(guò)的物理塊,則分配一個(gè)沒(méi)有被寫(xiě)過(guò)的物理單元來(lái)形成一條物理單元鏈,以使所述沒(méi)有被寫(xiě)過(guò)的物理單元成為所述鏈中的最后一個(gè)物理單元;(j)將所述數(shù)據(jù)寫(xiě)入所述最后物理單元中的一個(gè)沒(méi)有被寫(xiě)過(guò)的物理塊;(k)除了在步驟(j)中被寫(xiě)入的數(shù)據(jù)外將數(shù)據(jù)從每個(gè)所述物理塊移到所述最后物理單元的一個(gè)可寫(xiě)入物理塊中;并且(l)將所述虛擬單元映射到所述寫(xiě)過(guò)的物理單元以使所述虛擬單元就對(duì)應(yīng)所述寫(xiě)過(guò)的物理單元,從而更新所述虛擬映射圖。
11.一種存儲(chǔ)器數(shù)據(jù)寫(xiě)入方法,其中數(shù)據(jù)只能被寫(xiě)入存儲(chǔ)器的某個(gè)沒(méi)有被寫(xiě)過(guò)的部分,這樣,存儲(chǔ)器的被寫(xiě)過(guò)部分就必須被擦除以便成為沒(méi)有被寫(xiě)過(guò)的,該方法包括步驟(a)提供若干個(gè)物理單元,而且每個(gè)物理單元又被分成若干個(gè)物理塊,每個(gè)所述物理單元具有一個(gè)物理單元號(hào)并且每個(gè)所述物理塊有一個(gè)在所述物理單元內(nèi)的物理塊偏移;(b)提供若干個(gè)虛擬單元,而每個(gè)虛擬單元又被分成若干個(gè)虛擬塊,每個(gè)所述虛擬單元有一個(gè)虛擬單元號(hào)并且每個(gè)所述虛擬塊有一個(gè)在所述虛擬單元內(nèi)的虛擬塊偏移,每個(gè)虛擬單元被映射到至少一個(gè)物理單元上;(c)接收在某個(gè)虛擬塊上寫(xiě)入數(shù)據(jù)的寫(xiě)命令;(d)確定包含帶有虛擬塊偏移的所述虛擬塊的一個(gè)虛擬單元;(e)尋找對(duì)應(yīng)所述虛擬單元的一個(gè)物理單元;(f)在所述物理單元內(nèi)尋找一個(gè)物理塊;(g)判定所述物理塊是否沒(méi)有被寫(xiě)過(guò);(h)僅當(dāng)所述物理塊沒(méi)有被寫(xiě)過(guò)時(shí),將所述數(shù)據(jù)寫(xiě)入所述物理塊;(i)反之,如果所述物理塊已經(jīng)被寫(xiě)過(guò),分配第二個(gè)物理單元;(j)在所述第二個(gè)物理單元中尋找一個(gè)可寫(xiě)入的物理塊,所述可寫(xiě)入的物理塊具有物理塊偏移;(k)將所述數(shù)據(jù)寫(xiě)入所述可寫(xiě)入的物理塊中;(l)另外將所述虛擬單元映射到包含所述可寫(xiě)入物理塊的所述第二物理單元,這樣所述虛擬單元被另外映射到所述第二個(gè)物理單元,以便形成一個(gè)物理單元鏈。
(m)如果在寫(xiě)過(guò)的物理單元中找不到?jīng)]有被寫(xiě)過(guò)的物理塊,則尋找對(duì)應(yīng)鏈中若干個(gè)物理單元的第二個(gè)虛擬單元;(n)尋找所述鏈中的最后一個(gè)物理單元;(o)將所述寫(xiě)過(guò)的物理單元的所述物理塊中的所有數(shù)據(jù)傳送到所述最后物理單元的所述物理塊中;并且(p)更新所述虛擬映射圖,使得所述虛擬單元只對(duì)應(yīng)所述最后物理單元。
12.權(quán)利要求11的方法,其中所述可寫(xiě)入物理塊的所述物理塊偏移具有與所述虛擬塊偏移相同的塊偏移號(hào)。
13.權(quán)利要求11的方法,進(jìn)一步包括步驟(q)擦除所有的所述寫(xiě)過(guò)物理單元。
14.一種存儲(chǔ)器數(shù)據(jù)寫(xiě)入方法,其中數(shù)據(jù)只能被寫(xiě)入存儲(chǔ)器的某個(gè)沒(méi)有被寫(xiě)過(guò)的部分,這樣,存儲(chǔ)器的被寫(xiě)過(guò)部分就必須被擦除以便成為沒(méi)有被寫(xiě)過(guò)的,該方法包括步驟(a)提供若干個(gè)物理單元,而且每個(gè)物理單元又被分成若干個(gè)物理塊,每個(gè)所述物理單元具有一個(gè)物理單元號(hào)并且每個(gè)所述物理塊有一個(gè)在所述物理單元內(nèi)的物理塊偏移;(b)提供若干個(gè)虛擬單元,而每個(gè)虛擬單元又被分成若干個(gè)虛擬塊,每個(gè)所述虛擬單元有一個(gè)虛擬單元號(hào)并且每個(gè)所述虛擬決也有一個(gè)在所述虛擬單元內(nèi)的虛擬塊偏移,每個(gè)虛擬單元被映射到至少一個(gè)物理單元上;(c)接收在某個(gè)虛擬塊上寫(xiě)入數(shù)據(jù)的寫(xiě)命令;(d)確定包含帶有虛擬塊偏移的所述虛擬塊的一個(gè)虛擬單元;(e)尋找對(duì)應(yīng)該虛擬單元的一個(gè)物理單元;(f)在所述物理單元內(nèi)尋找一個(gè)物理塊;(g)判定所述物理塊是否沒(méi)有被寫(xiě)過(guò);(h)僅當(dāng)所述物理塊沒(méi)有被寫(xiě)過(guò)時(shí),將所述數(shù)據(jù)寫(xiě)入所述物理塊;(i)反之,如果所述物理塊已經(jīng)被寫(xiě)過(guò),分配第二個(gè)物理單元;
(j)在所述第二個(gè)物理單元中尋找一個(gè)可寫(xiě)入的物理塊,所述可寫(xiě)入的物理塊具有物理塊偏移;(k)將所述數(shù)據(jù)寫(xiě)入所述可寫(xiě)入的物理塊中;并且(1)另外將所述虛擬單元映射到包含所述可寫(xiě)入物理塊的所述第二物理單元,以使所述虛擬單元被另外映射到所述第二個(gè)物理單元,以便形成一個(gè)物理單元鏈。
(m)如果沒(méi)有可供分配的被寫(xiě)過(guò)的物理單元,則尋找所述鏈中的最后一個(gè)物理單元;(n)將所述寫(xiě)過(guò)物理單元的所述物理塊中的所有數(shù)據(jù)都傳送到所述最后物理單元的所述物理塊中;并且(o)更新所述虛擬映射圖以使所述虛擬單元只對(duì)應(yīng)所述最后物理單元。
15.權(quán)利要求14的方法,進(jìn)一步包括步驟(p)除了所述最后物理單元之外,擦除所有的所述寫(xiě)過(guò)物理單元。
16.一種存儲(chǔ)器組織方法,在該存儲(chǔ)器中數(shù)據(jù)只能被寫(xiě)入還沒(méi)有被寫(xiě)過(guò)的部分,這樣,該存儲(chǔ)器的被寫(xiě)過(guò)部分必須被擦除以便成為沒(méi)有被寫(xiě)過(guò)的,并且其中用于讀或?qū)憯?shù)據(jù)的存儲(chǔ)器部分的規(guī)模不同于擦除的最小存儲(chǔ)器部分的規(guī)模,該方法包括步驟(a)提供該存儲(chǔ)器的若干個(gè)物理單元,所述物理單元中的每個(gè)都是擦除的最小存儲(chǔ)器部分的規(guī)模,每個(gè)所述物理單元都由一個(gè)物理單元號(hào)指定,而且每個(gè)所述物理單元都被分解為若干物理塊,每個(gè)所述物理塊都是用于讀或?qū)憯?shù)據(jù)的存儲(chǔ)器部分的規(guī)模,并且每個(gè)所述物理塊都由所述物理單元中的一個(gè)物理塊偏移指定;(b)提供該存儲(chǔ)器的若干個(gè)虛擬單元,每個(gè)虛擬單元都由一個(gè)虛擬單元號(hào)所指定,并且每個(gè)所述虛擬單元體現(xiàn)了若干個(gè)虛擬塊,每個(gè)所述虛擬塊由所述虛擬單元中的一個(gè)虛擬塊偏移指定;(c)提供一個(gè)虛擬映射圖,用于將每個(gè)虛擬單元映射到至少一個(gè)物理單元;(d)將所述虛擬單元中的每個(gè)虛擬塊映射到所述至少一個(gè)物理單元中的一個(gè)物理塊。
(e)接收在某個(gè)虛擬塊上寫(xiě)入數(shù)據(jù)的寫(xiě)命令;(f)尋找包含所述虛擬塊的一個(gè)虛擬單元;(g)在被映射到所述虛擬單元的物理單元中尋找一個(gè)可寫(xiě)入的塊;(h)將所述數(shù)據(jù)寫(xiě)入所述可寫(xiě)入物理塊,形成一個(gè)被寫(xiě)過(guò)的物理單元;(i)如果在所述被寫(xiě)過(guò)的物理單元中找不到一個(gè)沒(méi)有被寫(xiě)過(guò)的物理塊,則尋找具有可寫(xiě)入物理塊的第二個(gè)物理單元;(j)將所述數(shù)據(jù)寫(xiě)入所述第二個(gè)物理單元中的所述可寫(xiě)入物理塊;(k)通過(guò)另外將所述虛擬單元映射到所述第二個(gè)物理單元來(lái)更新所述虛擬映射圖,這樣所述虛擬單元既對(duì)應(yīng)所述第二個(gè)物理單元,又對(duì)應(yīng)所述寫(xiě)過(guò)的物理單元,所述第二個(gè)物理單元和所述被寫(xiě)過(guò)的物理單元形成一個(gè)物理單元鏈。
(l)如果在任何物理單元中找不到一個(gè)沒(méi)有被寫(xiě)過(guò)的物理塊,則尋找對(duì)應(yīng)某個(gè)鏈中多個(gè)物理單元的第二個(gè)虛擬單元;(m)尋找所述鏈中的最后物理單元;(n)將數(shù)據(jù)從所述被寫(xiě)過(guò)的物理單元的每個(gè)所述物理塊中移動(dòng)到所述最后物理單元的一個(gè)可寫(xiě)入物理塊中,所述可寫(xiě)入物理塊事實(shí)上具有與所述被寫(xiě)過(guò)物理單元的所述物理塊相同的塊偏移;并且(o)通過(guò)將所述虛擬單元映射到所述最后物理單元來(lái)更新所述虛擬映射圖,這樣,所述虛擬單元只對(duì)應(yīng)所述最后物理單元。
權(quán)利要求
1.一種存儲(chǔ)器組織方法,在該存儲(chǔ)器中數(shù)據(jù)只能被寫(xiě)入還沒(méi)有被寫(xiě)過(guò)的存儲(chǔ)器部分,以使該存儲(chǔ)器的被寫(xiě)過(guò)部分必須被擦除以便成為沒(méi)有被寫(xiě)過(guò)的,并且其中用于讀或?qū)憯?shù)據(jù)的存儲(chǔ)器部分的規(guī)模不同于擦除的最小存儲(chǔ)器部分的規(guī)模,該方法包括步驟(a)提供該存儲(chǔ)器的若干個(gè)物理單元,所述物理單元中的每個(gè)都是擦除的最小存儲(chǔ)器部分,每個(gè)所述物理單元都由一個(gè)物理單元號(hào)指定,而且每個(gè)所述物理單元都被分解為若干物理塊,每個(gè)所述物理塊都是用于讀或?qū)憯?shù)據(jù)的存儲(chǔ)器部分,并且每個(gè)所述物理塊都由所述物理單元中的一個(gè)物理塊偏移指定;(b)提供該存儲(chǔ)器的若干個(gè)虛擬單元,每個(gè)虛擬單元都由一個(gè)虛擬單元號(hào)所指定,并且每個(gè)所述虛擬單元體現(xiàn)了若干個(gè)虛擬塊,每個(gè)所述虛擬塊由所述虛擬單元中的一個(gè)虛擬塊偏移指定;(c)提供一個(gè)虛擬映射圖,用于將每個(gè)虛擬單元映射到至少一個(gè)物理單元;并且(d)將所述虛擬單元中的每個(gè)虛擬塊映射到所述至少一個(gè)物理單元中的一個(gè)物理塊。
2.權(quán)利要求1的方法,進(jìn)一步包括步驟(e)接收在某個(gè)虛擬塊上寫(xiě)入數(shù)據(jù)的寫(xiě)命令;(f)尋找包含所述虛擬塊的一個(gè)虛擬單元;(g)在被映射到所述虛擬單元的物理單元中尋找一個(gè)可寫(xiě)入的塊;并且(h)將所述數(shù)據(jù)寫(xiě)入所述可寫(xiě)入物理塊。
3.權(quán)利要求2的方法,進(jìn)一步包括步驟(i)如果在一個(gè)被寫(xiě)過(guò)的物理單元中找不到一個(gè)沒(méi)有被寫(xiě)過(guò)的物理塊,則尋找一個(gè)沒(méi)有被寫(xiě)過(guò)的物理單元;(j)將所述數(shù)據(jù)寫(xiě)入所述沒(méi)有被寫(xiě)過(guò)的物理單元中的一個(gè)可寫(xiě)入物理塊;并且(k)通過(guò)另外將所述虛擬單元映射到所述沒(méi)有被寫(xiě)過(guò)的物理單元來(lái)更新所述虛擬映射圖,以使所述虛擬單元既對(duì)應(yīng)所述沒(méi)有被寫(xiě)過(guò)的物理單元,又對(duì)應(yīng)所述寫(xiě)過(guò)的物理單元,所述沒(méi)有被寫(xiě)過(guò)的物理單元和所述被寫(xiě)過(guò)的物理單元形成一個(gè)物理單元鏈。
4.權(quán)利要求3的方法,其中所述沒(méi)有寫(xiě)過(guò)的物理單元的所述可寫(xiě)入物理塊有一個(gè)物理塊偏移,并且所述物理塊偏移對(duì)應(yīng)所述被映射的虛擬單元的所述虛擬塊偏移。
5.權(quán)利要求3的方法,進(jìn)一步包括步驟(l)如果在某個(gè)寫(xiě)過(guò)的物理單元中找不到一個(gè)沒(méi)有被寫(xiě)過(guò)的物理塊,則尋找對(duì)應(yīng)某個(gè)鏈中多個(gè)物理單元的第二個(gè)虛擬單元;(m)尋找所述鏈中的所述最后物理單元;(n)將數(shù)據(jù)從所述被寫(xiě)過(guò)的物理單元的每個(gè)所述物理塊中移動(dòng)到所述最后物理單元的一個(gè)可寫(xiě)入物理塊中,所述可寫(xiě)入物理塊確實(shí)具有與所述被寫(xiě)過(guò)物理單元的所述物理塊相同的塊偏移;并且(o)通過(guò)將所述虛擬單元映射到所述最后物理單元來(lái)更新所述虛擬映射圖,以使所述虛擬單元實(shí)際上只對(duì)應(yīng)所述最后物理單元。
6.權(quán)利要求5的方法,進(jìn)一步包括步驟(p)除所述最后物理單元外,實(shí)際擦除所述鏈中所有所述被寫(xiě)過(guò)物理單元。
7.權(quán)利要求3的方法,進(jìn)一步包括步驟(l)如果在所述鏈上找不到可分配的沒(méi)有寫(xiě)過(guò)的物理單元,則分配一個(gè)沒(méi)有被寫(xiě)過(guò)的物理單元以便重新組織;(m)將數(shù)據(jù)從所述被寫(xiě)過(guò)物理單元的每個(gè)所述物理塊中移動(dòng)到所述沒(méi)有被寫(xiě)過(guò)的物理單元的一個(gè)可寫(xiě)入物理塊中,并且(n)通過(guò)將所述虛擬單元映射到所述沒(méi)有被寫(xiě)過(guò)的物理單元以更新所述虛擬映射圖,以使所述虛擬單元實(shí)際上只對(duì)應(yīng)所述沒(méi)有被寫(xiě)過(guò)的物理單元。
8.權(quán)利要求7的方法,進(jìn)一步包括步驟(o)擦除所有的所述被寫(xiě)過(guò)物理單元。
9.權(quán)利要求2的方法,進(jìn)一步包括步驟(i)如果在所述寫(xiě)過(guò)的物理單元中找不到?jīng)]有被寫(xiě)過(guò)的物理塊,則分配一個(gè)沒(méi)有被寫(xiě)過(guò)的物理單元來(lái)形成一條物理單元鏈,這樣,所述沒(méi)有被寫(xiě)過(guò)的物理單元就是所述鏈中的最后一個(gè)物理單元;(j)將所述數(shù)據(jù)寫(xiě)入所述最后物理單元中的一個(gè)沒(méi)有被寫(xiě)過(guò)的物理塊;(k)除了在步驟(j)中被寫(xiě)入的數(shù)據(jù)外將數(shù)據(jù)從每個(gè)所述物理塊移到所述沒(méi)有被寫(xiě)過(guò)的物理單元的一個(gè)可寫(xiě)入物理塊中;并且(m)更新所述虛擬映射圖,即將所述虛擬單元映射到所述寫(xiě)過(guò)的物理單元,以使所述虛擬單元對(duì)應(yīng)所述寫(xiě)過(guò)的物理單元。
10.一種存儲(chǔ)器數(shù)據(jù)寫(xiě)入方法,其中數(shù)據(jù)只能被寫(xiě)入存儲(chǔ)器的某個(gè)沒(méi)有被寫(xiě)過(guò)的部分,這樣,存儲(chǔ)器的被寫(xiě)過(guò)部分就必須被擦除以便成為沒(méi)有被寫(xiě)過(guò)的,該方法包括步驟(a)提供若干個(gè)物理單元,而且每個(gè)物理單元又被分成若干個(gè)物理塊,每個(gè)所述物理單元具有一個(gè)物理單元號(hào)并且每個(gè)所述物理塊有一個(gè)在所述物理單元內(nèi)的物理塊偏移;(b)提供若干個(gè)虛擬單元,而每個(gè)虛擬單元又被分成若干個(gè)虛擬塊,每個(gè)所述虛擬單元有一個(gè)虛擬單元號(hào)并且每個(gè)所述虛擬塊有一個(gè)在所述虛擬單元內(nèi)的虛擬塊偏移,每個(gè)虛擬單元被映射到至少一個(gè)物理單元上;(c)接收在某個(gè)虛擬塊上寫(xiě)入數(shù)據(jù)的寫(xiě)命令;(d)確定包含帶有虛擬塊偏移的所述虛擬塊的一個(gè)虛擬單元;(e)尋找對(duì)應(yīng)該虛擬單元的一個(gè)物理單元;(f)在所述物理單元內(nèi)尋找一個(gè)物理塊;(g)判定所述物理塊是否沒(méi)有被寫(xiě)過(guò);(h)僅當(dāng)所述物理塊沒(méi)有被寫(xiě)過(guò)時(shí),將所述數(shù)據(jù)寫(xiě)入所述物理塊;(i)反之,如果所述物理塊已經(jīng)被寫(xiě)過(guò),分配一個(gè)沒(méi)有被寫(xiě)過(guò)的物理單元;(i)在所述沒(méi)有被寫(xiě)過(guò)的物理單元中尋找一個(gè)可寫(xiě)入的物理塊,所述可寫(xiě)入的物理塊具有物理塊偏移;(k)將所述數(shù)據(jù)寫(xiě)入所述可寫(xiě)入的物理塊中;并且(l)另外將所述虛擬單元映射到包含所述可寫(xiě)入物理塊的所述沒(méi)有被寫(xiě)過(guò)的物理單元,這樣,所述虛擬單元被另外映射到所述沒(méi)有被寫(xiě)過(guò)的物理單元以便形成一個(gè)物理單元鏈。
11.權(quán)利要求10的方法,其中所述可寫(xiě)入物理塊的所述物理塊偏移具有與所述虛擬塊偏移相同的塊偏移號(hào)。
12.權(quán)利要求10的方法,進(jìn)一步包括步驟(m)如果在寫(xiě)過(guò)的物理單元中找不到?jīng)]有被寫(xiě)過(guò)的物理塊,則尋找對(duì)應(yīng)鏈中若干個(gè)物理單元的第二個(gè)虛擬單元;(n)尋找所述鏈中的最后物理單元;(o)將所述寫(xiě)過(guò)的物理單元的所述物理塊中的所有數(shù)據(jù)傳送到所述最后物理單元的所述物理塊中;并且(p)更新所述虛擬映射圖,使得所述虛擬單元只對(duì)應(yīng)所述最后物理單元。
13.權(quán)利要求12的方法,進(jìn)一步包括步驟(q)擦除所有的所述寫(xiě)過(guò)物理單元。14.權(quán)利要求10的方法進(jìn)一步包括步驟(l)如果沒(méi)有可供分配的被寫(xiě)過(guò)的物理單元,則尋找所述鏈中的最后一個(gè)物理單元;(m)將所述寫(xiě)過(guò)的物理單元的所述物理塊中的所有數(shù)據(jù)都傳送到所述最后物理單元的所述物理塊中;并且(n)更新所述虛擬映射圖,使得所述虛擬單元只對(duì)應(yīng)所述最后物理單元。
15.權(quán)利要求14的方法進(jìn)一步包括步驟(o)除了所述最后物理單元之外,實(shí)際擦除所有的所述寫(xiě)過(guò)物理單元。
全文摘要
一種閃速存儲(chǔ)器設(shè)備以及對(duì)該設(shè)備寫(xiě)入并且重新組織該設(shè)備的方法。該閃速存儲(chǔ)設(shè)備(20)包括物理設(shè)備(10)、虛擬設(shè)備(22)以及將虛擬設(shè)備的虛擬地址與物理設(shè)備的物理地址聯(lián)系起來(lái)的虛擬映射圖(24)。
文檔編號(hào)G06F12/02GK1281562SQ98810177
公開(kāi)日2001年1月24日 申請(qǐng)日期1998年10月5日 優(yōu)先權(quán)日1997年10月16日
發(fā)明者艾米爾·班 申請(qǐng)人:M-系統(tǒng)快閃盤(pán)開(kāi)拓者公司