TW201905700A - 資料儲存裝置 - Google Patents

資料儲存裝置

Info

Publication number
TW201905700A
TW201905700A TW106121683A TW106121683A TW201905700A TW 201905700 A TW201905700 A TW 201905700A TW 106121683 A TW106121683 A TW 106121683A TW 106121683 A TW106121683 A TW 106121683A TW 201905700 A TW201905700 A TW 201905700A
Authority
TW
Taiwan
Prior art keywords
trimming
flash memory
group
space
groups
Prior art date
Application number
TW106121683A
Other languages
English (en)
Other versions
TWI672590B (zh
Inventor
鍾建眾
李冠輝
黃逸昌
Original Assignee
慧榮科技股份有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 慧榮科技股份有限公司 filed Critical 慧榮科技股份有限公司
Priority to TW106121683A priority Critical patent/TWI672590B/zh
Priority to CN201710646686.5A priority patent/CN109144886B/zh
Priority to US15/869,867 priority patent/US10437737B2/en
Publication of TW201905700A publication Critical patent/TW201905700A/zh
Application granted granted Critical
Publication of TWI672590B publication Critical patent/TWI672590B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • G06F2212/2022Flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7206Reconfiguration of flash memory system
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

一種資料儲存裝置,包括快閃記憶體以及快閃記憶體控制器,操作該快閃記憶體以儲存資料,並儲存映射表以記錄複數邏輯位址與快閃記憶體的複數物理位址的映射資訊,並且將映射表區分為複數群組;其中,部份群組劃分為第一類空間修整群組,第一類空間修整群組的每一群組所記錄的部份邏輯位址包含於空間修整指令,快閃記憶體控制器對第一類空間修整群組進行空間修整。

Description

資料儲存裝置
本發明係有關於資料儲存裝置,特別有關於非揮發式記憶體的空間修整(trim)。
資料儲存裝置所採用的非揮發式記憶體有多種形式-例如,快閃記憶體(flash memory)、磁阻式揮發性記憶體(Magnetoresistive RAM)、鐵電揮發性記憶體(Ferroelectric RAM)、電阻式揮發性記憶體(Resistive RAM)、自旋轉移力矩揮發性記憶體(Spin Transfer Torque-RAM,STT-RAM)…等,用於長時間資料保存。
資料儲存裝置的效能受限於非揮發式記憶體的操作特性。本領域一項重要議題為提升資料儲存裝置之效能。
本案揭露一種整合型空間修整技術,使得當資料儲存裝置無法在一期限內依據主機之空間修整指令完成空間修整時,能夠優先完成一部分的空間修整。然後,在不影響資料儲存裝置的正常運作下,完成另一部分的空間修整,使得主機可以順利對該資料儲存裝置進行資料的存取。
本發明提供一種資料儲存裝置,包括快閃記憶體以及快閃記憶體控制器,操作快閃記憶體以儲存資料,並儲存映射表以記錄複數邏輯位址與快閃記憶體的複數物理位址的 映射資訊,並且將映射表區分為複數群組;其中,部份群組劃分為第一類空間修整群組,第一類空間修整群組的每一群組所記錄的部份邏輯位址包含於空間修整指令,快閃記憶體控制器對第一類空間修整群組進行空間修整。另外,部份群組更劃分為第二類空間修整群組,第二類空間修整群組的每一群組所記錄的全部邏輯位址包含於空間修整指令。
本發明提供一種資料儲存裝置,包括:快閃記憶體以及快閃記憶體控制器,操作快閃記憶體以儲存資料,並儲存映射表以記錄複數邏輯位址與快閃記憶體的複數物理位址的映射資訊,並且將映射表區分為複數群組,部份群組劃分為第二類空間修整群組,第二類空間修整群組的每一群組所記錄的全部邏輯位址包含於空間修整指令;其中,當執行垃圾回收程序時,如果來源區塊的有效資料屬於第二類空間修整群組的其中之一群組時,快閃記憶體控制器對其中之一群組進行空間修整。
下文特舉實施例,並配合所附圖示,詳細說明本發明內容。
100‧‧‧資料儲存裝置
102‧‧‧控制器
110‧‧‧微處理器
111‧‧‧資料處理模組
122‧‧‧快閃記憶體控制器
120‧‧‧快閃記憶體
130‧‧‧揮發性記憶體
(BLK#,U#)‧‧‧(物理區塊編號,儲存單元編號)
BE‧‧‧後端
BLK#1、BLK#2、BLK#Z‧‧‧物理區塊
DA‧‧‧資料區域
FE‧‧‧前端
G#0...G#4‧‧‧群組
H#3、H#4、H#5、H#6、H#7、H#H、H#K、H#L、H#M、 H#N‧‧‧主機區塊
H2F‧‧‧映射表
H2F_H#1、H2F_H#2、H2F_H#N‧‧‧主機區塊映射表
L#0...L#1280‧‧‧邏輯位址
S602…S918‧‧‧步驟
SA‧‧‧備用區域
U#i、U#(i+1)、U#(i+2)、U#(i+3)‧‧‧儲存單元
第1A圖以及第1B圖根據本案一種實施方式圖解一快閃記憶體120的物理空間規劃;第2圖示意以邏輯位址(如,邏輯區塊位址LBA或全域主機頁GHP)為索引的映射表H2F;第3圖舉例說明一空間修整指令(trim command); 第4圖以方塊圖圖解根據本案一種實施方式實現的一資料儲存裝置100;第5圖係根據本案一種實施方式圖解一對應空間修整指令之群組化之資料儲存方式;第6圖為流程圖,根據本案一種實施方式描述配合空間修整指令之資料儲存方法;第7圖為流程圖,根據本案另一種實施方式描述配合空間修整指令之資料儲存方法;第8圖為流程圖,根據本案另一種實施方式描述配合空間修整指令之資料儲存方法;第9圖為流程圖,根據本案另一種實施方式描述配合空間修整指令之資料儲存方法。
以下敘述列舉本發明的多種實施例。以下敘述介紹本發明的基本概念,且並非意圖限制本發明內容。實際發明範圍應依照申請專利範圍界定之。
非揮發式記憶體可以是快閃記憶體(flash memory)、磁阻式揮發性記憶體(Magnetoresistive RAM)、鐵電揮發性記憶體(Ferroelectric RAM)、電阻式記憶體(Resistive RAM,RRAM)、自旋轉移力矩揮發性記憶體(Spin Transfer Torque-RAM,STT-RAM)…等具有長時間資料保存之記憶體裝置。以下特別以快閃記憶體(flash memory)為例進行討論。
現今資料儲存裝置常以快閃記憶體為儲存媒體,常用來實現記憶卡(memory card)、通用序列匯流排閃存裝置 (USB flash device)、固態硬碟(SSD、NVME、M.2、U.2)...等產品。有一種應用是採多晶片封裝、將快閃記憶體與其控制器包裝在一起-稱為嵌入式快閃記憶體模組(如eMMC)。
以快閃記憶體為儲存媒體的資料儲存裝置可應用於多種電子裝置中。所述電子裝置包括智慧型手機、穿戴裝置、平板電腦、虛擬實境設備…等。電子裝置的中央處理單元(CPU)可視為操作所述資料儲存裝置的一主機。
第1A圖以及第1B圖根據本案一種實施方式圖解一快閃記憶體120的物理空間規劃。如第1A圖所示,快閃記憶體120的儲存空間劃分為複數個區塊(或稱物理區塊,physical blocks)BLK#1、BLK#2…BLK#Z等,Z為正整數。各物理區塊包括複數物理頁(physical pages),例如:256個物理頁。
第1B圖詳解物理頁結構。每一物理頁包括一資料區域(data area)DA、以及一備用區域(spare area)SA。一種實施方式中,資料區域DA之尺寸為16KB,資料區域DA可劃分為複數個儲存單元U#i、U#(i+1)、U#(i+2)、U#(i+3),儲存單元U#i、U#(i+1)、U#(i+2)、U#(i+3)各為4KB,各4KB儲存單元對應1個或複數個邏輯位址。備用區域SA是用來儲存元資料(metadata),包括該物理頁各儲存單元U#i、U#(i+1)、U#(i+2)、U#(i+3)所儲存的資料的邏輯位址、時間戳記(timestamp)、讀取次數(read count)等。邏輯位址有多種形式,例如,以邏輯區塊位址(Logical Block Address,簡稱LBA)、或全域主機頁(Global Host Page,簡稱GHP)編排。
然而,備用區域SA紀錄的儲存單元至邏輯位址映 射關係並非一直有效。快閃記憶體120有一種特殊的物理特性:其中資料之更新並非對同樣空間作複寫,而是將更新資料儲存在閒置空間,且原空間的儲存內容將轉為無效。因應之,快閃記憶體120之映射資訊需動態整理成映射表(如,顯示邏輯位址至物理空間映射的映射表H2F)。
第2圖示意以邏輯位址(如,邏輯區塊位址LBA或全域主機頁GHP)為索引的映射表H2F,其中記錄不同邏輯位址的資料是被儲存至快閃記憶體120哪一物理區塊BLK#之哪一儲存單元U#。因應龐大的儲存空間,映射表H2F可更以主機區塊(host block)為單位,對應主機區塊H#1、H#2…H#Z細分為主機區塊映射表H2F_H#1、H2F_H#2…H2F_H#Z,Z為正整數。
一種實施方式中,一主機區塊映射表的長度為64KB(可儲存於4個連續物理頁中),用以記錄8K個資料的映射關係。一主機區塊映射表涉及的邏輯位址可為GPH#0~#8191、GPH#8192~#16383、GPH#16384~#24575、GPH#24576~#32767、或GPH#32768~#40959之類。該些主機區塊映射表H2F_H#1、H2F_H#2…H2F_H#Z於更新後,可依序儲存至特定的物理區塊中,例如系統資訊區塊。一種實施方式中,為了加速主機區塊映射表H2F_H的讀取,主機區塊映射表H2F_H#1、H2F_H#2…H2F_H#Z可以一指標列表管理,或以一高階映射表(high-level mapping table)來記錄主機區塊映射表H2F_H的編號以及主機區塊映射表H2F_H所儲存的物理位址的映射資訊。映射表H2F是資料儲存裝置操控快閃記憶體120運作的重要依據。
空間修整指令(trim command)為一種增加資料儲 存裝置的效能且符合快閃記憶體120運作特性的指令。主機可發出空間修整指令至資料儲存裝置以通知某一或複數邏輯位址(下文中稱為目標邏輯位址)可移除(即目標邏輯位址的資料已不再有效),資料儲存裝置會立即將某一或複數目標邏輯位址的記錄自映射表H2F(或主機區塊映射表H2F_H)中刪除或修改。日後,這些目標邏輯位址的無效資料的物理空間可於垃圾回收(garbage collection)程序時回收、再利用。
第3圖舉例說明一空間修整指令。一空間修整指令可有高達500筆的修整要求。第3圖所示實施例更示意每筆修整要求所對應的主機區塊,依序涉及主機區塊H#5、H#6、H#7、H#3、H#4、H#5、H#6、H#7、H#3、H#4…等。每一筆修整要求可指示一長度以及一起始邏輯位址,或是起始邏輯位址以及終點邏輯位址,以對應一邏輯位址段。映射表H2F中,修整要求所指示的邏輯位址段的映射資訊可移除,或者邏輯位址段所對應的物理位址被修改為一特定值,例如:0xFFFF或0x0000,以打斷或移除該邏輯位址段中所有邏輯位址至該快閃記憶體120之映射。
第4圖以方塊圖圖解根據本案一種實施方式實現的一資料儲存裝置100。資料儲存裝置100包括控制器102、快閃記憶體120、以及揮發性記憶體130。控制器102包括微處理器110、資料處理模組111、快閃記憶體控制器122。詳細而言,微處理器110以及資料處理模組111係配置於控制器102之前端FE(front end),快閃記憶體控制器122係配置於控制器102之後端BE(back end)。前端FE負責資料儲存裝置100與主機200之溝 通。後端BE負責控制快閃記憶體120之運作,使得主機200可以對快閃記憶體120進行資料之寫入或讀取。如此兩階層架構使得主機200以及資料儲存裝置之間的數據通訊被專責進行(前端FE),主機200與資料儲存裝置100之間的數據吞吐量(throughput)因而顯著提升,更可降低前端FE以及後端BE除錯的複雜度。
此外,主機200可透過一匯流排介面連結資料儲存裝置100A。主機200下達的符合NVMe規範的指令(以下稱為外部指令)將由微處理器110排程,再交由後端BE處理。換言之,微處理器110藉由匯流排介面與主機200進行溝通,接收主機200所傳送之資料10或外部指令。揮發性記憶體130可用以暫存上述資料10或外部指令。微處理器110依優先權的設定或接收的先後順序來對外部指令或是資料進行排程。微處理器110除了是符合NVMe規範之外,亦可以符合ATA(advanced technology attachment,先進技術附件)、PATA(Parallel ATA)、SATA(Serial ATA),SCSI(Small Computer System Interface,小型電腦系統介面SCSI)、eMMC或UFS等規範。
資料寫入的流程為微處理器110經由資料處理模組111而傳送資料10至快閃記憶體控制器122。詳細而言,資料處理模組111會對資料10進行加密、產生校正碼(parity code)、或隨機化處理(randomization)。舉例而言,上述加密機制包括進階加密標準(Advanced Encryption Standard,AES)、或是RSA加密演算法。然後,資料處理模組111依加密後之資料10產生額外的校正碼,此校正碼可以提供加密後之資料10資料正確性 的保護。上述校正機制包括CRC校正機制或是ECC校正機制。隨機化處理(randomization)可使加密後之資料10以及校正碼的值(”0”或”1”)的分佈平均化。最後,快閃記憶體控制器122將隨機化處理後之資料10寫入至快閃記憶體120,並將資料10的邏輯位址以及物理位址儲存至映射表H2F。
在一實施例中,快閃記憶體控制器122可用以儲存映射表H2F。主機200可發出空間修整指令至資料儲存裝置100以指示移除某一或複數目標邏輯位址,則資料儲存裝置100的快閃記憶體控制器122直接或間接地將某一或複數目標邏輯位址自映射表H2F中移除或將目標邏輯位址所對應的目標物理位址修改成特定值,例如0xFFFF,以完成空間修整指令的執行。映射表H2F係對應主機200之空間修整指令可即時且動態地更新。
第5圖係根據本案一種實施方式圖解一對應空間修整指令之群組化之資料儲存方式。在一實施例中,快閃記憶體控制器122儲存一映射表H2F,以記錄主機200的邏輯位址與快閃記憶體120的物理位址之間的映射資訊,並且將映射表H2F依據上述邏輯位址的順序區分為複數個空間修整群組G#0~G#N。如第5圖所示,映射表H2F紀錄了邏輯位址L#0~L#1279,共計1280筆記錄,即1280筆邏輯位址與快閃記憶體120的物理位址之間的映射資訊。快閃記憶體控制器122依上述邏輯位址的順序將映射表H2F區分為複數個空間修整群組G#0~G#4。上述每個空間修整群組的大小較佳是固定的,例如1K Bytes。詳細而言,4B大小用以記錄一筆邏輯位址與快閃記 憶體120的物理位址之間的映射資訊。以邏輯位址的值作為判斷,邏輯位址L#0~L#255屬於空間修整群組G#0,邏輯位址L#256~L#511屬於空間修整群組G#1,邏輯位址L#512~L#767屬於空間修整群組G#2,邏輯位址L#768~L#1023屬於空間修整群組G#3,邏輯位址L#1024~L#1079屬於空間修整群組G#4。
然後,控制器120收到主機200所傳送之空間修整指令,其中該空間修整指令包括複數個修整要求#1~#4。舉例而言,在第5圖所示的實施例中,空間修整指令係涵蓋了邏輯位址L#100~L#1150。空間修整指令使空間修整群組G#0與G#4(以下稱為第一類空間修整群組)之一部分記錄為無效,並且空間修整群組G#1~G#3的全部記錄為無效(以下稱為第二類空間修整群組)。換言之,上述空間修整指令涵蓋了空間修整群組G#0與G#4的一部分、以及空間修整群組G#1~G#3的全部。其中,修整要求#1包括空間修整群組G#0的部分與群組G#1的全部,修整要求#2包括空間修整群組G#3的全部與群組G#4的部分,修整要求#3包括空間修整群組G#1和G#2的全部,修整要求#4包括空間修整群組G#2與G#3的部分。
在一實施例中,快閃記憶體控制器122優先對部分無效之空間修整群組G#0與G#4進行空間修整。完成空間修整群組G#0與G#4之空間修整後,快閃記憶體控制器122可先處理來自於主機200的指令,待指令完成後,或是主機200要求資料儲存裝置100進入省電模式後,或是資料儲存裝置100進入背景模式後,再依序對空間修整群組G#1~G#3進行空間修整。由於空間修整群組G#0與G#4為部分記錄無效,並非全部無效,因 此修整空間修整群組G#0與G#4耗費的時間有限。因此,上述方法可以讓快閃記憶體控制器122在有限時間內先完成一部分的空間修整,剩餘的部份再依序安排空間修整,如此一來,可避免干擾主機200對資料儲存裝置100進行指令控制或資料存取。
在另一實施例中,快閃記憶體控制器122會將修整要求予以整合,再進行第一類空間修整群組及第二類空間修整群組的判斷。例如:將修整要求#1與修整要求#2予以整合,得到第一類空間修整群組的空間修整群組G#0及G#4,以及第二類空間修整群組的空間修整群組G#1及G#3。接著,將修整要求#1、#2及#3予以整合,得到第一類空間修整群組的空間修整群組G#0及G#4,以及第二類空間修整群組的空間修整群組G#1、G#2及G#3。最後,將修整要求#1、#2、#3及#4予以整合,得到第一類空間修整群組的空間修整群組G#0及G#4,以及第二類空間修整群組的空間修整群組G#1、G#2及G#3。由於,修整要求中重覆的範圍已被整合,因此,可有效地降低執行空間修整的次數。
此外,快閃記憶體控制器122更儲存一空間修整查找表用以紀錄複數個數值,其中該等數值之每一者係分別對應並記錄上述空間修整群組之每一者是否已完成空間修整。舉例而言,上述空間修整查找表之格式如下:
由此可知,空間修整查找表係用以儲存1或0之數 值。上述空間修整查找表係對應至空間修整群組,而空間修整群組對應至映射表H2F的部份內容。每個空間修整群組G#0~G#4皆具有一數值儲存於空間修整查找表中。數值1表示該空間修整群組需要進行空間修整但是尚未進行空間修整。數值0表示該空間修整群組已經完成空間修整、或是不需要進行空間修整。另外,由於第一類空間修整群組已於第一時間執行空間修整,因此,第一類空間修整群組的空間修整群組的值為”0”。每當資料儲存裝置100進行空間修整或是接收到空間修正指令,上述空間修整查找表及映射表H2F就需要即時更新。
在一些實施例中,快閃記憶體控制器122使用一指標,用以搭配該空間修整查找表,並且指示目前進行空間修整之空間修整群組的次序以及紀錄需進行空間修整之空間修整群組之數量。舉例而言,在上述空間修整查找表中,有4個空間修整群組需進行空間修整,並且接下來將對空間修整群組G#1進行空間修整。當空間修整群組G#1完成空間修整後,在空間修整查找表其數值將由1修正為0,表示已修整完成。然後,指標將指向空間修整群組G#2,以標示下一個進行空間修整的空間修整群組,以此類推。
由於空間修整查找表僅記錄1或0等數值,因此所需要的儲存空間很小,可以儲存在揮發性記憶體130。再者,藉由本發明所提供之空間修整查找表,能夠快速得知目前映射表H2F之每個空間修整群組G#0~G#4之空間修整的狀況。因此,快閃記憶體控制器120能夠在其餘裕或空檔時間,依據空間修整查找表執行某些空間修整群組的空間修整,而不會影響 到其正常運作,增加資料儲存裝置100的使用效率。
在另一實施例中,當上述第一類空間修整群組完成空間修整後,快閃記憶體控制器122產生並儲存該空間修整查找表,然後,當資料儲存裝置100下一次重新啟動時,快閃記憶體控制器122依據該空間修整查找表對第二類空間修整群組繼續進行空間修整。因此,藉由本發明所提供之資料儲存方法,即使發生意外斷電之情況,也能使用空間修整查找表進行重新啟動並且繼續執行空間修整。
以下將介紹當主機200發出讀取、寫入指令時,資料儲存裝置100藉由空間修整查找表搭配空間修整指令之處理方式。第6圖為流程圖,根據本案一種實施方式描述配合空間修整指令之資料儲存方法。首先執行步驟S602,建立一映射表H2F以記錄邏輯位址與物理位址之間的映射資訊。在步驟S604,快閃記憶體控制器122將映射表H2F依據邏輯位址的順序區分為複數個空間修整群組,例如:映射表H2F依據邏輯位址的順序區分為5個空間修整群組,即空間修整群組G#0~G#4。
在步驟S606,判斷是否接收一空間修整指令。空間修整指令來自於主機200,如果主機200沒有傳送空間修整指令,則重覆執行步驟S606。如果主機200傳送空間修整指令,則執行步驟S608,記錄空間修整指令與空間修整群組G#0~G#N的對應關係。例如:空間修整指令對應至空間修整群組G#0與G#4之部分內容(L#100~L#255以及L#1024~L#1150),空間修整群組G#0與G#4稱之為第一類空間修整群組;空間修整指令對應至空間修整群組G#1~G#3之全部內容,空間修整群組 G#1~G#3稱之為第二類空間修整群組。
在步驟S610,對第一類空間修整群組進行空間修整;在步驟S612,依序對第二類空間修整群組中的空間修整群組進行空間修整。
快閃記憶體控制器122優先對上述第一類空間修整群組進行空間修整。由於第一類空間修整群組已完成修整,所以空間修整查找表較佳不記錄第一類空間修整群組。當第一類空間修整群組完成空間修正後,快閃記憶體控制器122再執行步驟S612,依序對第二類空間修整群組中的空間修整群組進行空間修整。第二類空間修整群組包括空間修整群組G#1~G#3,在空間修整查找表的值記錄為”1”。快閃記憶體控制器122可使用指標指向空間修整查找表中的位址最前的”1”(對應至空間修整群組G#1)或位址最後的”1”(對應至空間修整群組G#3),並對此位址所對應的空間修整群組作為目前空間修整群組。當目前空間修整群組完成空間修整後,將目前空間修整群組在空間修整查找表的值由”1”變更為”0”之後,再將指標指向空間修整查找表中下一個值為”1”的位址,並將此位址所對應的空間修整群組作為目前空間修整群組。例如:空間修整查找表中下一個值為”1”乃對應至空間修整群組G#2,則改由空間修整群組G#2作為目前空間修整群組,以此類推。
另外,由於主機200可能發送另一空間修整指令至資料儲存裝置100,而此空間修整指令乃要求對已完成或不需執行空間修整的空間修整群組進行空間修整。因此,快閃記憶體控制器122較佳記錄等待空間修整群組的總數,即值為”1”的 總數,以確定所有應執行空間修整的空間修整群組皆完成空間修整。
步驟S612較佳可於背景模式中執行,且可分段執行,即目前空間修整群組完成空間修整後,再選取下一個目前空間修整群組之前,快閃記憶體控制器122可先執行資料存取指令,例如:讀取指令或寫入指令。待資料存取指令執行結束後,再下一個目前空間修整群組繼續進行空間修整,直到空間修整群組的總數歸零為止。
步驟S612可包括下列步驟,如第7圖所示,步驟S702,從第二類空間修整群組中選取目前空間修整群組並進行空間修整。然後,在步驟S704中,判斷是否執行讀取指令,此讀取指令較佳來自於主機200,亦可能是垃圾回收程序或資料搬移程序所產生的。如果否則執行步驟S702;如果是則執行步驟S706:判斷該讀取指令的目標邏輯位址是否屬於第二類空間修整群組。如果是,則執行步驟S708,輸出數值為零之目標資料,並執行步驟S702。如果否則執行步驟S710:依據映射表H2F(或主機區塊映射表H2F_H)以及目標邏輯位址自快閃記憶體120取得目標資料並輸出該目標資料。最後,執行步驟S702。
步驟S612可包括下列步驟,如第8圖所示,步驟S802與步驟S702相同,從第二類空間修整群組中選取目前空間修整群組並進行空間修整。然後,在步驟S804中,判斷是否執行寫入指令,此寫入指令較佳來自於主機200,亦可能是垃圾回收程序或資料搬移程序所產生的。如果否則執行步驟S802;如果是則執行步驟S806:判斷該寫入指令的目標邏輯位址是否 屬於第二類空間修整群組。如果是則執行步驟S808:對該目標邏輯位址所屬的目標空間修整群組(例如空間修整群組G#2)進行空間修整。步驟S810將寫入指令的資料寫入快閃記憶體120並更新映射表H2F(或主機區塊映射表H2F_H)。如果否則直接執行步驟S810。最後,執行步驟S802。
第9圖為流程圖,根據本案一種實施方式的垃圾回收程序,此垃圾回收程序運作時將參考空間修整查找表以判斷是否進行資料的搬移。首先執行步驟S902以及S904,其中,步驟S902與步驟S602相同,步驟S904與步驟S604相同,故不多作說明。
在步驟S906,判斷是否啟動垃圾回收程序。垃圾回收程序的啟動條件有許多,例如,資料儲存裝置100的備用區塊總數低於一預設值,或是資料區塊的有效資料總數低於另一預設值,或進入背景模式,或主機200輸出指令要求資料儲存裝置100進入省電模式(power saving)等等。當其中一個條件被滿足時,資料儲存裝置100可啟動垃圾回收程序。
在步驟S908,選取來源區塊以及目的區塊,其中,來源區塊選自於資料區塊池,並較佳為具有最少有效資料總數、最久建立時間、最高抹寫(erase)次數、或最高讀取次數;目的區塊選自於備用區塊池,並較佳為具有最久閒置時間或最低抹寫次數。
在步驟S910,判斷來源區塊的有效資料是否屬於第二類空間修整群組?例如:有效資料的邏輯位址L#300屬於至空間修整群組G#1,而對應至空間修整群組G#1在空間修整 查找表中的值為”1”。如果是則執行步驟S912:對有效資料所屬的目標空間修整群組(例如空間修整群組G#1)進行空間修整。由於空間修整群組G#1所對應的資料為無效資料,故不作資料的搬移。如果資料儲存裝置100記錄有來源區塊的有效資料總數,則將有效資料總數減1。如果否則執行步驟S914:複製來源區塊的有效資料至目的區塊並更新映射表H2F。
S916,判斷來源區塊是否仍有有效資料。如果是則執行步驟S910,再度判斷來源區塊的有效資料是否屬於第二類空間修整群組,例如:有效資料的邏輯位址L#600屬於空間修整群組G#2,屬於第二類空間修整群組,在空間修整查找表中的值為”1”;或是,有效資料的邏輯位址L#200屬於空間修整群組G#0,空間修整群組G#0不屬於第二類空間修整群組,其在空間修整查找表中的值為”0”。如果否則表示來源區塊中已不含任何有效資料,故結束垃圾回收程序。
其他採用上述整合型空間修整概念實現的技術都屬於本案所欲保護的範圍。基於以上技術內容,本案更涉及資料儲存裝置操作方法。
雖然本發明已以較佳實施例揭露如上,然其並非用以限定本發明,任何熟悉此項技藝者,在不脫離本發明之精神和範圍內,當可做些許更動與潤飾,因此本發明之保護範圍當視後附之申請專利範圍所界定者為準。

Claims (14)

  1. 一種資料儲存裝置,包括:一快閃記憶體;以及一快閃記憶體控制器,操作該快閃記憶體以儲存資料,並儲存一映射表以記錄複數邏輯位址與該快閃記憶體的複數物理位址的映射資訊,並且將該映射表區分為複數群組;其中,部份該些群組劃分為一第一類空間修整群組,該第一類空間修整群組的每一該些群組所記錄的部份該些邏輯位址包含於一空間修整指令,該快閃記憶體控制器對該第一類空間修整群組進行空間修整。
  2. 如申請專利範圍第1項所述之資料儲存裝置,其中,部份該些群組更劃分為一第二類空間修整群組,該第二類空間修整群組的每一該些群組所記錄的全部該些邏輯位址包含於一空間修整指令。
  3. 如申請專利範圍第2項所述之資料儲存裝置,其中,待該第一類空間修整群組完成空間修整後,快閃記憶體控制器對該第二類空間修整群組開始進行空間修整。
  4. 如申請專利範圍第2項所述之資料儲存裝置,其中,待該資料儲存裝置被要求進入一省電模式或進入一背景模式後,快閃記憶體控制器對該第二類空間修整群組開始進行空間修整。
  5. 如申請專利範圍第1項所述之資料儲存裝置,其中,該些群組之每一者的大小是固定的。
  6. 如申請專利範圍第2項所述之資料儲存裝置,其中,該快閃 記憶體控制器更儲存一查找表用以紀錄該第二類空間修整群組的每一該些群組。
  7. 如申請專利範圍第2項所述之資料儲存裝置,其中,該快閃記憶體控制器更記錄該第二類空間修整群組的一總數。
  8. 如申請專利範圍第6項所述之資料儲存裝置,其中,該快閃記憶體控制器使用一指標用以指向該查找表中其中之一記錄。
  9. 如申請專利範圍第2項所述之資料儲存裝置,其中,當該快閃記憶體控制器接收一讀取指令時,如果該讀取指令的一目標邏輯位址屬於該第二類空間修整群組時,該快閃記憶體控制器輸出數值為”0”之一目標資料。
  10. 如申請專利範圍第2項所述之資料儲存裝置,其中,當該快閃記憶體控制器接收一寫入指令時,如果該寫入指令的一目標邏輯位址屬於該第二類空間修整群組的其中之一該些群組時,該快閃記憶體控制器對其中之一該些群組進行空間修整。
  11. 一種資料儲存裝置,包括:一快閃記憶體;以及一快閃記憶體控制器,操作該快閃記憶體以儲存資料,並儲存一映射表以記錄複數邏輯位址與該快閃記憶體的複數物理位址的映射資訊,並且將該映射表區分為複數群組,部份該些群組劃分為一第二類空間修整群組,該第二類空間修整群組的每一該些群組所記錄的全部該些邏輯位址包含於一空間修整指令; 其中,當執行一垃圾回收程序時,如果一來源區塊的一有效資料屬於該第二類空間修整群組的其中之一該些群組時,該快閃記憶體控制器對其中之一該些群組進行空間修整。
  12. 如申請專利範圍第11項所述之資料儲存裝置,其中,該來源區塊具有一最少有效資料總數、一最久建立時間、一最高抹寫次數或一最高讀取次數。
  13. 如申請專利範圍第11項所述之資料儲存裝置,其中,該來源區塊選自於一資料區塊池。
  14. 如申請專利範圍第11項所述之資料儲存裝置,其中,該快閃記憶體控制器對其中之一該些群組進行空間修整之後,不移動該有效資料至一目的區塊。
TW106121683A 2017-06-27 2017-06-27 資料儲存裝置 TWI672590B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
TW106121683A TWI672590B (zh) 2017-06-27 2017-06-27 資料儲存裝置
CN201710646686.5A CN109144886B (zh) 2017-06-27 2017-08-01 数据储存装置
US15/869,867 US10437737B2 (en) 2017-06-27 2018-01-12 Data storage device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
TW106121683A TWI672590B (zh) 2017-06-27 2017-06-27 資料儲存裝置

Publications (2)

Publication Number Publication Date
TW201905700A true TW201905700A (zh) 2019-02-01
TWI672590B TWI672590B (zh) 2019-09-21

Family

ID=64693295

Family Applications (1)

Application Number Title Priority Date Filing Date
TW106121683A TWI672590B (zh) 2017-06-27 2017-06-27 資料儲存裝置

Country Status (3)

Country Link
US (1) US10437737B2 (zh)
CN (1) CN109144886B (zh)
TW (1) TWI672590B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI726314B (zh) * 2019-05-02 2021-05-01 慧榮科技股份有限公司 資料儲存裝置與資料處理方法
TWI807674B (zh) * 2021-04-01 2023-07-01 慧榮科技股份有限公司 快閃記憶體控制器的控制方法、快閃記憶體控制器以及儲存裝置

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10909030B2 (en) * 2018-09-11 2021-02-02 Toshiba Memory Corporation Enhanced trim command support for solid state drives
CN111610930B (zh) * 2019-02-26 2023-05-02 慧荣科技股份有限公司 数据储存装置以及非挥发式存储器控制方法
TWI698744B (zh) * 2019-04-10 2020-07-11 慧榮科技股份有限公司 資料儲存裝置及邏輯至物理位址映射表之更新方法
KR20200137542A (ko) * 2019-05-30 2020-12-09 에스케이하이닉스 주식회사 메모리 컨트롤러 및 이를 포함하는 저장 장치
CN112882649B (zh) * 2019-11-29 2024-04-02 慧荣科技股份有限公司 数据储存装置以及非挥发式存储器控制方法
TWI742698B (zh) * 2019-11-29 2021-10-11 慧榮科技股份有限公司 資料儲存裝置以及非揮發式記憶體控制方法
CN112882650B (zh) * 2019-11-29 2024-04-30 慧荣科技股份有限公司 数据储存装置以及非挥发式存储器控制方法
US11748023B2 (en) 2019-11-29 2023-09-05 Silicon Motion, Inc. Data storage device and non-volatile memory control method
US11604601B2 (en) 2020-10-12 2023-03-14 Micron Technology, Inc. Trim value loading management in a memory sub-system
CN116710902A (zh) * 2020-12-28 2023-09-05 华为技术有限公司 快闪存储装置、存储控制方法和电子设备

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7188228B1 (en) * 2003-10-01 2007-03-06 Sandisk Corporation Hybrid mapping implementation within a non-volatile memory system
KR101638061B1 (ko) * 2009-10-27 2016-07-08 삼성전자주식회사 플래시 메모리 시스템 및 그것의 플래시 조각 모음 방법
TWI544334B (zh) * 2012-05-30 2016-08-01 慧榮科技股份有限公司 資料儲存裝置與資料儲存裝置操作方法
US20130326169A1 (en) * 2012-05-31 2013-12-05 Amir Shaharabany Method and Storage Device for Detection of Streaming Data Based on Logged Read/Write Transactions
US9690695B2 (en) * 2012-09-20 2017-06-27 Silicon Motion, Inc. Data storage device and flash memory control method thereof
US9251881B2 (en) * 2013-09-27 2016-02-02 Qualcomm Incorporated System and method to trim reference levels in a resistive memory
US9684568B2 (en) * 2013-12-26 2017-06-20 Silicon Motion, Inc. Data storage device and flash memory control method
US9927999B1 (en) * 2016-09-09 2018-03-27 Western Digital Technologies, Inc. Trim management in solid state drives

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI726314B (zh) * 2019-05-02 2021-05-01 慧榮科技股份有限公司 資料儲存裝置與資料處理方法
TWI807674B (zh) * 2021-04-01 2023-07-01 慧榮科技股份有限公司 快閃記憶體控制器的控制方法、快閃記憶體控制器以及儲存裝置
TWI821151B (zh) * 2021-04-01 2023-11-01 慧榮科技股份有限公司 快閃記憶體控制器的控制方法、快閃記憶體控制器以及儲存裝置
US11809328B2 (en) 2021-04-01 2023-11-07 Silicon Motion, Inc. Control method of flash memory controller and associated flash memory controller and storage device

Also Published As

Publication number Publication date
TWI672590B (zh) 2019-09-21
US10437737B2 (en) 2019-10-08
CN109144886A (zh) 2019-01-04
CN109144886B (zh) 2022-11-11
US20180373643A1 (en) 2018-12-27

Similar Documents

Publication Publication Date Title
TWI672590B (zh) 資料儲存裝置
TWI639918B (zh) 資料儲存裝置以及其操作方法
US11593259B2 (en) Directed sanitization of memory
US9037782B2 (en) Method of programming memory cells and reading data, memory controller and memory storage apparatus using the same
CN109871333B (zh) 存取闪存模块的方法及相关的闪存控制器与电子装置
US10061710B2 (en) Storage device
US20160342463A1 (en) Data protection in a namespace
US10496334B2 (en) Solid state drive using two-level indirection architecture
TWI480733B (zh) 資料寫入方法、記憶體控制器與記憶體儲存裝置
KR20170009706A (ko) 중복 데이터를 감소시키기 위한 저장 장치 및 그것의 동작 방법
CN112099985B (zh) 数据储存装置以及非挥发式存储器控制方法
CN109697170B (zh) 存取闪存模块的方法及相关的闪存控制器与电子装置
US8185687B2 (en) Semiconductor storage device and method of controlling semiconductor storage device
CN111880723A (zh) 数据储存装置与数据处理方法
TWI718709B (zh) 資料儲存裝置以及非揮發式記憶體控制方法
US20100325524A1 (en) Control circuit capable of identifying error data in flash memory and storage system and method thereof
TW202044046A (zh) 資料儲存裝置與資料處理方法
CN112130750B (zh) 数据储存装置以及非挥发式存储器控制方法
JP5204265B2 (ja) 半導体記憶装置及び半導体記憶装置の制御方法
JP2012068765A (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
US20200319999A1 (en) Storage device, control method of storage device, and storage medium
TWI503841B (zh) 寫入方法、記憶體控制器與記憶體儲存裝置
TWI669610B (zh) 資料儲存裝置以及非揮發式記憶體控制方法
TWI695264B (zh) 資料儲存裝置與資料處理方法
CN117850663A (zh) 一种管理数据的方法及相关产品