TWI446350B - 用來減少無法更正的錯誤之方法以及記憶裝置及其控制器 - Google Patents
用來減少無法更正的錯誤之方法以及記憶裝置及其控制器 Download PDFInfo
- Publication number
- TWI446350B TWI446350B TW098141899A TW98141899A TWI446350B TW I446350 B TWI446350 B TW I446350B TW 098141899 A TW098141899 A TW 098141899A TW 98141899 A TW98141899 A TW 98141899A TW I446350 B TWI446350 B TW I446350B
- Authority
- TW
- Taiwan
- Prior art keywords
- buffer
- data
- controller
- majority
- time
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/18—Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits
- G06F11/187—Voting techniques
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding 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/1048—Adding 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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1479—Generic software techniques for error detection or fault masking
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
Description
本發明係有關於快閃記憶體(Flash Memory)控制晶片之錯誤更正,尤指一種用來減少一記憶裝置當中關於錯誤更正碼(Error Correction Code,ECC)之無法更正的錯誤之方法以及相關之記憶裝置及其控制器。
近年來由於快閃記憶體的技術不斷地發展,各種可攜式記憶裝置(例如:符合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型快閃記憶體之相關產業而言,是非常好的消息。
相較於單階細胞快閃記憶體,由於多階細胞快閃記憶體之價格較便宜,並且在有限的空間裡可提供較大的容量,故多階細胞快閃記憶體很快地成為市面上之可攜式記憶裝置競相採用的主流。然而,多階細胞快閃記憶體的不穩定性所導致的問題也一一浮現。針對這諸多問題,雖然相關技術中提供了一些解決方式,卻總是無法兼顧運作效能與系統資源使用控管。於是,不論採取哪個解決方式,往往會有對應的副作用。因此,需要一種新穎的方法來加強控管快閃記憶體之資料存取,以兼顧運作效能與系統資源使用控管。
因此本發明之目的之一在於提供一種用來減少一記憶裝置當中關於錯誤更正碼(Error Correction Code,ECC)之無法更正的錯誤之方法以及相關之記憶裝置及其控制器,以解決上述問題。
本發明之另一目的在於提供一種用來減少一記憶裝置當中關於錯誤更正碼之無法更正的錯誤之方法以及相關之記憶裝置及其控制器,以兼顧運作效能與系統資源使用控管。
本發明之較佳實施例中提供一種用來減少無法更正的錯誤之方法,該些無法更正的錯誤係為一記憶裝置當中關於錯誤更正碼之無法更正的錯誤,該方法包含有:依據於不同次所讀取之同一位址的資料進行多數決,以產生對應於該位址之多數決資料;以及檢查該多數決資料是否有無法更正之錯誤,以決定是否輸出該多數決資料作為該位址之資料。
本發明於提供上述方法之同時,亦對應地提供一種記憶裝置,該記憶裝置包含有:一快閃記憶體(Flash Memory),該快閃記憶體包含複數個區塊;以及一控制器,用來存取(Access)該快閃記憶體以及管理該複數個區塊,並且另用來減少該記憶裝置當中關於錯誤更正碼之無法更正的錯誤。另外,該控制器依據於不同次所讀取之同一位址的資料進行多數決,以產生對應於該位址之多數決資料。此外,該控制器檢查該多數決資料是否有無法更正之錯誤,以決定是否輸出該多數決資料作為該位址之資料。
本發明於提供上述方法之同時,亦對應地提供一種記憶裝置之控制器,該控制器係用來存取該記憶裝置中之一快閃記憶體,該快閃記憶體包含複數個區塊,該控制器包含有:一唯讀記憶體(Read Only Memory,ROM),用來儲存一程式碼;以及一微處理器,用來執行該程式碼以控制對該快閃記憶體之存取以及管理該複數個區塊,其中透過該微處理器執行該程式碼之該控制器另用來減少該記憶裝置當中關於錯誤更正碼之無法更正的錯誤。另外,該控制器依據於不同次所讀取之同一位址的資料進行多數決,以產生對應於該位址之多數決資料。此外,該控制器檢查該多數決資料是否有無法更正之錯誤,以決定是否輸出該多數決資料作為該位址之資料。
請參考第1圖,第1圖為依據本發明一第一實施例之一種記憶裝置100的示意圖,其中記憶裝置100可代表可攜式記憶裝置(例如:符合SD/MMC、CF、MS、XD標準之記憶卡)或固態硬碟(Solid State Drive,SSD)等各種記憶裝置。記憶裝置100包含有:一快閃記憶體(Flash Memory)120;以及一控制器,用來存取(Access)快閃記憶體120,其中該控制器例如一記憶體控制器110。依據本實施例,記憶體控制器110包含一微處理器112、一唯讀記憶體(Read Only Memory,ROM)112M、一控制邏輯114、一緩衝記憶體116、與一介面邏輯118,其中控制邏輯114包含多工器1142與1146、一錯誤更正碼(Error Correction Code,ECC)解碼器1144、與一多數決模組1148。在此,緩衝器B(1)與B(2)可代表緩衝記憶體116當中之不同的緩衝區、或代表緩衝記憶體116當中具有各自的實體架構之緩衝器。另外,唯讀記憶體112M係用來儲存一程式碼112C,而微處理器112則用來執行程式碼112C以控制對快閃記憶體120之存取。請注意,程式碼112C亦得儲存在緩衝記憶體116或任何形式之記憶體內。
於典型狀況下,快閃記憶體120包含複數個區塊(Block),而該控制器(例如:透過微處理器112執行程式碼112C之記憶體控制器110)對快閃記憶體120進行抹除資料之運作係以區塊為單位來進行抹除。另外,一區塊可記錄特定數量的頁(Page),其中該控制器對快閃記憶體120進行寫入資料之運作係以頁為單位來進行寫入。
實作上,透過微處理器112執行程式碼112C之記憶體控制器110可利用其本身內部之元件來進行諸多控制運作,例如:利用控制邏輯114來控制快閃記憶體120之存取運作(尤其是對至少一區塊或至少一頁之存取運作)、利用緩衝記憶體116進行所需之緩衝處理、以及利用介面邏輯118來與一主裝置(Host Device)溝通。
依據本實施例,多工器1142與1146可用來進行多工選擇,以控制該控制器中之資料流。例如:多工器1142與1146可依據執行程式碼112C之微處理器112的控制來進行多工選擇;又例如:多工器1142與1146可依據控制邏輯114中之邏輯電路的控制來進行多工選擇。另外,錯誤更正碼解碼器1144可用來進行錯誤更正碼解碼,而多數決模組1148可用來進行多數決運作。實作上,多工器1142與1146、錯誤更正碼解碼器1144、與多數決模組1148均為控制邏輯114的一部分,且由控制邏輯114中之邏輯電路所構成。這只是為了說明的目的而已,並非對本發明之限制。依據本實施例之某些變化例,程式碼112C包含某些程式模組/單元,且多工器1142與1146、錯誤更正碼解碼器1144、與多數決模組1148當中的至少一部分可藉由利用執行該些程式模組/單元之微處理器112來實施。例如:多工器1142與1146、錯誤更正碼解碼器1144、與多數決模組1148當中的一部分可藉由利用執行該些程式模組/單元之微處理器112來實施,而多工器1142與1146、錯誤更正碼解碼器1144、與多數決模組1148當中的另一部分係由控制邏輯114中之邏輯電路所構成。又例如:多工器1142與1146、錯誤更正碼解碼器1144、與多數決模組1148均可藉由利用執行該些程式模組/單元之微處理器112來實施。
不論上述之該控制器被設計為第1圖所示之架構(例如:多工器1142與1146、錯誤更正碼解碼器1144、與多數決模組1148均為控制邏輯114的一部分)或是該些變化例中的某一種架構(例如:多工器1142與1146、錯誤更正碼解碼器1144、與多數決模組1148的至少一部分可藉由利用執行該些程式模組/單元之微處理器112來實施),透過微處理器112執行程式碼112C之該控制器另可用來減少記憶裝置100當中關於錯誤更正碼之無法更正的錯誤。相關細節請參考第2圖進一步說明。
第2圖為依據本發明一實施例之一種用來減少一記憶裝置當中關於錯誤更正碼之無法更正的錯誤之方法910的流程圖。該方法可應用於第1圖所示之記憶裝置100,尤其是上述之控制器(例如:透過微處理器112執行程式碼112C之記憶體控制器110)。另外,該方法可藉由利用第1圖所示之記憶裝置100來實施,尤其是藉由利用上述之控制器來實施。該方法說明如下:於步驟912中,該控制器(尤其是多數決模組1148)依據於不同次所讀取之同一位址的資料進行多數決,以產生對應於該位址之多數決資料。舉例而言,該控制器於第一次讀取該位址的資料時,發生解碼錯誤(即,無法利用錯誤更正碼更正之錯誤)。於是,該控制器向快閃記憶體120發出命令以修改讀取該位址的資料時所使用的讀取門檻電壓(Read Threshold-Voltage)。修改後,該控制器再次(第二次)讀取該位址的資料。然而,於第二次讀取該位址的資料時,亦發生解碼錯誤。於是,該控制器向快閃記憶體120發出命令以再次修改讀取門檻電壓。修改後,該控制器第三次讀取該位址的資料。然而,於第三次讀取該位址的資料時,亦發生解碼錯誤。請注意到,上述讀取次數僅為說明之用,並非本發明之限制。依據本實施例,該控制器於不同次讀取該同一位址的資料時所使用的讀取門檻電壓(Read Threshold-Voltage)不盡相同;在所使用的讀取門檻電壓不盡相同的狀況下,於不同次所讀取之同一位址的資料可能略有差異,而多數決模組1148可進行多數決以產生對應於該位址之多數決資料來代替於不同次所讀取之同一位址的資料,藉此減少記憶裝置100當中關於錯誤更正碼之無法更正的錯誤。
於步驟914中,該控制器檢查該多數決資料是否有無法更正之錯誤,以決定是否輸出該多數決資料作為該位址之資料。例如:在該多數決資料沒有無法更正之錯誤的狀況下,錯誤更正碼解碼器1144通知該控制器,於是該控制器就可以輸出該多數決資料作為該位址之資料。又例如:在該多數決資料有無法更正之錯誤的狀況下,錯誤更正碼解碼器1144回報解碼錯誤予該控制器,於是該控制器據以進行其它運作諸如進行關於該位址所在的儲存空間之錯誤標示。
依據本實施例之一特例,該控制器可將不同次所讀取之該同一位址的資料當中之至少一部分分別暫存於複數個緩衝區/緩衝器諸如第1圖所示之緩衝器B(1)與B(2)。例如:該控制器可先將不同次所讀取之該同一位址的資料當中除了最後一次的資料之外的所有資料分別暫存於該些緩衝區/緩衝器,其中該最後一次的資料可在進行該多數決之過程中才讀取。更明確而言,於進行該多數決之過程中,該控制器將不同次所讀取之該同一位址的資料當中之最後一次的資料暫存於該些緩衝區/緩衝器中之一第一緩衝區/緩衝器諸如緩衝器B(1),以將該第一緩衝區/緩衝器當中最新取用於進行該多數決之部分(例如至少一位元或位元組)取代為該最後一次的資料當中最新讀取之部分(例如至少一位元或位元組)。另一方面,於進行該多數決之過程中,該控制器將該多數決資料暫存於該些緩衝區/緩衝器中之一第二緩衝區/緩衝器諸如緩衝器B(2),以將該第二緩衝區/緩衝器當中最新取用於進行該多數決之部分(例如至少一位元或位元組)取代為該多數決資料當中最新產生之部分(例如至少一位元或位元組)。舉例而言,緩衝器B(1)係儲存第一次對一記憶頁進行讀取並解碼後之一頁資料,緩衝器B(2)係儲存第二次對該記憶頁進行讀取並解碼後之一頁資料。當控制器對該記憶頁進行第三次讀取時,亦循序將緩衝器B(1)與B(2)中相應的位元組(或位元)讀出,例如分別讀出緩衝器B(1)與B(2)中各自的第一位元組。同時,多數決模組1148對讀取自緩衝器B(1)之第一位元組、讀取自緩衝器B(2)之第一位元組、以及進行第三次讀取所得之第一位元組進行多數決,並將進行多數決所得之多數決資料存回緩衝器B(2)。此外,控制器亦同時將對該記憶頁進行第三次讀取所得之資料存回緩衝器B(1)。請注意到,由於在針對該記憶頁之第一次、第二次讀取運作中各自的第一位元組被讀出之後,其所佔據之緩衝器空間已可釋放以供它用,故該控制器可將進行第三次讀取並解碼後所得之第一位元組以及進行多數決所得之多數決資料分別存入緩衝器B(1)、B(2)相對應的空間中。
藉由上述運作,本發明可節省緩衝區/緩衝器的用量,並且在讀取該最後一次的資料之過程中同時備妥該最後一次的資料以及該多數決資料以供取用。尤其是,當最後一次的資料已經讀取完畢時,多數決模組1148幾乎同時完成該多數決之運作,且錯誤更正碼解碼器1144幾乎同時完成針對該最後一次的資料之錯誤更正碼解碼。於是,在該最後一次的資料沒有無法更正之錯誤的狀況下,錯誤更正碼解碼器1144通知該控制器,而該控制器就可以立即從該第一緩衝區/緩衝器諸如緩衝器B(1)讀取該最後一次的資料並予以輸出,不會浪費時間。另外,在該最後一次的資料有無法更正之錯誤的狀況下,錯誤更正碼解碼器1144就可以立即對該第二緩衝區/緩衝器諸如緩衝器B(2)中之該多數決資料進行檢查或錯誤更正;只要該多數決資料沒有無法更正之錯誤,該控制器於步驟914中就可以從該第二緩衝區/緩衝器諸如緩衝器B(2)讀取該多數決資料並予以輸出,不會浪費時間。因此,本發明之方法以及相關的記憶裝置及其控制器能提供極佳的效能。
請注意,本發明藉由上述運作可節省緩衝區/緩衝器的用量。這只是為了說明的目的而已,並非對本發明之限制。依據本實施例之某些變化例,在該些緩衝區/緩衝器的數量及其相對應的成本於記憶體控制器110設計之初沒有嚴格上限的狀況下,該控制器可將每一次所讀取之該同一位址的資料分別暫存於該些緩衝區/緩衝器。也就是說,當降低成本不是首要的優先事項時,本發明不排除揮霍地使用緩衝記憶體116。
第3圖為第2圖所示之方法910於一實施例之實施細節,其中步驟912中所述不同次所讀取之該同一位址的資料包含第一次讀取的資料D(1)、第二次讀取的資料D(2)、...、與第N次讀取的資料D(N),而後者即上述之最後一次的資料。為了便於理解,本實施例可參考第1圖所示之架構來說明,其中第1圖所示之控制邏輯114中之各元件與緩衝記憶體116之間的資料路徑在本實施例中不限於只連向緩衝器B(1)與緩衝器B(2)。
依據本實施例,該控制器讀取該同一位址的資料之次數N為奇數。例如:第3圖繪示N=3的狀況。在此,第一次讀取的資料D(1)係首先暫存於第1圖所示之緩衝器B(1),而錯誤更正碼解碼器1144可對緩衝器B(1)中之資料D(1)進行檢查或錯誤更正。在第一次讀取的資料D(1)有無法更正之錯誤的狀況下,該控制器執行第3圖所示之工作流程920。
於步驟922中,該控制器檢查第二次讀取的資料D(2)是否有無法更正之錯誤。尤其是,第二次讀取的資料D(2)係暫存於第1圖所示之緩衝器B(2),而錯誤更正碼解碼器1144可對緩衝器B(2)中之資料D(2)進行檢查或錯誤更正。當偵測到第二次讀取的資料D(2)有無法更正之錯誤時,則進入步驟924;否則,結束工作流程920,這表示該控制器可輸出第二次讀取的資料D(2)作為該位址之資料。
於步驟924中,該控制器檢查第三次讀取的資料D(3)是否有無法更正之錯誤。尤其是,第三次讀取的資料D(3)係暫存於緩衝記憶體116當中之另一緩衝區/緩衝器諸如緩衝器B(3)(未繪示於第1圖),而錯誤更正碼解碼器1144可對緩衝器B(3)中之資料D(3)進行檢查或錯誤更正。當偵測到第三次讀取的資料D(3)有無法更正之錯誤時,則進入步驟926;否則,結束工作流程920,這表示該控制器可輸出第三次讀取的資料D(3)作為該位址之資料。
於步驟926中,該控制器(尤其是多數決模組1148)進行多數決,以產生上述之多數決資料例如多數決資料V(D(1),D(2),...,D(N));在N=3的狀況下,多數決資料V(D(1),D(2),...,D(N))可寫成多數決資料V(D(1),D(2),D(3))。
於步驟928中,該控制器檢查該多數決資料是否有無法更正之錯誤。尤其是,該多數決資料係暫存於緩衝記憶體116當中之另一緩衝區/緩衝器諸如緩衝器B(0)(未繪示於第1圖),而錯誤更正碼解碼器1144可對緩衝器B(0)中之該多數決資料進行檢查或錯誤更正。當偵測到該多數決資料有無法更正之錯誤時,則進入步驟930;否則,結束工作流程920,這表示該控制器可輸出該多數決資料作為該位址之資料。
於步驟930中,錯誤更正碼解碼器1144回報解碼錯誤予該控制器。
請注意,第3圖繪示步驟924與926各自的運作。這只是為了說明的目的而已,並非對本發明之限制。依據本實施例之某些變化例諸如上述之特例,步驟926不必繪示於第3圖(或者說,步驟926可合併至步驟924)。尤其是,該控制器於進行該多數決之過程中將第三次讀取的資料D(3)暫存於緩衝記憶體116緩衝器B(1),以將緩衝器B(1)原先所暫存的資料D(1)當中最新取用於進行該多數決之部分(例如至少一位元或位元組)取代為資料D(3)當中最新讀取之部分(例如至少一位元或位元組)。於是,錯誤更正碼解碼器1144可於步驟924中對緩衝器B(1)中之資料D(3)進行檢查或錯誤更正。當偵測到第三次讀取的資料D(3)有無法更正之錯誤時,則進入步驟928;否則,結束工作流程920,這表示該控制器可輸出第三次讀取的資料D(3)作為該位址之資料。另一方面,於進行該多數決之過程中,該控制器將該多數決資料暫存於緩衝器B(2),以將緩衝器B(2)原先所暫存的資料D(2)當中最新取用於進行該多數決之部分(例如至少一位元或位元組)取代為該多數決資料當中最新產生之部分(例如至少一位元或位元組)。於是,錯誤更正碼解碼器1144可於步驟928中對緩衝器B(2)中之該多數決資料進行檢查或錯誤更正。
另外,第3圖繪示N=3的狀況。這只是為了說明的目的而已,並非對本發明之限制。依據本實施例,在N>3的狀況下,步驟922至步驟924可取代為一系列步驟諸如步驟922-2、步驟922-3、...、與步驟922-N,分別用來檢查第二次讀取的資料D(2)、第三次讀取的資料D(3)、...、與第N次讀取的資料D(N)是否有無法更正之錯誤。
第4圖繪示於一實施例中第2圖所示之方法910所涉及之多數決的示意圖,其中本實施例為第3圖所示實施例之一特例。在此,除了位元Bit(x)、Bit(y)、與Bit(z)之外,資料D(1)、D(2)、與D(3)彼此相同。如第4圖所示,多數決資料V(D(1),D(2),D(3))的各個位元分別符合資料D(1)、D(2)、與D(3)的相對應位元之多數決結果。例如:資料D(1)、D(2)、與D(3)的第一個位元Bit(1)均為1,故多數決資料V(D(1),D(2),D(3))的第一個位元Bit(1)為1。又例如:資料D(1)、D(2)、與D(3)的第x個位元Bit(x)分別為1、0、與1,其可簡稱為集合{1,0,1},而多數決資料V(D(1),D(2),D(3))的第x個位元Bit(x)則為集合{1,0,1}中出現最多次之數值“1”;相仿地,多數決資料V(D(1),D(2),D(3))的第y個位元Bit(y)為資料D(1)、D(2)、與D(3)的第y個位元Bit(y)所形成的集合{1,0,0}中出現最多次之數值“0”,而多數決資料V(D(1),D(2),D(3))的第z個位元Bit(z)則為資料D(1)、D(2)、與D(3)的第z個位元Bit(z)所形成的集合{0,0,1}中出現最多次之數值“0”。
本發明的好處之一是,本發明能減少記憶裝置當中關於錯誤更正碼之無法更正的錯誤。另外,本發明能兼顧運作效能與系統資源使用控管,並且不會有相關技術的問題諸如將一些區塊錯誤地標示為壞區塊。此外,本發明之較佳實施例可節省緩衝區/緩衝器的用量,並且在讀取該最後一次的資料之過程中同時備妥該最後一次的資料以及該多數決資料以供取用,故本發明之方法以及相關的記憶裝置及其控制器能提供極佳的效能。
以上所述僅為本發明之較佳實施例,凡依本發明申請專利範圍所做之均等變化與修飾,皆應屬本發明之涵蓋範圍。
100...記憶裝置
110...記憶體控制器
112...微處理器
112C...程式碼
112M...唯讀記憶體
114...控制邏輯
1142,1146...多工器
1144...錯誤更正碼解碼器
1148...多數決模組
116...緩衝記憶體
118...介面邏輯
120...快閃記憶體
910...用來減少一記憶裝置當中關於錯誤更正碼之無法更正的錯誤之方法
912,914,922,924,926,928,930...步驟
920...工作流程
B(1),B(2)...緩衝區/緩衝器
Bit(x),Bit(y),Bit(z)‧‧‧位元
D(1),D(2),D(3)‧‧‧不同次所讀取之同一位址的資料
V(D(1),D(2),D(3))‧‧‧多數決資料
第1圖為依據本發明一第一實施例之一種記憶裝置的示意圖。
第2圖為依據本發明一實施例之一種用來減少一記憶裝置當中關於錯誤更正碼(Error Correction Code,ECC)之無法更正的錯誤之方法的流程圖。
第3圖為第2圖所示之方法於一實施例中之實施細節。
第4圖繪示於一實施例中第2圖所示之方法所涉及之多數決的示意圖。
910...用來減少一記憶裝置當中關於錯誤更正碼之無法更正的錯誤之方法
912,914...步驟
Claims (17)
- 一種用來減少無法更正的錯誤之方法,該些無法更正的錯誤係為一記憶裝置當中關於錯誤更正碼(Error Correction Code,ECC)之無法更正的錯誤,該方法係應用於位於該記憶裝置當中之一控制器,該記憶裝置包含一快閃記憶體(Flash Memory),該方法包含有:依據於不同次所讀取之同一位址的資料進行多數決,以產生對應於該位址之多數決資料;以及檢查該多數決資料是否有無法更正之錯誤,以決定是否輸出該多數決資料作為該位址之資料;其中該控制器於一第一時間讀取該快閃記憶體中之一記憶頁、並且解碼該第一時間之讀取資料以產生對應於該第一時間之一頁解碼資料,然後於一第二時間讀取該記憶頁、並且解碼該第二時間之讀取資料以產生對應於該第二時間之一頁解碼資料,其中對應於該第一時間之該頁解碼資料係暫時地儲存於該控制器之複數個緩衝區/緩衝器中之一第一緩衝區/緩衝器,而對應於該第二時間之該頁解碼資料係暫時地儲存於該複數個緩衝區/緩衝器中之一第二緩衝區/緩衝器;之後,當於一第三時間讀取該記憶頁時,該控制器分別循序讀取該第一緩衝區/緩衝器中之至少一相對應位元以及該第二緩衝區/緩衝器中之至少一相對應位元,並且對讀取自該第一緩衝區/緩衝器之該至少一相對應位元、讀取自該第二緩衝區 /緩衝器之該至少一相對應位元、以及從於該第三時間讀取該記憶頁所得之至少一相對應位元進行該多數決,以及將從進行該多數決所得之該多數決資料之至少一相對應位元儲存於該第二緩衝區/緩衝器中,其中在該第一緩衝區/緩衝器中之該至少一相對應位元被讀取之後,該控制器將從於該第三時間讀取該記憶頁所得之該至少一相對應位元儲存於該第一緩衝區/緩衝器中。
- 如申請專利範圍第1項所述之方法,其中讀取該同一位址的資料之次數為奇數。
- 如申請專利範圍第1項所述之方法,其中於不同次讀取該同一位址的資料時所使用的讀取門檻電壓(Read Threshold-Voltage)不盡相同。
- 一種記憶裝置,包含有:一快閃記憶體(Flash Memory),該快閃記憶體包含複數個區塊;以及一控制器,用來存取(Access)該快閃記憶體以及管理該複數個區塊,並且另用來減少該記憶裝置當中關於錯誤更正碼(Error Correction Code,ECC)之無法更正的錯誤,其中該控制器依據於不同次所讀取之同一位址的資料進行多數決,以產生對應於該位址之多數決資料,以及該控 制器檢查該多數決資料是否有無法更正之錯誤,以決定是否輸出該多數決資料作為該位址之資料;其中該控制器於一第一時間讀取該快閃記憶體中之一記憶頁、並且解碼該第一時間之讀取資料以產生對應於該第一時間之一頁解碼資料,然後於一第二時間讀取該記憶頁、並且解碼該第二時間之讀取資料以產生對應於該第二時間之一頁解碼資料,其中對應於該第一時間之該頁解碼資料係暫時地儲存於該控制器之複數個緩衝區/緩衝器中之一第一緩衝區/緩衝器,而對應於該第二時間之該頁解碼資料係暫時地儲存於該複數個緩衝區/緩衝器中之一第二緩衝區/緩衝器;之後,當於一第三時間讀取該記憶頁時,該控制器分別循序讀取該第一緩衝區/緩衝器中之至少一相對應位元以及該第二緩衝區/緩衝器中之至少一相對應位元,並且對讀取自該第一緩衝區/緩衝器之該至少一相對應位元、讀取自該第二緩衝區/緩衝器之該至少一相對應位元、以及從於該第三時間讀取該記憶頁所得之至少一相對應位元進行該多數決,以及將從進行該多數決所得之該多數決資料之至少一相對應位元儲存於該第二緩衝區/緩衝器中,其中在該第一緩衝區/緩衝器中之該至少一相對應位元被讀取之後,該控制器將從於該第三時間讀取該記憶頁所得之該至少一相對應位元儲存於該第一緩衝區/緩衝器中。
- 如申請專利範圍第4項所述之記憶裝置,其中該控制器讀取該 同一位址的資料之次數為奇數。
- 如申請專利範圍第4項所述之記憶裝置,其中該控制器於不同次讀取該同一位址的資料時所使用的讀取門檻電壓(Read Threshold-Voltage)不盡相同。
- 如申請專利範圍第4項所述之記憶裝置,其中該控制器包含:一多數決模組,用來依據於不同次所讀取之該同一位址的資料進行多數決,以產生對應於該位址之該多數決資料;以及一錯誤更正碼解碼器,用來進行錯誤更正碼解碼。
- 如申請專利範圍第7項所述之記憶裝置,其中該控制器另包含:複數個多工器,用來進行多工選擇,以控制該控制器中之資料流。
- 如申請專利範圍第8項所述之記憶裝置,其中該多數決模組、該錯誤更正碼解碼器、以及該些多工器均為該控制器之一控制邏輯的一部分,且由該控制邏輯中之邏輯電路所構成。
- 如申請專利範圍第8項所述之記憶裝置,其中該控制器中之一微處理器所執行之一程式碼包含複數個程式模組/單元;以及該多數決模組、該錯誤更正碼解碼器、以及該些多工器當中的至少一部分係藉由利用執行該些程式模組/單元之該微處理 器來實施。
- 一種記憶裝置之控制器,該控制器係用來存取(Access)該記憶裝置中之一快閃記憶體(Flash Memory),該快閃記憶體包含複數個區塊,該控制器包含有:一唯讀記憶體(Read Only Memory,ROM),用來儲存一程式碼;以及一微處理器,用來執行該程式碼以控制對該快閃記憶體之存取以及管理該複數個區塊,其中透過該微處理器執行該程式碼之該控制器另用來減少該記憶裝置當中關於錯誤更正碼(Error Correction Code,ECC)之無法更正的錯誤,其中該控制器依據於不同次所讀取之同一位址的資料進行多數決,以產生對應於該位址之多數決資料,以及該控制器檢查該多數決資料是否有無法更正之錯誤,以決定是否輸出該多數決資料作為該位址之資料;其中該控制器於一第一時間讀取該快閃記憶體中之一記憶頁、並且解碼該第一時間之讀取資料以產生對應於該第一時間之一頁解碼資料,然後於一第二時間讀取該記憶頁、並且解碼該第二時間之讀取資料以產生對應於該第二時間之一頁解碼資料,其中對應於該第一時間之該頁解碼資料係暫時地儲存於該控制器之複數個緩衝區/緩衝器中之一第一緩衝區/緩衝器,而對應於該第二時間之該頁解碼資料係暫時地儲存於該複數個緩衝區/緩衝器中之一第二緩衝區/緩衝器; 之後,當於一第三時間讀取該記憶頁時,該控制器分別循序讀取該第一緩衝區/緩衝器中之至少一相對應位元以及該第二緩衝區/緩衝器中之至少一相對應位元,並且對讀取自該第一緩衝區/緩衝器之該至少一相對應位元、讀取自該第二緩衝區/緩衝器之該至少一相對應位元、以及從於該第三時間讀取該記憶頁所得之至少一相對應位元進行該多數決,以及將從進行該多數決所得之該多數決資料之至少一相對應位元儲存於該第二緩衝區/緩衝器中,其中在該第一緩衝區/緩衝器中之該至少一相對應位元被讀取之後,該控制器將從於該第三時間讀取該記憶頁所得之該至少一相對應位元儲存於該第一緩衝區/緩衝器中。
- 如申請專利範圍第11項所述之控制器,其中該控制器讀取該同一位址的資料之次數為奇數。
- 如申請專利範圍第11項所述之控制器,其中該控制器於不同次讀取該同一位址的資料時所使用的讀取門檻電壓(Read Threshold-Voltage)不盡相同。
- 如申請專利範圍第11項所述之控制器,其中該控制器包含:一多數決模組,用來依據於不同次所讀取之該同一位址的資料進行多數決,以產生對應於該位址之該多數決資料;以及一錯誤更正碼解碼器,用來進行錯誤更正碼解碼。
- 如申請專利範圍第14項所述之控制器,其中該控制器另包含:複數個多工器,用來進行多工選擇,以控制該控制器中之資料流。
- 如申請專利範圍第15項所述之控制器,其中該多數決模組、該錯誤更正碼解碼器、以及該些多工器均為該控制器之一控制邏輯的一部分,且由該控制邏輯中之邏輯電路所構成。
- 如申請專利範圍第15項所述之控制器,其中該程式碼包含複數個程式模組/單元;以及該多數決模組、該錯誤更正碼解碼器、以及該些多工器當中的至少一部分係藉由利用執行該些程式模組/單元之該微處理器來實施。
Priority Applications (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| TW098141899A TWI446350B (zh) | 2009-12-08 | 2009-12-08 | 用來減少無法更正的錯誤之方法以及記憶裝置及其控制器 |
| US12/774,736 US8516354B2 (en) | 2009-12-08 | 2010-05-06 | Method for reducing uncorrectable errors of a memory device regarding error correction code, and associated memory device and controller thereof |
| US13/942,724 US8631310B2 (en) | 2009-12-08 | 2013-07-16 | Method for reducing uncorrectable errors of a memory device regarding error correction code, and associated memory device and controller thereof |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| TW098141899A TWI446350B (zh) | 2009-12-08 | 2009-12-08 | 用來減少無法更正的錯誤之方法以及記憶裝置及其控制器 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| TW201120899A TW201120899A (en) | 2011-06-16 |
| TWI446350B true TWI446350B (zh) | 2014-07-21 |
Family
ID=44083211
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW098141899A TWI446350B (zh) | 2009-12-08 | 2009-12-08 | 用來減少無法更正的錯誤之方法以及記憶裝置及其控制器 |
Country Status (2)
| Country | Link |
|---|---|
| US (2) | US8516354B2 (zh) |
| TW (1) | TWI446350B (zh) |
Families Citing this family (16)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US9142323B1 (en) * | 2011-03-01 | 2015-09-22 | Sk Hynix Memory Solutions Inc. | Hardware acceleration of DSP error recovery for flash memory |
| CN103959236B (zh) * | 2011-11-30 | 2016-12-07 | 英特尔公司 | 用于提供向量横向多数表决功能的处理器、设备和处理系统 |
| KR102050896B1 (ko) | 2013-02-19 | 2019-12-02 | 삼성전자주식회사 | 메모리 컨트롤러 및 그것의 동작 방법 |
| US9136873B2 (en) | 2013-03-11 | 2015-09-15 | Intel Corporation | Reduced uncorrectable memory errors |
| US9218890B2 (en) * | 2013-06-03 | 2015-12-22 | Sandisk Technologies Inc. | Adaptive operation of three dimensional memory |
| US9891837B2 (en) * | 2014-09-08 | 2018-02-13 | Toshiba Memory Corporation | Memory system |
| US9785383B2 (en) | 2015-03-09 | 2017-10-10 | Toshiba Memory Corporation | Memory system and method of controlling nonvolatile memory |
| US9946595B2 (en) | 2015-09-30 | 2018-04-17 | International Business Machines Corporation | Reducing uncorrectable errors based on a history of correctable errors |
| US10713174B2 (en) * | 2016-12-20 | 2020-07-14 | Texas Instruments Incorporated | Streaming engine with early and late address and loop count registers to track architectural state |
| TWI643196B (zh) * | 2017-06-22 | 2018-12-01 | 點序科技股份有限公司 | 快閃記憶體裝置及其資料讀取方法 |
| KR102258140B1 (ko) | 2017-07-06 | 2021-05-28 | 삼성전자주식회사 | 반도체 메모리 장치의 에러 정정 회로, 반도체 메모리 장치 및 메모리 시스템 |
| JP7096070B2 (ja) * | 2018-05-29 | 2022-07-05 | ラピスセミコンダクタ株式会社 | 多数決処理装置、半導体記憶装置及び情報データの多数決方法 |
| FI129898B (en) * | 2019-08-23 | 2022-10-31 | Valmet Automation Oy | Security arrangement of the automation system |
| KR102780598B1 (ko) | 2019-12-16 | 2025-03-12 | 삼성전자주식회사 | 메모리 장치의 데이터 기입 방법, 데이터 독출 방법 및 이를 포함하는 구동 방법 |
| US11409601B1 (en) * | 2021-01-26 | 2022-08-09 | Micron Technology, Inc. | Memory device protection |
| US11750226B2 (en) * | 2021-06-09 | 2023-09-05 | Nvidia Corporation | Error correction code system with augmented detection features |
Family Cites Families (10)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN1230824A (zh) * | 1998-03-31 | 1999-10-06 | 京都陶瓷株式会社 | 确认信息接收方法 |
| US6621739B2 (en) * | 2002-01-18 | 2003-09-16 | Sandisk Corporation | Reducing the effects of noise in non-volatile memories through multiple reads |
| JP3892851B2 (ja) * | 2004-02-04 | 2007-03-14 | 株式会社東芝 | メモリカード及び半導体装置 |
| WO2007132457A2 (en) * | 2006-05-12 | 2007-11-22 | Anobit Technologies Ltd. | Combined distortion estimation and error correction coding for memory devices |
| US7821826B2 (en) | 2006-10-30 | 2010-10-26 | Anobit Technologies, Ltd. | Memory cell readout using successive approximation |
| US7975192B2 (en) * | 2006-10-30 | 2011-07-05 | Anobit Technologies Ltd. | Reading memory cells using multiple thresholds |
| WO2008139441A2 (en) * | 2007-05-12 | 2008-11-20 | Anobit Technologies Ltd. | Memory device with internal signal processing unit |
| US8230300B2 (en) * | 2008-03-07 | 2012-07-24 | Apple Inc. | Efficient readout from analog memory cells using data compression |
| US20090282316A1 (en) * | 2008-05-07 | 2009-11-12 | Texas Instruments Incorporated | Memory Access in Low-Density Parity Check Decoders |
| US20090292971A1 (en) * | 2008-05-21 | 2009-11-26 | Chun Fung Man | Data recovery techniques |
-
2009
- 2009-12-08 TW TW098141899A patent/TWI446350B/zh active
-
2010
- 2010-05-06 US US12/774,736 patent/US8516354B2/en active Active
-
2013
- 2013-07-16 US US13/942,724 patent/US8631310B2/en active Active
Also Published As
| Publication number | Publication date |
|---|---|
| US8516354B2 (en) | 2013-08-20 |
| US20130305121A1 (en) | 2013-11-14 |
| TW201120899A (en) | 2011-06-16 |
| US8631310B2 (en) | 2014-01-14 |
| US20110138254A1 (en) | 2011-06-09 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| TWI446350B (zh) | 用來減少無法更正的錯誤之方法以及記憶裝置及其控制器 | |
| TWI541819B (zh) | 用來進行錯誤更正之方法、記憶裝置、與控制器 | |
| US10592410B2 (en) | Backup mechanism of writing sequential data to single-level cell buffer and multi-level cell buffer | |
| TWI455136B (zh) | 用來進行資料整形之方法以及相關之記憶裝置及其控制器 | |
| US9201785B2 (en) | Data writing method, memory controller and memory storage apparatus | |
| TWI474330B (zh) | 用來進行記憶體存取管理之方法以及記憶裝置及其控制器 | |
| TWI677879B (zh) | 資料儲存裝置與資料處理方法 | |
| US9582224B2 (en) | Memory control circuit unit, memory storage apparatus and data accessing method | |
| TWI389122B (zh) | 用來存取一快閃記憶體之方法以及相關之記憶裝置及其控制器 | |
| US9514819B2 (en) | Programming method, memory storage device and memory controlling circuit unit | |
| US11068201B2 (en) | Flash memory controller, method for managing flash memory module and associated electronic device | |
| US9141476B2 (en) | Method of storing system data, and memory controller and memory storage apparatus using the same | |
| US9063888B2 (en) | Program code loading and accessing method, memory controller, and memory storage apparatus | |
| US9383929B2 (en) | Data storing method and memory controller and memory storage device using the same | |
| CN109783005B (zh) | 控制记忆装置的方法、记忆装置、及其控制器和电子装置 | |
| TWI442406B (zh) | 針對一快閃記憶體的控制器之錯誤管理機制來提升驗證效率之方法以及相關之記憶裝置及其控制器 | |
| US8738847B2 (en) | Data writing method, and memory controller and memory storage apparatus using the same | |
| CN102141944B (zh) | 用来减少无法更正的错误的方法以及记忆装置及其控制器 | |
| TWI873852B (zh) | 快閃記憶體控制器、記憶裝置及相關的控制方法 | |
| US9229798B2 (en) | Error handling method, memory storage device and memory controlling circuit unit | |
| TWI823649B (zh) | 快閃記憶體控制器的控制方法、快閃記憶體控制器以及電子裝置 | |
| US9830077B2 (en) | Data writing method, memory control circuit unit and memory storage apparatus | |
| US9436547B2 (en) | Data storing method, memory control circuit unit and memory storage device | |
| JP2012155818A (ja) | 半導体集積回路 |