專利名稱:閃速文件系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種改進的在閃速存儲器(flash memory)里存儲和檢索信息的系統(tǒng),更具體地涉及一種組織和管理寫入閃速存儲器的數(shù)據(jù)的系統(tǒng)。
正如本領(lǐng)域的一般技術(shù)人員所了解的那樣,由閃速型、浮柵晶體管組成的電可擦可編程只讀存儲器(EEPROM)已得到技術(shù)上的說明而且目前在商業(yè)上是可得到的。這些所謂的閃速存儲器是在功能上和性能上與EPROM存儲器相類似的非易失性存儲器,并具有額外的功能性即可允許電路內(nèi)、可編程操作來擦除存儲器塊。在閃速存儲器中在之前不先對該區(qū)域進行塊擦除而要對以前已寫過的存儲器區(qū)域進行重寫是不實際的。盡管本發(fā)明描述于閃速存儲器情況,但是本領(lǐng)域的一般技術(shù)人員可以理解該技術(shù)內(nèi)容同樣可應(yīng)用于那些具有類似于閃速存儲器的寫、讀和寫之前塊擦除特性的數(shù)據(jù)存儲部件。
在典型的計算機系統(tǒng)里,操作系統(tǒng)程序負責(zé)對作為系統(tǒng)一部分的數(shù)據(jù)存儲部件的數(shù)據(jù)管理。數(shù)據(jù)存儲部件能和操作系統(tǒng)程序相容的一個必要的、通常是充分的特性是它能對數(shù)據(jù)存儲媒體的任何位置讀出數(shù)據(jù)和寫入數(shù)據(jù)。這樣,閃速存儲器和典型的現(xiàn)存操作系統(tǒng)程序是不相容的,因為數(shù)據(jù)不能寫到閃速存儲器那些先前已被寫進過數(shù)據(jù)的區(qū)域,除非這些區(qū)域首先被擦除。
現(xiàn)在技術(shù)中已提出用軟件產(chǎn)品在不必修改現(xiàn)有的操作系統(tǒng)程序下允許現(xiàn)有的計算機操作程序來管理閃速存儲器。但是,這些現(xiàn)有技術(shù)的程序把閃速存儲器作為“寫一次讀多次”的部件來運行?,F(xiàn)有技術(shù)的軟件產(chǎn)品不能夠重復(fù)利用以前已寫過的位置。當(dāng)所有的位置最終寫完后如果沒有特定的用戶干預(yù)存儲器不能得到進一步的使用。
本發(fā)明的目的是提供一種控制和管理閃速存儲器存取的方法(軟件,硬件的固件),使得對計算機操作系統(tǒng)而言閃速存儲器好象是一個數(shù)據(jù)存儲部件,因而有可能對閃速存儲器的任何單元讀出數(shù)據(jù)和寫進數(shù)據(jù)。一種允許閃速存儲器仿真隨機存取存儲器和允許現(xiàn)有計算機操作系統(tǒng)提供所有其它所需支持的方法,這種支持和標(biāo)準隨機存取存儲器提供的支持具有相同的方式并和仿真方法無關(guān)。
簡言之,本發(fā)明設(shè)想提供一種閃速存儲器,虛擬變換系統(tǒng),它允許數(shù)據(jù)被連續(xù)讀寫進空白的物理地址單元。虛擬存儲變換和閃速存儲器物理單元地址相關(guān)以跟蹤存儲器里數(shù)據(jù)的位置。
閃速存儲器的物理位置組織為字節(jié)陣列。陣列里的各個字節(jié)被分配若干地址(anumber of),用這個方法該字節(jié)是物理上可存取的,本文中稱之為物理地址空間。陣列中的各個字節(jié)具有第二個地址,稱為虛擬地址空間。一個稱為虛擬變換的表把虛擬地址轉(zhuǎn)換為物理地址。在這里須注意,虛擬地址空間不必具有和物理地址空間相同的規(guī)模。
相連的、固定長度的物理字節(jié)地址組形成塊。例如,假設(shè)塊的長度為512個字節(jié),具有物理地址256211的字節(jié)是塊500中的211號字節(jié)(256211∶512=500+211)。一個或多個物理上相連的閃速存儲器區(qū)域(稱為區(qū))組成單元,該區(qū)域可用適當(dāng)?shù)默F(xiàn)有閃速存儲器技術(shù)物理地擦除每個單元包含整數(shù)的塊。
虛擬存儲變換是一個表,其中第一項目屬于虛擬塊0,第二個項目屬于虛擬塊1,依此類推。有一相應(yīng)的物理地址和表中各個虛擬塊地址相關(guān)聯(lián)。在讀閃速存儲器的操作中,計算機生成的地址譯碼為虛擬塊地址和該塊中的字節(jié)位置。虛擬存儲變換用來把虛擬塊地址轉(zhuǎn)換為物理塊地址;在虛擬地址空間和物理地址空間中字節(jié)的位置相同。
在寫操作中,計算機生成的地址再次解釋為虛擬塊地址和塊中的字節(jié)位置。虛擬存儲變換把它轉(zhuǎn)換成物理存儲器塊地址。如果對應(yīng)于該物理地址的閃速存儲器塊當(dāng)前已被寫過,則通常不可能對該物理地址進行寫。一個空白的塊則被定位并被寫入。虛擬存儲變換被改變,使得空白的物理塊地址變換給原來的虛擬地址,而原來的物理地址標(biāo)志為不可使用的并保持為不可使用,直到區(qū)擦除操作擦除包含該塊的單元為止。要注意寫操作假設(shè)整個塊可被重寫。這是計算機系統(tǒng)通常在存儲媒體中存取數(shù)據(jù)的方式。但是,將會理解通常任何所需數(shù)據(jù)數(shù)量的字節(jié)可被寫進新的存儲位置。
本發(fā)明的最佳實施例中,對各個單元分配了一個邏輯單元地址,該邏輯單元地址在該單元被重寫到閃速存儲器的新的物理地址位置時保持不變。虛擬變換包含對邏輯單元地址的參考而不是對物理單元地址的參考,這樣單元轉(zhuǎn)換期間的數(shù)據(jù)移動不會影響虛擬變換。
各個單元具有使用圖,它包括該單元的所有的塊,塊的虛擬地址,如果它(單元)被變換,還包括標(biāo)志自由塊和標(biāo)志不可使用塊的特定字符。
通過把包括不可使用塊的存儲器單元轉(zhuǎn)換到閃速存儲器的保留空白空間,以前寫過的閃速存儲器的不可使用塊被回收。只有可使用塊在轉(zhuǎn)換操作中被寫入,這樣,當(dāng)重寫時,不可使用塊的位置不被重寫到保留空間,進而成為可使用的。在重寫之后,原來的存儲器單元空間被閃速擦除為一個單元并且變?yōu)榭瞻妆A艨臻g對它可進行后續(xù)的轉(zhuǎn)換。
此外,在本發(fā)明的最佳實施例中,虛擬變換主要是存儲在閃速存儲器里只有少量的次要虛擬變換存儲在隨機存取存儲器里。閃速存儲器的虛擬變換存儲在塊中并按頁面組織,頁面的長度等于塊中字節(jié)數(shù)量乘以字節(jié)所代表的物理塊地址數(shù)量的乘積。次要的隨機存取存儲器包含頁面地址。當(dāng)對一給定的虛擬地址讀數(shù)據(jù)時,通過地址被頁面長度除來確定頁面號。該結(jié)果索引次要的虛擬變換來尋找正確的主要虛擬變換塊。余數(shù)被存儲在閃速存儲器里的虛擬變換用來計算所需的物理地址。為改變閃速存儲器里的虛擬變換,改變后的變換寫入到自由塊并且隨機存取存儲器的次要交換也被改變以反映主要變換位置里的變化,被替換的塊被標(biāo)記為刪除。
通過下述對本發(fā)明最佳實施例的說明并參照附圖可對上述的和其它的目的、概念和優(yōu)點得到更好的理解,附圖為
圖1是一個方塊圖,說明按照本發(fā)明技術(shù)內(nèi)容的一個系統(tǒng)實施例中系統(tǒng)的功能部件。
圖2是按照本發(fā)明的技術(shù)內(nèi)容的閃速存儲器組織的一層圖示。
圖3圖示一個單元是如何格式的。
圖4圖示說明計算機產(chǎn)生的地址是怎樣變換為物理地址的。
圖5是說明讀操作的流程圖。
圖6是說明寫操作的流程圖。
圖7圖示說明在轉(zhuǎn)移操作之前和之后的一個單元的狀態(tài)。
圖8為轉(zhuǎn)移操作的流程圖。
圖9為一個流程圖,說明把虛擬對物理變換的主要部分存入閃速存儲器的操作。
現(xiàn)參照附圖1,在一個典型的系統(tǒng)里,處理器10結(jié)合其操作系統(tǒng)軟件發(fā)出一系列讀和寫命令,對隨機存取存儲器的特定地址單元讀寫數(shù)據(jù)。如本領(lǐng)域的一般技術(shù)人員所理解的那樣,在隨機存取存儲器部件里,諸如磁盤存儲器,數(shù)據(jù)可被寫或讀到任何地址單元。在圖1的系統(tǒng)里,處理器10對閃速存儲器12中的特定地址單元按塊寫入數(shù)據(jù)和讀出數(shù)據(jù)。盡管閃速存儲器12的區(qū)可被擦除,但是當(dāng)前已寫地址單元不能被重寫,除非整個區(qū)被擦除。根據(jù)本發(fā)明的技術(shù)內(nèi)容,閃速存儲器控制器14提供一個完整的可重寫虛擬地址空間,這樣閃速存儲器仿真為一個隨機存取存儲器,如磁盤存儲器,并且處理器操作系統(tǒng)軟件按照它對標(biāo)準隨機存取存儲器提供運行支持的相同方式和按照一種和閃速存儲器12和其控制器14無關(guān)的方式提供所有其它必需的運行支持(例如文件系統(tǒng))。典型的系統(tǒng)還包括一個常規(guī)的隨機存取存儲器16??梢岳斫饪刂破?4的功能由軟件、硬件的固件來實現(xiàn),這就不再需要如圖中所建議的那樣存在一個物理上的分離裝置。
現(xiàn)看圖2,它部分地表示閃速存儲器的組織。閃速存儲器具有若干區(qū),在這里標(biāo)號為區(qū)A和區(qū)B等。每個區(qū)由許多相連的物理存儲位置所組成,它們可利用常規(guī)的、周知的閃速存儲器技術(shù)來進行塊擦除。區(qū)組織為單元,圖中只顯示了4個單元,標(biāo)號為1號單元、6號單元,單元N-1和轉(zhuǎn)移單元。每個單元至少由多個連相區(qū)中的一個區(qū)組成。如在這里所圖示的,每個單元由2個區(qū)組成(即,1號單元-區(qū)A和區(qū)B;2號單元-區(qū)C和區(qū)D;轉(zhuǎn)移單元-區(qū)sy和區(qū)zy)。
每個單元由整數(shù)個可尋址塊組成并且每個塊本身又由相連的固定長度字節(jié)組所組成。在所有的時候,在存儲器12里總有一個單元是空白的(即轉(zhuǎn)移單元),這樣在擦除一個單元之前可把該要擦除單元中的有效塊寫進到該空白單元中。
現(xiàn)有圖3,每個單元含有整數(shù)的相連數(shù)據(jù)塊21,塊反過來又由相連的字節(jié)地址組成,字節(jié)地址可編址為塊號和在塊中的偏移。單元里的各個塊可編址為塊號和在單元中的偏移。每個單元具有一個單元標(biāo)題23及單元里各塊的分配狀態(tài)圖25。單元標(biāo)題23包括格式標(biāo)識符和單元的邏輯單元號。因為數(shù)據(jù)在單元轉(zhuǎn)移期間必須物理地運動,即使單元的物理位置在閃速存儲器中發(fā)生變化單元號最好保持不變。另外,標(biāo)題還可包括系統(tǒng)范圍的信息。塊分配圖25對每個塊具有一個字,它標(biāo)記塊的狀態(tài)和塊在單元里的偏移。狀態(tài)指示為“塊自由和可寫”,“塊刪除和不可寫”,“塊分配和含有用戶數(shù)據(jù)”以及塊的虛擬地址(背面指針)。
如前所述,最好每個單元被分配一個不變的邏輯單元號,即使單元在存儲器里的物理位置改變了該邏輯單元號也不變。如圖4所示,計算機10生成地址29由塊號和塊偏移組成。這些地址被閃速控制器14解釋為虛擬地址,而虛擬變換用來建立虛擬地址空間和物理地址空間之間的對應(yīng)。當(dāng)塊重寫時虛擬變換改變這樣虛擬地址空間是動態(tài)的。還要注意,在任何給定時刻,虛擬地址空間的一個塊或多個塊可能不映射到物理地址空間,在物理地址空間里的塊可能是空白的,因而可被自由寫入。
因為在單元轉(zhuǎn)移到空白單元空間期間數(shù)據(jù)物理上移動,單元分配有邏輯單元號,當(dāng)單元在存儲器的物理位置變化時邏輯單元號不變。虛擬變換31在二級地址轉(zhuǎn)換的第一步中把塊號變換為邏輯單元地址。邏輯單元地址是一個和邏輯單元號相關(guān)的地址,類似于物理地址,物理地址是和物理單元號相關(guān)的一個地址。邏輯單元號是邏輯地址的高位二進制數(shù)字,并且可通過位移位操作從邏輯地址中導(dǎo)出。從變換31中得到的邏輯地址33包括邏輯單元號和在單元中塊的偏移。
邏輯單元表35把邏輯單元號翻譯為邏輯單元的物理單元號。雙步地址轉(zhuǎn)換過程消除了當(dāng)一個單元移動到新的物理位置時改變塊地址的要求。
在讀操作中由塊地址組成的虛擬地址,例如,最初被變換為邏輯單元號和尋址塊中在這單元里的塊偏移。圖35把單元號33變換為單元的物理地址37以及該尋址塊在該單元里的偏移37,這樣該尋址數(shù)據(jù)塊從這物理位置讀出。這里假定以塊為單位的數(shù)據(jù)讀出和寫仿佛典型上就是這樣做的。當(dāng)然,如果需要以字節(jié)為單位的數(shù)據(jù)讀和寫可采用相同的原則。圖5是一個流程圖,說明該讀操作。如前面所解釋的,虛擬地址29在雙步地址變換的第一步中變換為邏輯地址(塊40)。在第二步中,邏輯地址變換為閃速存儲器里的物理地址(塊41)。在該物理地址上的數(shù)據(jù)被讀(塊42),然后結(jié)束該操作。
在寫操作中,虛擬地址29再次首先變換為邏輯單元號和在該單元中的塊偏移??刂破?4算法為該單元檢查塊分配表25。如果對應(yīng)于該地址的塊已被寫入,則寫命令不能在該對應(yīng)的物理位置上執(zhí)行。控制算法掃描分配表25的各個單元,直到一個自由塊被定位為止。塊圖25中原來單元地址上的塊的狀態(tài)被改變以在分配表中刪除這個塊,而自由塊的狀態(tài)改變?yōu)橐褜?。虛擬變換31被更新,以使原來的虛擬地址現(xiàn)在指向?qū)懖僮靼l(fā)生處的新邏輯地址。按前面所描述的方式,該邏輯地址變換為物理地址,對這個地址進行塊寫入。圖6是說明寫操作的流程圖。在寫操作中虛擬地址29變換為邏輯單元地址(塊45),并對該單元的單元分配進行檢查(塊46)。如果在判定塊47里該單元地址是自由的,則該單元地址變換為物理地址(塊48),數(shù)據(jù)寫進該物理地址(塊49),然后操作結(jié)束。如果邏輯地址是不自由的(塊47),則單元表被掃描以定位單元分配表中的自由地址(塊50)。該新邏輯地址變換為物理地址(塊51),數(shù)據(jù)被寫入這個物理地址(塊52)。單元分配表被更新(塊53),以表明原來的塊被刪除并是不可寫的,而且新的塊被分配并含有用戶數(shù)據(jù)。虛擬對邏輯地址的變換也被更新,以指向與原來虛擬地址相對應(yīng)的數(shù)據(jù)的新的物理地址(塊54和塊55)。
為允許讀和寫操作可不受限制連續(xù)進行,物理存儲空間周期性地回收。如前面所述,在所有時刻至少一個存儲器單元是保留的,這樣它完整地組成一個自由塊并且用作為轉(zhuǎn)換單元。
現(xiàn)有圖7,一個有效單元被選擇(這里是單元M),而且它的所有當(dāng)前映射有效塊被讀并被寫入轉(zhuǎn)換單元。選定的單元M然后進行塊擦除,并且它變成轉(zhuǎn)換單元,同時有效塊寫入的轉(zhuǎn)換單元在本例中變成單元M。圖7說明這些單元在轉(zhuǎn)換操作之前和之后的狀態(tài)。圖8是轉(zhuǎn)換操作的流程圖。在轉(zhuǎn)換操作中一個單元被選擇以供轉(zhuǎn)換(塊60),該選定單元的有效數(shù)據(jù)塊被讀(塊61)。這些有效數(shù)據(jù)塊然后被寫進轉(zhuǎn)換塊中與原來塊中位置相對應(yīng)的位置上(塊62)。所選擇的原來塊然后被閃速擦除(塊63),并且邏輯對物理地址的變換被改變使得選定的單元變?yōu)檗D(zhuǎn)換單元并且把選定單元的單元號分配給轉(zhuǎn)換單元(塊64)。
迄今所描述的系統(tǒng)需要一個內(nèi)容可自由更新的虛擬變換圖,這個圖可存儲在常規(guī)的隨機存取存儲器里。但是,作為例子,假設(shè)塊的長度為512字節(jié),因為虛擬圖含有各塊的一條項目,而各條項目可能為例如4字節(jié)長(即可編址可達4GB存儲器),一個80兆字節(jié)的閃速存儲器將需640K字節(jié)的存儲器來存儲變換表。為了減少存貯虛擬變換所需的隨機存取存儲器的總量,在本發(fā)明的最佳實施例中,該變換數(shù)據(jù)的主要部分存儲在閃速存儲器的本身里,而把計算機的虛擬地址映射為主要虛擬變換的次要虛擬變換被存儲在隨機存取存儲器里,比如存儲器16。這里要提出一個重要的觀點,即次要虛擬變換的排列使得讀和寫虛擬變換的過程和前面敘述的讀和寫常規(guī)數(shù)據(jù)的過程是相同的。對虛擬變換自身的處理等同于上述的對用戶數(shù)據(jù)的處理方式,并且存儲在隨機存取存儲器里的虛擬變換(即次要虛擬變換)等同于前面所描述的虛擬變換。
在本實施例中,虛擬變換在閃速存儲器12里的負虛擬地址里駐留;常規(guī)空間從虛擬地址零開始。虛擬變換映射它自身使用的負地址,這樣駐留在閃速存儲器的虛擬變換可象常規(guī)用戶數(shù)據(jù)一樣被讀和被寫,只有虛擬變換中映射它本身的那一部分(即次要虛擬變換)駐留在隨機存取存儲器里。
在一簡化的例子里,假設(shè)6000字節(jié)的虛擬變換存儲在12個虛擬變換塊里,每塊512字節(jié)。假設(shè)為4字節(jié)地址,每個塊可存儲128個物理地址。這樣,每個塊包含64K字節(jié)虛擬閃速存儲器地址。各個虛擬閃速存儲器地址塊被認為是一個頁面,而隨機存取存儲器存儲頁面地址,(本例中,只有48字節(jié)),這些頁面地址映身地址塊。當(dāng)從一給定虛擬地址讀數(shù)據(jù)時,該地址除以頁面長度(64K字節(jié))以得到次要虛擬存儲器里的頁面號,該頁面號和主要虛擬變換里存儲該地址的頁面塊相映射。利用該虛擬存儲器頁面塊,映身絕對閃速存儲器物理地址的過程可按已說明的方式進行。作為例子,當(dāng)虛擬地址除以頁面長度后,余數(shù)可除以虛擬存儲塊長度(即512)以得到從閃速存儲器讀出的對地址陣列的索引。
當(dāng)按給定虛擬地址寫數(shù)據(jù)時,計算機生成的地址同樣除以頁面長度以獲得閃速存儲器里對次要虛擬變換的索引。次要虛擬變換映射到主要虛擬變換,在那里主要虛擬變換塊被讀;這是用來映射到被尋址的物理塊,在那里進行讀。如果該塊不能被重寫,一個空白塊被識別并按前面敘述的方式寫入,同時原來的數(shù)據(jù)塊標(biāo)記為刪除。為更新駐留于閃速存儲器里的虛擬變換,本質(zhì)上仿照同樣的過程。虛擬變換塊,其修改形式反映地址數(shù)據(jù)新的物理位置,被寫入到閃速存儲器的空白塊并且舊塊被標(biāo)記為刪除。如需要,在隨機存取存儲器里的次要虛擬存儲也被改變以反映主要虛擬存儲塊位置的變化。
圖9是該操作的流程圖。該進程的第一步是把虛擬地址轉(zhuǎn)換為頁面號(塊70),并利用這個頁面號來定位RAM16中與存儲在閃速存儲器里的虛擬變換相關(guān)頁面塊對應(yīng)的地址(塊71)。從閃速存儲器讀出該地址的虛擬變換頁面塊(塊72)并采用前面已描述通過的方法為數(shù)據(jù)讀或數(shù)據(jù)寫操作的虛擬地址定位對應(yīng)的物理地址。在數(shù)據(jù)寫操作中,虛擬變換頁面塊必須更新(塊73)并且更新的頁面塊虛擬變換被寫入自由的閃速存儲器物理地址位置(塊74),曾定位用于頁面塊變換的原來的閃速存儲器地址被標(biāo)記為刪除(塊75),而RAM存儲器16被更新,以為更新過的變換指出虛擬對物理的變換地址(塊76)。
系統(tǒng)啟動時很容易重建虛擬變換。駐留在閃速存儲器里的虛擬變換是非易失性的,不必重建。駐留在易失性隨機存取存儲器里的次要虛擬變換在啟動時可通過掃描駐留在各單元頂部的塊使用圖進行重建。標(biāo)記為和虛擬地址相映射的塊被識別,因此可相應(yīng)地構(gòu)建次要虛擬變換。
盡管本發(fā)明是按單個最佳實施例來說明的,本領(lǐng)域的一般技術(shù)人員可認識到本發(fā)明可按所附權(quán)利要求書中所敘述的精神和范圍修改實施。
權(quán)利要求
1.一種用于數(shù)據(jù)只能寫入空白物理存儲單元及相連存儲單元區(qū)可同時擦除存儲器上的存儲管理方法,包括以下步驟把存儲器組織成多個單元,各個單元至少包括一個區(qū);把各個單元組織成多個塊,各個所述塊包括多個相連物理存儲單元;為各個單元建立分配表其指示單元中各塊的狀態(tài)如有效寫入,空白或刪除;建立一個表以把虛擬地址變換為單元里的物理地址;當(dāng)按虛擬地址向所述存儲器寫數(shù)據(jù)時(a)把所述虛擬地址變換為單元里的物理塊地址;(b)檢查由(a)小節(jié)中所述虛擬地址變換得到的所述單元的所述分配表來確定所述物理塊地址上塊的狀態(tài)為有效寫入或空白;(c)如果所述物理塊地址上所述塊為有效寫入狀態(tài)(1)檢查所述單元中至少一個單元的所述分配表以識別一個空白塊地址;(2)把所述數(shù)據(jù)寫入到所述存儲器的所述空白塊地址上;(3)改變由所述虛擬地址變換得到的所述單元的所述分配表,標(biāo)明為刪除的物理塊地址;(4)改變根據(jù)節(jié)(c)(2)中所述數(shù)據(jù)寫入的單元的所述分配表,把所述數(shù)據(jù)寫入的空白塊地址指示為有效寫入;(5)改變把虛擬地址變換為一個單元里的物理地址的所述表使得所述表能把所述虛擬地址變換到按步驟(c)(2)所述數(shù)據(jù)所寫入到的所述空白塊的物理地址上。
2.根據(jù)權(quán)利要求1的一種存儲管理方法,還包括以下步驟在所述存儲器里建立一個轉(zhuǎn)移單元,該所述單元的所有的塊都是空白的;周期地識別轉(zhuǎn)移單元之外的一個選定單元以進行擦除;讀所述選定單元里各個有效寫入塊;把所述選定單元里各個有效寫入塊寫入到所述的轉(zhuǎn)移單元里;更新所述轉(zhuǎn)移單元的分配表,指明按照剛敘述的寫入步驟所被寫入塊的狀態(tài)為已寫;擦除所述選定塊;更新虛擬地址對物理地址的所述表,把所述選定單元標(biāo)志為轉(zhuǎn)移單元并為所述轉(zhuǎn)移單元標(biāo)志上所述選定單元的單元標(biāo)識符。
3.一種用于數(shù)據(jù)只能寫入空白物理存儲單元及相連存儲單元區(qū)可同時擦除存儲器上的存儲管理方法,包括以下步驟在所述存儲器里存儲一個把虛擬地址變換為物理地址的第一表;把存儲在所述存儲器的第一表組織為頁面可尋址塊的段;在隨機存取存儲器里存儲一個第二表,該表把頁面地址變換為所述存儲器里所述頁面可尋址塊的物理地址;通過把一個已改變的頁面可尋址塊寫入到一個空白物理塊位置上來改變存儲在所述存儲器里所述第一表里的頁面可尋址塊;并且更新存儲在所述隨機存取存儲器里的所述第二表使得該表能把該已改變頁面可尋址塊頁面地址變換到所述已改變頁面可尋址塊已被寫入到的空白物理塊位置上。
4.一種用于數(shù)據(jù)只能寫入到空白物理單元及相連存儲單元區(qū)可同時擦除存儲器上的存儲管理方法,包括以下步驟把存儲器組織成多個單元,各個單元至少包括一個區(qū);把各個單元組織成多個塊,各個所述塊由多個相連物理存儲位置所組成;建立第一表以把虛擬地址變換為單元內(nèi)的物理地址;把按頁面可尋址塊組織成段的所述第一表存儲在所述存儲器里;把第二表存儲在隨機存取存儲器里,第二表把頁面變換為所述存儲器里所述頁面可尋址塊的物理地址;當(dāng)按虛擬地址把數(shù)據(jù)寫進所述存儲器時;(a)從所述虛擬地址導(dǎo)出頁面地址;(b)把所述頁面地址變換為所述存儲器里的頁面可尋址塊;(c)讀所述第一表的一個段其把虛擬地址變換為所述存儲器里所述頁面可尋址塊上的物理地址;(d)把所述虛擬地址變換為物理地址;(e)如果所述物理地址上的所述塊處于有效寫入狀態(tài);(1)把所述數(shù)據(jù)寫入到所述存儲器里的一個空白塊地址上;(2)改變所述第一表的段使得所述第一表能把所述虛擬地址變換到按步驟(e)(1)所述數(shù)據(jù)寫入到的空白塊的物理位置上;(3)把來自步驟(e)(2)中已改變的第一表的段寫入到所述存儲器的一個空白物理塊里;(4)更新存儲在所述隨機存取存儲器里的所述第二表使其映射已改變的第一表的段中所述空白物理塊位置的頁面地址。
5.一種用于數(shù)據(jù)只能寫入到空白物理單元及相連存儲單元區(qū)可同時擦除存儲器上的存儲管理方法,包括以下步驟把存儲器組織成多個單元,各個單元至少包括一個區(qū);把各個單元組織成多個塊,各個所述塊由多個相連的物理存儲位置所組成;為各個單元建立一個分配表,其指示單元中各塊的狀態(tài)如有效寫入,空白或刪除;建立一個表以把虛擬地址變換為單元里的物理地址;當(dāng)按虛擬地址向所述存儲器寫入數(shù)據(jù)時(a)把所述虛擬地址變換為單元里的物理塊地址;(b)檢查由(a)小節(jié)中所述虛擬地址變換得到的所述單元的所述分配表來確定所述物理塊地址上塊的狀態(tài)為有效寫入或空白;(c)如果所述物理塊地址上所述塊為有效寫入狀態(tài);(1)檢查所述單元中至少一個單元的所述分配表以識別一個空白塊地址;(2)把所述數(shù)據(jù)寫入到所述存儲器的所述空白塊地址上;(3)改變由所述虛擬地址變換得到的所述單元的所述分配表,將其標(biāo)示為刪除的物理塊地址;(4)改變根據(jù)節(jié)(c)(2)中所述數(shù)據(jù)寫入的單元的分配表,把所述數(shù)據(jù)寫入到的空白塊地址指示為有效寫入;(5)改變把虛擬地址變換為一個單元里的物理地址的所述表使得所述表能把所述虛擬地址變換到按步驟(c)(2)所述數(shù)據(jù)被寫入到的所述空白塊的物理地址上;當(dāng)按虛擬地址對所述存儲器讀數(shù)據(jù)時(d)把所述虛擬地址變換為一個單元里的物理塊地址;(e)從所述存儲器的所述物理地址讀所述數(shù)據(jù)。
6.根據(jù)權(quán)利要求5的一種存儲管理方法,還包括以下步驟在所述存儲器建立一個轉(zhuǎn)移單元,該所述單元的所有塊都是空白的;周期地識別轉(zhuǎn)移單元之外的一個選定單元以進行擦除;讀所述選定單元里的各個有效寫a塊;把所述選定單元里各個有效寫入塊寫入到所述的轉(zhuǎn)移單元里;更新所述轉(zhuǎn)移單元的分配表,指示按照剛敘述的寫入步驟所被寫入塊的狀態(tài)為已寫;擦除所述選定塊;更新虛擬地址對物理地址的所述表,把所述選定單元標(biāo)志為轉(zhuǎn)移單元并給所述轉(zhuǎn)移單元標(biāo)志上所述選定單元的單元標(biāo)識符。
7.一種用于數(shù)據(jù)只能寫入到空白物理單元及相連存儲單元區(qū)可同時擦除存儲器上的存儲管理方法,包括以下步驟把存儲器組織多個單元,各個單元至少包括一個區(qū);把各個單元組織成多個塊,各個所述塊由多個相連物理存儲位置所組成;建立第一表以把虛擬地址變換為單元內(nèi)的物理地址;把按頁面可尋址塊組織成段的所述第一表存儲在所述存儲器里;把第二表存儲在隨機存取存儲器里,第二表把頁面變換為所述存儲器里所述頁面可尋址塊的物理地址;當(dāng)按虛擬地址把數(shù)據(jù)寫進所述存儲器時(a)從所述虛擬地址導(dǎo)出頁面地址;(b)把所述頁面地址變換為所述存儲器里的頁面可尋址塊;(c)讀所述第一表的一個段,其把虛擬地址變換為所述存儲器里所述頁面可尋址塊上的物理地址;(d)把所述虛擬地址變換為物理地址(e)如果所述物理地址上的所述塊處于有效寫入狀態(tài)(1)把所述數(shù)據(jù)寫入到所述存儲器里的一個空白塊地址上;(2)改變所述第一表的段使得所述第一表能把所述虛擬地址變換到按步驟(e)(1)所述數(shù)據(jù)寫入到的空白塊的物理位置上;(3)把來自步驟(e)(2)中已改變的第一表的段寫入到所述存儲器的一個空白物理塊里;(4)更新存儲在所述隨機存取存儲器里的所述第二表使其映射已改變的第一表的段中所述空白物理塊位置的頁面地址;當(dāng)按虛擬地址對所述存儲器讀數(shù)據(jù)時(a)從所述虛擬地址導(dǎo)出頁面地址;(f)把所述頁面地址變換為所述存儲器里的頁面可尋址塊;(g)讀所述第一表的一個段,其把虛擬地址變換為所述存儲器里所述頁面可尋址塊上的物理地址;(h)把所述虛擬地址變換為物理地址;(i)從所述存儲器里的所述物理地址讀所述數(shù)據(jù)。
8.根據(jù)權(quán)利要求7的一種存儲管理方法,還包括以下步驟在所述存儲器里建立一個轉(zhuǎn)移單元,該所述單元的所有塊都是空白的;周期地識別轉(zhuǎn)移單元之外的一個選定單元以進行擦除;讀所述選定單元里的各個有效寫入塊;把所述選定單元里各個有效寫入塊寫入到所述的轉(zhuǎn)移單元里;更新所述轉(zhuǎn)移單元的分配表,指示按照剛敘述的寫入步驟被寫入塊的狀態(tài)為已寫;擦除所述選定塊;更新虛擬地址對物理地址的所述表,把所述選定單元標(biāo)志為轉(zhuǎn)移單元并給所述轉(zhuǎn)移單元標(biāo)志上所述選定單元的單元標(biāo)識符。
全文摘要
一種閃速存儲器,虛擬變換系統(tǒng)允許數(shù)據(jù)可被連續(xù)地寫入空白的物理地址單元。虛擬存儲變換和閃速存儲器的物理單元地址相關(guān),以跟蹤存儲器里數(shù)據(jù)的位置。
文檔編號G06F3/06GK1098526SQ94102329
公開日1995年2月8日 申請日期1994年3月8日 優(yōu)先權(quán)日1993年3月8日
發(fā)明者阿米爾·班 申請人:M-系統(tǒng)有限公司