專利名稱:用于存儲并檢索存儲系統中信息的方法和存儲裝置的制作方法
技術領域:
本發明大體而言涉及大容量數字數據存儲系統。更具體而言,本發明涉及用于在 一存儲系統中自動實施符號或狀態頻率校平、以在該存儲系統中存儲基本上任何數據樣式 時均有效滿足性能目標的系統和方法。
背景技術:
目前,諸如閃速存儲器存儲系統等非易失性存儲系統的應用日益廣泛,這是因為 此種存儲系統的實體尺寸緊湊、而且非易失性存儲器能夠重復性再編程。閃速存儲器存儲 系統緊湊的實體尺寸有利于此種存儲系統用于各種日益流行的裝置內。使用閃速存儲器存 儲系統的裝置包括,但不僅限于數字照相機、數字攝像機、數字音樂播放機、手持式個人計 算機及全球定位裝置。閃速存儲器存儲系統內所包含的非易失性存儲器重復編程的能力使 人們能夠使用和重復使用閃速存儲器存儲系統。存儲在一非易失性存儲系統的一數據塊中的數據集可實質上具有任何可能的數 據值組合。一個含有“N”個符號且每一符號均可存儲為“m”個可能值之一的數據塊可具有 “mN”個可能的數據值。考慮到所有可能的數據值均存儲在一數據塊中,存儲系統的設計方 式通常須使其滿足所有可能數據值的性能目標,而對于最常存儲的數據樣式而言此可能并 非最佳。亦即,為保證滿足包括較不佳情形或不可能發生的情形在內的所有可能數據值或 數據樣式的性能要求,可能要犧牲與最常用或較佳數據值相關的性能。若考慮將所有可能 的數據值存儲在一存儲系統的一數據塊中,還可能導致相對復雜的設計問題、可靠性問題 增大、功率消耗增加、成本升高。在一數據塊中可能存儲的數據樣式的數量可相對較大。甚至在一數據塊中實質上 僅可存儲二進制狀態時,有可能存儲在該數據塊中的數據樣式的數量也會很大。對于一可 存儲一百個二進制位的數據塊而言,實際上要安排該數據塊存儲2100個數據樣式或情形。 對一存儲這一百個二進制位的存儲系統的要求是由少量的較不佳情形來設定或限制,這些 少量的較不佳情形可能需要專用電路來滿足最低性能要求或可能消耗額外的功率。舉例 而言,在某些系統中,將一百個二進制位存儲為“ 1”可能是一較不佳情形,因為與涉及到以 “ 1,,和“0”值的混合來存儲一百個二進制位的更佳情形相比,其所需的存儲系統更加昂貴。 或者,一在存儲較不佳或罕見情形時滿足最低性能要求的存儲系統可能會犧牲與存儲更佳 情形相關的性能水平。通過犧牲與存儲較佳情形相關的性能水平來滿足與存儲較不佳情形 相關的最低性能要求通常證明是低效的。除(或代替)可能導致犧牲性能外,若考慮將所有可能的數據值都存儲在一個存儲系統的數據塊中,通常會導致生產成本升高,這是因為與存儲所有可能的數據值相關的 電路成本可能較高。此種電路亦可能需消耗相對大的功率值。在數據存儲及納入額外的電 路來實現較不佳情形的存儲兩方面而言,一存儲所有可能數據值的存儲系統亦可能不甚可 靠。由于與為存儲系統設計能使所有可能數據值得到存儲的電路相關的設計問題,存儲所 有可能數據值這一需要還可能導致開發時間變長,此本身又可能導致存儲系統可上市之前 的設計至投產時間變長。因此,人們期望具有一種使較不佳情形能夠有效地存儲在非易失性存儲器中而基 本不會犧牲與存儲較佳情形相關的性能的系統。亦即,人們需要一種可有效地存儲較不佳 情形及較佳情形二者的方法和裝置。
發明內容
本發明涉及一種用於將數據變換為一可有效地存儲于一非易失性存儲器中的格 式的系統和方法。根據本發明的一個方面,一種用於在一存儲系統中存儲一第一數據格式 的信息的方法包括產生與該第一數據格式相關的統計信息,利用該統計信息將該信息從 該第一數據格式變換為一第二數據格式。在該信息變換為該第二數據格式后,將該信息以 第二數據格式存儲到一存儲器中。將該信息以第二數據格式存儲到存儲器包括在該存儲 器中存儲一標識符,該標識符指示或標識一用于將該信息從第一數據格式變換至第二數據 格式的變換。知曉該標識符通常使人們能夠將該信息從第二數據格式變換回第一數據格 式。在一實施例中,與以第二數據格式存儲信息相關的成本少于或等于與以第一數據格式 存儲信息相關的成本。在另一實施例中,第一數據格式包括一第一符號的至少一次出現,且產生與該第 一數據格式相關的統計信息包括確定該第一數據格式的該第一符號的密度。確定該密度可 包括確定與該第一數據格式的第一符號的出現相關的百分比。在此一實施例中,利用統計 信息將信息從第一數據格式變換為第二數據格式可涉及將信息從第一數據格式變換為第 二數據格式,以減小信息中第一符號的密度。需存儲到一存儲系統中的數據可能具有多種不同的格式。某些格式(例如邏輯 狀態或符號的組合)的存儲效率可能比其他格式的存儲效率低,這是因為某些格式可能允 許較不佳的情形。對于較不佳的情形(例如,其中一種邏輯狀態構成一組數據的絕大部分 的情形)而言,如果其存儲擬滿足性能要求,則其可能需要專用電路或極大的功率需求來 實現存儲目的。另外,一滿足較不佳情形的存儲性能要求的存儲系統可能會犧牲與存儲更 佳情形(例如,相對頻繁出現的情形)相關的性能。通過在存儲數據之前變換數據格式,例 如,從一種較不佳情形變換為一種較佳情形,則由于將較不佳情形有效地存儲為較佳情形, 可有效地避免存儲實際的較不佳情形。因此,可更有效地進行存儲系統中數據的總體存儲。 另外,可降低與存儲系統相關的成本,且可增強存儲系統的可靠性。根據本發明的另一方面,一種用于在一存儲系統的一存儲裝置中檢索以一第一數 據格式存儲的信息的方法包括對第一數據格式的信息進行分析。對第一數據格式的信息 進行分析包括確定至少一種適用于將信息從該第一數據格式變換為一第二數據格式的合 適的變換。該方法亦包括利用該合適的變換將信息從該第一數據格式變換為該第二數據格 式。一與將信息以該第一數據格式存儲到該存儲裝置中相關的成本不高于一與將該信息以該第二數據格式存儲到該存儲裝置中相關的成本。在一實施例中,分析該第一數據格式的 信息包括讀取該第一數據格式的信息的一段,以標識合適的變換。在另一實施例中,該存 儲系統與一主機系統進行通信,該方法進一步包括向主機系統提供變換后的該第二數據格 式的信息。根據本發明的又一方面,一種能夠變換及存儲數據的系統包括一主機系統和一存 儲裝置。該存儲裝置介接該主機系統以從該主機系統獲得設置成一第一數據格式的信息, 并包括一存儲器、一統計信息產生器和一變換器。該統計信息產生器產生與該第一數據格 式相關的統計信息,該變換器利用該統計信息將該信息從該第一數據格式變換為一第二數 據格式。該變換器還將該信息以該第二數據格式存儲到該存儲器中。在一實施例中,該第 二數據格式的信息至少與該第一數據格式的信息同樣容易地存儲到該存儲器中。在一實施例中,該變換器將一標識符作為該第二數據格式的信息的一部分進行存 儲,該標識符實質上標識至少一種用于將信息從該第一數據格式變換為該第二數據格式的 變換。在此一實施例中,該主機系統可包括一信息處理器和一第二變換器。此一信息處理 器可讀取該標識符,并與該第二變換器相協作,以標識至少一種用于將信息從該第二數據 格式變換為該第一數據格式的合適的變換。應了解,該變換器和該第二變換器可為分立的 變換器、并入一單個變換器中的變換器、或共享相同邏輯變換器、或者甚至為具有相同邏輯 但構造為起不同作用的變換器。在閱讀以下詳細說明并研究圖式中的各圖后,本發明的這些及其他優點即顯而易 見。
結合附圖并參閱下文說明,可最佳地了解本發明,附圖如下圖la是一根據本發明一實施例,一包括一非易失性存儲裝置的通用主機系統的 示意圖。圖lb是根據本發明一實施例,一非易失性存儲裝置(例如圖la中的非易失性存 儲裝置120)的示意圖。圖2a是根據本發明一實施例,一包括一變換器的第一非易失性存儲系統的示意 圖。圖2b是根據本發明一實施例,一包括一變換器的第二非易失性存儲系統的示意 圖。圖2c是根據本發明一實施例,一包括一變換器的第三非易失性存儲系統的示意 圖。圖3a是根據本發明一實施例,一主機與一第一非易失性存儲系統進行通信的示 意圖,其中在存儲數據之前對數據實施多次變換。圖3b是根據本發明一實施例,一主機與一第二非易失性存儲系統進行通信的示 意圖,其中在存儲數據之前對數據實施多次變換。圖4a是一根據本發明一實施例的過程流程圖,其圖解說明與一種將一主機提供 的數據有效地存儲到非易失性存儲器中的方法相關的步驟。圖4b是一根據本發明一實施例分過程流程圖,其圖解說明與另一種將一主機提
7供的數據有效地存儲到非易失性存儲器中的方法相關的步驟。圖5是根據本發明一實施例,一非易失性存儲系統的示意圖,該非易失性存儲系 統包括一對已編碼數據進行解碼的變換器。圖6是根據本發明一實施例,一主機及一非易失性存儲系統的示意圖,該非易失 性存儲系統包括一向該主機直接提供已解碼數據的變換器。圖7是根據本發明一實施例,一主機及一非易失性存儲系統的示意圖,該非易失 性存儲系統包括一可在將已解碼數據提供給該主機之前利用多次迭代進行數據解碼的變 換器。圖8是一根據本發明一實施例的過程流程圖,其圖解說明與對已編碼數據進行解 碼相關的步驟。圖9a是根據本發明一實施例,一對數據進行編碼的變換器的示意圖。圖9b是根據本發明一實施例,一與圖9a中的編碼變換器918相關的變換的示意 圖。圖10a是根據本發明一實施例,一對數據進行解碼的變換器的示意圖。圖10b是根據本發明一實施例,一解碼變換器的示意圖,該解碼變換器適合將圖 9b中的編碼變換器918'實施的編碼進行反演。
具體實施例方式通過在存儲數據之前變換數據格式,例如,從一較不佳情形變換為一較佳情形,則 由于將一較不佳情形有效地存儲為一較佳情形,從而可有效地避免存儲實際上的較不佳情 形。因此,可更有效地進行存儲系統中數據的總體存儲,這是因為存儲較不佳情形所消耗的 功率將通常不會大于存儲較佳情形所消耗的功率,且可避免與存儲較不佳情形相關的性能 損失。另外,在一將較不佳情形存儲為更佳情形的存儲系統中,與數據存儲相關的電路的復 雜性可得到降低,例如,設計所花費的時間更短,且可在一定程度上更易于生產。亦即,可降 低與功率耗用、性能損失、設計問題和生產問題中至少一項相關的總成本或成本因素。例 如,可降低與功率消耗相關的成本、可降低性能損失或成本、可降低與設計復雜電路相關的 成本及可降低生產成本。當數據擬存儲到諸如一非易失性存儲裝置的存儲裝置上時,主機系統可將該數據 提供至該非易失性存儲裝置。在一實施例中,非易失性存儲裝置可有效地減少數據,以確定 數據內所出現的邏輯狀態和符號的相對密度,然后根據該相對密度選擇一合適的變換來用 于將數據變換為一有效存儲格式。一符號可為一個位或實質上任何數量的位的組合。雖然 一視為可有效存儲的數據格式可視具體系統的要求而變化很大,但可有效存儲的數據格式 可包括包含有實質上均勻分布的邏輯狀態的格式;會將特定邏輯狀態的最大密度最小化 的格式;以及會將特定邏輯狀態的最小密度最大化的格式。首先參照圖la,下文將介紹一通用主機系統,其包括一非易失性存儲裝置120,例 如一 CompactFlash存儲卡(CF卡)。主機或計算機系統100通常包括一系統總線104,該 系統總線104使一微處理器108、一隨機存取存儲器(RAM) 112及各輸入/輸出電路116能 夠進行通信。應了解,主機系統100可通常包含其他組件,例如顯示裝置及聯網裝置,此處 出于圖解說明目的,未展示出這些組件。
一般而言,主機系統100所能捕獲的信息包括(但并不限于)靜止圖像信息、音 頻信息及視頻圖像信息。這些信息可實時捕獲,并可以無線方式發送至主機系統100。雖然 主機系統100實質上可為任一系統,但主機系統100通常為一如下系統例如數字照像機、 視頻照像機、蜂窩式通信裝置、音頻播放器或視頻播放器。然而,應了解,主機系統100—般 而言可實質上為任一種存儲數據或信息及檢索數據或信息的系統。應了解,主機系統100還可為一僅捕獲數據或僅檢索數據的系統。亦即,主機系統 100可為一用于存儲數據的專用系統,或者可為一用于讀取數據的專用系統。例如,主機系 統100可為一個僅設置用于寫入或存儲數據的存儲記錄器。或者,主機系統100可為一諸 如MP3播放器等通常設置用于讀取或檢索數據而非捕獲數據的裝置。非易失性存儲裝置120在一實施例中為一可拆式非易失性存儲裝置,其布置成介 接至總線104以存儲信息。一可選的輸入/輸出電路塊130可使非易失性存儲裝置120間 接地介接總線104。如所屬技術領域的技術人員所了解,輸入/輸出電路塊130,在存在時, 用于降低總線104上的負荷。非易失性存儲裝置120包括非易失性存儲器124和一存儲器 控制系統128。在一實施例中,非易失性存儲裝置120可構建在一單一芯片或電路小片上。 或者,非易失性存儲裝置120可構建在一多芯片模塊上或構建在可一同用作非易失性存儲 裝置120的多個分立組件上。下文中將根據圖lb更詳細地介紹非易失性存儲裝置120的 一實施例。非易失性存儲器124設置用于存儲數據,以便可視需要存取和讀取數據。存儲于 非易失性存儲器124內的數據也可視需要擦除,當然應了解,非易失性存儲器124內的某些 數據不可擦除。數據存儲、讀取和擦除過程通常由存儲器控制系統128控制。在一實施例 中,存儲器控制系統128管控非易失性存儲器124的運行,以便通過基本上使非易失性存儲 器124的各區段大致上同等地耗損來使非易失性存儲器124的壽命最大化。上文已一般性地將非易失性存儲裝置120描述為包含一存儲器控制系統128,即 一控制器。通常,非易失性存儲裝置120可包括分別用于非易失性存儲器124和存儲器 控制系統128(即控制器)功能的單獨芯片。舉例而言,盡管包括(但不僅限于)PC卡、 CompactFlash卡、多媒體(MultiMedia)卡及安全數字(secure digital)卡在內的非易失 性存儲裝置包含可構建于一單獨芯片上的控制器,但其他非易失性存儲裝置可不包含構建 于一單獨芯片上的控制器。在一其中非易失性存儲裝置120不包含單獨的存儲器和控制器 芯片的實施例中,如所屬技術領域的技術人員所了解,存儲器和控制器的功能可集成在一 單一芯片內。下文將參照圖lb、根據本發明的一實施例更詳細地闡述非易失性存儲裝置120。 如前面所述,非易失性存儲裝置120包括非易失性存儲器124和存儲器控制系統128。存儲 器124和控制系統128 (或控制器)是非易失性存儲裝置120的主要組件。存儲器124可 為一形成于一半導體襯底上的存儲單元陣列,其中,通過將兩個或多個電荷電平中的一個 電荷電平存儲于存儲單元的各存儲元件上而將一或多位數據存儲在各存儲單元中。用于此 等系統的一常見類型存儲器的實例是非易失性閃速電可擦可編程只讀存儲器(EEPR0M)。控制系統128通過總線15與一主機計算機或其他正使用該存儲系統存儲數據的 系統進行通信。總線15通常是圖la中總線104的一部分。控制系統128還控制存儲器 124(其可包括一存儲單元陣列11)的運行,以寫入主機所提供的數據、讀取主機所請求的數據、并在正運行的存儲器124中執行各種內務功能。控制系統128通常包括一具有相關 軟件存儲器和各種邏輯電路的通用微處理器。通常還包括一或多個狀態機,以控制專用例 行程序的性能。存儲單元陣列11 一般由控制系統128通過地址解碼器17進行尋址。解碼器17 向陣列11的各門極線和位線施加正確的電壓,以便向正由控制系統128尋址的一組存儲單 元編程數據、從該組存儲單元讀取數據或者擦除該組存儲單元。輔助電路19包括用于控制 施加至陣列元件的電壓的編程驅動器,該些電壓取決于編程至一所尋址存儲單元組中的數 據。電路19還包括讀出放大器和其他從一所尋址存儲單元組讀取數據所必需的電路。待 編程至陣列11中的數據或從陣列11最新讀取的數據通常存儲在控制系統128內的一緩沖 存儲器21中。控制系統128通常還包括用于臨時存儲命令和狀態數據及類似數據的各種 寄存器。陣列11分為大量的存儲單元塊BLOCKS 0_N。通常對于閃速EEPR0M系統來說,塊 即為擦除單位。換言之,每個塊均包含可一起擦除的最小數量的存儲單元。亦如圖lb所示, 每個塊通常分為若干頁面。頁面是編程單位。換言之,一基本編程操作是將數據寫入一個 單元頁面這一最小單位內。每個頁面內通常存儲一個或多個數據扇區。如圖lb所示,一個 扇區包括用戶數據和開銷數據。開銷數據一般包括一根據該扇區的用戶數據計算出的糾錯 碼(ECC)。控制系統128的一部分23在數據正編程至陣列11內時計算ECC,且亦在正從陣 列11讀取數據時校驗ECC。或者,將ECC存儲到與其所從屬的用戶數據不同的頁面或不同 的塊中。一用戶數據扇區通常為512字節,此等于磁盤驅動器內一扇區的大小。開銷數據 通常為一附加的28字節。最常見地,每個頁面中包含一個數據扇區,但兩個或更多個扇區 也可構成一個頁面。大量頁面即構成一個塊,例如從8個頁面到高達512個,1024個或更多 個頁面不等。塊的數量的選擇旨在為存儲系統提供一所期望的數據存儲容量。陣列11通 常分為數個子陣列(未圖示),其中每一子陣列皆包含這些塊中的一部分,這些子陣列在一 定程度上彼此獨立運行以提高在執行各種存儲作業時的平行度。美國專利第5,890,192號 中闡述了使用多個子陣列的一個實例,該專利的全文以引用的方式并入本文中。通過圖la中的總線104提供給非易失性存儲裝置120以存儲到非易失性存儲器 124(例如,非易失性存儲器124中的存儲單元)中的數據通常可包括較佳情形和較不佳情 形。較佳情形可包括相對頻繁出現的數據樣式或含有被視為相對易于存儲或檢索(例如, 需要相對少的開銷或功率)的符號(例如狀態)密度的數據樣式。另一方面,較不佳情形 可包括相對不頻繁地出現的數據樣式或含有被視為相對難以存儲或檢索的符號密度的數 據樣式。在所述實施例中,較佳情形通常為相對易于或有效地存儲到非易失性存儲器124 中或從非易失性存儲器124檢索出的數據樣式,而較不佳情形通常為相對難以或低效地存 儲到非易失性存儲器124中或從非易失性存儲器124檢索出的數據樣式。通過在將數據存儲到非易失性存儲器124中之前對數據進行變換,以便可有效地 避免較不佳情形,亦即以便將較不佳情形變換或編碼成更佳情形,會使數據得到有效地存 儲。通過對數據進行變換或操縱,以使基本上所有數據樣式皆可作為相對較佳情形存儲到 非易失性存儲器124中,使得能夠相對廉價地進行存儲作業。通過動態地變換數據,會使在存儲數據之前將一可能為較不佳情形的數據樣式變換為一更佳情形。在非易失性存儲器124中除存儲變換后的數據外,還可存儲用于指示曾 對數據進行變換及所實施變換類型二者的其他數據。在從非易失性存儲器124中檢索該數 據以將該數據重新變換成原始狀態之前,可使用此信息。亦即,在變換和存儲數據時,亦存 儲與該變換相關的信息,以便在接收到變換后的數據時能夠逆向進行該變換,從而有效地 使該數據恢復到其原始狀態。在一實施例中,將與變換有關的信息存儲為5位,當然位的數 量可變化很大。一般而言,與變換有關的信息可預先考慮至、附加至、并入或插入到變換后 的數據中。然而,應了解,該數據亦可獨立于變換后的數據進行存儲。可實施一變換來確保不會有數據樣式帶有高于某一百分比的一第一符號或少于 某一百分比的一第二符號。舉例而言,可將任一特定符號的最大密度最小化,或將任一具體 符號的最小密度最大化。在某些實施例中,可進行變換來有效地確保變換后的數據樣式滿 足不同符號的一定最小百分比和一定最大百分比。通過確保各符號達到一定的百分比,例 如,使每種符號的最大密度最小化,通常可避免較不佳情形。如所屬技術領域的技術人員所 了解,各符號可與表示不同狀態相關聯。一般而言,數據可在存儲到一非易失性存儲系統中的一數據塊中之前進行變換。 雖然數據變換可在將數據提供給一非易失性存儲系統之前在一主機上進行,但數據變換一 般是在非易失性存儲系統內進行。在一實施例中,數據變換是在將數據從主機讀入一與該 非易失性存儲系統相關的緩沖器之后、但在數據存儲到一數據塊中之前進行。參照圖2a,下 文將根據本發明闡述一包括一變換器的非易失性存儲系統的實施例。一非易失性存儲系統 202與一主機206進行通信,以使主機206可向系統202提供數據值。主機206向一緩沖器 210和一統計信息產生器214提供數據,例如“原始”數據或未經變換的數據。在一實施例 中,一非易失性存儲系統202'可與一主機206進行通信,主機206將未經變換的數據提供 至緩沖器210,但不提供至統計信息產生器214,如圖2b所示。在此一實施例(即圖2b所 示的實施例)中,緩沖器210可設置為向統計信息產生器214提供未經變換的數據。重新參照圖2a,緩沖器210設置用于在由變換器218變換數據之前臨時存儲數據, 而統計信息產生器214則對數據進行分析或縮減,以產生統計信息,該統計信息用于確定 變換器218擬使用的變換。在一實施例中,統計信息產生器214設置用于確定在該數據中 每種符號所出現的次數。統計信息產生器214亦可設置用于確定每種符號相對于整個數據 流出現的總百分比。變換器218使用由統計信息產生器214產生的統計信息將數據編碼成一較佳的數 據樣式。一般而言,變換器218亦將已編碼數據存儲到一非易失性存儲器222中,該非易失 性存儲器222可包括存儲單元或存儲塊。如所屬技術領域的技術人員所了解,使用統計信 息產生器214所產生的統計信息的變換器218可僅為與非易失性存儲系統202相關的復數 個變換器中的一個。舉例而言,如下文中根據圖2c所闡述,在變換器218實施變換之前或 之后可進行其他變換。變換器218亦可向已編碼數據中增加位,這些位設置用于指示(例如)當從非易 失性存儲器222獲得該已編碼數據時如何解碼或重新變換該已編碼數據,如前文所述。在 一實施例中,可將一標識符單獨存儲到(例如)一與非易失性存儲器222中不同于存儲有 該已編碼數據的區段的另一區段相關的查找表中,而不是通過將位并入已編碼數據中來指 示如何解碼該已編碼數據。然后,當需要使用存儲信息時或當需將已編碼數據解碼時,可存
11取此一標識符。應了解,當數據已處于一較佳的或所期望的數據樣式時,變換器218可選擇不對 該數據進行編碼。換言之,并非所有通過變換器218的數據均得到變換。當一數據樣式未 經變換器218變換時,在將數據存儲到非易失性存儲器222中之前,變換器218亦可不將任 何符號或位附加至、預先考慮至、并入或插入到該數據樣式中,這是因為基本上不需要用于 指示如何重新變換該數據樣式的位。或者,變換器218可將用于指示數據樣式已經過變換 器218處理但未進行變換的位附加至、預先考慮至、并入或插入到一數據樣式中。
在數據經過變換器218處理后,經處理的數據一般存儲到非易失性存儲器222中。 如在下文中所更詳細闡述,在一實施例中,可將通過變換器218的已編碼數據讀入到緩沖 器210中,以在實施存儲作業之前,可由變換器218對變換后的數據至少實施另一次變換, 以進一步變換符號密度,例如狀態密度。變換可包括校平過程,該等校平過程可設置用于減 小一或多種符號在一數據樣式中出現的頻率、或者增加一或多種符號在該數據樣式中出現 的頻率。校平過程亦可設置用于既減小一或多種符號在一數據樣式中出現的頻率、又增加 一或多種符號在該數據樣式中出現的頻率。如前文中所述,一非易失性存儲系統可具有多于一個相關變換器。圖2c是根據本 發明一實施例,一主機與一非易失性存儲系統進行通信的示意圖,該非易失性存儲系統包 括復數個變換器。一非易失性存儲系統202"與一主機206進行通信,以使主機206可向系 統202"提供數據值。主機206可向一可選的第一變換器280提供數據,例如“原始”數據 或未經變換的數據,該第一變換器280可利用基本上任何適當的變換演算法對數據進行變 換。適當的變換演算法可包括,但不限于一預先確定的變換演算法、一基于使用一隨機數 字產生器來識別一適當變換的變換演算法、或者一旋轉變換演算法。然后,可將經可選的第 一變換器280處理的數據提供給緩沖器210和一統計信息產生器214。緩沖器210設置用于在由變換器218變換數據之前對數據進行臨時存儲。統計信 息產生器214對數據進行分析或縮減,以產生統計信息,這些統計信息用于確定變換器218 將使用的變換。在一實施例中,統計信息產生器214設置用于確定在數據(即由可選的第 一變換器280處理的數據)中每種符號所出現的次數量。統計信息產生器214亦可設置用 于確定每種符號相對于整個數據流出現的總百分比。變換器218使用由統計信息產生器214產生的統計信息將數據編碼成一較佳的數 據樣式。在所述實施例中,變換器218亦可將已編碼數據提供給一第二可選變換器282,該 第二可選變換器282可利用基本上任何未基于由統計信息產生器214產生的統計信息的變 換對已編碼數據進行變換。亦即,變換器218可將已編碼數據提供給第二可選變換器282, 第二可選變換器282可利用一傳統的變換方法對已編碼數據進行進一步變換。第二可選變 換器282可將變換后的數據存儲到一非易失性存儲器222中,該非易失性存儲器222可包 括存儲單元或存儲塊。應了解,非易失性存儲系統202"中可包括第一可選變換器280和第 二可選變換器282中的一個或同時包括兩者。圖3a是根據本發明一實施例,一主機與一非易失性存儲系統進行通信的示意圖, 其中,在存儲數據之前可對數據實施多次變換。類似于圖2a中的非易失性存儲系統202,一 非易失性存儲系統302包括一緩沖器310、一變換器318、一統計信息產生器314和一非易 失性存儲器322。非易失性存儲器322通常包括其中可存儲數據的存儲塊或存儲單元。系統302與一主機306或一源進行通信,以使主機306可向系統302內提供數據值或信息。主機306將符號形式的數據提供給緩沖器310和統計信息產生器314。盡管是由 主機306向統計信息產生器314提供數據,但在一實施例中,可由緩沖器310向統計信息產 生器314提供數據,如圖3b非易失性存儲系統302'中所示。返回圖3a,緩沖器設置用于 對數據進行臨時存儲,例如,緩沖器310可在由變換器318變換數據之前用作數據的一中間 停留區。統計信息產生器314可根據該數據產生統計信息,該統計信息有效地用于標識一 將由變換器318用來處理數據的合適的變換。如所屬技術領域的技術人員所了解,雖然所 產生的統計信息可基本上為任何適當的信息,但可標識一數據樣式中特定符號或狀態的密 度的統計信息可能尤其有用。變換器318可利用由統計信息產生器314根據數據產生的統計信息將數據編碼為 一較佳的數據樣式。在某些情況下,可使用多次變換來獲得一可有效地存儲到非易失性存 儲器322中的較佳數據樣式,即便該數據樣式可僅通過一次變換來獲得。舉例而言,由于 電路考慮因素、功率考慮因素、設計考慮因素和速度考慮因素的任一組合,多次變換可能優 于單次變換。相應地,變換器318可將變換后的數據提供給緩沖器310和統計信息產生器 314。然后,統計信息產生器314可根據經變換的數據產生統計信息,變換器318可利用該 統計信息對數據進行進一步變換。當經過變換器318處理的數據得到最終編碼以使相關的 數據樣式成為一較佳情形時,將該數據連同用于標識在創建存儲于非易失性存儲器322中 的數據樣式時所曾使用的變換的位一起存儲到非易失性存儲器322中。在一實施例中,基 本上包含用于對變換后的數據進行完全解碼所需信息的信息可在一初始變換期間存儲到 非易失性存儲器322中,例如,與所有變換相關的信息基本上僅可在進行初始變換時存儲。圖4a是一過程流程圖,其圖解說明在本發明一實施例中與將一主機所提供的數 據有效地存儲到非易失性存儲器中相關的步驟。一存儲數據的過程400開始于步驟404, 在步驟404中,(例如)由一諸如圖2a中所示非易失性存儲系統202或圖3a中所示非易 失性存儲系統302的非易失性存儲系統從一主機獲得數據。在從主機獲得數據后,在步驟 408中對該數據進行分析。對從主機獲得的數據進行分析可包括,但不限于產生關于該數 據中特定符號或狀態的出現密度百分比的統計信息。數據在步驟408中經過分析后,在步驟412中進行變換。在所述實施例中,根據在 步驟408中所實施的分析來有效地變換數據。舉例而言,如果通過分析確定出數據中特定 符號或狀態出現的密度和頻率高于期望值,則可利用分析結果,以將所選的變換設置成減 小彼等符號或狀態的密度。應了解,當數據已呈一較佳情形的格式時,可不必對數據進行變 換。一般而言,當數據在步驟412中進行變換時,將產生一新數據樣式。為使該新數據 樣式能夠得到解碼或“解除變換”,以便可有效地重新創建從主機獲得的原始數據樣式,可 將一系列位預先考慮至、附加至或并入該新數據樣式中。該一系列位可設置用于規定對原 始數據樣式進行編碼時所曾使用的變換,或者規定一可用于將該新數據樣式解碼成原始數 據樣式的合適的逆變換。在步驟416中,確定數據變換是否完成。亦即,確定在步驟412中實施的變換是否 有效地創建了一可得到有效存儲的數據樣式。如果確定該變換尚未完成,則通常表明在變 換后的數據樣式中至少一種符號或狀態的出現頻率過高或不夠高。由此,可將變換后的數據樣式至少再進行一次變換。相應地,過程流程從步驟416前進到步驟420,在步驟420中 對變換后的數據進行分析,以產生關于已變換數據的統計信息。然后,在步驟424中,根據 分析結果來變換該變換后的數據。當該變換后的數據在步驟424中得到變換后,過程流程 返回到步驟416,在步驟416中確定該變換是否完成。如果在步驟416中確定已將數據成功變換為一較佳情形,則表明該數據無需再實 施額外的變換。此后,在步驟428中,將變換后的數據存儲在非易失性存儲器中,且有效存 儲數據的過程完成。另一種用于將一主機所提供數據存儲到非易失性存儲器中的合適的方法顯示在 圖4b中。圖4b是一過程流程圖,其圖解說明根據本發明一實施例,與另一種將一主機所提 供數據有效地存儲到非易失性存儲器中的方法相關的步驟。一存儲數據的過程400'起始 于步驟404',在步驟404'中從一主機獲得數據。在從該主機獲得數據后,在步驟408'中 對該數據進行分析。如前文所述,對從主機獲得的數據進行分析可包括產生關于該數據中 特定符號或狀態的出現密度百分比的統計信息。數據在步驟408 ‘中經過分析后,在步驟412 ‘中進行變換,例如,利用步驟408 ‘ 中所實施的分析的結果進行變換。當數據在步驟412'中進行變換時,通常會產生一新數據 樣式。為使該新數據樣式能夠得到解碼或“解除變換”以便可有效地重新創建從主機獲得 的原始數據樣式,可將一系列位并入(例如,預先考慮至)該新數據樣式中。所附加的該一 系列位可設置用于規定在對原始數據樣式進行編碼時所曾使用的變換,或者規定可用于將 該新數據樣式解碼成原始數據樣式的合適的逆變換。在步驟416'中,確定在步驟412'中實施的變換是否有效地創建了一可有效得 到存儲的數據樣式。如果確定出該變換尚未完成,則通常表明在該變換后的數據樣式中 至少一種符號或狀態的出現頻率過高或不夠高。由此,可將該變換后的數據樣式至少再進 行一次變換。相應地,過程流程從步驟416'前進到步驟424',在步驟424'中,對變換 后的數據進行變換。當該變換后的數據在步驟424'中得到變換后,過程流程返回到步驟 416',在步驟416'中確定該變換是否完成。如果在步驟416'中確定已將數據成功變換 為一較佳情形,則表明該數據無需再實施額外的變換。此后,在步驟428'中,將變換后的數 據存儲在非易失性存儲器中,且有效存儲數據的過程完成。編碼為一相對較佳情形、然后存儲到非易失性存儲器中的數據可有效地得到存 儲。例如,與存儲該數據相關的時間相對短,且存儲該數據所消耗的功率相對低。更具體而 言,對基本上所有所存儲已編碼數據情形而言,與存儲該已編碼數據相關的時間及存儲該 已編碼數據的功率要求可保持恒定,因為即使較不佳的情形亦可變換為相對較佳的情形。 另外,由于事實上不再存儲較不佳情形,亦即,將較不佳情形存儲為已變換成較佳情形的數 據,故基本上不需要使用為存儲較不佳情形所實際需要的電路。在擬遵照一來自一主機的命令從一非易失性存儲器獲得已編碼數據時,該已編碼 數據在提供給該主機之前通常得到解碼。此解碼作業一般是在與該非易失性存儲器相關的 非易失性存儲系統內進行。參考圖5,下文將根據本發明來闡述一非易失性存儲系統的一實 施例,該非易失性存儲系統包括一用于對編碼數據進行解碼的變換器。一主機506與一非 易失性存儲系統502進行通信,以使主機506與系統502之間可交換數據或信息。當主機 506試圖從與系統502相關的一非易失性存儲器522檢索數據時,將已由一變換器處理(例
1如,由圖3中變換器318編碼)的數據讀入變換器518中并提供給一變換信息處理器515。變換信息處理器515通常從經處理的數據中讀取信息,以確定為將經處理的數據 解碼而將由變換器518實施的一合適的變換。如上文所述,在存儲變換后的數據時,該變換 后的數據存儲帶有表明如下內容的信息在變換該數據時所曾使用的變換,或可用于逆向 進行在變換該數據時所曾使用的變換的逆變換。此后,變換信息處理器515研究隨已編碼 數據存儲的信息,例如,預先考慮到一經處理的數據樣式上的信息,并有效地標識一擬由變 換器518用于對已編碼數據進行解碼的合適的逆變換。在已編碼數據得到解碼,例如,在已 編碼數據恢復到一原始狀態后,將已解碼數據提供給系統502的一緩沖器510。此后,緩沖 器510將已解碼數據提供給主機506。在一實施例中,例如在一其中將標識一合適的逆變換的信息預先考慮到經處理的 數據樣式的實施例中,可基本上省去緩沖器510。當將標識一合適的逆變換的信息預先考慮 到經處理的數據樣式中時,在將經處理的數據樣式讀入變換器518之前,事實上即已知曉 該合適的逆變換。因此,由于將標識一合適的逆變換的信息預先考慮到經處理的數據中,所 以在讀入經處理的數據之前,變換器518將事實上知曉如何實施一逆變換。因此,在將經處 理的數據提供給變換器518之前,事實上不需要先對經處理的數據進行緩沖,這是因為在 從非易失性存儲器522讀取經處理的數據之前,可根據預先考慮的信息識別出合適的逆變 換。在另一實施例中,一變換器可將已解碼數據直接提供給一主機。圖6是根據本發 明一實施例,一主機及一非易失性存儲系統的示意圖,該非易失性存儲系統包括一向該主 機直接提供已解碼數據的變換器。在一主機606請求來自一非易失性存儲系統602的信息 時,系統602的一非易失性存儲器622將經處理的(例如,經編碼的)數據提供給一系統 602的一緩沖器610和一變換信息處理器615。變換數據處理器615讀取與從非易失性存 儲器622接收的經處理的數據相關的符號,該等符號指示在處理經處理的數據時所曾使用 的變換,或指示適于將經處理的數據恢復到其原始格式或已解碼格式的合適的逆變換。變換信息處理器615將信息提供給變換器618,以使通過緩沖器610從非易失性存 儲器622接收經處理的數據的變換器618可逆向進行任何與經處理的數據相關的變換。亦 即,變換器618利用由變換信息處理器615提供的信息將存儲在非易失性存儲器622中的 已編碼數據進行解碼。在變換器618將該已編碼數據進行解碼后,將已解碼數據提供給主 機 606。如上文中關于圖3所述,為滿足與一非易失性存儲器相關的存儲要求,可對數據 實施多次變換,以便可將數據編碼為一較佳情形。亦即,可對數據實施多于一次變換,以將 其變換為一視為可接受的格式,例如,以有效地確保與數據相關的存儲元件或單元處于任 一單一邏輯狀態的百分比小于一最大允許百分比。當利用多次變換對數據進行變換時,通 常利用多次逆變換將變換后的數據解碼或者將變換后的數據恢復至其原始格式,即未經變 換的格式。圖7是根據本發明一實施例,一主機及一非易失性存儲系統的示意圖,該非易失 性存儲系統包括一可在將已解碼數據提供給該主機之前利用多次迭代進行數據解碼的變 換器。響應于一來自一主機706的對存儲在一非易失性存儲系統702中的信息的請求,系 統702的一非易失性存儲器722將數據(例如,已編碼數據)提供給系統702的一變換器718和一變換信息處理器715。變換信息處理器715讀取與接收自非易失性存儲器722的 已編碼數據相關的用于指示以下內容的位在處理已編碼數據時所曾使用的變換,或適于 將已編碼數據恢復到其原始格式或經解碼格式的合適的逆變換。在所述實施例中,指示相 關的變換或逆變換的符號亦可包含指示實施變換所曾使用的順序的信息,或者實施逆變換 所擬使用的順序的信息。另外,該等符號可包括關于所曾實施的變換次數的信息。變換信息處理器715將信息提供給變換器718,以使變換器718可對已編碼數據實 施一第一次逆變換。由變換信息處理器715提供給變換器718的信息使變換器718能夠確 定一適于對已編碼數據實施的合適的逆變換。在變換器718對已編碼數據實施一第一次逆 變換后,變換器718向一緩沖器710提供已至少部分解碼的數據。如果擬對已部分解碼的數據實施額外的變換,則緩沖器710將已部分解碼的數據 提供給變換器718,且視需要提供給變換信息處理器715。在存儲在非易失性存儲器722中 的已編碼數據完全解碼后,緩沖器710將已解碼數據提供給主機706。應了解,用于指示對 數據進行編碼所實施的變換或可用于將已編碼數據解碼的逆變換的符號通常由變換器718 從提供給主機706的數據樣式中除去。一般而言,與將已編碼數據進行解碼相關的步驟可變化很大。參考圖8,下文將根 據本發明一實施例說明一種將已編碼數據解碼的方法。一過程800起始于步驟804,在步驟 804中,從一非易失性存儲器,例如從一作為總存儲系統之一部分的非易失性存儲器獲得數 據。具體而言,通常在從一主機接收到一請求已編碼數據的請求時,將已編碼數據從非易失 性存儲器讀入一變換器或一緩沖器。在從非易失性存儲器804獲得數據后,在步驟808中根據變換信息對該數據進行 變換。在所述實施例中,對存儲在非易失性存儲器中的數據進行一逆變換。如前文中所述, 通過讀取隨非易失性存儲器中所存儲數據一起存儲的符號,可確定對該數據實施的逆變 換。在步驟812中確定數據變換是否完成。亦即,確定在步驟804中獲得的數據是否已 變換回其原始格式,即數據在為進行存儲而實施變換之前的格式。如果確定該數據變換已 完成,則表明不需進行額外的逆變換來將數據完全解碼。換言之,表明該數據已得到解碼。 由此,在步驟816中將已解碼數據提供給主機,且數據解碼的過程完成。或者,如果在步驟812中確定數據變換尚未完成,則表明在數據恢復其原始格式 之前,需對數據實施至少一次額外的逆變換。因此,過程流程從步驟812移動到步驟820,在 步驟820中,根據隨該數據一起存儲的變換信息再次變換該已部分變換的數據,即已部分 解碼的數據。在完成對已部分變換的數據的變換之后,過程流程返回步驟812,在步驟812 中,確定是否已完成對在步驟804中獲得的數據的變換。如前文中所述,一變換器對輸入數據進行處理,例如編碼,以創建該輸入數據的一 輸出數據版本。變換器通常可利用任何適當的變換或變換演算法對輸入數據進行處理。圖 9a是一根據本發明一實施例用于對數據進行編碼的變換器的示意圖。一變換器918 (其可 以是圖2a中變換器218或圖3a中變換器318的表示形式)設置為從一主機接受輸入930。 變換器918對輸入930進行處理并產生輸出934,輸出934通常是輸入930的表示形式。在 一實施例中,輸入930可設置成一可視為存儲效率相對低的第一數據格式。當輸入930為 一第一格式時,變換器918可對輸入930進行處理,以使輸出934實際上成為輸入930的一經過變換或編碼的版本。如前文中所述,輸出934除為輸入930的一經過編碼的表示形式 外,通常還包括用于指示在產生輸出934時所用變換的信息。該信息可存儲在單元或額外 的符號中,例如存儲在兩個單元或兩個額外的符號中,這些存儲單元或符號事實上附加到 輸出934中含有輸入930的已變換版本的存儲單元中。變換器918通常可校平_例如減小或增大_基本上任何符號的密度。舉例而言, 變換器918可校平具有最大密度的符號或邏輯狀態,以減小彼符號的密度。在一實施例中, 可利用具有最小密度的符號來校平具有最大密度的符號,亦即,通過增大呈未編碼格式的 具有最小密度的符號的密度,可實現具有最大密度的符號的校平。在將經變換的輸出存儲 到(例如)一非易失性存儲器之前,可利用多次變換或校平過程來獲得每種符號的所期望 密度。據觀察,在某些系統中,將一邏輯狀態校平以使任何符號的出現時間均不大于約50% 的時間,會將性能速度提高約5%。圖9b中顯示一校平演算法的一實例。具體而言,圖9b是一根據本發明一實施例, 與圖9a中編碼變換器918相關的變換的示意圖。如圖中所示,輸入930'中密度最大的符 號標記為符號“D”,而輸入930'中密度最小的符號標記為符號“S”。在所述實施例中,密 度最大的符號和密度最小的符號是有可能與輸入930'相關的十六種符號中的兩種。為便 于論述,圖中僅主要顯示符號“D”和“S”。然而,應了解,其他符號可出現于與輸入930'相 關的整個數據流中的基本上任何位置上。換言之,其他符號可出現在與輸入930'相關的 數據流之前、之后或插入到該數據流內。為進行圖解說明起見,盡管符號“F”和“G”在輸入 930'中比符號“S”出現得更為頻繁,但在與輸入930'相關的數據流中顯示每個符號“F” 和“G”僅出現了一次。在所述實施例中,未實施涉及到使用符號“F”和“G”的校平。因此, 變換器918'實際上未對符號“F”和“G”的出現進行變換。雖然輸入930'是一有序的數據流,亦即,其是一串行提供給編碼變換器918'的 數據流,但該數據流亦可以一無序格式提供。當該數據流以一無序格式提供時,可修改與編 碼變換器918'相關的過程,以變換該無序數據流。輸入930'提供給編碼變換器918',編碼變換器918'設置用于利用符號“S”來 校平符號“D”。亦即,編碼變換器918'執行一通過使用符號“S”會來減小符號“D”的密度 的變換演算法。在所述實施例中,編碼變換器918'使首次出現的符號“D”或“S”保持相 同。具體而言,在符號“D”和“S”之間,無論哪個符號首先出現在輸入930'中,都將編碼為 相同的符號。所有隨后出現的符號“S”都編碼為與先前最近的編碼符號“D”或“S”相同的 符號。例如,如果先前最近的符號已編碼為符號“S”,則將當前符號“S”編碼為符號“S”;而 如果先前最近的編碼符號已編碼為符號“D”,則當前符號“S”編碼為符號“D”。所有隨后出 現的輸入符號“D”情形均以與先前最近出現的編碼符號相反的方式進行編碼。舉例而言, 如果先前最近的符號已編碼為符號“S”,則當前的符號“D”編碼為符號“D” ;如果先前最近 的符號已編碼為符號“D”,則當前的符號“D”編碼為符號“S”。如圖所示,輸出934'為輸入930'的一經校平的表示形式,其包含的符號“D”的 出現次數變少。換言之,輸出934'中符號“D”的密度減小。應了解,雖然圖中顯示符號 “S”的密度增加,但可通過利用另一符號校平符號“S”來減小符號“S”的密度。亦即,在輸 出934'中,符號“S”可標識為具有大于所期望密度的密度,且可通過將輸出934'作為一 新輸入提供給編碼變換器918',利用一具有一更小密度的不同符號或一稀疏符號實施一
17第二次變換來校平符號“S”。對于一其中存在16種狀態或符號的實施例,最多可有約240種變換演算法,這些 演算法可有效地用于校平輸入918'中密度最大和最小的符號。在此一實施例中,一變換可 涉及校平一單對符號,且與輸入930'相關的密度最小的符號在該變換之后所出現的時間 不少于約6.67%。變換器918'可用于校平符號,以使在經變換的數據樣式中不會出現超 過約50%的時間的符號。舉例而言,如圖所示,符號“D”可利用符號“S”進行校平,以使輸 出934'中符號“D”和符號“S”出現的時間均不超過約50%。變換器918'亦可用于通過(例如)順序性地實施多次變換對數據進行順序性地 編碼。當對數據進行順序性地編碼時,變換器918'可利用一密度最小的狀態或符號來校平 一密度最大的狀態或符號。在一已編碼數據集934'形成后,變換器918'可利用新的最稀 疏的符號或已編碼數據中最稀疏的符號來校平新的密度最大的符號或已編碼數據中密度 最大的符號。在一有16種符號的實施例中,當進行兩個順序性的校平過程后,在所完成的 變換中任何符號出現的時間均不超過約50%。在一實施例中,當進行兩個順序性的校平過 程后,變換器918'可利用新的最稀疏的符號校平新的密度最大的符號,即在經兩次編碼后 的數據中密度最大的符號和最稀疏的符號。此一第三次變換的結果是,在所完成的變換中 任何符號出現的時間不超過約25%。變換器918'可設置為基本上同時(即并行)校平至少兩種密集的符號。每當通過 變換器918'期間,變換器918'可設置用于利用一最稀疏的符號來校平一密度最大的符 號,同時利用一第二最稀疏的符號來校平一第二最大密度的符號。例如,如上文中所述,當 利用一密度最小的符號校平一密度最大的符號時,在已編碼數據或輸出934'中任何符號 出現的時間不超過約50%。然而,當變換器918'對數據進行順序性地編碼以便在第二次 通過變換器918'期間,利用已編碼數據中最稀疏的符號校平已編碼數據中密度最大的符 號、同時利用已編碼數據中第二最稀疏的符號校平已編碼數據中第二最大密度的符號時, 在經過兩次編碼后的數據中任何符號出現的時間不超過約25%。如上述實例所示,增加與對一組數據實施重復變換相關的額外復雜性,通常會使 一最大符號密度進一步減小。然而,與上述減小符號最大密度的過程相關的復雜性可能會 影響一存儲作業的總體性能,該影響可達到實際上可能會損害與增加校平度相關的優點的 程度。該復雜性可與為完成多次變換所需的額外計算時間、額外電路或額外功率相關。因 此,在與校平或變換過程相關的復雜性與存儲優點之間可存在折衷。另外,在為實現并行或 基本上同時的變換所需的邏輯(例如電路)成本與為順序性地實施多次變換所需的時間之 間亦可存在折衷。當數據經過編碼或校平后,在請求檢索所存儲的已編碼數據時,已編碼數據通常 變為一解碼變換器的輸入。圖10a是一根據本發明一實施例對數據進行解碼的變換器的示 意圖。一解碼變換器1018接受一輸入1030,輸入1030通常由一諸如圖9a中編碼變換器 918的編碼變換器進行處理,例如,編碼或校平。在一實施例中,解碼變換器1018和圖9a 中的編碼變換器918可為一與一非易失性存儲系統相關的總變換器之一部分。解碼變換器 1018對輸入1030進行解碼,以產生輸出1034。一般而言,輸出1034的格式與提供給一編 碼變換器的輸入(如圖9a中的輸入930)的格式相同。參照圖10b,下文將根據本發明一實施例來闡述一解碼變換器,該解碼變換器適于
18有效地反演由圖9b中的編碼變換器918'實施的編碼。已由圖9b中的編碼變換器918'編 碼的輸入1030'提供給解碼變換器1018'。解碼變換器1018'設置為利用通過讀取輸入 1030'中的符號(例如插入到輸入1030'中的兩個符號,其標識創建輸入1030'所用的變 換或對輸入1030'進行解碼所用的一合適的逆變換)而獲得的信息,來創建輸出1034'。在所述實施例中,解碼變換器1018'并不改變首次出現的符號“D”或符號“S”。解 碼變換器1018'設置為在輸入1030'中,如果在一當前出現的符號“S”之前所出現的一 符號“S”比所出現的一符號“D”更近,則解碼變換器1018'將基本上所有出現的符號“S” 均解碼為符號“S”。亦即,如果輸入1030'中先前更近的符號是符號“S”,則將當前出現的 符號“S”解碼為符號“S”。否則,將當前出現的符號“S”解碼為符號“D”,除非當前出現的 符號“S”是首次出現且其出現在一第一次出現的符號“D”之前,在這種情況下,將當前出現 的符號“S”解碼為符號“S”。解碼變換器1018'亦設置為如果符號“D”比符號“S”更近地位于一當前出現的 符號“D”之前,則將該當前出現的符號“D”解碼為符號“S”,而如果符號“S”更近地位于當 前出現的符號“D”之前,則將該當前出現的符號“D”解碼為符號“D”。如果第一次出現的符 號“D”出現在輸入1030'中所出現的任何符號“S”之前,則將該第一次出現的符號“D”解 碼為符號“D”。雖然數據可變換為使一特定符號或狀態的最大密度最小化,但數據亦可變換為有 效地確保每種符號或狀態均具有一最小密度。舉例而言,在一其中符號為“1”或“0”的二 進制系統中,可利用圖9b中的變換器918'對數據進行變換,以使經變換后的數據中符號 “ 1,,和符號“0”的百分比均大于一約為33%的最小值。盡管上文僅闡述了本發明的幾個實施例,但應了解,也可以許多種其他特定形式 來實施本發明,此不會背離本發明的精神或范圍。舉例而言,盡管上文將對數據進行編碼和 解碼的過程一般性地闡述為在一與一主機系統通信的存儲裝置上進行,但編碼過程和解碼 過程中的任一過程或兩者亦可在該主機系統上進行。換言之,一主機系統可設置用于產生 關于擬存儲數據的統計信息,并在將經變換的數據存儲到一存儲裝置上之前根據該統計信 息將該數據變換為一不同的格式。或者,一主機系統可設置為從一存儲裝置讀取已編碼數 據、確定一用于對該數據進行解碼的合適的變換,然后對該數據進行解碼。本發明通常可對任何合適的存儲裝置實施。如前文中所述,合適的存儲裝置可包 括PC卡、CompactFlash卡、多媒體卡及安全數字卡。其他合適的存儲裝置可包括,但不限 于智能媒體(SmartMedia)卡和記憶棒(Memory Stick)卡。在一實施例中,一主機可產生一數據樣式的統計信息,然后將該數據樣式及統計 信息提供給一存儲裝置。當該主機產生統計信息時,該存儲裝置可將該數據樣式變換為一 較佳格式而不需產生任何統計信息。亦即,當該主機產生與一數據樣式相關的統計信息時, 一存儲裝置可僅使用彼等統計信息來變換該數據樣式。如前文中所述,可對一給定的數據集或樣式實施多次變換,以將該數據集變換為 一合適的格式進行存儲。在一實施例中,在完成多次變換中的每次變換后,一統計信息產生 器可對各變換或各中間變換進行研究或處理,以確定為創建一可有效存儲的格式,是否需 要再進行額外的變換。雖然上文中是將一對數據進行編碼的變換器與一對數據進行解碼的變換器分別進行闡述,但應了解,一單個變換器通常既可對數據進行編碼,又可對數據進行解碼。亦即, 一非易失性存儲系統可包括一既具有數據編碼功能、又具有數據解碼功能的單個變換器。 同樣地,一統計信息產生器和一變換信息處理器可為一單個處理器的一部分,該單個處理 器設置為既確定與待變換的數據相關的統計信息,又有效地確定已變換數據是如何得到變 換的。對與基本上任一非易失性存儲系統相關的已變換數據均可實施多次逆變換。換言 之,盡管在本文中將多次逆變換闡述為適用于在一其中將數據從一非易失性存儲器讀入一 變換器、然后讀入一緩沖器的系統中變換數據,但亦可在一其中已變換數據在由一變換器 進行處理之前提供給一緩沖器的系統中實施多次逆變換。盡管上文中是闡述為使數據得到更有效存儲而實施數據變換以自較不佳的數據 樣式或邊際情形有效地創建較佳或更常見數據樣式,但應了解,亦可為了許多其他的目的 而進行數據變換來創建較佳的數據樣式。亦即,可為了基本上任何合適的目的而對一數據 集中出現的符號實施校平。舉例而言,對一擬從一個位置傳輸到另一位置的數據樣式內的 狀態進行校平可使該傳輸過程更有效地進行,且亦可使接收過程更有效地進行。此等傳輸 過程可包括在一網絡內進行的有線傳輸或在一網絡內進行的無線傳輸。上文中已例如參照圖9b將一變換闡述為適用于利用一狀態來校平另一狀態。如 上文中所述,在擬減小一種以上的狀態時,可使用多次變換。應了解,通常可將單次通過此 一變換器設置為減小多于一種狀態。舉例而言,可在單次通過此一變換器中校平兩個或更 多個符號或狀態對。當在單次通過此一變換器中校平多于一個狀態對時,為完成對數據的 一給定變換或校平而需通過變換器的總次數可減少。一般而言,與數據編碼和解碼相關的步驟可變化很大。可增加、去除、修改及重排 各步驟,此不會背離本發明的精神或范圍。例如,在一編碼或變換過程中,對于一如前文中 所述在分析原始的或未經變換的數據時即確定為完成總的數據變換而需使用的變換的實 施例中,基本上可以省去分析已變換數據的步驟。或者,分析已變換數據的步驟可居于確定 一總體變換是否已完成之前。在上文中已將對一數據集內的狀態進行變換或校平闡述為適用于將該數據集的 已變換版本內任一狀態的最大密度基本最小化,或者適用于將該數據集的已變換版本內任 一狀態的最小密度基本最大化。亦可對各狀態實施校平來使一特定狀態的最大密度基本最 小化、同時使另一狀態的最小密度基本最大化。應了解,亦可對各狀態實施校平來有效地確 保一數據集的已變換版本內所有狀態的密度均落入一給定范圍內。換言之,可將各狀態校 平為在一數據集的已變換版本內,任一狀態的密度均不超過一上限閾值,且任一狀態的密 度均不下降到低于一下限閾值。雖然不同狀態的上限閾值可基本上相同,且不同狀態的下 限閾值可基本上相同,但不同狀態的各閾值亦可不同。在上文中,將確定一數據樣式或數據集內各特定狀態的密度闡述為確定該數據樣 式內各特定狀態的一百分比。在一實施例中,例如在一其中數據樣式的長度基本上固定的 實施例中,確定各特定狀態的密度可基本上僅涉及計數這些特定狀態所出現的次數。因此, 確定各特定狀態的密度通常可涉及使一數值(如一計數值或一百分比)與每個狀態所出現 的次數相關聯。雖然對一數據集實施的變換或校平的量通常可選擇為使該數據集的一已變換版
20本內的狀態可滿足所期望的最大和最小密度,但變換或校平的量亦可根據其他標準進行選 擇,此不背離本發明的精神或范圍。舉例而言,校平的量可選擇為使計算開銷不超過一定的 量。將校平量選擇為使計算開銷不超過一定的量可顯著提高數據存儲的效率,而不會顯著 影響與變換和存儲數據相關的總體系統的性能。盡管一規定計算開銷不超過一特定水平的 實施例可能會稍微損害一變換過程,例如,一特定狀態的最大密度可能稍高于較佳情況,但 如果總體系統的性能保持在一特定水平,則上述損害可視為是可接受的。因此,應將這些實 例視為舉例說明性而非限制性,并且本發明并非僅限于本文所給出的詳細闡述,而是可在 隨附權利要求范圍內進行修改。
權利要求
一種用于在一存儲系統中存儲信息的方法,所述信息為一第一數據格式,該方法包括產生與所述第一數據格式相關的統計信息,所述第一數據格式經安置以包含兩個或兩個以上符號,所述統計信息經安置以指示所述兩個或兩個以上符號的一具有最高密度的第一符號和一具有最低密度的第二符號出現數量;將所述信息從所述第一數據格式變換為一第二數據格式,所述變換減少所述信息中所述第一符號的密度并增加所述第二符號的密度從而使得所述第二數據格式中的符號比所述第一數據格式中的符號分布更平均;及將所述第二數據格式的信息存儲到一與所述存儲系統相關的存儲器中,其中將所述第二數據格式的信息存儲到所述存儲器中包括將一標識符存儲到所述存儲器中,所述標識符指示一用于將所述信息從所述第一數據格式變換為所述第二數據格式的變換。
2.根據權利要求1所述的方法,其中利用所述統計信息將所述信息從所述第一數據格 式變換為所述第二數據格式包括將所述信息從所述第一數據格式變換為所述第二數據格式,以減小所述信息中所述第 一符號的密度。
3.根據權利要求1所述的方法,其中利用所述統計信息將所述信息從所述第一數據格 式變換為所述第二數據格式包括將所述信息從所述第一數據格式變換為所述第二數據格式,以增加所述信息中所述第 一符號的密度。
4.根據權利要求1所述的方法,其中在所述存儲系統上接收所述第一數據格式的信息 包括從一主機系統接收所述信息,所述主機系統與所述存儲系統進行通信。
5.根據權利要求1所述的方法,其中至少一個與存儲所述第二數據格式的信息相關的 成本小于或等于至少一個與存儲所述第一數據格式的信息相關的成本。
6.根據權利要求1所述的方法,其中所述存儲系統用于存儲所述第二數據格式的信息 的功率小于或等于所述存儲系統用于存儲所述第一數據格式的信息的功率。
7.根據權利要求1所述的方法,其中所述第一數據格式包含十六個符號。
8.根據權利要求1所述的方法,其中所述第一符號的密度是與所述第一數據格式相關 聯的最高密度,且所述第二符號的密度是與所述第一數據格式相關聯的最低密度。
9.根據權利要求1所述的方法,其進一步包括隨后讀取所述第二數據格式中的所述信 息并將所述信息變換回所述第一數據格式。
10.一種用于在一存儲系統中檢索信息的方法,所述信息以一第一數據格式存儲于所 述存儲系統的一存儲器中,所述方法包括分析所述第一數據格式的信息,所述第一數據格式包含兩個或兩個以上符號,包含一 具有最高密度的第一符號和一具有最低密度的第二符號,其中分析所述第一數據格式的信 息包括確定至少一種合適的變換以用于將所述信息從所述第一數據格式變換為一第二數 據格式;及將所述信息從所述第一數據格式變換為所述第二數據格式,所述變換減少所述信息中 所述第一符號的密度并增加所述第二符號的密度從而使得所述第二數據格式中的符號比所述第一數據格式中的符號分布更平均。
11.根據權利要求10所述的方法,其中利用與所述第二數據格式的兩個或兩個以上符 號相關的統計信息對所述第二數據格式進行初始變換。
12.根據權利要求10所述的方法,其中分析所述第一數據格式的信息包括讀取所述第一數據格式的信息的一段,其中所述段包含用于標識所述合適的變換的符號。
13.根據權利要求10所述的方法,其中所述存儲系統與一主機系統進行通信,所述方 法進一步包括將所述第二數據格式的已變換信息提供給所述主機系統。
14.根據權利要求10所述的方法,其中至少一個與將所述第一數據格式的信息存儲到 所述存儲器中相關的成本不大于至少一個與將所述第二數據格式的信息存儲到所述存儲 器中相關的成本。
15.根據權利要求10所述的方法,其中所述存儲系統用于將所述第一數據格式的信息 存儲到所述存儲器中的功率不大于所述存儲系統用于將所述第二數據格式的信息存儲到 所述存儲器中的功率。
16.一種存儲裝置,其包括一存儲器;一輸入接收器,所述輸入接收器設置用于接收信息,所述信息設置為一第一數據格式, 所述第一數據格式包含兩個或兩個以上符號;一統計信息產生器,所述統計信息產生器設置用于產生與所述第一數據格式的兩個或 兩個以上符號相關的統計信息;及一變換器,所述變換器使用所述統計信息將所述信息從所述第一數據格式變換為一第 二數據格式,所述變換器進一步將所述第二數據格式的信息存儲到所述存儲器中,所述第 一和第二數據格式包含一具有最高密度的第一符號和一具有最低密度的第二符號的數量, 所述變換器減少所述信息中所述第一符號的密度并增加所述第二符號的密度從而使得所 述第二數據格式中的符號頻率比所述第一數據格式中的符號頻率分布更平均。
17.根據權利要求16所述的存儲裝置,其中與存儲所述第二數據格式的信息相關的成 本小于或等于與存儲所述第一數據格式的信息相關的成本。
18.根據權利要求16所述的存儲裝置,其中所述統計信息產生器進一步設置用于通過 確定一與所述第一數據格式的一第一符號的出現次數相關的數值來確定所述第一數據格 式的第一符號的一密度,所述數值可表示所述密度。
19.根據權利要求18所述的存儲裝置,其中所述變換器進一步設置用于將所述信息從 所述第一數據格式變換為所述第二數據格式,以減小所述信息內所述第一符號的密度。
20.根據權利要求18所述的存儲裝置,其中,所述變換器進一步設置用于將所述信息 從所述第一數據格式變換為所述第二數據格式,以增大所述信息內所述第一符號的密度。
21.根據權利要求18所述的存儲裝置,其中所述變換器進一步設置用于隨所述第二數 據格式的信息存儲一標識符,所述標識符設置用于大體上標識至少一個用于將所述信息從 所述第一數據格式變換為所述第二數據格式的變換。
22.根據權利要求21所述的存儲裝置,其進一步包括一信息處理器,所述信息處理器設置用于讀取所述標識符,所述信息處理器進一步設置用于與所述變換器相配合,以使所 述變換器標識至少一個用于將所述信息從所述第二數據格式變換為所述第一數據格式的 合適的變換。
23.根據權利要求22所述的存儲裝置,其中所述輸入接收器設置用于介接一主機系 統,且所述變換器進一步設置用于在所述變換器將所述信息從所述第二數據格式變換為所 述第一數據格式后,將所述第一數據格式的信息提供給所述主機系統。
24.根據權利要求16所述的存儲裝置,其中所述輸入接收器設置用于介接一主機系 統,以從所述主機系統接收所述第一數據格式的信息。
25.根據權利要求16所述的存儲裝置,其中所述存儲裝置是一介接一主機系統的非易 失性存儲系統。
26.根據權利要求25所述的存儲裝置,其中所述非易失性存儲系統可從所述主機系統 移除。
27.根據權利要求25所述的存儲裝置,其中所述存儲器是一非易失性存儲元件。
28.根據權利要求25所述的存儲裝置,其中所述存儲裝置是一選自由一PC卡、一 CompactFlash卡、一多媒體卡、一安全數字卡、一記憶棒卡及一智能媒體卡組成的群組中的 卡。
29.根據權利要求25所述的存儲裝置,其中所述存儲裝置是一單芯片裝置。
30.一種用于在一存儲單元陣列中存儲數據的方法,一單獨的存儲器單元具有兩個或 兩個以上用于表示一個或一個以上數據位的狀態,所述方法包括接收用于存儲在所述存儲陣列中的數據,所接收的數據處于一第一格式,處于所述第 一格式的數據存儲需要將單元編程至一具有最高密度的第一狀態和一具有最低密度的第 二狀態;分析處于所述第一格式的所述數據以確定哪些數據部分應被變換和哪些變換應被施 加,其中無論對應于所述第一狀態的數據部分或者對應于所述第二狀態的數據部分中哪個 數據部分首次出現,都不進行變換;所有隨后出現的對應于所述第二狀態的數據部分經編 碼為與先前最近的編碼符號相同的符號;所有隨后出現的對應于所述第一狀態的數據部分 以與先前最近出現的編碼符號相反的方式進行編碼;以及隨后將所述數據寫入到所述存儲單元陣列中。
31.根據權利要求30所述的方法,其中所述存儲單元陣列合并在一具有一接口并符合 以下標準的可移動存儲卡中PC卡、CompactFlash卡、多媒體卡、安全數字卡、記憶棒卡或 智能媒體卡。
32.根據權利要求30所述的方法,其中由一主機系統執行所述分析,所述主機系統與 所述存儲單元陣列通信,所述主機系統向所述存儲陣列發送由所述分析得出的信息。
33.根據權利要求30所述的方法,其進一步包括在將所述數據存儲到所述存儲單元陣 列中之前,將所述數據從所述第二格式變換為一第三格式,所述數據以所述第三格式存儲。
全文摘要
本發明揭示用于將數據變換為一可有效地存儲于一非易失性存儲器中的格式的方法和裝置。根據本發明的一個方面,一種用于將一第一數據格式的信息存儲到一存儲系統中的方法包括產生與該第一數據格式相關的統計信息,及利用該統計信息將該信息從該第一數據格式變換為一第二數據格式。在將該信息變換為該第二數據格式后,將該信息存儲到一存儲器中。將該第二數據格式的該信息存儲到該存儲器中包括存儲一標識一用于將該信息變換為該第二數據格式的變換的標識符。在一實施例中,與存儲該第二數據格式的信息相關的成本小于或等于與存儲該第一數據格式的信息相關的成本。
文檔編號G06F12/00GK101867375SQ20101013936
公開日2010年10月20日 申請日期2003年8月29日 優先權日2002年8月29日
發明者斯蒂芬·J·格羅斯, 杰弗里·S·岡沃爾 申請人:桑迪士克股份有限公司