TWI438778B - 用來抑制資料錯誤之方法以及相關之記憶裝置及其控制器 - Google Patents
用來抑制資料錯誤之方法以及相關之記憶裝置及其控制器 Download PDFInfo
- Publication number
- TWI438778B TWI438778B TW099108878A TW99108878A TWI438778B TW I438778 B TWI438778 B TW I438778B TW 099108878 A TW099108878 A TW 099108878A TW 99108878 A TW99108878 A TW 99108878A TW I438778 B TWI438778 B TW I438778B
- Authority
- TW
- Taiwan
- Prior art keywords
- seed
- controller
- random function
- data
- original
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/08—Address circuits; Decoders; Word-line control circuits
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7209—Validity control, e.g. using flags, time stamps or sequence numbers
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Description
本發明係有關於快閃記憶體(Flash Memory)之存取(Access),尤指一種用來抑制資料錯誤之方法以及相關之記憶裝置及其控制器。
近年來由於快閃記憶體的技術不斷地發展,各種可攜式記憶裝置(例如:符合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)來調整資料以期解決這樣的問題,卻由於傳統的低成本設計,以致調整後的資料不夠隨機。依據相關技術的典型實施方式,針對每一區段(Sector),該隨機函數發生器的輸入種子(Seed)之值恆不變(亦即,對每一區段而言,輸入種子都保持同一個數值),故上述之問題並未真正地解決。因此,需要一種新穎的方法針對該控制器所存取之資料來進行妥善的資料型樣管理,以減少錯誤的發生。
因此本發明之目的之一在於提供一種用來抑制資料錯誤之方法以及相關之記憶裝置及其控制器,以解決上述問題。
本發明之較佳實施例中提供一種用來抑制資料錯誤之方法,該方法係應用於一快閃記憶體(Flash Memory)的控制器,該快閃記憶體包含複數個區塊,該方法包含有:依據欲於該快閃記憶體寫入/讀取的資料之一位址,判斷是否利用一原始種子(Seed)作為一隨機函數發生器(Randomizer)/解隨機函數發生器(Derandomizer)之輸入種子,其中該隨機函數發生器/解隨機函數發生器係用來依據該輸入種子產生一隨機函數(Random Function),以供用來逐位元地調整該資料之複數個位元,以及針對至少該些區塊中之每一區塊,該原始種子之值恆不變;當判斷應利用該原始種子作為該輸入種子時,將該原始種子輸入至該隨機函數發生器/解隨機函數發生器,以依據該原始種子產生該隨機函數來調整該資料;以及當判斷不應利用該原始種子作為該輸入種子時,將一新種子輸入至該隨機函數發生器/解隨機函數發生器,以依據該新種子產生該隨機函數來調整該資料。
本發明於提供上述方法之同時,亦對應地提供一種記憶裝置,其包含有:一快閃記憶體,該快閃記憶體包含複數個區塊;以及一控制器,用來存取(Access)該快閃記憶體以及管理該複數個區塊,並且另針對該控制器本身所存取之資料來抑制資料錯誤。另外,該控制器包含有一隨機函數發生器/解隨機函數發生器,用來依據一輸入種子產生一隨機函數,以供用來於該控制器接收到一寫入/讀取命令時逐位元地調整該資料之複數個位元,其中該寫入/讀取命令係用來指示該控制器於該快閃記憶體寫入/讀取該資料,該控制器依據該資料之一位址判斷是否利用一原始種子作為該輸入種子,以及針對至少該些區塊中之每一區塊,該原始種子之值恆不變。此外,當判斷應利用該原始種子作為該輸入種子時,該控制器將該原始種子輸入至該隨機函數發生器/解隨機函數發生器,以依據該原始種子產生該隨機函數來調整該資料;以及當判斷不應利用該原始種子作為該輸入種子時,該控制器將一新種子輸入至該隨機函數發生器/解隨機函數發生器,以依據該新種子產生該隨機函數來調整該資料。
本發明於提供上述方法之同時,亦對應地提供一種記憶裝置之控制器,該控制器係用來存取一快閃記憶體,該快閃記憶體包含複數個區塊,該控制器包含有:一唯讀記憶體(Read Only Memory,ROM),用來儲存一程式碼;一微處理器,用來執行該程式碼以控制對該快閃記憶體之存取以及管理該複數個區塊,並且另針對該控制器本身所存取之資料來抑制資料錯誤;以及一隨機函數發生器/解隨機函數發生器,用來依據一輸入種子產生一隨機函數,以供用來於該控制器接收到一寫入/讀取命令時逐位元地調整該資料之複數個位元,其中該寫入/讀取命令係用來指示該控制器於該快閃記憶體寫入/讀取該資料,該控制器依據該資料之一位址判斷是否利用一原始種子作為該輸入種子,以及針對至少該些區塊中之每一區塊,該原始種子之值恆不變。另外,當判斷應利用該原始種子作為該輸入種子時,該控制器將該原始種子輸入至該隨機函數發生器/解隨機函數發生器,以依據該原始種子產生該隨機函數來調整該資料;以及當判斷不應利用該原始種子作為該輸入種子時,該控制器將一新種子輸入至該隨機函數發生器/解隨機函數發生器,以依據該新種子產生該隨機函數來調整該資料。
請參考第1圖,第1圖為依據本發明一第一實施例之一種記憶裝置100的示意圖,其中本實施例之記憶裝置100尤其可為可攜式記憶裝置,例如:符合SD/MMC、CF、MS、XD標準之記憶卡,或通用序列匯流排快閃碟(Universal Serial Bus Flash Drive,USB Flash Drive,亦稱為USB Flash Disk),即所謂的隨身碟,但不以此為限。記憶裝置100包含有:一快閃記憶體(Flash Memory)120;以及一控制器,用來存取快閃記憶體120,其中該控制器例如一記憶體控制器110。依據本實施例,記憶體控制器110包含一微處理器112、一唯讀記憶體(Read Only Memory,ROM)112M、一控制邏輯114、一緩衝記憶體116、與一介面邏輯118。另外,控制邏輯114包含一調整單元114A、一種子產生器(Seed Generator)114G、一多工器114M、與一隨機函數發生器(Randomizer)/解隨機函數發生器(Derandomizer)114R。實作上,調整單元114A可為一互斥或(Exclusive OR,XOR)邏輯閘或一加法器。請注意,在此係以可攜式記憶裝置為例;這只是為了說明的目的而已,並非對本發明之限制。依據本實施例之一變化例,記憶裝置100可為固態硬碟(Solid State Drive,SSD)。
於本實施例中,唯讀記憶體112M係用來儲存一程式碼112C,而微處理器112則用來執行程式碼112C以控制對快閃記憶體120之存取(Access)。於典型狀況下,快閃記憶體120包含複數個區塊(Block),而該控制器(例如:透過微處理器112執行程式碼112C之記憶體控制器110)對快閃記憶體120進行抹除資料之運作係以區塊為單位來進行抹除。另外,一區塊可記錄特定數量的頁(Page),其中上述之控制器對快閃記憶體120進行寫入資料之運作係以頁為單位來進行寫入。
實作上,透過微處理器112執行程式碼112C之記憶體控制器110可利用其本身內部之元件來進行諸多控制運作,例如:利用控制邏輯114來控制快閃記憶體120之存取運作(尤其是對至少一區塊或至少一頁之存取運作)、利用緩衝記憶體116進行所需之緩衝處理、以及利用介面邏輯118來與一主裝置(Host Device)溝通。依據本實施例,除了能存取快閃記憶體120,記憶體控制器110還能妥善地管理該複數個區塊。
另外,記憶體控制器110還可針對其本身所存取之資料(例如:第1圖所示之資料DB
)來抑制資料錯誤,尤其是藉由利用隨機函數發生器/解隨機函數發生器114R之運作來抑制資料錯誤。更明確而言,隨機函數發生器/解隨機函數發生器114R係用來依據一輸入種子114S產生一隨機函數(Random Function),以供用來於該控制器接收到一寫入/讀取命令時逐位元地調整該資料(諸如資料DB
)之複數個位元,其中該寫入/讀取命令係用來指示該控制器於快閃記憶體120寫入/讀取該資料。於是,第1圖所示之調整單元114A依據隨機序列114RS(即上述之隨機函數之序列)調整資料DB
以產生調整後之資料DA
。例如:在上述之寫入/讀取命令代表一寫入命令的狀況下,當通過調整單元114A之資料路徑代表一寫入路徑時,資料DB
可代表該控制器欲寫入快閃記憶體120之資料,而資料DA
可代表調整後以供寫入的資料。又例如:在上述之寫入/讀取命令代表一讀取命令的狀況下,當通過調整單元114A之資料路徑代表一讀取路徑時,資料DB
可代表該控制器讀取自快閃記憶體120之資料,而資料DA
可代表調整後以供進一步處理以回傳給主裝置的資料。實作上,透過微處理器112執行程式碼112C之記憶體控制器110可產生控制訊號C0、C1、與C2,以分別控制種子產生器114G、多工器114M、與隨機函數發生器/解隨機函數發生器114R。
依據本實施例,控制訊號C0可載有至少一索引,用來指出資料DB
所對應之區段、字(Word)、及/或位元組(Byte),尤其是資料DB
當中目前正被處理的部分。除了控制訊號C0,本實施例之種子產生器114G另接收原始種子114B;於是,依據控制訊號C0之控制,種子產生器114G可相應地調整原始種子114B以產生新種子114N,其中新種子114N對應於該索引,且由於適當地設計種子產生器114G(其細節後續會進一步說明),新種子114N通常異於原始種子114B。如此,即使在原始種子114B係藉由利用傳統的低成本設計之架構所產生而一直出現相同的值的狀況下,新種子114N並不會重複。另外,控制訊號C1係用來控制多工器114M之多工選擇(Multiplexing)運作,使多工器114M相應地多工選擇原始種子114B或新種子114N,作為隨機函數發生器/解隨機函數發生器114R之輸入種子114S;而控制訊號C2則用來控制隨機函數發生器/解隨機函數發生器114R之載入運作,以使隨機函數發生器/解隨機函數發生器114R可以正確地載入輸入種子114S。
基於第1圖所示的架構,由於新種子114N並不會重複,只要適切地選擇原始種子114B或新種子114N作為輸入種子114S,就不會有相關技術中調整後的資料不夠隨機的問題;於是,原始種子114B仍然可藉由利用傳統的低成本設計之架構來產生。於本實施例中,針對至少該些區塊中之每一區塊,原始種子114B之值恆不變,及該些區塊中之每一區塊均使用相同的原始種子114B;例如:針對每一區塊中之每一頁,原始種子114B之值恆不變。尤其是,針對每一區塊中之每一區段(Sector),原始種子114B之值恆不變。記憶體控制器110抑制資料錯誤的相關細節可參考第2圖來進一步說明。
第2圖為依據本發明一實施例之一種用來抑制資料錯誤之方法910的流程圖。該方法可應用於第1圖所示之記憶裝置100,尤其是上述之控制器(例如:透過微處理器112執行程式碼112C之記憶體控制器110)。另外,該方法可藉由利用第1圖所示之記憶裝置100來實施,尤其是藉由利用上述之控制器來實施。該方法說明如下:
步驟912:該控制器依據欲於快閃記憶體120寫入/讀取的資料(例如:資料DB
)之一位址,判斷是否利用原始種子114B作為隨機函數發生器/解隨機函數發生器114R之輸入種子114S。當判斷應利用原始種子114B作為輸入種子114S時,進入步驟914-1;否則(亦即,當判斷不應利用原始種子114B作為輸入種子114S時),進入步驟914-2。
步驟914-1:該控制器將原始種子114B輸入至隨機函數發生器/解隨機函數發生器114R,以依據原始種子114B產生該隨機函數來調整該資料。
步驟914-2:該控制器將新種子114N輸入至隨機函數發生器/解隨機函數發生器114R,以依據新種子114N產生該隨機函數來調整該資料。
於本實施例中,當步驟912所述之該位址落入一預定範圍時,該控制器判斷應利用原始種子114B作為該輸入種子。另外,當該位址未落入該預定範圍時,該控制器判斷不應利用原始種子114B作為該輸入種子。例如:針對每一區塊,原始種子114B之值恆不變;此狀況下,該預定範圍可對應於一區塊、一頁、一區段、或一更小的儲存單位。又例如:針對每一區塊中之每一頁,原始種子114B之值恆不變;此狀況下,該預定範圍可對應於一頁、一區段、或一更小的儲存單位,其中此處所述之頁可包含數個區段。又例如:針對每一區塊中之每一區段,原始種子114B之值恆不變;此狀況下,該預定範圍可對應於一區段或一更小的儲存單位。
依據本實施例,種子產生器114G係用來調整原始種子114B以產生新種子114N,其中原始種子114B包含複數個位元,且新種子114N包含複數個位元。另外,種子產生器114G儲存有一個或多個預定矩陣,尤其是複數個預定矩陣AZ(1)
、AZ(2)
、...、與AZ(X)
,其中符號A代表隨機函數發生器/解隨機函數發生器114R對隨機序列114RS之轉換矩陣;於本實施例中,亦可將種子產生器114G視為體現上述之一個或多個預定矩陣的電路。於是,種子產生器114G可利用原始種子114B以及該一個或多個預定矩陣中之一特定預定矩陣來進行運算,以產生新種子114N。例如:在原始種子114B與新種子114N分別包含W個位元的狀況下,轉換矩陣A係為一個W乘以W之矩陣,而上述之預定矩陣AZ(1)
、AZ(2)
、...、與AZ(X)
亦分別為W乘以W之矩陣,請注意到,轉換矩陣A不限定於方矩陣,轉換矩陣A亦得為W乘以M之矩陣或M乘以W之矩陣(M不等於W),只要可與原始種子114B進行乘法即可。
在此,隨機序列114RS可表示為序列{RS(t)|t為整數}(t係為對應於時間之索引),則此序列中之任一數值RS(t)和其下一數值RS(t+1)之間的關係可透過下列方程式來表示:
RS(t+1)=A*RS(t);
如此,當輸入種子114S的值等於RS(t0
)時,藉由如以上這個方程式所示的轉換,隨機函數發生器/解隨機函數發生器114R可產生序列{RS(t)}當中由RS(t0
+1)開始之部分,即序列。
第3A圖與第3B圖分別為第2圖所示之方法910於一實施例中所涉及之轉換矩陣A以及相對應之轉換電路300的示意圖,其中轉換電路300係設置於隨機函數發生器/解隨機函數發生器114R中,且包含W個暫存器310-0、310-1、...、與310-(W-1)以及一互斥或邏輯閘320(於第3圖標示為「XOR」)。在W=5的狀況下,暫存器310-0、310-1、310-2、310-3、與310-4分別暫存數值RS(t)之二進位表示法的各個位元RS(t;0)、RS(t;1)、RS(t;2)、RS(t;3)、與RS(t;4)。依據第3B圖所示之架構,隨機函數發生器/解隨機函數發生器114R可產生序列{RS(t)}中之至少一部分,諸如序列{RS(t)}中之一部分或全部。
第4A圖為第2圖所示之方法910於一實施例中關於第1圖所示之種子產生器114G的實施細節。依據本實施例,種子產生器114G包含一調整電路410與一儲存單元420。儲存單元420儲存有X個預定矩陣AZ(1)
、AZ(2)
、...、與AZ(X)
,其中Z(1)、Z(2)、...、與Z(X)均為正整數,尤其是彼此相異之正整數。另外,種子產生器114G(尤其是調整電路410)依據上述之至少一索引於該X個預定矩陣AZ(1)
、AZ(2)
、...、與AZ(X)
當中選擇相對應之一預定矩陣AZ(x)
(在此,x=1、2、...、或X),其中控制訊號C0載有上述之至少一索引。於是,種子產生器114G利用預定矩陣AZ(x)
調整原始種子114B,以產生新種子114N。依據本實施例之一特例,Z(1)、Z(2)、...、與Z(X)可為等差數列。依據本實施例之另一特例,Z(1)、Z(2)、...、與Z(X)可為等差數列,且此等差數列之公差等於Z(1)。
第4B圖為第2圖所示之方法910於另一實施例中關於第1圖所示之種子產生器114G的實施細節,其中本實施例為第4A圖所示實施例之一特例。於本實施例中,Z(x)=(1024*x)且X等於3,而每一頁包含4千位元組(Kilobyte),並且每一區段包含1千位元組(亦即,每一頁包含4個區段)。如第4B圖所示,儲存單元420儲存有3個預定矩陣A1024
、A2048
、A3072
。為了便於理解,請參考第5圖;第5圖繪示第4B圖所示實施例中所涉及之一系列數值的示意圖,其中這一系列數值可在不限制第1圖所示之隨機函數發生器/解隨機函數發生器114R的運作之循環(Cycle)次數的狀況下而產生。如第5圖所示,這一系列數值包含:RS(1),RS(2),RS(3),...,RS(1024),RS(1025),...,RS(2048),RS(2049),...,RS(3072),RS(3073),...,RS(4096),RS(4097),...,RS(32K),其中RS(32K)代表RS(32768);在W=8的狀況下,這一系列數值中之每一數值均落入區間[0,255]的範圍。在此係以各個圓圈內的數字作為這一系列數值的例子;這只是為了說明的目的而已,並非對本發明之限制。依據本實施例之一變化例,各個圓圈內的這些數字可以加以變化。
依據本實施例,緊接著數值RS(32K)之後下一個產生的數值是這一系列數值中之第一個數值RS(1),而這一系列數值可被重複地產生。廣義而言,這一系列數值可區分為(Y+1)個部分:{RS(Z(0)+1),RS(Z(0)+2),...,RS(Z(1))};{RS(Z(1)+1),RS(Z(1)+2),...,RS(Z(2))};{RS(Z(2)+1),RS(Z(2)+2),...,RS(Z(3))};...以及{RS(Z(Y)+1),RS(Z(Y)+2),...,RS(Z(Y+1))};其中,於本實施例中,Y=31。
假設於該控制器將原始種子114B輸入至隨機函數發生器/解隨機函數發生器114R且經過一個循環之後,隨機序列114RS當中首先出現的數值係為RS(1),且該控制器所採用之該預定範圍對應於一區段(其包含1千位元組),尤其是任一頁內之第1個區段。於是,當步驟912所述之該位址落入該預定範圍時,這表示該位址代表某一頁內之第1個區段,則該控制器判斷應利用原始種子114B作為該輸入種子。另外,當該位址未落入該預定範圍時,尤其是該位址代表某一頁內之第(v+1)個區段時,則在該控制器之控制下,種子產生器114G可利用原始種子114B以及預定矩陣AZ(v)
來進行運算,以產生新種子114N,其中v=1、2、或3。本實施例與前述實施例/變化例相仿之處不再重複贅述。
依據本實施例之一變化例,該控制器所採用之該預定範圍對應於一區段(其包含1千位元組),尤其是每一組區段中之第1個區段。於此變化例中,每一組區段可包含32個區段。另外,儲存單元420儲存有31個預定矩陣A1024
、A2048
、A3072
、...、與A31K
,其中A31K
代表A31744
。於是,當步驟912所述之該位址落入該預定範圍時,這表示該位址代表某一組區段內之第1個區段,則該控制器判斷應利用原始種子114B作為該輸入種子。此外,當該位址未落入該預定範圍時,尤其是該位址代表某一組區段內之第(v+1)個區段時,則在該控制器之控制下,種子產生器114G可利用原始種子114B以及預定矩陣AZ(v)
來進行運算,以產生新種子114N,其中v=1、2、...、或31。本變化例與前述實施例/變化例相仿之處不再重複贅述。
第6圖為依據本發明一第二實施例之一種記憶裝置200當中之種子產生器114G’的示意圖,其中本實施例為該第一實施例之變化例。本實施例之多工器114M係併入上述之種子產生器114G內;因應架構的變化,本實施例之種子產生器係以符號114G’來標示,其中種子產生器114G’將上述之輸入種子114S輸入至上述之隨機函數發生器/解隨機函數發生器114R。如此,本實施例之記憶裝置200(或其記憶體控制器210)與第1圖所示之記憶裝置100(或其記憶體控制器110)之間的差異僅在於多工器114M是否位於種子產生器內。本實施例與前述實施例/變化例相仿之處不再重複贅述。
本發明的好處之一是,藉由適當地設計種子產生器114G,輔以配套的控制(例如:控制訊號C0、C1、與C2),本發明能針對該控制器所存取之資料來進行妥善的資料型樣管理,以減少錯誤的發生。另外,依據以上各個實施例/變化例來實施並不會增加許多額外的成本,同時原始種子114B仍然可藉由利用傳統的低成本設計之架構來產生。因此,基於以上揭露的內容,相關技術的問題已被解決,且整體成本不會增加太多。
以上所述僅為本發明之較佳實施例,凡依本發明申請專利範圍所做之均等變化與修飾,皆應屬本發明之涵蓋範圍。
100...記憶裝置
110...記憶體控制器
112...微處理器
112C...程式碼
112M...唯讀記憶體
114...控制邏輯
114A...調整單元
114B...原始種子
114G,114G’...種子產生器
114M...多工器
114N...新種子
114R...隨機函數發生器/解隨機函數發生器
114RS...隨機序列
114S...隨機函數發生器/解隨機函數發生器之輸入種子
116...緩衝記憶體
118...介面邏輯
120...快閃記憶體
300...轉換電路
310-0,310-1,310-2,310-3,310-4...暫存器
320...互斥或邏輯閘
410...調整電路
420...儲存單元
910...用來抑制資料錯誤之方法
912,914-1,914-2...步驟
A...隨機函數發生器/解隨機函數發生器對隨機序列之轉換矩陣
AZ(1)
,AZ(2)
,...,AZ(X)
,A1024
,A2048
,A3072
...預定矩陣
C0,C1,C2...控制訊號
DA
,DB
...資料
RS(t;0),RS(t;1),RS(t;2),RS(t;3)...數值RS(t)之二進位表示法在W=5的狀況下的各個位元
RS(1),RS(2),RS(3),...,RS(1024),RS(1025),...,RS(2048),RS(2049),...,RS(3072),RS(3073),...,RS(4096),RS(4097),...,RS(32K)...隨機函數發生器/解隨機函數發生器可在其運作之循環次數不受限制的狀況下而產生之一系列數值
第1圖為依據本發明一第一實施例之一種記憶裝置的示意圖。
第2圖為依據本發明一實施例之一種用來抑制資料錯誤之方法的流程圖。
第3A圖與第3B圖分別為第2圖所示之方法於一實施例中所涉及之轉換矩陣以及相對應之轉換電路的示意圖。
第4A圖為第2圖所示之方法於一實施例中關於第1圖所示之種子產生器的實施細節。
第4B圖為第2圖所示之方法於另一實施例中關於第1圖所示之種子產生器的實施細節。
第5圖繪示第4B圖所示實施例中所涉及之一系列數值的示意圖,其中這一系列數值可在不限制第1圖所示之隨機函數發生器/解隨機函數發生器的運作之循環(Cycle)次數的狀況下而產生。
第6圖為依據本發明一第二實施例之一種記憶裝置當中之種子產生器的示意圖。
910...用來抑制資料錯誤之方法
912,914-1,914-2...步驟
Claims (21)
- 一種用來抑制資料錯誤之方法,該方法係應用於一快閃記憶體(Flash Memory)的控制器,該快閃記憶體包含複數個區塊,該方法包含有:依據欲於該快閃記憶體寫入/讀取的資料之一位址,判斷是否利用一原始種子(Seed)作為一隨機函數發生器(Randomizer)/解隨機函數發生器(Derandomizer)之輸入種子,其中該隨機函數發生器/解隨機函數發生器係用來依據該輸入種子產生一隨機函數(Random Function),以供用來逐位元地調整該資料之複數個位元,以及針對至少該些區塊中之每一區塊,該原始種子之值恆不變;當判斷應利用該原始種子作為該輸入種子時,將該原始種子輸入至該隨機函數發生器/解隨機函數發生器,以依據該原始種子產生該隨機函數來調整該資料;以及當判斷不應利用該原始種子作為該輸入種子時,將一新種子輸入至該隨機函數發生器/解隨機函數發生器,以依據該新種子產生該隨機函數來調整該資料。
- 如申請專利範圍第1項所述之方法,其另包含有:提供一種子產生器,用來調整該原始種子以產生該新種子。
- 如申請專利範圍第2項所述之方法,其中該原始種子包含複數個位元,且該新種子包含複數個位元;該種子產生器儲存有一個或多個預定矩陣;以及該方法另包含有:利用該原始種子以及該一個或多個預定矩陣中之一特定預定矩陣來進行運算,以產生該新種子。
- 如申請專利範圍第3項所述之方法,其另包含有:依據至少一索引,於該一個或多個預定矩陣中選出該特定預定矩陣,其中該至少一索引係用來指出該資料所對應之區段(Sector)、字(Word)、及/或位元組(Byte)。
- 如申請專利範圍第1項所述之方法,其中判斷是否利用該原始種子作為該隨機函數發生器/解隨機函數發生器之該輸入種子之步驟另包含有:當該位址落入一預定範圍時,判斷應利用該原始種子作為該輸入種子;以及當該位址未落入該預定範圍時,判斷不應利用該原始種子作為該輸入種子。
- 如申請專利範圍第5項所述之方法,其中該預定範圍對應於一區塊、一頁(Page)、一區段(Sector)、或一更小的儲存單位。
- 如申請專利範圍第1項所述之方法,其中針對每一區塊中之每一頁(Page)或每一區段(Sector),該原始種子之值恆不變。
- 一種記憶裝置,其包含有:一快閃記憶體(Flash Memory),該快閃記憶體包含複數個區塊;以及一控制器,用來存取(Access)該快閃記憶體以及管理該複數個區塊,並且另針對該控制器本身所存取之資料來抑制資料錯誤,其中該控制器包含有:一隨機函數發生器(Randomizer)/解隨機函數發生器(Derandomizer),用來依據一輸入種子(Seed)產生一隨機函數(Random Function),以供用來於該控制器接收到一寫入/讀取命令時逐位元地調整該資料之複數個位元,其中該寫入/讀取命令係用來指示該控制器於該快閃記憶體寫入/讀取該資料,該控制器依據該資料之一位址判斷是否利用一原始種子作為該輸入種子,以及針對至少該些區塊中之每一區塊,該原始種子之值恆不變;其中當判斷應利用該原始種子作為該輸入種子時,該控制器將該原始種子輸入至該隨機函數發生器/解隨機函數發生器,以依據該原始種子產生該隨機函數來調整該資料;以及當判斷不應利用該原始種子作為該輸入種子時,該控制器將一新種子輸入至該隨機函數發生器/解隨機函數發生器,以依據該新種子產生該隨機函數來調整該資料。
- 如申請專利範圍第8項所述之記憶裝置,其中該控制器另包含有:一種子產生器,用來調整該原始種子以產生該新種子。
- 如申請專利範圍第9項所述之記憶裝置,其中該原始種子包含複數個位元,且該新種子包含複數個位元;該種子產生器儲存有一個或多個預定矩陣;以及該種子產生器利用該原始種子以及該一個或多個預定矩陣中之一特定預定矩陣來進行運算,以產生該新種子。
- 如申請專利範圍第10項所述之記憶裝置,其中該種子產生器依據至少一索引,於該一個或多個預定矩陣中選出該特定預定矩陣;以及該至少一索引係用來指出該資料所對應之區段(Sector)、字(Word)、及/或位元組(Byte)。
- 如申請專利範圍第8項所述之記憶裝置,其中當該位址落入一預定範圍時,該控制器判斷應利用該原始種子作為該輸入種子;以及當該位址未落入該預定範圍時,該控制器判斷不應利用該原始種子作為該輸入種子。
- 如申請專利範圍第12項所述之記憶裝置,其中該預定範圍對應於一區塊、一頁(Page)、一區段(Sector)、或一更小的儲存單位。
- 如申請專利範圍第8項所述之記憶裝置,其中針對每一區塊中之每一頁(Page)或每一區段(Sector),該原始種子之值恆不變。
- 一種記憶裝置之控制器,該控制器係用來存取(Access)一快閃記憶體(Flash Memory),該快閃記憶體包含複數個區塊,該控制器包含有:一唯讀記憶體(Read Only Memory,ROM),用來儲存一程式碼;一微處理器,用來執行該程式碼以控制對該快閃記憶體之存取以及管理該複數個區塊,並且另針對該控制器本身所存取之資料來抑制資料錯誤;以及一隨機函數發生器(Randomizer)/解隨機函數發生器(Derandomizer),用來依據一輸入種子(Seed)產生一隨機函數(Random Function),以供用來於該控制器接收到一寫入/讀取命令時逐位元地調整該資料之複數個位元,其中該寫入/讀取命令係用來指示該控制器於該快閃記憶體寫入/讀取該資料,該控制器依據該資料之一位址判斷是否利用一原始種子作為該輸入種子,以及針對至少該些區塊中之每一區塊,該原始種子之值恆不變;其中當判斷應利用該原始種子作為該輸入種子時,該控制器將該原始種子輸入至該隨機函數發生器/解隨機函數發生器,以依據該原始種子產生該隨機函數來調整該資料;以及當判斷不應利用該原始種子作為該輸入種子時,該控制器將一新種子輸入至該隨機函數發生器/解隨機函數發生器,以依據該新種子產生該隨機函數來調整該資料。
- 如申請專利範圍第15項所述之控制器,其另包含有:一種子產生器,用來調整該原始種子以產生該新種子。
- 如申請專利範圍第16項所述之控制器,其中該原始種子包含複數個位元,且該新種子包含複數個位元;該種子產生器儲存有一個或多個預定矩陣;以及該種子產生器利用該原始種子以及該一個或多個預定矩陣中之一特定預定矩陣來進行運算,以產生該新種子。
- 如申請專利範圍第17項所述之控制器,其中該種子產生器依據至少一索引,於該一個或多個預定矩陣中選出該特定預定矩陣;以及該至少一索引係用來指出該資料所對應之區段(Sector)、字(Word)、及/或位元組(Byte)。
- 如申請專利範圍第15項所述之控制器,其中當該位址落入一預定範圍時,該控制器判斷應利用該原始種子作為該輸入種子;以及當該位址未落入該預定範圍時,該控制器判斷不應利用該原始種子作為該輸入種子。
- 如申請專利範圍第19項所述之控制器,其中該預定範圍對應於一區塊、一頁(Page)、一區段(Sector)、或一更小的儲存單位。
- 如申請專利範圍第15項所述之控制器,其中針對每一區塊中之每一頁(Page)或每一區段(Sector),該原始種子之值恆不變。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW099108878A TWI438778B (zh) | 2010-03-25 | 2010-03-25 | 用來抑制資料錯誤之方法以及相關之記憶裝置及其控制器 |
US12/907,990 US8417879B2 (en) | 2010-03-25 | 2010-10-20 | Method for suppressing errors, and associated memory device and controller thereof |
US13/786,478 US8719491B2 (en) | 2010-03-25 | 2013-03-06 | Encoding flash memory data with a randomizer using different seeds for different sectors |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW099108878A TWI438778B (zh) | 2010-03-25 | 2010-03-25 | 用來抑制資料錯誤之方法以及相關之記憶裝置及其控制器 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201133502A TW201133502A (en) | 2011-10-01 |
TWI438778B true TWI438778B (zh) | 2014-05-21 |
Family
ID=44657642
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW099108878A TWI438778B (zh) | 2010-03-25 | 2010-03-25 | 用來抑制資料錯誤之方法以及相關之記憶裝置及其控制器 |
Country Status (2)
Country | Link |
---|---|
US (2) | US8417879B2 (zh) |
TW (1) | TWI438778B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI562149B (en) * | 2015-03-09 | 2016-12-11 | Phison Electronics Corp | Memory control circuit unit, memory storage apparatus and data accessing method |
TWI569275B (zh) * | 2015-07-17 | 2017-02-01 | 慧榮科技股份有限公司 | 資料儲存裝置及其資料維護方法 |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI455136B (zh) * | 2010-07-01 | 2014-10-01 | Silicon Motion Inc | 用來進行資料整形之方法以及相關之記憶裝置及其控制器 |
KR20120125790A (ko) * | 2011-05-09 | 2012-11-19 | 삼성전자주식회사 | 메모리 장치 및 그것을 포함하는 메모리 시스템 |
KR101818445B1 (ko) * | 2011-07-08 | 2018-01-16 | 삼성전자주식회사 | 메모리 컨트롤러, 이의 동작 방법, 및 상기 메모리 컨트롤러를 포함하는 전자 장치들 |
KR101811298B1 (ko) | 2011-12-28 | 2017-12-27 | 삼성전자주식회사 | 랜덤마이져로 씨드를 제공하는 씨드 컨트롤러 및 그것을 포함한 메모리 컨트롤러 |
KR20140114516A (ko) | 2013-03-15 | 2014-09-29 | 삼성전자주식회사 | 메모리 컨트롤러 및 이의 동작 방법 |
KR102112115B1 (ko) * | 2013-04-17 | 2020-05-18 | 삼성전자주식회사 | 반도체 메모리 장치 및 그것의 데이터 프로그램 방법 |
US20150169901A1 (en) * | 2013-12-12 | 2015-06-18 | Sandisk Technologies Inc. | Method and Systems for Integrity Checking a Set of Signed Data Sections |
KR102200108B1 (ko) | 2014-10-10 | 2021-01-08 | 삼성전자주식회사 | 비휘발성 메모리 장치 및 그 동작 방법 |
CN106250050B (zh) | 2015-06-10 | 2021-02-05 | 恩智浦美国有限公司 | 用于数据传输中的实时空白页检测的方法和装置 |
US10417122B2 (en) | 2015-09-30 | 2019-09-17 | Seagate Technology Llc | Data randomization using memory block access counts |
TWI657454B (zh) * | 2017-09-07 | 2019-04-21 | 群聯電子股份有限公司 | 資料編碼方法、記憶體控制電路單元與記憶體儲存裝置 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE69940473D1 (de) | 1999-11-25 | 2009-04-09 | St Microelectronics Srl | Leseverfahren für nichtflüchtige Speicheranordnung mit automatischer Erkennung eines Burstlesebetriebs sowie entsprechende Leseschaltung |
DE69940369D1 (de) | 1999-11-25 | 2009-03-19 | St Microelectronics Srl | Nichtflüchtiger Speicher mit Burstlesebetrieb sowie entsprechendes Leseverfahren |
US6757832B1 (en) | 2000-02-15 | 2004-06-29 | Silverbrook Research Pty Ltd | Unauthorized modification of values in flash memory |
KR100683179B1 (ko) | 2003-11-03 | 2007-02-15 | 삼성전자주식회사 | 듀얼 스트림용 디지털 방송 송/수신 시스템의 강건한에러정정 부호화/복호화 장치 및 그의 방법 |
US7509556B2 (en) | 2003-11-20 | 2009-03-24 | Seagate Technology Llc | Method and apparatus for combining output of different type interleavers based on an input data sequence to obtain a combined output |
US7539906B2 (en) | 2005-03-30 | 2009-05-26 | Freescale Semiconductor, Inc. | System for integrated data integrity verification and method thereof |
US7885112B2 (en) | 2007-09-07 | 2011-02-08 | Sandisk Corporation | Nonvolatile memory and method for on-chip pseudo-randomization of data within a page and between pages |
US7904780B2 (en) * | 2006-11-03 | 2011-03-08 | Sandisk Corporation | Methods of modulating error correction coding |
US8001441B2 (en) * | 2006-11-03 | 2011-08-16 | Sandisk Technologies Inc. | Nonvolatile memory with modulated error correction coding |
US8127200B2 (en) * | 2006-12-24 | 2012-02-28 | Sandisk Il Ltd. | Flash memory device and system with randomizing for suppressing errors |
US8370561B2 (en) * | 2006-12-24 | 2013-02-05 | Sandisk Il Ltd. | Randomizing for suppressing errors in a flash memory |
JP5478855B2 (ja) | 2008-08-08 | 2014-04-23 | ルネサスエレクトロニクス株式会社 | 不揮発性メモリ制御方法及び半導体装置 |
TW201009582A (en) | 2008-08-29 | 2010-03-01 | Holtek Semiconductor Inc | Method of initiating memory encryption mechanism by using NOP instruction |
KR101554159B1 (ko) * | 2008-10-08 | 2015-09-21 | 삼성전자주식회사 | 데이터 저장 장치 및 이를 포함하는 데이터 저장 시스템 |
KR101824227B1 (ko) * | 2009-08-07 | 2018-02-05 | 삼성전자주식회사 | 메모리 시스템 및 그것의 프로그램 방법 |
TWI455136B (zh) * | 2010-07-01 | 2014-10-01 | Silicon Motion Inc | 用來進行資料整形之方法以及相關之記憶裝置及其控制器 |
US8751729B2 (en) * | 2010-12-23 | 2014-06-10 | Samsung Electronics Co., Ltd. | Flash memory device and memory system including the same |
KR101767649B1 (ko) * | 2011-05-11 | 2017-08-14 | 삼성전자주식회사 | 시드 생성 방법과 그것을 이용한 플래시 메모리 장치 및 메모리 시스템 |
-
2010
- 2010-03-25 TW TW099108878A patent/TWI438778B/zh active
- 2010-10-20 US US12/907,990 patent/US8417879B2/en active Active
-
2013
- 2013-03-06 US US13/786,478 patent/US8719491B2/en active Active
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI562149B (en) * | 2015-03-09 | 2016-12-11 | Phison Electronics Corp | Memory control circuit unit, memory storage apparatus and data accessing method |
TWI569275B (zh) * | 2015-07-17 | 2017-02-01 | 慧榮科技股份有限公司 | 資料儲存裝置及其資料維護方法 |
US9933958B2 (en) | 2015-07-17 | 2018-04-03 | Silicon Motion, Inc. | Data storage device and data maintenance method thereof |
Also Published As
Publication number | Publication date |
---|---|
US8719491B2 (en) | 2014-05-06 |
US8417879B2 (en) | 2013-04-09 |
US20110238891A1 (en) | 2011-09-29 |
US20130176785A1 (en) | 2013-07-11 |
TW201133502A (en) | 2011-10-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI438778B (zh) | 用來抑制資料錯誤之方法以及相關之記憶裝置及其控制器 | |
KR102174293B1 (ko) | 확률론적 데이터 구조에 기초한 메모리 내의 사전적인 교정 조치 | |
US8812784B2 (en) | Command executing method, memory controller and memory storage apparatus | |
TWI435328B (zh) | 針對一快閃記憶體的控制器所存取之資料來進行資料型樣管理之方法以及相關之記憶裝置及其控制器 | |
US9880742B2 (en) | Valid data merging method, memory controller and memory storage apparatus | |
TWI591635B (zh) | 記憶體管理方法、記憶體控制電路單元與記憶體儲存裝置 | |
US9582224B2 (en) | Memory control circuit unit, memory storage apparatus and data accessing method | |
US9176865B2 (en) | Data writing method, memory controller, and memory storage device | |
TWI525430B (zh) | 快取記憶體裝置以及該裝置的資料處理方法 | |
KR20140000751A (ko) | 데이터 저장 장치의 동작 방법 | |
TWI698749B (zh) | 資料儲存裝置與資料處理方法 | |
TWI656531B (zh) | 平均磨損方法、記憶體控制電路單元與記憶體儲存裝置 | |
JP6994136B1 (ja) | メモリにおける単調カウンタ | |
US20130332653A1 (en) | Memory management method, and memory controller and memory storage device using the same | |
CN111309654B (zh) | 存储装置及操作存储装置的方法 | |
KR102330394B1 (ko) | 컨트롤러의 작동 방법과 상기 컨트롤러를 포함하는 장치의 작동 방법 | |
US9146861B2 (en) | Memory address management method, memory controller and memory storage device | |
US10289334B2 (en) | Valid data merging method, memory controller and memory storage apparatus | |
US10203886B2 (en) | Data writing method, memory control circuit unit and memory storage apparatus for writing data from buffer memory and moving valid data | |
TW201941208A (zh) | 記憶體管理方法與儲存控制器 | |
US9009389B2 (en) | Memory management table processing method, memory controller, and memory storage apparatus | |
TW201539188A (zh) | 記憶體控制器以及記憶體控制方法 | |
TWI596477B (zh) | 記憶體管理方法、記憶體控制電路單元及記憶體儲存裝置 | |
CN102236584B (zh) | 用来抑制数据错误的方法以及相关的记忆装置及其控制器 | |
TWI781846B (zh) | 非對稱型平面管理方法以及資料儲存裝置及其控制器 |