TWI712052B - 記憶體管理方法、儲存控制器與儲存裝置 - Google Patents
記憶體管理方法、儲存控制器與儲存裝置 Download PDFInfo
- Publication number
- TWI712052B TWI712052B TW108145218A TW108145218A TWI712052B TW I712052 B TWI712052 B TW I712052B TW 108145218 A TW108145218 A TW 108145218A TW 108145218 A TW108145218 A TW 108145218A TW I712052 B TWI712052 B TW I712052B
- Authority
- TW
- Taiwan
- Prior art keywords
- read
- block
- physical
- target
- physical block
- Prior art date
Links
Images
Landscapes
- Read Only Memory (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本發明的一實施例提供一種記憶體管理方法。所述方法包括:記錄多個實體區塊各自的區塊類型;以及執行預讀取程序。所述預讀取程序包括:辨識分別對應至所述多個實體區塊類型的多個預讀取週期;根據所述多個預讀取週期及所述多個區塊類型選擇所述多個實體區塊中的一目標實體區塊,其中所述目標實體區塊的目標未存取持續時間不小於所述多個預讀取週期中對應所述目標實體區塊的目標區塊類型的目標預讀取週期;以及對所述目標實體區塊施加一預讀取電壓。
Description
本發明是有關於一種記憶體管理方法,且特別是有關於一種配置有可複寫式非揮發性記憶體模組的儲存裝置、所述儲存裝置的儲存控制器以及所使用的記憶體管理方法。
一般來說,在對儲存裝置的可複寫式非揮發性記憶體模組執行讀取操作時,若資料讀取失敗的情況發生,儲存裝置的儲存控制器會執行讀取重試操作,以嘗試獲得正確的對應的所述讀取操作的資料。
特別是,假設可複寫式非揮發性記憶體模組為三維NAND型快閃記憶體模組且於其中的一個實體區塊已經持續一段期間沒有被存取,當對所述實體區塊執行讀取操作時,對應於所讀取資料的錯誤率(錯誤位元數)會極高,導致了所讀取的資料不可被校正,進而發生資料讀取失敗。因此,如何有效率地避免上述三維NAND型快閃記憶體模組的資料讀取錯誤的問題,進而增進可複寫式非揮發性記憶體模組的讀取操作的效率,是本領域人員研究的課題之一。
本發明提供一種資料讀取方法與儲存控制器,可自動地根據不同的實體區塊的類型來執行對應的預讀取操作,以預先消除儲存裝置的可複寫式非揮發性記憶體模組所發生的首讀問題,進而增進可複寫式非揮發性記憶體模組的讀取效率。
本發明的一實施例提供用於控制配置有可複寫式非揮發性記憶體模組的一儲存裝置的一種儲存控制器。所述儲存控制器包括連接介面電路、記憶體介面控制電路、預讀取電路單元以及處理器。所述連接介面電路用以耦接至一主機系統。所述記憶體介面控制電路用以耦接至所述可複寫式非揮發性記憶體模組,其中所述可複寫式非揮發性記憶體模組具有多個實體區塊。所述處理器耦接至所述連接介面電路、所述記憶體介面控制電路及所述預讀取電路單元。所述處理器用以記錄所述多個實體區塊各自的區塊類型,並且更用以指示所述預讀取電路單元執行預讀取程序。在所述預讀取程序中,所述預讀取電路單元用以辨識分別對應至所述多個實體區塊類型的多個預讀取週期,其中所述預讀取電路單元根據所述多個預讀取週期及所述多個區塊類型選擇所述多個實體區塊中的一目標實體區塊,其中所述目標實體區塊的目標未存取持續時間不小於所述多個預讀取週期中對應所述目標實體區塊的目標區塊類型的目標預讀取週期,其中所述預讀取電路單元更用以指示所述處理器對所述目標實體區塊施加一預讀取電壓。
本發明的一實施例提供適用於用以控制配置有一可複寫式非揮發性記憶體模組的一儲存裝置的儲存控制器的一種記憶體管理方法,其中所述可複寫式非揮發性記憶體模組具有多個實體區塊。所述方法包括:記錄所述多個實體區塊各自的區塊類型;以及執行預讀取程序。所述預讀取程序包括:辨識分別對應至所述多個實體區塊類型的多個預讀取週期;根據所述多個預讀取週期及所述多個區塊類型選擇所述多個實體區塊中的一目標實體區塊,其中所述目標實體區塊的目標未存取持續時間不小於所述多個預讀取週期中對應所述目標實體區塊的目標區塊類型的目標預讀取週期;以及對所述目標實體區塊施加一預讀取電壓。
本發明的一實施例提供一種儲存裝置。所述儲存裝置包括可複寫式非揮發性記憶體模組及儲存控制器。所述可複寫式非揮發性記憶體模組具有多個實體區塊。所述儲存控制器耦接至所述可複寫式非揮發性記憶體模組。所述儲存控制器用以記錄所述多個實體區塊各自的區塊類型,並且更用以執行一預讀取程序。在所述預讀取程序中,所述儲存控制器更用以辨識分別對應至所述多個實體區塊類型的多個預讀取週期,其中所述儲存控制器根據所述多個預讀取週期及所述多個區塊類型選擇所述多個實體區塊中的一目標實體區塊,其中所述目標實體區塊的目標未存取持續時間不小於所述多個預讀取週期中對應所述目標實體區塊的目標區塊類型的目標預讀取週期,其中所述儲存控制器更用以對所述目標實體區塊施加一預讀取電壓。
基於上述,本發明的實施例所提供的記憶體管理方法、儲存控制器與儲存裝置,可根據所述儲存裝置的可複寫式非揮發性記憶體模組的多個實體區塊各自的預讀取週期及區塊類型從所述多個實體區塊中選擇目標實體區塊,並且對所述目標實體區塊施加一預讀取電壓,以解除於可複寫式非揮發性記憶體模組中發生的首讀問題,進而增進了儲存裝置的讀取效率。
在本實施例中,儲存裝置包括可複寫式非揮發性記憶體模組(rewritable non-volatile memory module)與儲存裝置控制器(亦稱,儲存控制器或儲存控制電路)。此外,儲存裝置是與主機系統一起使用,以使主機系統可將資料寫入至儲存裝置或從儲存裝置中讀取資料。
圖1是根據本發明的一實施例所繪示的主機系統及儲存裝置的方塊示意圖。
請參照圖1,主機系統(Host System)10包括處理器(Processor)110、主機記憶體(Host Memory)120及資料傳輸介面電路(Data Transfer Interface Circuit)130。在本實施例中,資料傳輸介面電路130耦接(亦稱,電性連接)至處理器110與主機記憶體120。在另一實施例中,處理器110、主機記憶體120與資料傳輸介面電路130之間利用系統匯流排(System Bus)彼此耦接。
儲存裝置20包括儲存控制器(Storage Controller)210、可複寫式非揮發性記憶體模組(Rewritable Non-Volatile Memory Module)220及連接介面電路(Connection Interface Circuit)230。其中,儲存控制器210包括處理器211、資料管理電路(Data Management Circuit)212與記憶體介面控制電路(Memory Interface Control Circuit)213。
在本實施例中,主機系統10是透過資料傳輸介面電路130與儲存裝置20的連接介面電路230耦接至儲存裝置20來進行資料的存取操作。例如,主機系統10可經由資料傳輸介面電路130將資料儲存至儲存裝置20(經由下達寫入指令)或從儲存裝置20中讀取資料(經由下達讀取指令)。
在本實施例中,處理器110、主機記憶體120及資料傳輸介面電路130可設置在主機系統10的主機板上。資料傳輸介面電路130的數目可以是一或多個。透過資料傳輸介面電路130,主機板可以經由有線或無線方式耦接至儲存裝置20。儲存裝置20可例如是隨身碟、記憶卡、固態硬碟(Solid State Drive,SSD)或無線記憶體儲存裝置。無線記憶體儲存裝置可例如是近距離無線通訊(Near Field Communication,NFC)記憶體儲存裝置、無線傳真(WiFi)記憶體儲存裝置、藍牙(Bluetooth)記憶體儲存裝置或低功耗藍牙記憶體儲存裝置(例如,iBeacon)等以各式無線通訊技術為基礎的記憶體儲存裝置。此外,主機板也可以透過系統匯流排耦接至全球定位系統(Global Positioning System,GPS)模組、網路介面卡、無線傳輸裝置、鍵盤、螢幕、喇叭等各式I/O裝置。
在本實施例中,資料傳輸介面電路130與連接介面電路230是相容於高速周邊零件連接介面(Peripheral Component Interconnect Express, PCI Express)標準的介面電路。並且,資料傳輸介面電路130與連接介面電路230之間是利用快速非揮發性記憶體介面標準(Non-Volatile Memory express,NVMe)通訊協定來進行資料的傳輸。
然而,必須瞭解的是,本發明不限於此,資料傳輸介面電路130與連接介面電路230亦可以是符合並列先進附件(Parallel Advanced Technology Attachment,PATA)標準、電氣和電子工程師協會(Institute of Electrical and Electronic Engineers,IEEE)1394標準、序列先進附件(Serial Advanced Technology Attachment,SATA)標準、通用序列匯流排(Universal Serial Bus,USB)標準、SD介面標準、超高速一代(Ultra High Speed-I,UHS-I)介面標準、超高速二代(Ultra High Speed-II,UHS-II)介面標準、記憶棒(Memory Stick, MS)介面標準、多晶片封裝(Multi-Chip Package)介面標準、多媒體儲存卡(Multi Media Card,MMC)介面標準、eMMC介面標準、通用快閃記憶體(Universal Flash Storage,UFS)介面標準、eMCP介面標準、CF介面標準、整合式驅動電子介面(Integrated Device Electronics,IDE)標準或其他適合的標準。此外,在另一實施例中,連接介面電路230可與儲存控制器210封裝在一個晶片中,或者連接介面電路230是佈設於一包含儲存控制器210之晶片外。
在本實施例中,主機記憶體120用以暫存處理器110所執行的指令或資料。例如,在本範例實施例中,主機記憶體120可以是動態隨機存取記憶體(Dynamic Random Access Memory,DRAM)、靜態隨機存取記憶體(Static Random Access Memory,SRAM)等。然而,必須瞭解的是,本發明不限於此,主機記憶體120也可以是其他適合的記憶體。
儲存控制器210用以執行以硬體型式或韌體型式實作的多個邏輯閘或控制指令並且根據主機系統10的指令在可複寫式非揮發性記憶體模組220中進行資料的寫入、讀取與抹除等運作。
更詳細來說,儲存控制器210中的處理器211為具備運算能力的硬體,其用以控制儲存控制器210的整體運作。具體來說,處理器211具有多個控制指令,並且在儲存裝置20運作時,此些控制指令會被執行以進行資料的寫入、讀取與抹除等運作。
值得一提的是,在本實施例中,處理器110與處理器211例如是中央處理單元(Central Processing Unit,CPU)、微處理器(micro-processor)、或是其他可程式化之處理單元(Processing unit)、數位訊號處理器(Digital Signal Processor,DSP)、可程式化控制器、特殊應用積體電路(Application Specific Integrated Circuits,ASIC)、可程式化邏輯裝置(Programmable Logic Device,PLD)或其他類似電路元件,本發明並不限於此。
在一實施例中,儲存控制器210還具有唯讀記憶體(未繪示)及隨機存取記憶體(未繪示)。特別是,此唯讀記憶體具有開機碼(boot code),並且當儲存控制器210被致能時,處理器211會先執行此開機碼來將儲存於可複寫式非揮發性記憶體模組220中之控制指令載入至儲存控制器210的隨機存取記憶體中。之後,處理器211會運轉此些控制指令以進行資料的寫入、讀取與抹除等運作。在另一實施例中,處理器211的控制指令亦可以程式碼型式儲存於可複寫式非揮發性記憶體模組220的特定區域,例如,可複寫式非揮發性記憶體模組220中專用於存放系統資料的實體單元(如,屬於系統區塊類型的實體區塊)中。
在本實施例中,如上所述,儲存控制器210還包括資料管理電路212與記憶體介面控制電路213。應注意的是,儲存控制器210各部件所執行的操作亦可視為儲存控制器210所執行的操作。
其中,資料管理電路212耦接至處理器211、記憶體介面控制電路213與連接介面電路230。資料管理電路212用以接受處理器211的指示來進行資料的傳輸。例如,經由連接介面電路230從主機系統10(如,主機記憶體120)讀取資料,並且將所讀取的資料經由記憶體介面控制電路213寫入至可複寫式非揮發性記憶體模組220中(如,根據來自主機系統10的寫入指令來進行寫入操作)。又例如,經由記憶體介面控制電路213從可複寫式非揮發性記憶體模組220的一或多個實體單元中讀取資料(資料可讀取自一或多個實體單元中的一或多個記憶胞),並且將所讀取的資料經由連接介面電路230寫入至主機系統10(如,主機記憶體120)中(如,根據來自主機系統10的讀取指令來進行讀取操作)。在另一實施例中,資料管理電路212亦可整合至處理器211中。
記憶體介面控制電路213用以接受處理器211的指示,配合資料管理電路212來進行對於可複寫式非揮發性記憶體模組220的寫入(亦稱,程式化,Programming)操作、讀取操作或抹除操作。
舉例來說,處理器211可執行寫入指令序列,以指示記憶體介面控制電路213將資料寫入至可複寫式非揮發性記憶體模組220中;處理器211可執行讀取指令序列,以指示記憶體介面控制電路213從可複寫式非揮發性記憶體模組220的對應讀取指令的一或多個實體單元中讀取資料;處理器211可執行抹除指令序列,以指示記憶體介面控制電路213對可複寫式非揮發性記憶體模組220進行抹除操作。寫入指令序列、讀取指令序列及抹除指令序列可各別包括一或多個程式碼或指令碼並且用以指示對可複寫式非揮發性記憶體模組220執行相對應的寫入、讀取及抹除等操作。在一實施例中,處理器211還可以下達其他類型的指令序列給記憶體介面控制電路213,以對可複寫式非揮發性記憶體模組220執行相對應的操作。
此外,欲寫入至可複寫式非揮發性記憶體模組220的資料會經由記憶體介面控制電路213轉換為可複寫式非揮發性記憶體模組220所能接受的格式。具體來說,若處理器211要存取可複寫式非揮發性記憶體模組220,處理器211會傳送對應的指令序列給記憶體介面控制電路213以指示記憶體介面控制電路213執行對應的操作。例如,這些指令序列可包括指示寫入資料的寫入指令序列、指示讀取資料的讀取指令序列、指示抹除資料的抹除指令序列、以及用以指示各種記憶體操作(例如,執行預讀取程序,或執行垃圾回收程序等等)的相對應的指令序列。這些指令序列可包括一或多個訊號,或是在匯流排上的資料。這些訊號或資料可包括指令碼或程式碼。例如,在讀取指令序列中,會包括讀取的辨識碼、記憶體位址等資訊。應注意的是,用於管理可複寫式非揮發性記憶體模組220的多個記憶體操作亦可包含所述寫入指令序列與所述讀取指令序列。
可複寫式非揮發性記憶體模組220是耦接至儲存控制器210(記憶體介面控制電路213)並且用以儲存主機系統10所寫入之資料。可複寫式非揮發性記憶體模組220可以是單階記憶胞(Single Level Cell,SLC)NAND型快閃記憶體模組(即,一個記憶胞中可儲存1個位元的快閃記憶體模組)、多階記憶胞(Multi Level Cell,MLC)NAND型快閃記憶體模組(即,一個記憶胞中可儲存2個位元的快閃記憶體模組)、三階記憶胞(Triple Level Cell,TLC)NAND型快閃記憶體模組(即,一個記憶胞中可儲存3個位元的快閃記憶體模組)、四階記憶胞(Quadruple Level Cell,QLC)NAND型快閃記憶體模組(即,一個記憶胞中可儲存4個位元的快閃記憶體模組)、三維NAND型快閃記憶體模組(3D NAND flash memory module)(可具有多個三階或四階記憶胞,如,三維四階記憶胞NAND型快閃記憶體模組(3D QLC NAND flash memory module))或垂直NAND型快閃記憶體模組(Vertical NAND flash memory module)(可具有多個三階或四階記憶胞,如,垂直四階記憶胞NAND型快閃記憶體模組(Vertical QLC NAND flash memory module))等其他快閃記憶體模組或其他具有相同特性的記憶體模組。可複寫式非揮發性記憶體模組220中的記憶胞是以陣列的方式設置。
值得一提的是,屬於三維NAND型快閃記憶體模組或直NAND型快閃記憶體模組的可複寫式非揮發性記憶體模組220更具有“首次讀取效應(First Read Effect)”的問題(亦稱為,首讀問題,First Read Issue)。處理器211不能經由使用預設讀取電壓組來讀取具有所述“首次讀取現象”的記憶胞以正確地獲得欲讀取的資料。更詳細來說,若三維NAND型快閃記憶體模組的一實體單元在被寫入資料後,經過一定的特定時間皆未被存取,該實體單元的記憶胞的臨界電壓會不規則地向左或是向右偏移,導致了後續的第一次讀取操作會發生失敗。此現象可稱為首次讀取現象(首讀問題)。
此外,若對一實體單元的兩次讀取操作的時間間隔小於所述特定時間,雖然第一次經由預設讀取電壓組的讀取操作會導致所讀取的資料發生錯誤(讀取操作失敗),但第二次經由預設讀取電壓組的讀取操作所讀取的資料卻是正確的。也就是說,在兩次讀取操作(如,第一次讀取操作與第二次讀取操作)之間的時間間隔小於所述特定時間的情況下,較前一次的讀取操作(如,第一次讀取操作)所讀取的資料會發生大量錯誤(較後一次的讀取操作並不會發生大量錯誤),上述的現象可稱為首次讀取現象(首讀問題)。簡單來說,在兩次存取操作之間的時間間隔不小於所述特定時間的情況下,較後一次的讀取操作會導致首次讀取現象,即,較後一次的讀取操作所讀取的資料會具有大量錯誤。
在本實施例中,可複寫式非揮發性記憶體模組220具有多個字元線,其中所述多個字元線的每一個字元線耦接至多個記憶胞。同一條字元線上的多個記憶胞會組成一或多個實體程式化單元(亦稱,實體頁面或實體扇區)。此外,多個實體程式化單元可組成一個實體單元(亦稱,實體區塊或實體抹除單元)。
在本實施例中,是以記憶胞作為寫入(程式化)資料的最小單位。實體單元為抹除之最小單位,即,每一實體單元含有最小數目之一併被抹除之記憶胞。
每一實體單元會具有多個實體子單元。實體子單元可為實體頁面(page)或是實體扇(sector)。在本實施例中,實體子單元包括資料位元區與冗餘(redundancy)位元區。資料位元區用以儲存使用者資料,而冗餘位元區用以儲存系統資料。系統資料例如為錯誤更正碼、錯誤檢查碼或元資料(Meta Data)。此外,在本實施例中,系統資料更可包括映射表或用以管理儲存裝置的其他資料。
應注意的是,在本實施例中,用以記錄一實體單元的資訊的系統資料可利用該實體單元中的一或多個實體子單元來記錄,或是利用一個系統區中用以記錄所有系統資料的特定實體單元的一或多個實體子單元來記錄(如,屬於系統區塊類型的實體區塊)。在本實施例中,所述對應一實體單元的系統資料包括該實體單元的抹除次數值(Program erase cycle,PEC)、寫入時間戳記(Writing Timestamp)、存取時間戳記(Accessing Timestamp)。所述存取時間戳記用以指示所對應的實體單元最後被存取的時間等資訊。此外,儲存控制器210亦可持續累計時間,以即時地產生相應於當前時間的時間戳記(亦可稱,當前裝置時間戳記,Current Device Timestamp)(即,持續辨識/記錄裝置的本地時間)。所述不同的時間戳記之間的大小差異(數值差異)可用來表示時間的先後順序。本發明並不限定所述時間戳記的詳細格式。在一實施例中,裝置的本地時間可藉由設置於儲存裝置20中的計時器(Timer)來被提供。
更詳細來說,每當處理器211對一實體單元進行抹除操作時,在完成所述抹除操作後,處理器211會對當前對應該實體單元的抹除次數值加1(如,抹除次數值會隨著每次的抹除操作而從0開始累加)。即,抹除次數值可反映出其所對應的實體單元的被抹除的次數的總和。此外,每對實體單元執行一個抹除操作時,處理器211會更新所述實體單元的存取時間戳記。例如,在完成對一個實體單元的抹除操作時,所述實體單元的存取時間戳記可基於對應於所述抹除操作的時間而被更新(如,將存取時間戳記更新為完成/執行所述抹除操作時的當前裝置時間戳記)。
另一方面,每當處理器211對一實體單元進行寫入操作時,處理器211會更新所述實體單元的存取時間戳記。例如,在完成對一個實體單元的寫入操作時,所述實體單元的寫入時間戳記以及存取時間戳記可基於對應於所述寫入操作的時間而被更新(如,分別將所述實體單元的寫入時間戳記及存取時間戳記更新為完成/執行所述寫入操作時的當前裝置時間戳記)。所述寫入操作例如是程式化資料至所述實體單元的一或多個實體子單元(或一或多個記憶胞),或例如是程式化資料至所述實體單元的其他型態的實體位址。
相似地,每當處理器211對一實體單元進行讀取操作時,處理器211會更新所述實體單元的存取時間戳記。例如,在完成對一個實體單元的讀取操作時,所述實體單元的存取時間戳記可基於對應於所述讀取操作的時間而被更新(如,將存取時間戳記更新為完成/執行所述讀取操作時的當前裝置時間戳記)。所述讀取操作例如是從所述實體單元的一或多個實體子單元(或一或多個記憶胞)中讀取資料,或例如是從所述實體單元的其他型態的實體位址中讀取資料。
在以下實施例中,是以一個實體區塊作為一個實體單元的範例。然而,在另一實施例中,一個實體單元亦可以是指任意數目的記憶胞組成,視實務上的需求而定。此外,必須瞭解的是,當儲存控制器211對可中的記憶胞(或實體單元)進行分組以執行對應的管理操作時,此些記憶胞(或實體單元)是被邏輯地分組,而其實際位置並未更動。
儲存控制器210會配置多個邏輯單元給可複寫式非揮發性記憶體模組220。主機系統10是透過所配置的邏輯單元來存取儲存在多個實體單元中的使用者資料。在此,每一個邏輯單元可以是由一或多個邏輯位址組成。例如,邏輯單元可以是邏輯區塊(Logical Block)、邏輯頁面(Logical Page)或是邏輯扇區(Logical Sector)。一個邏輯單元可以是映射至一或多個實體單元,其中實體單元可以是一或多個實體位址、一或多個實體扇、一或多個實體程式化單元或者一或多個實體抹除單元。在本實施例中,邏輯單元為邏輯區塊,並且邏輯子單元為邏輯頁面。每一邏輯單元具有多個邏輯子單元。
此外,儲存控制器210會建立邏輯轉實體位址映射表(Logical To Physical address mapping table)與實體轉邏輯位址映射表(Physical To Logical address mapping table),以記錄配置給可複寫式非揮發性記憶體模組220的邏輯單元(如,邏輯區塊、邏輯頁面或邏輯扇區)與實體單元(如,實體抹除單元、實體程式化單元、實體扇區)之間的位址映射關係。換言之,儲存控制器210可藉由邏輯轉實體位址映射表來查找一邏輯單元所映射的實體單元,並且儲存控制器210可藉由實體轉邏輯位址映射表來查找一實體單元所映射的邏輯單元。然而,上述有關邏輯單元與實體單元映射的技術概念為本領域技術人員之慣用技術手段且非本發明所欲闡述的技術方案,不再贅述於此。值得一提的是,上述的多個映射表(以及其他用以管理可複寫式非揮發性記憶體模組220的系統資料)可儲存/備份於用屬於系統區塊類型的實體區塊(亦稱,系統實體區塊)中。
在本實施例中,錯誤檢查與校正電路214是耦接至處理器211並且用以執行錯誤檢查與校正程序以確保資料的正確性。具體來說,當處理器211從主機系統10中接收到寫入指令時,錯誤檢查與校正電路214會為對應此寫入指令的資料產生對應的錯誤更正碼(error correcting code,ECC)及/或錯誤檢查碼(error detecting code,EDC),並且處理器211會將對應此寫入指令的資料與對應的錯誤更正碼及/或錯誤檢查碼寫入至可複寫式非揮發性記憶體模組220中。之後,當處理器211從可複寫式非揮發性記憶體模組220中讀取資料時會同時讀取此資料對應的錯誤更正碼及/或錯誤檢查碼,並且錯誤檢查與校正電路214會依據此錯誤更正碼及/或錯誤檢查碼對所讀取的資料執行錯誤檢查與校正程序。
例如,在對一字元線的多個實體頁面(屬於一或多個實體區塊)進行資料讀取操作,並且執行對應的錯誤檢查與校正程序時,錯誤檢查與校正電路214可獲得對應所述多個實體頁面的多個校驗子。錯誤檢查與校正電路214可回傳分別對應所述多個實體頁面的所述多個校驗子給處理器211。此外,在錯誤檢查與校正程序完成後,若成功解碼所讀取之資料,錯誤檢查與校正電路214可獲得分別對應所述多個實體頁面的多個錯誤位元數。錯誤檢查與校正電路214可回傳分別對應所述多個實體頁面的所述多個錯誤位元數給處理器211。反應於判定所獲得的錯誤位元數過大,或判定錯誤檢查與校正程序失敗,處理器211會判定相應的讀取操作為失敗(如,被執行讀取操作的一或多個實體區塊發生讀取操作失敗)。
在一實施例中,儲存控制器210還包括緩衝記憶體216與電源管理電路217。緩衝記憶體是耦接至處理器211並且用以暫存來自於主機系統10的資料與指令、來自於可複寫式非揮發性記憶體模組220的資料或其他用以管理儲存裝置20的系統資料,以讓處理器211可快速地從緩衝記憶體216中存取所述資料、指令或系統資料。電源管理電路217是耦接至處理器211並且用以控制儲存裝置20的電源。
在本實施例中,預讀取電路單元215包括預讀取週期管理電路2151與預讀取執行電路2152。所述預讀取電路單元215用以對所述可複寫式非揮發性記憶體模組220執行預讀取程序(亦稱,預讀取操作)。以下利用圖2~4來說明。
圖2是根據本發明的一實施例所繪示的記憶體管理方法的流程圖。請參照圖2,在步驟S210中,處理器211記錄多個實體區塊各自的區塊類型。
具體來說,所述處理器211根據所述多個實體區塊各自的物理狀況或所儲存的資料的資料類型來將所述多個實體區塊分類至所述多個區塊類型的其中之一,其中對應至所述多個區塊類型的所述多個預讀取週期為預先設定的。
在本實施例中,一個實體區塊的物理狀況的優劣可經由對應實體區塊的下列多個資訊的一或多者來識別:(1)錯誤位元數;(2)抹除次數值;以及(3)久存時間。更詳細來說,錯誤位元數越高的實體區塊被識別為物理狀況越差的實體區塊;抹除次數值越高的實體區塊被識別為物理狀況越差的實體區塊;久存時間越長的實體區塊被識別為物理狀況越差的實體區塊。
處理器211可進一步根據錯誤位元數、抹除次數值或久存時間來對多個實體區塊分類,以將所述多個實體區塊分類至多個區塊類型。
例如,假設處理器211使用錯誤位元數來進行分類,並且將錯誤位元數大於錯誤位元數門檻值的多個第一實體區塊分類至第一區塊類型;將錯誤位元數不大於錯誤位元數門檻值的多個第二實體區塊分類至第二區塊類型。處理器211可將每個實體區塊所屬的區塊類型的資訊記錄至對應每個實體區塊的系統資料或元資料中。所述區塊類型的資訊可被寫入至可複寫式非揮發性記憶體模組220。
又例如,廠商可根據可複寫式非揮發性記憶體模組的規格或是物理特性來預先設定所述抹除次數門檻值。處理器211使用抹除次數值來進行分類,將抹除次數值大於抹除次數門檻值的多個第一實體區塊分類至第一區塊類型,並且將抹除次數值不大於抹除次數門檻值的多個第二實體區塊分類至第二區塊類型。
在一實施例中,當記憶胞被寫入(程式化)資料且經過一段長時間(亦稱,久存時間門檻值)的存放時(如,該記憶胞長時間不再被寫入資料),所述記憶胞的臨界電壓分佈會發生所謂的久存(Retention)現象。若一記憶胞發生所述久存現象,相較於預設臨界電壓分佈,發生久存現象的記憶胞的臨界電壓分佈整體上會往左偏移。如此一來,若繼續利用預設讀取電壓組來從(久存狀態)該記憶胞中讀取資料,可能會導致所判定的所述記憶胞的位元狀態錯誤(即,若對具有久存現象的多個記憶胞的實體區塊進行讀取操作,會導致所述實體區塊發生讀取操作失敗)。例如,廠商可根據可複寫式非揮發性記憶體模組的規格或是物理特性來預先設定所述久存時間門檻值。處理器211使用久存時間來進行分類,將久存時間大於久存時間門檻值的多個第一實體區塊分類至第一區塊類型;將久存時間不大於久存時間門檻值的多個第二實體區塊分類至第二區塊類型。一個實體區塊的久存時間可經由計算當前裝置時間戳記與所述實體區塊的寫入時間戳記之間的差值來決定。
在獲得所述多個實體區塊各自的區塊類型後,處理器211(或預讀取週期管理電路2151)可賦予不同的預讀取週期給不同的區塊類型。例如,處理器211(或預讀取週期管理電路2151)可賦予第一預讀取週期(Pre-read cycle)給屬於所述第一區塊類型的所有的第一實體區塊(即,第一預讀取週期對應至第一區塊類型);以及賦予第二預讀取週期給屬於所述第二區塊類型的所有的第二實體區塊(即,第二預讀取週期對應至第二區塊類型),其中所述第一預讀取週期的長度小於所述第二預讀取週期的長度。簡單來說,在本實施例中,用以表示具有越差的物理狀況的區塊類型所對應的預讀取週期越小。
在一實施例中,多個實體區塊的區塊類型可經由儲存在所述多個實體區塊中的資料的資料類型來識別。資料類型可用以識別下列不同的多種資料:(1)使用者資料(user data);(2)第一系統資料;以及(3)第二系統資料。所述使用者資料例如是從主機系統10所接收的資料,其較需維持穩定性。所述第一系統資料例如是用以管理儲存裝置的各項運作的軟體或韌體的資料。所述第二系統資料例如是關聯於所述多個實體區塊的各種資訊的資料(如,映射表),其較不需要維持穩定性。
舉例來說,反應於判定所述多個實體區塊中的第一實體區塊被用以儲存使用者資料,所述第一實體區塊會被分類至第一區塊類型;反應於判定所述多個實體區塊中的第二實體區塊被用以儲存第一系統資料,所述第二實體區塊會被分類至第二區塊類型;反應於判定所述多個實體區塊中的第三實體區塊被用以儲存第二系統資料,所述第三實體區塊會被分類至第三區塊類型。
此外,處理器211(或預讀取週期管理電路2151)可賦予第一預讀取週期(Pre-read cycle)給屬於所述第一區塊類型的所有的第一實體區塊(即,第一預讀取週期對應至第一區塊類型);賦予第二預讀取週期給屬於所述第二區塊類型的所有的第二實體區塊(即,第二預讀取週期對應至第二區塊類型);以及賦予第三預讀取週期給屬於所述第三區塊類型的所有的第三實體區塊(即,第三預讀取週期對應至第三區塊類型),其中所述第一預讀取週期的長度小於所述第二預讀取週期的長度,並且所述第二預讀取週期的長度小於所述第三預讀取週期的長度。
簡單來說,在本實施例中,根據所儲存的資料的資料類型的不同,處理器211(或預讀取週期管理電路2151)可將所述多個實體區塊分類至不同的區塊類型,並且賦予相應的預讀取週期。
在又一實施例中,所述資料類型可用以指示所對應的資料被寫入的頻率、被讀取的頻率。例如,所述資料類型可用以識別下列不同的多種資料:(1)熱讀取資料(Hot Read Data),用以表示較高頻率被讀取的資料;(2)熱寫入資料(Hot Write Data),用以表示較高頻率被寫入的資料;(3)冷讀取資料(Cold Read Data),用以表示較低頻率被讀取的資料;以及(4)冷寫入資料(Cold Write Data),用以表示較低頻率被寫入的資料。所述熱讀取資料與所述熱寫入資料亦可統稱為熱資料;所述冷讀取資料與所述冷寫入資料亦可統稱為冷資料。
由於上述所說明的首讀問題的特性,用以儲存熱讀取資料/熱寫入資料的實體區塊會經由較高頻率被讀取/寫入資料,並且較不易發生首讀問題;用以儲存冷讀取資料/冷寫入資料的實體區塊會經由較低頻率被讀取/寫入資料,並且較易發生首讀問題(因為,兩個相隔的存取操作之間的間隔時間會較長)。基此,處理器211可將用以儲存冷讀取資料/冷寫入資料的多個第一實體區塊分類至第一區塊類型;將用以儲存熱讀取資料/熱寫入資料的多個第二實體區塊分類至第二區塊類型。此外,處理器211可賦予第一預讀取週期(Pre-read cycle)給屬於所述第一區塊類型的所有的第一實體區塊(即,第一預讀取週期對應至第一區塊類型);賦予第二預讀取週期給屬於所述第二區塊類型的所有的第二實體區塊(即,第二預讀取週期對應至第二區塊類型),其中所述第一預讀取週期的長度小於所述第二預讀取週期的長度。
在一實施例中,儲存冷資料的實體區塊所對應的存取時間戳記的值會最小,或是儲存冷資料的實體區塊所對應的抹除次數值會最小。基於此特性,相應於具有最小的存取時間戳記的實體區塊的預讀取週期以及相應於具有最小的抹除次數值的實體區塊的預讀取週期可被設定為較小的期間(如,第一預讀取週期)。
處理器211可將每個實體區塊所屬的區塊類型的資訊記錄至對應每個實體區塊的系統資料或元資料中。所述區塊類型的資訊可被寫入至可複寫式非揮發性記憶體模組220。此外,相關於每個實體區塊的預讀取週期的資訊亦可被記錄至對應每個實體區塊的系統資料或元資料中,並且被寫入至可複寫式非揮發性記憶體模組220。
接著,在步驟S220中,處理器211指示預讀取電路單元215執行預讀取程序。更具體來說,所述預讀取程序包括步驟S221~S223。在步驟S221中,預讀取電路單元215辨識分別對應至所述多個實體區塊類型的多個預讀取週期。
在步驟S222中,預讀取電路單元215(或預讀取週期管理電路2151)根據所述多個預讀取週期及所述多個區塊類型選擇所述多個實體區塊中的目標實體區塊,其中所述目標實體區塊的目標未存取持續時間不小於所述多個預讀取週期中對應所述目標實體區塊的目標區塊類型的目標預讀取週期。以下利用相關於步驟S222的圖3A與圖3B來說明。
圖3A是根據本發明的一實施例所繪示的主動式預讀取程序流程圖。請參照圖3A,在步驟S311中,預讀取電路單元215(或預讀取週期管理電路2151)辨識多個實體區塊各自的存取時間戳記,並且經由所述多個實體區塊各自的區塊類型來辨識所述多個實體區塊各自的預讀取週期。例如,預讀取電路單元215(或預讀取週期管理電路2151)可從已記錄相關於每個實體區塊的預讀取週期的資訊來辨識每個實體區塊的預讀取週期。
接著,在步驟S312中,預讀取電路單元215(或預讀取週期管理電路2151)計算所述儲存裝置的當前時間戳記與所述多個存取時間戳記之間的多個差值,以作為所述多個實體區塊各自的未存取持續時間。也就是說,為了獲得一個實體單元的未存取持續時間,預讀取電路單元215(或預讀取週期管理電路2151)會去計算當前裝置時間戳記(本地時間)與所述實體區塊的存取時間戳記之間的差值,並且識別所述差值可用以表面所述實體區塊未被存取的持續時間的長度。
接著,在步驟S313中,預讀取電路單元215(或預讀取週期管理電路2151)經由比較所述多個實體區塊各自的所述未存取持續時間與所述多個實體區塊各自的所述預讀取週期來找出所述多個未存取持續時間中的不小於所對應的所述目標預讀取週期的所述目標未存取持續時間,以將所述目標預讀取週期與所述目標未存取持續時間所屬的實體區塊作為所述目標實體區塊。
例如,反應於判定一個實體區塊的未存取時間不小於所述實體區塊的預讀取週期,預讀取電路單元215(或預讀取週期管理電路2151)會辨識所述實體區塊為需要要被施加預讀取電壓的實體區塊(即,目標實體區塊);反應於判定另一個實體區塊的未存取時間小於所述另一個實體區塊的預讀取週期,預讀取電路單元215(或預讀取週期管理電路2151)會辨識所述另一個實體區塊為不需被施加預讀取電壓的實體區塊。所述目標實體區塊的未存取時間可被稱為目標未存取時間;所述目標實體區塊的預讀取週期可被稱為目標預讀取週期。
值得一提的是,由於在上述步驟S311~S313的流程中,預讀取電路單元215會主動地去找尋目標實體區塊。因此,上述步驟S311~S313的流程亦可被稱為主動式預讀取程序。
請再回到圖2,在獲得目標實體區塊後,在步驟S223中,預讀取電路單元215(或預讀取執行電路2152)指示所述處理器211對所述目標實體區塊施加預讀取電壓。具體來說,所述處理器指示所述記憶體介面控制電路213使用所述預讀取電壓來對所述目標實體區塊的一或多個記憶胞執行讀取操作(即,對所述一或多個記憶胞執行預讀取操作)。所述一或多個記憶胞對應至所述指定實體位址。所述預讀取電壓可為對應所述目標實體區塊的預設讀取電壓組所對應的多個預設讀取電壓值的其中之一或多者。
圖3B是根據本發明的一實施例所繪示的被動式預讀取程序的流程圖。請參照圖3B,在步驟S321中,處理器211辨識多個實體區塊中對應讀取指令所指示的所述指定邏輯位址的指定實體位址所屬的指定實體區塊。
例如,在執行所述讀取程序的期間內,所述處理器辨識到讀取指令欲被執行,其中所述讀取指令用以指示對儲存於一指定邏輯位址的資料。所述讀取指令例如是從主機系統10所接收,或是所述讀取指令例如是用以讀取相關於其他記憶體操作的資料(如,垃圾回收操作中用以讀取有效資料的指令)的指令。接著,處理器211可從邏輯轉實體位址映射表中來查找到映射至所述指定邏輯位址的實體位址(亦稱,指定實體位址),並且辨識出所述指定實體位址所屬的實體區塊(即,指定實體區塊)。接著,處理器211可指示/通知預讀取電路單元215所述指定實體區塊將被執行讀取操作(例如,傳送對應於指定實體區塊的區塊識別碼給預讀取電路單元215)。
接著,在步驟S322中,預讀取電路單元215(或預讀取週期管理電路2151)辨識所述指定實體區塊的存取時間戳記,並且經由所述指定實體區塊的所述區塊類型來辨識所述指定實體區塊的所述預讀取週期。在另一實施例中,預讀取電路單元215(或預讀取週期管理電路2151)可直接經由所述指定實體區塊的區塊資訊中辨識所述指定實體區塊的所述預讀取週期。
接著,在步驟S323中,反應於判定所述指定實體區塊的所述存取時間戳記不小於所述指定實體區塊的所述預讀取週期,預讀取電路單元215(或預讀取週期管理電路2151)將所述指定實體區塊識別為所述目標實體區塊。具體來說,預讀取電路單元215(或預讀取週期管理電路2151)可計算所述指定實體區塊的未存取持續時間。此外,在辨識所述指定實體區塊的所述預讀取週期後,預讀取電路單元215(或預讀取週期管理電路2151)可判斷所計算的所述指定實體區塊的未存取持續時間是否小於所述指定實體區塊的所述預讀取週期。反應於判定所述指定實體區塊的所述存取時間戳記不小於所述指定實體區塊的所述預讀取週期,預讀取電路單元215(或預讀取週期管理電路2151)將所述指定實體區塊辨識為將需施加預讀取電壓的目標實體區塊。
接著,預讀取電路單元215(或預讀取執行電路2152)指示所述處理器211在執行所述讀取指令之前,對所述指定實體區塊施加所述預讀取電壓。即,所述處理器指示所述記憶體介面控制電路213使用所述預讀取電壓來對所述目標實體區塊的一或多個記憶胞執行讀取操作(即,對所述一或多個記憶胞執行預讀取操作)。所述一或多個記憶胞對應至所述指定實體位址。所述預讀取電壓可為對應所述目標實體區塊的預設讀取電壓組所對應的多個預設讀取電壓值的其中之一或多者。
應注意的是,在本實施例中,在對所述一或多個記憶胞執行預讀取操作後,所述處理器211忽略經由所述預讀取操作所獲得的儲存於所述一或多個記憶胞的原始資料。具體來說,經由使用預讀取電壓對所述一或多個記憶胞(如,實體頁面)執行讀取操作後,所獲得的原始的讀取資料(亦稱,原始資料)會被暫存至記憶體介面控制電路213或可複寫式非揮發性記憶體模組220中的快取暫存器(Cache Register)。不同於一般讀取操作的地方在於,處理器211會直接忽略暫存於快取暫存器中的原始資料,即,處理器211會不獲取暫存於快取暫存器中的原始資料,並且也不會對暫存於快取暫存器中的原始資料進行解碼操作(如,錯誤檢查與校正程序)。簡單來說,處理器211在被指示所述目標實體區塊後,處理器211指示記憶體介面控制電路213執行預讀取操作,但不對所讀取的原始資料進行解碼操作。
在所述指定實體區塊被施加所述預讀取電壓後,處理器211使用預設讀取電壓來對所述目標實體區塊執行所述讀取操作(步驟S324)。也就是說,由於在上述步驟S321~S323的流程中,目標實體區塊是經由讀取指令而被動地被識別。上述步驟S321~S323的流程可被稱為被動式預讀取程序。此外,圖3B的流程中,原本對應讀取指令所執行的讀取操作(一般讀取操作),會在相應的預讀取操作完成後,再被執行。
在其他實施例中,處理器211亦可指示預讀取電路單元215執行其他態樣的主動式的預讀取程序。
圖4是根據本發明的另一實施例所繪示的記憶體管理方法的流程圖。請參照圖4,在步驟S41中,處理器211記錄多個實體區塊各自的區塊類型。步驟S41相同於步驟S210,細節不再贅述。
接著,在步驟S42中,預讀取電路單元215辨識分別對應至所述多個實體區塊類型的多個預讀取週期。步驟S42相同於步驟S221,細節不再贅述。
接著,在步驟S43中,預讀取電路單元215針對所述多個預讀取週期的其中之一,每經過相符於所述一個預讀取週期的時間,對屬於對應所述一個預讀取週期的區塊類型的所有的實體區塊施加所述預讀取電壓。具體來說,預讀取電路單元215可辨識目前的不同的多個預讀取週期的時間長度,並且辨識對應至所述多個預讀取週期的多個區塊類型及對應的多個實體區塊。接著,預讀取電路單元215可基於所述多個預讀取週期持續地經由計時器來辨識當前經過的時間,並且於每經過相符於所述多個預讀取週期的其中之一的時間時,辨識到相應於所述預讀取週期的所有的實體區塊為目標實體區塊。此外,預讀取電路單元215可指示處理器對所有的所辨識的目標實體區塊施加預讀取電壓,即,對所有的目標實體區塊執行預讀取操作。
在另一實施例中,每當儲存裝置20開電時,處理器211更可基於多個區塊類型來對可複寫式非揮發性記憶體模組220的多個實體區塊執行預讀取操作。更具體來說,每當儲存裝置20開電時,所述預讀取電路單元215指示所述處理器211直接根據所述多個區塊類型的優先順序,對被分類為所述多個區塊類型的所述多個實體區塊中的部份或全部的實體區塊施加所述預讀取電壓。
舉例來說,假設可複寫式非揮發性記憶體模組220的多個實體區塊被分類為第一區塊類型與第二區塊類型。第一區塊類型具有第一優先順序,並且第二區塊類型具有第二優先順序,其中第一優先順序先於第二優先順序。當儲存裝置20開電時,處理器211會先對屬於具有第一優先順序的第一區塊類型的多個第一實體區塊執行預讀取操作(即,對所述多個第一實體區塊施加預讀取電壓)。在執行於所述多個第一實體區塊的預讀取操作完成後,處理器211可再對屬於具有第二優先順序的第二區塊類型的多個第二實體區塊執行預讀取操作,或是於儲存裝置20處於閒置狀態時再對屬於具有第二優先順序的第二區塊類型的多個第二實體區塊執行預讀取操作。屬於具有第一優先順序的所述第一區塊類型的多個第一實體區塊包括下列態樣的一或多者:物理狀況較差的實體區塊、儲存有較重要的使用者資料的實體區塊、儲存有開機後會被存取的系統資料的實體區塊、儲存有冷資料的實體區塊。屬於具有第一優先順序的所述第一區塊類型的多個第一實體區塊例如是所述多個實體區塊中,非所述多個第一實體區塊的其他實體區塊。在一實施例中,屬於具有第二優先順序的第二區塊類型的多個第二實體區塊亦可不被執行預讀取操作。
圖5A為根據本發明的一實施例所繪示的在未使用預讀取程序的情況下對具有首讀問題的實體區塊執行讀取操作的示意圖。請參照圖5A,舉例來說,假設可複寫式非揮發性記憶體模組220具有四個平面,並且處理器211可經由多平面讀取操作來同時從四個平面的相同順序的實體區塊讀取資料。此外,假設處理器211欲執行讀取指令,並且所述讀取指令用以指示讀取分別屬於第一~第四平面的實體區塊P1(1)~P4(1)及實體區塊P1(2)~P4(2),其中具有首讀問題的實體區塊為對應第四平面的實體區塊P4(1)、對應第二平面的實體區塊P2(2)以及對應第三平面的實體區塊P3(2)。
在此例子中,在時間點TP1,處理器211對實體區塊P1(1)~P4(1)執行多平面讀取操作(所述多平面讀取操作耗費了時間“T”)。由於對應第四平面的實體區塊P4(1)因所具有的首讀問題而發生讀取操作失敗。因此,處理器211在時間點TP2,對實體區塊P4(1)執行讀取重試操作(所執行的單平面讀取操作耗費了時間“T”),並且未發生讀取操作失敗(順利獲得儲存在實體區塊P4(1)的資料)。實體區塊P4(1)所具有的首讀問題因為於時間點TP1所執行的讀取操作而被解除,進而使後續的於時間點TP2所執行的讀取操作為成功的。
接著,在時間點TP3,處理器211對實體區塊P1(2)~P4(2)執行多平面讀取操作(所述多平面讀取操作耗費了時間“T”)。由於對應第二、第三平面的實體區塊P2(2)、P3(2)因所具有的首讀問題而發生讀取操作失敗。因此,處理器211在時間點TP4,先對實體區塊P2(2)執行讀取重試操作(所執行的單平面讀取操作耗費了時間“T”),並且未發生讀取操作失敗。接著,在時間點TP5,再對實體區塊P3(2)執行讀取重試操作(所執行的單平面讀取操作耗費了時間“T”),並且未發生讀取操作失敗。
也就是說,為了正確地獲得儲存在實體區塊P1(1)~P4(1)及實體區塊P1(2)~P4(2)的資料,如圖5A所示,所執行的多個讀取操作共耗費的時間長度為“5T”。
圖5B為根據本發明的一實施例所繪示的在使用主動式預讀取程序的情況下對具有首讀問題的實體區塊執行讀取操作的示意圖。請參照圖5B,接續圖5A的例子,不同的地方在於,於圖5B的例子中,處理器211指示預讀取電路單元215使用主動式預讀取程序。在此例子中,預讀取電路單元215於時間點TP1指示處理器211對實體區塊P1(1)~P4(1)及實體區塊P1(2)~P4(2)執行預讀取操作(經由多平面讀取的方式,對實體區塊P1(1)~P4(1)及實體區塊P1(2)~P4(2)施加預讀取電壓),其中對實體區塊P1(1)~P4(1)所執行的預讀取操作耗費了時間“t”,並且對實體區塊P1(2)~P4(2)所執行的預讀取操作耗費了時間“t”。時間“t”小於時間 “T”。
在此,為了方便說明,假設時間“t”例如為時間“T”的二分之一(因不需要獲取原始資料及對原始資料執行解碼操作,而降低了整體所耗費的時間)。如圖5B所示,實體區塊P4(1)、P2(2)及P3(2)所具有的首讀問題因為所執行的預讀取操作而被解除。
接著,在時間點TP3,處理器211對實體區塊P1(1)~P4(1)及實體區塊P1(2)~P4(2)執行一般的多平面讀取操作,並且成功地完成所執行的讀取操作(正確地獲得儲存在實體區塊P1(1)~P4(1)及實體區塊P1(2)~P4(2)的資料)。應注意的是,為了正確地獲得儲存在實體區塊P1(1)~P4(1)及實體區塊P1(2)~P4(2)的資料,如圖5B所示,所執行的多個預讀取操作加上多個讀取操作共耗費的時間長度僅為“3T”,遠少於圖5A例子(不使用預讀取程序)中的共耗費的時間“5T”。
圖5C為根據本發明的一實施例所繪示的在使用被動式預讀取程序的情況下對具有首讀問題的實體區塊執行讀取操作的示意圖。請參照圖5C,接續圖5A的例子,不同的地方在於,於圖5C的例子中,處理器211指示預讀取電路單元215使用被動式預讀取程序。在此例子中,假設處理器211基於讀取指令,通知預讀取電路單元215目標實體區塊為實體區塊P1(1)~P4(1)及實體區塊P1(2)~P4(2)。預讀取電路單元215判定實體區塊P1(1)~P4(1)及實體區塊P1(2)~P4(2)皆需執行預讀取操作。
如圖5C所示,在對實體區塊P1(1)~P4(1)執行讀取操作之前,預讀取電路單元215於時間點TP1指示處理器211對實體區塊P1(1)~P4(1)執行預讀取操作(所執行的預讀取操作耗費時間“t”)。接著,在所述預讀取操作完成後,於時間點TP2,處理器再對實體區塊P1(1)~P4(1)執行一般讀取操作(所執行的讀取操作耗費時間“T”),以正確地獲得儲存在對實體區塊P1(1)~P4(1)中的資料。時間“t”小於時間“T”。
接著,在對實體區塊P1(2)~P4(2)執行讀取操作之前,預讀取電路單元215於時間點TP3指示處理器211對實體區塊P1(2)~P4(2)執行預讀取操作(所執行的預讀取操作耗費時間“t”)。接著,在所述預讀取操作完成後,於時間點TP4,處理器再對實體區塊P1(2)~P4(2)執行一般讀取操作(所執行的讀取操作耗費時間“T”),以正確地獲得儲存在對實體區塊P1(2)~P4(2)中的資料。
如圖5C所示,實體區塊P4(1)、P2(2)及P3(2)所具有的首讀問題因為所執行的預讀取操作而被解除。應注意的是,為了正確地獲得儲存在實體區塊P1(1)~P4(1)及實體區塊P1(2)~P4(2)的資料,如圖5C所示,所執行的多個預讀取操作加上多個讀取操作共耗費的時間長度僅為“3T”,遠少於圖5A例子(不使用預讀取程序)中的共耗費的時間“5T”。
也就是說,經由上述圖5A~5C的例子,本發明的實施例所提供的記憶體管理方法(包含預讀取程序)、儲存控制器210以及儲存裝置20可有效地解除造成讀取操作失敗的首讀問題,進而減少為了獲得正確的讀取資料的讀取操作的總耗費時間,而增加了儲存裝置的讀取效率。
特別是,有解除首讀問題的實體區塊的錯誤檢查與校正程序中的解碼迭代操作的總數量低於具有首讀問題的實體區塊的錯誤檢查與校正程序中的解碼迭代操作的總數量(因為錯誤數少)。因此,在一些實施例中,當具有首讀現象的實體區塊被讀取時(會執行錯誤檢查與校正程序來解碼所讀取的資料),此實體區塊於讀取操作(包含讀出資料所耗費的時間以及執行錯誤檢查與校正程序所耗費的時間)所耗費的時間為T;當所述實體區塊的首讀現象被解除後且被讀取時,此實體區塊於讀取操作所耗費的時間為小於T的T’。也就是說,在此實施例中,圖5B、5C所耗費的時間將是小於3T的3T’。
值得一提的是,上述預讀取電路單元215的功能是以硬體電路的方式來實作,但本發明不限於此。例如,在一實施例中,預讀取電路單元215、預讀取週期管理電路2151、預讀取執行電路2152的功能可分別以軟體或韌體的方式來實作為可被處理器211所執行的程式碼。如,預讀取電路單元215、預讀取週期管理電路2151、預讀取執行電路2152的功能可被實作為預讀取程式模組、預讀取週期管理程式模組、預讀取執行程式模組,並且處理器211可載入且執行預讀取程式模組、預讀取週期管理程式模組、預讀取執行程式模組以實現相應的功能。
綜上所述,本發明的實施例所提供的記憶體管理方法、儲存控制器與儲存裝置,可根據所述儲存裝置的可複寫式非揮發性記憶體模組的多個實體區塊各自的預讀取週期及區塊類型從所述多個實體區塊中選擇目標實體區塊,並且對所述目標實體區塊施加一預讀取電壓,以預先消除/解除於可複寫式非揮發性記憶體模組中發生的首讀問題,進而增進了儲存裝置的讀取效率。
10:主機系統
20:儲存裝置
110、211:處理器
120:主機記憶體
130:資料傳輸介面電路
210:儲存控制器
212:資料傳輸管理電路
213:記憶體介面控制電路
220:可複寫式非揮發性記憶體模組
230:連接介面電路
215:預讀取電路單元
2151:預讀取週期管理電路
2152:預讀取執行電路
S210、S220、S221、S222、S223:記憶體管理方法的流程步驟
S311、S312、S313:預讀取程序的流程步驟
S321、S322、S323、S324、S325:預讀取程序的流程步驟
S41、S42、S43:記憶體管理方法的流程步驟
TP1~TP6:時間點
P1(1)~P4(2):實體區塊
t、T:持續時間/時間長度
圖1是根據本發明的一實施例所繪示的主機系統及儲存裝置的方塊示意圖。
圖2是根據本發明的一實施例所繪示的記憶體管理方法的流程圖。
圖3A是根據本發明的一實施例所繪示的主動式預讀取程序流程圖。
圖3B是根據本發明的一實施例所繪示的被動式預讀取程序的流程圖。
圖4是根據本發明的另一實施例所繪示的記憶體管理方法的流程圖。
圖5A為根據本發明的一實施例所繪示的在未使用預讀取程序的情況下對具有首讀問題的實體區塊執行讀取操作的示意圖。
圖5B為根據本發明的一實施例所繪示的在使用主動式預讀取程序的情況下對具有首讀問題的實體區塊執行讀取操作的示意圖。
圖5C為根據本發明的一實施例所繪示的在使用被動式預讀取程序的情況下對具有首讀問題的實體區塊執行讀取操作的示意圖。
S210、S220、S221、S222、S223:記憶體管理方法的流程步驟
Claims (20)
- 一種儲存控制器,用於控制配置有一可複寫式非揮發性記憶體模組的一儲存裝置,所述儲存控制器包括:一記憶體介面控制電路,用以耦接至所述可複寫式非揮發性記憶體模組,其中所述可複寫式非揮發性記憶體模組具有多個實體區塊;一預讀取電路單元,以及一處理器,耦接至所述記憶體介面控制電路及所述預讀取電路單元,其中所述處理器用以記錄所述多個實體區塊各自的區塊類型,其中所述處理器更用以指示所述預讀取電路單元執行一預讀取程序,在所述預讀取程序中,所述預讀取電路單元用以辨識分別對應至所述多個實體區塊類型的多個預讀取週期,其中所述預讀取電路單元根據所述多個預讀取週期及所述多個區塊類型選擇所述多個實體區塊中的一目標實體區塊,其中所述目標實體區塊的目標未存取持續時間不小於所述多個預讀取週期中對應所述目標實體區塊的目標區塊類型的目標預讀取週期,其中所述預讀取電路單元更用以指示所述處理器對所述 目標實體區塊施加一預讀取電壓。
- 如申請專利範圍第1項所述的儲存控制器,其中所述可複寫式非揮發性記憶體模組為三維三階記憶胞NAND型快閃記憶體模組(3D TLC NAND flash memory module)、垂直三階記憶胞NAND型快閃記憶體模組(Vertical TLC NAND flash memory module)、三維四階記憶胞NAND型快閃記憶體模組(3D QLC NAND flash memory module)或垂直四階記憶胞NAND型快閃記憶體模組(Vertical QLC NAND flash memory module)。
- 如申請專利範圍第1項所述的儲存控制器,其中在記錄所述多個實體區塊各自的所述區塊類型的運作中,所述處理器根據所述多個實體區塊各自的物理狀況或所儲存的資料的資料類型來將所述多個實體區塊分類至所述多個區塊類型的其中之一,其中對應至所述多個區塊類型的所述多個預讀取週期為預先設定的,其中用以表示具有越差的物理狀況的區塊類型所對應的預讀取週期越小,其中對應至系統資料的區塊類型所對應的預讀取週期大於對應至使用者資料的區塊類型所對應的預讀取週期,其中對應至熱資料的區塊類型所對應的預讀取週期大於對應至冷資料的區塊類型所對應的預讀取週期。
- 如申請專利範圍第1項所述的儲存控制器,其中在所述預讀取電路單元根據所述多個預讀取週期及所述多個區塊類型選擇所述多個實體區塊中的所述目標實體區塊的運作中,所述預讀取電路單元辨識所述多個實體區塊各自的存取時間戳記,並且經由所述多個實體區塊各自的所述區塊類型來辨識所述多個實體區塊各自的所述預讀取週期,其中所述預讀取電路單元計算所述儲存裝置的當前時間戳記與所述多個存取時間戳記之間的多個差值,以作為所述多個實體區塊各自的未存取持續時間,其中所述預讀取電路單元經由比較所述多個實體區塊各自的所述未存取持續時間與所述多個實體區塊各自的所述預讀取週期來找出所述多個未存取持續時間中的不小於所對應的所述目標預讀取週期的所述目標未存取持續時間,以將所述目標預讀取週期與所述目標未存取持續時間所屬的實體區塊作為所述目標實體區塊。
- 如申請專利範圍第4項所述的儲存控制器,其中每當所述處理器對所述多個實體區塊的其中之一執行一抹除操作、一寫入操作或一讀取操作時,所述處理器更新所述一個實體區塊的所述存取時間戳記為對應所述抹除操作、所述寫入操作或所述讀取操作的時間戳記。
- 如申請專利範圍第5項所述的儲存控制器,其中在所述預讀取電路單元指示所述處理器對所述目標實體區塊施加所述預讀取電壓的運作中,所述預讀取電路單元更指示所述處理器將所述目標實體區塊的所述存取時間戳記更新為對應所施加的所述預讀取電壓的時間戳記。
- 如申請專利範圍第1項所述的儲存控制器,其中在所述預讀取電路單元指示所述處理器對所述目標實體區塊施加所述預讀取電壓的運作中,所述處理器指示所述記憶體介面控制電路使用所述預讀取電壓來對所述目標實體區塊的一或多個記憶胞執行讀取操作,其中所述處理器忽略經由所述讀取操作所獲得的儲存於所述一或多個記憶胞的原始資料。
- 如申請專利範圍第1項所述的儲存控制器,其中在執行所述預讀取程序的期間內,所述處理器辨識到一讀取指令欲被執行,其中所述讀取指令用以指示對儲存於一指定邏輯位址的資料,其中所述處理器辨識所述多個實體區塊中對應所述指定邏輯位址的指定實體位址所屬的指定實體區塊,並且通知所述預讀取電路單元所述指定實體區塊將被執行讀取操作,其中在所述預讀取電路單元根據所述多個預讀取週期及所述多個區塊類型選擇所述多個實體區塊中的所述目標實體區塊的運作中, 所述預讀取電路單元辨識所述指定實體區塊的存取時間戳記,並且經由所述指定實體區塊的所述區塊類型來辨識所述指定實體區塊的所述預讀取週期,其中反應於判定所述指定實體區塊的所述存取時間戳記不小於所述指定實體區塊的所述預讀取週期,所述預讀取電路單元將所述指定實體區塊識別為所述目標實體區塊,其中所述預讀取電路單元更指示所述處理器在執行所述讀取指令之前,對所述指定實體區塊施加所述預讀取電壓,其中在所述指定實體區塊被施加所述預讀取電壓後,所述處理器指示所述記憶體介面控制電路使用預設讀取電壓來對所述目標實體區塊執行所述讀取操作。
- 如申請專利範圍第1項所述的儲存控制器,其中每當所述儲存裝置開電時,所述預讀取電路單元指示所述處理器直接根據所述多個區塊類型的優先順序,對被分類為所述多個區塊類型的所述多個實體區塊中的部份或全部的實體區塊施加所述預讀取電壓。
- 如申請專利範圍第1項所述的儲存控制器,其中針對所述多個預讀取週期的其中之一,每經過相符於所述一個預讀取週期的時間,所述預讀取電路單元指示所述處理器對屬於對應所述一個預讀取週期的區塊類型的所有的實體區塊施加所述預讀取電壓。
- 一種記憶體管理方法,適用於用以控制配置有一可複寫式非揮發性記憶體模組的一儲存裝置的儲存控制器,其中所述可複寫式非揮發性記憶體模組具有多個實體區塊,所述方法包括:記錄所述多個實體區塊各自的區塊類型;以及執行一預讀取程序,其中所述預讀取程序包括:辨識分別對應至所述多個實體區塊類型的多個預讀取週期;根據所述多個預讀取週期及所述多個區塊類型選擇所述多個實體區塊中的一目標實體區塊,其中所述目標實體區塊的目標未存取持續時間不小於所述多個預讀取週期中對應所述目標實體區塊的目標區塊類型的目標預讀取週期;以及對所述目標實體區塊施加一預讀取電壓。
- 如申請專利範圍第11項所述的記憶體管理方法,其中所述記錄所述多個實體區塊各自的所述區塊類型的步驟包括:根據所述多個實體區塊各自的物理狀況或所儲存的資料的資料類型來將所述多個實體區塊分類至所述多個區塊類型的其中之一,其中對應至所述多個區塊類型的所述多個預讀取週期為預先設定的,其中用以表示具有越差的物理狀況的區塊類型所對應的預讀取週期越小, 其中對應至系統資料的區塊類型所對應的預讀取週期大於對應至使用者資料的區塊類型所對應的預讀取週期,其中對應至熱資料的區塊類型所對應的預讀取週期大於對應至冷資料的區塊類型所對應的預讀取週期。
- 如申請專利範圍第11項所述的記憶體管理方法,其中所述根據所述多個預讀取週期及所述多個區塊類型選擇所述多個實體區塊中的所述目標實體區塊的步驟包括:辨識所述多個實體區塊各自的存取時間戳記,並且經由所述多個實體區塊各自的所述區塊類型來辨識所述多個實體區塊各自的所述預讀取週期;計算所述儲存裝置的當前時間戳記與所述多個存取時間戳記之間的多個差值,以作為所述多個實體區塊各自的未存取持續時間;經由比較所述多個實體區塊各自的所述未存取持續時間與所述多個實體區塊各自的所述預讀取週期來找出所述多個未存取持續時間中的不小於所對應的所述目標預讀取週期的所述目標未存取持續時間,以將所述目標預讀取週期與所述目標未存取持續時間所屬的實體區塊作為所述目標實體區塊。
- 如申請專利範圍第13項所述的記憶體管理方法,更包括:每當對所述多個實體區塊的其中之一執行一抹除操作、一寫入操作或一讀取操作時,更新所述一個實體區塊的所述存取時間 戳記為對應所述抹除操作、所述寫入操作或所述讀取操作的時間戳記。
- 如申請專利範圍第14項所述的記憶體管理方法,其中所述指示所述處理器對所述目標實體區塊施加所述預讀取電壓的步驟包括:將所述目標實體區塊的所述存取時間戳記更新為對應所施加的所述預讀取電壓的時間戳記。
- 如申請專利範圍第11項所述的記憶體管理方法,其中所述對所述目標實體區塊施加所述預讀取電壓的步驟包括:使用所述預讀取電壓來對所述目標實體區塊的一或多個記憶胞執行讀取操作;以及忽略經由所述讀取操作所獲得的儲存於所述一或多個記憶胞的原始資料。
- 如申請專利範圍第11項所述的記憶體管理方法,其中在執行所述預讀取程序的期間內,辨識到一讀取指令欲被執行,其中所述讀取指令用以指示對儲存於一指定邏輯位址的資料,所述方法更包括:辨識所述多個實體區塊中對應所述指定邏輯位址的指定實體位址所屬的指定實體區塊;其中在根據所述多個預讀取週期及所述多個區塊類型選擇所述多個實體區塊中的所述目標實體區塊的步驟包括:辨識所述指定實體區塊的存取時間戳記,並且經由所述指 定實體區塊的所述區塊類型來辨識所述指定實體區塊的所述預讀取週期;反應於判定所述指定實體區塊的所述存取時間戳記不小於所述指定實體區塊的所述預讀取週期,將所述指定實體區塊識別為所述目標實體區塊;在執行所述讀取指令之前,對所述指定實體區塊施加所述預讀取電壓;以及在所述指定實體區塊被施加所述預讀取電壓後,使用預設讀取電壓來對所述目標實體區塊執行所述讀取操作。
- 如申請專利範圍第11項所述的記憶體管理方法,更包括:每當所述儲存裝置開電時,直接根據所述多個區塊類型的優先順序,對被分類為所述多個區塊類型的所述多個實體區塊中的部份或全部的實體區塊施加所述預讀取電壓。
- 如申請專利範圍第11項所述的記憶體管理方法,更包括:針對所述多個預讀取週期的其中之一,每經過相符於所述一個預讀取週期的時間,對屬於對應所述一個預讀取週期的區塊類型的所有的實體區塊施加所述預讀取電壓。
- 一種儲存裝置,所述儲存裝置包括:一可複寫式非揮發性記憶體模組,其中所述可複寫式非揮發性記憶體模組具有多個實體區塊;以及 一儲存控制器,耦接至所述可複寫式非揮發性記憶體模組,其中所述儲存控制器用以記錄所述多個實體區塊各自的區塊類型,其中所述儲存控制器更用以執行一預讀取程序,在所述預讀取程序中,所述儲存控制器更用以辨識分別對應至所述多個實體區塊類型的多個預讀取週期,其中所述儲存控制器根據所述多個預讀取週期及所述多個區塊類型選擇所述多個實體區塊中的一目標實體區塊,其中所述目標實體區塊的目標未存取持續時間不小於所述多個預讀取週期中對應所述目標實體區塊的目標區塊類型的目標預讀取週期,其中所述儲存控制器更用以對所述目標實體區塊施加一預讀取電壓。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW108145218A TWI712052B (zh) | 2019-12-11 | 2019-12-11 | 記憶體管理方法、儲存控制器與儲存裝置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW108145218A TWI712052B (zh) | 2019-12-11 | 2019-12-11 | 記憶體管理方法、儲存控制器與儲存裝置 |
Publications (2)
Publication Number | Publication Date |
---|---|
TWI712052B true TWI712052B (zh) | 2020-12-01 |
TW202123230A TW202123230A (zh) | 2021-06-16 |
Family
ID=74669824
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW108145218A TWI712052B (zh) | 2019-12-11 | 2019-12-11 | 記憶體管理方法、儲存控制器與儲存裝置 |
Country Status (1)
Country | Link |
---|---|
TW (1) | TWI712052B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5963474A (en) * | 1998-05-11 | 1999-10-05 | Fujitsu Limited | Secondary storage device using nonvolatile semiconductor memory |
US8281227B2 (en) * | 2009-05-18 | 2012-10-02 | Fusion-10, Inc. | Apparatus, system, and method to increase data integrity in a redundant storage system |
US8559224B2 (en) * | 2010-02-17 | 2013-10-15 | Samsung Electronics Co., Ltd. | Nonvolatile memory device, operating method thereof, and memory system including the same |
TWI578317B (zh) * | 2012-06-28 | 2017-04-11 | 慧與發展有限責任合夥企業 | 多位準胞元記憶體 |
US10255000B2 (en) * | 2017-01-18 | 2019-04-09 | Western Digital Technologies, Inc. | Delayed data release after programming to reduce read errors in memory |
-
2019
- 2019-12-11 TW TW108145218A patent/TWI712052B/zh active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5963474A (en) * | 1998-05-11 | 1999-10-05 | Fujitsu Limited | Secondary storage device using nonvolatile semiconductor memory |
US8281227B2 (en) * | 2009-05-18 | 2012-10-02 | Fusion-10, Inc. | Apparatus, system, and method to increase data integrity in a redundant storage system |
US8559224B2 (en) * | 2010-02-17 | 2013-10-15 | Samsung Electronics Co., Ltd. | Nonvolatile memory device, operating method thereof, and memory system including the same |
TWI578317B (zh) * | 2012-06-28 | 2017-04-11 | 慧與發展有限責任合夥企業 | 多位準胞元記憶體 |
US10255000B2 (en) * | 2017-01-18 | 2019-04-09 | Western Digital Technologies, Inc. | Delayed data release after programming to reduce read errors in memory |
Also Published As
Publication number | Publication date |
---|---|
TW202123230A (zh) | 2021-06-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9684468B2 (en) | Recording dwell time in a non-volatile memory system | |
US8812784B2 (en) | Command executing method, memory controller and memory storage apparatus | |
US9274866B2 (en) | Programming non-volatile memory using a relaxed dwell time | |
US8972776B2 (en) | Partial R-block recycling | |
US11157357B2 (en) | Operation methods of memory system and host, and computing system | |
US20150052415A1 (en) | Data storage device, operating method thereof and data processing system including the same | |
US9390003B2 (en) | Retirement of physical memory based on dwell time | |
TWI651726B (zh) | 解碼方法以及儲存控制器 | |
TWI656531B (zh) | 平均磨損方法、記憶體控制電路單元與記憶體儲存裝置 | |
KR20220049027A (ko) | 가비지 수집을 위한 메모리 컴포넌트에 대한 에러 제어 동작 수행 | |
CN111078146B (zh) | 存储器管理方法、存储器存储装置及存储器控制电路单元 | |
TWI796882B (zh) | 讀取干擾檢查方法、記憶體儲存裝置及記憶體控制電路單元 | |
US20230098366A1 (en) | Memory polling method, memory storage device and memory control circuit unit | |
CN107045890B (zh) | 数据保护方法、存储器控制电路单元及存储器存储装置 | |
US9213597B2 (en) | Memory storage device, memory controller thereof, and method for programming data thereof | |
TWI651650B (zh) | 記憶體管理方法及使用所述方法的儲存控制器 | |
TW201820114A (zh) | 資料寫入方法以及儲存控制器 | |
TW202008166A (zh) | 記憶體管理方法以及儲存控制器 | |
TWI684180B (zh) | 資料讀取方法、儲存控制器與儲存裝置 | |
TWI695263B (zh) | 記憶體管理方法以及儲存控制器 | |
CN114822664B (zh) | 基于数据优先级的风险评估方法、存储装置及控制电路 | |
TWI712052B (zh) | 記憶體管理方法、儲存控制器與儲存裝置 | |
CN111489776B (zh) | 数据读取方法、存储控制器与存储装置 | |
US10884660B2 (en) | Memory management method, memory storage device and memory control circuit unit | |
CN113010458B (zh) | 存储器管理方法、存储控制器与存储装置 |