專利名稱:數據存儲和重放設備的制作方法
技術領域:
本發明涉及一種用于向存儲介質(特別是閃速存儲器)存儲數據以及從存儲介質中重放數據的設備和方法。優選地,本發明涉及諸如音頻或視頻流之類的可實時重放數據的存儲和重放。
背景技術:
美國專利申請No 2003/0217323解決了與閃速存儲器的退化有關的問題。如眾所周知的,閃速存儲器和其他存儲介質可能會有誤碼。處理這些誤碼的傳統方式是使用糾錯碼(ECC)來存儲數據并且在讀取數據時使用ECC來糾正誤碼。然而,隨著存儲器磨損,閃速存儲器的誤碼率隨著時間而增加。結果,糾錯最終可能變得不可能。美國專利申請No2003/0217323描述了不耐用單元的檢測最初怎樣用于給糾錯電路提供與認為是不可靠的比特有關的信息。最終,對太多微弱比特的檢測用于觸發將數據塊重寫或重新移動到更好的存儲區域。美國專利申請No2003/0033567和美國專利申請2003/0043647類似地公開了當檢測到太多誤碼時將閃速存儲器中的數據移動到更好的存儲器區域。因此,有效地舍棄了不耐用的存儲器區域。
在必須舍棄存儲器區域之前的平均經過的使用期限取決于ECC的質量。例如漢明碼的簡單ECC舍棄存儲器區域比例如雷德所羅門碼的復雜ECC更快。為了盡可能長的保持有用的存儲器,因此,希望使用盡可能最強的ECC。然而,較強的ECC需要用于編碼和解碼的相當可觀的計算開銷。針對典型的可實時重放數據,例如音頻或視頻數據(例如,MP3數據),在需要不高于預定讀取速度的情況下,由于ECC解碼速度導致的讀取速度限制通常不會影響重放速度。因此,在這種情況下人們可以使用較強的ECC來使可用的存儲器空間最大化。這對于實時記錄期間的編碼也是相同的。然而,因為下載預先記錄數據期間的編碼或用于下載的傳輸期間的解碼限制了下載速度,所以即使針對這種類型的數據,選擇ECC的使用也包含折衷(trade off)。此外,計算集中的ECC的使用增加了功率消耗。
使用此種折衷來針對存儲介質的整個有效壽命選擇特定的ECC在媒質的早期使用期期間不必要地犧牲了速度和/或功率消耗。例如閃速存儲器的存儲介質的誤碼率在存儲介質的有效壽命期間惡化。因此,在有效壽命期間的一個階段使給定量的存儲器可用的ECC在介質的使用期早期使相同量的存儲器可用是不必要地復雜的。
發明內容
因此,本發明的一個目的在于有效使用誤碼率在有效壽命期間變化的存儲介質,特別是閃速存儲器,而允許對介質的較高存取速度。
本發明的一個目的是使經歷有效存儲器使用的這種存儲介質的下載速度最大化,特別是使用于存儲可實時重放介質數據的下載速度最大化。
本發明的另一個目的在于減小存儲和重放設備中的功率消耗,特別是在電池供電的裝置中的功率消耗。
根據本發明的數據存儲和重放設備在權利要求1中闡述。根據本發明,所述設備使用存儲介質(典型的閃速存儲器電路)性能演化測量來預測從存儲介質區域中得到的誤碼率。將所述預測用作從用于在存儲數據之前對數據進行編碼的多個可用ECC中選擇ECC的基礎。應該注意的是,“編碼成ECC”典型地包含系統編碼,其中拷貝數據并且添加奇偶符號,在這種情況下,寫之前的編碼表示根據接收到的數據,而不是根據已經從所涉及的存儲器區域得到的數據,來確定奇偶符號。這不排除隨后使用其他ECC對所得到的(并且如果必要則進行了校正的)數據的編碼。然而,應該理解的是,編碼還包含非系統編碼,其中,將數據單元轉變為代碼字,而并不總是將數據拷貝到代碼字中。優選地,從多個可用ECC中選擇ECC,選擇最快的可編碼ECC,在給定所述信息的情況下,預測所述ECC產生不高于預定的解碼后誤碼率。因此,可以在解碼之后預定的未來時間內將誤碼率保持在低于可接受水平的同時,使設備的數據傳輸速度最大化。此外,使用需要最小計算的此種ECC還減小了計算所需的功率消耗。這減小了總功率消耗,這在電池供電的裝備中可能是重要的因素。
優選地,將解碼器電路配置用于從所述區域讀取數據和表示針對所述區域選擇的ECC的信息,并且用于根據所表示的ECC對來自所述區域的數據進行解碼。因此,無需另外的編碼。然而,在另一個實施例中,隨后可以根據多個ECC對所述數據進行編碼。只要已經將數據存儲在存儲介質中,則另外的編碼不會對接收速度產生損害。在這種情況下,解碼器可以選擇根據任何ECC進行解碼,例如,最不容易產生誤碼的ECC。如果在這種情況下將解碼過的數據用于實時信號再現(例如,音頻和/或視頻信號再現),則可以選擇不對再現速度產生損害的任意ECC。
解碼器電路還可以從已經對數據進行編碼的多個ECC中選擇ECC,以便根據選定的ECC來對數據進行解碼。可以基于與預測誤碼率有關的信息來選擇ECC。在這種情況下,在將誤碼率保持在低于可接受水平的同時,可以使設備的數據傳輸的可變速度最大化。當用于編碼的計算開銷不是很嚴格從而可以使用較強的ECC時,如果最初沒有用自適應性地選擇的ECC寫入數據,例如,如果在實時記錄期間已經寫入了數據,則這同樣適用。然后可以在記錄期間或之后根據不同ECC添加編碼信息(例如,奇偶符號)。
優選地,針對存儲介質的各個區域來確定與預測誤碼率有關的各個信息,并且獨立地針對每一個區域自適應性地選擇ECC。這樣,可以采用不同區域的質量之間的差別來實現較高的存取速度,所述差別可能是由于例如或多或少的較強的早先使用。
將使用以下附圖針對本發明實施例的示例來描述這些和其他目的和有利方面。
圖1示出了存儲和重放裝置。
圖2示出了另外的存儲和重放裝置。
具體實施例方式
圖1示出了存儲和重放裝置,包括輸入/編碼器電路10、閃速存儲器電路12、誤碼率評估電路14、讀取/解碼器電路16和輸出電路18。例如,輸入/編碼器電路10具有可以與因特網相連的輸入11,用于接收下載數據。可選地,輸入/編碼器電路10可以具有另外的輸入(未示出),用于接收例如麥克風或攝像機的實時音頻和/或視頻數據。輸入/編碼器電路10具有與閃速存儲器電路12相連的輸出、以及與誤碼率評估電路14相連的接口。讀取/解碼器電路16具有與閃速存儲器電路12和誤碼率評估電路14相連的接口、以及與輸出電路18相連的輸出。例如,輸出電路18包括顯示屏(未單獨地示出)和/或揚聲器(未單獨地示出),用于再現由在閃速存儲器電路12中存儲的數據進行編碼的視頻和/或音頻信號。可選地,讀取/解碼器電路16可以具有另外的輸出(未示出),用于按照比輸出電路18更高的速率向其他設備(未示出)傳輸得到的數據。閃速存儲器電路12包括存儲性能122和復用器120,以使全部的輸入/編碼器電路10、誤碼率評估電路14和讀取/解碼器電路16能夠存取相同的存儲器122。
在操作中,讀取/解碼器電路16用于從閃速存儲器電路12中讀取數據,并且用于將數據轉化為確定例如由輸出電路18再現的音頻和/或視頻信號的信號。讀取/解碼器電路16通過根據ECC(糾錯碼)進行解碼,來執行對來自閃速存儲器電路12的數據的糾錯。典型地,以ECC編碼的數據包括實際數據的拷貝加上額外的奇偶符號。在這種情況下,糾錯解碼包括確定數據和奇偶符號的組合是否是ECC的代碼字,如果不是,確定與ECC最接近的代碼字,在這種情況下使用來自最接近代碼字的數據。在該解碼過程中,例如通過根據得到的數據和奇偶符號的組合來計算多個校驗子(syndrome),并且按照已計算的校驗子的函數來產生糾正,來確定最接近的代碼字。然而,在不脫離本發明的情況下,可以使用其他類型的解碼,例如,針對非系統代碼的解碼,其中所述代碼字不包括數據的拷貝。
輸入/編碼器電路10將數據寫入閃速存儲器電路12用于以后讀取。典型地,例如經由因特網,以比用于在輸出電路18處重放所需的數據率更高的數據率,從另一個存儲設備下載數據。典型地,輸入/編碼器電路10通過針對接收到的數據來計算和添加奇偶符號,將數據編碼為ECC。輸入/編碼器電路10將編碼過的數據(例如,原始數據加上奇偶符號)寫入閃速存儲器電路12中用于以后讀取。然而,在不脫離本發明的情況下,可以使用其他類型的編碼,例如,使用非系統性代碼,其他類型的編碼不局限于增加冗余的奇偶符號,而包括將數據映射到不必定包括數據拷貝的代碼字中。
按照存儲器質量的函數,動態地選擇用于向閃速存儲器電路12寫入和從中讀取的ECC。讀取數據塊的誤碼數目作為時間的函數隨著存儲器的磨損而增加。將預測的誤碼數目用于選擇將使用多個不同的可用ECC中的哪一個。預測的誤碼越多,選定的ECC越“重(heavy)”,即,ECC的校正能力和所需計算時間之間的比越高。
評估電路14可使用任意方便的方式來提供誤碼數目的預測。例如,在一個實施例中,評估電路14定期從閃速存儲器電路12中讀取數據(或監測通過讀取/解碼器電路16讀取的數據),并且使用ECC解碼的結果來檢測誤碼,將檢測到誤碼的頻率用作將來的誤碼率的預測。在另一個實施例中,評估單元14可以用比用于比特讀取所需的精確度更高的精確度來測量來自存儲單元的輸出信號的模擬電平,以便確定錯誤的比特讀取的可能性。也以使用這些技術和其他技術的組合。典型地,因為誤碼率可能依賴于相關的每一個區域的先前使用,所以評估單元14針對存儲器的各個不同區域進行各個預測(其中,區域是例如存儲器矩陣的行、或僅可以一起擦除的單元塊)。評估電路14執行重復的質量評估,典型地周期性地執行,但是針對每一個特定的區域,優選地,至少在使特定區域可用于寫入下載的數據之前執行質量評估。
典型地,將輸入/編碼器電路10配置用于根據多個不同ECC中的可選擇的一個來執行編碼。可以使用公知的ECC,例如,漢明碼或所羅門碼,可能使用具有彼此不同的字長或奇偶比特數目的多個版本的這些類型的代碼,或使用針對行和列使用任意ECC的乘積碼。還可以在具有彼此不同參數的不同版本的雷德所羅門代碼之間、和/或在不同版本的漢明碼之間做出選擇,從而反抗誤碼的計算量和魯棒性也可以變化。典型地,雷德所羅門代碼可以糾正比漢明碼更多的誤碼,但是需要更多的計算來對數據進行編碼(以確定奇偶符號)和/或對數據進行解碼(以確定校驗子和有關的校正)的。輸入/編碼器電路10根據增加計算的需求(在選定的排列中的ECC使得排列中具有較高計算需求的每一個ECC也具有較高的糾錯能力)來對可用的ECC進行排列。在讀取之前,輸入/編碼器10從評估電路14得到關于預測誤碼率的信息,并且按照該信息的函數,選擇將用于編碼的ECC。有效地,將可能的預測誤碼率的范圍劃分為連續的子范圍,每一個子范圍均與根據排列的各個ECC相關,使得較高排列(計算強度更高)的ECC與更高的預測誤碼率相關。輸入/編碼器電路10根據與預測誤碼率相關的ECC來對輸入數據進行編碼。因此,當預測的誤碼率較高時,將使用計算強度更高的ECC。輸入/編碼器電路10存儲識別在解碼期間隨后要使用的ECC的信息。典型地,將該信息與存儲數據的存儲器區域(例如通過使用一些預定的繁重ECC,保護以免于錯誤)相關聯地存儲在存儲器電路12中,或存儲在單獨的存儲器(未示出)中。
典型地,關于存儲器電路12的不同區域的不同預測誤碼率的信息是可用的。在這種情況下,優選地,輸入/編碼器電路10逐個區域來采用ECC,選擇每一個區域所允許的最不繁重的ECC(例如,在這里,區域是一起擦除的存儲器陣列的各個行或存儲單元的塊)。
在高速下載數據的情況下,選定的ECC影響下載速度。平均起來,僅可以按照允許ECC編碼數據的計算的速率來發送連續的數據塊。優選地,輸入/編碼器電路10具有某種機制,以依賴于其對執行下一個數據塊的編碼的準備來減緩數據的源。例如,可以使用請求/確認握手機制或請求重試機制。在一定程度上,可以通過在將ECC編碼數據寫入到更易于產生誤碼的存儲器電路122中之前,將輸入數據緩沖到低誤碼緩沖存儲器(未示出)中,來減輕對減緩下載速度的需要。可以使用諸如SRAM或DRAM存儲器之類的單獨的緩沖器,或具有較低預測誤碼率的存儲器122的一部分。但是當包含對于音頻或視頻數據典型的長下載文件時,該方法受到可用緩沖器大小的限制。輸入數據的平均速度必須匹配ECC編碼速度。
應該理解的是,不能對存儲在存儲器電路122的最后區域中并且隨后重新得到(retrieve)的數據來執行根據選定ECC的編碼(例如,奇偶符號的計算)。在重新得到(retrieval)之后,數據易于出錯。因此,基本上必須在接收到數據時進行編碼。當然,還應該理解的是,公開的實施例僅是示例,并且存在許多可選示例。例如,在不脫離本發明的情況下,可以隨后重新得到存儲的ECC編碼數據并使用“較重的”ECC對其進行編碼。只要最初的ECC足夠強而能夠糾正期望數目的誤碼,這就能進行,而沒有太多的誤碼風險。因此,可以將較強的ECC用于讀取,這保護存儲器使之免于隨后的磨損。如果所有使用的ECC提供數據的拷貝加上奇偶符號,則可以并行地使用ECC。作為另一個示例,評估電路14可以設計用于響應于在寫入到區域之前來自輸入/編碼器電路10的請求,測試存儲器電路122的所述區域,并且預測其誤碼率。在這種情況下,不需要存儲關于評估的信息以用于隨后不確定時間的使用。與誤碼率有關的信息的可以具有與誤碼率成比例的數字的形式,但是代替地,評估單元可以通過使用根據所需ECC來對誤碼率進行分類的信息,來選擇ECC。
此外,盡管已經使用了選擇ECC以用于高速下載的示例,應該理解的是,也可以選擇以較低速度記錄(例如,“直播的”音頻和/或視頻數據)的ECC。盡管在這種情況下用于編碼的計算時間無關,但是與預定誤碼率一致地使用較輕的ECC是有用的,使得促進了用于上載目的的從存儲器電路122中的較高速度的讀取。這即使在數據率固定時也是有利的,因為最小計算強度的ECC的使用使功率消耗最小化,延長了便攜式音頻和/或視頻設備的電池壽命。在可選實施例中,使用針對相同數據的多個ECC來存儲數據,使得讀取/解碼器電路16能夠選擇最方便的ECC用于解碼。優選地,輸入/編碼器電路10將數據劃分為預定大小的塊,并且將每一個數據塊寫入預定大小的存儲單元中,其中所述塊留下足夠的空間以用于由于任何ECC而導致的最大量的附加數據(例如,奇偶符號),使得存儲單元尺寸與實際使用的ECC無關。因此,可以與選定ECC無關地執行與重新得到有關的尋址,并且可選地,隨后可以改變ECC而無需移動數據塊。
重放時,讀取/解碼器16讀取標識已經用于編碼的ECC的信息,從存儲器電路12中讀取數據,并且根據標識的ECC來對數據進行解碼。典型地,重放速度如此慢,使得用于解碼的計算開銷未對重放速度造成問題。在用較重的ECC隨后對存儲數據進行重新編碼的另外的實施例中,讀取/解碼器電路16使用較重的ECC。在這種情況下,在進行重新編碼之前讀取數據時,僅使用動態選擇的ECC。
在特定的應用中,讀取/解碼器16還可以用于以較高速度傳輸數據,例如,在其中存儲器電路122用作數據源的另一下載期間。在這種情況下,用于解碼的ECC會限制下載速度。當輸入/編碼器利用一個選定的ECC(優選地,每個存儲器區域一個ECC)對所寫數據進行編碼時,讀取/解碼器16存取標識該ECC的信息,并且使用標識的ECC。在這種情況下,該ECC可以影響下載速度。可選地,當已經將以多個ECC編碼的數據存儲在存儲器單元122中時,讀取/解碼器16可以查詢評估電路14以獲得與最后預測的誤碼率有關的信息,并且選擇能夠按照該速率糾錯的最少計算的ECC。這可以逐個區域地進行,使得可以將不同的ECC用于不同的存儲器區域。將選定的ECC用于對數據進行解碼。因此,可以實現最大下載速度。
應該理解的是,ECC解碼不會確保無誤的解碼。因此,并不根據不應該發生誤碼的要求來選擇選定的ECC。而是,優選地,執行這樣的標準應該使用可最快實現的ECC,在給定存儲數據的存儲器電路12的區域的預測誤碼率的情況下,所述ECC產生不高于預定的解碼后誤碼率。在例外的情況下,如果速度考慮并不避免使用較重ECC,則解碼器和編碼器甚至可以切換到較高的ECC。
盡管已經示出了單獨的輸入/編碼器電路10、評估電路14和讀取/解碼器電路16,應該理解的是,實際上這些功能可以使用一個電路來具體實現,或以不同的方式分布在不同電路中。例如,可以使用適當編程的可編程處理器用于編碼和解碼,或可以使用單個適當編程的處理器同時用于編碼和解碼。類似地,評估電路14可以是適當編程的處理器,同樣可能用于編碼和/或解碼。可以使用諸如盤或因特網信號之類的計算機程序產品將程序固定的編程或加載。圖2示出了電路示例,其中可編程處理器20配置用于執行來自程序存儲器22的程序,以執行評估功能、ECC的選擇、編碼和解碼。
權利要求
1.一種數據存儲和重放設備,包括存儲介質(122);誤碼率評估單元(14),配置用于基于使用期間存儲介質(122)的性能的測量,產生與從存儲介質(122)的區域中重新得到的誤碼率的預測有關的信息;編碼器(10),用于在將編碼的接收數據存儲到區域中之前,執行將接收數據編碼為ECC的編碼,編碼器(10)基于來自誤碼率評估單元(14)的所述信息來自適應性地選擇ECC。
2.如權利要求1所述的數據存儲和重放設備,具有輸入電路(10),所述輸入電路(10)配置用于基于選定的ECC來適應接收數據的接收速率。
3.如權利要求1所述的數據存儲和重放設備,其中,從多個可用ECC中選擇ECC,使得選擇最快可編碼的ECC,在給定所述信息的情況下,預測所述ECC產生不高于預定的解碼后誤碼率。
4.如權利要求1所述的數據存儲和重放設備,包括解碼器電路(16),所述解碼器電路(16)配置用于從所述區域讀取數據和表示針對區域所選的ECC的信息,并且用于根據表示的ECC,對來自區域的數據進行解碼。
5.如權利要求4所述的數據存儲和重放設備,具有輸出(18),所述輸出(18)用于至少以在音頻和/或視頻重放中使用的預定重放速率來輸出已解碼的數據。
6.如權利要求1所述的數據存儲和重放設備,其中,所述存儲介質(122)包括多個區域,所述誤碼率評估單元(14)針對各個區域來評估各個信息,所述編碼器(10)具體地基于特定區域的信息來選擇每個區域的ECC。
7.如權利要求1所述的數據存儲和重放設備,其中,存儲介質是閃速存儲器電路(122)。
8.一種數據存儲和傳輸設備,包括存儲介質(122);誤碼率評估單元(14),配置用于基于使用期間存儲介質(122)的性能的測量,產生與從存儲介質(122)的區域中重新得到的誤碼率的預測有關的信息;解碼器(16),用于根據ECC來執行數據的解碼,所述數據是從所述存儲介質(122)的區域中重新得到的,所述解碼器(16)基于來自所述誤碼率評估單元(14)的所述信息,來從多個可用ECC中選擇ECC。
9.如權利要求8所述的數據存儲和傳輸設備,具有輸出電路(18),所述輸出電路(18)配置用于基于選定的ECC來適應重新得到且已解碼的數據的傳輸率。
10.如權利要求8所述的數據存儲和傳輸設備,包括編碼器電路(10),所述編碼器電路(10)配置用于根據ECC中的選定之一來存儲初始編碼的數據,所述選定之一是基于來自所述誤碼率評估單元(14)的所述信息而自適應性地選擇的。
11.如權利要求8所述的數據存儲和傳輸設備,包括編碼器電路(10),所述編碼器電路(10)配置用于存儲用于重新得到和解碼的數據,使得根據全部的所述多個ECC來對相同的數據進行編碼。
12.如權利要求8所述的數據存儲和傳輸設備,其中存儲介質是閃速存儲器電路(122)。
13.一種將數據寫入存儲介質(122)中的方法,所述方法包括在使用期間收集所述存儲介質(122)的性能的測量;基于所述測量,產生與從存儲介質(122)的區域中重新得到的誤碼率的預測有關信息;從編碼器(10)支持的多個ECC中選擇ECC,所述選擇自適應地響應于產生的信息。在將編碼的接收數據存儲到區域中之前,用編碼器(10)將接收數據編碼為選定的ECC。
14.一種從存儲介質中讀取數據的方法,所述方法包括在使用期間收集所述存儲介質(122)的性能的測量;基于所述測量,產生與從存儲介質(122)的區域中重新得到的誤碼率的預測有關信息;從解碼器器(16)支持的多個ECC中選擇ECC,所述選擇自適應地響應于產生的信息;在將編碼的接收數據存儲到區域中之前,根據選定的ECC,用解碼器(16)對接收數據進行解碼。
15.一種計算機程序產品,包括機器指令,當將所述機器指令加載到可編程計算機(20,22)時,所述機器指令使計算機(20,22)執行根據權利要求13和/或14所述的方法。
全文摘要
一種數據存儲和重放設備,使用存儲介質(典型地為閃速存儲器電路)的性能演變的測量,來預測從存儲介質的區域中重新得到的誤碼率。所述預測用作用于動態地選擇在存儲數據之前對數據進行編碼的ECC的基礎。從多個可用ECC中選擇ECC,使得選擇可最快編碼的ECC,在給定所述信息的情況下,預測所述ECC產生不高于預定的解碼后誤碼率。這樣,在解碼之后的預測未來時間段內使誤碼率保持低于可接受水平的同時,可以使設備的數據傳輸的速度最大化。在對典型地為音頻或視頻數據的數據進行解碼時,以預定的速度進行解碼和重放。在另一個實施例中,使用多個ECC來存儲數據,并動態地選擇ECC用于編碼,使得可以使輸出數據率最大化,或可以使重放時的功率消耗最小化。
文檔編號H03M13/35GK101031971SQ200580033037
公開日2007年9月5日 申請日期2005年7月22日 優先權日2004年8月2日
發明者塞巴斯蒂安·安吉爾, 尼古拉斯·蘭伯特, 盧多維克斯·M·G·M·托于澤, 維克托·M·G·范艾科特, 馬丁努斯·W·布盧姆 申請人:皇家飛利浦電子股份有限公司