TWI575530B - 存取快閃記憶體模組的方法及相關的快閃記憶體控制器與記憶裝置 - Google Patents
存取快閃記憶體模組的方法及相關的快閃記憶體控制器與記憶裝置 Download PDFInfo
- Publication number
- TWI575530B TWI575530B TW104125708A TW104125708A TWI575530B TW I575530 B TWI575530 B TW I575530B TW 104125708 A TW104125708 A TW 104125708A TW 104125708 A TW104125708 A TW 104125708A TW I575530 B TWI575530 B TW I575530B
- Authority
- TW
- Taiwan
- Prior art keywords
- flash memory
- data
- error correction
- correction code
- nth
- Prior art date
Links
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
Description
本發明係有關於快閃記憶體,尤指一種存取快閃記憶體模組的方法及相關的快閃記憶體控制器與記憶裝置。
為了讓快閃記憶體能夠有更高的密度以及更大的容量,快閃記憶體的製程也朝向立體化的發展,而產生了幾種不同的立體NAND型快閃記憶體(3D NAND-type flash)。在立體NAND型快閃記憶體中,由於整體結構的不同以及浮閘形狀位置的改變,因此在資料的寫入以及讀取上也較傳統的平面NAND型快閃記憶體多出了些許的問題。舉例來說,在某些立體NAND型快閃記憶體中,會將多條字元線(word line)定義為一字元線組,而該字元線組會共同具有部分的控制電路,進而導致當資料寫入到該字元線組之一條字元線上的浮閘電晶體發生失敗時(寫入失敗),會連帶導致該字元線組的其他字元線上的浮閘電晶體的資料發生錯誤;此外,若是該字元線組中的一條字元線發生斷路或短路的狀況時,也會連帶影響到該字元線組的其他字元線上的浮閘電晶體的資料發生錯誤,因此,如何就上述問題提出一種錯誤更正方式,以盡可能地維持資料的正確性,且又不會浪費記憶體空間以節省成本,是一個重要的課題。
因此,本發明的目的之一在於提出一種存取一快閃記憶體模組的方法及相關的快閃記憶體控制器與記憶裝置,其使用類似容錯式磁碟陣列(Redundant Array of Independent Disks,RAID)的錯誤更正方式,但是卻不會大幅浪費記憶體空間,以解決先前技術中的問題。
依據本發明一實施例,一種存取一快閃記憶體模組的方法包含有:對第N筆資料進行編碼以產生一第N組錯誤更正碼,其中該第N組錯誤更正碼係用來對該第N筆資料進行錯誤更正,其中N為一正整數;將該第N筆資料寫入至該快閃記憶體模組中;將該第N組錯誤更正碼寫入至該快閃記憶體模組中;當該第N筆資料成功寫入至該快閃記憶體模組後,刪除該快閃記憶體模組中的該第N組錯誤更正碼中至少一部分,但在該快閃記憶體模組中保留該第N筆資料。
依據本發明一實施例,一種存取一快閃記憶體模組的方法,包含有:將第N筆資料寫入至該快閃記憶體模組中的多個快閃記憶體晶片,並對該第N筆資料進行編碼以產生一第N組錯誤更正碼,其中該第N組錯誤更正碼係用來對寫入至該多個快閃記憶體晶片中的該第N筆資料進行錯誤更正,其中N為一正整數;當判斷該第N筆資料已成功寫入至該多個快閃記憶體晶片中之後,保留該第N組錯誤更正碼;依序將第(N+1)~(N+M)筆資料分別寫入至該快閃記憶體模組中的該多個快閃記憶體晶片,並分別對該第(N+1)~(N+M)筆資料進行編碼以產生第(N+1)~(N+M)組錯誤更正碼,其中該第(N+1)~(N+M)組錯誤更正碼係分別用來對寫入至該多個快閃記憶體晶片中的該第(N+1)~(N+M)筆資料進行錯誤更正,其中M為一正整數;以及當判斷該第(N+M)筆資料已成功寫入至該多個快閃記憶體晶片中時,才刪除該第N~(N+M)組錯誤更正碼。
依據本發明另一實施例,揭露了一種快閃記憶體控制器,其中該快閃記憶體控制器係用來存取一快閃記憶體模組,且該快閃記憶體控制器包含有:一記憶體,用來儲存一程式碼;一微處理器,用來執行該程式碼以控制對該快閃記憶體模組之存取;以及一編碼器;其中該微處理器對第N筆資料進行編碼以產生一第N組錯誤更正碼,其中該第N組錯誤更正碼係用來對該第N筆資料進行錯誤更正,其中N為一正整數;該微處理器將該第N筆資料寫入至該快閃記憶體模組中,並將該第N組錯誤更正碼寫入至該快閃記憶體模組中;當該第N筆資料成功寫入至該快閃記憶體模組後,該微處理器刪除該快閃記憶體模組中的該第N組錯誤更正碼中至少一部分,但在該快閃記憶體模組中保留該第N筆資料。
依據本發明另一實施例,揭露了一種快閃記憶體控制器,其中該快閃記憶體控制器係用來存取一快閃記憶體模組,且該快閃記憶體控制器包含有:一記憶體,用來儲存一程式碼;一微處理器,用來執行該程式碼以控制對該快閃記憶體模組之存取;以及一編碼器;其中該微處理器將第N筆資料寫入至該快閃記憶體模組中的多個快閃記憶體晶片,且該編碼器對該第N筆資料進行編碼以產生一第N組錯誤更正碼,其中該第N組錯誤更正碼係用來對寫入至該多個快閃記憶體晶片中的該第N筆資料進行錯誤更正,其中N為一正整數;當該微處理器判斷該第N筆資料已成功寫入至該多個快閃記憶體晶片中之後,保留該第N組錯誤更正碼;該微處理器依序將第(N+1)~(N+M)筆資料分別寫入至該快閃記憶體模組中的該多個快閃記憶體晶片,且該編碼器分別對該第(N+1)~(N+M)筆資料進行編碼以產生第(N+1)~(N+M)組錯誤更正碼,其中該第(N+1)~(N+M)組錯誤更正碼係分別用來對寫入至該多個快閃記憶體晶片中的該第(N+1)~(N+M)筆資料進行錯誤更正,其中M為一正整數;以及當該微處理器判斷該第(N+M)筆資料已成功寫入至該多個快閃記憶體晶片中時,才刪除該第N~(N+M)組錯誤更正碼。
依據本發明另一實施例,一種記憶裝置包含有:一快閃記憶體模組;以及一快閃記憶體控制器,用來存取該快閃記憶體;其中該快閃記憶體控制器對第N筆資料進行編碼以產生一第N組錯誤更正碼,其中該第N組錯誤更正碼係用來對該第N筆資料進行錯誤更正,其中N為一正整數;將該第N筆資料寫入至該快閃記憶體模組中;將該第N組錯誤更正碼寫入至該快閃記憶體模組中;該第N筆資料成功寫入至該快閃記憶體模組後,刪除該快閃記憶體模組中的該第N組錯誤更正碼中至少一部分,但在該快閃記憶體模組中保留該第N筆資料。
依據本發明另一實施例,一種記憶裝置包含有:一快閃記憶體模組;以及一快閃記憶體控制器,用來存取該快閃記憶體;其中該快閃記憶體控制器將第N筆資料寫入至該快閃記憶體模組中的多個快閃記憶體晶片,且對該第N筆資料進行編碼以產生一第N組錯誤更正碼,其中該第N組錯誤更正碼係用來對寫入至該多個快閃記憶體晶片中的該第N筆資料進行錯誤更正,其中N為一正整數;當該快閃記憶體控制器判斷該第N筆資料已成功寫入至該多個快閃記憶體晶片中之後,保留該第N組錯誤更正碼;該快閃記憶體控制器依序將第(N+1)~(N+M)筆資料分別寫入至該快閃記憶體模組中的該多個快閃記憶體晶片,並分別對該第(N+1)~(N+M)筆資料進行編碼以產生第(N+1)~(N+M)組錯誤更正碼,其中該第(N+1)~(N+M)組錯誤更正碼係分別用來對寫入至該多個快閃記憶體晶片中的該第(N+1)~(N+M)筆資料進行錯誤更正,其中M為一正整數;以及當判斷該第(N+M)筆資料已成功寫入至該多個快閃記憶體晶片中時,該快閃記憶體控制器才刪除該第N~(N+M)組錯誤更正碼。
依據本發明另一實施例,一種存取一快閃記憶體模組的方法包含有:依序將第N~(N+K)筆資料分別寫入至該快閃記憶體模組中的多個快閃記憶體晶片,並分別對該第N~(N+K)筆資料進行編碼以產生第N~(N+K)組錯誤更正碼,其中該第N~(N+K)組錯誤更正碼係分別用來對寫入至該多個快閃記憶體晶片中的該第N~(N+K)筆資料進行錯誤更正,其中N、K為一正整數;以及將第(N+K+1)筆資料寫入至該快閃記憶體模組中的該多個快閃記憶體晶片,並使用該第N~(N+K)組錯誤更正碼中至少其一來與該第(N+K+1)筆資料一併進行編碼,以產生第(N+K+1)組錯誤更正碼。
依據本發明另一實施例,揭露一種快閃記憶體控制器,其中該快閃記憶體控制器係用來存取一快閃記憶體模組,且該快閃記憶體控制器包含有:一記憶體,用來儲存一程式碼;一微處理器,用來執行該程式碼以控制對該快閃記憶體模組之存取;以及一編碼器;其中該微處理器依序將第N~(N+K)筆資料分別寫入至該快閃記憶體模組中的多個快閃記憶體晶片,且該編碼器分別對該第N~(N+K)筆資料進行編碼以產生第N~(N+K)組錯誤更正碼,其中該第N~(N+K)組錯誤更正碼係分別用來對寫入至該多個快閃記憶體晶片中的該第N~(N+K)筆資料進行錯誤更正,且N、K為一正整數;以及該微處理器將第(N+K+1)筆資料寫入至該快閃記憶體模組中的該多個快閃記憶體晶片,且該編碼器使用該第N~(N+K)組錯誤更正碼中至少其一來與該第(N+K+1)筆資料一併進行編碼,以產生第(N+K+1)組錯誤更正碼。
依據本發明另一實施例,一種記憶裝置,其包含有:一快閃記憶體模組;以及一快閃記憶體控制器,用來存取該快閃記憶體;其中該快閃記憶體控制器依序將第N~(N+K)筆資料分別寫入至該快閃記憶體模組中的多個快閃記憶體晶片,並分別對該第N~(N+K)筆資料進行編碼以產生第N~(N+K)組錯誤更正碼,其中該第N~(N+K)組錯誤更正碼係分別用來對寫入至該多個快閃記憶體晶片中的該第N~(N+K)筆資料進行錯誤更正,且N、K為一正整數;以及該快閃記憶體控制器將第(N+K+1)筆資料寫入至該快閃記憶體模組中的該多個快閃記憶體晶片,且使用該第N~(N+K)組錯誤更正碼中至少其一來與該第(N+K+1)筆資料一併進行編碼,以產生第(N+K+1)組錯誤更正碼。
請參考第1圖,第1圖為依據本發明一實施例之一種記憶裝置100的示意圖,其中本實施例之記憶裝置100尤其係為可攜式記憶裝置(例如:符合SD/MMC、CF、MS、XD標準之記憶卡)。記憶裝置100包含有一快閃記憶體(Flash Memory)模組120以及一快閃記憶體控制器110,且快閃記憶體控制器110用來存取快閃記憶體模組120。依據本實施例,快閃記憶體控制器110包含一微處理器112、一唯讀記憶體(Read Only Memory, ROM)112M、一控制邏輯114、一緩衝記憶體116、與一介面邏輯118。唯讀記憶體係用來儲存一程式碼112C,而微處理器112則用來執行程式碼112C以控制對快閃記憶體模組120之存取(Access)。
於典型狀況下,快閃記憶體模組120包含複數個區塊(Block),而該控制器(例如:透過微處理器112執行程式碼112C之快閃記憶體控制器110)對快閃記憶體模組120進行複製、抹除、合併資料等運作係以區塊為單位來進行複製、抹除、合併資料。另外,一區塊可記錄特定數量的資料頁(Page),其中該控制器(例如:透過微處理器112執行程式碼112C之記憶體控制器110)對快閃記憶體模組120進行寫入資料之運作係以資料頁為單位來進行寫入。
實作上,透過微處理器112執行程式碼112C之快閃記憶體控制器110可利用其本身內部之元件來進行諸多控制運作,例如:利用控制邏輯114來控制快閃記憶體模組120之存取運作(尤其是對至少一區塊或至少一資料頁之存取運作)、利用緩衝記憶體116進行所需之緩衝處理、以及利用介面邏輯118來與一主裝置(Host Device)溝通。
另一方面,在本實施例中,控制邏輯114包含了一第一編解碼器(codec)132以及一第二編解碼器134,其中第一編解碼器132係用來對寫入到快閃記憶體模組120之一區塊中的資料進行編碼,以產生對應的錯誤更正碼(error correction code),其中第一編解碼器132所產生的錯誤更正碼僅是根據寫入到一資料頁中一區段(sector)的內容所產生的,且所產生的錯誤更正碼會連同該區段的資料內容一併寫入到該資料頁中。另外,第二編解碼器134為一容錯式磁碟陣列(RAID)編解碼器,其是用來對寫入至多個快閃記憶體晶片中的資料進行編碼,以產生對應的錯誤更正碼,其操作將於以下內容中詳述。
在本實施例中,快閃記憶體模組120係為一立體NAND型快閃記憶體(3D NAND-type flash)模組,請參考第2圖,其為一立體NAND型快閃記憶體的範例示意圖,如第2圖所示,立體NAND型快閃記憶體包含了多個浮閘電晶體202,其透過多條位元線(圖示僅繪示了BL1~BL3)及多條字元線(例如圖示的WL1~WL3)來構成立體NAND型快閃記憶體架構。在第2圖中,以最上面的一個平面為例,字元線WL0上的所有浮閘電晶體構成了至少一資料頁,字元線WL1上的所有浮閘電晶體構成了另至少一資料頁,而字元線WL2的所有浮閘電晶體構成了再另至少一資料頁…以此類堆。此外,根據快閃記憶體寫入方式的不同,字元線WL0與資料頁(邏輯資料頁)之間的定義也會有所不同,詳細來說,當使用單層式儲存(Single-Level Cell,SLC)的方式寫入時,字元線WL0上的所有浮閘電晶體僅對應到單一邏輯資料頁;當使用多層式儲存(Multiple-Level Cell,MLC)的方式寫入時,字元線WL0上的所有浮閘電晶體僅對應到兩個邏輯資料頁;當使用三層式儲存(Triple-Level Cell,TLC)的方式寫入時,字元線WL0上的所有浮閘電晶體僅對應到三個邏輯資料頁;以及當使用四層式儲存(Quad-Level Cell,QLC)的方式寫入時,字元線WL0上的所有浮閘電晶體僅對應到四個邏輯資料頁。由於本技術領域中具有通常知識者應能了解立體NAND型快閃記憶體的結構以及字元線及資料頁之間的關係,故相關的細節在此不予贅述。另外,在快閃記憶體控制器110的操作中,“資料頁”為一最小寫入單位,且“區塊”為一最小抹除單位。
請參考第3圖,其為浮閘電晶體202結構的概念示意圖,如第3圖所示,每一個浮閘電晶體的閘極及浮閘是圍繞在源極與汲極周圍(gate all around),以增強通道感應能力。
需注意的是,第2、3圖所示的僅為立體NAND型快閃記憶體與浮閘電晶體202的範例,而並非是作為本發明的限制,本技術領域中具有通常知識者應能了解立體NAND型快閃記憶體尚有其他種型式,例如部分的字元線可彼此連接..等等,且浮閘電晶體202的設計也能有些許的改變。
如先前技術中所述,在某些立體NAND型快閃記憶體中,會將多條字元線定義為一字元線組,而該字元線組會共同具有部分的控制電路,進而導致當資料寫入到該字元線組之一條字元線上的浮閘電晶體發生失敗時(寫入失敗),會連帶導致該字元線組的其他字元線上的浮閘電晶體的資料發生錯誤。舉例來說,參考第4圖,其為一區塊中多個字元線組的示意圖,在第4圖中係假設該區塊包含了192條字元線上的所有浮閘電晶體,且一個字元線組包含了4條字元線,因此,在第4圖中的區塊係包含了48個字元線組WL_G0~WL_G47;另外,在圖示中該區塊為三層式儲存(TLC)區塊,亦即每一條字元線上的浮閘電晶體可用來儲存三個資料頁的資料,如第4圖所示,以字元線組WL_G0為例,其包含之字元線WL0上的浮閘電晶體可用來儲存低資料頁P0L、中間資料頁P0M及高資料頁P0U,字元線WL1上的浮閘電晶體可用來儲存低資料頁P1L、中間資料頁P1M及高資料頁P1U,字元線WL2上的浮閘電晶體可用來儲存低資料頁P2L、中間資料頁P2M及高資料頁P2U,以及字元線WL3上的浮閘電晶體可用來儲存低資料頁P3L、中間資料頁P3M及高資料頁P3U。當控制器中將資料寫入到字元線組WL_G0的資料頁中時,係循序將資料寫入到字元線WL0、WL1、WL2、WL3中的浮閘電晶體,而假設字元線WL0、WL1上的資料都成功寫入正確,但是當資料寫入字元線WL2時發生寫入錯誤,則會連帶使得字元線WL0、WL1上原本寫入成功的資料也發生錯誤,因此,在以下的實施例中將敘述如何修正此一錯誤的方法。
先參考第5圖,第5圖為快閃記憶體控制器110將資料寫入到快閃記憶體模組120的示意圖。如第5圖所示,快閃記憶體模組120包含了多個通道(在本實施例中,係以兩個通道510、520為例),且每一個通道在快閃記憶體控制器110中有各自的序列傳輸器(sequencer)且均包含了多個快閃記憶體晶片,而在本實施例中通道510包含了快閃記憶體晶片512、514,且通道520包含了快閃記憶體晶片522、524。另外,每一個快閃記憶體晶片512、514、522、524中的一個區塊會被組態為一個超級區塊(super block)530,而快閃記憶體控制器110會將資料以超級區塊530為單位來進行寫入。
請同時參考第5、6圖,其中第6圖為依據本發明一第一實施例之快閃記憶體控制器110將資料寫入到超級區塊530的示意圖,其中在以下的敘述中,每一筆資料係寫入到快閃記憶體晶片512、514、522、524的一個資料頁,亦即第1筆資料會被寫入到每一個快閃記憶體晶片512、514、522、524中的第一個資料頁P0,第2筆資料會被寫入到每一個快閃記憶體晶片512、514、522、524中的第二個資料頁P1,…,第N筆資料會被寫入到每一個快閃記憶體晶片512、514、522、524中的第N個資料頁P(N-1)。參考第6圖,當快閃記憶體控制器110需要將第1筆資料寫入至超級區塊530中時,首先,快閃記憶體控制器110中的第二編解碼器134會先對第1筆資料進行編碼以產生第1組錯誤更正碼S0,其中第二編解碼器134可以採用里德-所羅門 ( Reed Solomon,RS )編碼方式或是互斥或(exclusive-OR,XOR)運算來對寫入到每一個快閃記憶體晶片512、514、522、524中的第一個資料頁P0的資料進行編碼,以產生第1組錯誤更正碼S0;接著,第一編解碼器132分別對第1筆資料進行編碼以產生對應的錯誤更正碼,並將第一筆資料與第一編解碼器132所產生的錯誤更正碼一併寫入到每一個快閃記憶體晶片512、514、522、524中的第一個資料頁P0中,詳細來說,第一編解碼器132對第1筆資料中第一部分資料進行編碼以產生錯誤更正碼,並將第一部分資料與其錯誤更正碼寫入到快閃記憶體晶片512的第一個資料頁P0;第一編解碼器132對第1筆資料中第二部分資料進行編碼以產生錯誤更正碼,並將第二部分資料與其錯誤更正碼寫入到快閃記憶體晶片514的第一個資料頁P0;第一編解碼器132對第1筆資料中第三部分資料進行編碼以產生錯誤更正碼,並將第三部分資料與其錯誤更正碼寫入到快閃記憶體晶片522的第一個資料頁P0;以及第一編解碼器132對第1筆資料中第四部分資料(最後一部分資料)進行編碼以產生錯誤更正碼,並將第四部分資料與其錯誤更正碼寫入到快閃記憶體晶片524的第一個資料頁P0。
第二編解碼器134所產生的第1組錯誤更正碼S0係用來當快閃記憶體晶片512、514、522或524中的第一個資料頁P0發生資料錯誤時進行錯誤更正,舉例來說,假設當快閃記憶體晶片512中的第一個資料頁P0的資料發生無法利用本身的資料進行更正的錯誤時,第二編解碼器134可以讀取快閃記憶體晶片512、514、522、524中所有第一個資料頁P0的資料,再加上第1組錯誤更正碼S0,來進行錯誤更正。
另外,在第1筆資料寫入的過程中,快閃記憶體控制器110會對寫入的資料進行讀取檢查的操作,以確定資料是否成功寫入,而在快閃記憶體控制器110判斷第1筆資料已經成功寫入到快閃記憶體晶片512、514、522、524中第一個資料頁P0後,快閃記憶體控制器110保留第1組錯誤更正碼S0。其中,快閃記憶體控制器110可以先暫時將第1組錯誤更正碼S0儲存在本身的記憶體中,或是將第1組錯誤更正碼S0透過第一編解碼器132進行編碼後存入到快閃記憶體晶片512、514、522、524中的一特定區塊中,且該特定區塊不屬於超級區塊530中的資料頁。
接著,當快閃記憶體控制器110需要將第2筆資料寫入至超級區塊530中時,首先,快閃記憶體控制器110中的第二編解碼器134會先對第2筆資料進行編碼以產生第2組錯誤更正碼S1,其中第二編解碼器134可以採用里德-所羅門編碼方式或是互斥或運算來對寫入到每一個快閃記憶體晶片512、514、522、524中的第二個資料頁P1的資料進行編碼,以產生第2組錯誤更正碼S1;接著,第一編解碼器132分別對第2筆資料進行編碼以產生對應的錯誤更正碼,並將第二筆資料與第一編解碼器132所產生的錯誤更正碼一併寫入到每一個快閃記憶體晶片512、514、522、524中的第二個資料頁P1中。另外,在第2筆資料寫入的過程中,快閃記憶體控制器110會對寫入的資料進行讀取檢查的操作,以確定資料是否成功寫入,而在快閃記憶體控制器110判斷第2筆資料已經成功寫入到快閃記憶體晶片512、514、522、524中第二個資料頁P1後,快閃記憶體控制器110保留第2組錯誤更正碼S1。其中,快閃記憶體控制器110可以先暫時將第2組錯誤更正碼S1儲存在本身的記憶體中,或是將第2組錯誤更正碼S1存入到快閃記憶體晶片512、514、522、524中的該特定區塊中,且該特定區塊不屬於超級區塊530。
當第2筆資料寫入的過程中也發生寫入錯誤的情形,則由於P1、P0是屬於同一個字元線組WL_G0,因此,快閃記憶體晶片512、514、522、524中的資料頁P0也有可能發生損壞。舉例來說,假設快閃記憶體晶片514的資料頁P1在資料寫入的過程中發生錯誤,則先前以成功寫入的快閃記憶體晶片514的資料頁P0也會發生錯誤,因此,先前所保留下來的第1組錯誤更正碼S0便可以在之後用來更正資料頁P0的錯誤。
接著,當快閃記憶體控制器110需要將第3筆資料寫入至超級區塊530中時,首先,快閃記憶體控制器110中的第二編解碼器134會先對第3筆資料進行編碼以產生第3組錯誤更正碼S2,其中第二編解碼器134可以採用里德-所羅門編碼方式或是互斥或運算來對寫入到每一個快閃記憶體晶片512、514、522、524中的第三個資料頁P2的資料進行編碼,以產生第3組錯誤更正碼S2;接著,第一編解碼器132分別對第3筆資料進行編碼以產生對應的錯誤更正碼,並將第三筆資料與第一編解碼器132所產生的錯誤更正碼一併寫入到每一個快閃記憶體晶片512、514、522、524中的第三個資料頁P2中。另外,在第3筆資料寫入的過程中,快閃記憶體控制器110會對寫入的資料進行讀取檢查的操作,以確定資料是否成功寫入,而在快閃記憶體控制器110判斷第3筆資料已經成功寫入到快閃記憶體晶片512、514、522、524中第三個資料頁P2後,快閃記憶體控制器110保留第3組錯誤更正碼S2。其中,快閃記憶體控制器110可以先暫時將第3組錯誤更正碼S2儲存在本身的記憶體中,或是將第3組錯誤更正碼S2存入到快閃記憶體晶片512、514、522、524中的該特定區塊中,且該特定區塊不屬於超級區塊530。
接著,當快閃記憶體控制器110需要將第4筆資料寫入至超級區塊530中時,首先,快閃記憶體控制器110中的第二編解碼器134會先對第4筆資料進行編碼以產生第4組錯誤更正碼S3,其中第二編解碼器134可以採用里德-所羅門編碼方式或是互斥或運算來對寫入到每一個快閃記憶體晶片512、514、522、524中的第四個資料頁P3的資料進行編碼,以產生第4組錯誤更正碼S3;接著,第一編解碼器132分別對第4筆資料進行編碼以產生對應的錯誤更正碼,並將第四筆資料與第一編解碼器132所產生的錯誤更正碼一併寫入到每一個快閃記憶體晶片512、514、522、524中的第四個資料頁P3中。另外,在第4筆資料寫入的過程中,快閃記憶體控制器110會對寫入的資料進行讀取檢查的操作,以確定資料是否成功寫入,而在快閃記憶體控制器110判斷第4筆資料已經成功寫入到快閃記憶體晶片512、514、522、524中第四個資料頁P2後,快閃記憶體控制器110保留第4組錯誤更正碼S3。其中,快閃記憶體控制器110可以先暫時將第4組錯誤更正碼S3儲存在本身的記憶體中,或是將第4組錯誤更正碼S3存入到快閃記憶體晶片512、514、522、524中的該特定區塊中,且該特定區塊不屬於超級區塊530。
同樣地,當第3、4筆資料寫入的過程中也發生寫入錯誤的情形,則由於P0、P1、P3、P4是屬於同一個字元線組WL_G0,因此,快閃記憶體晶片512、514、522、524中的資料頁P0、P1也有可能發生損壞。舉例來說,假設快閃記憶體晶片524的資料頁P3在資料寫入的過程中發生錯誤,則先前以成功寫入的快閃記憶體晶片524的資料頁P0、P1、P2也會發生錯誤,因此,先前所保留下來的第1、2、3組錯誤更正碼S0、S1、S2便可以在之後分別用來更正資料頁P0、P1、P2的錯誤。
在字元線組WL_G0上的頁面都已經寫完資料之後,先前所保留的錯誤更正碼S0、S1、S2、S3若是儲存在快閃記憶體控制器110中的記憶體時,則可以將之搬移到該特定區塊中,以減少快閃記憶體控制器110中記憶體的容量需求。
接著,類似以上步驟,快閃記憶體控制器110將接下來的第5~192筆資料寫入至快閃記憶體晶片512、514、522、524中,並對該第5~192筆資料進行編碼以分別產生第5~192組錯誤更正碼S4~S191。
當超級區塊530在資料寫入的過程中發生錯誤時,由於快閃記憶體無法直接對已寫入的資料做修正,故需要將已寫入的資料讀出之後再使用儲存在該特定區塊中的錯誤更正碼進行更正,並將更正後的資料連同其他不需更正的資料一併寫入到另一個區塊中。
由於錯誤更正碼S0~S191需要很大的容量且也占據了該特定區塊的空間,因此,在確定超級區塊530中的所有資料都已經成功寫入之後,該特定區塊中所儲存的錯誤更正碼S0~S191便可以刪除,亦即快閃記憶體控制器110會抹除該特定區塊以刪除錯誤更正碼S0~S191(在對應的資料第一次被讀取之前)。需注意的是,上述“刪除”錯誤更正碼S0~S191並不代表要立刻將該特定區塊立刻抹除,而是可以將該特定區塊標示為“無效化”,等到後續適合的時間(例如,快閃記憶體控制器110空閒的時候)再將該特定區塊整個抹除。
需注意的是,第6圖所繪示的P0~P191所代表的可能不只是一個資料頁,而可能是1~4個資料頁。詳細來說,當是單層式儲存(SLC)的區塊時,則一個字元線上的浮閘電晶體則構成一個資料頁(例如字元線WL0僅包含一個資料頁P0);當是多層式儲存(MLC)的區塊時,則一個字元線上的浮閘電晶體則構成二個資料頁(例如圖示的P0包含兩個資料頁);當是三層式儲存(TLC)的區塊時,則一個字元線上的浮閘電晶體則構成三個資料頁(例如圖示的P0包含第4圖所示的三個資料頁P0L、P0M、P0U);以及當是四層式儲存(QLC)的區塊時,則一個字元線上的浮閘電晶體則構成四個資料頁。
在本實施例中,超級區塊530可以是多層式儲存區塊、三層式儲存區塊或是四層式儲存區塊,然而,由於用來儲存錯誤更正碼S0~S191的該特定區塊會頻繁地被寫入與抹除,因此,為了增加該特定區塊的壽命,該特定區塊會採用單層式儲存的寫入方式。另一方面,需注意的是,當超級區塊530是採用三層式儲存方式時,則由於每一個字元線會對應到三個資料頁,因此錯誤更正碼S0~S191實際上會需要由三個特定區塊(單層式儲存區塊)來儲存。
需注意的是,在以上的實施例中,係假設超級區塊530是一空白區塊,且快閃記憶體控制器110係將資料由每一個快閃記憶體晶片的第一個資料頁開始寫起,然而,本發明並不以此為限,在其他實施例中,超級區塊530可以已經存有其他資料,而快閃記憶體控制器110將資料循序存進超級區塊530的剩下資料頁中,並產生對應錯誤更正碼(S0~SN),這些設計上的變化均應隸屬於本發明的範疇。
另一方面,在以上的實施例中,資料會先經過第二編解碼器134的編碼之後,才會再進行第一編解碼器132的編碼已寫入到快閃記憶體模組120之中,然而,在其他實施例中,第一編解碼器132與第二編解碼器134的執行順序亦可相反,以達到相同的結果。
請參考第7圖,其為依據本發明一實施例之存取快閃記憶體模組120的方法的流程圖,參考第1~7圖及以上所揭露的內容,流程敘述如下:
步驟700:流程開始。
步驟702:將第N筆資料寫入至該快閃記憶體模組中的多個快閃記憶體晶片,並對該第N筆資料進行編碼以產生一第N組錯誤更正碼,其中該第N組錯誤更正碼係用來對寫入至該多個快閃記憶體晶片中的該第N筆資料進行錯誤更正;
步驟704:當判斷該第N筆資料已成功寫入至該多個快閃記憶體晶片中之後,保留該第N組錯誤更正碼;
步驟706:依序將第(N+1)~(N+M)筆資料分別寫入至該快閃記憶體模組中的該多個快閃記憶體晶片,並分別對該第(N+1)~(N+M)筆資料進行編碼以產生第(N+1)~(N+M)組錯誤更正碼,其中該第(N+1)~(N+M)組錯誤更正碼係分別用來對寫入至該多個快閃記憶體晶片中的該第(N+1)~(N+M)筆資料進行錯誤更正;以及
步驟708:當判斷該第(N+M)筆資料已成功寫入至該多個快閃記憶體晶片中時,才刪除該第N~(N+M)組錯誤更正碼。
藉由以上所揭露的實施例,可以確實地更正立體NAND型快閃記憶體在資料寫入時發生的錯誤,且由於錯誤更正碼S0~S191在確定超級區塊530中的資料都完全成功寫入之後便可以抹除,因此便也可以節省記憶體的空間。
另外,在某些情況下,已經成功寫入的資料可能在後續的讀取中會發生無法讀取或是讀取錯誤的情形,例如快閃記憶體512、514、522、524中可能有部分的字元線發生斷路(open)的情形,因而造成無法讀取資料的情形。此外,如先前所述,一個字元線組中只要有一條字元線發生斷路,便會造成整個字元線組的資料都會發生錯誤。因此,本發明另提出以下的實施例來避免後續因為字元線斷路而造成資料讀取錯誤的情形。
為了方便敘述,以下實施例一樣採用第4~5圖的例子,亦即快閃記憶體控制器110要將資料寫入到超級區塊530中。參考第8圖,其為依據本發明一第二實施例之快閃記憶體控制器110將資料寫入到超級區塊530的示意圖,為了方便以下實施例的說明,在以下的敘述中,一筆資料指的是寫入到一個字元線組的資料,而非是第6圖之實施例所述的一個字元線上的資料,然而,此定義並非是作為本發明的限制。當快閃記憶體控制器110需要將第1筆資料寫入至超級區塊530中時,類似第6圖的實施例所述,快閃記憶體控制器110中的第二編解碼器134會對第1筆資料進行編碼以產生第1組錯誤更正碼S0~S3,且將第1筆資料分別寫入到每一個快閃記憶體晶片512、514、522、524中的資料頁P0~P3中,並將錯誤更正碼S0~S3存入到快閃記憶體晶片512、514、522或524中的一特定區塊中,且該特定區塊不屬於超級區塊530。
接著,當快閃記憶體控制器110需要將第2筆資料(包含4個資料頁的資料)寫入至超級區塊530中時,首先,快閃記憶體控制器110中的第二編解碼器134會先對要寫入到快閃記憶體晶片512、514、522、524之資料頁P4的資料以及錯誤更正碼S0進行編碼以產生錯誤更正碼S4,其中第二編解碼器134可以採用里德-所羅門編碼方式或是互斥或運算來對寫入到每一個快閃記憶體晶片512、514、522、524中的第五個資料頁P4的資料以及錯誤更正碼S0進行編碼,以產生錯誤更正碼S4;接著,第一編解碼器132分別對要寫入到快閃記憶體晶片512、514、522、524之資料頁P4的資料進行編碼以產生對應的錯誤更正碼,並將此資料與第一編解碼器132所產生的錯誤更正碼一併寫入到每一個快閃記憶體晶片512、514、522、524中的第五個資料頁P4中。其中,快閃記憶體控制器110可以先暫時將錯誤更正碼S4儲存在本身的記憶體中,或是將錯誤更正碼S4存入到快閃記憶體晶片512、514、522、524中的該特定區塊中,且該特定區塊不屬於超級區塊530。如上所述,與錯誤更正碼S0~S3比較不同的是,錯誤更正碼S4的產生過程中有使用到錯誤更正碼S0。
接著,記憶體控制器110需要將第2筆資料中要寫入到快閃記憶體晶片512、514、522、524之資料頁P5~P7的資料寫入至超級區塊530中,並同時產生了錯誤更正碼S5~S7,其中錯誤更正碼S5~S7的產生過程中有分別使用到錯誤更正碼S1~S3。
再接著,記憶體控制器110需要將第3筆資料寫入至超級區塊530中,並同時產生了第3組錯誤更正碼S8~S11,其中類似第2組錯誤更正碼S4~S7,第3組錯誤更正碼S8~S11的產生過程中有分別使用到第2組錯誤更正碼S4~S7。
類似以上步驟,快閃記憶體控制器110將接下來的第4~48筆資料寫入至快閃記憶體晶片512、514、522、524中,並對該第4~48筆資料進行編碼以分別產生第4~48組錯誤更正碼S12~S191。
當超級區塊530在資料寫入的過程中發生錯誤時,由於快閃記憶體無法直接對已寫入的資料做修正,故需要將已寫入的資料讀出之後再使用儲存在該特定區塊中的錯誤更正碼進行更正,並將更正後的資料連同其他不需更正的資料一併寫入到另一個區塊中。
需注意的是,由於上述每一組錯誤更正碼都是參考前一組錯誤更正碼的內容所產生的,因此,第48組錯誤更正碼S188~S191實質上便帶有先前每一組錯誤更正碼的資訊,亦即,每一組錯誤更正碼的資訊都可由第48組錯誤更正碼所得到。舉例來說,錯誤更正碼S184可以由第二編解碼器134根據快閃記憶體晶片512、514、522、524之資料頁P188的內容以及錯誤更正碼S188而得到,錯誤更正碼S180可以由第二編解碼器134根據快閃記憶體晶片512、514、522、524之資料頁P184的內容以及錯誤更正碼S184而得到,錯誤更正碼S176可以由第二編解碼器134根據快閃記憶體晶片512、514、522、524之資料頁P180的內容以及錯誤更正碼S180而得到…如此不斷計算最後便可以得到錯誤更正碼S0。因此,為了節省記憶體空間,在確定超級區塊530中的所有資料都已經成功寫入之後,快閃記憶體控制器110僅需要將錯誤更正碼S188~S191複製到另外一個區塊中,並可以將該特定區塊整個抹除以節省記憶體空間。
如上所述,由於快閃記憶體控制器110有保留錯誤更正碼S188~S191,且錯誤更正碼S188~S191可以用來獲得錯誤更正碼S0~S187,因此,即使後續快閃記憶體晶片512、514、522、524有一個快閃記憶體晶片發生字元線發生斷路(open)的情形,也可以透過相對應的錯誤更正碼S0~ S191來進行更正,而不會發生資料無法修復的情形。
在本實施例中,超級區塊530可以是多層式儲存(MLC)區塊、三層式儲存(TLC)區塊或是四層式儲存(QLC)區塊,然而,由於用來儲存錯誤更正碼S0~S191的該特定區塊會頻繁地被寫入與抹除,因此,為了增加該特定區塊的壽命,該特定區塊會採用單層式儲存(SLC)的寫入方式。另一方面,需注意的是,當超級區塊530是採用三層式儲存方式時,則由於每一個字元線會對應到三個資料頁,因此錯誤更正碼S0~S191實際上會需要由三個特定區塊(單層式儲存區塊)來儲存。此外,在快閃記憶體控制器110將錯誤更正碼S188~191複製的過程中,可以錯誤更正碼S188~S191複製到一個三層式儲存區塊,以進一步地節省記憶體空間。
需注意的是,第8圖所繪示的P0~P191所代表的可能不只是一個資料頁,而可能是1~4個資料頁。詳細來說,當是單層式儲存的區塊時,則一個字元線上的浮閘電晶體則構成一個資料頁(例如字元線WL0僅包含一個資料頁P0);當是多層式儲存的區塊時,則一個字元線上的浮閘電晶體則構成二個資料頁(例如圖示的P0包含兩個資料頁);當是三層式儲存的區塊時,則一個字元線上的浮閘電晶體則構成三個資料頁(例如圖示的P0包含第4圖所示的三個資料頁P0L、P0M、P0U);以及當是四層式儲存的區塊時,則一個字元線上的浮閘電晶體則構成四個資料頁。
請參考第9圖,其為依據本發明一實施例之存取快閃記憶體模組120的方法的流程圖,參考第8、9圖及以上所揭露的內容,流程敘述如下:
步驟900:流程開始。
步驟902:依序將第N~(N+K)筆資料分別寫入至該快閃記憶體模組中的多個快閃記憶體晶片,並分別對該第N~(N+K)筆資料進行編碼以產生第N~(N+K)組錯誤更正碼,其中該第N~(N+K)組錯誤更正碼係分別用來對寫入至該多個快閃記憶體晶片中的該第N~(N+K)筆資料進行錯誤更正;以及
步驟904:將第(N+K+1)筆資料寫入至該快閃記憶體模組中的該多個快閃記憶體晶片,並使用該第(N+K)組錯誤更正碼來與該第(N+K+1)筆資料一併進行編碼,以產生第(N+K+1)組錯誤更正碼,其中K為1。
以上第8~9的實施例可以避免快閃記憶體晶片512、514、522、524有一個快閃記憶體晶片發生字元線發生斷路而造成資料無法修復的情形,然而,若是兩個字元線組中的兩條相鄰的字元線發生短路(short),例如第8圖中快閃記憶體晶片512的字元線WL3與WL4發生短路,則會造成快閃記憶體晶片512中的兩個字元線組WL_G0與WL_G1上的資料均無法成功讀取,因此,以下提出一實施例以克服兩個字元線組中的兩條相鄰的字元線發生短路(short)的情形。
為了方便敘述,以下實施例一樣採用第4~5圖的例子,亦即快閃記憶體控制器110要將資料寫入到超級區塊530中。參考第10圖,其為依據本發明一第三實施例之快閃記憶體控制器110將資料寫入到超級區塊530的示意圖,為了方便以下實施例的說明,在以下的敘述中,一筆資料指的是寫入到一個字元線組的資料,而非是第6圖之實施例所述的一個字元線上的資料,然而,此定義並非是作為本發明的限制。當快閃記憶體控制器110需要將第1筆資料寫入至超級區塊530中時,類似第6圖的實施例所述,快閃記憶體控制器110中的第二編解碼器134會對第1筆資料進行編碼以產生第1組錯誤更正碼S0~S3,且將第1筆資料分別寫入到每一個快閃記憶體晶片512、514、522、524中的資料頁P0~P3中,並將錯誤更正碼S0~S3存入到快閃記憶體晶片512、514、522或524中的一特定區塊中,且該特定區塊不屬於超級區塊530。接著,第二編解碼器134會對第2筆資料進行編碼以產生第2組錯誤更正碼S0~S3,且將第2筆資料分別寫入到每一個快閃記憶體晶片512、514、522、524中的資料頁P4~P7中,並將錯誤更正碼S4~S7存入到該特定區塊中。
接著,當快閃記憶體控制器110需要將第3筆資料(包含4個資料頁的資料)寫入至超級區塊530中時,首先,快閃記憶體控制器110中的第二編解碼器134會先對要寫入到快閃記憶體晶片512、514、522、524之資料頁P8的資料以及錯誤更正碼S0進行編碼以產生錯誤更正碼S8,其中第二編解碼器134可以採用里德-所羅門編碼方式或是互斥或運算來對寫入到每一個快閃記憶體晶片512、514、522、524中的第九個資料頁P8的資料以及錯誤更正碼S0進行編碼,以產生錯誤更正碼S8;接著,第一編解碼器132分別對要寫入到快閃記憶體晶片512、514、522、524之資料頁P8的資料進行編碼以產生對應的錯誤更正碼,並將此資料與第一編解碼器132所產生的錯誤更正碼一併寫入到每一個快閃記憶體晶片512、514、522、524中的第九個資料頁P8中。其中,快閃記憶體控制器110可以先暫時將錯誤更正碼S8儲存在本身的記憶體中,或是將錯誤更正碼S8存入到快閃記憶體晶片512、514、522、524中的該特定區塊中,且該特定區塊不屬於超級區塊530。如上所述,與錯誤更正碼S0~S7比較不同的是,錯誤更正碼S8的產生過程中有使用到錯誤更正碼S0。
接著,記憶體控制器110需要將第3筆資料中要寫入到快閃記憶體晶片512、514、522、524之資料頁P9~P11的資料寫入至超級區塊530中,並同時產生了錯誤更正碼S9~S11,其中錯誤更正碼S9~S11的產生過程中有分別使用到錯誤更正碼S1~S3。
再接著,記憶體控制器110需要將第4筆資料寫入至超級區塊530中,並同時產生了第4組錯誤更正碼S12~S15,其中類似第3組錯誤更正碼S8~S11,第4組錯誤更正碼S12~S15的產生過程中有分別使用到第2組錯誤更正碼S4~S7。
類似以上步驟,快閃記憶體控制器110將接下來的第5~48筆資料寫入至快閃記憶體晶片512、514、522、524中,並對該第5~48筆資料進行編碼以分別產生第5~48組錯誤更正碼S16~S191。
當超級區塊530在資料寫入的過程中發生錯誤時,由於快閃記憶體無法直接對已寫入的資料做修正,故需要將已寫入的資料讀出之後再使用儲存在該特定區塊中的錯誤更正碼進行更正,並將更正後的資料連同其他不需更正的資料一併寫入到另一個區塊中。
需注意的是,由於上述每一組錯誤更正碼都是參考前前組錯誤更正碼的內容所產生的,因此,第47、48組錯誤更正碼S188~S191實質上便帶有先前每一組錯誤更正碼的資訊,亦即,每一組錯誤更正碼的資訊都可由第47組或第48組錯誤更正碼所得到。舉例來說,錯誤更正碼S180可以由第二編解碼器134根據快閃記憶體晶片512、514、522、524之資料頁P188的內容以及錯誤更正碼S188而得到,錯誤更正碼S172可以由第二編解碼器134根據快閃記憶體晶片512、514、522、524之資料頁P180的內容以及錯誤更正碼S180而得到,錯誤更正碼S164可以由第二編解碼器134根據快閃記憶體晶片512、514、522、524之資料頁P172的內容以及錯誤更正碼S172而得到…如此不斷計算最後便可以得到錯誤更正碼S0。因此,為了節省記憶體空間,在確定超級區塊530中的所有資料都已經成功寫入之後,快閃記憶體控制器110僅需要將第47、48組錯誤更正碼S184~S191複製到另外一個區塊中,並可以將該特定區塊整個抹除以節省記憶體空間。
如上所述,由於快閃記憶體控制器110有保留錯誤更正碼S184~S191,且錯誤更正碼S184~S191可以用來獲得錯誤更正碼S0~S183,因此,即使後續快閃記憶體晶片512、514、522、524有一個快閃記憶體晶片發生字元線發生短路的情形,也可以透過相對應的錯誤更正碼S0~191來進行更正,而不會發生資料無法修復的情形。
在本實施例中,超級區塊530可以是多層式儲存(MLC)區塊、三層式儲存(TLC)區塊或是四層式儲存(QLC)區塊,然而,由於用來儲存錯誤更正碼S0~S191的該特定區塊會頻繁地被寫入與抹除,因此,為了增加該特定區塊的壽命,該特定區塊會採用單層式儲存(SLC)的寫入方式。另一方面,需注意的是,當超級區塊530是採用三層式儲存方式時,則由於每一個字元線會對應到三個資料頁,因此錯誤更正碼S0~S191實際上會需要由三個特定區塊(單層式儲存區塊)來儲存。此外,在快閃記憶體控制器110將錯誤更正碼S184~S191複製的過程中,可以錯誤更正碼S184~S191複製到一個三層式儲存區塊,以進一步地節省記憶體空間。
需注意的是,第10圖所繪示的P0~P191所代表的可能不只是一個資料頁,而可能是1~4個資料頁。詳細來說,當是單層式儲存的區塊時,則一個字元線上的浮閘電晶體則構成一個資料頁(例如字元線WL0僅包含一個資料頁P0);當是多層式儲存的區塊時,則一個字元線上的浮閘電晶體則構成二個資料頁(例如圖示的P0包含兩個資料頁);當是三層式儲存的區塊時,則一個字元線上的浮閘電晶體則構成三個資料頁(例如圖示的P0包含第4圖所示的三個資料頁P0L、P0M、P0U);以及當是四層式儲存的區塊時,則一個字元線上的浮閘電晶體則構成四個資料頁。
請參考第11圖,其為依據本發明一實施例之存取快閃記憶體模組120的方法的流程圖,參考第10、11圖及以上所揭露的內容,流程敘述如下:
步驟1100:流程開始。
步驟1102:依序將第N~(N+K)筆資料分別寫入至該快閃記憶體模組中的多個快閃記憶體晶片,並分別對該第N~(N+K)筆資料進行編碼以產生第N~(N+K)組錯誤更正碼,其中該第N~(N+K)組錯誤更正碼係分別用來對寫入至該多個快閃記憶體晶片中的該第N~(N+K)筆資料進行錯誤更正;以及
步驟1104:將第(N+K+1)筆資料寫入至該快閃記憶體模組中的該多個快閃記憶體晶片,並使用該第N組錯誤更正碼來與該第(N+K+1)筆資料一併進行編碼,以產生第(N+K+1)組錯誤更正碼,其中K為1。
需注意的是,在以上的實施例說明中,快閃記憶體模組120為一立體NAND型快閃記憶體模組,然而,在其他實施例中,快閃記憶體模組120亦可為平面NAND型快閃記憶體模組,由於本領域技術人員應可輕易了解如何將上述實施例應用在平面NAND型快閃記憶體模組中,故相關細節不再贅述。
簡要歸納本發明,在本發明之存取一快閃記憶體模組的方法中,係使用類似容錯式磁碟陣列的錯誤更正方式來產生錯誤更正碼,以解決立體NAND型快閃記憶體中寫入錯誤的情形,且上述錯誤更正碼可以暫時地儲存在快閃記憶體中,並等到區塊資料都成功寫入之後再刪除,因此可以有效地節省快閃記憶體控制器中的記憶體需求,且也不會浪費快閃記憶體模組中的空間。此外,上述產生的錯誤更正碼可以僅保留其中一部分來更正後續因為字元線斷路/短路時所發生的錯誤,因此除了可以更進一步確保資料的安全性之外,也不會太浪費快閃記憶體模組中的儲存空間。 以上所述僅為本發明之較佳實施例,凡依本發明申請專利範圍所做之均等變化與修飾,皆應屬本發明之涵蓋範圍。
<TABLE border="1" borderColor="#000000" width="_0001"><TBODY><tr><td> 100 </td><td> 記憶裝置 </td></tr><tr><td> 110 </td><td> 快閃記憶體控制器 </td></tr><tr><td> 112 </td><td> 微處理器 </td></tr><tr><td> 112C </td><td> 程式碼 </td></tr><tr><td> 112M </td><td> 唯讀記憶體 </td></tr><tr><td> 114 </td><td> 控制邏輯 </td></tr><tr><td> 116 </td><td> 緩衝記憶體 </td></tr><tr><td> 118 </td><td> 介面邏輯 </td></tr><tr><td> 120 </td><td> 快閃記憶體模組 </td></tr><tr><td> 132 </td><td> 第一編解碼器 </td></tr><tr><td> 134 </td><td> 第二編解碼器 </td></tr><tr><td> 202 </td><td> 浮閘電晶體 </td></tr><tr><td> 510、520 </td><td> 通道 </td></tr><tr><td> 512、514、516、518 </td><td> 快閃記憶體晶片 </td></tr><tr><td> 530 </td><td> 超級區塊 </td></tr><tr><td> 700~708、900~904、1100~1104 </td><td> 步驟 </td></tr><tr><td> B1~B3 </td><td> 位元線 </td></tr><tr><td> WL0~WL47 </td><td> 字元線 </td></tr><tr><td> WL_G0~WL_G47 </td><td> 字元線組 </td></tr></TBODY></TABLE>
第1圖為依據本發明一實施例之一種記憶裝置的示意圖。 第2圖為一立體NAND型快閃記憶體的範例示意圖。 第3圖為浮閘電晶體結構的概念示意圖。 第4圖為一區塊中多個字元線組的示意圖。 第5圖為快閃記憶體控制器將資料寫入到快閃記憶體模組的示意圖。 第6圖為依據本發明一第一實施例之快閃記憶體控制器將資料寫入到超級區塊的示意圖。 第7圖為依據本發明一實施例之存取快閃記憶體模組的方法的流程圖。 第8圖為依據本發明一第二實施例之快閃記憶體控制器將資料寫入到超級區塊的示意圖。 第9圖為依據本發明一實施例之存取快閃記憶體模組的方法的流程圖。 第10圖為依據本發明一第三實施例之快閃記憶體控制器將資料寫入到超級區塊的示意圖。 第11圖為依據本發明一實施例之存取快閃記憶體模組的方法的流程圖。
<TABLE border="1" borderColor="#000000" width="_0002"><TBODY><tr><td> 100 </td><td> 記憶裝置 </td></tr><tr><td> 110 </td><td> 快閃記憶體控制器 </td></tr><tr><td> 112 </td><td> 微處理器 </td></tr><tr><td> 112C </td><td> 程式碼 </td></tr><tr><td> 112M </td><td> 唯讀記憶體 </td></tr><tr><td> 114 </td><td> 控制邏輯 </td></tr><tr><td> 116 </td><td> 緩衝記憶體 </td></tr><tr><td> 118 </td><td> 介面邏輯 </td></tr><tr><td> 120 </td><td> 快閃記憶體模組 </td></tr><tr><td> 132 </td><td> 第一編解碼器 </td></tr><tr><td> 134 </td><td> 第二編解碼器 </td></tr></TBODY></TABLE>
Claims (27)
- 一種存取一快閃記憶體模組的方法,該方法包含有:對第N筆資料進行編碼以產生一第N組錯誤更正碼,其中該第N組錯誤更正碼係用來對該第N筆資料進行錯誤更正,其中N為一正整數;將該第N筆資料寫入至該快閃記憶體模組中;將該第N組錯誤更正碼寫入至該快閃記憶體模組中;當該第N筆資料成功寫入至該快閃記憶體模組後,刪除該快閃記憶體模組中的該第N組錯誤更正碼中至少一部分,但在該快閃記憶體模組中保留該第N筆資料;其中該快閃記憶體模組包含多個快閃記憶體晶片,且該方法另包含有:對第(N+1)~(N+M)筆資料進行編碼以產生第(N+1)~(N+M)組錯誤更正碼,其中該第(N+1)~(N+M)組錯誤更正碼係分別用來對該第(N+1)~(N+M)筆資料進行錯誤更正,其中M為一正整數;將該第(N+1)~(N+M)筆資料寫入至該快閃記憶體模組中;將該第(N+1)~(N+M)組錯誤更正碼寫入至該快閃記憶體模組中;以及當該第(N+M)筆資料已成功寫入至該快閃記憶體模組後,刪除該第N~(N+M)組錯誤更正碼。
- 如申請專利範圍第1項所述之方法,其中第該N筆資料係寫入至該多個快閃記憶體晶片中每一個快閃記憶體晶片之一字元線(word line)上的浮閘電晶體,且該第(N+1)~(N+M)筆資料係分別寫入至該多個快閃記憶體晶片中每一個快閃記憶體晶片之其他不同字元線(word line)上的浮閘電晶體。
- 如申請專利範圍第1項所述之方法,其中該第N筆資料係寫入到該多 個快閃記憶體晶片的一超級區塊(super block)中的第一個資料頁,其中該超級區塊包含了該多個快閃記憶體晶片中每一個快閃記憶體晶片的一個區塊(block);以及該第(N+M)筆資料係寫入到該多個快閃記憶體晶片的該超級區塊的最後一個資料頁。
- 如申請專利範圍第1項所述之方法,另包含有:將該第N~(N+M)組錯誤更正碼寫入到該快閃記憶體模組的至少一特定區塊中。
- 如申請專利範圍第4項所述之方法,其中刪除該第N~(N+M)組錯誤更正碼的步驟包含有:當判斷該第(N+M)筆資料已成功寫入至該多個快閃記憶體晶片中時,抹除該至少一特定區塊以刪除該第N~(N+M)組錯誤更正碼。
- 如申請專利範圍第5項所述之方法,另包含有:將第(N+M+1)筆資料寫入至該多個快閃記憶體晶片,並對該第(N+M+1)筆資料進行編碼以產生一第(N+M+1)組錯誤更正碼,其中該第(N+M+1)筆資料與該第(N+M)筆資料為連續的資料,且該第(N+M+1)組錯誤更正碼係用來對寫入至該多個快閃記憶體晶片中的該第(N+M+1)筆資料進行錯誤更正;以及在該至少一特定區塊以刪除該第N~(N+M)組錯誤更正碼被抹除之後,將該第(N+M+1)組錯誤更正碼寫入至該至少一特定區塊。
- 如申請專利範圍第4項所述之方法,其中該至少一特定區塊中為一單 層式儲存(Single-Level Cell,SLC)的區塊。
- 如申請專利範圍第7項所述之方法,其中該第N~(N+M)筆資料係寫入至該快多個快閃記憶體晶片的多個區塊中,且該多個區塊為多層式儲存(Multiple-Level Cell,MLC)、三層式儲存(Triple-Level Cell,TLC)、或是四層式儲存(Quad-Level Cell,QLC)的區塊。
- 如申請專利範圍第1項所述之方法,其中該快閃記憶體模組係為一立體NAND型快閃記憶體(3D NAND-type flash)模組。
- 如申請專利範圍第1項所述之方法,另包含有:當該第(N+M)筆資料已成功寫入至該快閃記憶體模組後,在刪除該第N~(N+M)組錯誤更正碼之前,先將第(N+M-P)至第(N+M)組錯誤更正碼寫入到另一區塊中,其中P為小於M的正整數。
- 如申請專利範圍第10項所述之方法,其中P為該快閃記憶體模組中一字元線組所包含之字元線的數量。
- 如申請專利範圍第10項所述之方法,其中P為該快閃記憶體模組中一字元線組所包含之字元線的數量的兩倍。
- 如申請專利範圍第10項所述之方法,其中該另一區塊為多層式儲存、三層式儲存、或是四層式儲存的區塊。
- 一種快閃記憶體控制器,該快閃記憶體控制器係用來存取一快閃記憶體模組,且該快閃記憶體控制器包含有:一記憶體,用來儲存一程式碼;一微處理器,用來執行該程式碼以控制對該快閃記憶體模組之存取;以及一編碼器;其中該微處理器對第N筆資料進行編碼以產生一第N組錯誤更正碼,其中該第N組錯誤更正碼係用來對該第N筆資料進行錯誤更正,其中N為一正整數;該微處理器將該第N筆資料寫入至該快閃記憶體模組中,並將該第N組錯誤更正碼寫入至該快閃記憶體模組中;當該第N筆資料成功寫入至該快閃記憶體模組後,該微處理器刪除該快閃記憶體模組中的該第N組錯誤更正碼中至少一部分,但在該快閃記憶體模組中保留該第N筆資料;其中該微處理器對第(N+1)~(N+M)筆資料進行編碼以產生第(N+1)~(N+M)組錯誤更正碼,其中該第(N+1)~(N+M)組錯誤更正碼係分別用來對該第(N+1)~(N+M)筆資料進行錯誤更正,其中M為一正整數;該微處理器將該第(N+1)~(N+M)筆資料寫入至該快閃記憶體模組中,並將該第(N+1)~(N+M)組錯誤更正碼寫入至該快閃記憶體模組中;以及當該第(N+M)筆資料已成功寫入至該快閃記憶體模組後,該微處理器刪除該第N~(N+M)組錯誤更正碼。
- 如申請專利範圍第14項所述之快閃記憶體控制器,其中該第N筆資料係寫入至該多個快閃記憶體晶片中每一個快閃記憶體晶片之一字元線(word line)上的浮閘電晶體,且該第(N+1)~(N+M)筆資料係分別寫入至該多個快閃記憶體晶片中每一個快閃記憶體晶片之其他不同字元線(word line)上的浮 閘電晶體。
- 如申請專利範圍第14項所述之快閃記憶體控制器,其中該第N筆資料係寫入到該多個快閃記憶體晶片的一超級區塊中的第一個資料頁,其中該超級區塊包含了該多個快閃記憶體晶片中每一個快閃記憶體晶片的一個區塊;以及該第(N+M)筆資料係寫入到該多個快閃記憶體晶片的該超級區塊的最後一個資料頁。
- 如申請專利範圍第14項所述之快閃記憶體控制器,其中該微處理器將該第N~(N+M)組錯誤更正碼寫入到該快閃記憶體模組的至少一特定區塊中。
- 如申請專利範圍第17項所述之快閃記憶體控制器,其中當該微處理器判斷該第(N+M)筆資料已成功寫入至該多個快閃記憶體晶片中時,抹除該至少一特定區塊以刪除該第N~(N+M)組錯誤更正碼。
- 如申請專利範圍第18項所述之快閃記憶體控制器,其中該微處理器將第(N+M+1)筆資料寫入至該多個快閃記憶體晶片,且該編碼器對該第(N+M+1)筆資料進行編碼以產生一第(N+M+1)組錯誤更正碼,其中該第(N+M+1)筆資料與該第(N+M)筆資料為連續的資料,且該第(N+M+1)組錯誤更正碼係用來對寫入至該多個快閃記憶體晶片中的該第(N+M+1)筆資料進行錯誤更正;以及在該至少一特定區塊以刪除該第N~(N+M)組錯誤更正碼被抹除之後,該微處理器將該第(N+M+1)組錯誤更正碼寫入至該至少一特定區塊。
- 如申請專利範圍第17項所述之快閃記憶體控制器,其中該至少一特定區塊中為一單層式儲存的區塊。
- 如申請專利範圍第20項所述之快閃記憶體控制器,其中該第N~(N+M)筆資料係寫入至該快多個快閃記憶體晶片的多個區塊中,且該多個區塊為多層式儲存、三層式儲存、或是四層式儲存的區塊。
- 如申請專利範圍第14項所述之快閃記憶體控制器,其中該快閃記憶體模組係為一立體NAND型快閃記憶體模組。
- 如申請專利範圍第14項所述之快閃記憶體控制器,另包含有:當該第(N+M)筆資料已成功寫入至該快閃記憶體模組後,在刪除該第N~(N+M)組錯誤更正碼之前,該微處理器先將第(N+M-P)至第(N+M)組錯誤更正碼寫入到另一區塊中,其中P為小於M的正整數。
- 如申請專利範圍第23項所述之快閃記憶體控制器,其中P為該快閃記憶體模組中一字元線組所包含之字元線的數量。
- 如申請專利範圍第23項所述之快閃記憶體控制器,其中P為該快閃記憶體模組中一字元線組所包含之字元線的數量的兩倍。
- 如申請專利範圍第23項所述之快閃記憶體控制器,其中該另一區塊為多層式儲存、三層式儲存、或是四層式儲存的區塊。
- 一種記憶裝置,其包含有:一快閃記憶體模組;以及一快閃記憶體控制器,用來存取該快閃記憶體;其中該快閃記憶體控制器對第N筆資料進行編碼以產生一第N組錯誤更正碼,其中該第N組錯誤更正碼係用來對該第N筆資料進行錯誤更正,其中N為一正整數;將該第N筆資料寫入至該快閃記憶體模組中;將該第N組錯誤更正碼寫入至該快閃記憶體模組中;該第N筆資料成功寫入至該快閃記憶體模組後,刪除該快閃記憶體模組中的該第N組錯誤更正碼中至少一部分,但在該快閃記憶體模組中保留該第N筆資料;其中該快閃記憶體控制器將該第N~(N+M)組錯誤更正碼寫入到該快閃記憶體模組的至少一特定區塊中,且該至少一特定區塊中為一單層式儲存的區塊。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW104125708A TWI575530B (zh) | 2015-08-06 | 2015-08-06 | 存取快閃記憶體模組的方法及相關的快閃記憶體控制器與記憶裝置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW104125708A TWI575530B (zh) | 2015-08-06 | 2015-08-06 | 存取快閃記憶體模組的方法及相關的快閃記憶體控制器與記憶裝置 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201707004A TW201707004A (zh) | 2017-02-16 |
TWI575530B true TWI575530B (zh) | 2017-03-21 |
Family
ID=58609108
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW104125708A TWI575530B (zh) | 2015-08-06 | 2015-08-06 | 存取快閃記憶體模組的方法及相關的快閃記憶體控制器與記憶裝置 |
Country Status (1)
Country | Link |
---|---|
TW (1) | TWI575530B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8136015B2 (en) * | 2006-05-18 | 2012-03-13 | Buffalo Inc. | Data storage apparatus and data storage method |
US20140026018A1 (en) * | 2012-07-17 | 2014-01-23 | Silicon Motion Inc. | Method for reading data from block of flash memory and associated memory device |
US20140136761A1 (en) * | 2012-11-09 | 2014-05-15 | Sandisk Technologies Inc. | Architectures for data analytics using computational nand memory |
US20140245109A1 (en) * | 2007-09-13 | 2014-08-28 | Yong-Tae YIM | Memory system and wear-leveling method thereof |
US20150058700A1 (en) * | 2013-08-23 | 2015-02-26 | Silicon Motion, Inc. | Methods for Accessing a Storage Unit of a Flash Memory and Apparatuses using the Same |
US20150058661A1 (en) * | 2013-08-23 | 2015-02-26 | Silicon Motion, Inc. | Methods for Accessing a Storage Unit of a Flash Memory and Apparatuses using the Same |
-
2015
- 2015-08-06 TW TW104125708A patent/TWI575530B/zh active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8136015B2 (en) * | 2006-05-18 | 2012-03-13 | Buffalo Inc. | Data storage apparatus and data storage method |
US20140245109A1 (en) * | 2007-09-13 | 2014-08-28 | Yong-Tae YIM | Memory system and wear-leveling method thereof |
US20140026018A1 (en) * | 2012-07-17 | 2014-01-23 | Silicon Motion Inc. | Method for reading data from block of flash memory and associated memory device |
US20140136761A1 (en) * | 2012-11-09 | 2014-05-15 | Sandisk Technologies Inc. | Architectures for data analytics using computational nand memory |
US20150058700A1 (en) * | 2013-08-23 | 2015-02-26 | Silicon Motion, Inc. | Methods for Accessing a Storage Unit of a Flash Memory and Apparatuses using the Same |
US20150058661A1 (en) * | 2013-08-23 | 2015-02-26 | Silicon Motion, Inc. | Methods for Accessing a Storage Unit of a Flash Memory and Apparatuses using the Same |
Also Published As
Publication number | Publication date |
---|---|
TW201707004A (zh) | 2017-02-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI575531B (zh) | 存取快閃記憶體模組的方法及相關的快閃記憶體控制器與記憶裝置 | |
CN107403640B (zh) | 存取闪存模块的方法及相关的闪存控制器与记忆装置 | |
CN107391296B (zh) | 存取闪存模块的方法及相关的闪存控制器与记忆装置 | |
CN107423158B (zh) | 存取闪存模块的方法及相关的闪存控制器与记忆装置 | |
TWI629690B (zh) | 存取快閃記憶體模組的方法及相關的快閃記憶體控制器與記憶裝置 | |
CN112463433B (zh) | 存取闪存模块的方法及相关的闪存控制器与记忆装置 | |
CN111951855B (zh) | 存取闪存模块的方法及相关的闪存控制器与记忆装置 | |
TWI575530B (zh) | 存取快閃記憶體模組的方法及相關的快閃記憶體控制器與記憶裝置 | |
CN112214348B (zh) | 存取闪存模块的方法及相关的闪存控制器与记忆装置 | |
TWI691967B (zh) | 解碼方法及相關的快閃記憶體控制器與電子裝置 | |
JP2013196673A (ja) | メモリシステム | |
CN113113076B (zh) | 解码方法及相关的闪存控制器与电子装置 | |
CN113113076A (zh) | 解码方法及相关的闪存控制器与电子装置 |