TWI508082B - 解碼方法、記憶體儲存裝置與記憶體控制電路單元 - Google Patents
解碼方法、記憶體儲存裝置與記憶體控制電路單元 Download PDFInfo
- Publication number
- TWI508082B TWI508082B TW102135387A TW102135387A TWI508082B TW I508082 B TWI508082 B TW I508082B TW 102135387 A TW102135387 A TW 102135387A TW 102135387 A TW102135387 A TW 102135387A TW I508082 B TWI508082 B TW I508082B
- Authority
- TW
- Taiwan
- Prior art keywords
- decoding
- voltage
- memory
- read voltage
- read
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Read Only Memory (AREA)
Description
本發明是有關於一種解碼方法,且特別是有關於一種可複寫式非揮發性記憶體模組的解碼方法、記憶體儲存裝置與記憶體控制電路單元。
數位相機、行動電話與MP3播放器在這幾年來的成長十分迅速,使得消費者對儲存媒體的需求也急速增加。由於可複寫式非揮發性記憶體模組(例如,快閃記憶體)具有資料非揮發性、省電、體積小,以及無機械結構等特性,所以非常適合內建於上述所舉例的各種可攜式多媒體裝置中。
一般來說,儲存在可複寫式非揮發性記憶體模組中的資料會加入一些錯誤更正碼(error correcting code,ECC)。以往錯誤更正碼多使用代數解碼演算法,如(BCH code),而目前機率解碼演算法,如低密度奇偶檢查碼(low density parity code,LDPC),則逐漸成熟。低密度奇偶檢查碼是使用一個稀疏矩陣(sparse matrix)來編碼與解碼。這個稀疏矩陣的零空間(null space)便包含了所有的有效碼字(valid codewrod)。這些有效碼字之間的距離越大,則
能夠更正的位元個數越多。然而,這些有效碼字之間的距離並不是固定的,因此,所能更正的位元個數也不是固定的。舉例來說,在一個碼字(codeword)中有4個位元發生了錯誤,並且對應的低密度奇偶檢查碼可以更正這些錯誤;但在同一個碼字中,若有另外3個位元發生了錯誤,則對應的低密度奇偶檢查碼卻可能無法更正這些錯誤。另外,使用不同的稀疏矩陣,低密度奇偶檢查碼的錯誤更正能力也會不相同。
圖1是低密度奇偶檢查碼的錯誤率曲線圖。
請參照圖1,橫軸是原錯誤位元率(raw bit error rate,RBER),所指的是在解碼前資料發生錯誤的比率;縱軸是不可更正的錯誤位元率(uncorrectable bit error rate,UBER),所指的是在解碼以後發生錯誤的比率。曲線180代表的是第一矩陣,而曲線190代表的是第二矩陣。第一矩陣與第二矩陣有相同的大小,即用這兩個矩陣所產生的碼字有相同的碼率(code rate)。然而,第一矩陣與第二矩陣中的元素並不相同。在錯誤地面區(error floor region)內曲線180有較低的UBER,但在瀑布區(waterfall region)內曲線190有較低的UBER。換句話說,曲線180與曲線190之間存在著權衡。因此,如何在相同碼率的條件下提升更正錯誤的能力,為此領域技術人員所關心的議題。
本發明提供一種解碼方法、記憶體儲存裝置與記憶體控
制電路單元,可以提升更正錯誤的能力。
本發明一範例實施例提出一種解碼方法,用於可複寫式非揮發性記憶體模組,其包括多個記憶胞。此解碼方法包括:根據至少一個第一讀取電壓讀取多個第一記憶胞,以取得每一個第一記憶胞的至少一個第一驗證位元;根據第一驗證位元來執行包含一機率解碼演算法的第一解碼程序以產生多個第一解碼位元,並利用第一解碼位元判斷是否解碼成功;以及若解碼失敗,根據至少一個第二讀取電壓讀取第一記憶胞以取得每一個第一記憶胞的至少一個第二驗證位元,根據第二驗證位元來執行第一解碼程序以產生多個第二解碼位元。其中第二讀取電壓不同於第一讀取電壓,並且第二讀取電壓的個數相同於第一讀取電壓的個數。
在一範例實施例中,上述的解碼方法更包括:根據第一讀取電壓的其中之一與一預設讀取電壓之間的差取得一偏移值;利用偏移值調整預設讀取電壓以取得第二讀取電壓。
在一範例實施例中,第一讀取電壓的個數為1,並且預設讀取電壓是介於第一讀取電壓與第二讀取電壓之間。
在一範例實施例中,上述取得偏移值的步驟包括:將第一讀取電壓的其中之一與預設讀取電壓之間的差乘上一乘數以取得偏移值。
在一範例實施例中,上述的解碼方法更包括:利用第二解碼位元判斷是否解碼成功;若利用第二解碼位元判斷解碼失敗,判斷重新取得第二讀取電壓的次數是否超過一預設次數;若
重新取得第二讀取電壓的次數未超過預設次數,重新取得第二讀取電壓,根據重新取得的第二讀取電壓讀取第一記憶胞以重新取得第二驗證位元,根據重新取得的第二驗證位元執行第一解碼程序;以及若重新取得第二讀取電壓的次數超過預設次數,停止重新取得第二讀取電壓。
在一範例實施例中,上述第一讀取電壓的個數與第二讀取電壓的個數為1。解碼方法更包括:若重新取得第二讀取電壓的次數超過預設次數,根據多個第三讀取電壓讀取第一記憶胞,以取得每一個第一記憶胞的多個第三驗證位元;設定第三讀取電壓的其中之一為第一正負號讀取電壓;根據第一正負號讀取電壓與每一個第一記憶胞的第三驗證位元取得每一個第一記憶胞的一解碼初始值;對解碼初始值執行第二解碼程序以取得多個第三解碼位元;利用第三解碼位元判斷是否解碼成功;若利用第三解碼位元判斷解碼失敗,設定第三讀取電壓的其中之另一為第二正負號讀取電壓,根據第二正負號讀取電壓與第三驗證位元重新取得解碼初始值,並且根據重新取得的解碼初始值執行第二解碼程序。
在一範例實施例中,上述的第一正負號讀取電壓是位於第三讀取電壓的中間,並且第二正負號讀取電壓是位於第一正負號讀取電壓的一側。解碼方法更包括:若利用第二正負號讀取電壓所執行的第二解碼程序並沒有解碼成功,設定第三讀取電壓的其中之更另一為第三正負號讀取電壓,根據第三正負號讀取電壓與第三驗證位元重新取得解碼初始值,並且根據重新取得的解碼
初始值執行第二解碼程序。其中第三正負號讀取電壓位於第一正負號讀取電壓的另一側。
在一範例實施例中,上述的解碼方法更包括:對於不同的正負號讀取電壓,將第三驗證位元輸入至不同的查找表,以重新取得解碼初始值。
在一範例實施例中,上述的機率解碼演算法為低密度奇耦檢查碼。
在一範例實施例中,上述的利用該些第一解碼位元判斷是否解碼成功的步驟包括:根據該些第一解碼位元產生多個校驗子;根據校驗子判斷第一解碼位元是否組成有效的碼字;若第一解碼位元組成有效的碼字,判斷解碼成功。
本發明一範例實施例提出一種記憶體儲存裝置,包括連接介面單元、可複寫式非揮發性記憶體模組與記憶體控制電路單元。連接介面單元是用以耦接至一主機系統。記憶體控制電路單元是耦接至連接介面單元與可複寫式非揮發性記憶體模組,用以根據至少一個第一讀取電壓讀取多個第一記憶胞,以取得每一個第一記憶胞的至少一個第一驗證位元。記憶體控制電路單元用以根據第一驗證位元來執行包含一機率解碼演算法的第一解碼程序以產生多個第一解碼位元,並利用第一解碼位元判斷是否解碼成功。若解碼失敗,記憶體控制電路單元用以根據至少一個第二讀取電壓讀取第一記憶胞以取得每一個第一記憶胞的至少一個第二驗證位元,並且根據第二驗證位元來執行第一解碼程序以產生多
個第二解碼位元。其中第二讀取電壓不同於第一讀取電壓,並且第二讀取電壓的個數相同於第一讀取電壓的個數。
在一範例實施例中,上述的記憶體控制電路單元更用以根據第一讀取電壓的其中之一與一預設讀取電壓之間的差取得一偏移值,並且利用偏移值調整預設讀取電壓以取得第二讀取電壓。
在一範例實施例中,上述的記憶體控制電路單元將第一讀取電壓的其中之一與預設讀取電壓之間的差乘上一乘數以取得偏移值。
在一範例實施例中,上述的記憶體控制電路單元更用以利用第二解碼位元判斷是否解碼成功。若利用第二解碼位元判斷解碼失敗,記憶體控制電路單元用以判斷重新取得第二讀取電壓的次數是否超過一預設次數。若重新取得第二讀取電壓的次數未超過預設次數,記憶體控制電路單元用以重新取得第二讀取電壓,根據重新取得的第二讀取電壓讀取第一記憶胞以重新取得第二驗證位元,並且根據重新取得的第二驗證位元執行第一解碼程序。若重新取得第二讀取電壓的次數超過預設次數,記憶體控制電路單元用以停止重新取得第二讀取電壓。
在一範例實施例中,上述的第一讀取電壓的個數與第二讀取電壓的個數為1。若重新取得第二讀取電壓的次數超過預設次數,記憶體控制電路單元用以根據多個第三讀取電壓讀取第一記憶胞,以取得每一個第一記憶胞的多個第三驗證位元。記憶體控制電路單元更用以設定第三讀取電壓的其中之一為第一正負號讀
取電壓,並且根據第一正負號讀取電壓與每一個記憶胞的第三驗證位元取得每一個第一記憶胞的一解碼初始值。記憶體控制電路單元更用以對解碼初始值執行第二解碼程序以取得多個第三解碼位元,並且利用第三解碼位元判斷是否解碼成功。若利用第三解碼位元判斷解碼失敗,記憶體控制電路單元用以設定第三讀取電壓的其中之另一為第二正負號讀取電壓,根據第二正負號讀取電壓與第三驗證位元重新取得解碼初始值,並且根據重新取得的解碼初始值執行第二解碼程序。
在一範例實施例中,上述的第一正負號讀取電壓是位於第三讀取電壓的中間,並且第二正負號讀取電壓是位於第一正負號讀取電壓的一側。若利用第二正負號讀取電壓所執行的第二解碼程序並沒有解碼成功,記憶體控制電路單元用以設定第三讀取電壓的其中之更另一為第三正負號讀取電壓,根據第三正負號讀取電壓與第三驗證位元重新取得解碼初始值,並且根據重新取得的解碼初始值執行第二解碼程序。其中第三正負號讀取電壓位於第一正負號讀取電壓的另一側。
在一範例實施例中,記憶體控制電路單元判斷是否解碼成功的操作包括:記憶體控制電路單元根據第一解碼位元產生多個校驗子並且根據校驗子判斷第一解碼位元是否組成有效的碼字。若第一解碼位元組成有效的碼字,記憶體控制電路單元判斷解碼成功。
本發明一範例實施例提出一種記憶體控制電路單元,用
於控制可複寫式非揮發性記憶體模組。此記憶體控制電路單元包括主機介面、記憶體介面、錯誤檢查與校正電路與記憶體管理電路。主機介面是用以耦接至一主機系統。記憶體介面是用以耦接至可複寫式非揮發性記憶體模組。記憶體管理電路是耦接至主機介面與記憶體介面,用以根據至少一個第一讀取電壓讀取記憶胞中的多個第一記憶胞,以取得每一個第一記憶胞的至少一個第一驗證位元。記憶體管理電路用以根據至少一個第一讀取電壓讀取多個第一記憶胞,以取得每一個第一記憶胞的至少一個第一驗證位元。錯誤檢查與校正電路以根據第一驗證位元來執行包含一機率解碼演算法的第一解碼程序以產生多個第一解碼位元,並利用第一解碼位元判斷是否解碼成功。若解碼失敗,記憶體管理電路用以根據至少一個第二讀取電壓讀取第一記憶胞以取得每一個第一記憶胞的至少一個第二驗證位元,並且錯誤檢查與校正電路用以根據第二驗證位元來執行第一解碼程序以產生多個第二解碼位元。其中第二讀取電壓不同於第一讀取電壓,並且第二讀取電壓的個數相同於第一讀取電壓的個數。
在一範例實施例中,上述的記憶體管理電路更用以根據第一讀取電壓的其中之一與一預設讀取電壓之間的差取得一偏移值,並且利用偏移值調整預設讀取電壓以取得第二讀取電壓。
在一範例實施例中,上述的記憶體管理電路將第一讀取電壓的其中之一與預設讀取電壓之間的差乘上一乘數以取得偏移值。
在一範例實施例中,上述的記憶體管理電路更用以利用第二解碼位元判斷是否解碼成功。若利用第二解碼位元判斷解碼失敗,記憶體管理電路用以判斷重新取得第二讀取電壓的次數是否超過一預設次數。若重新取得第二讀取電壓的次數未超過預設次數,記憶體管理電路用以重新取得第二讀取電壓,並且根據重新取得的第二讀取電壓讀取第一記憶胞以重新取得第二驗證位元。錯誤檢查與校正電路用以根據重新取得的第二驗證位元執行第一解碼程序。若重新取得第二讀取電壓的次數超過預設次數,記憶體管理電路用以停止重新取得第二讀取電壓。
在一範例實施例中,上述的第一讀取電壓的個數與第二讀取電壓的個數為1。若重新取得第二讀取電壓的次數超過預設次數,記憶體管理電路用以根據多個第三讀取電壓讀取第一記憶胞,以取得每一個第一記憶胞的多個第三驗證位元。記憶體管理電路更用以設定第三讀取電壓的其中之一為第一正負號讀取電壓,並且根據第一正負號讀取電壓與每一個記憶胞的第三驗證位元取得每一個第一記憶胞的一解碼初始值。錯誤檢查與校正電路更用以對解碼初始值執行第二解碼程序以取得多個第三解碼位元,並且利用第三解碼位元判斷是否解碼成功。若利用第三解碼位元判斷解碼失敗,記憶體管理電路用以設定第三讀取電壓的其中之另一為第二正負號讀取電壓,並且根據第二正負號讀取電壓與第三驗證位元重新取得解碼初始值。錯誤檢查與校正電路用以根據重新取得的解碼初始值執行第二解碼程序。
在一範例實施例中,上述的第一正負號讀取電壓是位於第三讀取電壓的中間,並且第二正負號讀取電壓是位於第一正負號讀取電壓的一側。若利用第二正負號讀取電壓所執行的第二解碼程序並沒有解碼成功,記憶體管理電路用以設定第三讀取電壓的其中之更另一為第三正負號讀取電壓,並且根據第三正負號讀取電壓與第三驗證位元重新取得解碼初始值。錯誤檢查與校正電路用以根據重新取得的解碼初始值執行第二解碼程序。第三正負號讀取電壓位於第一正負號讀取電壓的另一側。
在一範例實施例中,上述的記憶體管理電路更用以對於不同的正負號讀取電壓,將第三驗證位元輸入至不同的查找表以重新取得解碼初始值。
在一範例實施例中,錯誤檢查與校正電路判斷是否解碼成功的操作包括:錯誤檢查與校正電路根據第一解碼位元產生多個校驗子並且根據校驗子判斷第一解碼位元是否組成有效的碼字。若第一解碼位元組成有效的碼字,錯誤檢查與校正電路判斷解碼成功。
基於上述,本發明範例實施例提出的解碼方法、記憶體儲存裝置與記憶體控制電路單元,可以重新取得讀取電壓或是重新設定正負號讀取電壓,進而重新解碼。藉此,可以提升更正錯誤的能力。
為讓本發明的上述特徵和優點能更明顯易懂,下文特舉實施例,並配合所附圖式作詳細說明如下。
180、190‧‧‧曲線
1000‧‧‧主機系統
1100‧‧‧電腦
1102‧‧‧微處理器
1104‧‧‧隨機存取記憶體
1106‧‧‧輸入/輸出裝置
1108‧‧‧系統匯流排
1110‧‧‧資料傳輸介面
1202‧‧‧滑鼠
1204‧‧‧鍵盤
1206‧‧‧顯示器
1208‧‧‧印表機
1212‧‧‧隨身碟
1214‧‧‧記憶卡
1216‧‧‧固態硬碟
1310‧‧‧數位相機
1312‧‧‧SD卡
1314‧‧‧MMC卡
1316‧‧‧記憶棒
1318‧‧‧CF卡
1320‧‧‧嵌入式儲存裝置
100‧‧‧記憶體儲存裝置
102‧‧‧連接介面單元
104‧‧‧記憶體控制電路單元
106‧‧‧可複寫式非揮發性記憶體模組
2202‧‧‧記憶胞陣列
2204‧‧‧字元線控制電路
2206‧‧‧位元線控制電路
2208‧‧‧行解碼器
2210‧‧‧資料輸入/輸出緩衝器
2212‧‧‧控制電路
702‧‧‧記憶胞
704‧‧‧位元線
706‧‧‧字元線
708‧‧‧源極線
712‧‧‧選擇閘汲極電晶體
714‧‧‧選擇閘源極電晶體
VA、VB、VC、VD、VE、VF、VG‧‧‧讀取電壓
400(0)~400(N)‧‧‧實體抹除單元
202‧‧‧記憶體管理電路
204‧‧‧主機介面
206‧‧‧記憶體介面
208‧‧‧錯誤檢查與校正電路
210‧‧‧緩衝記憶體
212‧‧‧電源管理電路
1410、1420、1510、1520‧‧‧分佈
1430、1501~1506‧‧‧區域
1440~1444、V1
~V5
、V’1
~V’5
‧‧‧讀取電壓
b1
~b5
‧‧‧驗證位元
S1601~S1611、S1701~S1706‧‧‧步驟
圖1是低密度奇偶檢查碼的錯誤率曲線圖。
圖2是根據一範例實施例所繪示的主機系統與記憶體儲存裝置。
圖3是根據一範例實施例所繪示的電腦、輸入/輸出裝置與記憶體儲存裝置的示意圖。
圖4是根據一範例實施例所繪示的主機系統與記憶體儲存裝置的示意圖。
圖5是繪示根據第一範例實施例所繪示之記憶體儲存裝置的概要方塊圖。
圖6是根據一範例實施例所繪示的可複寫式非揮發性記憶體模組的概要方塊圖。
圖7是根據一範例實施例所繪示的記憶胞陣列的示意圖。
圖8是根據一範例實施例所繪示儲存於記憶胞陣列中的寫入資料所對應的閘極電壓的統計分配圖。
圖9是根據一範例實施例所繪示之程式化記憶胞的示意圖。
圖10是根據一範例實施例所繪示的從記憶胞中讀取資料的示意圖。
圖11是根據另一範例實施例所繪示的從記憶胞中讀取資料的示意圖。
圖12是根據本發明範例實施例所繪示之管理可複寫式非揮發性記憶體模組的示意圖。
圖13是根據一範例實施例所繪示之記憶體控制電路單元的概要方塊圖。
圖14是根據一範例實施例繪示硬位元模式解碼的示意圖。
圖15A與圖15B是根據一範例實施例繪示軟位元模式解碼的示意圖。
圖16是根據一範例實施例繪示執行硬位元模式解碼與軟位元模式解碼的流程圖。
圖17是根據一範例實施例繪示一解碼方法的流程圖。
一般而言,記憶體儲存裝置(亦稱,記憶體儲存系統)包括可複寫式非揮發性記憶體模組與控制器(亦稱,控制電路)。通常記憶體儲存裝置是與主機系統一起使用,以使主機系統可將資料寫入至記憶體儲存裝置或從記憶體儲存裝置中讀取資料。
圖2是根據一範例實施例所繪示的主機系統與記憶體儲存裝置。圖3是根據一範例實施例所繪示的電腦、輸入/輸出裝置與記憶體儲存裝置的示意圖。
請參照圖2,主機系統1000一般包括電腦1100與輸入/輸出(input/output,I/O)裝置1106。電腦1100包括微處理器1102、隨機存取記憶體(random access memory,RAM)1104、系統匯流排
1108與資料傳輸介面1110。輸入/輸出裝置1106包括如圖3的滑鼠1202、鍵盤1204、顯示器1206與印表機1208。必須瞭解的是,圖3所示的裝置非限制輸入/輸出裝置1106,輸入/輸出裝置1106可更包括其他裝置。
在本發明實施例中,記憶體儲存裝置100是透過資料傳輸介面1110與主機系統1000的其他元件耦接。藉由微處理器1102、隨機存取記憶體1104與輸入/輸出裝置1106的運作可將資料寫入至記憶體儲存裝置100或從記憶體儲存裝置100中讀取資料。例如,記憶體儲存裝置100可以是如圖3所示的隨身碟1212、記憶卡1214或固態硬碟(Solid State Drive,SSD)1216等的可複寫式非揮發性記憶體儲存裝置。
圖4是根據一範例實施例所繪示的主機系統與記憶體儲存裝置的示意圖。
一般而言,主機系統1000為可實質地與記憶體儲存裝置100配合以儲存資料的任意系統。雖然在本範例實施例中,主機系統1000是以電腦系統來作說明,然而,在本發明另一範例實施例中主機系統1000可以是數位相機、攝影機、通信裝置、音訊播放器或視訊播放器等系統。例如,在主機系統為數位相機(攝影機)1310時,可複寫式非揮發性記憶體儲存裝置則為其所使用的SD卡1312、MMC卡1314、記憶棒(memory stick)1316、CF卡1318或嵌入式儲存裝置1320(如圖4所示)。嵌入式儲存裝置1320包括嵌入式多媒體卡(Embedded MMC,eMMC)。值得一提的是,嵌入
式多媒體卡是直接耦接於主機系統的基板上。
圖5是繪示圖2所示的記憶體儲存裝置的概要方塊圖。
請參照圖5,記憶體儲存裝置100包括連接介面單元102、記憶體控制電路單元104與可複寫式非揮發性記憶體模組106。
在本範例實施例中,連接介面單元102是相容於序列先進附件(Serial Advanced Technology Attachment,SATA)標準。然而,必須瞭解的是,本發明不限於此,連接介面單元102亦可以是符合並列先進附件(Parallel Advanced Technology Attachment,PATA)標準、電氣和電子工程師協會(Institute of Electrical and Electronic Engineers,IEEE)1394標準、高速周邊零件連接介面(Peripheral Component Interconnect Express,PCI Express)標準、通用序列匯流排(Universal Serial Bus,USB)標準、安全數位(Secure Digital,SD)介面標準、超高速一代(Ultra High Speed-I,UHS-I)介面標準、超高速二代(Ultra High Speed-II,UHS-II)介面標準、記憶棒(Memory Stick,MS)介面標準、多媒體儲存卡(Multi Media Card,MMC)介面標準、崁入式多媒體儲存卡(Embedded Multimedia Card,eMMC)介面標準、通用快閃記憶體(Universal Flash Storage,UFS)介面標準、小型快閃(Compact Flash,CF)介面標準、整合式驅動電子介面(Integrated Device Electronics,IDE)標準或其他適合的標準。連接介面單元102可與記憶體控制電路單元104封裝在一個晶片中,或者連接介面單元102是佈設於一
包含記憶體控制電路單元104之晶片外。
記憶體控制電路單元104用以執行以硬體型式或韌體型式實作的多個邏輯閘或控制指令,並且根據主機系統1000的指令在可複寫式非揮發性記憶體模組106中進行資料的寫入、讀取與抹除等運作。
可複寫式非揮發性記憶體模組106是耦接至記憶體控制電路單元104,並且用以儲存主機系統1000所寫入之資料。可複寫式非揮發性記憶體模組106可以是單階記憶胞(Single Level Cell,SLC)NAND型快閃記憶體模組、多階記憶胞(Multi Level Cell,MLC)NAND型快閃記憶體模組(即,一個記憶胞中可儲存2個位元資料的快閃記憶體模組)、複數階記憶胞(Trinary Level Cell,TLC)NAND型快閃記憶體模組(即,一個記憶胞中可儲存3個位元資料的快閃記憶體模組)、其他快閃記憶體模組或其他具有相同特性的記憶體模組。
圖6是根據一範例實施例所繪示的可複寫式非揮發性記憶體模組的概要方塊圖。圖7是根據一範例實施例所繪示的記憶胞陣列的示意圖。
請參照圖6,可複寫式非揮發性記憶體模組106包括記憶胞陣列2202、字元線控制電路2204、位元線控制電路2206、行解碼器(column decoder)2208、資料輸入/輸出緩衝器2210與控制電路2212。
記憶胞陣列2202包括用以儲存資料的多個記憶胞702、
多個選擇閘汲極(select gate drain,SGD)電晶體712與多個選擇閘源極(select gate source,SGS)電晶體714、以及連接此些記憶胞的多條位元線704、多條字元線706、與共用源極線708(如圖7所示)。記憶胞702是以陣列方式(或立體堆疊的方式)配置在位元線704與字元線706的交叉點上。當從記憶體控制電路單元104接收到寫入指令或讀取指令時,控制電路2212會控制字元線控制電路2204、位元線控制電路2206、行解碼器2208、資料輸入/輸出緩衝器2210來寫入資料至記憶胞陣列2202或從記憶胞陣列2202中讀取資料,其中字元線控制電路2204用以控制施予至字元線706的電壓,位元線控制電路2206用以控制施予至位元線704的電壓,行解碼器2208依據指令中的列位址以選擇對應的位元線,並且資料輸入/輸出緩衝器2210用以暫存資料。
可複寫式非揮發性記憶體模組106中的記憶胞是以臨界電壓的改變來儲存多位元(bits)。具體來說,每一個記憶胞的控制閘極(control gate)與通道之間有一個電荷捕捉層。透過施予一寫入電壓至控制閘極,可以改變電荷補捉層的電子量,因而改變了記憶胞的臨界電壓。此改變臨界電壓的程序亦稱為”把資料寫入至記憶胞”或”程式化記憶胞”。隨著臨界電壓的改變,記憶胞陣列2202的每一記憶胞具有多個儲存狀態。並且透過讀取電壓可以判斷記憶胞是屬於哪一個儲存狀態,藉此取得記憶胞所儲存的位元。
圖8是根據一範例實施例所繪示儲存於記憶胞陣列中的寫入資料所對應的閘極電壓的統計分配圖。
請參照圖8,以MLC NAND型快閃記憶體為例,隨著不同的臨界電壓,每一記憶胞具有4種儲存狀態,並且此些儲存狀態分別地代表"11"、"10"、"00"與"01"等位元。換言之,每一個儲存狀態包括最低有效位元(Least Significant Bit,LSB)以及最高有效位元(Most Significant Bit,MSB)。在本範例實施例中,儲存狀態(即,"11"、"10"、"00"與"01")中從左側算起之第1個位元為LSB,而從左側算起之第2個位元為MSB。因此,在此範例實施例中,每一記憶胞可儲存2個位元。必須瞭解的是,圖8所繪示的臨界電壓及其儲存狀態的對應僅為一個範例。在本發明另一範例實施例中,臨界電壓與儲存狀態的對應亦可是隨著臨界電壓越大而以"11"、"10"、"01"與"00"排列,或是其他排列。此外,在另一範例時實例中,亦可定義從左側算起之第1個位元為MSB,而從左側算起之第2個位元為LSB。
圖9是根據一範例實施例所繪示之程式化記憶胞的示意圖。
請參照圖9,在本範例實施例中,記憶胞的程式化是透過脈衝寫入/驗證臨界電壓方法來完成。具體來說,欲將資料寫入至記憶胞時,記憶體控制電路單元104會設定初始寫入電壓以及寫入脈衝時間,並且指示可複寫式非揮發性記憶體模組106的控制電路2212使用所設定的初始寫入電壓以及寫入脈衝時間來程式化記憶胞,以進行資料的寫入。之後,記憶體控制電路單元104會施加驗證電壓至控制閘極來判斷記憶胞是否導通,進而判斷記憶
胞是否已處於正確的儲存狀態(具有正確的臨界電壓)。倘若記憶胞未被程式化至正確的儲存狀態時,記憶體控制電路單元104指示控制電路2212以目前施予的寫入電壓加上一增量階躍脈衝程式(Incremental-step-pulse programming,ISPP)調整值作為新的寫入電壓並且依據新的寫入電壓與寫入脈衝時間再次來程式化記憶胞。反之,倘若記憶胞已被程式化至正確的儲存狀態時,則表示資料已被正確地寫入至記憶胞。例如,初始寫入電壓會被設定為16伏特(Voltage,V),寫入脈衝時間會被設定為18微秒(microseconds,μs)並且增量階躍脈衝程式調整值被設定為0.6V,但本發明不限於此。
圖10是根據一範例實施例所繪示的從記憶胞中讀取資料的示意圖,其是以MLC NAND型快閃記憶體為例。
請參照圖10,記憶胞陣列2202之記憶胞的讀取運作是藉由施予讀取電壓於控制閘極,藉由記憶胞的導通狀態,來識別記憶胞儲存之資料。驗證位元(VA)是用以指示施予讀取電壓VA時記憶胞是否為導通;驗證位元(VC)是用以指示施予讀取電壓VC時記憶胞是否為導通;驗證位元(VB)是用以指示施予讀取電壓VB時記憶胞是否為導通。在此假設驗證位元是”1”時表示對應的記憶胞導通,而驗證位元是”0”時表示對應的記憶胞沒有導通。在讀取記憶胞的運作中,字元線控制電路2204會先施加讀取電壓VA於控制閘極並且依據記憶胞是否導通和對應的方程式(1)來決定LSB。
LSB=(VA)Lower_pre1 (1)
其中(VA)Lower_pre1表示驗證位元(VA)。
例如,當讀取電壓VA小於記憶胞的臨界電壓時,記憶胞不會導通並且驗證位元(VA)為’0’。當讀取電壓VA大於記憶胞的閘極電壓時,記憶胞會導通並且驗證位元(VA)為’1’。
接著,字元線控制電路2204會分別地將讀取電壓VB與讀取電壓VC施予控制閘極並且依據記憶胞是否導通和對應的方程式(2)來決定MSB。
MSB=((VB)Upper_pre2)xor(~(VC)Upper_pre1) (2)
其中(VC)Upper_pre1表示驗證位元(VC),並且(VB)Upper_pre2表示驗證位元(VB),其中符號”~”代表反相。
因此,依照方程式(2),當讀取電壓VC與讀取電壓VB皆小於記憶胞的臨界電壓時,驗證位元(VC)為”0”並且驗證位元(VB)為”0”,此時MSB會被識別為”1”。當讀取電壓VC大於記憶胞的臨界電壓且讀取電壓VB小於記憶胞的臨界電壓時,驗證位元(VC)為”1”,並且驗證位元(VB)為”0”,此時MSB會被識別為”0”。當讀取電壓VC與讀取電壓VB皆大於記憶胞的臨界電壓時,驗證位元(VC)與驗證位元(VB)為”1”,此時MSB會被識別為”1”。
必須瞭解的是,儘管本發明是以MLC NAND型快閃記憶體來作說明。然而,本發明不限於此,其他多層記憶胞NAND型快閃記憶體亦可依據上述原理進行資料的讀取。此外,在另一範例實施例中也可以用不同於方程式(1)與(2)的算式來計算出MSB
與LSB,本發明並不限制如何計算MSB與LSB。
圖11是根據另一範例實施例所繪示的從記憶胞中讀取資料的示意圖。
請參照圖11,以TLC NAND型快閃記憶體為例,每一個儲存狀態包括左側算起之第1個位元的最低有效位元LSB、從左側算起之第2個位元的中間有效位元(Center Significant Bit,CSB)以及從左側算起之第3個位元的最高有效位元MSB。在此範例中,依照不同的臨界電壓,記憶胞具有8種儲存狀態(即,"111"、"110"、"100"、"101"、"001"、"000"、"010"與"011")。藉由施加讀取電壓VA~VG於控制閘極,可以識別記憶胞所儲存的位元。
圖12是根據本發明範例實施例所繪示之管理可複寫式非揮發性記憶體模組的示意圖。
請參照圖12,可複寫式非揮發性記憶體模組106的記憶胞702會構成多個實體程式化單元,並且此些實體程式化單元會構成多個實體抹除單元400(0)~400(N)。具體來說,同一個字元線上的記憶胞會組成一或多個實體程式化單元。若每一個記憶胞可儲存2個以上的位元,則同一個字元線上的實體程式化單元可被分類為下實體程式化單元與上實體程式化單元。例如,每一記憶胞的LSB是屬於下實體程式化單元,並且每一記憶胞的MSB是屬於上實體程式化單元。一般來說,下實體程式化單元的寫入速度會大於上實體程式化單元的寫入速度。在此範例實施例中,實體程式化單元為程式化的最小單元。即,實體程式化單元為寫入資
料的最小單元。例如,實體程式化單元為實體頁面或是實體扇(sector)。若實體程式化單元為實體頁面,則每一個實體程式化單元通常包括資料位元區與冗餘位元區。資料位元區包含多個實體扇,用以儲存使用者的資料,而冗餘位元區用以儲存系統的資料(例如,錯誤更正碼)。在本範例實施例中,每一個資料位元區包含32個實體扇,且一個實體扇的大小為512位元組(byte,B)。然而,在其他範例實施例中,資料位元區中也可包含8個、16個或數目更多或更少的實體扇,本發明並不限制實體扇的大小以及個數。另一方面,實體抹除單元為抹除之最小單位。亦即,每一實體抹除單元含有最小數目之一併被抹除之記憶胞。例如,實體抹除單元為實體區塊。
圖13是根據一範例實施例所繪示之記憶體控制電路單元的概要方塊圖。必須瞭解的是,圖13所示之記憶體控制電路單元的結構僅為一範例,本發明不以此為限。
請參照圖13,記憶體控制電路單元104包括記憶體管理電路202、主機介面204、記憶體介面206與錯誤檢查與校正電路208。
記憶體管理電路202用以控制記憶體控制電路單元104的整體運作。具體來說,記憶體管理電路202具有多個控制指令,並且在記憶體儲存裝置100運作時,此些控制指令會被執行以進行資料的寫入、讀取與抹除等運作。以下說明記憶體管理電路202的操作時,等同於說明記憶體控制電路單元104的操作,以下並
不再贅述。
在本範例實施例中,記憶體管理電路202的控制指令是以韌體型式來實作。例如,記憶體管理電路202具有微處理器單元(未繪示)與唯讀記憶體(未繪示),並且此些控制指令是被燒錄至此唯讀記憶體中。當記憶體儲存裝置100運作時,此些控制指令會由微處理器單元來執行以進行資料的寫入、讀取與抹除等運作。
在本發明另一範例實施例中,記憶體管理電路202的控制指令亦可以程式碼型式儲存於可複寫式非揮發性記憶體模組106的特定區域(例如,記憶體模組中專用於存放系統資料的系統區)中。此外,記憶體管理電路202具有微處理器單元(未繪示)、唯讀記憶體(未繪示)及隨機存取記憶體(未繪示)。特別是,此唯讀記憶體具有驅動碼,並且當記憶體控制電路單元104被致能時,微處理器單元會先執行此驅動碼段來將儲存於可複寫式非揮發性記憶體模組106中之控制指令載入至記憶體管理電路202的隨機存取記憶體中。之後,微處理器單元會運轉此些控制指令以進行資料的寫入、讀取與抹除等運作。
此外,在本發明另一範例實施例中,記憶體管理電路202的控制指令亦可以一硬體型式來實作。例如,記憶體管理電路202包括微控制器、記憶胞管理電路、記憶體寫入電路、記憶體讀取電路、記憶體抹除電路與資料處理電路。記憶胞管理電路、記憶體寫入電路、記憶體讀取電路、記憶體抹除電路與資料處理電路是耦接至微控制器。其中,記憶胞管理電路用以管理可複寫式非
揮發性記憶體模組106的實體區塊;記憶體寫入電路用以對可複寫式非揮發性記憶體模組106下達寫入指令以將資料寫入至可複寫式非揮發性記憶體模組106中;記憶體讀取電路用以對可複寫式非揮發性記憶體模組106下達讀取指令以從可複寫式非揮發性記憶體模組106中讀取資料;記憶體抹除電路用以對可複寫式非揮發性記憶體模組106下達抹除指令以將資料從可複寫式非揮發性記憶體模組106中抹除;而資料處理電路用以處理欲寫入至可複寫式非揮發性記憶體模組106的資料以及從可複寫式非揮發性記憶體模組106中讀取的資料。
主機介面204是耦接至記憶體管理電路202並且用以接收與識別主機系統1000所傳送的指令與資料。也就是說,主機系統1000所傳送的指令與資料會透過主機介面204來傳送至記憶體管理電路202。在本範例實施例中,主機介面204是相容於SATA標準。然而,必須瞭解的是本發明不限於此,主機介面204亦可以是相容於PATA標準、IEEE 1394標準、PCI Express標準、USB標準、SD標準、UHS-I標準、UHS-II標準、MS標準、MMC標準、eMMC標準、UFS標準、CF標準、IDE標準或其他適合的資料傳輸標準。
記憶體介面206是耦接至記憶體管理電路202並且用以存取可複寫式非揮發性記憶體模組106。也就是說,欲寫入至可複寫式非揮發性記憶體模組106的資料會經由記憶體介面206轉換為可複寫式非揮發性記憶體模組106所能接受的格式。
錯誤檢查與校正電路208是耦接至記憶體管理電路202並且用以執行錯誤檢查與校正程序以確保資料的正確性。具體來說,當記憶體管理電路202從主機系統1000中接收到寫入指令時,錯誤檢查與校正電路208會為對應此寫入指令的資料產生對應的錯誤更正碼(error correcting code,ECC code)或錯誤檢查碼(error detecting code,EDC),並且記憶體管理電路202會將對應此寫入指令的資料與對應的錯誤更正碼或錯誤檢查碼寫入至可複寫式非揮發性記憶體模組106中。之後,當記憶體管理電路202從可複寫式非揮發性記憶體模組106中讀取資料時會同時讀取此資料對應的錯誤更正碼或錯誤檢查碼,並且錯誤檢查與校正電路208會依據此錯誤更正碼或錯誤檢查碼對所讀取的資料執行錯誤檢查與校正程序。
在本發明一範例實施例中,記憶體控制電路單元104還包括緩衝記憶體210與電源管理電路212。緩衝記憶體210是耦接至記憶體管理電路202並且用以暫存來自於主機系統1000的資料與指令或來自於可複寫式非揮發性記憶體模組106的資料。電源管理電路212是耦接至記憶體管理電路202並且用以控制記憶體儲存裝置100的電源。
圖14是根據一範例實施例繪示硬位元模式解碼的示意圖。
請參照圖14,在此以SLC快閃記憶體為例,分佈1410與分佈1420是用來表示多個第一記憶胞的儲存狀態,而分佈1410
與1420分別代表著不同的儲存狀態。這些第一記憶胞可以屬於同樣的實體程式化單元或是不同的實體程式化單元,本發明並不在此限。在此假設當一個記憶胞屬於分佈1410時,此記憶胞所儲存的是位元”1”;當記憶胞屬於分佈1420時,此記憶胞儲存的是位元”0”。當記憶體管理電路202以讀取電壓1440來讀取記憶胞時,記憶體管理電路202會取得驗證位元,其是用來指示此記憶胞是否為導通。在此假設記憶胞導通時驗證位元是"1",反之則是”0”,但本發明並不在此限。若此驗證位元為”1”,則記憶體管理電路202會判斷此記憶胞屬於分佈1410,反之則是分佈1420。然而,分佈1410與分佈1420在區域1430中是重疊的。也就是說,有若干個記憶胞應該是屬於分佈1410但被辨識為分佈1420,並且有若干個記憶胞應該是屬於分佈1420但被辨識為分佈1410。
在此範例實施例中,當要讀取這些第一記憶胞時,記憶體管理電路202會先根據第一讀取電壓(例如,讀取電壓1441)來讀取這些第一記憶胞以取得第一記憶胞的驗證位元(亦稱第一驗證位元)。
錯誤檢查與校正電路208會根據這些驗證位元來執行包含一機率解碼演算法的解碼程序(亦稱為第一解碼程序),以產生多個解碼位元(亦稱為第一解碼位元)。在本範例實施例中,機率解碼演算法是把一個符號(symbol)可能的解碼結果當做一個候選人(candidate),並且在解碼過程中輸入的資訊或者中間運算過程的數值是以這些候選人的機率值或是候選人之間機率的比例來表示,
進而決定最有可能的候選人是哪一個。舉例而言,如果一個符號有兩個候選人(位元0 and 1),機率解碼演算法是各自依照0或者1發生的機率去計算最有可能的候選人,或者是以0與1之間機率的比例去計算最有可能的候選人。假如是N個候選人,例如在有限場(Finite Field)下可能的數值為0~N-1(N為正整數,每一個候選人是代表多個位元),則機率解碼演算法是各自計算N個候選人的機率來決定最有可能的候選人,或者是以其中一個數值的機率作為分母去計算相對的機率比例來決定最有可能的候選人。在一範例實施例中,上述機率的比例也可以用對數的形式來表示。
在本範例實施例中,機率解碼演算法可以是迴旋碼(convolutional code)、渦輪碼(turbo code)、低密度奇偶檢查碼(low-density parity-check code)或其他具有機率解碼特徵之演算法。舉例來說,在迴旋碼與渦輪碼中,可以用有限狀態機(finite state machine)來編碼與解碼,並且在本範例實施例中會根據驗證位元來計算最有可能的多個狀態,進而產生解碼位元。以下將以低密度奇偶檢查碼為例進行說明。
若使用的是低密度奇偶檢查碼,在根據驗證位元來執行第一解碼程序時,記憶體管理電路202還會根據每一個驗證位元來取得每一個記憶胞的解碼初始值(亦稱第一解碼初始值)。例如,若驗證位元是”1”,記憶體管理電路202會設定對應的記憶胞的解碼初始值為-n;若驗證位元是”0”,則解碼初始值為n。其中n為正數,但本發明並不限制正整數n的值為多少。
接下來,錯誤檢查與校正電路208會根據這些解碼初始值來執行低密度奇偶檢查演算法的疊代解碼以產生多個第一解碼位元。在疊代解碼中,這些解碼初始值會不斷地被更新以代表一個機率值,而這個機率值亦被稱為可靠度(realiability)或信心度(belief)。被更新的解碼初始值會被轉換成多個解碼位元,錯誤檢查與校正電路208會把這些解碼位元當作一個向量,並將此向量與低密度奇偶檢查演算法的奇偶檢查矩陣(parity-check matrix)做模2(module 2)的矩陣相乘,以取得多個校驗子(syndrome)。這些校驗子可以用來判斷解碼位元所組成的碼字是否為有效的碼字。若解碼位元所組成的碼字是有效的碼字,則疊代解碼會停止,並且錯誤檢查與校正電路208會輸出這些解碼位元以成為第一解碼位元。若解碼位元組成無效的碼字,則會繼續更新解碼初始值並且產生新的解碼位元以進行下一次疊代。當疊代次數到達預設疊代次數時,疊代解碼也會停止,其中最後一次疊代所產生的解碼位元被稱為第一解碼位元。錯誤檢查與校正電路208會利用這些第一解碼位元來判斷是否解碼成功。例如,若根據校驗子判斷第一解碼位元組成有效的碼字,則是解碼成功;若第一解碼位元組成無效的碼字,則表示解碼失敗。
在另一範例實施例中解碼程序所包括的機率解碼演算法是迴旋碼與渦輪碼,並且解碼程序中還會包括其他的錯誤校正碼。例如,迴旋碼與渦輪碼可以搭配任意演算法的奇偶碼一起使用。在解碼程序中迴旋碼或渦輪碼的解碼部分執行完畢以後,奇
偶碼可以用來判斷所產生的解碼位元是否為有效的碼字,進而判斷是否解碼成功。
不論使用何種錯誤校正碼,若解碼失敗,表示這些第一記憶胞儲存有不可更正的錯誤位元。若解碼失敗,記憶體管理電路202會重新取得讀取電壓,並用重新取得的讀取電壓(亦稱第二讀取電壓,例如讀取電壓1442)來讀取這些第一記憶胞,以重新取得記憶胞的驗證位元(亦稱第二驗證位元)。記憶體管理電路202會根據重新取得的驗證位元來執行上述的第一解碼程序,以取得第二解碼位元。
在一範例實施例中,錯誤檢查與校正電路208會利用第二解碼位元來判斷是否解碼成功(即,第二解碼位元是否組成有效的碼字)。若利用第二解碼位元判斷解碼失敗,記憶體管理電路202會判斷重新取得第二讀取電壓的次數是否超過了一個預設次數。如果重新取得第二讀取電壓的次數已經超過了預設次數,則記憶體管理電路202會停止重新取得第二讀取電壓。若重新取得第二讀取電壓的次數沒有超過了預設次數,則記憶體管理電路202會重新取得第二取得電壓(例如,讀取電壓1443),並且根據重新取得的第二讀取電壓1443讀取第一記憶胞,以重新取得第二驗證位元。記憶體管理電路202也會根據重新取得的第二驗證位元來執行第一解碼程序。
換句話說,當有不可更正的錯誤位元時,透過重新取得讀取電壓,一些記憶胞的驗證位元會被改變,進而改變機率解碼
演算法中若干個機率值,進而有機會改變了解碼程序的解碼結果。邏輯上來說,上述重新取得讀取電壓的動作是要翻轉(flip)一個碼字中的若干位元,並對新的碼字重新解碼。在一些情況下,在翻轉前無法解碼的碼字(有不可更正的錯誤位元),有可能在翻轉後可以解碼。並且,在一範例實施例中記憶體管理電路202會嘗試解碼數次,直到嘗試的次數超過預設次數為止。然而,本發明並不限制預設次數為多少。
在圖14中,讀取電壓1440為一預設讀取電壓,其表示在讀取電壓1440下錯誤位元會最少。記憶體管理電路202可以透過各種演算法來取得預設讀取電壓1440。例如,記憶體管理電路202可先寫入已知的位元至這些第一記憶胞,再掃描這些第一記憶胞在各種臨界電壓下的錯誤位元個數以取得預設讀取電壓,本發明並不限制如何計算預設讀取電壓。在此範例實施例中,記憶體管理電路202在重新取得讀取電壓時,新的讀取電壓與舊的讀取電壓會在預設讀取電壓1440的兩側。舉例來說,記憶體管理電路202會先使用讀取電壓1441,接著根據一偏移值(可為正或是負)來調整預設讀取電壓1440以取得讀取電壓1442,其中預設讀取電壓1440是介於讀取電壓1441與讀取電壓1442之間。在一範例實施例中,此偏移值是根據讀取電壓1441與預設讀取電壓1440之間的差所計算。例如,記憶體管理電路202可以將讀取電壓1441與預設讀取電壓1440之間的差乘上一個乘數以取得偏移值,並且將預設讀取電壓1440減去偏移值以取得讀取電壓1442,其可寫為
以下方程式(3)。
R i
+1
=K-Q
(R i
-K
)...(3)
其中Ri+1
表示在第(i+1)次嘗試時所使用的讀取電壓,i為正整數。Q為一個實數,表示上述的乘數。K為預設讀取電壓。
在其他範例實施例中,舊的讀取電壓與新的讀取電壓也可以在預設讀取電壓1440的同一側。或者,記憶體管理電路202第一次所使用的讀取電壓可以是預設讀取電壓1440,接著才依序使用讀取電壓1441~1444。本發明並不限制舊讀取電壓與新讀取電壓的值。
值得注意的是,在圖14中所舉的是SLC快閃記憶體的例子,但重新取得讀取電壓的步驟也可以適用於MLC或是TLC快閃記憶體。如圖10所示,改變讀取電壓VA會翻轉一個記憶胞的LSB,而改變讀取電壓VB或VC則可以翻轉一個記憶胞的MSB。因此,改變讀取電壓VA、VB或VC都可以將一個碼字改變為另一個碼字。改變碼字的結果也適用於圖11的TLC快閃記憶體。本發明並不限制所使用的是SLC、MLC或是TLC快閃記憶體。
在圖14的範例實施例中,記憶胞的解碼初始值是根據一個驗證位元而被分為兩個數值(例如,n與-n)。根據兩種數值來執行的疊代解碼亦被稱為硬位元模式(hard bit mode)的疊代解碼。然而,上述改變讀取電壓的步驟也可以應用在軟位元模式(soft bit mode)的疊代解碼,其中每一個記憶胞的解碼初始值是根據多個驗證位元所決定。值得注意的是,不論是硬位元模式或是軟位元模
式,在疊代解碼中都會計算位元的機率值,因此都屬於機率解碼演算法。
圖15A與圖15B是根據一範例實施例繪示軟位元模式解碼的示意圖。
如上所述,當施加讀取電壓於記憶胞的控制閘極以後,隨著記憶胞是否導通,記憶體管理電路202所取得的驗證位元會是”0”或是”1”。在此假設若記憶胞沒有導通時則對應的驗證位元是”0”,反之則是”1”。在圖15A中,記憶體管理電路202會施加讀取電壓V1
~V5
(亦稱第一讀取電壓)至記憶胞以取得5個驗證位元(亦稱第一驗證位元)。具體來說,讀取電壓V1
是對應到驗證位元b1
;讀取電壓V2
是對應到驗證位元b2
;讀取電壓V3
是對應到驗證位元b3
;讀取電壓V4
是對應到驗證位元b4
;讀取電壓V5
是對應到驗證位元b5
。若一個記憶胞的臨界電壓是在區間1501,則從驗證位元b1
至驗證位元b5
,記憶體管理電路202所取得的驗證位元會是”11111”;若記憶胞的臨界電壓是在區間1502,則驗證位元會是”01111”;若記憶胞的臨界電壓是在區間1503,則驗證位元會是”00111”;若記憶胞的臨界電壓是在區間1504,則驗證位元會是”00011”;若記憶胞的臨界電壓是在區間1505,則驗證位元會是”00001”。
在此範例實施例中,讀取電壓V1
~V5
的其中之一會被設定為正負號(sign)讀取電壓。此正負號讀取電壓是用來決定解碼初始值的正負號。例如,若讀取電壓V3
為正負號讀取電壓,則區間
1501~1503所對應的解碼初始值會小於0,並且區間1504~1506所對應的解碼初始值會大於0。此外,在每一個區間中,可以事先計算出記憶胞屬於分佈1510的機率與屬於分佈1520的機率。根據這兩個機率可以計算出對數可能性比值(Log Likelihood Ratio,LLR),而此對數可能性比值可用來決定解碼初始值的絕對值的大小。因此,記憶體管理電路202是根據正負號讀取電壓與驗證位元b1
~b5
取得記憶胞在軟位元模式下的解碼初始值(亦稱第一解碼初始值)。在一範例實施例中,各個區間所對應的解碼初始值可以事先被計算出來並且儲存在一個查找表中。記憶體管理電路202可以將驗證位元b1
~b5
輸入此查找表中,藉此取得對應的解碼初始值。換言之,實作上記憶體管理電路202也可以根據驗證位元b1
~b5
,而不參照正負號讀取電壓,便取得記憶胞在軟位元模式下的解碼初始值。此外,若設定不同的正負號讀取電壓,記憶體管理電路202可以使用不同的查找表。
在記憶體管理電路202取得解碼初始值以後,錯誤檢查與校正電路208會對解碼初始值執行疊代解碼以取得多個解碼位元(亦稱第一解碼位元),並利用這些解碼位元來判斷是否解碼成功。若解碼失敗,記憶體管理電路202可以重新取得讀取電壓(亦稱第二讀取電壓)。例如,記憶體管理電路202可以根據讀取電壓V1
~V5
與預設讀取電壓V3
之間的差取得5個偏移值,並且將根據這5個偏移值來調整預設讀取電壓V3
(例如,減去這5個偏移值)以取得新的讀取電壓。換言之,上述方程式(3)也可以用於軟位元
模式當中。例如,如圖15B所示,讀取電壓V’1
~V’5
是改變後的讀取電壓。在此範例實施例中,改變前與改變後,解碼初始值的正負號的分佈都是對稱的,即圖15A中的讀取電壓V3
與圖15B中的讀取電壓V’3
為正負號讀取電壓。以另一個角度來說,在圖15A與圖15B中,小於正負號讀取電壓的讀取電壓的個數是相同於大於正負號讀取電壓的讀取電壓的個數。在圖15B的範例實施例中,讀取電壓V’1
~V’5
之間的間距並沒有改變,然而,記憶體管理電路202也可以任意地改變讀取電壓V1
~V5
以取得新的讀取電壓,並且每一個讀取電壓V1
~V5
改變的幅度可以一樣或是不一樣。此外,在圖15B中,預設讀取電壓V3
是落在讀取電壓V’2
~V’3
之間,但預設讀取電壓V3
也可以落在任意兩個新的讀取電壓V’1
~V’5
中間,本發明並不在此限。
在重新取得讀取電壓以後,每一個區間所對應的對數可能性比值也會改變,因此記憶體管理電路202會使用不同的查找表以取得解碼初始值。邏輯上來說,改變讀取電壓是為了翻轉一個碼字中若干個位元,並且給予不同的解碼初始值(改變數值大小或是正負號),使得改變前無法解碼的碼字(有不可更正的錯誤位元),有可能在改變後可以解碼。
請參照回圖15A,在另一範例實施例中,記憶體管理電路202可以重新設定正負號讀取電壓以改變一個碼字。舉例來說,若讀取電壓V3
是正負號讀取電壓,則區間1504所對應的解碼初始值會大於0;但若讀取電壓V4
或是V5
為正負號讀取電壓,則區
間1504所對應的解碼初始值會小於0。因此,若利用原本的正負號讀取電壓所執行的解碼程序並沒有解碼成功,則記憶體管理電路202可設定另一個讀取電壓為正負號讀取電壓(亦稱第二正負號讀取電壓),並且根據重新設定的正負號讀取電壓與原本的驗證位元重新取得解碼初始值。在重新設定正負號讀取電壓以後,解碼初始值的正負號的分佈可能會變的不對稱。舉例來說,讀取電壓V4
為新的正負號讀取電壓,而小於讀取電壓V4
的讀取電壓的個數不同於大於讀取電壓V4
的讀取電壓的個數,即有四個區間所對應的解碼初始值會小於0,但有只一個區間所對應的解碼初始值會大於0。在一範例實施例中,記憶體管理電路202是先設定讀取電壓V1
~V5
中位於中間的讀取電壓V3
作為正負號讀取電壓,接著依序設定讀取電壓V2
、V4
、V1
、V5
作為正負號讀取電壓,直到解碼成功為止。其中讀取電壓V1
與V2
(亦稱第二正負號讀取電壓)是在讀取電壓V3
的一側,而讀取電壓V4
與V5
(亦稱第三正負號讀取電壓)是在讀取電壓V3
的另一側。
值得注意的是,在設定新的正負號讀取電壓以後,讀取電壓V1
~V5
並沒有改變,因此記憶體管理電路202也不需要重新讀取第一記憶胞。換言之原本取得5個驗證位元並不會改變,正負號讀取電壓是用來改變解碼初始值的正負號。在一範例實施例中,對於不同的正負號讀取電壓,記憶體管理電路202會將原本5個驗證位元輸入至不同的查找表,以重新取得解碼初始值。接下來,錯誤檢查與校正電路208便可以根據重新取得的解碼初始值
來進行疊代解碼。
在圖15A與圖15B的範例實施例中,一個軟位元模式解碼的解碼初始值是由5個驗證位元(讀取電壓)所決定。然而,在其他範例實施例中,一個軟位元模式解碼的解碼初始值也可以由數目更多或更少的驗證位元來決定,本發明並不在此限。
圖16是根據一範例實施例繪示執行硬位元模式解碼與軟位元模式解碼的流程圖。
請參照圖16,在圖16的範例實施例中,記憶體管理電路202是先進行硬位元模式的疊代解碼。若硬位元模式沒有成功,則進行軟位元模式的疊代解碼。具體來說,在步驟S1601中,記憶體管理電路202會根據一個讀取電壓(亦稱第一讀取電壓)來讀取多個記憶胞(亦稱第一記憶胞)以取得驗證位元(亦稱第一驗證位元),並且據此執行第一解碼程序(其包含產生解碼初始值與硬位元模式的疊代解碼)。在步驟S1602,錯誤檢查與校正電路208會利用所產生的解碼位元來判斷是否解碼成功。若解碼成功,記憶體管理電路202會輸出解碼位元。若解碼沒有成功,在步驟S1603中,記憶體管理電路202會重新取得另一讀取電壓(成為第二讀取電壓,其不同於第一讀取電壓)並根據重新取得的讀取電壓來讀取第一記憶胞以重新取得驗證位元(亦稱第二驗證位元),並且據此執行第一解碼程序。在步驟S1604中,錯誤檢查與校正電路208會利用目前產生的解碼位元判斷是否解碼成功。若解碼不成功,在步驟S1605中,記憶體管理電路202會判斷重新取得第二讀取電
壓的次數是否超過預設次數。若重新取得第二讀取電壓的次數沒有超過預設次數,回到步驟S1603。
若重新取得第二讀取電壓的次數超過了預設次數,在步驟S1606中,記憶體管理電路202會根據多個讀取電壓(亦稱第三讀取電壓)來讀取第一記憶胞以取得驗證位元(亦稱第三驗證位元),取得解碼初始值,並根據解碼初始值執行第二解碼程序(其包含軟位元模式的疊代解碼)。在步驟S1607中,錯誤檢查與校正電路208會利用目前產生的解碼位元來判斷是否解碼成功。若解碼不成功,在步驟S1608中,記憶體管理電路202可重新取得讀取電壓或是重新設定正負號讀取電壓,對應地重新取得解碼初始值並且重新執行第二解碼程序。在步驟S1609中,錯誤檢查與校正電路208會判斷是否解碼成功。若在步驟S1609中解碼成功,則會輸出目前產生的解碼位元(亦稱第三解碼位元)。若步驟S1609中沒有解碼成功,在步驟S1610中,記憶體管理電路202會判斷重新解碼的次數是否超過預設次數。若重新解碼的次數沒有超過預設次數,回到步驟S1608。若重新解碼的次數已超過預設次數,則表示解碼失敗(步驟S1611)。
值得注意的是,在步驟S1601與步驟S1603所使用的讀取電壓的個數都是1,並且步驟S1601與步驟S1603所執行的是相同的第一解碼程序(包含硬位元模式的疊代解碼)。另外,步驟S1606與步驟S1608所使用的讀取電壓的個數相同(且大於1),並且步驟S1606與步驟S1608所執行的是相同的第二解碼程序(包含
軟位元模式的疊代解碼)。
圖17是根據一範例實施例繪示一解碼方法的流程圖。
請參照圖17,在步驟S1701中,根據至少一第一讀取電壓讀取多個第一記憶胞,以取得每一個第一記憶胞的至少一第一驗證位元。在步驟S1702中,根據第一驗證位元來執行包含一機率解碼演算法的一解碼程序以產生多個第一解碼位元。在步驟S1703中,利用第一解碼位元判斷是否解碼成功。
若解碼成功,在步驟S1704中,輸出第一解碼位元。
若解碼失敗,在步驟S1705中,根據至少一第二讀取電壓讀取第一記憶胞以取得每一個第一記憶胞的至少一第二驗證位元。在步驟S1706中,根據第二驗證位元來執行第一解碼程序以產生多個第二解碼位元。
值得注意的是,步驟S1701中的第一讀取電壓不同於步驟S1705中的第二讀取電壓。然而,第一讀取電壓的個數是相同於第二讀取電壓的個數。若第一讀取電壓與第二讀取電壓的個數為1,則步驟S1702與步驟S1706中的第一解碼程序便包含硬位元模式的疊代解碼。若第一讀取電壓與第二讀取電壓的個數大於1,則第一解碼程序便包含軟位元模式的疊代解碼。圖17中各步驟已詳細說明如上,在此便不再贅述。值得注意的是,圖17中各步驟可以實作為多個程式碼或是電路。此外,圖17的方法可以搭配以上範例實施例使用,也可以單獨使用,本發明並不在此限。
綜上所述,本發明範例實施例所提出的解碼方法、記憶
體儲存裝置與記憶體控制電路單元,是在碼字有不可更正的錯誤位元時,嘗試翻轉碼字中的一些位元或是改變解碼初始值。如此一來,無法解碼的碼字有可能在改變後可以解碼,藉此在相同碼率的條件下可增加解碼的能力。
雖然本發明已以實施例揭露如上,然其並非用以限定本發明,任何所屬技術領域中具有通常知識者,在不脫離本發明的精神和範圍內,當可作些許的更動與潤飾,故本發明的保護範圍當視後附的申請專利範圍所界定者為準。
S1701~S1706‧‧‧步驟
Claims (30)
- 一種解碼方法,用於一可複寫式非揮發性記憶體模組,其中該可複寫式非揮發性記憶體模組包括多個記憶胞,該解碼方法包括:根據至少一第一讀取電壓讀取該些記憶胞中的多個第一記憶胞,以取得每一該些第一記憶胞的至少一第一驗證位元;根據該些第一記憶胞的該至少一第一驗證位元來執行包含一機率解碼演算法的一第一解碼程序以產生多個第一解碼位元,並利用該些第一解碼位元判斷是否解碼成功;以及若解碼失敗,根據至少一第二讀取電壓讀取該些第一記憶胞以取得每一該些第一記憶胞的至少一第二驗證位元,根據該些第一記憶胞的該至少一第二驗證位元來執行該第一解碼程序以產生多個第二解碼位元,其中該至少一第二讀取電壓不同於該至少一第一讀取電壓,並且該至少一第二讀取電壓的個數相同於該至少一第一讀取電壓的個數,並且該第一解碼程序為硬位元模式的疊代解碼。
- 如申請專利範圍第1項所述的解碼方法,更包括:根據該至少一第一讀取電壓的其中之一與一預設讀取電壓之間的差取得一偏移值;以及利用該偏移值調整該預設讀取電壓以取得該至少一第二讀取電壓。
- 如申請專利範圍第2項所述的解碼方法,其中該至少一第 一讀取電壓的個數為1,並且該預設讀取電壓是介於該第一讀取電壓與該第二讀取電壓之間。
- 如申請專利範圍第2項所述的解碼方法,其中取得該偏移值的步驟包括:將該至少一第一讀取電壓的該其中之一與該預設讀取電壓之間的差乘上一乘數以取得該偏移值。
- 如申請專利範圍第1項所述的解碼方法,更包括:利用該些第二解碼位元判斷是否解碼成功;若利用該些第二解碼位元判斷解碼失敗,判斷重新取得該至少一第二讀取電壓的次數是否超過一預設次數;若重新取得該至少一第二讀取電壓的該次數未超過該預設次數,重新取得該至少一第二讀取電壓,根據重新取得的該至少一第二讀取電壓讀取該些第一記憶胞以重新取得該些第二驗證位元,根據重新取得的該些第二驗證位元執行該第一解碼程序;以及若重新取得該至少一第二讀取電壓的該次數超過該預設次數,停止重新取得該至少一第二讀取電壓。
- 如申請專利範圍第5項所述的解碼方法,其中該至少一第一讀取電壓的個數與該至少一第二讀取電壓的個數為1,該解碼方法更包括:若重新取得該第二讀取電壓的該次數超過該預設次數,根據多個第三讀取電壓讀取該些第一記憶胞,以取得每一該些第一記 憶胞的多個第三驗證位元;設定該些第三讀取電壓的其中之一為一第一正負號讀取電壓;根據該第一正負號讀取電壓與每一該些第一記憶胞的該些第三驗證位元取得每一該些第一記憶胞的一解碼初始值;對該些解碼初始值執行一第二解碼程序以取得多個第三解碼位元;利用該些第三解碼位元判斷是否解碼成功;以及若利用該些第三解碼位元判斷解碼失敗,設定該些第三讀取電壓的其中之另一為一第二正負號讀取電壓,根據該第二正負號讀取電壓與該些第三驗證位元重新取得該些解碼初始值,並且根據重新取得的該些解碼初始值執行該第二解碼程序。
- 如申請專利範圍第6項所述的解碼方法,其中該第一正負號讀取電壓是位於該些第三讀取電壓的中間,該第二正負號讀取電壓是位於該第一正負號讀取電壓的一側,並且該解碼方法更包括:若利用該第二正負號讀取電壓所執行的該第二解碼程序並沒有解碼成功,設定該些第三讀取電壓的其中之更另一為一第三正負號讀取電壓,根據該第三正負號讀取電壓與該些第三驗證位元重新取得該些解碼初始值,並且根據重新取得的該些解碼初始值執行該第二解碼程序,其中該第三正負號讀取電壓位於該第一正負號讀取電壓的另 一側。
- 如申請專利範圍第6項所述的解碼方法,更包括:對於不同的該正負號讀取電壓,將該些第三驗證位元輸入至不同的查找表,以重新取得該些解碼初始值。
- 如申請專利範圍第1項所述的解碼方法,其中該機率解碼演算法為低密度奇耦檢查碼。
- 如申請專利範圍第1項所述的解碼方法,其中利用該些第一解碼位元判斷是否解碼成功的步驟包括:根據該些第一解碼位元產生多個校驗子;根據該些校驗子判斷該些第一解碼位元是否組成有效的碼字;以及若該些第一解碼位元組成有效的碼字,判斷解碼成功。
- 一種記憶體儲存裝置,包括:一連接介面單元,用以耦接至一主機系統;一可複寫式非揮發性記憶體模組,包括多個記憶胞;以及一記憶體控制電路單元,耦接至該連接介面單元與該可複寫式非揮發性記憶體模組,用以根據至少一第一讀取電壓讀取該些記憶胞中的多個第一記憶胞,以取得每一該些第一記憶胞的至少一第一驗證位元,其中,該記憶體控制電路單元用以根據該些第一記憶胞的該至少一第一驗證位元來執行包含一機率解碼演算法的一第一解碼程序以產生多個第一解碼位元,並利用該些第一解碼位元判斷是 否解碼成功,若解碼失敗,該記憶體控制電路單元用以根據至少一第二讀取電壓讀取該些第一記憶胞以取得每一該些第一記憶胞的至少一第二驗證位元,並且根據該些第一記憶胞的該至少一第二驗證位元來執行該第一解碼程序以產生多個第二解碼位元,其中該至少一第二讀取電壓不同於該至少一第一讀取電壓,並且該至少一第二讀取電壓的個數相同於該至少一第一讀取電壓的個數,並且該第一解碼程序為硬位元模式的疊代解碼。
- 如申請專利範圍第11項所述的記憶體儲存裝置,其中該記憶體控制電路單元更用以根據該至少一第一讀取電壓的其中之一與一預設讀取電壓之間的差取得一偏移值,並且利用該偏移值調整該預設讀取電壓以取得該至少一第二讀取電壓。
- 如申請專利範圍第12項所述的記憶體儲存裝置,其中該至少一第一讀取電壓的個數為1,並且該預設讀取電壓是介於該第一讀取電壓與該第二讀取電壓之間。
- 如申請專利範圍第12項所述的記憶體儲存裝置,其中該記憶體控制電路單元取得該偏移值的操作包括:該記憶體控制電路單元將該至少一第一讀取電壓的該其中之一與該預設讀取電壓之間的差乘上一乘數以取得該偏移值。
- 如申請專利範圍第11項所述的記憶體儲存裝置,其中該記憶體控制電路單元更用以利用該些第二解碼位元判斷是否解碼成功, 若利用該些第二解碼位元判斷解碼失敗,該記憶體控制電路單元用以判斷重新取得該至少一第二讀取電壓的次數是否超過一預設次數,若重新取得該至少一第二讀取電壓的該次數未超過該預設次數,該記憶體控制電路單元用以重新取得該至少一第二讀取電壓,根據重新取得的該至少一第二讀取電壓讀取該些第一記憶胞以重新取得該些第二驗證位元,並且根據重新取得的該些第二驗證位元執行該第一解碼程序,若重新取得該至少一第二讀取電壓的該次數超過該預設次數,該記憶體控制電路單元用以停止重新取得該至少一第二讀取電壓。
- 如申請專利範圍第15項所述的記憶體儲存裝置,其中該至少一第一讀取電壓的個數與該至少一第二讀取電壓的個數為1,若重新取得該第二讀取電壓的該次數超過該預設次數,該記憶體控制電路單元用以根據多個第三讀取電壓讀取該些第一記憶胞,以取得每一該些第一記憶胞的多個第三驗證位元,其中,該記憶體控制電路單元更用以設定該些第三讀取電壓的其中之一為一第一正負號讀取電壓,並且根據該第一正負號讀取電壓與每一該些第一記憶胞的該些第三驗證位元取得每一該些第一記憶胞的一解碼初始值,其中,該記憶體控制電路單元更用以對該些解碼初始值執行一第二解碼程序以取得多個第三解碼位元,並且利用該些第三解 碼位元判斷是否解碼成功,若利用該些第三解碼位元判斷解碼失敗,該記憶體控制電路單元用以設定該些第三讀取電壓的其中之另一為一第二正負號讀取電壓,根據該第二正負號讀取電壓與該些第三驗證位元重新取得該些解碼初始值,並且根據重新取得的該些解碼初始值執行該第二解碼程序。
- 如申請專利範圍第16項所述的記憶體儲存裝置,其中該第一正負號讀取電壓是位於該些第三讀取電壓的中間,並且該第二正負號讀取電壓是位於該第一正負號讀取電壓的一側,若利用該第二正負號讀取電壓所執行的該第二解碼程序並沒有解碼成功,該記憶體控制電路單元用以設定該些第三讀取電壓的其中之更另一為一第三正負號讀取電壓,根據該第三正負號讀取電壓與該些第三驗證位元重新取得該些解碼初始值,並且根據重新取得的該些解碼初始值執行該第二解碼程序,其中該第三正負號讀取電壓位於該第一正負號讀取電壓的另一側。
- 如申請專利範圍第16項所述的記憶體儲存裝置,其中該記憶體控制電路單元更用以對於不同的該正負號讀取電壓,將該些第三驗證位元輸入至不同的查找表以重新取得該些解碼初始值。
- 如申請專利範圍第11項所述的記憶體儲存裝置,其中該機率解碼演算法為低密度奇耦檢查碼。
- 如申請專利範圍第11項所述的記憶體儲存裝置,其中該記憶體控制電路單元利用該些第一解碼位元判斷是否解碼成功的操作包括:該記憶體控制電路單元根據該些第一解碼位元產生多個校驗子,並且根據該些校驗子判斷該些第一解碼位元是否組成有效的碼字;若該些第一解碼位元組成有效的碼字,該記憶體控制電路單元判斷解碼成功。
- 一種記憶體控制電路單元,用於控制一可複寫式非揮發性記憶體模組,其中該可複寫式非揮發性記憶體模組包括多個記憶胞,該記憶體控制電路單元包括:一主機介面,用以耦接至一主機系統;一記憶體介面,用以耦接至該可複寫式非揮發性記憶體模組;一錯誤檢查與校正電路;以及一記憶體管理電路,耦接至該主機介面與該記憶體介面,用以根據至少一第一讀取電壓讀取該些記憶胞中的多個第一記憶胞,以取得每一該些第一記憶胞的至少一第一驗證位元,其中,錯誤檢查與校正電路以根據該些第一記憶胞的該至少一第一驗證位元來執行包含一機率解碼演算法的一第一解碼程序以產生多個第一解碼位元,並利用該些第一解碼位元判斷是否解碼成功,若解碼失敗,該記憶體管理電路用以根據至少一第二讀取電 壓讀取該些第一記憶胞以取得每一該些第一記憶胞的至少一第二驗證位元,並且錯誤檢查與校正電路用以根據該些第一記憶胞的該至少一第二驗證位元來執行該第一解碼程序以產生多個第二解碼位元,其中該至少一第二讀取電壓不同於該至少一第一讀取電壓,並且該至少一第二讀取電壓的個數相同於該至少一第一讀取電壓的個數,並且該第一解碼程序為硬位元模式的疊代解碼。
- 如申請專利範圍第21項所述的記憶體控制電路單元,其中該記憶體管理電路更用以根據該至少一第一讀取電壓的其中之一與一預設讀取電壓之間的差取得一偏移值,並且利用該偏移值調整該預設讀取電壓以取得該至少一第二讀取電壓。
- 如申請專利範圍第22項所述的記憶體控制電路單元,其中該至少一第一讀取電壓的個數為1,並且該預設讀取電壓是介於該第一讀取電壓與該第二讀取電壓之間。
- 如申請專利範圍第22項所述的記憶體控制電路單元,其中該記憶體管理電路取得該偏移值的操作包括:該記憶體管理電路將該至少一第一讀取電壓的該其中之一與該預設讀取電壓之間的差乘上一乘數以取得該偏移值。
- 如申請專利範圍第21項所述的記憶體控制電路單元,其中該記憶體管理電路更用以利用該些第二解碼位元判斷是否解碼成功,若利用該些第二解碼位元判斷解碼失敗,該記憶體管理電路 用以判斷重新取得該至少一第二讀取電壓的次數是否超過一預設次數,若重新取得該至少一第二讀取電壓的該次數未超過該預設次數,該記憶體管理電路用以重新取得該至少一第二讀取電壓,並且根據重新取得的該至少一第二讀取電壓讀取該些第一記憶胞以重新取得該些第二驗證位元,其中,錯誤檢查與校正電路用以根據重新取得的該些第二驗證位元執行該第一解碼程序,若重新取得該至少一第二讀取電壓的該次數超過該預設次數,該記憶體管理電路用以停止重新取得該至少一第二讀取電壓。
- 如申請專利範圍第25項所述的記憶體控制電路單元,其中該至少一第一讀取電壓的個數與該至少一第二讀取電壓的個數為1,若重新取得該第二讀取電壓的該次數超過該預設次數,該記憶體管理電路用以根據多個第三讀取電壓讀取該些第一記憶胞,以取得每一該些第一記憶胞的多個第三驗證位元,其中,該記憶體管理電路更用以設定該些第三讀取電壓的其中之一為一第一正負號讀取電壓,並且根據該第一正負號讀取電壓與每一該些第一記憶胞的該些第三驗證位元取得每一該些第一記憶胞的一解碼初始值,其中,錯誤檢查與校正電路更用以對該些解碼初始值執行一第二解碼程序以取得多個第三解碼位元,並且利用該些第三解碼 位元判斷是否解碼成功,若利用該些第三解碼位元判斷解碼失敗,該記憶體管理電路用以設定該些第三讀取電壓的其中之另一為一第二正負號讀取電壓,並且根據該第二正負號讀取電壓與該些第三驗證位元重新取得該些解碼初始值,其中,錯誤檢查與校正電路用以根據重新取得的該些解碼初始值執行該第二解碼程序。
- 如申請專利範圍第26項所述的記憶體控制電路單元,其中該第一正負號讀取電壓是位於該些第三讀取電壓的中間,並且該第二正負號讀取電壓是位於該第一正負號讀取電壓的一側,若利用該第二正負號讀取電壓所執行的該第二解碼程序並沒有解碼成功,該記憶體管理電路用以設定該些第三讀取電壓的其中之更另一為一第三正負號讀取電壓,並且根據該第三正負號讀取電壓與該些第三驗證位元重新取得該些解碼初始值,其中,錯誤檢查與校正電路用以根據重新取得的該些解碼初始值執行該第二解碼程序,其中該第三正負號讀取電壓位於該第一正負號讀取電壓的另一側。
- 如申請專利範圍第26項所述的記憶體控制電路單元,其中該記憶體管理電路更用以對於不同的該正負號讀取電壓,將該些第三驗證位元輸入至不同的查找表以重新取得該些解碼初始值。
- 如申請專利範圍第21項所述的記憶體控制電路單元,其中該機率解碼演算法為低密度奇耦檢查碼。
- 如申請專利範圍第21項所述的記憶體控制電路單元,其中該錯誤檢查與校正電路利用該些第一解碼位元判斷是否解碼成功的操作包括:該錯誤檢查與校正電路根據該些第一解碼位元產生多個校驗子,並且根據該些校驗子判斷該些第一解碼位元是否組成有效的碼字;以及若該些第一解碼位元組成有效的碼字,錯誤檢查與校正電路判斷解碼成功。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW102135387A TWI508082B (zh) | 2013-09-30 | 2013-09-30 | 解碼方法、記憶體儲存裝置與記憶體控制電路單元 |
US14/109,959 US9268634B2 (en) | 2013-09-30 | 2013-12-18 | Decoding method, memory storage device and memory controlling circuit unit |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW102135387A TWI508082B (zh) | 2013-09-30 | 2013-09-30 | 解碼方法、記憶體儲存裝置與記憶體控制電路單元 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201513122A TW201513122A (zh) | 2015-04-01 |
TWI508082B true TWI508082B (zh) | 2015-11-11 |
Family
ID=52741404
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW102135387A TWI508082B (zh) | 2013-09-30 | 2013-09-30 | 解碼方法、記憶體儲存裝置與記憶體控制電路單元 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9268634B2 (zh) |
TW (1) | TWI508082B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI693608B (zh) * | 2016-01-08 | 2020-05-11 | 韓商愛思開海力士有限公司 | 資料儲存裝置及其操作方法 |
TWI702602B (zh) * | 2017-06-22 | 2020-08-21 | 群聯電子股份有限公司 | 解碼方法、記憶體儲存裝置及記憶體控制電路單元 |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9032271B2 (en) * | 2012-12-07 | 2015-05-12 | Western Digital Technologies, Inc. | System and method for lower page data recovery in a solid state drive |
TWI512750B (zh) * | 2014-07-30 | 2015-12-11 | Phison Electronics Corp | 資料儲存方法、記憶體控制電路單元及記憶體儲存裝置 |
TWI559314B (zh) * | 2014-12-27 | 2016-11-21 | 群聯電子股份有限公司 | 記憶體管理方法、記憶體儲存裝置及記憶體控制電路單元 |
TWI582779B (zh) * | 2015-04-14 | 2017-05-11 | 群聯電子股份有限公司 | 讀取電壓準位估測方法、記憶體儲存裝置及記憶體控制電路單元 |
US9679652B2 (en) * | 2015-05-04 | 2017-06-13 | Phison Electronics Corp. | Threshold based multi-level cell programming for reliability improvement |
US10152413B2 (en) | 2015-06-08 | 2018-12-11 | Samsung Electronics Co. Ltd. | Nonvolatile memory module and operation method thereof |
TWI561981B (en) * | 2015-12-14 | 2016-12-11 | Phison Electronics Corp | Data reading method, memory control circuit unit and memory storage apparatus |
TWI595498B (zh) * | 2016-01-20 | 2017-08-11 | 大心電子(英屬維京群島)股份有限公司 | 解碼方法、記憶體儲存裝置及記憶體控制電路單元 |
TWI612527B (zh) * | 2016-04-08 | 2018-01-21 | 群聯電子股份有限公司 | 解碼方法、記憶體儲存裝置及記憶體控制電路單元 |
TWI607452B (zh) * | 2016-08-12 | 2017-12-01 | 群聯電子股份有限公司 | 解碼方法、記憶體儲存裝置及記憶體控制電路單元 |
TWI670715B (zh) * | 2017-04-06 | 2019-09-01 | 群聯電子股份有限公司 | 解碼方法、記憶體儲存裝置及記憶體控制電路單元 |
TWI640865B (zh) * | 2017-09-05 | 2018-11-11 | 群聯電子股份有限公司 | 解碼方法、記憶體儲存裝置及記憶體控制電路單元 |
TWI634557B (zh) * | 2017-10-17 | 2018-09-01 | 群聯電子股份有限公司 | 資料編碼方法、記憶體控制電路單元與記憶體儲存裝置 |
US10408863B2 (en) * | 2017-12-20 | 2019-09-10 | Apple Inc. | Reference voltage prediction in memory subsystem |
TWI675374B (zh) * | 2018-07-24 | 2019-10-21 | 群聯電子股份有限公司 | 位元判斷方法、記憶體控制電路單元以及記憶體儲存裝置 |
CN110795268B (zh) * | 2018-08-01 | 2023-03-14 | 群联电子股份有限公司 | 比特判断方法、存储器控制电路单元以及存储器存储装置 |
TWI731338B (zh) * | 2019-05-30 | 2021-06-21 | 群聯電子股份有限公司 | 記憶體控制方法、記憶體儲存裝置及記憶體控制電路單元 |
CN112053724B (zh) * | 2019-06-06 | 2023-07-18 | 群联电子股份有限公司 | 存储器控制方法、存储器存储装置及存储器控制电路单元 |
CN112634972B (zh) * | 2019-09-24 | 2023-08-15 | 群联电子股份有限公司 | 电压识别方法、存储器控制电路单元以及存储器储存装置 |
KR102345067B1 (ko) * | 2021-08-25 | 2021-12-29 | 삼성전자주식회사 | 스토리지 장치 및 스토리지 컨트롤러의 구동 방법 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW200905692A (en) * | 2007-03-31 | 2009-02-01 | Sandisk Corp | Non-volatile memory system with soft bit data transmission for error correction control and method of reading the same |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7966550B2 (en) * | 2007-03-31 | 2011-06-21 | Sandisk Technologies Inc. | Soft bit data transmission for error correction control in non-volatile memory |
-
2013
- 2013-09-30 TW TW102135387A patent/TWI508082B/zh active
- 2013-12-18 US US14/109,959 patent/US9268634B2/en active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW200905692A (en) * | 2007-03-31 | 2009-02-01 | Sandisk Corp | Non-volatile memory system with soft bit data transmission for error correction control and method of reading the same |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI693608B (zh) * | 2016-01-08 | 2020-05-11 | 韓商愛思開海力士有限公司 | 資料儲存裝置及其操作方法 |
TWI702602B (zh) * | 2017-06-22 | 2020-08-21 | 群聯電子股份有限公司 | 解碼方法、記憶體儲存裝置及記憶體控制電路單元 |
Also Published As
Publication number | Publication date |
---|---|
US9268634B2 (en) | 2016-02-23 |
TW201513122A (zh) | 2015-04-01 |
US20150095741A1 (en) | 2015-04-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI508082B (zh) | 解碼方法、記憶體儲存裝置與記憶體控制電路單元 | |
TWI540586B (zh) | 解碼方法、記憶體儲存裝置、記憶體控制電路單元 | |
US9543983B2 (en) | Decoding method, memory storage device and memory control circuit unit | |
US9471421B2 (en) | Data accessing method, memory storage device and memory controlling circuit unit | |
TWI537966B (zh) | 錯誤處理方法、記憶體儲存裝置及記憶體控制電路單元 | |
TWI523018B (zh) | 解碼方法、記憶體儲存裝置、記憶體控制電路單元 | |
TWI695378B (zh) | 位元標記方法、記憶體控制電路單元以及記憶體儲存裝置 | |
US10685711B1 (en) | Decoding method, memory controlling circuit unit and memory storage device | |
TWI550628B (zh) | 解碼方法、記憶體儲存裝置及記憶體控制電路單元 | |
TW202008365A (zh) | 電壓調整方法、記憶體控制電路單元以及記憶體儲存裝置 | |
TW201517524A (zh) | 解碼方法、解碼電路、記憶體儲存裝置與控制電路單元 | |
US11190217B2 (en) | Data writing method, memory controlling circuit unit and memory storage device | |
US11146295B1 (en) | Decoding method, memory storage device, and memory controlling circuit unit | |
TWI675374B (zh) | 位元判斷方法、記憶體控制電路單元以及記憶體儲存裝置 | |
CN113496752B (zh) | 解码方法、存储器存储装置及存储器控制电路单元 | |
CN110795268B (zh) | 比特判断方法、存储器控制电路单元以及存储器存储装置 | |
TWI742509B (zh) | 資料寫入方法、記憶體控制電路單元以及記憶體儲存裝置 | |
US10978163B2 (en) | Voltage identifying method, memory controlling circuit unit and memory storage device | |
CN109960603B (zh) | 比特标记方法、存储器控制电路单元以及存储器存储装置 |