TWI686697B - 記憶體管理方法以及儲存控制器 - Google Patents
記憶體管理方法以及儲存控制器 Download PDFInfo
- Publication number
- TWI686697B TWI686697B TW107125833A TW107125833A TWI686697B TW I686697 B TWI686697 B TW I686697B TW 107125833 A TW107125833 A TW 107125833A TW 107125833 A TW107125833 A TW 107125833A TW I686697 B TWI686697 B TW I686697B
- Authority
- TW
- Taiwan
- Prior art keywords
- read retry
- target
- read
- value
- block string
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0643—Management of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0616—Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本發明提供一種記憶體管理方法。所述方法包括對目標
區塊串執行讀取重試操作,並且辨識所述目標區塊串的讀取重試記錄表;根據讀取重試記錄表中的一或多個第一讀取重試索引值的讀取重試權重值從一或多個第一讀取重試索引值中選擇一目標讀取重試索引值:使用對應所述目標讀取重試索引值的目標讀取重試選項來對所述目標區塊串執行讀取操作;反應於判定所述讀取操作成功,判定所述讀取重試操作完成,並且根據所述目標讀取重試索引值來更新所述讀取重試記錄表;以及根據最新的所述讀取重試記錄表來判斷是否對所述目標區塊串執行耗損平均操作。
Description
本發明是有關於一種記憶體管理方法,且特別是有關於一種適用於配置有可複寫式非揮發性記憶體模組的儲存裝置的記憶體管理方法與儲存控制器。
一般來說,為了延長可複寫式非揮發性記憶體模組的壽命,會盡可能平均地使用可複寫式非揮發性記憶體模組中的實體抹除單元(實體區塊)。傳統的耗損平均操作(wear leveling operation,WL operation)的方法是在可複寫式非揮發性記憶體模組每執行一段固定的時間後,以閒置的實體抹除單元替換儲存資料的實體抹除單元,以期讓在耗損較低(如,抹除次數值較低)的實體抹除單元可成為閒置實體抹除單元以供使用。
此外,當資料經由耗損平均操作從原本的實體抹除單元被搬移至閒置實體抹除單元後,此閒置實體抹除單元會被歸類至資料區成為新的資料實體抹除單元,並且所述資料會成為「新鮮」的資料。此外,讀取此「新鮮」的資料所獲得的錯誤位元數目會
較低。也就是說,在讀取新的資料實體抹除單元時,比較不會因為高的錯誤位元數目而導致讀取重試操作的執行。
基於上述現象,如何有效地的在不使用抹除次數值、寫入次數值或讀取次數值的情況下,來選擇用以被執行耗損平均操作的對象,同時降低儲存裝置執行讀取重試的次數,從而提昇可複寫式非揮發性記憶體模組的存取效率與所儲存資料的穩定,是此領域技術人員所致力的目標。
本發明提供一種記憶體管理方法,可經由所執行過的多個讀取重試操作,對應調整特定的實體區塊的讀取操作,並且選擇用以執行耗損平均操作的對象來執行耗損平均操作,進而降低讀取重試操作且維持所儲存資料的穩定。
本發明的一實施例提供一種記憶體管理方法,適用於配置有可複寫式非揮發性記憶體模組的儲存裝置,其中所述可複寫式非揮發性記憶體模組具有多個實體區塊,其中所述多個實體區塊被分組為多個區塊串。所述方法包括:對所述多個區塊串中的一目標區塊串執行讀取重試操作,並且辨識所述目標區塊串的一讀取重試記錄表,其中所述讀取重試記錄表記錄多個欄位,其中所述多個欄位記錄分別對應多個已完成的讀取重試操作的多個讀取重試索引值與多個讀取重試權重值;反應於所述目標區塊串的所述讀取重試記錄表具有尚未被選擇的一或多個第一讀取重試索
引值,根據所述一或多個第一讀取重試索引值的讀取重試權重值從所述一或多個第一讀取重試索引值中選擇一目標讀取重試索引值:使用對應所述目標讀取重試索引值的目標讀取重試選項來對所述目標區塊串執行讀取操作;反應於判定所述讀取操作成功,判定所述讀取重試操作完成,並且根據所述目標讀取重試索引值來更新所述讀取重試記錄表;以及根據最新的所述讀取重試記錄表來判斷是否對所述目標區塊串執行耗損平均操作。
本發明的一實施例提供用於控制配置有可複寫式非揮發性記憶體模組的儲存裝置的一種儲存控制器。所述儲存控制器包括:連接介面電路、記憶體介面控制電路、區塊串管理電路單元以及處理器。連接介面電路用以耦接至主機系統。記憶體介面控制電路用以耦接至所述可複寫式非揮發性記憶體模組,其中所述可複寫式非揮發性記憶體模組具有多個實體區塊,其中所述多個實體區塊被分組為多個區塊串。所述處理器耦接至所述連接介面電路、所述記憶體介面控制電路與所述區塊串管理電路單元,並且用以指示所述區塊串管理電路單元對所述多個區塊串中的一目標區塊串執行讀取重試操作。所述區塊串管理電路單元用以辨識所述目標區塊串的一讀取重試記錄表,其中所述讀取重試記錄表記錄多個欄位,其中所述多個欄位記錄分別對應多個已完成的讀取重試操作的多個讀取重試索引值與多個讀取重試權重值。此外,反應於所述目標區塊串的所述讀取重試記錄表具有尚未被選
擇的一或多個第一讀取重試索引值,所述區塊串管理電路單元更用以根據所述一或多個第一讀取重試索引值的讀取重試權重值從所述一或多個第一讀取重試索引值中選擇一目標讀取重試索引值。所述處理器更用以使用對應所述目標讀取重試索引值的目標讀取重試選項來對所述目標區塊串執行讀取操作。反應於判定所述讀取操作成功,所述區塊串管理電路單元更用以判定所述讀取重試操作完成,並且根據所述目標讀取重試索引值來更新所述讀取重試記錄表,其中所述區塊串管理電路單元更用以根據最新的所述讀取重試記錄表來判斷是否對所述目標區塊串執行耗損平均操作。
基於上述,本發明實施例所提供的記憶體管理方法與儲存控制器,可在不利用傳統上習知的抹除次數、寫入次數或讀取次數等統計值的情況下,藉由用以記錄多個區塊串所執行的多個讀取重試操作的資訊的多個讀取重試記錄表來判斷較適合的讀取重試選項,並且可根據多個讀取重試記錄表來判斷應執行耗損平均操作的區塊串,以增進讀取重試操作的效率且經由所執行的耗損平衡操作維持資料的穩定度,從而提昇可複寫式非揮發性記憶體模組的存取效率與可靠度。
為讓本發明的上述特徵和優點能更明顯易懂,下文特舉實施例,並配合所附圖式作詳細說明如下。
10:主機系統
20:儲存裝置
110、211:處理器
120:主機記憶體
130:資料傳輸介面電路
210:儲存控制器
212:資料管理電路
213:記憶體介面控制電路
2131:寄存器
214:錯誤檢查與校正電路
215:區塊串管理電路單元
2151:重新讀取管理電路
2152:耗損平均觸發電路
216:緩衝記憶體
217:電源管理電路
220:可複寫式非揮發性記憶體模組
230:連接介面電路
D1:封裝
LUN1:邏輯數
P1(1)~P1(6)、P1(M-1)、P1(M)、P2(1)~P2(6)、P2(M-1)、P2(M)、P3(1)~P3(6)、P3(M-1)、P3(M)、P4(1)~P4(6)、P4(M-1)、P4(M):實體區塊
P1~P4:平面
BS(1)~BS(6)、BS(M-1)、BS(M):區塊串
D701、D702、D703:虛框
S201、S202、S203、S204、S205、S206、S207、S208、S209、S210、S211、S212:記憶體管理方法的流程步驟
S2071、S2072、S2073、S2074、S2075、S2076、S2077:步驟S207的流程步驟
S2081、S2082、S2083、S2084、S2085、S2086、S2087、S2088:步驟S208的流程步驟
F1~F4:欄位
400、700~706:讀取重試記錄表
RRI、RRI(1)~RRI(4)、RRI(X):讀取重試索引值
RRW、RRW(1)~RRW(4)、RRW(X):讀取重試權重值
圖1是根據本發明的一實施例所繪示的主機系統及儲存裝置的方塊示意圖。
圖2是根據本發明的一實施例所繪示的記憶體管理方法的流程圖。
圖3為根據本發明的一實施例所繪示可複寫式非揮發性記憶體模組的多個區塊串的示意圖。
圖4為根據本發明的一實施例所繪示的讀取重試記錄表的示意圖。
圖5是根據本發明的一實施例所繪示的圖2的步驟S207的流程圖。
圖6是根據本發明的一實施例所繪示的圖2的步驟S208的流程圖。
圖7A與圖7B是根據本發明的一實施例所繪示的更新讀取重試記錄表的示意圖。
在本實施例中,儲存裝置包括可複寫式非揮發性記憶體模組(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)、或是其他可程式化之處理單元(Microprocessor)、數位訊號處理器(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。應注意的是,儲存控制
器220各部件所執行的操作亦可視為儲存控制器220所執行的操作。
其中,資料管理電路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是耦接至儲存控制器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型快閃記憶體模組(Vertical NAND flash memory module)等其他快閃記憶體模組或其他具有相同特性的記憶體模組。可複寫式非揮發性記憶體模組220中的記憶胞是以陣列的方式設置。
在本實施例中,可複寫式非揮發性記憶體模組220具有多個字元線,其中所述多個字元線的每一個字元線包括多個記憶胞。同一條字元線上的多個記憶胞會組成一或多個實體程式化單元(實體頁面)。此外,多個實體程式化單元可組成一個實體單元(實體區塊或實體抹除單元)。
在本實施例中,是以一個實體頁面作為寫入(程式化)資料的最小單位。實體單元為抹除之最小單位,即,每一實體單元含有最小數目之一併被抹除之記憶胞。此外,每個實體頁面的位址亦可稱為實體位址。
應注意的是,在本實施例中,用以記錄一實體單元的資訊的系統資料可利用該實體單元中的一或多個記憶胞來記錄,或是利用一個系統區中用以記錄所有系統資料的特定實體單元的一或多個記憶胞來記錄。
此外,必須瞭解的是,當處理器211對可複寫式非揮發性記憶體模組220中的記憶胞(或實體區塊)進行分組以執行對應的管理操作時,此些記憶胞(或實體區塊)是被邏輯地分組,而其實際位置並未更動。
儲存控制器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可藉由實體轉邏輯位址映射表來查找一實體位址所映射的邏輯位址。然而,上述有關邏輯位址與實體位址之間的映射關係的技術概念為本領域技術人員之慣用技術手段,不再贅述於此。在儲存控制器的一般運作中,所述邏輯轉實體位址映射表與實體轉邏輯位址映射表可被維護於緩衝記憶體216中。
在本實施例中,錯誤檢查與校正電路214是耦接至處理器211並且用以執行錯誤檢查與校正程序以確保資料的正確性。具體來說,當處理器211從主機系統10中接收到寫入指令時,錯誤檢查與校正電路214會為對應此寫入指令的資料產生對應的錯誤更正碼(error correcting code,ECC)及/或錯誤檢查碼(error detecting code,EDC),並且處理器211會將對應此寫入指令的資料與對應的錯誤更正碼及/或錯誤檢查碼寫入至可複寫式非揮發性記憶體模組220中。之後,當處理器211從可複寫式非揮發性記
憶體模組220中讀取資料時會同時讀取此資料對應的錯誤更正碼及/或錯誤檢查碼,並且錯誤檢查與校正電路214會依據此錯誤更正碼及/或錯誤檢查碼對所讀取的資料執行錯誤檢查與校正程序。此外,在錯誤檢查與校正程序後,若成功解碼所讀取之資料,錯誤檢查與校正電路214可回傳錯誤位元數(Error bits value)給處理器211。
在一實施例中,儲存控制器210還包括緩衝記憶體216與電源管理電路217。緩衝記憶體216是耦接至處理器211並且用以暫存來自於主機系統10的資料與指令、來自於可複寫式非揮發性記憶體模組220的資料或其他用以管理儲存裝置20的系統資料,以讓處理器211可快速地從緩衝記憶體216中存取所述資料、指令或系統資料。電源管理電路217是耦接至處理器211並且用以控制儲存裝置20的電源。
在本實施例中,區塊串管理電路單元215包括重新讀取管理電路2151與耗損平均觸發電路2152。所述區塊串管理電路單元215用以管理可複寫式非揮發性記憶體模組220的多個區塊串,其中所述區塊串管理電路單元215可監控所述多個區塊串的運作狀況與對應的資訊。例如,所述區塊串管理電路單元215可辨識欲執行重新讀取操作的區塊串、辨識所述區塊串所執行的重新讀取操作的次數與對應的重新讀取選項/索引值、辨識所述區塊串的多個區塊的位置。所述區塊串管理電路單元215更判斷應執
行耗損平均操作的特定的實體區塊或區塊串。應注意的是,在一實施例中,上述區塊串管理電路單元215亦可整合至處理器211中,以使處理器211可實行本實施例所提供的記憶體管理方法。或,在另一實施例中,上述區塊串管理電路單元215可以軟體或韌體的方式實作為區塊串管理程式碼模組,以使執行此區塊串管理程式碼模組的處理器可以實現本發明所提供的記憶體管理方法。
在本實施例中,區塊串管理電路單元215是以一或多個區塊串做為執行耗損平均操作的目標。以下會利用圖3來說明區塊串的概念。
圖3為根據本發明的一實施例所繪示可複寫式非揮發性記憶體模組的多個區塊串的示意圖。
請參照圖3,在本實施例中,可複寫式非揮發性記憶體模組220可具有多個封裝(Pakage),每個封裝可具有多個實體區塊,所述多個實體區塊可被劃分至N個平面,並且部份或全部的平面可邏輯地劃分為一個邏輯數(Logical unit number,LUN)。為了簡便說明,假設可複寫式非揮發性記憶體模組220具有一個封裝D1,並且封裝D1具有多個實體區塊。所述多個實體區塊被劃分(被分組)為4個平面(Plane)P1~P4中(N等於4),其中所述4個平面被劃分為一個邏輯數LUN1。此外,每個平面具有依據第一順序排列的M個實體單元,如,平面P1具有M個實體區塊
P1(1)~P1(M);平面P2具有M個實體區塊P2(1)~P2(M);平面P3具有M個實體區塊P3(1)~P3(M);平面P4具有M個實體區塊P4(1)~P4(M)。在本實施例中,每個平面中排列順序相同的實體區塊會被組成一個區塊串(Block Stripe)。例如,區塊串BS(1)包括實體區塊P1(1)、實體區塊P2(1)、實體區塊P3(1)與實體區塊P4(1)。也就是說,上述4個平面中的所有實體區塊可組成依據第一順序排列的M個區塊串BS(1)~BS(M)。
在本實施例中,儲存控制器210是依據區塊串的順序來循序寫入資料至多個區塊串中,並且在同一個區塊串中,會依據平面P1~P4的順序來寫入資料。假設所有區塊串皆為空白,為了寫入一筆可填滿4個實體區塊的寫入資料,儲存控制器210會依據第一順序從第一個空白的區塊串(在此例子為區塊串BS(1)),來將所述寫入資料儲存至所述第一個空白的區塊串的所有實體區塊中(如,實體區塊P1(1)、實體區塊P2(1)、實體區塊P3(1)與實體區塊P4(1)中)。又例如,假設區塊串BS(1)的實體區塊P1(1)不可用來儲存所述資料,並且其他實體區塊皆可用來儲存所述寫入資料,則儲存控制器210會將所述寫入資料儲存至區塊串BS(1)的實體區塊P2(1)、實體區塊P3(1)與實體區塊P4(1)以及區塊串BS(2)的實體區塊P1(2)中。
在本實施例中,區塊串管理電路單元215會記錄每個區塊串的讀取重試記錄表(Read Retry Recoding Table)與讀取重試
計數值。當完成對一個區塊串的讀取重試操作時,所述一個區塊串的讀取重試記錄表的資訊會依據對應所完成的讀取重試操作的資訊(如,對應的讀取重試選項(Read Retry Option)或對應的讀取重試索引值(Read Retry Index Value))而被更新。
以下會配合多個圖式來詳細說明本發明之實施例所提供的記憶體管理方法的細節,以及對應所述記憶體管理方法的儲存控制器210與區塊串管理電路單元215的功能。
圖2是根據本發明的一實施例所繪示的記憶體管理方法的流程圖。請同時參照圖1與圖2,在步驟S201中,處理器211指示區塊串管理電路單元215(或重新讀取管理電路2151)對多個區塊串中的目標區塊串執行讀取重試操作,並且區塊串管理電路單元215(或重新讀取管理電路2151)辨識所述目標區塊串的讀取重試記錄表。
具體來說,處理器211可在一些特定事件發生時,判定需對區塊串中的一或多個區塊,或區塊串的一個區塊的一或多個實體頁面/字元線)執行讀取重試操作。所述區塊串亦可稱為目標區塊串。所述特定事件例如是:(1)讀取操作失敗;以及(2)錯誤位元數大於一錯誤位元數門檻值。本發明並不限定於觸發讀取重試操作的所述特定事件的類型。
在本實施例中,反應於處理器211指示區塊串管理電路單元215(或重新讀取管理電路2151)對目標區塊串執行讀取重
試操作,會辨識所述目標區塊串的讀取重試記錄表。以下會先以圖4來說明本發明所提供的讀取重試記錄表的細節。
圖4為根據本發明的一實施例所繪示的讀取重試記錄表的示意圖。請參照圖4,讀取重試記錄表400包括多個欄位。所述多個欄位的數目(即,X)可依據廠商需求而被預先設定。讀取重試記錄表400的每個欄位會記錄兩筆資訊,包括讀取重試索引值(Read Retry Index Value,RRI)與對應的讀取重試權重值(Read Retry Weighting Value,RRW)。例如,X個欄位中的第一個欄位會記錄讀取重試索引值RRI(1)與對應的讀取重試權重值RRW(1)。
所述多個欄位所記錄的多個讀取重試索引值RRI(1)~RRI(X)的數值皆不同。所述讀取重試索引值可被用來辨識對應的讀取重試選項,即,不同的讀取重試選項有不同的讀取重試索引值。所述讀取重試權重值RRW(1)~RRW(X)用以表示對應的讀取重試索引值的可靠度,即,越高的所述讀取重試權重值可表是所對應的讀取重試索引值越常被使用於讀取操作且所述讀取操作的讀取結果也是成功的。
請再回到圖2,在步驟S202中,區塊串管理電路單元215(或重新讀取管理電路2151)判斷所述目標區塊串的讀取重試記錄表是否具有尚未被選擇的一或多個第一讀取重試索引值。
具體來說,會先從對應目標區塊串的讀取重試記錄表中來選擇適當的讀取重試索引值,以使用對應所選擇之讀取重試索
引值的讀取重試選項來重新對目標區塊串執行讀取操作。
反應於判定讀取重試記錄表具有尚未被選擇的一或多個第一讀取重試索引值,接續至步驟S203,區塊串管理電路單元215(或重新讀取管理電路2151)根據所述一或多個第一讀取重試索引值的讀取重試權重值從所述一或多個第一讀取重試索引值中選擇目標讀取重試索引值。具體來說,區塊串管理電路單元215(或重新讀取管理電路2151)辨識所述一或多個第一讀取重試索引值所對應的所述一或多個讀取重試權重值,並且辨識所述一或多個讀取重試權重值的大小。接著,區塊串管理電路單元215(或重新讀取管理電路2151)將所述一或多個讀取重試權重值中最大的讀取重試權重值作為目標讀取重試權重值,並且從所述一或多個第一讀取重試索引值中選擇對應所述目標讀取重試權重值的第一讀取重試索引值作為所述目標讀取重試索引值。簡單來說,在多個尚未被選擇的讀取重試索引值中,區塊串管理電路單元215(或重新讀取管理電路2151)會先選擇具有最大讀取重試權重值的一個讀取重試索引值。被選擇的讀取重試索引值會被傳送給處理器211。
接著,在步驟S204中,處理器211使用對應所述目標讀取重試索引值的目標讀取重試選項來對所述目標區塊串執行讀取操作。一般來說,可複寫式非揮發性記憶體模組220的廠商會預先設定用以執行讀取重試操作的多個讀取重試選項。所述多個讀
取重試選項各自具有預先設定的讀取電壓組。處理器211會使用對應所述目標讀取重試索引值的目標讀取重試選項的讀取電壓組來對所述目標區塊串執行讀取操作。
接著,在步驟S205中,處理器211判斷所述讀取操作是否成功。本發明並不限定判斷所述讀取操作是否成功的方式。舉例來說,處理器211使用對應所述目標讀取重試索引值的目標讀取重試選項的讀取電壓組來對所述目標區塊串執行讀取操作,並且對所讀取的資料執行解碼操作以獲得對應的錯誤位元數。處理器211可進一步根據判斷錯誤位元數是否大於錯誤位元數門檻值來判斷所述讀取操作是否成功。例如,若判定錯誤位元數大於錯誤位元數門檻值,則處理器211判定所述讀取操作失敗(解碼操作失敗)。反之,若判定錯誤位元數不大於錯誤位元數門檻值,則處理器211判定所述讀取操作成功(解碼操作成功)
反應於判定所述讀取操作成功,接續至步驟S206,區塊串管理電路單元215(或重新讀取管理電路2151)判定所述讀取重試操作完成。接著,在步驟S207中,區塊串管理電路單元215(或重新讀取管理電路2151)根據所述目標讀取重試索引值來更新所述讀取重試記錄表。
具體來說,當所使用的讀取重試選項可以正確地讀取目標區塊串後,區塊串管理電路單元215(或重新讀取管理電路2151)會判定本次的讀取重試操作已經完成,並且進一步去根據對應此
讀取重試選項的資訊來更新讀取重試記錄表(以下會利用圖5來詳細說明更新讀取重試記錄表的細節)。
反之,反應於判定所述讀取操作不成功(失敗),整體流程會回到步驟S202,以嘗試在讀取重試記錄表的剩餘的未被選擇的一或多個第一讀取重試索引值中選擇新的目標讀取重試索引值。
若讀取重試記錄表中的所有讀取重試索引值皆已被選擇(反應於判定所述目標區塊串的讀取重試記錄表不具有尚未被選擇的一或多個第一讀取重試索引值),接續至步驟S209,區塊串管理電路單元215(或重新讀取管理電路2151)辨識不被記錄在所述讀取重試記錄表的多個第二讀取重試索引值。接著,在步驟S210中,區塊串管理電路單元215(或重新讀取管理電路2151)判斷所述多個第二讀取重試索引值是否皆已被選擇。
反應於判定所述多個第二讀取重試索引值非皆已被選擇,接續至步驟S211,區塊串管理電路單元215(或重新讀取管理電路2151)從於所述多個第二讀取重試索引值中尚未被選擇的一或多個第三讀取重試索引值中選擇一個第三讀取重試索引值作為新的目標讀取重試索引值。也就是說,若在讀取重試記錄表之外的所有第二讀取重試索引值中具有尚未被選擇的多個第三讀取重試索引值,區塊串管理電路單元215(或重新讀取管理電路2151)會選擇其中之一來做為新的目標讀取重試索引值,以執行步驟
S204。
然而,反應於判定所述多個第二讀取重試索引值皆已被選擇(即,所有第二讀取重試索引值皆被選擇過來作為目標讀取重試索引值以執行步驟S204),接續至步驟S212,區塊串管理電路單元215(或重新讀取管理電路2151)判定所述讀取重試操作失敗,並且回應讀取錯誤訊息。也就是說,對應所有讀取重試索引值的讀取重試選項皆已經被使用過來讀取目標區塊串,並且皆沒有讀取成功。此時,區塊串管理電路單元215(或重新讀取管理電路2151)判定所述讀取重試操作失敗,並且回應讀取錯誤訊息。
圖5是根據本發明的一實施例所繪示的圖2的步驟S207(根據所述目標讀取重試索引值來更新所述讀取重試記錄表)的流程圖。
請參照圖5,在步驟S2071中,區塊串管理電路單元215(或重新讀取管理電路2151)判斷所述讀取重試記錄表的多個欄位中是否具有對應所述目標讀取重試索引值的目標欄位。具體來說,在對應目標讀取重試索引值的讀取操作成功後,區塊串管理電路單元215(或重新讀取管理電路2151)會判斷讀取重試記錄表中是否已經記錄所述目標讀取重試索引值。
反應於判定所述讀取重試記錄表的多個欄位中不具有對應所述目標讀取重試索引值的目標欄位,接續至步驟S2072,區塊串管理電路單元215(或重新讀取管理電路2151)判斷所述讀取
重試記錄表中是否具有空白欄位。
反應於判定所述讀取重試記錄表中具有空白欄位,接續至步驟S2073,區塊串管理電路單元215(或重新讀取管理電路2151)設定所述空白欄位為所述目標欄位。接著,在步驟S2074,區塊串管理電路單元215(或重新讀取管理電路2151)記錄所述目標讀取重試索引值至所述目標欄位,其中所述目標欄位所記錄的目標讀取重試權重值為預定權重值。在本實施例中,預定權重值為正整數(即,Y),其大於或等於讀取重試記錄表的所有欄位的總數(即,X)減1(即,Y(X-1))。X為大於1的正整數。
以下以圖7A與圖7B來做例子。圖7A與圖7B是根據本發明的一實施例所繪示的更新讀取重試記錄表的示意圖。
請先參照圖7A,舉例來說,假設目標區塊串的讀取重試記錄表預設是空白的,X等於4,Y等於4。此外,第一次的讀取重試操作成功,並且其中第一讀取重試選項被使用(即,對應的目標讀取重試索引值為“1”)。區塊串管理電路單元215(或重新讀取管理電路2151)欲執行步驟S207來更新目標讀取重試索引值至目標區塊串的讀取重試記錄表。一開始,由於讀取重試記錄表700預設是空白的,即,沒有對應目標讀取重試索引值的目標欄位(步驟S2071→否),區塊串管理電路單元215(或重新讀取管理電路2151)會將四個欄位F1~F4中的一個欄位設定為目標欄位以儲存目標讀取重試索引值。例如,第一欄位F1被設定為目標欄位(步
驟S2072→是)。接著,區塊串管理電路單元215(或重新讀取管理電路2151)根據目標讀取重試索引值“1”來記錄第一欄位F1,其中第一欄位F1的讀取重試索引值RRI(1)被記錄為“1”,並且第一欄位F1的讀取重試權重值RRW(1)被記錄為“4”(步驟S2074)。
請再回到圖5,接著,在步驟S2075中,區塊串管理電路單元215(或重新讀取管理電路2151)對所述讀取重試記錄表中的所述目標欄位之外的多個其他欄位所記錄的多個其他讀取重試權重值減一。
具體來說,除了目標讀取重試權重值會被更新之外,其他已記錄資訊的欄位中的讀取重試權重值也會被更新,即,減去1。也就是說,其他非目標讀取重試索引值的對應的讀取重試權重值會減少。應注意的是,在執行完步驟S2075後,步驟S207的整體流程就完成了,即,讀取重試記錄表的更新已完成。
例如,請參照圖7A,接續上述圖7A的讀取重試記錄表700的例子,假設第二次的讀取重試操作成功,並且其中第三讀取重試選項被使用(即,對應的目標讀取重試索引值為“3”)。區塊串管理電路單元215(或重新讀取管理電路2151)設定空白的第二欄位F2為目標欄位。區塊串管理電路單元215(或重新讀取管理電路2151)根據目標讀取重試索引值“3”來記錄目標欄位(即,第二欄位F2),其中第二欄位F2的讀取重試索引值RRI(2)被記錄為“3”,並且第二欄位F2的讀取重試權重值RRW(2)被記錄為“4”
(步驟S2074)。此外,區塊串管理電路單元215(或重新讀取管理電路2151)將第二欄位F2以外的第一欄位F1中的讀取重試權重值RRW(1)減一(即,成為“3”)(步驟S2075)。也就是說,在第二次讀取重試操作完成後,讀取重試記錄表700被更新至讀取重試記錄表701。
請再回到圖5,若在步驟S2071中,區塊串管理電路單元215(或重新讀取管理電路2151)判定所述讀取重試記錄表的多個欄位中具有對應所述目標讀取重試索引值的目標欄位,接續至步驟S2076,區塊串管理電路單元215將(或重新讀取管理電路2151)所述目標欄位所記錄的目標讀取重試權重值加上所述預定權重值。也就是說,若讀取重試記錄表已經具有所述目標讀取重試索引值,區塊串管理電路單元215(或重新讀取管理電路2151)直接對所述目標讀取重試索引值的目標讀取重試權重值加上所述預定權重值,以增強此目標讀取重試索引值的的權重。
舉例來說,請參照圖7A,接續上述圖7A的讀取重試記錄表702的例子,假設第四次的讀取重試操作成功,並且其中第一讀取重試選項被使用(即,對應的目標讀取重試索引值為“1”)。區塊串管理電路單元215(或重新讀取管理電路2151)會判定讀取重試記錄表702已經具有對應目標讀取重試索引值“1”的目標欄位(即,第一欄位F1),並且將第一欄位F1的讀取重試權重值RRW(1)“2”加上4(預定權重值),即,成為“6”(步驟S2076)(如,
虛框D701所示)。此外,區塊串管理電路單元215再將第一欄位F1以外的欄位F2、F3中的讀取重試權重值RRW(2)、RRW(3)減一(即,讀取重試權重值RRW(2)從“3”成為“2”,讀取重試權重值RRW(2))從“4”成為“3”)(步驟S2075)。也就是說,在第四次讀取重試操作完成後,讀取重試記錄表702被更新至讀取重試記錄表703。
又例如,請參照圖7B,接續圖7B的讀取重試記錄表705的例子,假設第七次的讀取重試操作成功,並且其中第一讀取重試選項被使用(即,對應的目標讀取重試索引值為“1”)。區塊串管理電路單元215(或重新讀取管理電路2151)會判定讀取重試記錄表705已經具有對應目標讀取重試索引值“1”的目標欄位(即,第一欄位F1),並且將第一欄位F1的讀取重試權重值RRW(1)“4”加上4(預定權重值),即,成為“8”(步驟S2076)(如,虛框D703所示)。此外,區塊串管理電路單元215(或重新讀取管理電路2151)再將第一欄位F1以外的欄位F2、F3中的讀取重試權重值RRW(2)、RRW(3)、RRW(4)減一(即,讀取重試權重值RRW(2)從“4”成為“3”;讀取重試權重值RRW(3)從“1”成為“0”;讀取重試權重值RRW(4)從“3”成為“2”)(步驟S2075)。也就是說,在第七次讀取重試操作完成後,讀取重試記錄表705被更新至讀取重試記錄表706。
請再回到圖5,若在步驟S2072中,區塊串管理電路單元
215(或重新讀取管理電路2151)判定所述讀取重試記錄表中不具有空白欄位,接續至步驟S2077,區塊串管理電路單元215(或重新讀取管理電路2151)設定所述讀取重試記錄表中具有最小的讀取重試權重值的欄位為所述目標欄位。接著,於後續的步驟S2074中,區塊串管理電路單元215(或重新讀取管理電路2151)再記錄所述目標讀取重試索引值至所述目標欄位。換言之,具有最小的讀取重試權重值的欄位會被清空以成為用以記錄對應目標讀取重試索引值的資訊的目標欄位,或是直接被對應目標讀取重試索引值的資訊覆寫。
舉例來說,請參照圖7B,接續圖7B的讀取重試記錄表704的例子,假設第六次的讀取重試操作成功,並且其中第四讀取重試選項被使用(即,對應的目標讀取重試索引值為“4”)。區塊串管理電路單元215(或重新讀取管理電路2151)會判定讀取重試記錄表704不具有對應目標讀取重試索引值“4”的目標欄位(步驟S2071→否),並且判定讀取重試記錄表704不具有空白欄位(步驟S2072→否)。接著,區塊串管理電路單元215辨識讀取重試記錄表704中最小的讀取重試權重值“1”,並且將對應的第二欄位F2設定為目標欄位。接著,目標讀取重試索引值“4”與對應的預定權重值會被記錄至第二欄位F2(步驟S2074)(如,虛框D702所示)。此外,區塊串管理電路單元215(或重新讀取管理電路2151)再將第二欄位F1以外的欄位F1、F3、F4中的讀取重試權重值
RRW(1)、RRW(3)、RRW(4)減一。也就是說,在第六次讀取重試操作完成後,讀取重試記錄表704被更新至讀取重試記錄表705。
圖6是根據本發明的一實施例所繪示的圖2的步驟S208(根據最新的所述讀取重試記錄表來判斷是否對所述目標區塊串執行耗損平均操作)的流程圖。
請參照圖6,在步驟S2081中,區塊串管理電路單元215判斷目標讀取重試權重值是否大於權重門檻值。所述權重門檻值為預先設定的,本發明並不限於權重門檻值的具體數值。
反應於判定目標讀取重試權重值大於權重門檻值(S2081→是),接續至步驟S2082,區塊串管理電路單元215(或重新讀取管理電路2151)將對應所述目標讀取重試選項的目標讀取電壓組替換至預設讀取電壓組。具體來說,若目標讀取重試權重值大於權重門檻值,區塊串管理電路單元215認為此目標讀取重試索引值所對應的目標讀取重試選項的可靠度很高。因此,區塊串管理電路單元215利用對應的目標讀取重試選項的讀取電壓組(亦稱,目標讀取電壓組)來取代原先用以讀取目標區塊串的預設讀取電壓組。也就是說,下次對目標區塊串執行讀取操作時,處理器211會直接使用目標讀取電壓組來讀取目標區塊串。
接著,在步驟S2083中,區塊串管理電路單元215(或耗損平均觸發電路2152)判定不對所述目標區塊串執行所述耗損平均操作。並且,區塊串管理電路單元215完成本次所執行的步驟
S208的整體運作。
此外,反應於判定目標讀取重試權重值不大於權重門檻值(步驟S2081→否),接續至步驟S2084,區塊串管理電路單元215(或耗損平均觸發電路2152)加一至所述目標區塊串的讀取重試計數值。
具體來說,除非目標讀取重試權重值大於權重門檻值,否則,在每次讀取重試記錄表被目標讀取重試索引值及目標讀取重試權重值更新時,區塊串管理電路單元215(或耗損平均觸發電路2152)會加一至所述目標區塊串的讀取重試計數值。換言之,大的讀取重試計數值可反映出目標區塊串執行讀取重試操作的次數是多的。特別是,若目標讀取重試選項時常更換(導致目標讀取重試權重值不能大於權重門檻值),讀取重試計數值的數值的增加會更多。
接著,在步驟S2085中,區塊串管理電路單元215(或耗損平均觸發電路2152)判斷所述讀取重試計數值是否大於第一計數門檻值。
反應於判定所述讀取重試計數值大於第一計數門檻值(步驟S2085→是),接續至步驟S2086,區塊串管理電路單元215(或耗損平均觸發電路2152)判定對所述目標區塊串執行所述耗損平均操作。並且,區塊串管理電路單元215(或耗損平均觸發電路2152)完成本次所執行的步驟S208的整體運作。例如,區塊串
管理電路單元215(或耗損平均觸發電路2152)會通知處理器211目標區塊串需執行耗損平均操作。
反應於判定所述讀取重試計數值不大於第一計數門檻值(步驟S2085→否),接續至步驟S2087,區塊串管理電路單元215(或耗損平均觸發電路2152)判斷所述讀取重試計數值是否大於第二計數門檻值。所述第二計數門檻值小於所述第一計數門檻值。
反應於判定所述讀取重試計數值大於第二計數門檻值,接續至步驟S2088,區塊串管理電路單元215(或耗損平均觸發電路2152)判斷所述目標區塊串的有效資料計數值是否大於有效資料計數門檻值。
每個區塊串的有效資料計數值為該區塊串的所儲存的所有有效資料的總量(總大小)除以一預定單位的大小所獲得的商值。在本實施例中,該預定單位被設定為一個實體頁面,但本發明不限於此。例如,在其他實施例中,該預定單位可被設定為兩個以上的實體頁面的大小。又例如,在其他實施例中,該預定單位可被設定一或多個碼字、一或多個字元線、多個扇區、一個實體區塊。
反應於判定所述目標區塊串的有效資料計數值不大於有效資料計數門檻值,接續至步驟S2086,區塊串管理電路單元215(或耗損平均觸發電路2152)判定對所述目標區塊串執行所述耗損平均操作。反之,反應於判定所述目標區塊串的有效資料計數
值大於有效資料計數門檻值,接續至步驟S2083,區塊串管理電路單元215(或耗損平均觸發電路2152)判定不對所述目標區塊串執行所述耗損平均操作。
也就是說,經由步驟S2087~S2088,區塊串管理電路單元215(或耗損平均觸發電路2152)可更利用所述目標區塊串的有效資料計數值來判斷儲存在所述目標區塊串的有效資料的數量,並且在有效資料數較大的時候(有效資料計數值大於有效資料計數門檻值),判定不對目標區塊串執行耗損平均操作,以避免對較多的有效資料執行耗損平均操作所導致的較長的時間延遲。
此外,反應於判定所述讀取重試計數值不大於第二計數門檻值,接續至步驟S2083,區塊串管理電路單元215(或耗損平均觸發電路2152)判定不對所述目標區塊串執行所述耗損平均操作。
綜上所述,本發明實施例所提供的記憶體管理方法與儲存控制器,可在不利用傳統上習知的抹除次數、寫入次數或讀取次數等統計值的情況下,藉由用以記錄多個區塊串所執行的多個讀取重試操作的資訊的多個讀取重試記錄表來判斷較適合的讀取重試選項,並且可根據多個讀取重試記錄表來判斷應執行耗損平均操作的區塊串,以增進讀取重試操作的效率且經由所執行的耗損平衡操作維持資料的穩定度,從而提昇可複寫式非揮發性記憶體模組的存取效率與可靠度。
雖然本發明已以實施例揭露如上,然其並非用以限定本發明,任何所屬技術領域中具有通常知識者,在不脫離本發明的精神和範圍內,當可作些許的更動與潤飾,故本發明的保護範圍當視後附的申請專利範圍所界定者為準。
S201、S202、S203、S204、S205、S206、S207、S208、S209、S210、S211、S212:記憶體管理方法的流程步驟
Claims (12)
- 一種記憶體管理方法,適用於配置有一可複寫式非揮發性記憶體模組的一儲存裝置,其中該可複寫式非揮發性記憶體模組具有多個實體區塊,其中該些實體區塊被分組為多個區塊串,所述方法包括: 對該些區塊串中的一目標區塊串執行讀取重試操作,並且辨識該目標區塊串的一讀取重試記錄表,其中該讀取重試記錄表記錄多個欄位,其中所述多個欄位記錄分別對應多個已完成的讀取重試操作的多個讀取重試索引值與多個讀取重試權重值; 反應於該目標區塊串的該讀取重試記錄表具有尚未被選擇的一或多個第一讀取重試索引值,根據所述一或多個第一讀取重試索引值的讀取重試權重值從所述一或多個第一讀取重試索引值中選擇一目標讀取重試索引值: 使用對應該目標讀取重試索引值的目標讀取重試選項來對該目標區塊串執行讀取操作; 反應於判定該讀取操作成功,判定該讀取重試操作完成,並且根據該目標讀取重試索引值來更新該讀取重試記錄表;以及 根據最新的該讀取重試記錄表來判斷是否對該目標區塊串執行耗損平均操作。
- 如申請專利範圍第1項所述的記憶體管理方法,更包括: 反應於該目標區塊串的該讀取重試記錄表不具有尚未被選擇的所述一或多個第一讀取重試索引值,辨識不被記錄在該讀取重試記錄表的多個第二讀取重試索引值; 判斷該些第二讀取重試索引值是否皆已被選擇; 反應於該些第二讀取重試索引值沒有皆已被選擇,從於該些第二讀取重試索引值中尚未被選擇的一或多個第三讀取重試索引值中選擇一個第三讀取重試索引值作為新的目標讀取重試索引值; 使用對應該目標讀取重試索引值的目標讀取重試選項來對該目標區塊串執行該讀取操作;以及 反應於該些第二讀取重試索引值皆已被選擇,判定該讀取重試操作失敗,並且回應讀取錯誤訊息。
- 如申請專利範圍第1項所述的記憶體管理方法,其中上述根據所述一或多個第一讀取重試索引值的該讀取重試權重值從所述一或多個第一讀取重試索引值中選擇該目標讀取重試索引值的步驟包括: 將所述一或多個讀取重試權重值中最大的讀取重試權重值作為目標讀取重試權重值;以及 從所述一或多個第一讀取重試索引值中選擇對應該目標讀取重試權重值的第一讀取重試索引值作為該目標讀取重試索引值。
- 如申請專利範圍第1項所述的記憶體管理方法,其中上述根據該目標讀取重試索引值來更新該讀取重試記錄表的步驟包括下列步驟: (1)判斷該讀取重試記錄表的該些欄位中是否具有對應該目標讀取重試索引值的目標欄位, 其中反應於判定該讀取重試記錄表中不具有對應該目標讀取重試索引值的該目標欄位,執行步驟(2), 其中反應於判定該讀取重試記錄表中具有對應該目標讀取重試索引值的該目標欄位,執行步驟(5); (2)判斷該讀取重試記錄表中是否具有空白欄位, 其中反應於判定該讀取重試記錄表中不具有空白欄位,執行步驟(3), 其中反應於判定該讀取重試記錄表中不具有空白欄位,執行步驟(4); (3)設定該讀取重試記錄表中具有最小的讀取重試權重值的欄位為該目標欄位,並且執行步驟(4); (4)記錄該目標讀取重試索引值至該目標欄位,其中該目標欄位所記錄的目標讀取重試權重值為預定權重值,執行步驟(6); (5) 將該目標欄位所記錄的目標讀取重試權重值加上該預定權重值;以及 (6) 對該讀取重試記錄表中的該目標欄位之外的多個其他欄位所記錄的多個其他讀取重試權重值減一,並且完成整體根據該目標讀取重試索引值來更新該讀取重試記錄表的步驟。
- 如申請專利範圍第4項所述的記憶體管理方法,其中所述多個欄位的數目被設定為X, 其中該預定權重值被設定為大於或等於(X-1)的正整數。
- 如申請專利範圍第1項所述的記憶體管理方法,其中上述根據最新的該讀取重試記錄表來判斷是否對該目標區塊串執行耗損平均操作的步驟包括下列步驟: (1) 判斷目標讀取重試權重值是否大於一權重門檻值, 其中反應於判定該目標讀取重試權重值大於該權重門檻值,執行步驟(2), 其中反應於判定該目標讀取重試權重值不大於該權重門檻值,執行步驟(4); (2) 將對應該目標讀取重試選項的目標讀取電壓組替換至預設讀取電壓組; (3) 判定不對該目標區塊串執行該耗損平均操作,並且完成整體根據最新的該讀取重試記錄表來判斷是否對該目標區塊串執行耗損平均操作的步驟; (4) 加一至該目標區塊串的一讀取重試計數值; (5) 判斷該讀取重試計數值是否大於一第一計數門檻值, 其中反應於判定該讀取重試計數值大於該第一計數門檻值,執行步驟(8), 其中反應於判定該讀取重試計數值不大於該第一計數門檻值,執行步驟(6); (6)判斷該讀取重試計數值是否大於一第二計數門檻值, 其中反應於判定該讀取重試計數值大於該第二計數門檻值,執行步驟(7), 其中反應於判定該讀取重試計數值不大於該第二計數門檻值,執行步驟(3); (7)判斷該目標區塊串的有效資料計數值是否大於一有效資料計數門檻值, 其中反應於判定該目標區塊串的有效資料計數值大於該有效資料計數門檻值,執行步驟(3), 其中反應於判定該目標區塊串的有效資料計數值不大於該有效資料計數門檻值,執行步驟(8);以及 (8) 判定對該目標區塊串執行該耗損平均操作,並且完成整體根據最新的該讀取重試記錄表來判斷是否對該目標區塊串執行耗損平均操作的步驟。
- 一種儲存控制器,用於控制配置有一可複寫式非揮發性記憶體模組的一儲存裝置,該儲存控制器包括: 一連接介面電路,用以耦接至一主機系統; 一記憶體介面控制電路,用以耦接至該可複寫式非揮發性記憶體模組,其中該可複寫式非揮發性記憶體模組具有多個實體區塊,其中該些實體區塊被分組為多個區塊串; 一區塊串管理電路單元;以及 一處理器,耦接至該連接介面電路、該記憶體介面控制電路及該區塊串管理電路單元, 其中該處理器用以指示該區塊串管理電路單元對該些區塊串中的一目標區塊串執行讀取重試操作, 其中該區塊串管理電路單元用以辨識該目標區塊串的一讀取重試記錄表,其中該讀取重試記錄表記錄多個欄位,其中所述多個欄位記錄分別對應多個已完成的讀取重試操作的多個讀取重試索引值與多個讀取重試權重值, 其中反應於該目標區塊串的該讀取重試記錄表具有尚未被選擇的一或多個第一讀取重試索引值,該區塊串管理電路單元更用以根據所述一或多個第一讀取重試索引值的讀取重試權重值從所述一或多個第一讀取重試索引值中選擇一目標讀取重試索引值, 其中該處理器更用以使用對應該目標讀取重試索引值的目標讀取重試選項來對該目標區塊串執行讀取操作, 反應於判定該讀取操作成功,該區塊串管理電路單元更用以判定該讀取重試操作完成,並且根據該目標讀取重試索引值來更新該讀取重試記錄表, 其中該區塊串管理電路單元更用以根據最新的該讀取重試記錄表來判斷是否對該目標區塊串執行耗損平均操作。
- 如申請專利範圍第7項所述的儲存控制器,其中 反應於該目標區塊串的該讀取重試記錄表不具有尚未被選擇的所述一或多個第一讀取重試索引值,該區塊串管理電路單元辨識不被記錄在該讀取重試記錄表的多個第二讀取重試索引值, 其中該區塊串管理電路單元判斷該些第二讀取重試索引值是否皆已被選擇, 其中反應於該些第二讀取重試索引值沒有皆已被選擇,該區塊串管理電路單元從於該些第二讀取重試索引值中尚未被選擇的一或多個第三讀取重試索引值中選擇一個第三讀取重試索引值作為新的目標讀取重試索引值, 其中該區塊串管理電路單元使用對應該目標讀取重試索引值的目標讀取重試選項來對該目標區塊串執行該讀取操作, 其中反應於該些第二讀取重試索引值皆已被選擇,判定該讀取重試操作失敗,並且回應讀取錯誤訊息。
- 如申請專利範圍第7項所述的儲存控制器,其中在上述該區塊串管理電路單元更用以根據所述一或多個第一讀取重試索引值的該讀取重試權重值從所述一或多個第一讀取重試索引值中選擇該目標讀取重試索引值的運作中, 該區塊串管理電路單元將所述一或多個讀取重試權重值中最大的讀取重試權重值作為目標讀取重試權重值, 其中該區塊串管理電路單元從所述一或多個第一讀取重試索引值中選擇對應該目標讀取重試權重值的第一讀取重試索引值作為該目標讀取重試索引值。
- 如申請專利範圍第7項所述的儲存控制器,其中上述該區塊串管理電路單元更用以根據該目標讀取重試索引值來更新該讀取重試記錄表的運作包括下列步驟: (1)判斷該讀取重試記錄表的該些欄位中是否具有對應該目標讀取重試索引值的目標欄位, 其中反應於判定該讀取重試記錄表中不具有對應該目標讀取重試索引值的該目標欄位,執行步驟(2), 其中反應於判定該讀取重試記錄表中具有對應該目標讀取重試索引值的該目標欄位,執行步驟(5); (2)判斷該讀取重試記錄表中是否具有空白欄位, 其中反應於判定該讀取重試記錄表中不具有空白欄位,執行步驟(3), 其中反應於判定該讀取重試記錄表中不具有空白欄位,執行步驟(4); (3)設定該讀取重試記錄表中具有最小的讀取重試權重值的欄位為該目標欄位,並且執行步驟(4); (4)記錄該目標讀取重試索引值至該目標欄位,其中該目標欄位所記錄的目標讀取重試權重值為預定權重值,執行步驟(6); (5) 將該目標欄位所記錄的目標讀取重試權重值加上該預定權重值;以及 (6) 對該讀取重試記錄表中的該目標欄位之外的多個其他欄位所記錄的多個其他讀取重試權重值減一,並且完成整體根據該目標讀取重試索引值來更新該讀取重試記錄表的步驟。
- 如申請專利範圍第10項所述的儲存控制器,其中所述多個欄位的數目被設定為X, 其中該預定權重值被設定為大於或等於(X-1)的正整數。
- 如申請專利範圍第7項所述的儲存控制器,其中在上述該區塊串管理電路單元更用以根據最新的該讀取重試記錄表來判斷是否對該目標區塊串執行耗損平均操作的運作包括下列步驟: (1) 判斷目標讀取重試權重值是否大於一權重門檻值, 其中反應於判定該目標讀取重試權重值大於該權重門檻值,執行步驟(2), 其中反應於判定該目標讀取重試權重值不大於該權重門檻值,執行步驟(4); (2) 將對應該目標讀取重試選項的目標讀取電壓組替換至預設讀取電壓組; (3) 判定不對該目標區塊串執行該耗損平均操作,並且完成整體根據最新的該讀取重試記錄表來判斷是否對該目標區塊串執行耗損平均操作的步驟; (4) 加一至該目標區塊串的一讀取重試計數值; (5) 判斷該讀取重試計數值是否大於一第一計數門檻值, 其中反應於判定該讀取重試計數值大於該第一計數門檻值,執行步驟(8), 其中反應於判定該讀取重試計數值不大於該第一計數門檻值,執行步驟(6); (6)判斷該讀取重試計數值是否大於一第二計數門檻值, 其中反應於判定該讀取重試計數值大於該第二計數門檻值,執行步驟(7), 其中反應於判定該讀取重試計數值不大於該第二計數門檻值,執行步驟(3); (7)判斷該目標區塊串的有效資料計數值是否大於一有效資料計數門檻值, 其中反應於判定該目標區塊串的有效資料計數值大於該有效資料計數門檻值,執行步驟(3), 其中反應於判定該目標區塊串的有效資料計數值不大於該有效資料計數門檻值,執行步驟(8);以及 (8) 判定對該目標區塊串執行該耗損平均操作,並且完成整體根據最新的該讀取重試記錄表來判斷是否對該目標區塊串執行耗損平均操作的步驟。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW107125833A TWI686697B (zh) | 2018-07-26 | 2018-07-26 | 記憶體管理方法以及儲存控制器 |
US16/136,282 US10509583B1 (en) | 2018-07-26 | 2018-09-20 | Memory management method and storage controller |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW107125833A TWI686697B (zh) | 2018-07-26 | 2018-07-26 | 記憶體管理方法以及儲存控制器 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202008166A TW202008166A (zh) | 2020-02-16 |
TWI686697B true TWI686697B (zh) | 2020-03-01 |
Family
ID=68841460
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW107125833A TWI686697B (zh) | 2018-07-26 | 2018-07-26 | 記憶體管理方法以及儲存控制器 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10509583B1 (zh) |
TW (1) | TWI686697B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI663512B (zh) * | 2018-05-17 | 2019-06-21 | 慧榮科技股份有限公司 | 重讀頁面資料方法 |
KR20220067282A (ko) * | 2020-11-17 | 2022-05-24 | 삼성전자주식회사 | 스토리지 장치, 스토리지 장치를 포함하는 서버 장치 및 스토리지 장치의 구동 방법 |
TWI793966B (zh) * | 2022-01-10 | 2023-02-21 | 群聯電子股份有限公司 | 記憶體管理方法、記憶體儲存裝置及記憶體控制電路單元 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130176784A1 (en) * | 2011-03-30 | 2013-07-11 | Stec, Inc. | Adjusting operating parameters for memory cells based on wordline address and cycle information |
TW201608475A (zh) * | 2014-08-26 | 2016-03-01 | Innodisk Corp | 非揮發性記憶體裝置之損耗平均管理方法 |
TW201732617A (zh) * | 2016-03-03 | 2017-09-16 | 三星電子股份有限公司 | 記憶體模組、記憶體陣列、介面以及控制器 |
US20180047444A1 (en) * | 2016-08-10 | 2018-02-15 | Sk Hynix Memory Solutions Inc. | Memory system with read threshold estimation and operating method thereof |
CN108170366A (zh) * | 2016-12-06 | 2018-06-15 | 华为技术有限公司 | 存储设备中的存储介质管理方法、装置和存储设备 |
CN108255739A (zh) * | 2016-12-28 | 2018-07-06 | 爱思开海力士有限公司 | 存储器系统及其操作方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101678909B1 (ko) * | 2009-09-17 | 2016-11-23 | 삼성전자주식회사 | 플래시 메모리 시스템 및 그것의 소거 리프레쉬 방법 |
KR20130034522A (ko) * | 2011-09-28 | 2013-04-05 | 삼성전자주식회사 | 비휘발성 메모리 장치의 데이터 리드 방법, 및 이를 수행하는 장치 |
-
2018
- 2018-07-26 TW TW107125833A patent/TWI686697B/zh active
- 2018-09-20 US US16/136,282 patent/US10509583B1/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130176784A1 (en) * | 2011-03-30 | 2013-07-11 | Stec, Inc. | Adjusting operating parameters for memory cells based on wordline address and cycle information |
TW201608475A (zh) * | 2014-08-26 | 2016-03-01 | Innodisk Corp | 非揮發性記憶體裝置之損耗平均管理方法 |
TW201732617A (zh) * | 2016-03-03 | 2017-09-16 | 三星電子股份有限公司 | 記憶體模組、記憶體陣列、介面以及控制器 |
US20180047444A1 (en) * | 2016-08-10 | 2018-02-15 | Sk Hynix Memory Solutions Inc. | Memory system with read threshold estimation and operating method thereof |
CN108170366A (zh) * | 2016-12-06 | 2018-06-15 | 华为技术有限公司 | 存储设备中的存储介质管理方法、装置和存储设备 |
CN108255739A (zh) * | 2016-12-28 | 2018-07-06 | 爱思开海力士有限公司 | 存储器系统及其操作方法 |
Also Published As
Publication number | Publication date |
---|---|
TW202008166A (zh) | 2020-02-16 |
US10509583B1 (en) | 2019-12-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111078149B (zh) | 存储器管理方法、存储器存储装置及存储器控制电路单元 | |
TWI591635B (zh) | 記憶體管理方法、記憶體控制電路單元與記憶體儲存裝置 | |
TWI551991B (zh) | 記憶體管理方法與系統及其記憶體儲存裝置 | |
TW201907287A (zh) | 資料讀取方法以及儲存控制器 | |
TWI650757B (zh) | 解碼方法以及儲存控制器 | |
TWI591482B (zh) | 資料保護方法、記憶體控制電路單元及記憶體儲存裝置 | |
TW201947402A (zh) | 記憶體管理方法以及儲存控制器 | |
TWI656531B (zh) | 平均磨損方法、記憶體控制電路單元與記憶體儲存裝置 | |
TW201810025A (zh) | 解碼方法、記憶體儲存裝置及記憶體控制電路單元 | |
CN113140253B (zh) | 存储器管理方法、存储器存储装置及存储器控制电路单元 | |
TWI686697B (zh) | 記憶體管理方法以及儲存控制器 | |
CN111078146B (zh) | 存储器管理方法、存储器存储装置及存储器控制电路单元 | |
TWI642059B (zh) | 記憶體管理方法、記憶體控制電路單元與記憶體儲存裝置 | |
TWI796882B (zh) | 讀取干擾檢查方法、記憶體儲存裝置及記憶體控制電路單元 | |
CN107045890B (zh) | 数据保护方法、存储器控制电路单元及存储器存储装置 | |
TWI691961B (zh) | 記憶體控制方法、記憶體儲存裝置及記憶體控制電路單元 | |
CN116230062A (zh) | 电压预测方法、存储器存储装置及存储器控制电路单元 | |
TWI597731B (zh) | 記憶體管理方法、記憶體儲存裝置及記憶體控制電路單元 | |
US10884660B2 (en) | Memory management method, memory storage device and memory control circuit unit | |
CN110795025B (zh) | 存储器管理方法以及存储控制器 | |
CN114327265B (zh) | 读取干扰检查方法、存储器存储装置及控制电路单元 | |
CN117632038B (zh) | 损耗平衡方法、存储器存储装置及存储器控制电路单元 | |
TWI831366B (zh) | 資料寫入方法、記憶體儲存裝置及記憶體控制電路單元 | |
CN112445416B (zh) | 冷区域判断方法、存储器控制电路单元与存储器存储装置 | |
CN110400593B (zh) | 存储器管理方法、存储器储存装置及存储器控制电路单元 |