TW202131347A - 記憶體控制器與資料處理方法 - Google Patents
記憶體控制器與資料處理方法 Download PDFInfo
- Publication number
- TW202131347A TW202131347A TW109137029A TW109137029A TW202131347A TW 202131347 A TW202131347 A TW 202131347A TW 109137029 A TW109137029 A TW 109137029A TW 109137029 A TW109137029 A TW 109137029A TW 202131347 A TW202131347 A TW 202131347A
- Authority
- TW
- Taiwan
- Prior art keywords
- memory
- data
- processor
- memory block
- block
- 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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/062—Securing storage systems
- G06F3/0622—Securing storage systems in relation to access
-
- 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/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1435—Saving, restoring, recovering or retrying at system level using file system or storage system metadata
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
-
- 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/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- 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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
-
- 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/0656—Data buffering arrangements
-
- 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/0658—Controller construction arrangements
-
- 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)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
- Library & Information Science (AREA)
- Quality & Reliability (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
一種記憶體控制器,包括一記憶體介面與一處理器。處理器耦接至記憶體介面,用以透過記憶體介面控制一記憶體裝置之存取操作。處理器根據記憶體裝置之一第一記憶體區塊之一寫入操作維護一既定表格,並且因應寫入操作執行資料保護。於執行所述資料保護時,處理器判斷第一記憶體區塊是否發生記憶空間損壞。於判斷第一記憶體區塊發生記憶空間損壞時,處理器根據既定表格追溯被寫入第一記憶體區塊之資料所對應之一或多個資料來源,以取得一或多個來源記憶體區塊之位址資訊,並且根據一或多個來源記憶體區塊之位址資訊執行一資料修復操作。
Description
本發明係關於一種資料處理方法,尤指一種可有效保護記憶體裝置儲存之資料的資料處理方法。
快閃記憶體裝置因為製程的因素通常有會有一定比例的記憶單元在其保證壽命前就會發生物理性的破壞,造成記憶單元無法再被繼續使用。若在破壞發生時,記憶單元已被寫入有效資料,則將進一步造成有效資料的遺失。
為了保護快閃記憶體不會因為記憶單元的損壞而發生有效資料遺失,現有的技術中運用了容錯式磁碟陣列(Redundant Array of Independent Disks,縮寫RAID)所採用的保護機制進行快閃記憶體的資料保護。於RAID所採用的保護機制中,會根據被寫入快閃記憶體的資料計算出同位(parity)資訊,並將同位資訊與其所保護之資料一併儲存於快閃記憶體中。於破壞發生時,便可利用同位資訊反向推導出被遺失的有效資料內容。
然而,由於同位資訊必須被儲存於快閃記憶體中,因此,快閃記憶體實際可用於儲存有效資料的記憶體空間會因為保護機制的應用而減少。此外,同位資訊的計算、儲存、以及讀取等操作也會浪費快閃記憶體控制器的運算資源,進一步降低快閃記憶體的存取速度。
為解決上述問題,需要一種新穎的資料處理方法,其可有效保護記憶體裝置儲存之資料,同時可避免上述佔據記憶體空間以及降低記憶體存取速度等的問題。
本發明之一目的在於提供一種可有效保護記憶體裝置儲存之資料的資料處理方法,以解決上述問題。該方法之精神在於當發生記憶空間損壞時利用快閃記憶體的特性追溯回正確的資料,藉此資料修復率可達百分之百。此外,因無須占用記憶體額外的空間,便可修復損壞資料,因此可避免上述佔據記憶體空間以及降低記憶體存取速度等的問題。
根據本發明之一實施例,一種記憶體控制器,包括一記憶體介面與一處理器。處理器耦接至記憶體介面,用以透過記憶體介面控制一記憶體裝置之存取操作,其中處理器根據記憶體裝置之一第一記憶體區塊之一寫入操作維護一既定表格,並且因應寫入操作執行資料保護。於執行所述資料保護時,處理器判斷第一記憶體區塊是否發生記憶空間損壞。於判斷第一記憶體區塊發生記憶空間損壞時,處理器根據既定表格追溯被寫入第一記憶體區塊之資料所對應之一或多個資料來源,以取得一或多個來源記憶體區塊之位址資訊,並且根據一或多個來源記憶體區塊之位址資訊執行一資料修復操作。
根據本發明之另一實施例,一種資料處理方法,適用於一記憶體控制器,記憶體控制器耦接一記憶體裝置並且包括用以控制記憶體裝置之存取操作之一處理器,該方法由處理器所執行並包括:根據一第一記憶體區塊之一寫入操作維護一既定表格;以及因應寫入操作執行資料保護。其中因應寫入操作執行所述資料保護之步驟更包括:判斷第一記憶體區塊是否發生記憶空間損壞;於判斷第一記憶體區塊發生記憶空間損壞時,根據既定表格追溯被寫入第一記憶體區塊之資料所對應之一或多個資料來源,以取得一或多個來源記憶體區塊之位址資訊;以及根據一或多個來源記憶體區塊之位址資訊執行一資料修復操作。
第1圖係顯示根據本發明之一實施例所述之系統方塊圖。所述之系統可以是一資料儲存系統、一電腦系統或者一電子產品系統。系統100可包括一主機裝置110與一儲存裝置120。儲存裝置120可包括一記憶體控制器121與一或多個記憶體裝置。根據本發明之一實施例,儲存裝置120可以是設置於電子產品之中或者與電子產品連接之一固態硬碟(Solid State Drive,縮寫SSD)。記憶體控制器121可耦接至所述一或多個記憶體裝置,其中記憶體裝置可以是圖中所示之動態隨機存取記憶體(Dynamic Random Access Memory,縮寫DRAM)122與快閃記憶體(Flash memory) 123,並且快閃記憶體123可包含多個快閃記憶體模組。記憶體控制器121可透過對應之介面存取DRAM 122及快閃記憶體123。記憶體控制器121也透過對應之介面與主機裝置110溝通,用以接收複數指令,並響應於指令執行對應之記憶體存取操作。
需注意的是,第1圖為一簡化的方塊圖,其中僅顯示出與本發明相關之元件。熟悉此技藝者均可理解,一電子產品系統當可包含許多未示於第1圖之元件,以實施各種對應之功能。
第2圖係顯示根據本發明之一實施例所述之記憶體控制器之範例方塊圖。記憶體控制器200可為記憶體控制器121之一種實現。記憶體控制器200可包括多個介面,例如,主機介面210、記憶體介面220與230等,其中主機介面210可耦接至主機裝置,記憶體介面220與230可耦接至對應之記憶體裝置,記憶體控制器200透過所述介面與週邊裝置溝通。主機介面210可由一控制器實施,例如,一週邊元件快速互連(Peripheral Component Interconnect Express,縮寫PCI Express 或PCI)/串行高技術組態(Serial Advanced Technology Attachment,縮寫SATA)控制器,用以控制記憶體控制器200與主機裝置110之間藉由對應之硬體介面傳遞的溝通訊號。記憶體控制器200可透過主機介面210自主機裝置110接收複數指令。記憶體介面220可由一DRAM控制器實施,用以控制記憶體控制器121/200與DRAM 122之間藉由對應之硬體介面傳遞的溝通訊號。記憶體介面230可由一快閃記憶體控制器實施,用以控制記憶體控制器121/200與快閃記憶體123之間藉由對應之硬體介面傳遞的溝通訊號。
記憶體控制器200可更包括一處理器240、一匯流排250、一指令緩衝記憶體260與一資料緩衝記憶體270。處理器240用以透過匯流排250及前述介面與週邊裝置溝通。舉例而言,處理器240可透過記憶體介面(例如,記憶體介面230)控制記憶體裝置(例如,快閃記憶體123)之存取操作。匯流排250可依循開放式核心協議(Open Core Protocol,縮寫OCP)運作,用以連接主機介面210、記憶體介面220與230、處理器240、指令緩衝記憶體260與資料緩衝記憶體270等裝置,使其可以相互溝通協作。指令緩衝記憶體260與資料緩衝記憶體270用以進行所需之緩衝處理,其中指令緩衝記憶體260與資料緩衝記憶體270可以隨機存取記憶體(RAM)來實施。例如,靜態隨機存取記憶體(Static RAM,縮寫SRAM),但本發明不限於此。
需注意的是,第2圖為一簡化的方塊圖,其中僅顯示出與本發明相關之元件。熟悉此技藝者均可理解,一記憶體控制器當可包含許多未示於第2圖之元件,以實施各種對應之功能。
為能有效保護記憶體裝置(例如,快閃記憶體123)儲存之資料,同時避免上述佔據記憶體空間以及降低記憶體存取速度等的問題,於本發明之實施例中,處理器240因應記憶體裝置的寫入操作執行資料保護,並且於偵測到記憶體區塊發生記憶空間損壞時,利用快閃記憶體既有的特性執行資料修復操作,使得使用者的資料不會因此隨著記憶體破壞而隨之喪失。
第3圖為一範例流程圖,用以顯示根據本發明之一實施例所述之資料處理方法的步驟流程。本發明之資料處理方法適用於記憶體控制器121/200,並且可包含由處理器240執行之以下步驟:
步驟S302: 根據記憶體裝置之第一記憶體區塊之寫入操作維護一既定表格。於本發明之實施例中,既定表格可以是一多方映射表格或一邏輯到實體(Logical to Physical,簡稱L2P)映射表格,且所述之維護可以是根據寫入操作的內容對應地更新既定表格內所記錄的資料。
步驟S303: 因應第一記憶體區塊之寫入操作執行資料保護。其中,步驟S303可更包括以下操作:
步驟S304: 判斷第一記憶體區塊是否發生記憶空間損壞。若是,執行步驟S306。若否,執行步驟S312。
步驟S306: 根據既定表格所紀錄的內容追溯被寫入第一記憶體區塊之資料所對應之一或多個資料來源,以取得一或多個來源記憶體區塊之位址資訊。
步驟S308: 根據一或多個來源記憶體區塊之位址資訊執行一資料修復操作。
步驟S310: 因應資料修復操作更新既定表格。
步驟S312: 因應寫入操作更新既定表格。
值得注意的是,於不同實施例中,步驟S310與步驟S312之執行可被彈性地調整。舉例而言,於一些實施例中,步驟S310或步驟S312之執行可被省略,或者於另一些實施例中,當既定表格為多方映射表格,步驟S310及/或步驟S312可更包含更新L2P映射表格的操作。
一般而言,當資料在記憶體裝置內的不同記憶區域(例如,不同記憶體區塊)間被搬移,其可能是記憶體裝置因為空間不足進而觸發垃圾回收(Garbage collection,縮寫為GC)所產生的資料搬移操作、因為執行寫除抹入平均 (wear leveling)所產生的資料搬移操作、或者因為一或多個主動區塊被寫滿進而觸發將資料以更高空間利用率的方式整合到其他記憶體區塊所產生的資料搬移操作、或其他,其中主動區塊係負責接收來自於主機裝置110的資料,且通常空間利用率低但保護力較佳的記憶體區塊(例如,單層式儲存(Single-Level Cell)記憶體區塊)會被挑選為主動區塊。
而於本發明之實施例中,所述之寫入操作可以是於不同記憶區域間執行資料搬移時,將自來源記憶體區塊複製的資料寫入目的記憶體區塊時所執行的寫入操作。由於資料搬移僅是做資料的平行搬移,資料的內容並沒有改變,因此,於本發明之實施例中,處理器240可紀錄資料的原始位置。於資料搬移到新的記憶區域(例如,目的記憶體區塊)的過程中,若發現新的區域有記憶體損壞的情況,因為相同的資料仍然被儲存於舊的資料區域(例如,來源記憶體區塊)而且其內容是正確的,處理器240可回朔到舊的資料區域,取得正確的資料進行資料修復,藉此可達到最高等級的資料保護力。此外,由於本發明之資料修復操作巧妙地利用了快閃記憶體原有的特性(即,藉由搬移操作優化記憶體空間的利用率,而原有資料在搬移操作後可先被紀錄為無效或刪除其連結但並不會立刻被刪除),因此,於本發明之實施例中,無須占用記憶體額外的空間,便可修復損壞資料,且修復率可達百分之百。
於本發明之一些實施例中,所述既定表格為一多方映射表格(multi-mapping table)。多方映射表格包含複數筆多方映射紀錄,各多方映射紀錄至少包含儲存一邏輯位址之一第一欄位、儲存一來源實體位址之一第二欄位以及儲存一目的實體位址之一第三欄位,用以紀錄一邏輯位址所對應之資料係自哪個來源實體位址被搬移至哪個目的實體位址。根據本發明之一實施例,多方映射表格可被儲存於資料緩衝記憶體270或快閃記憶體123內。舉例而言,處理器240可利用一塊記憶體,各記憶單元可儲存一筆多方映射紀錄。
除前述既定表格外,處理器240可更為記憶體裝置(例如,快閃記憶體123)維護L2P表格,其中L2P表格通常被儲存於快閃記憶體123內,並且於需要被更新時,處理器240可將L2P表格載入資料緩衝記憶體270進行編輯。
根據本發明之一實施例,L2P表格對應於複數邏輯位址(或,複數邏輯資料頁),用以紀錄各邏輯位址(或,複數邏輯資料頁)映射至哪個實體位址之映射資訊。舉例而言,L2P表格可包含複數欄位,各欄位對應於一個邏輯資料頁,用以紀錄此邏輯資料頁之映射資訊。即,此邏輯資料頁之資料係指向(實際上被儲存於)快閃記憶體123的哪個實體位址,其中邏輯資料頁可為從主機裝置110的觀點存取快閃記憶體123所使用的基本單位,一邏輯資料頁可由對應之一邏輯位址表示,或者可由任何可指向該邏輯資料頁的形式表示,並且實體位址可由記憶體區塊編號與物理資料頁編號表示,或者可由任何可指向該實體位址的形式表示。
於本發明之第一實施例中,處理器240根據第一記憶體區塊之寫入操作維護多方映射表格以及L2P表格。更具體的說,於執行第一記憶體區塊之寫入操作時,處理器240係將一或多個邏輯位址所對應之資料寫入第一記憶體區塊。因應第一記憶體區塊之寫入操作,處理器240將各邏輯位址、各邏輯位址所對應之資料的資料來源的相關資訊(例如,來源記憶體區塊的記憶體區塊編號與其中存放此資料的物理資料頁的編號) 以及各邏輯位址所對應之資料的儲存目的地的相關資訊(例如,目的記憶體區塊或第一記憶體區塊的記憶體區塊編號與其中存放所述資料的物理資料頁的編號)分別記錄於多方映射表格中對應之一筆多方映射紀錄的第一欄位、第二欄位與第三欄位。
此外,處理器240更因應第一記憶體區塊之寫入操作將L2P表格中對應於所述一或多個邏輯位址之映射資訊更新為第一記憶體區塊的實體位址。舉例而言,前述於L2P表格中紀錄的實體位址可包含記憶體區塊的編號與存放所述資料的物理資料頁編號。
於本發明之第一實施例中,當處理器240判斷第一記憶體區塊發生記憶空間損壞時,處理器240根據多方映射表格所紀錄的內容追溯被寫入第一記憶體區塊之資料所對應之一或多個資料來源,以取得一或多個來源記憶體區塊之位址資訊,並且將L2P映射表格中對應於被寫入第一記憶體區塊之資料之一或多個邏輯位址的映射資訊修改為所述一或多個來源記憶體區塊的實體位址。如此一來,資料來源可回溯(trace back)至來源記憶體區塊所儲存的正確的資料。
爾後,於執行資料修復操作時,處理器240可選擇另一記憶體區塊(例如,第二記憶體區塊),根據多方映射表格或L2P映射表格所紀錄的內容自所述一或多個來源記憶體區塊讀取先前曾被寫入第一記憶體區塊之資料,並且將自一或多個來源記憶體區塊讀取之資料重新寫入第二記憶體區塊。
值得注意的是,響應於第二記憶體區塊之寫入操作,處理器240亦可進一步如上所述根據第二記憶體區塊之寫入操作維護多方映射表格及/或L2P映射表格,以及因應第二記憶體區塊之寫入操作執行資料保護。
另一方面,當處理器240判斷第一記憶體區塊未發生記憶空間損壞時,或者於資料修復操作完成後,處理器240可清除多方映射表格所紀錄的內容,例如,清除對應於被寫入第一記憶體區塊之資料之一或多個邏輯位址的相關內容,或者僅清除其中的來源實體位址的相關內容。
第4圖係顯示根據本發明之第一實施例所述之映射資訊的紀錄範例。
假設處理器240執行將資料自記憶體區塊Block_A搬移至記憶體區塊Block_B的資料搬移操作。如上所述,資料搬移操作包含讀取並複製來源記憶體區塊Block_A的資料,以及將資料寫入目的記憶體區塊Block_B等的操作。第4圖係以被寫入記憶體區塊Block_B的其中一筆資料作為說明。如圖所示,假設資料41A為原先被儲存於記憶體區塊Block_A中的資料,並且為邏輯位址LA5所對應之資料,資料41A所對應的實體位址可被表示為(A, 10),而因資料搬移的操作,該資料被複製並寫入記憶體區塊Block_B作為資料41B,資料41B所對應的實體位址可被表示為(B, 12)。
處理器240根據寫入操作維護多方映射表格42。多方映射表格42包含複數筆多方映射紀錄,各多方映射紀錄可包含至少三個欄位,第一個欄位儲存邏輯位址之資訊,例如,邏輯位址LA5,第二欄位儲存來源實體位址之資訊,例如,資料41A所對應的實體位址 (A, 10) ,第三欄位儲存目的實體位址之資訊,例如,資料41B所對應的實體位址(B, 12),用以紀錄邏輯位址LA5所對應之資料係自來源實體位址(A, 10)被搬移至目的實體位址(B, 12)。藉由多方映射表格42所紀錄的內容,處理器240可於偵測到記憶空間損壞時回溯正確資料來源。
於本發明之第一實施例中,處理器240亦根據寫入操作維護L2P表格43,用以將L2P表格43中寫入操作所涉及的邏輯位址之映射資訊更新為記憶體區塊Block_B的實體位址。假設L2P表格43的欄位43_n對應於邏輯位址LA5,用以紀錄邏輯位址LA5之映射資訊,處理器240因應寫入操作將欄位43_n的內容更新為資料41B所對應的實體位址(B, 12)。
第5圖係顯示根據本發明之第一實施例所述之當記憶體區塊Block_B發生記憶空間損壞時修改映射資訊的紀錄範例。
當處理器240判斷記憶體區塊Block_B發生記憶空間損壞時,處理器240根據多方映射表格42所紀錄的內容追溯被寫入記憶體區塊Block_B之資料所對應之一或多個資料來源,以取得一或多個來源記憶體區塊之位址資訊,例如,根據多方映射表格42所紀錄的內容,處理器240可得知實體位址(B, 12)所對應的資料41B的資料來源為實體位址 (A, 10)所儲存的資料41A。此外,處理器240可將L2P映射表格43中寫入操作所涉及的邏輯位址之映射資訊修改為來源記憶體區塊的實體位址,使其能指回儲存正確資料的位址。例如,如第5圖所示將欄位43_n的內容修改為資料41A所對應的實體位址 (A, 10)。如此一來,資料來源可回溯至來源記憶體區塊所儲存的正確的資料。
爾後,於執行資料修復操作時,處理器240可選擇另一記憶體區塊,例如,記憶體區塊Block_C,根據多方映射表格42或L2P映射表格43所紀錄的內容自所述一或多個來源記憶體區塊(例如,記憶體區塊Block_A)讀取先前曾被寫入記憶體區塊Block_B之資料,並且將自一或多個來源記憶體區塊讀取之資料重新寫入記憶體區塊Block_C。
另一方面,當處理器240判斷記憶體區塊Block_B未發生記憶空間損壞時,或者於資料修復操作完成後,處理器240可清除多方映射表格42所紀錄的內容,例如,清除對應於被寫入記憶體區塊Block_B之資料之一或多個邏輯位址的相關內容,或者僅清除其中的來源實體位址的相關內容。
不同於第一實施例,於本發明之第二實施例中,處理器240根據第一記憶體區塊之寫入操作維護多方映射表格,但在判斷或確認第一記憶體區塊未發生記憶空間損壞前,處理器240先不將L2P表格中對應於第一記憶體區塊之寫入操作所涉及之一或多個邏輯位址的映射資訊更新為第一記憶體區塊的實體位址,而是暫時保持原先紀錄的內容。於處理器240判斷或確認第一記憶體區塊未發生記憶空間損壞後,處理器240才將L2P表格中對應於該一或多個邏輯位址於之映射資訊更新為第一記憶體區塊的實體位址。
第6圖係顯示根據本發明之第二實施例所述之映射資訊的紀錄範例。第7圖係顯示根據本發明之第二實施例所述之確認記憶體區塊Block_B未發生記憶空間損壞後修改映射資訊的紀錄範例。第6圖與第7圖所顯示的部分內容與第4圖與第5圖相同,相同的部分便不再贅述。
如第6圖所示,於本發明之第二實施例中,在判斷或確認記憶體區塊Block_B未發生記憶空間損壞前,處理器240不因應寫入操作將欄位43_n的內容更新為資料41B所對應的實體位址(B, 12),而是暫時保持原先紀錄的內容,例如,資料41A所對應的實體位址(A, 10)。如此一來,當偵測到記憶體區塊Block_B發生記憶空間損壞時,資料來源可根據多方映射表格42或L2P映射表格43所紀錄的內容回溯至來源記憶體區塊所儲存的正確的資料。
於處理器240判斷或確認記憶體區塊Block_B未發生記憶空間損壞後,處理器240將L2P表格43中對應於記憶體區塊Block_B的寫入操作所涉及的邏輯位址之映射資訊更新為記憶體區塊Block_B的實體位址。
於本發明之第三實施例中,處理器240並不使用額外的記憶體空間維護多方映射表格,僅根據寫入操作維護L2P表格。因此,於本發明之第三實施例中,所述既定表格可為L2P表格。本發明之第三實施例中紀錄映射資訊的方式與第二實施例部分相同,因此,可參考第6圖與第7圖所示有關L2P表格43的映射資訊紀錄範例。
於本發明之第三實施例中,在判斷或確認記憶體區塊Block_B未發生記憶空間損壞前,處理器240不因應寫入操作將欄位43_n的內容更新為資料41B所對應的實體位址(B, 12),而是暫時保持原先紀錄的內容,例如,資料41A所對應的實體位址(A, 10)。如此一來,當偵測到記憶體區塊Block_B發生記憶空間損壞時,資料來源可根據L2P映射表格43所紀錄的內容回溯至來源記憶體區塊所儲存的正確的資料。
於處理器240判斷或確認記憶體區塊Block_B未發生記憶空間損壞後,處理器240將L2P表格43中對應於記憶體區塊Block_B的寫入操作所涉及的邏輯位址之映射資訊更新為記憶體區塊Block_B的實體位址。舉例而言,於更新映射資訊時,處理器240讀取新資料內的邏輯位置紀錄(例如,記憶體區塊Block_B所儲存之資料所對應的邏輯位址紀錄),並且依此邏輯位置將L2P表格43的內容轉換表改成新的位置(例如,這些邏輯位址所對應之記憶體區塊Block_B的實體位址)。
於本發明之實施例中,處理器240可根據以下多種不同的方法之一或多者的結合檢查、判斷或確認被寫入的記憶體區塊(例如,前述之第一記憶體區塊或者記憶體區塊Block_B)是否發生記憶空間損壞。例如,處理器240可於每個新記憶空間被寫入後,確認記憶體裝置所回傳之狀態是否正確,以判斷是否發生記憶空間損壞。舉例而言,記憶體裝置可於執行完一寫入操作後回傳寫入成功或寫入失敗,或者寫入完成或寫入未完成等的狀態訊息。一旦處理器240接收到寫入失敗或寫入未完成等的狀態訊息,可判斷被寫入的記憶體區塊發生記憶空間損壞。
此外,處理器240可於每個新記憶空間被寫入後,回讀確認剛寫入的資料是否為正確的,以判斷是否發生記憶空間損壞。即,處理器240無須於一個完整的記憶體區塊被寫入完畢後才檢查資料的正確性,處理器240可於一個記憶體區塊被寫滿前便執行一或多次的確認。舉例而言,處理器240可於記憶體裝置執行完一寫入操作後,例如,一或多個資料頁的寫入操作完成後,將寫入的資料讀出,並根據讀出的內容判斷資料是否正確或者狀態良好。若處理器240判斷資料不正確或狀態不良好,或所述一或多個資料頁之任一者所儲存之資料被損害時,可判斷被寫入的記憶體區塊發生記憶空間損壞或者極有可能發生記憶空間損壞。其中,當處理器240判斷記憶體區塊極有可能發生記憶空間損壞時,也可利用前述的方式回溯正確資料來源,並啟動本發明所述之資料修復操作。
此外,處理器240可於一個完整的記憶空間寫入完畢後,讀取整個空間內所有的資料判斷資料是否都是正確而且狀態良好的,以判斷是否發生記憶空間損壞。舉例而言,處理器240可於一整個記憶體區塊的寫入操作完成或一個記憶體區塊(例如,目的記憶體區塊)被寫滿後,讀取整個記憶體區塊所儲存的資料,並根據讀出的內容判斷資料是否正確或者狀態良好。若處理器240判斷任一筆資料不正確或狀態不良好,可判斷被寫入的記憶體區塊發生記憶空間損壞或者極有可能發生記憶空間損壞。
於本發明的實施例中,處理器240可藉由分析或解碼讀出的資料判斷資料是否正確或者狀態良好。舉例而言,處理器240可利用一解碼器將從讀出的資料進行錯誤更正碼(Error Correction Code,縮寫ECC)解碼,計算一個記憶空間(例如,一或多個資料頁)的錯誤位元總數量、可以糾錯的錯誤位元數量、不可糾錯的錯誤位元數量,並根據以上結果判斷資料是否正確或者狀態良好。當錯誤位元總數量或不可糾錯的錯誤位元數量大於對應之一臨界值時,判斷資料不正確或狀態不良好。舉另一例,處理器240可分析資料的準位或臨界電壓的分佈,以判斷資料準位或臨界電壓的飄移程度,並根據以上結果判斷資料是否正確或者狀態良好。當飄移程度大於對應之一臨界值時,判斷資料不正確或狀態不良好。舉又另一例,處理器240可將自目的記憶體區塊讀出的資料與來源記憶體區塊所儲存之原始資料比對其正確性,判斷資料是否正確或者狀態良好。當讀出的資料與原始資料的差異量大於對應之一臨界值時,判斷資料不正確或狀態不良好。若處理器240判斷任一筆資料不正確或狀態不良好,可判斷被寫入的記憶體區塊發生記憶空間損壞或者極有可能發生記憶空間損壞。當處理器240判斷記憶體區塊已發生記憶空間損壞或極有可能發生記憶空間損壞時,便可利用前述的方式回溯正確資料來源,並啟動本發明所述之資料修復操作。
如上所述,先前技術中使用同位資訊保護資料的方法存在著佔據記憶體額外的空間以及降低記憶體存取速度等的問題。此外,使用同位資訊保護資料的方法僅能在錯誤率低於一既定位準時發揮效用,因此無法達成百分之百的資料修復率。相較於先前技術,於本發明所提出之資料處理方法中,無須占用記憶體額外的空間,便可修復損壞資料。此外,由於本發明之資料修復操作利用快閃記憶體的特性追溯回正確的資料,因此,當發生記憶空間損壞時,資料修復率可達百分之百。因此,在記憶體裝置的壽命終了前,可確保使用者的資料不會因此隨著記憶體破壞而隨之喪失。
以上所述僅為本發明之較佳實施例,凡依本發明申請專利範圍所做之均等變化與修飾,皆應屬本發明之涵蓋範圍。
100:系統
110:主機裝置
120:儲存裝置
121,200:記憶體控制器
122:動態隨機存取記憶體
123:快閃記憶體
210:主機介面
220,230:記憶體介面
240:處理器
250:匯流排
260:指令緩衝記憶體
270:資料緩衝記憶體
41A,41B:資料
42:多方映射表格
43:L2P表格
43_n:L2P表格的欄位
Block_A,Block_B:記憶體區塊
S302,S303,S304,S306,S308,S310,S312:步驟
第1圖係顯示根據本發明之一實施例所述之系統方塊圖。
第2圖係顯示根據本發明之一實施例所述之記憶體控制器之範例方塊圖。
第3圖係顯示根據本發明之一實施例所述之資料處理方法的範例流程圖。
第4圖係顯示根據本發明之第一實施例所述之映射資訊的紀錄範例
第5圖係顯示根據本發明之第一實施例所述之當記憶體區塊Block_B發生記憶空間損壞時修改映射資訊的紀錄範例。
第6圖係顯示根據本發明之第二實施例所述之映射資訊的紀錄範例。
第7圖係顯示根據本發明之第二實施例所述之確認記憶體區塊Block_B未發生記憶空間損壞後修改映射資訊的紀錄範例。
100:系統
110:主機裝置
120:儲存裝置
121:記憶體控制器
122:動態隨機存取記憶體
123:快閃記憶體
Claims (10)
- 一種記憶體控制器,包括: 一記憶體介面;以及 一處理器,耦接至該記憶體介面,用以透過該記憶體介面控制一記憶體裝置之存取操作,其中該處理器根據該記憶體裝置之一第一記憶體區塊之一寫入操作維護一既定表格,並且因應該寫入操作執行資料保護, 於執行所述資料保護時,該處理器判斷該第一記憶體區塊是否發生記憶空間損壞,以及 於判斷該第一記憶體區塊發生記憶空間損壞時,該處理器根據該既定表格追溯被寫入該第一記憶體區塊之資料所對應之一或多個資料來源,以取得一或多個來源記憶體區塊之位址資訊,並且根據該一或多個來源記憶體區塊之位址資訊執行一資料修復操作。
- 如申請專利範圍第1項所述之記憶體控制器,其中該既定表格為一多方映射表格,該多方映射表格包含複數筆多方映射紀錄,各多方映射紀錄至少包含儲存一邏輯位址之一第一欄位、儲存一來源實體位址之一第二欄位以及儲存一目的實體位址之一第三欄位,用以紀錄該邏輯位址所對應之資料係自該來源實體位址被搬移至該目的實體位址。
- 如申請專利範圍第2項所述之記憶體控制器,其中該處理器更維護一邏輯到實體映射表格,該邏輯到實體映射表格對應於複數邏輯位址,用以紀錄該等邏輯位址映射至哪個實體位址之映射資訊,其中於執行該第一記憶體區塊之該寫入操作時,該處理器將一或多個邏輯位址所對應之資料寫入該第一記憶體區塊,並且將該邏輯到實體映射表格中對應於該一或多個邏輯位址之映射資訊更新為該第一記憶體區塊的實體位址。
- 如申請專利範圍第3項所述之記憶體控制器,其中於判斷該第一記憶體區塊發生記憶空間損壞時,該處理器更將該邏輯到實體映射表格中對應於該一或多個邏輯位址之映射資訊修改為該一或多個來源記憶體區塊的實體位址。
- 如申請專利範圍第2項所述之記憶體控制器,其中該處理器更維護一邏輯到實體映射表格,該邏輯到實體映射表格對應於複數邏輯位址,用以紀錄該等邏輯位址映射至哪個實體位址之映射資訊,其中於執行該第一記憶體區塊之該寫入操作時,該處理器將一或多個邏輯位址所對應之資料寫入該第一記憶體區塊,並且於判斷該第一記憶體區塊未發生記憶空間損壞前,該處理器不將該邏輯到實體映射表格中對應於該一或多個邏輯位址之映射資訊更新為該第一記憶體區塊的實體位址。
- 如申請專利範圍第5項所述之記憶體控制器,其中於判斷該第一記憶體區塊未發生記憶空間損壞後,該處理器將該邏輯到實體映射表格中對應於該一或多個邏輯位址之映射資訊更新為該第一記憶體區塊的實體位址。
- 如申請專利範圍第1項所述之記憶體控制器,其中該既定表格為一邏輯到實體映射表格,該邏輯到實體映射表格對應於複數邏輯位址,用以紀錄該等邏輯位址映射至哪個實體位址之映射資訊,其中於執行該第一記憶體區塊之該寫入操作時,該處理器將一或多個邏輯位址所對應之資料寫入該第一記憶體區塊,並且於判斷該第一記憶體區塊未發生記憶空間損壞前,該處理器不更新該邏輯到實體映射表格。
- 如申請專利範圍第7項所述之記憶體控制器,其中該於判斷該第一記憶體區塊未發生記憶空間損壞後,該處理器將該邏輯到實體映射表格中對應於該一或多個邏輯位址之映射資訊更新為該第一記憶體區塊的實體位址。
- 如申請專利範圍第1項所述之記憶體控制器,其中於執行該資料修復操作時,該處理器更選擇一第二記憶體區塊,自該一或多個來源記憶體區塊讀取先前曾被寫入該第一記憶體區塊之資料,並且將自該一或多個來源記憶體區塊讀取之該資料重新寫入該第二記憶體區塊。
- 一種資料處理方法,適用於一記憶體控制器,該記憶體控制器耦接一記憶體裝置並且包括用以控制該記憶體裝置之存取操作之一處理器,該方法由該處理器所執行並包括: 根據一第一記憶體區塊之一寫入操作維護一既定表格;以及 因應該寫入操作執行資料保護; 其中因應該寫入操作執行所述資料保護之步驟更包括: 判斷該第一記憶體區塊是否發生記憶空間損壞; 於判斷該第一記憶體區塊發生記憶空間損壞時,根據該既定表格追溯被寫入該第一記憶體區塊之資料所對應之一或多個資料來源,以取得一或多個來源記憶體區塊之位址資訊;以及 根據該一或多個來源記憶體區塊之位址資訊執行一資料修復操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/131,775 US11550710B2 (en) | 2020-02-06 | 2020-12-23 | Data processing method and memory controller utilizing the same |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202062970714P | 2020-02-06 | 2020-02-06 | |
US62/970,714 | 2020-02-06 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202131347A true TW202131347A (zh) | 2021-08-16 |
TWI744049B TWI744049B (zh) | 2021-10-21 |
Family
ID=77085819
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW109137029A TWI744049B (zh) | 2020-02-06 | 2020-10-26 | 記憶體控制器與資料處理方法 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN113220221B (zh) |
TW (1) | TWI744049B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114707478B (zh) * | 2022-06-06 | 2022-09-02 | 飞腾信息技术有限公司 | 映射表生成方法、装置、设备及存储介质 |
TWI833588B (zh) * | 2023-03-01 | 2024-02-21 | 南亞科技股份有限公司 | 邏輯位址轉換裝置、方法以及非暫態電腦可讀取儲存媒體 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW269054B (en) * | 1995-02-17 | 1996-01-21 | Silicon Integrated Sys Corp | Auto-recovering method for DRAM and device thereof |
TWI375959B (en) * | 2007-11-06 | 2012-11-01 | Nat Univ Tsing Hua | Method for repairing memory and system thereof |
CN101539887B (zh) * | 2009-05-06 | 2011-08-17 | 美商威睿电通公司 | 快闪存储器管理方法与计算机系统 |
US8688894B2 (en) * | 2009-09-03 | 2014-04-01 | Pioneer Chip Technology Ltd. | Page based management of flash storage |
CN102110056B (zh) * | 2009-12-24 | 2013-07-17 | 群联电子股份有限公司 | 闪存管理方法、闪存控制器与闪存存储系统 |
TW201222552A (en) * | 2010-11-16 | 2012-06-01 | Hon Hai Prec Ind Co Ltd | Memory and method for repairing same, data processing device and driving method using same |
GB2527529B (en) * | 2014-06-24 | 2021-07-14 | Advanced Risc Mach Ltd | A device controller and method for performing a plurality of write transactions atomically within a non-volatile data storage device |
KR20190030790A (ko) * | 2017-09-14 | 2019-03-25 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
TWI662410B (zh) * | 2017-12-18 | 2019-06-11 | 慧榮科技股份有限公司 | 資料儲存裝置與記憶體裝置之資料處理方法 |
-
2020
- 2020-10-26 TW TW109137029A patent/TWI744049B/zh active
- 2020-11-02 CN CN202011203510.0A patent/CN113220221B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
TWI744049B (zh) | 2021-10-21 |
CN113220221A (zh) | 2021-08-06 |
CN113220221B (zh) | 2023-08-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7984325B2 (en) | Storage control device, data recovery device, and storage system | |
TWI555023B (zh) | 快閃記憶體更新方法以及快閃記憶體控制器 | |
US7921339B2 (en) | Flash storage device with data correction function | |
US8972776B2 (en) | Partial R-block recycling | |
TWI408688B (zh) | 用於快閃記憶體的資料寫入方法及其控制器與儲存系統 | |
US20130191705A1 (en) | Semiconductor storage device | |
TW201916018A (zh) | 資料儲存裝置與將資料寫入記憶體裝置之方法 | |
US20120166910A1 (en) | Data storage device and related method of operation | |
US9396132B2 (en) | Storage control device and system to improve data retention in variable resistance memory cells | |
US8516184B2 (en) | Data updating using mark count threshold in non-volatile memory | |
US10635527B2 (en) | Method for processing data stored in a memory device and a data storage device utilizing the same | |
TWI554886B (zh) | 資料保護方法、記憶體控制電路單元及記憶體儲存裝置 | |
TWI744049B (zh) | 記憶體控制器與資料處理方法 | |
CN108958961B (zh) | 数据储存装置以及数据错误管理方法 | |
KR20130069364A (ko) | 비휘발성 반도체 기억 장치 및 그 관리 방법 | |
CN103984506A (zh) | 闪存存储设备数据写的方法和系统 | |
US20180061498A1 (en) | Flash memory device | |
TWI539282B (zh) | 非揮發性儲存裝置與控制器 | |
JP4956230B2 (ja) | メモリコントローラ | |
JP4357305B2 (ja) | 外部記憶装置 | |
JP2008234446A (ja) | データ整合性チェック方法およびデータ整合性チェックシステム | |
JP2012252557A (ja) | メモリコントローラ | |
US11550710B2 (en) | Data processing method and memory controller utilizing the same | |
US10922025B2 (en) | Nonvolatile memory bad row management | |
US20210257024A1 (en) | Storage control device, storage device, and storage control method |