具體來說,同 一條字符線上的存儲胞會組成一或多個(gè)實(shí)體程序化單元。若每一個(gè)存儲胞可存儲2個(gè)以上 的比特,則同一條字符線上的實(shí)體程序化單元至少可被分類為下實(shí)體程序化單元與上實(shí)體 程序化單元。例如,一存儲胞的最低有效比特(Least Significant Bit,簡稱LSB)是屬于下 實(shí)體程序化單元,并且一存儲胞的最高有效比特(Most Significant Bit,簡稱MSB)是屬于 上實(shí)體程序化單元。一般來說,在MLC NAND型快閃存儲器中,下實(shí)體程序化單元的寫入速 度會大于上實(shí)體程序化單元的寫入速度,或下實(shí)體程序化單元的可靠度是高于上實(shí)體程序 化單元的可靠度。在此范例實(shí)施例中,實(shí)體程序化單元為程序化的最小單元。即,實(shí)體程序 化單元為寫入數(shù)據(jù)的最小單元。例如,實(shí)體程序化單元為實(shí)體頁面或是實(shí)體扇(sector)。 若實(shí)體程序化單元為實(shí)體頁面,則每一個(gè)實(shí)體程序化單元通常包括數(shù)據(jù)比特區(qū)與冗余比特 區(qū)。數(shù)據(jù)比特區(qū)包含多個(gè)實(shí)體扇,用以存儲使用者的數(shù)據(jù),而冗余比特區(qū)用以存儲系統(tǒng)的數(shù) 據(jù)(例如,錯(cuò)誤更正碼)。在本實(shí)施例中,每一個(gè)數(shù)據(jù)比特區(qū)包含32個(gè)實(shí)體扇,且一個(gè)實(shí)體 扇的大小為512字節(jié)(byte,簡稱B)。然而,在其他實(shí)施例中,數(shù)據(jù)比特區(qū)中也可包含8個(gè)、 16個(gè)或數(shù)目更多或更少的實(shí)體扇,本發(fā)明并不限制實(shí)體扇的大小以及個(gè)數(shù)。另一方面,實(shí)體 抹除單元為抹除的最小單位。也即,每一實(shí)體抹除單元含有最小數(shù)目之一并被抹除的存儲 胞。例如,實(shí)體抹除單元為實(shí)體區(qū)塊。
[0114] 可復(fù)寫式非易失性存儲器模塊406可以是以第一程序化模式或第二程序化模式 來使用。例如,以第一程序化模式或第二程序化模式來使用可復(fù)寫式非易失性存儲器模 塊406中的一個(gè)實(shí)體程序化單元是指以第一程序化模式或第二程序化模式來程序化此實(shí) 體程序化單元中的存儲胞。第一程序化模式亦稱為多層存儲胞模式。若是以第一程序化 模式來使用一個(gè)實(shí)體程序化單元,則此實(shí)體程序化單元中的每一個(gè)存儲胞存儲有一第一數(shù) 量的比特?cái)?shù)據(jù),其中此第一數(shù)量不小于2。例如,此第一數(shù)量為2或3。第二程序化模式包 括單層存儲胞模式(SLC mode)、下實(shí)體程序化模式(lower physical programming unit programming mode)、混合程序化模式(mixture programming mode)及少層存儲胞模式的 至少其中之一。若是以單層存儲胞模式來使用一個(gè)實(shí)體程序化單元,則此實(shí)體程序化單元 中的每一個(gè)存儲胞只存儲一個(gè)比特?cái)?shù)據(jù)。若是以下實(shí)體程序化模式來使用可復(fù)寫式非易失 性存儲器模塊406,則可復(fù)寫式非易失性存儲器模塊406中只有屬于下實(shí)體程序化單元的 實(shí)體程序化單元會被程序化,而下實(shí)體程序化單元所對應(yīng)的上實(shí)體程序化單元可以不被程 序化。若是以混合程序化模式來使用可復(fù)寫式非易失性存儲器模塊406,則有效數(shù)據(jù)(或真 實(shí)數(shù)據(jù))會被程序化至屬于下實(shí)體程序化單元的實(shí)體程序化單元中,而不會被程序化至屬 于上實(shí)體程序化單元的實(shí)體程序化單元中,但對應(yīng)于有效數(shù)據(jù)(或真實(shí)數(shù)據(jù))的無效數(shù)據(jù) (或虛擬數(shù)據(jù))則會被程序化至屬于上實(shí)體程序化單元的實(shí)體程序化單元中。若是以少層 存儲胞模式來使用一個(gè)實(shí)體程序化單元,則此實(shí)體程序化單元中的每一個(gè)存儲胞存儲有一 第二數(shù)量的比特?cái)?shù)據(jù),其中此第二數(shù)量小于第一數(shù)量。例如,此第二數(shù)量為1或2。一般來 說,使用第二程序化模式的實(shí)體程序化單元的程序化速度會高于使用第一程序化模式的實(shí) 體程序化單元的程序化速度。
[0115] 圖8是根據(jù)本發(fā)明的一實(shí)施例所示的存儲器控制電路單元的概要方塊圖。
[0116] 請參照圖8,存儲器控制電路單元404包括存儲器管理電路802、主機(jī)接口 804、存 儲器接口 806、錯(cuò)誤檢查與校正電路808及緩沖存儲器810。
[0117] 存儲器管理電路802用以控制存儲器控制電路單元404的整體運(yùn)作。具體來說, 存儲器管理電路802具有多個(gè)控制指令,并且在存儲器存儲裝置10運(yùn)作時(shí),此些控制指令 會被執(zhí)行以進(jìn)行數(shù)據(jù)的寫入、讀取與抹除等運(yùn)作。以下說明存儲器管理電路802的操作時(shí), 等同于說明存儲器控制電路單元404的操作,以下并不再贅述。
[0118] 在本實(shí)施例中,存儲器管理電路802的控制指令是以固件型式來實(shí)作。例如,存儲 器管理電路802具有微處理器單元(未示出)與只讀存儲器(未示出),并且此些控制指令 是被燒錄至此只讀存儲器中。當(dāng)存儲器存儲裝置10運(yùn)作時(shí),此些控制指令會由微處理器單 元來執(zhí)行以進(jìn)行數(shù)據(jù)的寫入、讀取與抹除等運(yùn)作。
[0119] 在另一實(shí)施例中,存儲器管理電路802的控制指令也可以程序碼型式存儲于可復(fù) 寫式非易失性存儲器模塊406的特定區(qū)域(例如,存儲器模塊中專用于存放系統(tǒng)數(shù)據(jù)的系 統(tǒng)區(qū))中。此外,存儲器管理電路802具有微處理器單元(未示出)、只讀存儲器(未示出) 及隨機(jī)存取存儲器(未示出)。特別是,此只讀存儲器具有開機(jī)碼(boot code),并且當(dāng)存 儲器控制電路單元404被致能時(shí),微處理器單元會先執(zhí)行此開機(jī)碼來將存儲于可復(fù)寫式非 易失性存儲器模塊406中的控制指令載入至存儲器管理電路802的隨機(jī)存取存儲器中。之 后,微處理器單元會運(yùn)轉(zhuǎn)此些控制指令以進(jìn)行數(shù)據(jù)的寫入、讀取與抹除等運(yùn)作。
[0120] 此外,在另一實(shí)施例中,存儲器管理電路802的控制指令也可以一硬件型式來實(shí) 作。例如,存儲器管理電路802包括微控制器、存儲器管理單元、存儲器寫入單元、存儲器讀 取單元、存儲器抹除單元與數(shù)據(jù)處理單元。存儲器管理單元、存儲器寫入單元、存儲器讀取 單元、存儲器抹除單元與數(shù)據(jù)處理單元是電性連接至微控制器。其中,存儲器管理單元用以 管理可復(fù)寫式非易失性存儲器模塊406的實(shí)體抹除單元;存儲器寫入單元用以對可復(fù)寫式 非易失性存儲器模塊406下達(dá)寫入指令以將數(shù)據(jù)寫入至可復(fù)寫式非易失性存儲器模塊406 中;存儲器讀取單元用以對可復(fù)寫式非易失性存儲器模塊406下達(dá)讀取指令以從可復(fù)寫式 非易失性存儲器模塊406中讀取數(shù)據(jù);存儲器抹除單元用以對可復(fù)寫式非易失性存儲器模 塊406下達(dá)抹除指令以將數(shù)據(jù)從可復(fù)寫式非易失性存儲器模塊406中抹除;而數(shù)據(jù)處理單 元用以處理欲寫入至可復(fù)寫式非易失性存儲器模塊406的數(shù)據(jù)以及從可復(fù)寫式非易失性 存儲器模塊406中讀取的數(shù)據(jù)。
[0121 ] 主機(jī)接口 804是電性連接至存儲器管理電路802并且用以接收與識別主機(jī)系統(tǒng)11 所傳送的指令與數(shù)據(jù)。也就是說,主機(jī)系統(tǒng)11所傳送的指令與數(shù)據(jù)會通過主機(jī)接口 804來 傳送至存儲器管理電路802。在本實(shí)施例中,主機(jī)接口 804是相容于SATA標(biāo)準(zhǔn)。然而,必須 了解的是本發(fā)明不限于此,主機(jī)接口 804也可以是相容于PATA標(biāo)準(zhǔn)、IEEE 1394標(biāo)準(zhǔn)、PCI Express標(biāo)準(zhǔn)、USB標(biāo)準(zhǔn)、SD標(biāo)準(zhǔn)、UHS-I標(biāo)準(zhǔn)、UHS-II標(biāo)準(zhǔn)、MS標(biāo)準(zhǔn)、MMC標(biāo)準(zhǔn)、eMMC標(biāo)準(zhǔn)、 UFS標(biāo)準(zhǔn)、CF標(biāo)準(zhǔn)、IDE標(biāo)準(zhǔn)或其他適合的數(shù)據(jù)傳輸標(biāo)準(zhǔn)。
[0122] 存儲器接口 806是電性連接至存儲器管理電路802并且用以存取可復(fù)寫式非易失 性存儲器模塊406。也就是說,欲寫入至可復(fù)寫式非易失性存儲器模塊406的數(shù)據(jù)會經(jīng)由存 儲器接口 806轉(zhuǎn)換為可復(fù)寫式非易失性存儲器模塊406所能接受的格式。具體來說,若存 儲器管理電路802要存取可復(fù)寫式非易失性存儲器模塊406,存儲器接口 806會傳送對應(yīng)的 指令序列。這些指令序列可包括一或多個(gè)信號,或是在總線上的數(shù)據(jù)。例如,在讀取指令序 列中,會包括讀取的辨識碼、存儲器地址等信息。
[0123] 錯(cuò)誤檢查與校正電路808是電性連接至存儲器管理電路802并且用以執(zhí)行錯(cuò)誤檢 查與校正程序以確保數(shù)據(jù)的正確性。具體來說,當(dāng)存儲器管理電路802從主機(jī)系統(tǒng)11中接 收到寫入指令時(shí),錯(cuò)誤檢查與校正電路808會為對應(yīng)此寫入指令的數(shù)據(jù)產(chǎn)生對應(yīng)的錯(cuò)誤更 正碼(error correcting code,簡稱 ECC)及 / 或錯(cuò)誤檢查碼(error detecting code,簡 稱m)C),并且存儲器管理電路802會將對應(yīng)此寫入指令的數(shù)據(jù)與對應(yīng)的錯(cuò)誤更正碼及/或 錯(cuò)誤檢查碼寫入至可復(fù)寫式非易失性存儲器模塊406中。之后,當(dāng)存儲器管理電路802從 可復(fù)寫式非易失性存儲器模塊406中讀取數(shù)據(jù)時(shí)會同時(shí)讀取此數(shù)據(jù)對應(yīng)的錯(cuò)誤更正碼及/ 或錯(cuò)誤檢查碼,并且錯(cuò)誤檢查與校正電路808會依據(jù)此錯(cuò)誤更正碼及/或錯(cuò)誤檢查碼對所 讀取的數(shù)據(jù)執(zhí)行錯(cuò)誤檢查與校正程序。
[0124] 緩沖存儲器810是電性連接至存儲器管理電路802并且用以暫存來自于主機(jī)系統(tǒng) 11的數(shù)據(jù)與指令或來自于可復(fù)寫式非易失性存儲器模塊406的數(shù)據(jù)。
[0125] 在一實(shí)施例中,存儲器控制電路單元404還包括電源管理電路812。電源管理電路 812是電性連接至存儲器管理電路802并且用以控制存儲器存儲裝置10的電源。
[0126] 在本實(shí)施例中,錯(cuò)誤檢查與校正電路808所使用的是低密度奇偶檢查校正碼(low density parity code,簡稱LDPC)。然而,在另一實(shí)施例中,錯(cuò)誤檢查與校正電路808所使 用的也可以是BCH碼、回旋碼(convolutional code)、潤輪碼(turbo code),本發(fā)明不加以 限制。
[0127] 在本實(shí)施例中,錯(cuò)誤檢查與校正電路808會根據(jù)一個(gè)低密度奇偶檢查演算法來編 碼與解碼。在低密度奇偶檢查校正碼中,是用一個(gè)奇偶檢查矩陣來定義有效的碼字。以下 將奇偶檢查矩陣標(biāo)記為矩陣H,并且一碼字標(biāo)記為CW。依照以下方程式(1),若奇偶檢查矩 陣Η與碼字CW的相乘是零向量,表示碼字CW為有效的碼字。其中運(yùn)算子(g表示模2 (mod 2)的矩陣相乘。換言之,矩陣Η的零空間(null space)便包含了所有的有效碼字。然而, 本發(fā)明并不限制碼字CW的內(nèi)容。例如,碼字CW也可以包括用任意演算法所產(chǎn)生的錯(cuò)誤更 正碼或是錯(cuò)誤檢查碼。
[0128] II?CW =0,..(1)
[0129] 其中矩陣Η的維度是m-乘-n (m-by-n),碼字CW的維度是1-乘-n。m與η為正整 數(shù)。碼字CW中包括了信息比特與奇偶比特,即碼字CW可以表示成[Μ Ρ],其中向量Μ是由 信息比特所組成,向量Ρ是由奇偶比特所組成。向量Μ的維度是1-乘-(n-m),而向量Ρ的 維度是1-乘_m。以下將信息比特與奇偶比特統(tǒng)稱為數(shù)據(jù)比特。換言之,碼字CW中具有η 個(gè)數(shù)據(jù)比特,其中信息比特的長度為(n-m)比特,并且奇偶比特的長度是m比特,即碼字CW 的碼率(code rate)為(n_m)/η。
[0130] 一般來說,在編碼時(shí)會使用一個(gè)產(chǎn)生矩陣(以下標(biāo)記為G),使得對于任意的向量Μ 都可滿足以下方程式(2)。其中產(chǎn)生矩陣G的維度是(n-m)_乘-η。
[0131]
[0132] 由方程式(2)所產(chǎn)生的碼字CW為有效的碼字。因此可將方程式⑵代入方程式 (1),藉此得到以下方程式(3)。
[0133]
[0134] 由于向量Μ可以是任意的向量,因此以下方程式(4)必定會滿足。也就是說,在決 定奇偶檢查矩陣Η以后,對應(yīng)的產(chǎn)生矩陣G也可被決定。
[0135]
[0136] 在解碼一個(gè)碼字CW時(shí),會先對碼字中的數(shù)據(jù)比特執(zhí)行一個(gè)奇偶檢查程序,例如將 奇偶檢查矩陣Η與碼字CW相乘以產(chǎn)生一個(gè)向量(以下標(biāo)記為S,如以下方程式(5)所示)。 若向量S是零向量,則可直接輸出碼字CW。若向量S不是零向量,則表示碼字CW不是有效 的碼字。
[0137]
[0138] 向量S的維度是m-乘-1,其中每一個(gè)元素亦稱為校驗(yàn)子(syndrome)。若碼字CW 不是有效的碼字,則錯(cuò)誤檢查與校正電路808會執(zhí)行一個(gè)解碼程序,以嘗試更正碼字CW中 的錯(cuò)誤比特。在一范例實(shí)施例中,錯(cuò)誤檢查與校正電路808所執(zhí)行的解碼程序?yàn)橐坏?(iteration)解碼程序。也就是說,解碼的程序會不斷的重復(fù)執(zhí)行,直到成功的解出碼字或 執(zhí)行次數(shù)到達(dá)一預(yù)定門限值為止。若成功的解出碼字,表示解碼成功;反之,則表示解碼失 敗。例如,在對于碼字CW的解碼程序的執(zhí)行次數(shù)到達(dá)上述預(yù)設(shè)門限值時(shí),若還無法確定碼 字CW中的錯(cuò)誤比特,表示錯(cuò)誤檢查與校正電路808對于碼字CW解碼失敗。
[0139] 在本實(shí)施例中,若對于某一個(gè)碼字解碼失敗,則存儲器管理電路802會調(diào)整讀取 電壓,并且利用調(diào)整后的讀取電壓來取得另一個(gè)碼字。例如,假設(shè)原先用來讀取某一個(gè)實(shí) 體程序化單元中的存儲胞的讀取電壓是預(yù)設(shè)讀取電壓,則在對于讀取出的數(shù)據(jù)解碼失敗之 后,存儲器管理電路802會指示可復(fù)寫式非易失性存儲器模塊406使用與預(yù)設(shè)讀取電壓不 同的另一個(gè)讀取電壓來再次讀取此實(shí)體程序化單元中的存儲胞以取得另一個(gè)碼字。在取得 另一個(gè)碼字之后,錯(cuò)誤檢查與校正電路808會對此另一個(gè)碼字進(jìn)行解碼;若可解碼成功,則 錯(cuò)誤檢查與校正電路808會輸出此碼字;若解碼失敗,則存儲器管理電路802會重復(fù)執(zhí)行上 述調(diào)整讀取電壓等操作,直到可成功解碼或切換讀取電壓的次數(shù)達(dá)到一預(yù)設(shè)次數(shù)為止。
[0140] 圖9是根據(jù)本發(fā)明的一實(shí)施例所示的管理可復(fù)寫式非易失性存儲器模塊的示意 圖。必須了解的是,在此描述可復(fù)寫式非易失性存儲器模塊406的實(shí)體抹除單元的運(yùn)作時(shí), 以"選擇"、"分組"、"劃分"、"關(guān)聯(lián)"等詞來操作實(shí)體抹除單元是邏輯上的概念。也就是說, 可復(fù)寫式非易失性存儲器模塊406的實(shí)體抹除單元的實(shí)際位置并未更動(dòng),而是邏輯上對可 復(fù)寫式非易失性存儲器模塊的實(shí)體抹除單元進(jìn)行操作。
[0141] 請參照圖8,存儲器管理電路802可將可復(fù)寫式非易失性存儲器模塊406的實(shí)體抹 除單元700(0)~700 (N)邏輯地劃分為多個(gè)區(qū)