TWI455144B - 使用於快閃記憶體的控制方法與控制器 - Google Patents

使用於快閃記憶體的控制方法與控制器 Download PDF

Info

Publication number
TWI455144B
TWI455144B TW099124156A TW99124156A TWI455144B TW I455144 B TWI455144 B TW I455144B TW 099124156 A TW099124156 A TW 099124156A TW 99124156 A TW99124156 A TW 99124156A TW I455144 B TWI455144 B TW I455144B
Authority
TW
Taiwan
Prior art keywords
data
error correction
correction code
specific
control information
Prior art date
Application number
TW099124156A
Other languages
English (en)
Other versions
TW201205586A (en
Inventor
wen long Wang
Tsung Chieh Yang
Original Assignee
Silicon Motion Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Silicon Motion Inc filed Critical Silicon Motion Inc
Priority to TW099124156A priority Critical patent/TWI455144B/zh
Priority to US13/187,499 priority patent/US8751904B2/en
Publication of TW201205586A publication Critical patent/TW201205586A/zh
Application granted granted Critical
Publication of TWI455144B publication Critical patent/TWI455144B/zh

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2906Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2906Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
    • H03M13/2918Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes with error correction codes in three or more dimensions, e.g. 3-dimensional product code where the bits are arranged in a cube
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/27Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes using interleaving techniques

Description

使用於快閃記憶體的控制方法與控制器
本發明係提供一種快閃記憶體的控制機制,尤指一種使用於一快閃記憶體的控制方法與相關的控制器。
近年來由於快閃記憶體的技術不斷地發展,各種可攜式記憶裝置(例如:符合SD/MMC、CF、MS、XD標準之記憶卡)或具備快閃記憶體之固態硬碟(Solid State Drive,SSD)被廣泛地實施於諸多應用中。因此,這些記憶裝置中之快閃記憶體的存取控制遂成為相當熱門的議題。
以常用的NAND型快閃記憶體而言,其主要可區分為單階細胞(Single Level Cell,SLC)與多階細胞(Multiple Level Cell,MLC)兩大類之快閃記憶體。單階細胞快閃記憶體中之每個被當作記憶單元的電晶體只有兩種電荷值,分別用來表示邏輯值0與邏輯值1。另外,多階細胞快閃記憶體中之每個被當作記憶單元的電晶體的儲存能力則被充分利用,係採用較高的電壓來驅動,以透過不同級別的電壓在一個電晶體中記錄兩組(或以上)位元資訊(00、01、11、10);理論上,多階細胞快閃記憶體的記錄密度可以達到單階細胞快閃記憶體的記錄密度之兩倍,這對於曾經在發展過程中遇到瓶頸的NAND型快閃記憶體之相關產業而言,是非常好的消息。
相較於單階細胞快閃記憶體,由於多階細胞快閃記憶體之價格較便宜,並且在有限的空間裡可提供較大的容量,故多階細胞快閃記憶體很快地成為市面上之可攜式記憶裝置競相採用的主流。然而,多階細胞快閃記憶體的不穩定性所導致的問題也一一浮現。為了確保記憶裝置對快閃記憶體之存取控制能符合相關規範,快閃記憶體的控制器通常備有某些管理機制以妥善地管理資料之存取。
依據相關技術,有了這些管理機制的記憶裝置還是有不足之處。舉例來說,使用者可能基於其使用習慣而不斷地寫入具有某些特定資料型樣的資料,而這些特定資料型樣特別容易造成錯誤(例如:寫入錯誤、讀取錯誤...等);雖然在記憶裝置中設置有隨機函數發生器(Randomizer)來調整資料以期解決這樣的問題,卻由於傳統的低成本設計,以致調整後的資料不夠隨機。此外,多階細胞之快閃記憶體的製造成本不斷降低的同時,多階細胞之快閃記憶體的特性亦不斷地劣化,即,更容易發生存取錯誤。因此,需要一種新穎的方法針對該控制器所存取之資料來進行妥善的管理,以減少錯誤的發生。尤其是針對重要的資料,例如操作系統的資訊等,更需要妥善管理,以減少錯誤的發生。
因此,本發明的目的之一在於提供一種使用於快閃記憶體的控制器及其相關控制方法,以解決上述先前技術所遇到的難題,使資料存取的出錯率降低。
根據本發明之實施例,其係揭露一種使用於一快閃記憶體的控制方法。該控制方法應用於資料的寫入,並包含有:壓縮自一主裝置所接收的一第一資料以產生一第二資料;根據第一資料與第二資料來產生一記錄資料,其中記錄資料至少記載有一錯誤更正碼控制資訊;依據該錯誤更正碼控制資訊,至少對第一、第二資料兩者中的一特定資料進行一錯誤更正保護以產生一第三資料;以及將第三資料寫入快閃記憶體中。
根據本發明之實施例,其另揭露了一種使用於一快閃記憶體的控制方法。該控制方法應用於資料的讀出,並包含有:由快閃記憶體中讀取出一第三資料,第三資料具有一記錄資料,記錄資料記載有一壓縮指示資訊與一錯誤更正碼控制資訊;依據所記載之錯誤更正碼控制資訊以及第三資料,進行一錯誤更正解碼以產生一第二資料;以及依據所記載之壓縮指示資訊,解壓縮第二資料以產生一第一資料至一主裝置或輸出第二資料至主裝置。
此外,根據本發明之實施例,其係揭示了一種使用於一快閃記憶體的控制器。該控制器係應用於資料的寫入,並包含有一第一處理電路及一第二處理電路。第一處理電路係用以壓縮自一主裝置所接收的一第一資料以產生一第二資料,並根據第一資料與第二資料來產生一記錄資料,其中記錄資料至少記載有一錯誤更正碼控制資訊。第二處理電路係耦接至第一處理電路,並用以依據錯誤更正碼控制資訊,至少對第一、第二資料兩者中的一特定資料進行一錯誤更正保護以產生一第三資料,並將第三資料寫入快閃記憶體中。
另外,根據本發明之實施例,其係揭示了一種使用於一快閃記憶體的控制器。該控制器係應用於資料的寫入,並包含有一第一處理電路及一第二處理電路。第二處理電路係用以由快閃記憶體中讀取出一第三資料,第三資料具有一記錄資料,記錄資料記載有一壓縮指示資訊與一錯誤更正碼控制資訊,第二處理電路並依據所記載之錯誤更正碼控制資訊以及第三資料,進行一錯誤更正解碼以產生一第二資料。第一處理電路係耦接至第二處理電路,並用以依據所記載之壓縮指示資訊,解壓縮第二資料以產生一第一資料至一主裝置或輸出第二資料至主裝置。
請參考第1圖,第1圖為依據本發明較佳實施例之一種記憶裝置100的示意圖,其中本實施例之記憶裝置100尤其可為可攜式記憶裝置,例如:符合SD/MMC、CF、MS、XD標準之記憶卡,或通用序列匯流排快閃碟(Universal Serial Bus Flash Drive,USB Flash Drive,亦稱為USB Flash Disk),即所謂的隨身碟,或是固態硬碟(SSD,Solid State Drive)但不以此為限。記憶裝置100包含有:一快閃記憶體(Flash Memory)105;以及一控制器110,用來存取快閃記憶體105,其中該控制器例如一記憶體控制器110。控制器110包含有一介面邏輯115、一第一處理電路120、一第二處理電路125,介面邏輯115用以接收來自於一主裝置(Host device)的第一資料D1,主裝置例如是一主機(未繪示於第1圖),而第一資料D1可為影音資料、開機資料或一般資料等,舉例來說,為了將第一資料D1儲存於快閃記憶體105中,主裝置先傳送第一資料D1至控制器110,由控制器110將資料寫入至快閃記憶體105,之後若主裝置為了讀取第一資料D1,則其會告知控制器110進行讀取,由控制器110將所寫入的資料讀取出,再經由第一、第二處理電路120與125的資料處理後,由控制器110透過介面邏輯115將第一資料D1傳送至主裝置。第一、第二處理電路120與125的操作是基於快閃記憶體105的資料儲存特性,用以避免時常寫入具有某些特定資料型樣之資料時所容易造成的錯誤(例如:寫入錯誤、讀取錯誤...等);例如,主裝置所欲儲存的第一資料D1係為上述的某一特定資料型樣,經由第一、第二處理電路120與125的資料處理,可將第一資料D1轉換為不同的資料型樣而儲存於快閃記憶體105中,以避免儲存錯誤,當主裝置欲讀出所儲存的第一資料D1時,只要利用第一、第二處理電路120與125對所儲存的資料型樣進行反向的資料處理,就可將快閃記憶體105所儲存的資料型樣轉換為第一資料D1的資料型樣並將第一資料D1輸出至主裝置,對主裝置來說讀取時 也不會出錯。
其中,第一處理電路120包括有一壓縮模組1205與一解壓縮模組1210,雖然壓縮模組1205與解壓縮模組1210在本實施例係分開進行壓縮操作與解壓縮操作,然而這僅是為了讀者方便閱讀而分,實際上在其他實施例中壓縮與解壓縮操作也可以實作於同一電路模組中,因此,本實施例的壓縮模組1205與解壓縮模組1210並非是本發明的限制。
當主裝置欲寫入第一資料D1時,第一資料D1係被壓縮模組1205所處理,反之,當主裝置欲從快閃記憶體105讀取資料時,所讀取的資料係由解壓縮模組1210處理,之後再將處理後的資料送至主裝置。第二處理電路125則包括一錯誤更正碼模組1215、一隨機函數發生器(Randomizer)1220與一解隨機函數發生器(de-Randomizer)1225,當主裝置寫入第一資料D1時,第一處理電路120會輸出一特定資料,而第二處理電路125中的錯誤更正碼模組1215係從第一處理電路120接收該特定資料並對所接收的特定資料進行錯誤更正編碼保護以產生第三資料D3,之後隨機函數發生器1220對第三資料D3的位元進行資料整形(Data Shaping),資料整形的目的是避免第三資料D3中出現一連串連續的位元‘1’或位元‘0’(或其他容易出現存取錯誤的資料型樣)儲存至快閃記憶體105中所發生的存取錯誤,因此,隨機函數發生器1220係將第三資料D3的位元整形為具有隨機出現且不連續的位元‘1’與位元‘0’的資料型樣,之後整形後的資料型樣係被儲存至快閃記憶體105的儲存區塊中,另外,當主裝置從快閃記憶體105讀取資料(例如整形後的資料型樣)時,解隨機函數發生器1225先將所讀取的資料進行反向的資料整形(例如:將具有隨機出現且不連續的位元‘1’與位元‘0’的資料型樣反向整形為具有一連串連續的位元‘1’或位元‘0’之編碼保護的資料位元),之後錯誤更正碼模組1215再對整形後之編碼保護的資料位元進行錯誤更正碼的解碼操作,解碼後的資料接著被送至第一處理電路120。隨機函數發生器1220與解隨機函數發生器1225在本實施例雖然是分開進行資料整形與反向資料整形的操作,然而這僅是為了方便讀者閱讀而分,實際上在其他實施例中兩電路的操作可實作於同一電路中,因此,本實施例的隨機函數發生器1220與解隨機函數發生器1225並非為本發明的限制。
詳細而言,壓縮模組1205則包含有一壓縮單元1230、一緩衝單元1235與一決定單元1240,解壓縮模組1210則至少包含有一解壓縮單元1245;當主裝置寫入第一資料D1至快閃記憶體105時,首先,壓縮單元1230壓縮第一資料D1的資料內容來產生第二資料D2,而緩衝單元1235則先暫存另一路進來的第一資料D1,接著決定單元1240會比較第一資料D1、第二資料D2的資料量大小來判斷其壓縮比率,以決定使用第一資料D1或第二資料D2作為所輸出的特定資料。請注意到,當第一資料D1的資料量大小係固定或控制器110可得知時,決定單元1240得以一預定之標準資料量大小與第二資料D2的資料量大小來判斷其壓縮比率,而無需參考第一資料D1的資料量。當壓縮比率過低時,甚至壓縮後之第二資料D2的資料量比第一資料D1的資料量還大時,決定單元1240係決定使用未經壓縮的第一資料D1作為所輸出的特定資料,忽略暫存於緩衝單元1235中的第二資料D2,這是因為第一資料D1可能是已經過壓縮的影音資料,再經過多次壓縮將無法有效提升壓縮的效率,甚至可能造成第二資料D2的資料量比第一資料D1的資料量大,所以,當決定單元1240判斷出壓縮比率過低時,會選擇輸出第一資料D1作為特定資料至第二處理電路125,反之,當決定單元1240判斷出壓縮比率並未過低時,會選擇輸出壓縮後的第二資料D2作為特定資料至第二處理電路125,而在輸出該特定資料的同時,決定單元1240也會依據第一、第二資料D1與D2來產生一記錄資料D_REC(參考從第一、第二資料D1與D2中所決定出的特定資料,相對應地產生記錄資料D_REC),記錄資料D_REC與該特定資料(第一、第二資料D1、D2兩者其中之一)會被一同輸出至第二處理電路125;其中,記錄資料D_REC至少記載了壓縮指示資訊INFO_COM與錯誤更正碼控制資訊INFO_ECC。壓縮指示資訊INFO_COM係至少指示出該筆特定資料是否為壓縮的資料以及如果是壓縮資料則其壓縮比率為何,而錯誤更正碼控制資訊INFO_ECC則至少指示出對該筆特定資料而言錯誤更正編碼保護所能夠使用之錯誤更正碼的位元數(例如,指示出錯誤更正碼的檢查碼(parity check code)的位元數)。
錯誤更正碼控制資訊INFO_ECC所記載之錯誤更正碼的位元數可隨第二資料D2的壓縮比率(亦即第一、第二資料D1、D2之資料量的差值)而變,以進行動態地改變錯誤更正編碼的保護能力;當第一、第二資料D1、D2之資料量的差值小於一特定差值(壓縮比率較低)時,相對應的錯誤更正保護所使用之錯誤更正碼的位元數會小於一特定位元數(一般的錯誤更正編碼保護),反之,當第一、第二資料量D1、D2的差值大於該特定差值(壓縮比率較高)時,則相對應的錯誤更正保護所使用之錯誤更正碼的位元數會大於該特定位元數(增強的錯誤更正編碼保護)。
請參照第2圖,第2圖是於寫入操作時第1圖所示之控制器110對第一資料D1的資料內容進行資料處理的示意圖。在此例中,自主裝置所接收的第一資料D1係具有1K位元組的資料量(請注意到,此實施例中之第一資料D1資料量大小係依快閃記憶體所規範之最小錯誤更正保護單位而定,熟悉此項記憶者當得依不同快閃記憶體之規範而改變第一資料D1的資料量大小),而壓縮單元1230壓縮第一資料D1所產生的第二資料D2則具有0.9K位元組(壓縮比率為10%),且決定單元1240係選定第二資料D2作為所輸出的特定資料,並產生具有1位元組(1 Bytes)大小(此僅為一實施例,並非本發明之限制)的記錄資料D_REC至錯誤更正碼模組1215,記錄資料D_REC中的壓縮指示資訊INFO_COM會記載特定資料係為一壓縮後的資料以及具有10%的壓縮比率,錯誤更正碼控制資訊INFO_ECC會記載後續錯誤更正碼模組1215所使用之錯誤更正編碼保護的位元數,而本實施例的目的在於增強錯誤更正編碼保護的效果,因此,資料壓縮所節省出的位元空間將被錯誤更正編碼保護所使用,也就是說,由於資料被壓縮,所以可增加使用較多的錯誤更正編碼位元來進行編碼保護。請注意到,記錄資料D_REC得附加於第二資料D2的前方,如此一來,日後進行讀取運作時,即可快速判別其壓縮與錯誤更正碼資訊。
在另一實施例中,自主裝置所接收的第一資料D1係具有1K位元組的資料量,而壓縮單元1230壓縮第一資料D1所產生的第二資料D2則具有1.1K位元組(壓縮比率為0.5%)。由於第二資料D2的資料量係大於第一資料D1的資料量,決定單元1240係選定第一資料D1作為所輸出的特定資料,並產生具有1位元組(1 Bytes)大小(此僅為一實施例,並非本發明之限制)的記錄資料D_REC至錯誤更正碼模組1215,記錄資料D_REC中的壓縮指示資訊INFO_COM會記載特定資料係沒有進行壓縮過的資料(具有0%的壓縮比率),錯誤更正碼控制資訊INFO_ECC會記載後續錯誤更正碼模組1215所使用之錯誤更正編碼保護的位元數。請注意到,記錄資料D_REC得附加於第一資料D1的前方,如此一來,日後進行讀取運作時,即可快速判別其壓縮與錯誤更正碼資訊。
如第2圖所示,當該特定資料是經過壓縮的第二資料D2,則錯誤更正碼模組1215係以較多位元來對特定資料(亦即第二資料D2)與記錄資料D_REC進行動態的錯誤更正編碼保護,錯誤更正碼模組1215所輸出之第三資料D3中具有的錯誤更正編碼位元比第一資料D1經過錯誤更正編碼保護所使用到的編碼位元更多,所以錯誤更正編碼保護的效果也較佳;而如果特定資料是未經壓縮的第一資料D1,則錯誤更正碼模組1215係以較少位元數(可視為於一基本錯誤更正編碼保護模式下的一基本使用的位元數)來對特定資料進行錯誤更正編碼保護。由於當主裝置寫入一連串連續的位元‘1’或位元‘0’(容易發生存取錯誤的資料型樣)至快閃記憶體105時本發明之實施例的第一處理電路120可先壓縮該串資料型樣以產生一壓縮後資料型樣,所以,易發生存取錯誤之連續位元‘1’或位元‘0’的資料型樣會先被壓縮而轉換為不具一連串連續位元‘1’或位元‘0’的壓縮後資料型樣,如此可先降低出錯的機率。接著,因為資料壓縮的關係,錯誤更正碼模組1215使用較多位元來進行錯誤更正編碼保護,所以也可進一步降低發生無法更正的存取錯誤的機率,最後,再由隨機函數發生器1220對錯誤更正碼模組1215輸出的資料型樣進行資料整形,並將整形後的資料儲存至快閃記憶體105,如此一來,控制器110存取快閃記憶體105時出錯的機率將可大幅地降低。
此外,需注意的是,在本實施例中,分別對未經壓縮的第一資料D1與記錄資料D_REC及經過壓縮的第二資料D2與記錄資料D_REC進行錯誤更正編碼保護並資料整形後所產生的資料,其資料量大小幾乎或甚至相同,亦即,第三資料D3的資料量相同於對第一資料D1與記錄資料D_REC進行錯誤更正保護後所產生的總資料量。然而,資料量大小相同並非是本發明的限制。由於快閃記憶體的寫入係以頁面為最小寫入單位,亦即,進行寫入運作時,每次寫入快閃記憶體的資料量大小係與快閃記憶體的頁面大小有關。例如,快閃記憶體的一個頁面包含4個區段(sector),每個區段係為快閃記憶體所規範之最小錯誤更正碼保護單位。一般而言,進行錯誤更正保護後所產生的總資料量與其他存取控制資料的資料量總和會等於一個區段的大小。如此一來,於後續的存取寫入運作中,即不會遭遇到欲寫入快閃記憶體之資料量不一致的問題。
至於對資料的讀出而言,首先,解隨機函數發生器1225先對由快閃記憶體105中所讀出的資料型樣進行反向的資料整形以產生第三資料D3,由於第三資料D3中所具有之記錄資料D_REC係記載了錯誤更正碼控制資訊INFO_ECC,所以錯誤更正碼模組1215可依據所記載之錯誤更正碼控制資訊INFO_ECC及第三資料D3,進行錯誤更正解碼來產生一特定資料。其中,錯誤更正碼控制資訊INFO_ECC係指示出錯誤更正解碼所使用之一錯誤更正碼的位元數,如前所述,該位元數係依各筆資料的資料壓縮比率而變的,例如,解隨機函數發生器1225另從快閃記憶體105中讀出的另一資料型樣並進行反向的資料整形來產生第四資料D4,第四資料D4所具有之一記錄資料也會記載有一錯誤更正碼控制資訊,其中第四資料D4之錯誤更正碼控制資訊與第三資料D3之錯誤更正碼控制資訊INFO_ECC可能會分別指示出使用到不同長度的錯誤更正碼位元數。
另外,此處的特定資料可能是經過壓縮的第二資料D2或是未經壓縮的第一資料D1,因為第三資料D3所具有之記錄資料D_REC也記載了壓縮指示資訊INFO_COM,所以,接著第一處理電路120中的解壓縮模組1210可根據壓縮指示資訊INFO_COM的指示(是否該特定資料係一壓縮後的資料)來決定是否對特定資料進行解壓縮或是直接輸出特定資料至主裝置端,換言之,如果特定資料是第二資料D2,則解壓縮模組1210係解壓縮該特定資料來產生第一資料D1至主裝置,而如果特定資料是第一資料D1,則解壓縮模組1210係直接輸出該特定資料至主裝置。對主裝置來說,其所知道的是第一資料D1儲存於快閃記憶體105的某一邏輯位址(Logical address),而不會得知實際上是哪一資料型樣儲存於快閃記憶體105的實體位址(Physical address),但主裝置讀取一先前寫入至快閃記憶體105中的資料時仍可正確無誤地讀出所儲存的資料,且如前段說明所述,經由第一處理電路120與第二處理電路125的資料處理運作,壓縮資料所得到較多的位元空間可進行較多位元數的錯誤更正編碼保護,因此,資料存取的出錯率將可被大幅地降低。
需注意的是,本實施例中的隨機函數發生器1220與解隨機函數發生器1225係為非必要的(Optional)電路元件,換言之,在其他實施例中,也可不使用到隨機函數發生器1220與解隨機函數發生器1225,如此,控制器110讀寫快閃記憶體105時係寫入前述的第三資料D3至快閃記憶體105以及從快閃記憶體105讀取出第三資料D3,而非存取經過資料整形後的資料型樣。節省使用隨機函數發生器1220與解隨機函數發生器1225可減少電路成本的耗費,而就資料存取來說,第三資料大部分已經過壓縮處理及提升錯誤更正編碼保護。壓縮後的資料中通常亦不會存在連續的位元‘1’與位元‘0’,故進行資料壓縮亦可獲得相當於資料整形的效果。故即便無資料整形的操作,其出錯率也已降至可接受的水平。
此外,錯誤更正碼模組1215也可另根據該特定資料的重要性來動態地進行不同位元的錯誤更正碼保護,例如,決定單元1240在產生記錄資料D_REC中的錯誤更正碼控制資訊INFO_ECC時可根據第一、第二資料D1、D2的資料量比較結果(亦即壓縮比率)以及該特定資料的重要性來決定錯誤更正碼控制資訊INFO_ECC中所記錄之錯誤更正保護使用的位元數。或者,在另一實施例中,錯誤更正碼模組1215除了參考決定單元1240根據第一、第二資料D1、D2的資料量比較結果所決定之錯誤更正保護使用的位元數外,也可參考該特定資料的重要性來微調錯誤更正保護使用的位元數。舉例來說,當該特定資料被分類為一重要資料(例如開機資料)時,決定單元1240可決定最後錯誤更正保護使用的位元數或是透過錯誤更正碼模組1215調整錯誤更正保護使用的位元數,以使錯誤更正碼模組1215可使用較多的位元來對該筆資料進行錯誤更正編碼保護,而當該特定資料被分類為一較不重要的資料時,錯誤更正碼模組1215係使用較少的位元(基本的位元數)來對該筆資料進行錯誤更正編碼保護。一般而言,系統操作資訊、開機資訊等重要資訊通常會有較高的壓縮比率。而控制器110亦得透過其他方式分析該筆資料之重要程度,或者主裝置得直接指示控制器110該筆資料之重要程度。
為了使讀者更清楚明白記憶裝置100中各電路元件的操作,請參照第3圖,第3圖是第1圖所示之記憶裝置100進行資料寫入的操作流程圖;為了節省篇幅,資料讀取的操作流程則不另贅述。倘若大體上可達到相同的結果,並不需要一定照第3圖所示之流程中的步驟順序來進行,且第3圖所示之步驟不一定要連續進行,亦即其他步驟亦可插入其中;其詳細流程步驟係說明於下:步驟305:開始;步驟310:介面邏輯115接收來自於一主裝置的第一資料D1;步驟315:壓縮單元1230壓縮第一資料D1的資料內容來產生第二資料D2;步驟320:緩衝單元1235暫存第一資料D1;步驟325:決定單元1240比較第一資料D1、第二資料D2的資料量以決定使用第一資料D1或第二資料D2作為輸出的特定資料,並產生記錄資料D_REC;步驟330:錯誤更正碼模組1215接收特定資料與記錄資料D_REC並對所接收之特定資料與記錄資料D_REC進行錯誤更正編碼保護以產生第三資料D3;步驟335:隨機函數發生器1220對第三資料D3的位元進行資料整形;步驟340:將資料整形後的資料型樣儲存至快閃記憶體105;以及步驟345:結束。
以上所述僅為本發明之較佳實施例,凡依本發明申請專利範圍所做之均等變化與修飾,皆應屬本發明之涵蓋範圍。
100...記憶裝置
105...快閃記憶體
110...控制器
115...介面邏輯
120...第一處理電路
125...第二處理電路
1205...壓縮模組
1210...解壓縮模組
1215...錯誤更正碼模組
1220...隨機函數發生器
1225...解隨機函數發生器
1230...壓縮單元
1235...緩衝單元
1240...決定單元
1245...解壓縮單元
第1圖為依據本發明較佳實施例之一記憶裝置的示意圖。
第2圖為於資料寫入操作時第1圖所示之控制器對第一資料D1的資料內容進行資料處理的示意圖。
第3圖為第1圖所示之記憶裝置進行資料寫入的操作流程圖。
100...記憶裝置
105...快閃記憶體
110...控制器
115...介面邏輯
120...第一處理電路
125...第二處理電路
1205...壓縮模組
1210...解壓縮模組
1215...錯誤更正碼模組
1220...隨機函數發生器
1225...解隨機函數發生器
1230...壓縮單元
1235...緩衝單元
1240...決定單元
1245...解壓縮單元

Claims (24)

  1. 一種使用於一快閃記憶體的控制方法,其包含有:壓縮自一主裝置所接收之一第一資料以產生一第二資料;根據該第一資料與該第二資料來產生一記錄資料,其中該記錄資料至少記載有一錯誤更正碼控制資訊;依據該記錄資料,至少對該第一、第二資料兩者中之一特定資料進行一錯誤更正保護以產生一第三資料;以及將該第三資料寫入該快閃記憶體中。
  2. 如申請專利範圍第1項所述之控制方法,其中根據該第一資料與該第二資料來產生該記錄資料之步驟包含有:比較該第一、第二資料,以決定使用該第一資料或該第二資料作為該特定資料;以及參考所決定之該特定資料來相對應地產生該記錄資料。
  3. 如申請專利範圍第1項所述之控制方法,其中該錯誤更正碼控制資訊記載有該錯誤更正保護所使用之一錯誤更正碼的位元數。
  4. 如申請專利範圍第3項所述之控制方法,其中該第一資料與該第二資料分別具有一第一資料量與一第二資料量;以及該錯誤更正保護係一動態錯誤更正保護,當該第一、第二資料量的差值小於一特定差值,該動態錯誤更正保護所使用之該錯誤更正碼的位元數小於一特定位元數,而當該第一、第二資料量的差值大於該特定差值,則該錯誤更正保護所使用之該錯誤更正碼的位元數係大於該特定位元數。
  5. 如申請專利範圍第4項所述之控制方法,其中該第三資料所具有之一第三資料量相同於對該第一資料進行基本錯誤更正保護所產生的資料量。
  6. 如申請專利範圍第1項所述之控制方法,其中該記錄資料另記載有一壓縮指示資訊;以及產生該第三資料之步驟包含有:對該特定資料與該記錄資料進行該錯誤更正保護以產生該第三資料。
  7. 如申請專利範圍第1項所述之控制方法,其中根據該第一資料與該第二資料來產生該記錄資料之步驟包含有:依據該第一、第二資料之比較結果與資料重要性,決定該錯誤更正碼控制資訊。
  8. 如申請專利範圍第1項所述之控制方法,其中產生該第三資料之步驟包含有:依據該特定資料之資料重要性以及該錯誤更正碼控制資訊,對該特定資料進行該錯誤更正保護以產生該第三資料。
  9. 一種使用於一快閃記憶體的控制方法,其包含有:由該快閃記憶體中讀取出一第三資料,該第三資料具有一記錄資料,該記錄資料記載有一壓縮指示資訊與一錯誤更正碼控制資訊;依據所記載之該錯誤更正碼控制資訊以及該第三資料,進行一錯誤更正解碼以產生一第二資料;以及依據所記載之該壓縮指示資訊,解壓縮該第二資料以產生一第一資料至一主裝置或輸出該第二資料至該主裝置。
  10. 如申請專利範圍第9項所述之控制方法,其中該錯誤更正碼控制資訊係指示該錯誤更正解碼所使用之一錯誤更正碼的位元數。
  11. 如申請專利範圍第10項所述之控制方法,其另包含有:由該快閃記憶體中讀取出一第四資料,該第四資料所具有之一記錄資料記載有一錯誤更正碼控制資訊,其中該第四資料之該錯誤更正碼控制資訊與該第三資料之該錯誤更正碼控制資訊係分別指示不同的錯誤更正碼位元數。
  12. 一種使用於一快閃記憶體的控制器,其包含有:一第一處理電路,用以壓縮自一主裝置所接收之一第一資料以產生一第二資料,並根據該第一資料與該第二資料來產生一記錄資料,其中該記錄資料至少記載有一錯誤更正碼控制資訊;以及一第二處理電路,耦接至該第一處理電路,用以依據該記錄資料,至少對該第一、第二資料兩者中之一特定資料進行一錯誤更正保護以產生一第三資料,並將該第三資料寫入該快閃記憶體中。
  13. 如申請專利範圍第12項所述之控制器,其中該第一處理電路係比較該第一、第二資料,以決定使用該第一資料或該第二資料作為該特定資料,以及參考所決定之該特定資料來相對應地產生該記錄資料。
  14. 如申請專利範圍第12項所述之控制器,其中該錯誤更正碼控制資訊記載有該錯誤更正保護所使用之一錯誤更正碼的位元數。
  15. 如申請專利範圍第14項所述之控制器,其中該第一資料與該第二資料分別具有一第一資料量與一第二資料量;以及該錯誤更正保護係一動態錯誤更正保護,當該第一、第二資料量的差值小於一特定差值,該動態錯誤更正保護所使用之該錯誤更正碼的位元數小於一特定位元數,而當該第一、第二資料量的差值大於該特定差值,則該錯誤更正保護所使用之該錯誤更正碼的位元數係大於該特定位元數。
  16. 如申請專利範圍第15項所述之控制器,其中該第三資料所具有之一第三資料量相同於對該第一資料進行基本錯誤更正保護所產生的資料量。
  17. 如申請專利範圍第12項所述之控制器,其中該記錄資料另記載有一壓縮指示資訊,以及該第二處理電路係對該特定資料與該記錄資料進行該錯誤更正保護以產生該第三資料。
  18. 如申請專利範圍第12項所述之控制器,其中該第一處理電路係依據該第一、第二資料之比較結果與資料重要性,決定該錯誤更正碼控制資訊。
  19. 如申請專利範圍第12項所述之控制器,其中該第二處理電路係依據該特定資料之資料重要性以及該錯誤更正碼控制資訊,至少對該第一、第二資料兩者中之該特定資料進行該錯誤更正保護以產生該第三資料。
  20. 一種使用於一快閃記憶體的控制器,其包含有:一第二處理電路,用以由該快閃記憶體中讀取出一第三資料,該第三資料具有一記錄資料,該記錄資料記載有一壓縮指示資訊與一錯誤更正碼控制資訊,並依據所記載之該錯誤更正碼控制資訊以及該第三資料,進行一錯誤更正解碼以產生一第二資料;以及一第一處理電路,耦接至該第二處理電路,用以依據所記載之該壓縮指示資訊,解壓縮該第二資料以產生一第一資料至一主裝置或輸出該第二資料至該主裝置。
  21. 如申請專利範圍第20項所述之控制器,其中該錯誤更正碼控制資訊係指示該錯誤更正解碼所使用之一錯誤更正碼的位元數。
  22. 如申請專利範圍第21項所述之控制器,其中該第二處理電路係由該快閃記憶體中讀取出一第四資料,該第四資料所具有之一記錄資料記載有一錯誤更正碼控制資訊,其中該第四資料之該錯誤更正碼控制資訊與該第三資料之該錯誤更正碼控制資訊係分別指示不同的錯誤更正碼位元數。
  23. 一種使用於一記憶裝置之存取方法,該方法包含:接收一第一資料;對該第一資料進行壓縮以產生一第二資料;依據該第二資料之一壓縮比率選擇性地將該第一資料或該第二資料選為一特定資料;以及依據該壓縮比率對該特定資料進行錯誤更正保護以產生一第三資料,其中該第三資料係用以存入該記憶裝置。
  24. 如申請專利範圍第23項所述之方法,其中依據該壓縮比率對該特定資料進行錯誤更正保護以產生該第三資料之步驟更包含:依據該壓縮比率決定錯誤更正保護之保護程度。
TW099124156A 2010-07-22 2010-07-22 使用於快閃記憶體的控制方法與控制器 TWI455144B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
TW099124156A TWI455144B (zh) 2010-07-22 2010-07-22 使用於快閃記憶體的控制方法與控制器
US13/187,499 US8751904B2 (en) 2010-07-22 2011-07-20 Controlling methods and controllers utilized in flash memory device for referring to data compression result to adjust ECC protection capability

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
TW099124156A TWI455144B (zh) 2010-07-22 2010-07-22 使用於快閃記憶體的控制方法與控制器

Publications (2)

Publication Number Publication Date
TW201205586A TW201205586A (en) 2012-02-01
TWI455144B true TWI455144B (zh) 2014-10-01

Family

ID=45494553

Family Applications (1)

Application Number Title Priority Date Filing Date
TW099124156A TWI455144B (zh) 2010-07-22 2010-07-22 使用於快閃記憶體的控制方法與控制器

Country Status (2)

Country Link
US (1) US8751904B2 (zh)
TW (1) TWI455144B (zh)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8407449B1 (en) 2010-02-26 2013-03-26 Western Digital Technologies, Inc. Non-volatile semiconductor memory storing an inverse map for rebuilding a translation table
US8898548B1 (en) 2012-08-24 2014-11-25 Western Digital Technologies, Inc. Methods, data storage devices and systems having variable size ECC page size
US9268682B2 (en) 2012-10-05 2016-02-23 Skyera, Llc Methods, devices and systems for physical-to-logical mapping in solid state drives
US9507523B1 (en) 2012-10-12 2016-11-29 Western Digital Technologies, Inc. Methods, devices and systems for variable size logical page management in a solid state drive
US9489296B1 (en) 2012-10-17 2016-11-08 Western Digital Technologies, Inc. Methods, devices and systems for hardware-based garbage collection in solid state drives
US9442975B2 (en) * 2013-03-13 2016-09-13 Guidance Software, Inc. Systems and methods for processing data stored in data storage devices
CN103761988B (zh) * 2013-12-27 2018-01-16 华为技术有限公司 固态硬盘及数据移动方法
JP5855150B2 (ja) * 2014-03-06 2016-02-09 ウィンボンド エレクトロニクス コーポレーション 半導体記憶装置
US9354955B1 (en) 2014-03-19 2016-05-31 Western Digital Technologies, Inc. Partial garbage collection for fast error handling and optimized garbage collection for the invisible band
KR102143521B1 (ko) 2014-04-21 2020-08-11 삼성전자 주식회사 불휘발성 메모리 시스템, 이를 포함하는 메모리 카드 및 불휘발성 메모리 시스템의 동작방법
US9710199B2 (en) 2014-11-07 2017-07-18 International Business Machines Corporation Non-volatile memory data storage with low read amplification
US10162700B2 (en) 2014-12-23 2018-12-25 International Business Machines Corporation Workload-adaptive data packing algorithm
US9710324B2 (en) * 2015-02-03 2017-07-18 Qualcomm Incorporated Dual in-line memory modules (DIMMs) supporting storage of a data indicator(s) in an error correcting code (ECC) storage unit dedicated to storing an ECC
US9996299B2 (en) * 2015-06-25 2018-06-12 Western Digital Technologies, Inc Memory health monitoring
US9524794B1 (en) 2015-08-10 2016-12-20 Sandisk Technologies Llc Constrained data shaping
US9712190B2 (en) 2015-09-24 2017-07-18 International Business Machines Corporation Data packing for compression-enabled storage systems
US9870285B2 (en) 2015-11-18 2018-01-16 International Business Machines Corporation Selectively de-straddling data pages in non-volatile memory
US10114549B2 (en) * 2016-03-17 2018-10-30 Sandisk Technologies Llc Error correction code processing and data shaping for reducing wear to a memory
US10067706B2 (en) 2016-03-31 2018-09-04 Qualcomm Incorporated Providing memory bandwidth compression using compression indicator (CI) hint directories in a central processing unit (CPU)-based system
US10043573B2 (en) * 2016-08-04 2018-08-07 Intel Corporation Apparatus and method for endurance friendly programming using lower voltage thresholds
US10095424B2 (en) 2016-08-04 2018-10-09 Intel Corporation Apparatus and method for programming non-volatile memory using a multi-cell storage cell group
US10083742B2 (en) 2016-09-26 2018-09-25 Intel Corporation Method and apparatus for programming non-volatile memory using a multi-cell storage cell group to provide error location information for retention errors
WO2020012612A1 (ja) * 2018-07-12 2020-01-16 株式会社ソシオネクスト 信号収集方法及び信号収集装置

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030023856A1 (en) * 2001-06-13 2003-01-30 Intertrust Technologies Corporation Software self-checking systems and methods
US6832316B1 (en) * 1999-12-22 2004-12-14 Intertrust Technologies, Corp. Systems and methods for protecting data secrecy and integrity
US6842793B2 (en) * 2002-03-28 2005-01-11 Hitachi, Ltd. Method and apparatus for verifying data in a storage system
TWI269154B (en) * 2003-12-30 2006-12-21 Sandisk Corp Non-volatile memory and method of storing data in a non-volatile memory
US20070230698A1 (en) * 2006-04-04 2007-10-04 Intertrust Technologies Corporation Systems and methods for retrofitting electronic appliances to accept different content formats
WO2008070173A1 (en) * 2006-12-06 2008-06-12 Fusion Multisystems, Inc. (Dba Fusion-Io) Apparatus, system, and method for solid-state storage as cache for high-capacity, non-volatile storage
TW200842893A (en) * 2007-02-09 2008-11-01 Marvell World Trade Ltd Nonvolatile memory system

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7739576B2 (en) * 2006-08-31 2010-06-15 Micron Technology, Inc. Variable strength ECC
US8230300B2 (en) * 2008-03-07 2012-07-24 Apple Inc. Efficient readout from analog memory cells using data compression
US20090268513A1 (en) * 2008-04-29 2009-10-29 Luca De Ambroggi Memory device with different types of phase change memory
US8959280B2 (en) * 2008-06-18 2015-02-17 Super Talent Technology, Corp. Super-endurance solid-state drive with endurance translation layer (ETL) and diversion of temp files for reduced flash wear
US8533564B2 (en) * 2009-12-23 2013-09-10 Sandisk Technologies Inc. System and method of error correction of control data at a memory device
US8533550B2 (en) * 2010-06-29 2013-09-10 Intel Corporation Method and system to improve the performance and/or reliability of a solid-state drive

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6832316B1 (en) * 1999-12-22 2004-12-14 Intertrust Technologies, Corp. Systems and methods for protecting data secrecy and integrity
US20050108555A1 (en) * 1999-12-22 2005-05-19 Intertrust Technologies Corporation Systems and methods for protecting data secrecy and integrity
US20030023856A1 (en) * 2001-06-13 2003-01-30 Intertrust Technologies Corporation Software self-checking systems and methods
US6842793B2 (en) * 2002-03-28 2005-01-11 Hitachi, Ltd. Method and apparatus for verifying data in a storage system
TWI269154B (en) * 2003-12-30 2006-12-21 Sandisk Corp Non-volatile memory and method of storing data in a non-volatile memory
US20070230698A1 (en) * 2006-04-04 2007-10-04 Intertrust Technologies Corporation Systems and methods for retrofitting electronic appliances to accept different content formats
WO2008070173A1 (en) * 2006-12-06 2008-06-12 Fusion Multisystems, Inc. (Dba Fusion-Io) Apparatus, system, and method for solid-state storage as cache for high-capacity, non-volatile storage
TW200842893A (en) * 2007-02-09 2008-11-01 Marvell World Trade Ltd Nonvolatile memory system

Also Published As

Publication number Publication date
US20120023387A1 (en) 2012-01-26
TW201205586A (en) 2012-02-01
US8751904B2 (en) 2014-06-10

Similar Documents

Publication Publication Date Title
TWI455144B (zh) 使用於快閃記憶體的控制方法與控制器
US8560926B2 (en) Data writing method, memory controller and memory storage apparatus
US8949687B2 (en) Memory device and memory system
US9336081B2 (en) Data writing and reading method, and memory controller and memory storage apparatus using the same for improving reliability of data access
TWI534618B (zh) 映射表更新方法、記憶體控制電路單元及記憶體儲存裝置
US9690490B2 (en) Method for writing data, memory storage device and memory control circuit unit
TWI435328B (zh) 針對一快閃記憶體的控制器所存取之資料來進行資料型樣管理之方法以及相關之記憶裝置及其控制器
US9274706B2 (en) Data management method, memory control circuit unit and memory storage apparatus
US10025660B2 (en) Data reading method, memory control circuit unit and memory storage apparatus
US10318379B2 (en) Decoding method, memory storage device and memory control circuit unit
US10013187B2 (en) Mapping table accessing method, memory control circuit unit and memory storage device
US9430327B2 (en) Data access method, memory control circuit unit and memory storage apparatus
US20190138391A1 (en) Data encoding method, data decoding method and storage controller
US9304907B2 (en) Data management method, memory control circuit unit and memory storage apparatus
TWI802324B (zh) 異常斷電恢復方法、記憶體控制電路單元以及記憶體儲存裝置
KR102628009B1 (ko) 부분 페이지 압축을 위한 메모리 시스템
US10911064B1 (en) Symbol pair encoding for data compression
CN109491828B (zh) 解码方法、存储器存储装置及存储器控制电路单元
CN109872764B (zh) 一种多级存储单元闪存的ecc多码率编解码系统及方法
US10997067B2 (en) Data storing method, memory controlling circuit unit and memory storage device
CN102591737B (zh) 数据写入与读取方法、存储器控制器与存储器储存装置
CN102456400B (zh) 使用于闪存的控制方法与控制器
US10162747B2 (en) Data writing method, memory control circuit unit and memory storage apparatus
US11055231B2 (en) Data storage devices and data processing methods of skipping editing of fields in H2F table when consecutive addresses are present in F2H table
US20230185667A1 (en) Memory controller and data processing method