專利名稱:存儲系統的制作方法
技術領域:
本發明涉及存儲系統,特別是存儲數據塊結構數據的存儲系統。本發明用于非易失性存儲單元用作存儲媒體的場合。本發明所用非易失性存儲單元的特殊類型是不允許擦除單個單元的但允許擦除存儲單元的字塊的存儲單元。可以使用不同的存儲單元,如FLASH EPROM單元,硫族化物存儲單元,鐵光單元。
許多計算機用普通存儲器存儲單元是基于如磁盤驅動器這樣的旋轉存儲媒體。然而,旋轉存儲媒體有些缺點。由于它們由旋轉的磁盤構成,所以需要較大的功率。因為尋找等數時間(移動磁頭至正確位置所需時間)和旋轉等數時間(找出軌道正確部分的時間),它們的讀寫速度比較慢。磁盤笨重且不堅固(它們對震動敏感)。相反,半導體存儲器重量輕,堅固,消耗很少的功率并運算很快。由于這些理由,人們希望使用一種固態磁盤裝置。選作固態存儲器特殊半導體有最理想的高密度、非易失性和每一位的低價格。這使得FLASH存儲器成為理想的候補者。
對于使用FLASH存儲器作為一個固態磁盤驅動器的存儲媒體,有許多現有技術的參考資料。這些參考資料包括以下的專利EP 0 392895,EP 0 424 191,EP 0 522 780,EP 0 597 706,EP 0 617 363,EP 0 618 535,EP 0 619 541,GB 2 251 323,WO 93 02418,WO94 19746,WO 9420906,WO 9423369,WO 9423432,WO9514272,WO95 10083,US4511964,WO8400628,WO9510083,WO9514272。許多這些參考資料有一些共同的特征。例如,大多參考資料公開使用一個表來變換來自主機的邏輯地址(通常在CHS-柱面,首標和扇區格式中)至FLASH存儲器內的物理地址,或變換至將用于產生FLASH存儲器內物理地址的中間地址。大多數參考資料還有一些方法可以保證一個字塊比另一個字塊不被寫入更多的次數。閃光固態磁盤仿真器的第三個共同特征是一個增加向半導體寫入速度的緩沖器。緩沖器通常由一些快速存儲器構成,這樣的存儲器如SRAM(靜態隨機存取存儲器)。
任何使用FLASH存儲器作為存儲方式的固態磁盤仿真系統也有一些控制單元擦除和寫入的方法。這是因為單元需要相對長的時間才能擦去以及單元在需要擦去之前只能寫入一次。本發明使用一種算法,此算法用在一個固態磁盤仿真系統中以控制存儲單元的寫入和擦除。
EP 0522 780描述一個固態磁盤的控制方法,此控制方法使用一個存儲器管理表記錄每個單元擦除次數,每一存儲器字塊和緩沖器的狀態,以保持寫入存儲器數據。此方法包括在擦去初始字塊前復制被擦去扇區至另一字塊。
EP 0 392 895是有關使用超高速緩沖存儲器以緩沖對FLASH存儲器的寫入來增加存儲器的運算速度。在公開的存儲系統中使用確定“自每個數據文件最后寫入的時間”的方法。它也涉及糾正錯誤和替代不足,而這些又是下面將提到的部分應用的主題。
EP 0 618 535是關于具有替代不足的固態磁盤仿真器。
EP 0 617 363是涉及糾正FLASH存儲器中缺陷單元的方法,其做法是使用指示字將存儲器中的缺陷位置指至空閑位置。
EP 0 424 191是關于在一個按規定指令可以存取的存儲器中進行順序數據存儲的方法。存儲器中的缺陷被儲存在有序的目錄中,這使得當存儲器被寫入時這些缺陷位置進行跳越。
EP 0 619 541提供一個固態磁盤仿真系統,其允許從一個中心處理單元進行隨機存取。它還可以測量每個存儲器字塊的擦除計數,以便使一個字塊避免寫入很多次數。
EP 0 597 706介紹一種固態外圍存儲器件,這種存儲器件使用一個MAP ROM變換主機提供的邏輯扇區段地址至半導體存儲器中的物理地址。半導體存儲器中的任何壞扇區地址被記錄在MAP ROM中。一種微定序器用來控制變換的進行。
GB 2 251 323敘述了一種FLASH存儲器的磁盤仿真系統。公開描述的擦除運算只在感測中是自動的,這當滿足一定的條件時作為一個背景任務而發生。或擦去最少的循環字塊,或擦去有最多刪除扇區的字塊。這產生了一個用于擦除的基本隨機字塊選擇。
WO 94 20906敘述了一個FLASH文件系統,此系統用于仿真磁盤驅動器的操作。它使用一個字塊存儲分配變換來儲存在能寫入的FLASH存儲器中的數據塊上的信息。在一個字塊要被更新時,儲存分配變換被掃描直至空閑字塊得到定位。一個傳送單元用來促進系統存儲器的回收。此傳送單元是存儲器的一個未寫但已被擦的字塊。現用數據(一般是有效的)來自含有老數據(老數據塊)存儲器的字塊,此現用數據被寫入在傳送單元(新數據塊)的同樣位置,而老字塊被擦除。老字塊然后成為傳送單元。
WO 94 234 32表示一個FLASH存儲器大容量存儲體系結構。通過將變更的數據文件編入空白的大容量存儲字塊來避免擦除循環。用多扇區擦除來周期地擦除該存儲。使用一個計數器來保證無字塊被擦除次數大于最大次數。
WO 9423369表示一個非常類似WO 94 23432所述結構的FLASH存儲器大容量存儲結構。此兩個專利的申請人為同一人。
WO 94 19746公開一個同時儲存兩個字節的閃光固態驅動器。每次一個扇區被寫入FLASH存儲器,一個首標也隨之被寫入。如果此扇區的老版本存在存儲器之中,則它將標記為無效。在存儲空間下降低于某一閾值時,則進行擦除操作。來自扇區的好數據則復制在緩沖器上,扇區被擦除并好數據被復制回此扇區。
WO8400628公開一個管理存儲媒體中缺陷的方法。此方法包括從主機接收地址,補償低于此地址的缺陷位置數的被接收地址,存取被補償的地址。構成存儲媒體中缺陷位置的順序表。
WO 9510083使用計算器記下擦除每個字塊已經歷的循環數,并復制數據文件的更改版本至新的位置。周期性地擦除字塊以清除系統。半導體存儲器的字塊與商用硬磁盤扇區尺寸相一致。
WO 9514272提供一種從多個被存取邏輯字塊產生正確的物理起始地址的方法。
本發明的優選實施例提供了整個存儲器內的擦除/寫循環的自動均衡。該自動均衡在最完備的意義上是自動的,即在數據正寫入時發生均衡,而不是在其后的時間內作為一個背景任務。它也能提供存儲數據的自動壓縮。在使用可使用FLASH存儲器容量時可以得到100%的效率,也就是說使用了所有的可用FLASH存儲器。它也允許使用其有任何可擦除字塊長度的FLASH存儲器可擦除字塊長度不到512字節。這允許存儲數據的每一段包括有誤差修正碼。本發明也可以促進從物理地址至FLASH地址空間的非常簡單的變換。
本發明提供仿真磁盤驅動器的固態存儲器,包括翻譯邏輯地址至存取一個儲存的二次地址的翻譯方法;一個存儲器是由字塊中的可擦除的非易失性存儲器單元構成;其特征在于第一指示字指出存儲中的未寫位置,第二個指示字用來指出下一個未擦除的可擦除字塊,此字塊緊挨著含有所說未寫存儲器位置的可擦除字塊;所提供的控制方法保證在第一和第二指示字之間至少總有一個可擦除字塊處于被擦除狀態。所說存儲中的未寫位置的一個固態存儲器是此存儲中的最低未寫位置。
所說的存儲中未寫位置的一個固態存儲器是存儲中的最高未寫位置。
一個固態存儲器,在那里所說下一個未擦除但可擦除字塊緊接著包含所說未寫存儲器位置,是在第一指示字之上具有最低物理地址的未擦除但可擦除的字塊。
一個固態存儲器,在那里所說下一個未擦除但可擦除字塊緊接著包含所說未寫存儲器位置,是在第一指示字之下具有最高物理地址數未擦除但可擦除的字塊。
一個固態存儲器,在那里所說下一個未擦除但可擦除字塊緊接著包含所說未寫存儲器位置,是由合適的算法確定。一個固態存儲器,使用一緩沖器,以增加寫入數據到存儲器的速度。
一個固態存儲器,在那里所說的緩沖器是一個SRAM緩沖器。
一個固態存儲器,在那里所說的緩沖器是一個DRAM(動態隨機存取存儲器)緩沖器。
一個固態存儲器,在那里所說的存儲是FLASH EPROM(閃光可擦除可編程只讀存儲器)。
一個固態存儲器,在那里所說的存儲器是由硫族化合物單元組成。
一個固態存儲器,在那里所說的存儲器是一個鐵-光存儲器。
一個固態存儲器,在那里所說的控制方法是由一個微處理器,一個微控制器或一個狀態機提供。
在本申請中一個未寫存儲器位置不屬于一個從未寫入的存儲器位置,但它屬于處于被擦除狀態的一個位置。
在本申請中第二地址可以是一個物理地址,一個物理字塊地址或一個中間地址。
將通過例子并參考附圖對本發明進行敘述,其中
圖1表示仿真一個磁盤驅動器的存儲器系統的圖2表示一個FLASH存儲器中的子分割分級結構;圖3A和3B闡明寫/擦除算法如何管理位在主機FLASH存儲器中擦除和寫運算的位置和次數。
圖3A表示擦除/寫算法見效前的一個FLASH存儲器。圖3B表示寫/擦除算法見效后的一個FLASH存儲器。
參見圖1,FLASH存儲器10用作從主機接收數據的主存儲器。FLASH存儲器10由存儲器控制器12進行控制。此存儲器12在FLASH存儲器10和一個工藝無關的接口14之間操作。存儲器控制器12控制物理存儲器(FLASH存儲器10)內高水平功能的低水平執行。存儲器控制器12是存儲器工藝有關的。
工藝無關接口14連接存儲器控制器12至一系統控制器16。系統控制器16管理主FLASH存儲器10內和寫入緩沖器18內的字塊結構數據的儲存和存取,該寫入緩沖器是為增加向FLASH存儲器10數據寫入速度的。系統控制器16執行以下功能。它翻譯來自主機的邏輯地址至采用FLASH存儲器10時的合適地址。在下文稱為邏輯至物理地址的翻譯。這種翻譯導致一些中間地址的產生。它保持所需的任何地址對照表。它管理FLASH存儲器10中的有缺陷的存儲位置。它管理寫入緩沖器18。它管理FLASH存儲器10的字塊的擦除。在加入或去掉電源后管理系統的開啟和關閉。
所有來自主機的扇區寫入指向寫入緩沖器18。這將FLASH存儲器的慢寫入速度的作用減至最小。扇區數據從寫入緩沖器18傳遞至作為背景任務的FLASH存儲器10。在使用時,寫入速度不重要時可省去寫入緩沖器18。
系統控制器16被連至二級存儲器20和主機接口22。二級存儲器20用來存儲如有缺陷的字塊和FLASH存儲器10的可擦字塊表信息,地址翻譯表,誤差記錄和微控制器固件。二級存儲器可直接從主機接口22存取以提供給主機一個直接變換存儲器地址空間。參見圖2,主FLASH存儲器10在子分割的下面分級結構中排列。FLASH存儲器由一些半導體芯片30組成。半導體芯片30是一個物理子分割,此子分割沒有任何邏輯意義。一個擦除字塊32是半導體芯片30的一個子分割。它是在一個擦除操作中可能刪去的最小單元數。一個半導體芯片中的擦除字塊的數目根據芯片的大小和芯片的排布而變化。矩形字組被指定為FLASH字塊。一個FLASH字塊34對缺陷管理來說是最小可標記字塊尺寸。如果一個單元出現故障,則可以標記和取代的最小區域是一個FLASH字塊34。缺陷變換具有一個FLASH字塊34的量化度。根據磁盤仿真協議一個扇區是一個數據單位。FLASH存儲器中儲存的數據(典型的為512字節加ECC字節和一個標題)后文將歸于一個閃光扇區由主機操作系統發送的數據(典型的為512字節)其后將歸于一個主機扇區。一個主機扇區是隨主機傳遞數據的基本單位。最一般的主機扇區長度為512字節。一個幀36是一個FLASH字塊34的可尋址子單位,例如一矩形FLASH字塊34內的一行。每一字38作為工藝無關接口14的最小可尋址單元是可隨機存取的。對存儲器系統用數據I/O的寬度將字的長度設定它可以是一、二或四個字節。
實際一個字中的位的物理位置對本發明所用算法是透明的。FLASH存儲器被簡單地處理成一個字位置矩形陣列。
FLASH字塊34能設定等于主機扇區長度(在大多數情況,主機扇區長度是512字節),幀長度或甚至字長度。存儲結果(可用于數據存儲的主存儲器的部分)達到FLASH字塊長度某值以下的一個坪,這樣使得FLASH字塊長度進一步減小不會導致存儲結果的更多改善。然而,有些缺陷同使用一個小FLASH字塊長度相關。FLASH字塊長度越小,則需要更多的存儲管理空間。也增加了部件試驗的復雜性。因此,對于FLASH字塊的長度存在一個最佳范圍。
在本發明中可使用不同的尋址格式,這并不會離開本發明的概念。
對于100%存儲器的實用情況,一個扇區的初始地址必須是緊跟前一扇區末端地址的一個字。為此,初始地址被定義為單一字的一個解。由于FLASH扇區在沒有插入間隙情況下被存儲,FLASH扇區將溢出FLASH字塊和擦除字塊。在這種情況下,將FLASH扇區作為分離扇區來認識,其連續區域位在下一閃光字塊或擦除字塊的開始。因此,FLSH字塊內的FLASH扇區的初始地址對每一FLASH字塊是不同的。為保證容易對此進行管理,必須保證在其中寫入擦除字塊的命令準確符合它們的物理地址命令。如果在一個FLASH字塊中有一個缺陷單元,則此字塊將被標出。這可能產生一種情況,部分FLASH扇區被存儲在一個FLASH字塊中,下一個FLASH字塊被標出,FLASH扇區的剩余立即存儲在標出FLASH字塊上面的FLASH字塊內。因此FLASH存儲器空間可以是不連續的。
圖3A和3B表明寫/擦莫法如何管理主FLASH存儲器的擦除、寫操作位置和次數。圖3A表示擦/寫狀態前的一個FLASH存儲器,圖3B表示寫/擦狀態后的同樣的FLASH存儲器。
此算法基于存在兩個指示字,寫入指示器和擦除指示字,規定現在的寫和擦除位置。位置被規定為物理扇區地址和通過物理扇區地址空間的指示字循環。寫入指示字規定下一個扇區寫入操作應指向的物理扇區數據。此扇區的物理位置保證為準備寫入數據提前用存儲器系統中的系統控制器16進行擦除。被寫入的扇區數據或來自跟隨來自主機的扇區寫入的寫入緩沖器18,或來自為準備擦除字塊擦除操作的FLASH存儲器10中的另一扇區。隨著扇區寫入操作,寫入指示字遞增一以指出下一個最高物理扇區地址。當寫入指示字達到最高可用物理扇區地址時,然后它繞接并指示最低可用物理地址。
擦除指示字規定在計劃擦除的下一擦除字塊的FLASH存儲器空間中的擦除字塊地址。在擦除指示字中的第二字段規定位在擦除字塊底部的第一完全扇區的物理扇區數。隨著擦除字塊擦除操作,擦除字塊數遞增1。一個對照表(下文中稱為擦除字塊表)提供擦除指示字區指示的擦除字塊中第一扇區的物理扇區地址。如果擦除字塊全是有缺陷的并不包含能被寫入的扇區(在擦除字塊表中由具體條目表示),則擦除指示字再增加。當擦除指示字達到最高可用擦除字塊時,然后它回到存儲器的最低部分并指出最低可用擦除字塊。擦除字塊以一個速度進行擦除,此速度旨在保持目前寫入位置上直接被擦除的扇區的位置的一個大約不變的數目。因此,在當擦除指示字和寫入指示字中規定的扇區數間的差落在某閾值以下時則進行一個擦除操作。在一個擦除字塊擦除之前,在那個擦除字塊內含有有效數據的扇區必須被再定位。此有效數據的再定位是將含有效數據的扇區讀到一個再定位緩沖器(下文稱為一個傳送緩沖器)中來完成,并將它們寫回寫入指示字所指的位置。邏輯至物理地址的翻譯表改為指示扇區的新的物理扇區地址。由于用此方法只有有效扇區被再定位和數據失效的扇區被自動擦除,則可提供儲存數據的自動壓縮。
以此算法建立的過程可看作等價于通過整個FLASH存儲器空間的被擦除存儲器循環的一個小的鄰接區域。從而移去在其上限遇見的分段扇區并在其下限對其壓縮和再定位。
將理解,在本發明范圍內可以對上述實施例作出各種修改。例如,在另一個裝置中,按其他方向移動的被擦除存儲器單元的鄰接區域即,如果緊接低于下限的下限被移去的分段扇區和有效數據被寫入緊接低于上限的位置。
權利要求
1.一個存儲器設備包含多個存儲裝置,每一個裝置有一個預定的物理地址,翻譯裝置是用于將一個邏輯地址翻譯至所說的預定物理地址的唯一地址,所說的存儲裝置是由字決中可擦除的非易失性存儲器單元組成;其特征在于所說的存儲器包括存儲第一個指示字以指示空閑存儲裝置的裝置和存儲第二個指示字以向包含所說的未被寫入存儲器位置的可擦除字塊指示一預定序列中的下一個未擦除但可擦除字塊的裝置;控制裝置,以保證在由一第一指示字指出的存儲裝置和由第二指示字指出的存儲裝置之間至少總有一個空閑的可擦除的字塊。
2.按權利要求1的固態存儲器,其特征在于,存儲器中未寫位置是存儲器中的最低未寫位置。
3.按權利要求1的固態存儲器,其特征在于,存儲器中的未寫位置是存儲器中的最高未寫位置。
4.按權利要求1或2的固態存儲器,其特征在于,與含有所說的未寫存儲器位置的可擦除字塊相鄰的下一個未擦除但可擦除字塊是在第一指示字上面有最低物理地址的未擦除但可擦除字塊。
5.按權利要求1至3的固態存儲器,其特征在于,與含有所說的未寫存儲器位置的可擦除字塊相鄰的下一個未擦除但可擦除字塊是在第一指示字下面的最高物理地址的未擦除但可擦除字塊。
6.按任何前述權利要求的固態存儲器,其特征在于,與含有所說的未寫存儲器位置的可擦除字塊相鄰的下一個未擦除但可擦除字塊由一個合適的算法決定。
7.按任何前述權利要求的固態存儲器,其特征在于,使用一個緩沖器來增加向存儲器寫入數據的速度。
8.按權利要求7的固態存儲器,其特征在于所說的緩沖器是一個SRAM緩沖器。
9.按權利要求7的固態存儲器,其特征在于所說的緩沖器是一個DRAM緩沖器。
10.按任何前述權利要求的固態存儲器,其特征在于,所說的存儲器是FLASH EPROM。
11.按任何前述權利要求的固態存儲器,其特征在于,所說的存儲器由硫族化合物單元構成。
12.按任何前述權利要求的固態存儲器,其特征在于,所說的存儲器是一個鐵—光存儲器。
13.按任何前述權利要求的固態存儲器,其特征在于,所說的控制范圍是由一個微處理器,一個微控制器或一個狀態機器提供。
全文摘要
一個模擬磁盤驅動的固態存儲器包括:將邏輯區段地址譯至主存儲地址的譯碼設備;由部件中可控除非易失性存儲器組成的主存儲器;其特征在于,第一指示字用于指示主存儲器中的未寫區域,第二指示字用于指示緊接著含有所說的未寫存儲區的可擦除字塊的下一個未擦除但可擦除字塊;提供的控制裝置可保證至少總有一個可擦除數字塊處于第一和第二指示字間的擦除狀態。
文檔編號G11C16/02GK1198226SQ96197240
公開日1998年11月4日 申請日期1996年2月6日 優先權日1995年9月27日
發明者A·W·辛克萊爾 申請人:記憶體公共有限公司