TWI441181B - 用來進行資料整形之方法以及其記憶裝置及控制器 - Google Patents

用來進行資料整形之方法以及其記憶裝置及控制器 Download PDF

Info

Publication number
TWI441181B
TWI441181B TW99130478A TW99130478A TWI441181B TW I441181 B TWI441181 B TW I441181B TW 99130478 A TW99130478 A TW 99130478A TW 99130478 A TW99130478 A TW 99130478A TW I441181 B TWI441181 B TW I441181B
Authority
TW
Taiwan
Prior art keywords
data
shaping
controller
information
path
Prior art date
Application number
TW99130478A
Other languages
English (en)
Other versions
TW201212029A (en
Inventor
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 TW99130478A priority Critical patent/TWI441181B/zh
Priority to US13/115,980 priority patent/US8762823B2/en
Publication of TW201212029A publication Critical patent/TW201212029A/zh
Priority to US14/197,175 priority patent/US9032278B2/en
Application granted granted Critical
Publication of TWI441181B publication Critical patent/TWI441181B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5628Programming or writing circuits; Data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5642Sensing or reading circuits; Data output circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/26Sensing or reading circuits; Data output circuits

Description

用來進行資料整形之方法以及其記憶裝置及控制器
本發明係有關於快閃記憶體(Flash Memory)之存取(Access),尤指一種用來進行資料整形(Data Shaping)之方法以及相關之記憶裝置及其控制器。
近年來由於快閃記憶體的技術不斷地發展,各種可攜式記憶裝置(例如:符合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)來調整資料以期解決這樣的問題,卻由於傳統的低成本設計,以致調整後的資料不夠隨機。另外,一旦快閃記憶體的資料儲存樣態有特定的限制,可能發生硬體資源不足與增加成本之間的取捨(Trade-off)的問題。因此,需要一種新穎的方法針對該控制器所存取之資料來進行妥善的資料型樣管理,以減少錯誤的發生。
因此本發明之目的之一在於提供一種用來進行資料整形(Data Shaping)之方法以及相關之記憶裝置及其控制器,以解決上述問題。
本發明之另一目的在於提供一種用來進行資料整形之方法以及相關之記憶裝置及其控制器,以抑制資料錯誤。
本發明之另一目的在於提供一種用來進行資料整形之方法以及相關之記憶裝置及其控制器,以便在可供用來進行資料整形之整形碼(Shaping Code)的數量甚多的狀況下,仍可以迅速地篩選適用的整形碼,且不需要實施龐大的硬體架構。
本發明之較佳實施例中提供一種用來進行資料整形之方法,該方法係應用於一快閃記憶體(Flash Memory)的控制器,該快閃記憶體包含複數個區塊,該方法包含有:依據原始資料與複數個整形碼進行一寫入最佳化(Program Optimization)運作,以產生對應於一格子圖(Trellis Diagram)的追溯(Trace Back)資訊作為旁資訊(Side Information);以及依據該旁資訊動態地選擇該些整形碼中之至少一整形碼,以對該原始資料進行資料整形。
本發明於提供上述方法之同時,亦對應地提供一種記憶裝置,其包含有:一快閃記憶體,該快閃記憶體包含複數個區塊;以及一控制器,用來存取(Access)該快閃記憶體以及管理該複數個區塊,並且另針對該控制器本身所存取之資料來進行資料整形。另外,該控制器依據原始資料與複數個整形碼進行一寫入最佳化運作,以產生對應於一格子圖的追溯資訊作為旁資訊。此外,該控制器包含有至少一資料整形模組/資料重獲(Recovery)模組,用來依據該旁資訊動態地選擇該些整形碼中之至少一整形碼,以對該原始資料進行資料整形。
本發明於提供上述方法之同時,亦對應地提供一種記憶裝置之控制器,該控制器係用來存取一快閃記憶體,該快閃記憶體包含複數個區塊,該控制器包含有:一唯讀記憶體(Read Only Memory,ROM),用來儲存一程式碼;一微處理器,用來執行該程式碼以控制對該快閃記憶體之存取以及管理該複數個區塊,其中在該微處理器之控制下,該控制器針對該控制器本身所存取之資料來進行資料整形。另外,該控制器依據原始資料與複數個整形碼進行一寫入最佳化運作,以產生對應於一格子圖的追溯資訊作為旁資訊。此外,該控制器另包含有至少一資料整形模組/資料重獲模組,用來依據該旁資訊動態地選擇該些整形碼中之至少一整形碼,以對該原始資料進行資料整形。
請參考第1A圖,第1A圖為依據本發明一第一實施例之一種記憶裝置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包含至少一資料整形模組/資料重獲(Recovery)模組,諸如一資料整形模組114DS,且另包含一編碼器114E與一前處理器114P,其中資料整形模組114DS包含一調整單元114A、一附加單元114AP、與一整形碼(Shaping Code)產生器114G。實作上,調整單元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還可針對其本身所存取之資料(例如:資料D1)來進行資料整形(Data Shaping)。尤其是,在微處理器112之控制下,針對記憶體控制器110本身所存取之資料,記憶體控制器110藉由利用上述之至少一資料整形模組/資料重獲模組(例如:資料整形模組114DS)之運作來進行資料整形以抑制資料錯誤。更明確而言,該控制器(於本實施例中尤其是其內的前處理器114P)依據複數個整形碼與原始資料諸如資料D1進行一寫入最佳化(Program Optimization)運作,以產生對應於一格子圖(Trellis Diagram)的追溯(Trace Back)資訊作為旁資訊(Side Information)ISIDE ,而上述之至少一資料整形模組/資料重獲模組(例如:資料整形模組114DS)則依據旁資訊ISIDE 動態地選擇該些整形碼中之至少一整形碼,以對該原始資料進行資料整形。
於本實施例中,前處理器114P可依據資料D1與先前資料資訊IPD (即先前資料之資訊,例如快閃記憶體中前一記憶頁所儲存的資訊)來產生旁資訊ISIDE ,其中該控制器可於接收到一寫入/讀取命令時利用旁資訊ISIDE 中之至少一部分或其代表資訊來進行相關運作,而該寫入/讀取命令係用來指示該控制器於快閃記憶體120寫入/讀取資料。例如:在上述之寫入/讀取命令代表一寫入命令的狀況下,該控制器可立即使用旁資訊ISIDE 來進行資料整形。更明確而言,整形碼產生器114G可依據旁資訊ISIDE 中之至少一部分或其代表資訊來產生至少一整形碼,諸如相對應之一個或多個整形碼114SPC,以供用來於該控制器接收到該寫入命令時調整該原始資料(諸如資料D1)之複數個位元。另外,調整單元114A依據上述之至少一整形碼,來調整資料D1以產生調整後之資料DRND1 。此外,附加單元114AP可將旁資訊ISIDE 中之至少一部分或其代表資訊附加於資料DRND1 ,作為其附加資訊IA 。如此,編碼器114E可對資料DRND1 連同附加資訊IA 進行編碼。因此,於一寫入運作期間,該控制器不但將資料儲存於快閃記憶體120,亦將旁資訊ISIDE 中之至少一部分或其代表資訊儲存於快閃記憶體120,以供該原始資料之重獲之用。於是,在上述之寫入/讀取命令代表一讀取命令的狀況下,於一讀取運作期間,該控制器可自快閃記憶體120取得旁資訊ISIDE 中之該至少一部分或其代表資訊,並且上述之至少一資料整形模組/資料重獲模組(例如:資料整形模組114DS)可據以重獲(Recover)該原始資料諸如資料D1。
請注意,依據本實施例之一特例,資料整形模組114DS可用來當作一資料重獲模組,其可於一讀取運作期間重獲資料。尤其是,資料整形模組114DS中之調整單元114A及整形碼產生器114G可於一讀取運作期間用來重獲資料,其中附加單元114AP可藉由切換電路之路徑切換被暫時地斷開而不電氣連接至調整單元114A。依據本實施例之另一特例,除了資料整形模組114DS,上述之至少一資料整形模組/資料重獲模組可另包含一資料重獲模組,其可於一讀取運作期間重獲資料,如此一來,記憶體控制器110即可同時進行寫入與讀取運作。例如:該資料重獲模組可藉由切換電路之路徑切換來利用調整單元114A及/或整形碼產生器114G。又例如:資料重獲模組可包含其本身的調整單元。又例如:該資料重獲模組可包含其本身的整形碼產生器。
依據本實施例,在上述之寫入/讀取命令代表該寫入命令的狀況下,當通過調整單元114A之資料路徑代表一寫入路徑時,資料D1可代表該控制器欲寫入快閃記憶體120之該原始資料,而資料DRND1 可代表調整後的資料,並且資料DRND1 及附加資訊IA 被送予編碼器114E;於是,編碼器114E據以進行編碼,尤其是進行錯誤更正碼(Error Correction Code,ECC)編碼以產生編碼資料,並將該編碼資料寫入快閃記憶體120,其中該編碼資料可包含奇偶校驗碼(Parity Code)。這只是為了說明的目的而已,並非對本發明之限制。依據本實施例之一特例,諸如上述資料整形模組114DS可用來當作資料重獲模組之特例,在上述之寫入/讀取命令代表該讀取命令的狀況下,當通過調整單元114A之資料路徑代表一讀取路徑時,該讀取路徑可耦接至一解碼器114D(未顯示於第1A圖中),其中解碼器114D對讀取自快閃記憶體120之編碼資料進行解碼,尤其是進行錯誤更正碼解碼以產生解碼資料,諸如資料DRND1 及附加資訊IA (即旁資訊ISIDE 中之至少一部分或其代表資訊)。此狀況下,調整單元114A之輸入與輸出對調;而調整單元114A依據至少一整形碼,諸如相對應之一個或多個整形碼114SPC,來調整資料DRND1 以重獲資料D1,以供進一步處理。
依據本實施例之一變化例,該寫入最佳化運作可利用程式碼112C中之至少一程式模組來實現;如此,前處理器114P可代換為透過微處理器112執行該程式模組之記憶體控制器110。
第1B圖與第1C圖為第1A圖所示之記憶裝置100於一實施例中的實施細節。如第1B圖所示,在上述之寫入/讀取命令代表該寫入命令的狀況下,前處理器114P自緩衝記憶體116讀出先前資料資訊IPD ,並依據資料D1與先前資料資訊IPD 進行該寫入最佳化運作以產生旁資訊ISIDE 。另外,資料整形模組114DS則自緩衝記憶體116讀出資料D1並依據旁資訊ISIDE 動態地選擇該些整形碼中之至少一整形碼,以對資料D1進行資料整形來產生資料DRND1 。如此,資料整形模組114DS依據旁資訊ISIDE 產生至少一整形碼,諸如相對應之一個或多個整形碼114SPC,並據以調整資料D1之複數個位元以產生調整後之資料DRND1 。資料整形模組114DS另將附加資訊IA 附加於資料DRND1 以產生組合資料(於第1B圖中係繪示為附加了附加資訊IA 之資料DRND1 )。此外,編碼器114E對該組合資料進行錯誤更正碼編碼以產生編碼資料(於第1B圖之右上角係繪示為附加了附加資訊IA 與奇偶校驗碼P1之資料DRND1 ),並將該編碼資料寫入快閃記憶體120。
如第1C圖所示,在上述之寫入/讀取命令代表該讀取命令的狀況下,記憶體控制器110自快閃記憶體120所讀取之編碼資料(於第1C圖之右上角係繪示為附加了附加資訊IA 與奇偶校驗碼P1之資料DRND1 )分別被傳送至解碼器114D與緩衝記憶體116,其中在記憶體控制器110之控制下,緩衝記憶體116只暫時地儲存資料DRND1 與附加資訊IA 而非奇偶校驗碼P1。讀取重試控制器114RR係用來於解碼器114D進行解碼時進行讀取重試控制。另外,解碼器114D對讀取自快閃記憶體120之編碼資料進行解碼;一旦偵測到錯誤,就產生更正資料以更正緩衝記憶體116中之資料DRND1 及/或附加資訊IA 。於是,資料重獲模組114DR依據附加資訊IA (即上述旁資訊ISIDE 中之至少一部分或其代表資訊)重獲資料D1。依據本實施例,資料重獲模組114DR可依據附加資訊IA 產生至少一整形碼,諸如相對應之一個或多個整形碼114SPC,並據以調整資料DRND1 之複數個位元以重獲資料D1,以供進一步處理。
依據本實施例之一變化例,資料整形模組114DS與資料重獲模組114DR可為同一個元件,且因此可一併稱為資料整形模組/資料重獲模組。
第1D圖為一實施例中關於第1A圖所示之整形碼產生器114G的實施細節。本實施例之整形碼產生器114G包含一控制單元114C與一查對表(Look-up Table)114T,其中查對表114T儲存有該複數個整形碼。由於該複數個整形碼包含上述之一個或多個整形碼114SPC,故該一個或多個整形碼114SPC之任一者係選自於該複數個整形碼。
於本實施例中,控制單元114C可依據旁資訊ISIDE 產生相對應的控制訊號C1 ,並藉由利用查對表114T來據以進行查對以產生該一個或多個整形碼114SPC。這只是為了說明的目的而已,並非對本發明之限制。依據本實施例之一變化例,整形碼產生器114G可直接使用旁資訊ISIDE (或附加資訊IA )之至少一部分作為控制訊號C1 ,且於本變化例中並不需要設置上述之控制單元114C。依據本實施例之另一變化例,上述之控制單元114C被代換為一選擇單元,用以選擇旁資訊ISIDE (或附加資訊IA )之至少一部分作為控制訊號C1
請注意,本實施例之整形碼產生器114G亦可應用於第1A圖至第1C圖所示之實施例或其變化例中之資料重獲模組。
第1E圖為另一實施例中關於第1A圖所示之整形碼產生器114G的實施細節,其中本實施例係為第1D圖所示實施例之變化例。除了上述之控制單元114C與查對表114T,本實施例之整形碼產生器114G另包含一隨機函數發生器(Randomizer)/解隨機函數發生器(Derandomizer)114R,且另包含一多工器114M,其中查對表114T儲存有該複數個整形碼中之一部分,而隨機函數發生器/解隨機函數發生器114R可產生該複數個整形碼中之另一部分之任一整形碼。
於本實施例中,控制單元114C可依據旁資訊ISIDE 產生相對應的控制訊號C0 ,並藉由利用控制訊號C0 來選擇查對表114T之輸出、或隨機函數發生器/解隨機函數發生器114R之輸出,作為整形碼產生器114G之輸出。例如:在控制單元114C藉由利用控制訊號C0 來選擇查對表114T之輸出作為整形碼產生器114G之輸出的狀況下,控制單元114C可依據旁資訊ISIDE 產生相對應的控制訊號C1 ,並藉由利用查對表114T來進行查對以產生該一個或多個整形碼114SPC之至少一部分。又例如:在控制單元114C藉由利用控制訊號C0 來選擇隨機函數發生器/解隨機函數發生器114R之輸出作為整形碼產生器114G之輸出的狀況下,控制單元114C可依據旁資訊ISIDE 產生相對應的控制訊號C2 ,作為隨機函數發生器/解隨機函數發生器114R之輸入種子(Seed),使隨機函數發生器/解隨機函數發生器114R據以產生至少一隨機函數(Random Function),其中隨機函數發生器/解隨機函數發生器114R輸出該隨機函數之序列(其可稱為隨機序列),作為該一個或多個整形碼114SPC之至少一部分。這只是為了說明的目的而已,並非對本發明之限制。依據本實施例之不同的變化例,整形碼產生器114G可直接使用旁資訊ISIDE (或附加資訊IA )之至少一部分作為控制訊號C0 、C1 、及/或C2 ,且於該些變化例中並不需要設置上述之控制單元114C。依據本實施例之其它變化例,上述之控制單元114C被代換為至少一選擇單元,用以選擇旁資訊ISIDE (或附加資訊IA )之至少一部分作為控制訊號C0 、C1 、及/或C2
請注意,本實施例之整形碼產生器114G亦可應用於第1A圖至第1C圖所示之實施例或其變化例中之資料重獲模組。
依據本發明之一實施例,諸如第1D圖與第1E圖所示實施例之一變化例,整形碼產生器114G包含隨機函數發生器/解隨機函數發生器114R,其中本變化例中並不需要設置上述之查對表114T與多工器114M,也不需要產生控制訊號C0 與C1 。於本實施例中,隨機函數發生器/解隨機函數發生器114R可產生該複數個整形碼中之任一整形碼,而隨機函數發生器/解隨機函數發生器114R輸出該隨機函數之序列(即該隨機序列),作為該一個或多個整形碼114SPC。這只是為了說明的目的而已,並非對本發明之限制。依據本實施例之一變化例,整形碼產生器114G可直接使用旁資訊ISIDE (或附加資訊IA )之至少一部分作為控制訊號C2 ,且於本變化例中並不需要設置上述之控制單元114C。依據本實施例之另一變化例,上述之控制單元114C被代換為一選擇單元,用以選擇旁資訊ISIDE (或附加資訊IA )之至少一部分作為控制訊號C2
基於以上揭露之各個實施例/變化例中之架構,本發明可賦予多階細胞(Multiple Level Cell,MLC)快閃記憶體極佳的運作效能,尤其是賦予三階細胞快閃記憶體極佳的運作效能。記憶體控制器110進行資料整形的相關細節可參考第2圖來進一步說明。
第2圖為依據本發明一實施例之一種用來進行資料整形之方法910的流程圖。該方法可應用於第1A圖所示之記憶裝置100,尤其是上述之控制器(例如:透過微處理器112執行程式碼112C之記憶體控制器110)。另外,該方法可藉由利用第1A圖所示之記憶裝置100來實施,尤其是藉由利用上述之控制器來實施。該方法說明如下:
步驟912:該控制器(於本實施例中尤其是其內的前處理器114P)依據原始資料(例如:資料D1)與複數個整形碼進行一寫入最佳化運作諸如上述之寫入最佳化運作,以產生對應於一格子圖的追溯資訊作為旁資訊ISIDE 。請注意,依據本實施例之一變化例,諸如該寫入最佳化運作可利用程式碼112C中之該程式模組來實現之變化例,前處理器114P可代換為透過微處理器112執行該程式模組之記憶體控制器110。
步驟914:上述之至少一資料整形模組/資料重獲模組(例如:資料整形模組114DS)依據旁資訊ISIDE 動態地選擇該些整形碼中之至少一整形碼,諸如上述之一個或多個整形碼114SPC,以對該原始資料進行資料整形。例如:上述之資料整形的運作可實施為對該原始資料之至少一部分以及上述之至少一整形碼進行互斥或(XOR)運算,尤其是對兩者(該原始資料之該至少一部分以及上述之至少一整形碼)之相對應位元進行互斥或運算,其中這樣的互斥或運算可稱為「位元互斥或」(Bitwise XOR)運算。
依據本實施例,該格子圖包含複數級(Stage)360-1、360-2、...、360-(K-1)、與360-K。該格子圖的各級中之每一級諸如第k級360-k(k=1、2、...、(K-1)、或K,其中K為正整數)包含複數個子路徑{PX1(k),X2(k) }。例如:X1(k)與X2(k)可為同一個整數的集合中之任意整數,尤其是非負數之整數。在此,一子路徑PX1(k),X2(k) 係為第k級360-k當中由一開始狀態SX1(k) 至一結果狀態SX2(k) 之狀態轉換的路徑,其中若存在下一級(即第(k+1)級360-(k+1)),則結果狀態SX2(k) 係為下一級之一開始狀態。為了簡明起見,上述之開始狀態SX1(k) 與結果狀態SX2(k) 可分別寫成狀態SX (k)與SX (k+1)。例如:在該格子圖係為四狀態格子圖的情況下,X=0、1、2、或3。又例如:在該格子圖係為八狀態格子圖的情況下,X=0、1、...、或7。這只是為了說明的目的而已,並非對本發明之限制。依據本實施例之不同的變化例,狀態索引X的可能值之數量可為除了四與八之外的正整數,且此數量之典型值大於一。依據本實施例之其它變化例,狀態索引X不必是整數。
另外,每一級之該些子路徑分別代表該些整形碼。例如:於每一級諸如第k級360-k當中,該些子路徑{PX1(k),X2(k) }中之某一子路徑PX1(k),X2(k) 代表該些整形碼中之一整形碼SPCX1(k),X2(k) 。尤其是,在每一級當中相關之候選整形碼均為同一組整形碼諸如步驟912所述之該些整形碼的狀況下,整形碼SPCX1(k),X2(k) 可改寫成SPCX1,X2 ,使得不論索引k之值為1、2、...、(K-1)、或K,子路徑PX1(k),X2(k) 總是代表該些整形碼中之同一個整形碼SPCX1,X2 。也就是說,在此狀況下,整形碼SPCX1,X2 與第k級360-k的索引k無關。如此,於該格子圖的該些級當中,任一級內對應於特定狀態轉換之一子路徑以及另一級內對應於相同狀態轉換之子路徑均代表該些整形碼當中之同一整形碼。
於本實施例中,該控制器尋找該格子圖中之一最佳化路徑,並產生該最佳化路徑中相對於各級(例如:第k級360-k)之各個子路徑(例如:該些子路徑{PX1(k),X2(k) })的子路徑追溯資訊作為旁資訊ISIDE 之至少一部分,其中該最佳化路徑之終點係為該格子圖之最後一級360-K的各個結果狀態SX (K+1)(例如:X=0、1、2、...等)中之一最佳狀態SX0 (K+1),且旁資訊ISIDE 包含代表最佳狀態SX0 (K+1)之終點資訊,諸如X0的二進位值。尤其是,針對該格子圖的各級,該控制器進行對應於維特比(Viterbi)演算法之相加、比較、與選擇(Add Compare Select,ACS)運作,以產生該些級中之至少一級(例如:該些級中之全部)的各個結果狀態之追溯指示器(Trace Back Indicator)並尋找該格子圖之最後一級360-K的該些結果狀態SX (K+1)中之最佳狀態SX0 (K+1),其中旁資訊ISIDE 中之該子路徑追溯資訊包含該些追溯指示器中之至少一部分。例如:該控制器可產生該格子圖的各級諸如第k級360-k的各個結果狀態SX (k+1)之追溯指示器TBIX (k)。如此,該控制器可依據該終點資訊(例如:X0的二進位值)與該子路徑追溯資訊(例如:追溯指示器TBIX (k)中之至少一部分)找到該最佳化路徑,並據以決定該最佳化路徑中對應於任一級諸如第k0級之子路徑所代表之整形碼,以對該原始資料中對應於第k0級之部分進行資料整形。例如:在該最佳化路徑中對應於第k0級之子路徑為子路徑PX1(k0),X2(k0) 的狀況下,由於子路徑PX1(k0),X2(k0) 代表之候選整形碼是整形碼SPCX1,X2 ,該控制器就藉由利用整形碼SPCX1,X2 ,對該原始資料中對應於第k0級之部分進行資料整形。
第3A圖至第3C圖為第2圖所示之方法910於一實施例中關於寫入最佳化運作的實施細節,其中第3C圖另繪示第1A圖所示之資料整形模組114DS於進行資料整形時所採用之整形碼310,諸如整形碼310-1、310-2、...、310-(K-1)、與310-K,而每一整形碼310-k(k=1、2、...、(K-1)、或K)均選自於步驟912所述之該些整形碼。請注意,步驟912所述之該原始資料,諸如第3C圖所示之原始資料308,包含分別對應於該格子圖的各級360-1、360-2、...、與360-K之部分資料(Partial Data)308-1、308-2、...、與308-K,即原始資料308中分別對應於第1級360-1、第2級360-2、...、與第K級360-K之部分。
如第3A圖所示,該格子圖的各級中之每一級諸如第k級360-k包含8個子路徑{P0,0 ,P0,1 ,P1,2 ,P1,3 ,P2,0 ,P2,1 ,P3,2 ,P3,3 },而這8個子路徑分別為第k級360-k當中由狀態{S0 (k),S1 (k),S2 (k),S3 (k)}至狀態{S0 (k+1),S1 (k+1),S2 (k+1),S3 (k+1)}之狀態轉換的路徑。另外,這8個子路徑{P0,0 ,P0,1 ,P1,2 ,P1,3 ,P2,0 ,P2,1 ,P3,2 ,P3,3 }分別代表8個整形碼{SPC0,0 ,SPC0,1 ,SPC1,2 ,SPC1,3 ,SPC2,0 ,SPC2,1 ,SPC3,2 ,SPC3,3 }。於本實施例中,由狀態S0 (k)指向狀態S0 (k+1)及S1 (k+1)的路徑可分別記錄為0、1。相仿地,由狀態S1 (k)指向狀態S2 (k+1)及S3 (k+1)的路徑可分別記錄為0、1。另外,由狀態S3 (k)指向狀態S3 (k+1)及S2 (k+1)的路徑可分別記錄為0、1。相仿地,由狀態S2 (k)指向狀態S1 (k+1)及S0 (k+1)的路徑可分別記錄為0、1。
如第3B圖所示,於尋找該最佳化路徑諸如第3C圖所示之最佳化路徑390的過程中,該控制器會計算每一級諸如第k級360-k之各個結果狀態SX (k+1)的量度值(Metric)MetX (k+1),其中該控制器可將第1級360-1之各個開始狀態SX (1)的量度值MetX (1)設定為同一數值,尤其是零。於本實施例中,針對對應於第k級360-k之部分資料308-k,該控制器計算分別對應於至少兩個整形碼之至少兩個分支量度值(Branch Metric)(例如:分別對應於整形碼SPC0,0 與SPC2,0 之分支量度值BM0,0 (k)與BM2,0 (k))。針對分別對應於該些級360-1、360-2、...、與360-K之部分資料308-1、308-2、...、與308-K,藉由進行類似的計算,該控制器可累計該些級之複數個分支量度值中之至少一部分,以進行該寫入最佳化運作。
例如:在已取得第k級360-k之開始狀態S0 (k)的量度值Met0 (k)與開始狀態S2 (k)的量度值Met2 (k)的狀況下,該控制器可先取得子路徑P0,0 與P2,0 所分別代表之整形碼SPC0,0 與SPC2,0 ,再依據整形碼SPC0,0 與SPC2,0 來計算分別對應於這兩個整形碼SPC0,0 與SPC2,0 (或分別對應於這兩個子路徑P0,0 與P2,0 )之分支量度值BM0,0 (k)與BM2,0 (k),並且計算分別對應於這兩個子路徑P0,0 與P2,0 之累計值(Met0 (k)+BM0,0 (k))與(Met2 (k)+BM2,0 (k))。尤其是,該控制器可對部分資料308-k與整形碼SPC0,0 進行「位元互斥或」運算(於第3B圖之左上角係標示為「⊕」)以產生整形資料SPD0,0 (k),並據以計算分支量度值BM0,0 (k)。相仿地,該控制器可對部分資料308-k與整形碼SPC2,0 進行「位元互斥或」運算(於第3B圖之左下角係標示為「⊕」)以產生整形資料SPD2,0 (k),並據以計算分支量度值BM2,0 (k)。實作上,先前資料資訊IPD 可載有先前資料之至少一部分或其代表資訊,故該控制器可藉由比較SPD0,0 (k)與先前資料資訊IPD 中之相關部分來計算分支量度值BM0,0 (k),並藉由比較SPD2,0 (k)與先前資料資訊IPD 中之相關部分來計算分支量度值BM2,0 (k)。
於本實施例中,該控制器可依據至少一預定規則,來選擇累計值(Met0 (k)+BM0,0 (k))與(Met2 (k)+BM2,0 (k))中之某一累計值作為結果狀態S0 (k+1)的量度值Met0 (k+1),且產生結果狀態S0 (k+1)乏追溯指示器TBI0 (k)並且予以暫存,其中追溯指示器TBI0 (k)之值指出該控制器所選擇的累計值所對應之子路徑。例如:在該預定規則指出該控制器應選擇最大的累計值的狀況下,則該控制器可選擇這兩個累計值(Met0 (k)+BM0,0 (k))與(Met2 (k)+BM2,0 (k))中之最大的累計值作為結果狀態S0 (k+1)的量度值Met0 (k+1)。這只是為了說明的目的而已,並非對本發明之限制。依據本實施例之一變化例,在該預定規則指出該控制器應選擇最小的累計值的狀況下,則該控制器可選擇這兩個累計值(Met0 (k)+BM0,0 (k))與(Met2 (k)+BM2,0 (k))中之最小的累計值作為結果狀態S0 (k+1)的量度值Met0 (k+1)。依據本實施例之另一變化例,在上述之至少一預定規則包含複數個預定規則。
實作上,一旦該控制器選擇了這兩個累計值(Met0 (k)+BM0,0 (k))與(Met2 (k)+BM2,0 (k))中之某一個累計值,就捨棄另一個累計值以減少該控制器之工作量。這只是為了說明的目的而已,並非對本發明之限制。依據本實施例之一變化例,在可供選擇之累計值包含至少三個累計值的狀況下,一旦該控制器選擇了上述之至少三個累計值中之某一個累計值,就捨棄其它累計值以減少該控制器之工作量。
依據本實施例,該控制器依據上述之至少一預定規則或其它預定規則,於最後一級360-K之各個結果狀態SX (K+1)中選出最佳狀態SX0 (K+1),尤其是藉由比較最後一級之各個結果狀態SX (K+1)之量度值MetX (K+1),諸如Met0 (K+1)、Met1 (K+1)、Met2 (K+1)、與Met3 (K+1),來選出最佳狀態SX0 (K+1)。於是,依據該些追溯指示器TBIX (k)之至少一部分,由最佳狀態SX0 (K+1)起,該控制器可逐一找出該最佳化路徑諸如第3C圖所示之最佳化路徑390之各個子路徑。例如:前處理器114P可依據第3A圖所示之子路徑簡易標示,來記錄追溯指示器TBIX (k)。此狀況下,前處理器114P可將子路徑追溯資訊記錄為10...01,且可將終點資訊X0諸如二進位值00以及子路徑追溯資訊10...01合併記錄為旁資訊ISIDE ,即10...0100。這只是為了說明的目的而已,並非對本發明之限制。依據本實施例之一變化例,第3A圖所示之子路徑簡易標示可予以改變。例如:指向同一狀態SX (k+1)之兩個子路徑中之上方、下方子路徑可分別簡易地標示為0、1,而前處理器114P可依據這些子路徑簡易標示來記錄追溯指示器TBIX (k)。如此,在追溯指示器TBIX (k)=1的狀況下,追溯指示器TBIX (k)指出最佳化路徑390於第k級360-k中自狀態SX (k+1)返回下方子路徑;而在追溯指示器TBIX (k)=0的狀況下,追溯指示器TBIX (k)指出最佳化路徑390於第k級360-k中自狀態SX (k+1)返回上方子路徑。
以第3C圖所示之狀況為例,在上述之最佳狀態(例如最佳化路徑390之終點)為狀態S0 (K+1)的狀況下,該控制器依據追溯指示器TBI0 (K)找到最佳化路徑390中相對於第K級之子路徑P2,0 (K),再依據追溯指示器TBI2 (K-1)找到最佳化路徑390中相對於第(K-1)級之子路徑P1,2 (K-1),依此類推。相仿地,該控制器依據追溯指示器TBI2 (2)找到最佳化路徑390中相對於第2級之子路徑P1,2 (2),再依據追溯指示器TBI1 (1)找到最佳化路徑390中相對於第1級之子路徑P0,1 (1)。於是,該控制器(於本實施例中尤其是其內的前處理器114P)將最佳化路徑390中相對於該格子圖的各級(諸如第1級360-1、第2級360-2、...、第(K-1)級360-(K-1)、與第K級360-K)之各個子路徑P0,1 (1)、P1,2 (2)、...、P1,2 (K-1)、與P2,0 (K)的子路徑追溯資訊傳送予上述之資料整形模組/資料重獲模組;如此,旁資訊ISIDE 包含最佳化路徑390中相對於該格子圖的各級之各個子路徑P0,1 (1)、P1,2 (2)、...、P1,2 (K-1)、與P2,0 (K)的子路徑追溯資訊。
於是,針對對應於一特定級之特定部分資料(例如:對應於第k級360-k之部分資料308-k),上述之資料整形模組/資料重獲模組(例如:資料整形模組114DS)依據旁資訊ISIDE 中之至少一部分於該些整形碼中選出一特定整形碼,以進行對應於該特定部分資料之資料整形。以第3C圖所示之狀況為例,上述之資料整形模組/資料重獲模組依據旁資訊ISIDE 中關於各個子路徑P0,1 (1)、P1,2 (2)、...、P1,2 (K-1)、與P2,0 (K)的子路徑追溯資訊,分別選出整形碼SPC0,1 、SPC1,2 、...、SPC1,2 、與SPC2,0 作為第3C圖所示之整形碼310-1、310-2、...、310-(K-1)、與310-K,以分別進行對應於部分資料308-1、308-2、...、308-(K-1)、與308-K之資料整形。
請注意,針對每一級諸如第k級360-k,在可供選擇之累計值僅具有兩個累計值的狀況下,追溯指示器TBIX (k)之值可為一位元的資訊;由於該格子圖內共有K級,故旁資訊ISIDE 中之子路徑追溯資訊可僅具有K位元。另外,在狀態索引X的可能值之數量是四的狀況下,旁資訊ISIDE 中之終點資訊諸如X0的二進位值可僅具有2位元。如此,於本實施例中,旁資訊ISIDE 可僅具有(K+2)位元,故本發明於快閃記憶體120中針對附加資訊IA 所需之儲存空間極小。因此,相較於任何相關技術之架構,本發明能在極度地節省儲存空間的狀況下,提供極佳的運作效能。
第4A圖至第4E圖為第2圖所示之方法910於另一實施例中關於寫入最佳化運作的實施細節。請參照第4A圖,第4A圖係繪示原始資料400與其部分資料400-1、400-2、400-3、400-4之關係。在此實施例中,主裝置欲將資料長度為一記憶頁的原始資料400寫入快閃記憶體120,原始資料400係被區分為部分資料400-1至4004。
首先,請參照第4B圖,前處理器114P係針對部分資料400-1進行處理。前處理器114P係依照第3B圖所示之方式對部分資料400-1進行資料整形、計算與選擇。前處理器114P分別將部分資料400-1與8個不同的候選整形碼進行位元互斥或運算產生8筆不同的整形資料。這8個不同的候選整形碼分別對應至第3A圖所示之路徑P0,0 、P0,1 、P1,2 、P1,3 、P2,0 、P2,1 、P3,2 、P3,3 。前處理器114P係分別對8筆不同的整形資料進行計算。在一實施例中,前處理器114P可將整形資料與快閃記憶體中前一記憶頁中相對應的部分資料逐位元地進行比對,若相同(例如同為邏輯0或同為邏輯1)則累進一分,若不同,則不加分。在此實施例中,各個整形資料所得之分數(分支量度值)係標示於第4B圖相對應之路徑上。例如,與路徑P0,0 相對應的整形碼進行位元互斥或運算所產生的整形資料係得到102分(如第4B圖路徑P0,0 上之數字所示),即BM0,0 (0)=102。與路徑P0,1 相對應的整形碼進行位元互斥或運算所產生的整形資料係得到79分,即BM0,1 (0)=79。以此類推。
請注意到,前處理器114P在對8筆不同的整形資料進行積分計算時,亦得不參考前一記憶頁中相對應的部份資料。前處理器114P得分別計算各整形資料中邏輯0或邏輯1的數目,以使整形資料中邏輯0或邏輯1數目最接近的具有最高積分、或者邏輯1較多者有較高積分、或者邏輯0較多者有較高積分。而且,針對存放在不同記憶頁的整形資料,也可以有不同的積分計算規則。例如,針對錯誤率較低的記憶頁,可使整形資料中邏輯1較多者有較高積分。而針對錯誤率較高的記憶頁,可使整形資料中邏輯0較多者有較高積分。進行積分計算的規則可依各種不同的快閃記憶體特性而定。
而於進行選擇時,前處理器114P會對指向各結果狀態的各路徑積分進行比較。如前所述,開始狀態S0 (0)、S1 (0)、S2 (0)、S3 (0)的量度值均預設為0(分別標示於各狀態之圓圈上方)。舉例來說,指向結果狀態S0 (1)的路徑為P0,0 與P2,0 。路徑P0,0 的積分為分支量度值BM0,0 (0)加上開始狀態S0 (0)的量度值Met0 (0),即102+0=102。路徑P2,0 的積分為分支量度值BM2,0 (0)加上開始狀態S2 (0)的量度值Met2 (0),即95+0=95。在此實施例中,前處理器114P選擇積分較大者作為存活路徑。例如,路徑P0,0 的積分(102)大於路徑P2,0 的積分(95),故將路徑P0,0 作為存活路徑,並將結果狀態S0 (1)的量度值Met0 (1)記錄為102(標示於狀態S0 (1)之圓圈上方,如第4B圖最右側所示),依此類推。
接著,請參考第4C圖前處理器114P係針對部分資料400-2進行資料整形、計算與選擇。前處理器114P針對部分資料400-2進行資料整形、計算與選擇之方式係類似於第4B圖,為求簡潔,類似之部分不予贅述。結果狀態S0 (1)、S1 (1)、S2 (1)、S3 (1)的量度值與各分支量度值係如第4C圖所示。請注意到,第4B圖中,開始狀態S0 (0)、S1 (0)、S2 (0)、S3 (0)的量度值均預設為0。而第4C圖中,開始狀態S0 (1)、S1 (1)、S2 (1)、S3 (1)(於第4B圖中可稱為結果狀態)的量度值分別為102、80、90、105。前處理器114P在進行路徑選擇時,需考慮到各開始狀態(例如前一級的結果狀態)的量度值。舉例來說,指向結果狀態S1 (2)的路徑為P0,1 與P2,1 。路徑P0,1 的積分為分支量度值BM0,1 (1)加上開始狀態S0 (1)的量度值Met0 (1),即68+102=170。路徑P2,1 的積分為分支量度值BM2,1 (1)加上開始狀態S2 (1)的量度值Met2 (1),即63+90=153。前處理器114P選擇積分較大者作為存活路徑。路徑P0,1 的積分(170)大於路徑P2,1 的積分(153),故將路徑P0,1 作為存活路徑,並將結果狀態S1 (2)的量度值Met1 (2)記錄為170,依此類推。
請參考第4D圖,待前處理器114P對部分資料400-1至400-4進行資料整形、計算與選擇完畢後,可得到結果狀態S0 (4)、S1 (4)、S2 (4)、S3 (4)的量度值分別為380、367、355、370。在此實施例中,前處理器114P選擇量度值最高的結果狀態S0 (4)作為最佳狀態,並藉由其存活路徑找出最佳路徑490。而在記錄旁資訊ISIDE 時,可依據最佳狀態S0 (4)將終點資訊記錄為00。而記錄子路徑追溯資訊時,可依據最佳路徑490及第3A圖之子路徑簡易標示,將子路徑追溯資訊記錄為0010。故,可將終點資訊記錄及子路徑追溯資訊合併記錄為旁資訊ISIDE ,即001000。第4E圖即為資料整形模組114DS所產生之資料DRND1 及附加資訊IA 之示意圖,在此實施例中,附加資訊IA 即為旁資訊ISIDE ,本發明並不以此為限,附加資訊IA 亦得包含其他資訊。
第5圖繪示一實施例中關於第1A圖所示之快閃記憶體120中之一記憶單元(cell)的位元資訊510及其相關之各階{L0,L1,L2,L3,L4,L5,L6,L7},其中位元資訊510包含最高有效位元(Most Significant Bit)MSB、中央有效位元(Central Significant Bit)CSB、與最低有效位元(Least Significant Bit)LSB。依據本實施例,若最高有效位元MSB為1且其餘位元CSB與LSB均為0,則該記憶單元的儲存階為第4階L4。另外,若最高有效位元MSB及其餘位元CSB與LSB均為0,則該記憶單元的儲存階為第0階L0。如此,針對位元資訊510的各個可能的二進位值{000,001,010,011,100,101,110,111},該記憶單元的儲存階分別為相對應之各階{L0,L1,L2,L3,L4,L5,L6,L7}。
於本實施例中,該控制器針對該原始資料(例如:資料D1)中關於該記憶單元之某一(些)位元進行資料整形,而非對該原始資料中關於該記憶單元之全部位元進行資料整形。尤其是,該控制器針對該原始資料中關於該記憶單元之最高有效位元MSB進行資料整形,而不對該原始資料中關於該記憶單元之其餘位元諸如中央有效位元CSB與最低有效位元LSB進行資料整形。這只是為了說明的目的而已,並非對本發明之限制。依據本實施例之一變化例,該控制器針對該原始資料中關於該記憶單元之最高有效位元MSB與中央有效位元CSB進行資料整形,而不對該原始資料中關於該記憶單元之其餘位元諸如最低有效位元LSB進行資料整形。依據本實施例之另一變化例,該控制器針對該原始資料中關於該記憶單元之最高有效位元MSB與次高有效位元(例如:於本變化例中該次高有效位元係中央有效位元CSB)進行資料整形,而不對該原始資料中關於該記憶單元之其餘位元諸如最低有效位元LSB進行資料整形。亦可依據該記憶單元中各不同位元出錯的機率決定是否需要進行資料整形。例如,該記憶單元中,最高有效位元MSB出錯機率最低,相較中央有效位元CSB、最低有效位元LSB其僅需最低位元數的錯誤更正碼保護,故可有多餘的空間儲存旁資訊ISIDE ,因此,僅對最高有效位元MSB進行資料整形。
本發明的好處之一是,藉由適當地設計上述之資料整形模組/資料重獲模組,輔以相關的資料流控制(例如:第1A圖至第1C圖之資料流控制),本發明能針對該控制器所存取之資料來進行妥善的資料型樣管理,以減少錯誤的發生。另外,依據以上各個實施例/變化例來實施並不會增加許多額外的成本,甚至比相關技術更能節省成本。因此,基於以上揭露的內容,相關技術的問題已被解決,且整體成本不會增加太多。
以上所述僅為本發明之較佳實施例,凡依本發明申請專利範圍所做之均等變化與修飾,皆應屬本發明之涵蓋範圍。
100...記憶裝置
110...記憶體控制器
112...微處理器
112C...程式碼
112M...唯讀記憶體
114...控制邏輯
114A...調整單元
114AP...附加單元
114C...控制單元
114D...解碼器
114DR...資料重獲模組
114DS...資料整形模組
114E...編碼器
114G...整形碼產生器
114M...多工器
114P...前處理器
114R...隨機函數發生器/解隨機函數發生器
114RR...讀取重試控制器
114SPC...整形碼
114T...查對表
116...緩衝記憶體
118...介面邏輯
120...快閃記憶體
308,308-k,D1,DRND1 ,400,400-1,400-2,400-3,400-4...資料/部分資料
310,310-1,310-2,...,310-(K-1),310-K...整形碼
360-k,360-1,360-2,...,360-(K-1),360-K...格子圖的各級
390,490...於不同實施例中之最佳化路徑
510,MSB,CSB,LSB...快閃記憶體中之一記憶單元的位元資訊
910...用來進行資料整形之方法
912,914...步驟
BM0,0 (k),BM2,0 (k)...分支量度值
C0 ,C1 ,C2 ...用來產生整形碼之控制訊號
IA ...附加資訊
IPD ...先前資料資訊
ISIDE ...旁資訊
L0,L1,...,L7...該位元資訊之相關之各階
Met0 (k),Met2 (k),Met0 (k+1)...量度值
P1...奇偶校驗碼
P0,0 ,P0,1 ,P1,2 ,P1,3 ,P2,0 ,P2,1 ,P3,2 ,P3,3 ...格子圖的各級中之子路徑
P0,1 (1),P1,2 (2),...,P1,2 (K-1),P2,0 (K)...於該實施例中之最佳化路徑上之子路徑
S0 (0),S1 (0),S2 (0),S3 (0),S0 (1),S1 (1),S2 (1),S3 (1),S0 (2),S1 (2),S2 (2),S3 (2),S0 (3),S1 (3),S2 (3),S3 (3),S0 (4),S1 (4),S2 (4),S3 (4),S0 (k),S1 (k),S2 (k),S3 (k),S0 (k+1),S1 (k+1),S2 (k+1),S3 (k+1)...格子圖的各級之複數個狀態
SPC0,0 ,SPC2,0 ...候選整形碼
SPD0,0 (k),SPD2,0 (k),410-1,410-2,410-3,410-4...整形資料
第1A圖為依據本發明一第一實施例之一種記憶裝置的示意圖。
第1B圖與第1C圖為第1A圖所示之記憶裝置於一實施例中的實施細節。
第1D圖與第1E圖為不同的實施例中關於第1A圖所示之整形碼(Shaping Code)產生器的實施細節。
第2圖為依據本發明一實施例之一種用來進行資料整形(Data Shaping)之方法的流程圖。
第3A圖至第3C圖為第2圖所示之方法於一實施例中關於寫入最佳化(Program Optimization)運作的實施細節,其中第3C圖另繪示第1A圖所示之資料整形模組於進行資料整形時所採用之整形碼。
第4A圖至第4E圖為第2圖所示之方法於另一實施例中關於寫入最佳化運作的實施細節。
第5圖繪示一實施例中關於第1A圖所示之快閃記憶體中之一記憶單元的位元資訊及其相關之各階。
910...用來進行資料整形之方法
912,914...步驟

Claims (30)

  1. 一種用來進行資料整形(Data Shaping)之方法,該方法係應用於一快閃記憶體(Flash Memory)的控制器,該快閃記憶體包含複數個區塊,該方法包含有:依據原始資料與複數個整形碼(Shaping Code)進行一寫入最佳化(Program Optimization)運作,以產生對應於一格子圖(Trellis Diagram)的追溯(Trace Back)資訊作為旁資訊(Side Information);以及依據該旁資訊動態地選擇該些整形碼中之至少一整形碼,以對該原始資料進行資料整形。
  2. 如申請專利範圍第1項所述之方法,其中該格子圖的各級(Stage)中之每一級包含複數個子路徑;以及每一級之該些子路徑分別代表該些整形碼。
  3. 如申請專利範圍第2項所述之方法,其中依據該原始資料與該些整形碼進行該寫入最佳化運作以產生對應於該格子圖的追溯資訊作為該旁資訊之步驟另包含:尋找該格子圖中之一最佳化路徑,並產生該最佳化路徑中相對於各級之各個子路徑的子路徑追溯資訊作為該旁資訊之至少一部分,其中該最佳化路徑之終點係為該格子圖之最後一級的各個結果狀態中之一最佳狀態,且該旁資訊包含代表該最佳狀態之終點資訊。
  4. 如申請專利範圍第3項所述之方法,其中依據該原始資料與該些整形碼進行該寫入最佳化運作以產生對應於該格子圖的追溯資訊作為該旁資訊之步驟另包含:針對該格子圖的各級,進行對應於維特比(Viterbi)演算法之相加、比較、與選擇(Add Compare Select,ACS)運作,以產生該些級中之至少一級的各個結果狀態之追溯指示器(Trace Back Indicator)並尋找該格子圖之該最後一級的該些結果狀態中之該最佳狀態,其中該旁資訊中之該子路徑追溯資訊包含該些追溯指示器中之至少一部分。
  5. 如申請專利範圍第1項所述之方法,其中該原始資料包含分別對應於該格子圖的各級(Stage)之部分資料(Partial Data);以及依據該原始資料與該些整形碼進行該寫入最佳化運作以產生對應於該格子圖的追溯資訊作為該旁資訊之步驟另包含:針對對應於一特定級之特定部分資料,計算分別對應於至少兩個整形碼之至少兩個分支量度值(Branch Metric);以及累計該些級之複數個分支量度值中之至少一部分,以進行該寫入最佳化運作。
  6. 如申請專利範圍第1項所述之方法,其中依據該旁資訊動態地選擇該些整形碼中之該至少一整形碼以對該原始資料進行資料整形之步驟另包含:針對該原始資料中關於該快閃記憶體中之一記憶單元之最高有效位元進行資料整形,而非對該原始資料中關於該記憶單元之全部位元進行資料整形。
  7. 如申請專利範圍第1項所述之方法,其中於該格子圖的各級(Stage)當中,任一級內對應於特定狀態轉換之一子路徑以及另一級內對應於相同狀態轉換之子路徑均代表該些整形碼當中之同一整形碼。
  8. 如申請專利範圍第1項所述之方法,其中該原始資料包含分別對應於該格子圖的各級(Stage)之部分資料(Partial Data);以及依據該旁資訊動態地選擇該些整形碼中之該至少一整形碼以對該原始資料進行資料整形之步驟另包含:針對對應於一特定級之特定部分資料,依據該旁資訊中之至少一部分於該些整形碼中選出一特定整形碼,以進行對應於該特定部分資料之資料整形。
  9. 如申請專利範圍第1項所述之方法,其另包含有:將該旁資訊中之至少一部分或其代表資訊儲存於該快閃記憶體,以供該原始資料之重獲(Recovery)之用。
  10. 如申請專利範圍第9項所述之方法,其另包含有:於一讀取運作期間,自該快閃記憶體取得該旁資訊中之該至少一部分或其代表資訊,並據以重獲(Recover)該原始資料。
  11. 一種記憶裝置,其包含有:一快閃記憶體(Flash Memory),該快閃記憶體包含複數個區塊;以及一控制器,用來存取(Access)該快閃記憶體以及管理該複數個區塊,並且另針對該控制器本身所存取之資料來進行資料整形(Data Shaping),其中該控制器依據原始資料與複數個整形碼(Shaping Code)進行一寫入最佳化(Program Optimization)運作,以產生對應於一格子圖(Trellis Diagram)的追溯(Trace Back)資訊作為旁資訊(Side Information),以及該控制器包含有:至少一資料整形模組/資料重獲(Recovery)模組,用來依據該旁資訊動態地選擇該些整形碼中之至少一整形碼,以對該原始資料進行資料整形。
  12. 如申請專利範圍第11項所述之記憶裝置,其中該格子圖的各級(Stage)中之每一級包含複數個子路徑;以及每一級之該些子路徑分別代表該些整形碼。
  13. 如申請專利範圍第12項所述之記憶裝置,其中該控制器尋找該格子圖中之一最佳化路徑,並產生該最佳化路徑中相對於各級之各個子路徑的子路徑追溯資訊作為該旁資訊之至少一部分;以及該最佳化路徑之終點係為該格子圖之最後一級的各個結果狀態中之一最佳狀態,且該旁資訊包含代表該最佳狀態之終點資訊。
  14. 如申請專利範圍第13項所述之記憶裝置,其中針對該格子圖的各級,該控制器進行對應於維特比(Viterbi)演算法之相加、比較、與選擇(Add Compare Select,ACS)運作,以產生該些級中之至少一級的各個結果狀態之追溯指示器(Trace Back Indicator)並尋找該格子圖之該最後一級的該些結果狀態中之該最佳狀態;以及該旁資訊中之該子路徑追溯資訊包含該些追溯指示器中之至少一部分。
  15. 如申請專利範圍第11項所述之記憶裝置,其中該原始資料包含分別對應於該格子圖的各級(Stage)之部分資料(Partial Data);針對對應於一特定級之特定部分資料,該控制器計算分別對應於至少兩個整形碼之至少兩個分支量度值(Branch Metric);以及該控制器累計該些級之複數個分支量度值中之至少一部分,以進行該寫入最佳化運作。
  16. 如申請專利範圍第11項所述之記憶裝置,其中該控制器針對該原始資料中關於該快閃記憶體中之一記憶單元之最高有效位元進行資料整形,而非對該原始資料中關於該記憶單元之全部位元進行資料整形。
  17. 如申請專利範圍第11項所述之記憶裝置,其中於該格子圖的各級(Stage)當中,任一級內對應於特定狀態轉換之一子路徑以及另一級內對應於相同狀態轉換之子路徑均代表該些整形碼當中之同一整形碼。
  18. 如申請專利範圍第11項所述之記憶裝置,其中該原始資料包含分別對應於該格子圖的各級(Stage)之部分資料(Partial Data);以及針對對應於一特定級之特定部分資料,該資料整形模組/資料重獲模組依據該旁資訊中之至少一部分於該些整形碼中選出一特定整形碼,以進行對應於該特定部分資料之資料整形。
  19. 如申請專利範圍第11項所述之記憶裝置,其中該控制器將該旁資訊中之至少一部分或其代表資訊儲存於該快閃記憶體,以供該原始資料之重獲之用。
  20. 如申請專利範圍第19項所述之記憶裝置,其中於一讀取運作期間,該控制器自該快閃記憶體取得該旁資訊中之該至少一部分或其代表資訊,並且該資料整形模組/資料重獲模組據以重獲(Recover)該原始資料。
  21. 一種記憶裝置之控制器,該控制器係用來存取(Access)一快閃記憶體(Flash Memory),該快閃記憶體包含複數個區塊,該控制器包含有:一唯讀記憶體(Read Only Memory,ROM),用來儲存一程式碼;一微處理器,用來執行該程式碼以控制對該快閃記憶體之存取以及管理該複數個區塊,其中在該微處理器之控制下,該控制器針對該控制器本身所存取之資料來進行資料整形(Data Shaping),其中該控制器依據原始資料與複數個整形碼(Shaping Code)進行一寫入最佳化(Program Optimization)運作,以產生對應於一格子圖(Trellis Diagram)的追溯(Trace Back)資訊作為旁資訊(Side Information);以及至少一資料整形模組/資料重獲(Recovery)模組,用來依據該旁資訊動態地選擇該些整形碼中之至少一整形碼,以對該原始資料進行資料整形。
  22. 如申請專利範圍第21項所述之控制器,其中該格子圖的各級(Stage)中之每一級包含複數個子路徑;以及每一級之該些子路徑分別代表該些整形碼。
  23. 如申請專利範圍第22項所述之控制器,其中該控制器尋找該格子圖中之一最佳化路徑,並產生該最佳化路徑中相對於各級之各個子路徑的子路徑追溯資訊作為該旁資訊之至少一部分;以及該最佳化路徑之終點係為該格子圖之最後一級的各個結果狀態中之一最佳狀態,且該旁資訊包含代表該最佳狀態之終點資訊。
  24. 如申請專利範圍第23項所述之控制器,其中針對該格子圖的各級,該控制器進行對應於維特比(Viterbi)演算法之相加、比較、與選擇(Add Compare Select,ACS)運作,以產生該些級中之至少一級的各個結果狀態之追溯指示器(Trace Back Indicator)並尋找該格子圖之該最後一級的該些結果狀態中之該最佳狀態;以及該旁資訊中之該子路徑追溯資訊包含該些追溯指示器中之至少一部分。
  25. 如申請專利範圍第21項所述之控制器,其中該原始資料包含分別對應於該格子圖的各級(Stage)之部分資料(Partial Data);針對對應於一特定級之特定部分資料,該控制器計算分別對應於至少兩個整形碼之至少兩個分支量度值(Branch Metric);以及該控制器累計該些級之複數個分支量度值中之至少一部分,以進行該寫入最佳化運作。
  26. 如申請專利範圍第21項所述之控制器,其中該控制器針對該原始資料中關於該快閃記憶體中之一記憶單元之最高有效位元進行資料整形,而非對該原始資料中關於該記憶單元之全部位元進行資料整形。
  27. 如申請專利範圍第21項所述之控制器,其中於該格子圖的各級(Stage)當中,任一級內對應於特定狀態轉換之一子路徑以及另一級內對應於相同狀態轉換之子路徑均代表該些整形碼當中之同一整形碼。
  28. 如申請專利範圍第21項所述之控制器,其中該原始資料包含分別對應於該格子圖的各級(Stage)之部分資料(Partial Data);以及針對對應於一特定級之特定部分資料,該資料整形模組/資料重獲模組依據該旁資訊中之至少一部分於該些整形碼中選出一特定整形碼,以進行對應於該特定部分資料之資料整形。
  29. 如申請專利範圍第21項所述之控制器,其中該控制器將該旁資訊中之至少一部分或其代表資訊儲存於該快閃記憶體,以供該原始資料之重獲之用。
  30. 如申請專利範圍第29項所述之控制器,其中於一讀取運作期間,該控制器自該快閃記憶體取得該旁資訊中之該至少一部分或其代表資訊,並且該資料整形模組/資料重獲模組據以重獲(Recover)該原始資料。
TW99130478A 2010-09-09 2010-09-09 用來進行資料整形之方法以及其記憶裝置及控制器 TWI441181B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
TW99130478A TWI441181B (zh) 2010-09-09 2010-09-09 用來進行資料整形之方法以及其記憶裝置及控制器
US13/115,980 US8762823B2 (en) 2010-09-09 2011-05-25 Method for performing data shaping, and associated memory device and controller thereof
US14/197,175 US9032278B2 (en) 2010-09-09 2014-03-04 Method for performing data shaping, and associated memory device and controller thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
TW99130478A TWI441181B (zh) 2010-09-09 2010-09-09 用來進行資料整形之方法以及其記憶裝置及控制器

Publications (2)

Publication Number Publication Date
TW201212029A TW201212029A (en) 2012-03-16
TWI441181B true TWI441181B (zh) 2014-06-11

Family

ID=45807793

Family Applications (1)

Application Number Title Priority Date Filing Date
TW99130478A TWI441181B (zh) 2010-09-09 2010-09-09 用來進行資料整形之方法以及其記憶裝置及控制器

Country Status (2)

Country Link
US (2) US8762823B2 (zh)
TW (1) TWI441181B (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102067611B1 (ko) 2013-03-15 2020-01-20 삼성전자주식회사 메모리 컨트롤러의 동작 방법과 상기 메모리 컨트롤러를 포함하는 장치들
KR102149770B1 (ko) 2013-08-26 2020-08-31 삼성전자주식회사 메모리 컨트롤러 및 그것의 동작 방법
US9276609B2 (en) * 2013-11-16 2016-03-01 Seagate Technology Llc Systems and methods for soft decision generation in a solid state memory system
KR102247087B1 (ko) * 2014-07-08 2021-05-03 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법
KR102392821B1 (ko) * 2015-03-16 2022-05-02 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법
US10141072B2 (en) * 2015-06-11 2018-11-27 SK Hynix Inc. Efficient encoder based on modified RU algorithm
US11196594B2 (en) * 2019-02-28 2021-12-07 Nokia Solutions And Networks Oy Probabilistic signal shaping using multiple codebooks
KR20210013397A (ko) 2019-07-24 2021-02-04 삼성전자주식회사 스토리지 장치
KR20210062845A (ko) * 2019-11-22 2021-06-01 삼성전자주식회사 비휘발성 메모리 장치의 동작 제어 방법 및 이를 수행하기 위한 데이터 컨버터

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5027374A (en) * 1990-03-26 1991-06-25 Motorola, Inc. Bit serial Viterbi decoder add/compare/select array
US8112698B2 (en) * 2008-07-15 2012-02-07 Icomm Technologies Inc. High speed turbo codes decoder for 3G using pipelined SISO Log-MAP decoders architecture
US7730528B2 (en) * 2001-06-01 2010-06-01 Symantec Corporation Intelligent secure data manipulation apparatus and method
US20070266303A1 (en) * 2006-04-27 2007-11-15 Qualcomm Incorporated Viterbi decoding apparatus and techniques
KR101266594B1 (ko) 2006-08-05 2013-05-22 벤호프 게엠베하 엘엘씨 솔리드 스테이트 스토리지 소자 및 방법
US8176401B1 (en) * 2007-02-09 2012-05-08 Marvell International Ltd. Decoding methods and apparatus for fractional multidimensional trellis coded modulation systems
US7925936B1 (en) * 2007-07-13 2011-04-12 Anobit Technologies Ltd. Memory device with non-uniform programming levels
US8174905B2 (en) * 2007-09-19 2012-05-08 Anobit Technologies Ltd. Programming orders for reducing distortion in arrays of multi-level analog memory cells
US8499229B2 (en) 2007-11-21 2013-07-30 Micro Technology, Inc. Method and apparatus for reading data from flash memory
US8046542B2 (en) 2007-11-21 2011-10-25 Micron Technology, Inc. Fault-tolerant non-volatile integrated circuit memory
US8327245B2 (en) 2007-11-21 2012-12-04 Micron Technology, Inc. Memory controller supporting rate-compatible punctured codes
US8335977B2 (en) 2007-12-05 2012-12-18 Densbits Technologies Ltd. Flash memory apparatus and methods using a plurality of decoding stages including optional use of concatenated BCH codes and/or designation of “first below” cells
US8059457B2 (en) * 2008-03-18 2011-11-15 Anobit Technologies Ltd. Memory device with multiple-accuracy read commands
US7924613B1 (en) * 2008-08-05 2011-04-12 Anobit Technologies Ltd. Data storage in analog memory cells with protection against programming interruption
KR101563647B1 (ko) * 2009-02-24 2015-10-28 삼성전자주식회사 메모리 시스템 및 그것의 데이터 처리 방법
TWI455136B (zh) * 2010-07-01 2014-10-01 Silicon Motion Inc 用來進行資料整形之方法以及相關之記憶裝置及其控制器
US8595591B1 (en) * 2010-07-11 2013-11-26 Apple Inc. Interference-aware assignment of programming levels in analog memory cells

Also Published As

Publication number Publication date
US20140189222A1 (en) 2014-07-03
US8762823B2 (en) 2014-06-24
US9032278B2 (en) 2015-05-12
US20120066436A1 (en) 2012-03-15
TW201212029A (en) 2012-03-16

Similar Documents

Publication Publication Date Title
TWI441181B (zh) 用來進行資料整形之方法以及其記憶裝置及控制器
TWI455136B (zh) 用來進行資料整形之方法以及相關之記憶裝置及其控制器
TWI533304B (zh) 用於儲存資料於具有跨頁區段、多頁編碼及每頁編碼之多位準單元快閃記憶體器件中之方法及裝置
US7900118B2 (en) Flash memory system and method for controlling the same
TWI410979B (zh) 快閃記憶體控制器、其錯誤更正碼控制器及其方法和系統
US9583217B2 (en) Decoding method, memory storage device and memory control circuit unit
TWI474330B (zh) 用來進行記憶體存取管理之方法以及記憶裝置及其控制器
JP5658128B2 (ja) Nandフラッシュ・メモリにおける確率論的多層エラー訂正のためのシステム、方法、およびコンピュータ・プログラム
JP2010237822A (ja) メモリコントローラおよび半導体記憶装置
JP5976979B2 (ja) フラッシュメモリの信頼性および寿命を改善するシステムおよび方法
US11550663B2 (en) Changing of error correction codes based on the wear of a memory sub-system
TWI474329B (zh) 提昇錯誤更正能力之方法以及記憶裝置及控制器
TWI460733B (zh) 具有低密度奇偶校驗碼解碼能力的記憶體控制裝置及方法
US9304851B2 (en) Decoding with log likelihood ratios stored in a controller
US10042565B2 (en) All-flash-array primary storage and caching appliances implementing triple-level cell (TLC)-NAND semiconductor microchips
US11119697B2 (en) Read voltage management based on write-to-read time difference
TW201320090A (zh) 基於匹配位元型樣之資料修正
KR20160075001A (ko) 플래시 메모리 시스템 동작 방법
US10713116B2 (en) Solid state device implementing dynamic polar encoding
US9239751B1 (en) Compressing data from multiple reads for error control management in memory systems
US9030902B2 (en) Programming memory cells
CN102455975B (zh) 用来进行数据整形的方法以及其记忆装置及控制器
CN117409845A (zh) 分组管理方法、存储器存储装置及存储器控制器
CN117636982A (zh) 读取电压管理方法、存储器存储装置及存储器控制器
CN102455948A (zh) 用来进行数据整形的方法以及相关的记忆装置及其控制器