CN112882650B - 数据储存装置以及非挥发式存储器控制方法 - Google Patents

数据储存装置以及非挥发式存储器控制方法 Download PDF

Info

Publication number
CN112882650B
CN112882650B CN202010709527.7A CN202010709527A CN112882650B CN 112882650 B CN112882650 B CN 112882650B CN 202010709527 A CN202010709527 A CN 202010709527A CN 112882650 B CN112882650 B CN 112882650B
Authority
CN
China
Prior art keywords
target
trimming
bit
trim
host
Prior art date
Legal status (The legal status 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 status listed.)
Active
Application number
CN202010709527.7A
Other languages
English (en)
Other versions
CN112882650A (zh
Inventor
钟育祥
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Silicon Motion Inc
Original Assignee
Silicon Motion Inc
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
Priority claimed from TW109117978A external-priority patent/TWI745986B/zh
Application filed by Silicon Motion Inc filed Critical Silicon Motion Inc
Publication of CN112882650A publication Critical patent/CN112882650A/zh
Application granted granted Critical
Publication of CN112882650B publication Critical patent/CN112882650B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0873Mapping of cache memory to specific storage devices or parts thereof
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • G06F12/0882Page mode
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30047Prefetch instructions; cache control instructions
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • 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/1016Performance improvement
    • 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
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/22Employing cache memory using specific memory technology
    • G06F2212/222Non-volatile 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/46Caching storage objects of specific type in disk cache
    • G06F2212/466Metadata, control data
    • 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/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • 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/7204Capacity control, e.g. partitioning, end-of-life degradation
    • 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

Abstract

本发明涉及数据储存装置的高效修整技术所对应的背景式主机‑装置映射表更新,其中一控制器翻转一修整位元总表内的一目标位元,且将该目标位元所标示,一特定长度的一目标修整更新至一主机‑装置映射表。该控制器将该目标修整的起始逻辑地址以及长度快取于一暂存存储器的一快取区,以自该快取区冲至该非挥发式存储器。该目标位元属于该修整位元总表中的一目标修整位元子表。该控制器还将该目标位元翻转后的该目标修整位元子表快取于该快取区,以自该快取区冲至该非挥发式存储器。

Description

数据储存装置以及非挥发式存储器控制方法
技术领域
本发明有关于数据储存装置的修整(trimming)技术。
背景技术
非挥发式存储器有多种形式─例如,快闪存储器(flash memory)、磁阻式随机存取存储器(Magnetoresistive RAM)、铁电随机存取存储器(Ferroelectric RAM)、电阻式随机存取存储器(Resistive RAM)、自旋转移力矩随机存取存储器(Spin Transfer Torque-RAM,STT-RAM)…等,用于长时间数据保存,可做为储存媒体实现一数据储存装置。
非挥发式存储器通常有其特殊的储存特性。本技术领域需要相应非挥发式存储器的储存特性发展相应的控制技术。例如,符合非挥发式存储器储存特性的修整(trimming)技术。
发明内容
本发明相应一种高效修整技术,提出一主机-装置映射表的背景式更新。
根据本发明一种实施方式实现的一数据储存装置包括一非挥发式存储器、以及耦接该非挥发式存储器的一控制器以及一暂存存储器。该控制器系建构来翻转一修整位元总表内的一目标位元,且将该目标位元所标示,一特定长度的一目标修整更新至一主机-装置映射表。该控制器将该目标修整的起始逻辑地址地址以及长度快取于该暂存存储器的一快取区,以自该快取区冲至该非挥发式存储器。该目标位元属于该修整位元总表中的一目标修整位元子表。该控制器更将该目标位元翻转后的该目标修整位元子表快取于该快取区,以自该快取区冲至该非挥发式存储器。
一种实施方式中,该控制器是对应该目标修整,将虚置映射数据填入该主机-装置映射表。
一种实施方式中,该控制器还在该暂存存储器上管理一修整资讯旗标表,对应该快取区的多个储存格,标示该快取区所载的该目标修整的起始逻辑地址以及长度、且标示该快取区所载的该目标修整位元子表。该控制器还令该修整资讯旗标表,随着该快取区冲至该非挥发式存储器。
一种实施方式中,该控制器还在该暂存存储器上管理一储存资讯表,对应该快取区的上述多个储存格,在对应的储存格储存使用者数据时记录一逻辑地址,在对应的储存格载有该目标修整位元子表时记录一目标子表编号,且在对应的储存格载有该目标修整的起始逻辑地址以及长度时,记录一部分修整代号。该控制器还令该储存资讯表,随着该快取区冲至该非挥发式存储器。
一种实施方式中,该目标修整的起始逻辑地址以及长度结合虚置数据占据该快取区一个储存格的一半容量。该目标修整位元子表的尺寸为一个储存格的一半容量。该目标修整的起始逻辑地址以及长度结合虚置数据快取于一目标储存格前半段时,该储存资讯表中对应该目标储存格的资讯是以前半段记录该部分修整代号。该目标修整位元子表快取于该目标储存格后半段时,该储存资讯表中对应该目标储存格的资讯是以后半段记录该目标子表编号。
一种实施方式中,该控制器令该目标位元遍历该修整位元总表,完整翻转该修整位元总表,将该修整位元总表标示的所有修整都更新至该主机-装置映射表。此部分可在该控制器回应一主机发出的多个指令之间的闲置时间执行。
一种实施方式中,相应该主机发下的一写入指令,该控制器查询该修整位元总表。该写入指令要求写入的逻辑地址区间在该修整位元总表内标示为已修整时,该控制器根据该逻辑地址区间设定该目标位元,翻转该目标位元,将该目标修整更新至该主机-装置映射表,才于该快取区快取该写入指令要求的一写入数据,且修正该主机-装置映射表,令该逻辑地址区间指向该快取区快取的该写入数据。
一种实施方式中,该主机-装置映射表包括多个映射子表。各映射子表管理该特定长度的逻辑地址区间的映射数据。该控制器是将该目标修整对应的一目标映射子表自该非挥发式存储器载入该暂存存储器,全面填上虚置映射数据,显示该目标修整。
一种实施方式中,随着翻转该目标位元、且将该目标修整更新至该主机-装置映射表,该控制器更新一有效页数表,该有效页数表条列该非挥发式存储器各区块的有效页数。
以上控制该非挥发式存储器的控制器也可以由其他架构实现。本发明还可以前述概念实现非挥发式存储器的控制方法。
下文特举实施例,并配合附图,详细说明本发明内容。
附图说明
图1图解快闪存储器中区块Blk的结构;
图2图解根据本发明一种实施方式所实现的一数据储存装置200;
图3图解修整的分类;
图4图解首位少量修整(302),其中修整逻辑区块地址LBA 5~LBA 7;
图5图解首位中等长度修整(304),其中修整逻辑区块地址LBA 8~LBA 4095;
图6A以及图6B图解大量修整(306),其中修整逻辑区块地址LBA 4096~LBA100663295;
图7图解末位中等长度修整(308);
图8图解末位少量修整(310),其中修整逻辑区块地址LBA 100664320~LBA100664323;
图9整理LBA 5~LBA 100664323修整指令执行后,动态随机存取存储器206上存在内容;
图10A、10B以及10C图解该修整位元总表TBM一位元的"1"至"0"翻转;
图11图解LBA 10240(5MB)起始的12KB写入如何被回应;
图12A、12B、12C根据本发明一种实施方式图解表格重建机制;
图13根据本发明一种实施方式图解修整指令(trim command)处理方法;
图14为流程图,根据本发明一种实施方式图解如何根据该修整位元总表TBM背景更新该主机-快闪存储器映射表H2F;
图15为流程图,根据本发明一种实施方式图解如何回应主机208发出的写入指令;以及
图16为流程图,根据本发明一种实施方式图解如何一复电程序。
符号说明
200~数据储存装置;
202~快闪存储器;
204~控制器;
206~动态随机存取存储器(DRAM);
208~主机;
210~主动区块A_Blk的闲置区域;
302…310~修整逻辑地址范围分类区间;
402、404、502、602、604、702、802、804、1002、1004、1102、1104、1106~快取区Data_Cache的储存区间;
1202~一串修整资讯旗标;
1204~一串储存资讯;
A_Blk~主动区块;
Blk~区块;
Data_Cache~快取区;
GHP0、GHP1、GHP511、GHP0x100、GHP0x17F、GHP0xC00000、GHP0xC0007F、GHP0xC00080~全域主机页编号的映射资讯;
H2F~主机-快闪存储器映射表;
H2F_G0、H2F_G48、H2F_G#~映射子表;
Info_Blk~系统资讯区块;
S1302…S1314、S1402…S1410、S1502…S1510、S1602…S1618~步骤;
Spare_Area~闲置区域;
TBM~修整位元总表;
TBM_G0、TBM_G1、TBM_G2、TBM_G3、TBM_G127~修整位元子表;
TIFM~修整资讯旗标表;
Trim_Code~修整代码;
Trim_Tag~修整标签。
具体实施方式
以下叙述列举本发明的多种实施例。以下叙述介绍本发明的基本概念,且并非意图限制本发明内容。实际发明范围应依照权利要求书界定。
非挥发式存储器可以是快闪存储器(Flash Memory)、磁阻式随机存取存储器(Magnetoresistive RAM)、铁电随机存取存储器(Ferroelectric RAM)、电阻式存储器(Resistive RAM,RRAM)、自旋转移力矩随机存取存储器(Spin Transfer Torque-RAM,STT-RAM)…等,提供长时间数据保存的储存媒体。以下特别以快闪存储器为例进行讨论。
现今数据储存装置常以快闪存储器为储存媒体,实现记忆卡(Memory Card)、通用串行总线闪存装置(USB Flash Device)、固态硬碟(SSD)…等产品。有一种应用是采多晶片封装、将快闪存储器与其控制器包装在一起─称为嵌入式快闪存储器模组(如eMMC)。
以快闪存储器为储存媒体的数据储存装置可应用于多种电子装置中。所述电子装置包括智慧型手机、穿戴装置、平板电脑、虚拟实境设备…等。电子装置的运算模块可视为主机(Host),操作所使用的数据储存装置,以存取其中快闪存储器。
以快闪存储器为储存媒体的数据储存装置也可用于建构数据中心。例如,伺服器可操作固态硬碟(SSD)阵列形成数据中心。伺服器即可视为主机,操作所连结的固态硬碟,以存取其中快闪存储器。
快闪存储器有其特殊的储存特性,以下叙述之。
主机(Host)端是以逻辑地址(例如,逻辑区块地址LBA或全域主机页编号GHP…等)来区别数据。至于数据实际储存在快闪存储器何处,则是以映射方式管理。
快闪存储器的物理空间是划分为多个区块(Blocks)配置使用。图1图解快闪存储器中区块Blk的结构。
区块Blk包括多个页面(Pages),例如,页面0…页面255。各页面包括多个区段(Sectors),例如32个区段。每一区段可储存512B长度的使用者数据;一页面可供应16KB储存空间。一种实施方式系根据页面编号─由低编号至高编号─循序使用一区块(Blk)的储存空间。或者,某些实施方式使用的是数据吞吐量大幅提升的多通道技术,系将不同通道存取的区块视为一个超级区块(Super Block),将不同通道之间的页面视为超级页面(SuperPage)。多通道技术可根据超级页面编号─由低编号至高编号─循序使用一超级区块的储存空间。以下讨论所指区块也可以是超级区块。
一种实施方式中,一区段(512B)可对应一个逻辑区块地址LBA。以4KB数据管理模式为例,八个连续区段组成的4KB空间为一数据管理单元,对应八个连续逻辑区块地址LBAs的数据储存,即对应一个全域主机页编号GHP。一页面的四段数据管理单元(共16KB)可对应四个全域主机页编号GHPs。如图1所示,区块Blk包括一闲置区域(spare area)Spare_Area,由各页末端闲置空间组成,其中可标注对应页面的四段数据管理单元所对应的四个全域主机页编号GHPs。一种实施方式是在闲置区域Spare_Area为各段4KB数据管理单元规划4B的全域主机页编号GHP栏位(GHP entry)。除了载于该闲置区域Spare_Area,整个区块Blk空间所映射的全域主机页编号GHPs也可编排为区块结尾资讯(end-of-block information,简称EoB),载于该区块Blk最末的页面255。闲置区域Spare_Area、或区块结尾资讯(EoB)的全域主机页编号GHPs记录就是用于追踪物理空间以及逻辑地址之间复杂的映射关系。
特别是,快闪存储器有一项重要特性,就是同样逻辑地址的数据更新并非覆写至旧数据的储存空间。新版本的数据须写入空白的空间。旧空间的内容无效。一区块可能仅零星留存有效数据。由于快闪存储器的储存空间需抹除(erase)后方能再次使用,备用区块逐渐消耗。备用区块数量不足时(如,低于阀值),垃圾回收(Garbage Collection)需求产生。一区块留存的零星有效数据经垃圾回收集中到其他空间。徒留无效数据的区块则抹除释出,拉升备用区块数量,确保快闪存储器的正常使用。垃圾回收也可能使得同区块内容的逻辑顺序更跳跃。
由前述内容可知,快闪存储器的空间配置相当复杂。一种实施方式是除了维护前述物理至逻辑映射的资讯外(例如,为各4KB数据管理单元所储存的4B全域主机页编号GHP),更反向建立一主机-装置映射表;如,一主机-快闪存储器映射表(host-to-flashmapping table,H2F映射表),显示主机操作用的全域主机页编号GHP是映射到快闪存储器哪些实体地址。
然而,随着制程进步,快闪存储器尺寸越来越大。4TB的快闪存储器,其主机-快闪存储器映射表H2F会达4GB。8TB的快闪存储器,其主机-快闪存储器映射表H2F会达8GB。过分庞大的主机-快闪存储器映射表H2F不容易动态管理。
一种解决方案是将主机-快闪存储器映射表H2F切分为较小尺寸的映射子表,例如,对应不同逻辑地址群组G#(#为编号)的映射子表H2F_G#。被呼叫到的映射子表H2F_G#才载出参考或更新。相较于完整的主机-快闪存储器映射表H2F,映射子表H2F_G#的动态更新只耗费少量系统资源。
本发明特别讨论快闪存储器的修整(trim)操作。修整操作是用于无效所指定的逻辑地址区间。由于修整的逻辑地址区间常常尺寸可观,涉及数量庞大的映射子表H2F_G#更新(载出填入虚置映射数据),非常耗时。本发明提出一种新的修整方案,使得该主机-快闪存储器映射表H2F可部分在修整完成后,再以背景方式更新。以下讨论之。
图2图解根据本发明一种实施方式所实现的一数据储存装置200,包括一快闪存储器202、一控制器204以及一动态随机存取存储器(DRAM)206。主机208透过控制器204操作快闪存储器202。数据储存装置200内部也可经控制器204发动快闪存储器202的最佳化操作;例如,整理快闪存储器202空间,使其发挥最大储存效能。控制器204进行运算时是以动态随机存取存储器206暂存数据。动态随机存取存储器206也可以其他暂存存储器取代,如静态随机存取存储器SRAM,或其他控制器204得以高速存取的储存空间。
动态随机存取存储器206有多种规划,包括提供快取区Data_Cache,将数据收集成数据管理单元4KB大小后,再一一冲至(flush)快闪存储器202的主动区块A_Blk中。主动区块A_Blk是选自闲置区块,待完成写入则视为数据区块。完整的主机-快闪存储器映射表H2F一般保存在快闪存储器202的系统资讯区块Info_Blk。数据自快取区Data_Cache冲至主动区块A_Blk时,相关的映射子表H2F_G#自快闪存储器202载出修正,再回存快闪存储器202更新总表H2F。传统修整也包括映射子表H2F_G#的载出修正以及回存。但大量修整涉及到多个映射子表H2F_G#更新,非常耗时。本发明提出替代方案。根据主机208发出的一修整指令(trim command),控制器204编写该快取区Data_Cache快取一修整标签Trim_Tag,反映修整状况,使修整状况也会冲至主动区块A_Blk作非挥发式储存。修整标签Trim_Tag注明主机-快闪存储器映射表H2F还有哪些部分没有随着修整指令更新。控制器204可以在填写指令完成伫列(completion queue)回报主机208修整指令完成后,再找机会,根据修整标签Trim_Tag,将映射子表H2F_G#一一载出更新,符合修整需求。如此一来,控制器204不会被修整指令困住。数据储存装置200效能显著提升。
为了帮助解读该修整标签Trim_Tag,控制器204更在该动态随机存取存储器206上维护修整资讯旗标表TIFM、修整代号Trim_Code、以及修整位元总表TBM。修整资讯旗标表TIFM以及修整代号Trim_Code的内容也会冲至主动区块A_Blk的闲置区域210作非挥发式储存,后续若有复电重建需求,就可以根据闲置区域210解读出快闪存储器202相对页面是储存修整标签Trim_Tag。修整位元总表TBM是以简单位元方式标注主机-快闪存储器映射表H2F中未同步处,使控制器204正确回复主机208读、写指令。
本发明将修整分为三种类型:大量修整;中等长度修整;以及少量修整。大量修整对齐一第一长度的分界、且为该第一长度的N倍,N为正整数。中等长度修整不超过该第一长度,且对齐一第二长度的分界。少量修整短于该第二长度。一种实施方式中,映射子表H2F_G#管理的逻辑地址长度即该第一长度,例如2MB。一种实施方式中,数据管理单元尺寸(即快取区Data_Cache各储存格尺寸)即该第二长度,例如4KB。三种尺寸的修整技术不同。少量修整是直接填虚置数据(dummy data)代表该段逻辑地址区间已修整。中等长度修整是快取起始逻辑地址以及长度。大量修整是快取该修整位元总表TBM的相关部分。
以下以逻辑区块地址LBA 5~LBA 100664323的修整为例,讨论本发明控制器204的操作细节。
图3图解修整的分类。主机208对逻辑区块地址LBA 5~LBA 100664323发出修整指令。控制器204分类该修整指令指定的修整范围LBA 5~LBA 100664323,将之分为区间302、304、306、308以及310。区间306为大量修整,位于逻辑区块地址LBA 4096~LBA 100663295,对齐2MB分界,尽可能的在整体修整范围中,切出2MB倍数的最大修整。区间306之前包括:小于4KB的区间302,位于逻辑区块地址LBA 5~LBA 7,对应首位少量修整;以及对齐4KB分界、但不足2MB的区间304,位于逻辑区块地址LBA 8~LBA 4095,对应首位中等长度修整。区间306之后包括:对齐4KB分界但不足2MB的区间308,位于逻辑区块地址LBA100663296~LBA100664319,对应末位中等长度修整;以及小于4KB的区间310,位于逻辑区块地址LBA100664320~LBA 100664323,对应末位少量修整。
图4图解首位少量修整(302),其中修整逻辑区块地址LBA 5~LBA 7,包括:步骤1,填写4KB内容进快取区Data_Cache;以及,步骤2,更新主机-快闪存储器映射表H2F。
步骤1,控制器204将逻辑区块地址LBA 0~LBA 4(不修整区间)的原本数据填入快取区Data_Cache的区间402,并对应要修整的逻辑区块地址LBA 5~LBA 7填写虚置数据(dummy data例如,零)至快取区Data_Cache的区间404。区间402中关于逻辑区块地址LBA 0~LBA 4的2.5KB不修整数据、以及区间404中1.5KB的虚置数据组合成4KB数据,符合4KB数据管理单元,由快取区Data_Cache一个储存格快取。
步骤2,控制器204在动态随机存储器206上更新逻辑区块地址LBA 0~LBA 7(即GHP 0)对应的映射子表H2F_G0,以更新该主机-快闪存储器映射表H2F。控制器204将全域主机页编号GHP 0的映射数据指向该快取区Data_Cache上述区间402以及404组成的该4KB储存格。如此一来,全域主机页编号GHP 0的映射绑定此4KB内容。虚置数据代表逻辑区块地址LBA 5~LBA 7的修整状态。对应该快取区Data_Cache的多个储存格,控制器204会在动态随机存取存储器206上还维护一储存资讯表(未绘制在此图),在对应储存格快取的是使用者数据时,记录一逻辑地址;此例即记录全域主机编号GHP 0,将与快取区Data_Cache储存格内容一起冲至主动区块A_Blk作为储存资讯,例如,用作日后主机-快闪存储器映射表H2F重建。后面讨论的应用中,快取区Data_Cache储存格储存的可以不是使用者资讯,而是修整资讯,则该储存资讯表可对应储存其他内容,例如:修整代号。
图5图解首位中等长度修整(304),其中修整逻辑区块地址LBA 8~LBA 4095,包括:步骤1,更新主机-快闪存储器映射表H2F;步骤2,编写修整资讯旗标表TIFM、以及修整代号Trim_Code;以及,步骤3,将修整资讯填入快取区Data_Cache。
步骤1,控制器204在动态随机存储器206上更新逻辑区块地址LBA 8~LBA 4095(即GHP 1~GHP 511)对应的映射子表H2F_G0,以更新该主机-快闪存储器映射表H2F。控制器204填入虚置映射数据(如,零)作为全域主机页编号GHP 1~GHP 511的映射数据。不同于少量修整是填充虚置数据,中等长度数据修整是填充虚置映射数据。
步骤2,控制器204编写修整资讯旗标表TIFM、以及修整代号Trim_Code。修整资讯旗标表TIFM各位元对应该快取区Data_Cache一个4KB储存格。修整代号Trim_Code则是填入前述储存资讯表中。接续在区间404后的4KB储存格所对应的修整资讯旗标表TIFM位元设立为"1",表示该储存格4KB内容要解读为修整资讯,不可当使用者数据解读。控制器204是在上述储存资讯表对应填写4B的修整代号Trim_Code,包括:2B的数据"0xAAAA";以及2B的虚置代号(例如全零)。此实施方式中,修整代号Trim_Code是以2B编写。快取区Data_Cache是以切半的储存格,用2KB空间储存修整资讯。2KB"0xAAAA"代表2KB区间502所填写的修整资讯是中等长度修整的起始逻辑地址以及长度。
步骤3,控制器204将修整资讯填入快取区Data_Cache,在2KB区间502中填入起始逻辑地址GHP 1以及修整长度511,注明修整范围为GHP 1~GHP 511,即首位中等长度修整(304)要求修整的逻辑区块地址LBA 8~LBA 4095。如图所示,2KB区间502其他未使用到的地方是填入虚置数据。
大量修整(306)则用到修整位元总表(trim bit map,TBM),其中每1位元对应逻辑空间上2MB长度;"1"代表修整。4TB容量的装置需建构256KB(=4TB/2MB)的修整位元总表TBM。如此庞大的修整位元总表TBM还可以2KB为单位分组,分为128个修整位元子表TBM_G#(#为子表编号)。完整256KB修整位元总表TBM可载于动态随机存取存储器206上动态管理。但写入快取区Data_Cache作为修整资讯冲至主动区块A_Blk的可以只是修整位元子表TBM_G#。
图6A以及图6B图解大量修整(306),其中修整逻辑区块地址LBA 4096~LBA100663295,包括:步骤1,更新修整位元总表TBM;步骤2,编写修整资讯旗标表TIFM、以及修整代号Trim_Code;以及,步骤3,将修整资讯填入快取区Data_Cache。
步骤1,控制器204对动态随机存储器206上暂存的256KB修整位元总表TBM进行更新。逻辑区块地址LBA 4096~LBA 100663295即LBA 2MB~49152MB,对应修整位元总表TBM中的位元1~24596,属修整位元总表TBM前3KB的内容。如图所示,控制器204将修整位元总表TBM中的位元1~24596翻成"1",其中涉及两个修整位元子表:TBM_G0(第一段2KB内容);以及TBM_G1(第二段2KB内容)。
步骤2,控制器204编写修整资讯旗标表TIFM、以及修整代号Trim_Code。控制器204是规划修整位元子表TBM_G0(第一段2KB内容)、以及TBM_G1(第二段2KB内容)分别由快取区Data_Cache的2KB区间602、以及2KB区间604快取。区间602所属该4KB空间(包括区间502以及602)早已由修整资讯旗标表TIFM中对应位元标示("1")。控制器204在此步骤是对接续4KB快取空间(包括区间604)进行标示,使修整资讯旗标表TIFM中对应位元也为"1"。控制器204编写修整代号Trim_Code。对应区间502的0xAAAA之后是对应区间602填写一子表编号0x0000(为修整位元子表TBM_G0的编号),再对应区间604填写一子表编号0x0001(为修整位元子表TBM_G1的编号)。
步骤3,控制器204将修整资讯填入快取区Data_Cache,在2KB区间602填入修整位元子表TBM_G0,并在2KB区间604填入修整位元子表TBM_G1。
图6B图解填入快取区Data_Cache区间602、604的修整位元子表TBM_G0、TBM_G1。2KB的修整位元子表TBM_G0中,只有第一个位元(对应首位少量、以及中等长度修整已经处理的GHP 0~GHP 511)为零,其余位元都是1。2KB的修整位元子表TBM_G1中,头1KB位元为1,其余位元都是0。逻辑区块地址范围LBA 2MB~49152MB即(LBA 4096~LBA 100663295)被修整。
大量修整(306)后,控制器204进行末位中等长度修整(308)。随后,控制器204进行末位少量修整(310)。
图7图解末位中等长度修整(308)。修整逻辑区块地址LBA 100663296~LBA100664319,对应全域主机页编号GHP 0xC00000~GHP 0xC0007F,技术同首位中等长度修整(304)。
步骤1,控制器204在动态随机存储器206上更新逻辑区块地址LBA 100663296~LBA 100664319(即GHP 0xC00000~GHP 0xC0007F)对应的映射子表H2F_G48,以更新该主机-快闪存储器映射表H2F。控制器204填入虚置映射数据作为全域主机页编号GHP0xC00000~GHP 0xC0007F的映射数据。
步骤2,控制器204编写修整资讯旗标表TIFM、以及修整代号Trim_Code。快取区Data_Cache上,2KB的区间702对应末位中等长度修整(308)。区间702所属该4KB空间(包括区间604以及702)早已由修整资讯旗标表TIFM中对应位元标示("1"),故此步骤没有变动之。至于修整代号Trim_Code,在相应区间604的修整位元子表TBM_G1编号0x0001之后,控制器204相应区间702填上"0xAAAA",代表2KB区间702所快取的是中等长度修整的修整资讯。
步骤3,控制器204将修整资讯填入快取区Data_Cache,在2KB区间702中填入起始逻辑地址GHP0xC0000以及修整长度0x80,注明修整范围为GHP C0000~GHP 0xC0007F,即末位中等长度修整(308)要求修整的逻辑区块地址LBA 100663296~LBA 100664319。
图8图解末位少量修整(310),其中修整逻辑区块地址LBA 100664320~LBA100664323,对应全域主机页编号GHP 0xC00080。技术同首位少量修整(302)。
步骤1,控制器204对应修整逻辑区块地址范围LBA 100664320~LBA 100664323填写虚置数据至快取区Data_Cache的区间802,并将逻辑地址LBA 100664324~LBA100664327(不修整区间)的原本数据填入快取区Data_Cache的区间804。区间802的2KB虚置数据、以及区间804中关于逻辑地址LBA 100664324~LBA 100664327的2KB数据组合成4KB数据,符合4KB数据管理单元,由快取区Data_Cache一个储存格快取。
步骤2,控制器204在动态随机存储器206上更新逻辑区块地址LBA 100664320~LBA 100664327(即GHP 0xC00080)对应的映射子表H2F_G48,以更新该主机-快闪存储器映射表H2F。如此一来,全域主机页编号GHP 0xC00080的映射绑定此4KB内容。虚置数据代表逻辑区块地址LBA 100664320~LBA 100664323的修整状态。
图9整理LBA 5~LBA 100664323修整指令执行后,动态随机存取存储器206上存在内容。
快取区Data_Cache上,修整标签Trim_Tag占4个储存格。区间402以及404相应首位少量修整(302),为原始数据(LBA 0~LBA4)以及虚置数据结合的4KB内容。区间502占2KB,相应首位中等长度修整(304),所载为起始逻辑地址GHP 1以及长度511。区间602以及604各占2KB,相应大量修等(306),所载为修整位元子表TBM_G0以及TBM_G1。区间702占2KB,相应末位中等长度修整(308),所载为起始逻辑地址GHP 0xC00000以及修整长度0x80。区间802以及804相应末位少量修整(310),为虚置数据以及LBA 100664324~LBA 100664327原始数据结合的4KB内容。
相应该修整标签Trim_Tag,修整资讯旗标表TIFM载有四个位元"0"、"1"、"1"、"0"。中间的两个"1"使得储存资讯表上对应的8B全域主机页编号GHP#储存区域转而储存修整代号Trim_Code,为[0xAAAA;0x0000;0x0001;0xAAAA]。
至于主机-快闪存储器映射表H2F,动态随机存取存储器206上只载有最末少量修整(310)时处理到的映射子表H2F_G48。但结合已封存到系统资讯区块Info_Blk的主机-快闪存储器映射表H2F,可知前述修整过程中,映射资讯仅有部分更新,包括:GHP0指向区间402以及404所在4KB空间;GHP1~GHP511、GHP0xC0000~0xC0007F填虚置映射数据;且GHP0xC00080指向区间802以及804所在4KB空间。未来得及更新的映射资讯载明在修整位元总表TBM。
如图所示,修整位元总表TBM则在前3KB处,标示出LBA 2M~49152MB的已修整状况,弥补主机-快闪存储器映射表H2F未同步更新的部分。
一种实施方式中,主机208发出读取要求时,控制器204可根据主机208要求读取的逻辑区块地址区间查询该修整位元总表TBM。"1"代表对应的2MB已修整。若为"0",控制器204需再查询该主机-快闪存储器映射表H2F。虚置映射数据代表该段空间已修整。若指向虚置数据(如404、802),其解读同修整空间。
图示占据4个4KB快取储存格的修整标签Trim_Tag,需与其相应的修整资讯旗标[0,1,1,0]、以及8B的修整代号Trim_Code([0xAAAA,0x0000,0x0001,0xAAAA])冲(flush)至快闪存储器202主动区块A_Blk做非挥发式储存,以应付非预期断电后,于复电程序重建修整状况的需求。修整标签Trim_Tag可写入一页的数据区。修整代号Trim_Code([0xAAAA,0x0000,0x0001,0xAAAA])可以该页的闲置区域210中,原本规划来储存映射的全域主机页编号GHP#的地方。修整资讯旗标[0,1,1,0]可在闲置区域210中另外储存,也可另外编码结合在修整代号Trim_Code中。
以下讨论控制器204冗闲时,如何完成主机-快闪存储器映射表H2F的更新。主机-快闪存储器映射表H2F更新会一并维护快闪存储器202各区块的一有效页数(valid pagecount)表。即使以修整位元总表TBM暂时应付修整指令,修整对有效页数表的影响也能在控制器204冗闲时反应在有效页数表上。
一种实施方式中,控制器204将该修整位元总表TBM的"1"值逐位元翻成"0"。每位元翻转对应2MB,是以前述中等长度修整技术(图5或7),将此2MB的修整反应在对应的映射子表H2F_G#、以及快取区Data_Cache上,并以前述大量修整区间的修整技术(图6A、6B),将有逐位元翻转的修整位元子表TBM_G#一一快取于快取区Data_Cache。
图10A、10B以及10C图解该修整位元总表TBM一位元的"1"至"0"翻转。
图10A显示翻转的目标位元,即目标修整位元子表TBM_G0头一个"1"位元,将之翻成"0",即目标修整GHP 512~GHP 1023。
图10B采用前述中等长度修整技术(图5或7),将目标位元相应的2MB目标修整(GHP512~GHP 1023)更新至该主机-快闪存储器映射表H2F,并包括快取区Data_Cache、修整资讯旗标表TIFM、以及修整代号Trim_Code的编写。
步骤1,控制器204在动态随机存储器206上更新该2MB目标修整(GHP 512~GHP1023)对应的映射子表H2F_G1,以更新该主机-快闪存储器映射表H2F。控制器204填入虚置映射数据(如,零)作为全域主机页编号GHP 512~GHP 1023的映射数据。
步骤2,控制器204编写修整资讯旗标表TIFM、以及修整代号Trim_Code。修整资讯旗标表TIFM的一位元设定"1",标示此次目标位元翻转会使用到的快闪区Data_Cache储存格。控制器204是规划快取区Data_Cache的2KB区间1002(半个储存格)储存此目标修整(GHP512~GHP 1023)的起始逻辑地址GHP 512以及长度512。对应的4B修整代号Trim_Code即以"0xAAAA"指示区间1002内容的解读方式。剩余2B修整代号Trim_Code则暂填虚置数据。
步骤3,对应"0xAAAA"修整代号,控制器204将目标修整(GHP 512~GHP 1023)起始逻辑地址GHP 512以及长度512填入快取区Data_Cache的2KB半个储存格1002。
图10C采用前述大量区间修整技术(图6A、6B),将目标位元已翻转的目标修整位元子表TBM_G0载入快取区Data_Cache。
步骤1,控制器204对动态随机存储器206上暂存的256KB的修整位元总表TBM进行更新。即第二位元翻"0"。
步骤2,控制器204编写修整资讯旗标表TIFM、以及修整代号Trim_Code。控制器204是规划区间1004快取该目标修整位元子表TBM_G0。区间1004所属该4KB空间(包括区间1002以及1004)早已由修整资讯旗标表TIFM中对应位元标示("1"),此处不再调整。但该修整代号Trim_Code中,控制器204在对应区间1002的0xAAAA之后的2B填写该目标修整位元子表TBM_G0的目标子表编号0x0000。
步骤3,控制器204在2KB区间1004中填入最新版本的该目标修整位元子表TBM_G0。
整理之,控制器204是在填写一指令完成伫列(completion queue)回报主机208一第一指令完成后,但尚未自一指令伫列(command queue)获得主机208发出的一第二指令时,利用此闲冗区间,逐位元将修整位元总表TBM状况更新到主机-快闪存储器映射表H2F。每位元翻转指涉及一个映射子表H2F_G#更新,不会过度耗时。
以下还讨论主机208的写入指令。倘若要求写入的逻辑地址是由该修整位元总表TBM标示成已修整,控制器204需要以前述修整位元总表TBM翻转技术更新该主机-快闪存储器映射表H2F(图10A~10C),再进行写入动作。
图11图解LBA 10240(5MB)起始的12KB写入如何被回应。
快取区Data_Cache以2KB区间1102以及2KB区间1104反映该修整位元总表TBM相应位元的翻转。此例中,该修整位元总表TBM的第三个位元(对应5MB,属修整位元子表TBM_G0)为翻转的目标位元,对应2MB目标修整GHP 1024~1535,其映射资讯属映射子表H2F_G3。控制器204将映射子表H2F_G3为全域主机页GHP 1024~1535全数填上虚置映射数据,并在快取区Data_Cache半个储存格的2KB空间1102储存目标修整GHP 1024~1535的起始逻辑地址GHP 1024、以及长度512。随后,控制器204翻转该修整位元总表TBM,并将翻转后的该修整位元子表TBM_G0填入储存格1104。同前述技术,虽未绘制在图中,但对应区间1102、1104的填写,控制器204还将修整资讯旗标表TIFM对应位元设立为"1",且修整代号Trim_Code为[0xAAAA,0x0000]。
映射子表H2F_G3反映出GHP 1024~1535修整状况后,控制器204就可以安心进行其上12KB的使用者数据写入。如图所示,控制器204将12KB写入数据快取于区间1106所标示的三个储存格。此时,本全为虚置映射数据的映射子表H2F_G3,其中全域主机页编号GHP1279~1281会改成指向区间1106。全域主机页编号GHP 1024~1278、以及GHP 1282~1535的修整状态仍可由其虚置映射资讯观察而得。
一种实施方式中,非预期断电事件发生时,为了善用装置电力,控制器204可能只会挽救动态随机存取存储器206部分内容,例如,只将快取区Data_Cache内容、快取区Data_Cache各储存格对应资讯(包括标示逻辑地址、或修整代号的各储存格储存资讯、以及修整资讯旗标表TIFM)冲至快闪存储器202。修整位元总表TBM会遗失。主机-快闪存储器映射表H2F部分内容可能也来不及更新。因此,非预期断电的复电(sudden power-off recovery,SPOR)需要一个重建机制,重建修整位元总表TBM、以及主机-快闪存储器映射表H2F。
图12A、12B、12C根据本发明一种实施方式图解表格重建机制。
参阅图12A,复电时,控制器204扫描快闪存储器202(例如,根据系统资讯区块Info_Blk所载的区块使用顺序),于各区块的区块结尾资讯EoB中收集到一串修整资讯旗标1202。各位元对应所属区块相对位置的4KB数据、以及该4KB数据的4B储存资讯(为全域主机页编号GHP#、或是修整代号Trim_Code)。位元值"0",则对应的该4KB数据被解读为使用者数据,对应的4B储存资讯乃映射的全域主机页编号GHP#。位元值"1",则对应的该4KB数据被解读为修整资讯,对应的4B储存资讯乃修整代号Trim_Code。该串修整资讯旗标1202对应五段各为4KB的数据,且对应的五段各为4B的储存资讯1204。储存资讯1204也可以是自区块结尾资讯EoB取得。
如图所示,该串修整资讯旗标1202中,第一个"1"值对应储存资讯1204内的4B储存资讯[0xAAAA,0X0003],表示其在区块中对应的4KB数据乃两种类型的修整资讯。"0xAAAA"表示前端2KB数据乃一中等长度修整的起始逻辑地址、以及长度。非"0xAAAA"的"0x0003"则应当解读为一子表编号,表示后端2KB数据乃一大量修整的修整位元子表TBM_G3。该串修整资讯旗标1202另有第二个"1"值,对应储存资讯1204内的4B储存资讯[0xAAAA,虚置数据],表示其在区块中对应的4KB数据只有前端2KB数据有意义。"0xAAAA"表示前端2KB数据乃一中等长度修整的起始逻辑地址、以及长度。以下特别讨论该串修整资讯旗标1202中第一个"1"值所涉及的表格重建。
参阅图12B,根据"0xAAAA",区块中对应的2KB数据乃一中等长度修整的起始逻辑地址GHP0x100、以及长度0x80。控制器204在动态随机存取存储器206上,将相应的映射子表H2F_G0载出,令全域主机页编号GHP0x100~GHP0x17F的映射数据都填虚置映射数据。因此,主机-快闪存储器映射表H2F更新,确实反映出全域主机页编号GHP0x100~GHP0x17F的修整状态。
参阅图12C,根据"0x0003",区块中对应的2KB数据乃一大量修整的修整位元子表TBM_G3。控制器204会将此2KB修整位元子表TBM_G3更新到动态随机存取存储器206上完整维护的修整位元总表TBM中,重建修整位元总表TBM。
图13根据本发明一种实施方式图解修整指令(trim command)处理方法。步骤S1302接收一修整指令。步骤S1304分类该修整范围(图3)。步骤S1306进行首位少量修整(图4),若不存在首位少量修整可跳过此步骤。步骤S1308进行首位中等长度修整(图5),若不存在首位中等长度修整可跳过此步骤。步骤S1310进行大量修整(图6A、6B),若不存在大量修整可跳过此步骤。步骤S1312进行末位中等长度修整(图7),若不存在末位中等长度修整可跳过此步骤。步骤S1314进行末位少量修整(图8),若不存在末位少量修整可跳过此步骤。各分类修整完毕后,该修整指令即完成。如,控制器204可回填指令完成伫列(completionqueue)告知主机208修整完成,控制器204可再接收主机208其他指令。如前述,流程中大量修整(S1310)并不会耗费资源在主机-快闪存储器映射表H2F更新上。控制器204以图13修整程序快速回应修整指令,进而执行主机208接续其他要求。
图13修整程序后,动态随机存取存储器206所维护的内容可如图9所示。关于主机208再发出的读取指令,控制器204会参考该修整位元总表TBM进行,避免漏掉尚未更新到主机-快闪存储器映射表H2F的修整状况。非预期断电时,控制器204会将修整标签Trim_Tag、TIFM中相应的修整资讯旗标、以及修整代号Trim_Code冲(flush)至快闪存储器202,以应付复电需求。
图14为流程图,根据本发明一种实施方式图解如何根据该修整位元总表TBM背景更新该主机-快闪存储器映射表H2F。
步骤S1402,对应一修整位元子表TBM_G#中一位元的"1"'"0"翻转,控制器204以中等长度修整更新该主机-快闪存储器映射表H2F(包括相应映射子表H2F_G#填写虚置映射数据、且将其起始逻辑地址以及长度快取于快取区Data_Cache)。步骤S1404,控制器204以大量修整将新版的该修整位元子表TBM_G#快取于该快取区Data_Cache。步骤S1406判断控制器204是否闲冗;例如,主机208塞入指令伫列(command queue)中的指令是否都执行完毕。空闲的控制器204可还在步骤S1408确定该修整位元总表TBM尚未完全被"1"'"0"翻转时,再次进行步骤S1402以及S1404。若控制器204有待应付的主机208指令,则进行步骤S1410回应主机208新发出的指令。
图15为流程图,根据本发明一种实施方式图解如何回应主机208发出的写入指令。
步骤S1502,控制器204接收一写入指令。步骤S1504,控制器204查询该修整位元总表TBM,确定该写入指令要求写入数据的逻辑地址是否被该修整位元总表TBM标注。若是标注在一修整位元子表TBM_G#的一位元Bit#,控制器204进行步骤S1506,对该修整位元子表TBM_G#的该位元Bit#作"1"'"0"翻转,其中以中等长度修整更新该主机-快闪存储器映射表H2F(包括相应映射子表H2F_G#填写虚置映射数据、且将其起始逻辑地址以及长度快取于快取区Data_Cache),再以大量修整将新版的该修整位元子表TBM_G#快取于该快取区Data_Cache。步骤S1508,控制器204将写入数据快取于该快取区Data_Cache。步骤S1510,控制器204更新主机-快闪存储器映射表H2F,将写入数据的映射资讯填为该快取区Data_Cache。以上步骤妥善应付大量修整后发生的少量写入。
图16为流程图,根据本发明一种实施方式图解如何一复电程序。
步骤S1602复电。步骤S1604,控制器204扫描快闪存储器202(例如,根据程式化顺序),获得一串修整资讯旗标。步骤S1606,控制器204判读该串修整资讯旗标其中一位元。若为"1",控制器204以步骤S1608更判读修整代号。若为"0xAAAA",控制器204以步骤S1610解读出一中等长度修整的起始逻辑地址以及修整长度,据以重建该主机-快闪存储器映射表H2F中对应部分(填虚置映射数据)。步骤S1608若判断出修整代号为一修整位元子表TBM_G#的子表编号,控制器204以步骤S1612解读出修整位元子表TBM_G#,据以重建该修整位元总表TBM。步骤S1614判别是否该修整资讯旗标对应的两个修整代号都完成判读。若否,控制器204再次进行步骤S1608。若是,控制器204以步骤S1616判断是否该串修整资讯旗标处理完毕。若否,控制器重回步骤S1606。若是,流程结束。
步骤S1606若判读一修整资讯旗标为"0",则进行步骤S1618,控制器204解读出4KB使用者数据对应的全域主机页编号GHP#,据以更新该主机-快闪存储器映射表H2F。
以上控制器204对快闪存储器202的操作设计也可以由其他结构实现。凡是根据前述概念执行修整者,都属于本发明欲保护范围。本发明还可以前述概念实现非挥发式存储器的控制方法。
虽然本发明已以较佳实施例揭示如上,然其并非用以限定本发明,任何熟悉本技术领域者,在不脱离本发明的精神和范围内,当可做些许更动与润饰,因此本发明的保护范围当由权利要求书界定为准。

Claims (18)

1.一种数据储存装置,包括:
一非挥发式存储器;以及
耦接该非挥发式存储器的一控制器以及一暂存存储器,其中,该控制器是建构来翻转一修整位元总表内的一目标位元,且将该目标位元所标示,一特定长度的一目标修整更新至一主机-装置映射表,
其中:
该控制器将该目标修整的起始逻辑地址以及长度快取于该暂存存储器的一快取区,以自该快取区冲至该非挥发式存储器;
该目标位元属于该修整位元总表中的一目标修整位元子表;
该控制器更将该目标位元翻转后的该目标修整位元子表快取于该快取区,以自该快取区冲至该非挥发式存储器;
该控制器还在该暂存存储器上管理一修整资讯旗标表,对应该快取区的多个储存格,标示该快取区所载的该目标修整的起始逻辑地址以及长度、且标示该快取区所载的该目标修整位元子表;且
该控制器还令该修整资讯旗标表,随着该快取区冲至该非挥发式存储器。
2.如权利要求1的数据储存装置,其特征在于:
该控制器是对应该目标修整,将虚置映射数据填入该主机-装置映射表。
3.如权利要求2的数据储存装置,其特征在于:该控制器还在该暂存存储器上管理一储存资讯表,对应该快取区的上述多个储存格,在对应的储存格储存使用者数据时记录一逻辑地址,在对应的储存格载有该目标修整位元子表时记录一目标子表编号,且在对应的储存格载有该目标修整的起始逻辑地址以及长度时,记录一部分修整代号;且
该控制器还令该储存资讯表,随着该快取区冲至该非挥发式存储器。
4.如权利要求3的数据储存装置,其特征在于:
该目标修整的起始逻辑地址以及长度结合虚置数据占据该快取区一个储存格的一半容量;
该目标修整位元子表的尺寸为一个储存格的一半容量;
该目标修整的起始逻辑地址以及长度结合虚置数据快取于一目标储存格前半段时,该储存资讯表中对应该目标储存格的资讯是以前半段记录该部分修整代号;且
该目标修整位元子表快取于该目标储存格后半段时,该储存资讯表中对应该目标储存格的资讯是以后半段记录该目标子表编号。
5.如权利要求3的数据储存装置,其特征在于:
该控制器令该目标位元遍历该修整位元总表,完整翻转该修整位元总表,将该修整位元总表标示的所有修整都更新至该主机-装置映射表。
6.如权利要求5的数据储存装置,其特征在于:
该控制器是在回应一主机发出的多个指令之间的闲置时间,令该目标位元遍历该修整位元总表,完整翻转该修整位元总表,将该修整位元总表标示的所有修整都更新至该主机-装置映射表。
7.如权利要求3的数据储存装置,其特征在于:
相应该主机发下的一写入指令,该控制器查询该修整位元总表;且
该写入指令要求写入的逻辑地址区间在该修整位元总表内标示为已修整时,该控制器根据该逻辑地址区间设定该目标位元,翻转该目标位元,将该目标修整更新至该主机-装置映射表,才于该快取区快取该写入指令要求的一写入数据,且修正该主机-装置映射表,令该逻辑地址区间指向该快取区快取的该写入数据。
8.如权利要求1的数据储存装置,其特征在于:
该主机-装置映射表包括多个映射子表;
各映射子表管理该特定长度的逻辑地址区间的映射数据;
该控制器是将该目标修整对应的一目标映射子表自该非挥发式存储器载入该暂存存储器,全面填上虚置映射数据,显示该目标修整。
9.如权利要求1的数据储存装置,其特征在于:
随着翻转该目标位元、且将该目标修整更新至该主机-装置映射表,该控制器更新一有效页数表,该有效页数表条列该非挥发式存储器各区块的有效页数。
10.一种非挥发式存储器控制方法,包括:
翻转一修整位元总表内的一目标位元,且将该目标位元所标示,一特定长度的一目标修整更新至一主机-装置映射表;
将该目标修整的起始逻辑地址以及长度快取于一暂存存储器的一快取区,以自该快取区冲至一非挥发式存储器;
关于该目标位元在该修整位元总表中所属的一目标修整位元子表,更将该目标位元翻转后的该目标修整位元子表快取于该快取区,以自该快取区冲至该非挥发式存储器;
在该暂存存储器上管理一修整资讯旗标表,对应该快取区的多个储存格,标示该快取区所载的该目标修整的起始逻辑地址以及长度、且标示该快取区所载的该目标修整位元子表;且
令该修整资讯旗标表,随着该快取区冲至该非挥发式存储器。
11.如权利要求10的非挥发式存储器控制方法,其特征在于,还包括:
对应该目标修整,将虚置映射数据填入该主机-装置映射表。
12.如权利要求11的非挥发式存储器控制方法,其特征在于,还包括:
在该暂存存储器上管理一储存资讯表,对应该快取区的上述多个储存格,在对应的储存格储存使用者数据时记录一逻辑地址,在对应的储存格载有该目标修整位元子表时记录一目标子表编号,且在对应的储存格载有该目标修整的起始逻辑地址以及长度时,记录一部分修整代号;且
令该储存资讯表,随着该快取区冲至该非挥发式存储器。
13.如权利要求12的非挥发式存储器控制方法,其特征在于:
该目标修整的起始逻辑地址以及长度结合虚置数据占据该快取区一个储存格的一半容量;
该目标修整位元子表的尺寸为一个储存格的一半容量;
该目标修整的起始逻辑地址以及长度结合虚置数据快取于一目标储存格前半段时,该储存资讯表中对应该目标储存格的资讯是以前半段记录该部分修整代号;且
该目标修整位元子表快取于该目标储存格后半段时,该储存资讯表中对应该目标储存格的资讯是以后半段记录该目标子表编号。
14.如权利要求12的非挥发式存储器控制方法,其特征在于,还包括:
令该目标位元遍历该修整位元总表,完整翻转该修整位元总表,将该修整位元总表标示的所有修整都更新至该主机-装置映射表。
15.如权利要求14的非挥发式存储器控制方法,其特征在于,是在回应一主机发出的多个指令之间的闲置时间,令该目标位元遍历该修整位元总表,完整翻转该修整位元总表,将该修整位元总表标示的所有修整都更新至该主机-装置映射表。
16.如权利要求12的非挥发式存储器控制方法,其特征在于,还包括:
相应该主机发下的一写入指令,查询该修整位元总表;且
该写入指令要求写入的逻辑地址区间在该修整位元总表内标示为已修整时,根据该逻辑地址区间设定该目标位元,翻转该目标位元,将该目标修整更新至该主机-装置映射表,才于该快取区快取该写入指令要求的一写入数据,且修正该主机-装置映射表,令该逻辑地址区间指向该快取区快取的该写入数据。
17.如权利要求10的非挥发式存储器控制方法,其特征在于,该主机-装置映射表包括多个映射子表,各映射子表管理该特定长度的逻辑地址区间的映射数据,且所述方法包括:
将该目标修整对应的一目标映射子表自该非挥发式存储器载入该暂存存储器,全面填上虚置映射数据,显示该目标修整。
18.如权利要求10的非挥发式存储器控制方法,其特征在于,还包括:
随着翻转该目标位元、且将该目标修整更新至该主机-装置映射表,更新一有效页数表,该有效页数表条列该非挥发式存储器各区块的有效页数。
CN202010709527.7A 2019-11-29 2020-07-22 数据储存装置以及非挥发式存储器控制方法 Active CN112882650B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201962941936P 2019-11-29 2019-11-29
US62/941,936 2019-11-29
TW109117978A TWI745986B (zh) 2019-11-29 2020-05-29 資料儲存裝置以及非揮發式記憶體控制方法
TW109117978 2020-05-29

Publications (2)

Publication Number Publication Date
CN112882650A CN112882650A (zh) 2021-06-01
CN112882650B true CN112882650B (zh) 2024-04-30

Family

ID=76042883

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010709527.7A Active CN112882650B (zh) 2019-11-29 2020-07-22 数据储存装置以及非挥发式存储器控制方法

Country Status (2)

Country Link
US (1) US11397669B2 (zh)
CN (1) CN112882650B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220025401A (ko) * 2020-08-24 2022-03-03 에스케이하이닉스 주식회사 메모리 시스템, 메모리 컨트롤러 및 메모리 시스템의 동작 방법
KR20220046311A (ko) * 2020-10-07 2022-04-14 에스케이하이닉스 주식회사 스토리지 장치 및 그 동작 방법
JP2023001494A (ja) * 2021-06-21 2023-01-06 キオクシア株式会社 メモリシステムおよび制御方法
US11756597B2 (en) * 2021-08-03 2023-09-12 Micron Technology, Inc. Power-on read demarcation voltage optimization
CN115809208B (zh) * 2023-01-19 2023-07-21 北京象帝先计算技术有限公司 缓存数据刷新方法、装置、图形处理系统及电子设备
CN117539692B (zh) * 2024-01-09 2024-03-15 武汉麓谷科技有限公司 一种zns固态硬盘数据集管理命令实现方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104346287A (zh) * 2013-08-09 2015-02-11 Lsi公司 在固态介质中使用多级别映射的修整机制
CN108874301A (zh) * 2017-05-08 2018-11-23 慧荣科技股份有限公司 数据储存装置以及其操作方法

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011090496A (ja) * 2009-10-22 2011-05-06 Hitachi Ltd 半導体記憶装置および制御方法
TWI423026B (zh) 2010-10-29 2014-01-11 Phison Electronics Corp 資料寫入方法、記憶體控制器與記憶體儲存裝置
KR101824949B1 (ko) * 2011-11-23 2018-02-05 삼성전자주식회사 플래시 메모리를 기반으로 하는 저장 장치 및 그것을 포함한 사용자 장치
US9274937B2 (en) * 2011-12-22 2016-03-01 Longitude Enterprise Flash S.A.R.L. Systems, methods, and interfaces for vector input/output operations
US8949512B2 (en) 2012-02-17 2015-02-03 Apple Inc. Trim token journaling
US10268385B2 (en) * 2016-05-03 2019-04-23 SK Hynix Inc. Grouped trim bitmap
US10061708B2 (en) * 2016-05-12 2018-08-28 SK Hynix Inc. Mapped region table
US10489289B1 (en) 2016-09-30 2019-11-26 Amazon Technologies, Inc. Physical media aware spacially coupled journaling and trim
KR101847859B1 (ko) * 2016-10-12 2018-04-11 성균관대학교산학협력단 파일 트림을 이용한 플래시 메모리 기반 저장장치 및 그 파일 트림 방법
US10740251B2 (en) * 2017-01-20 2020-08-11 Seagate Technology Llc Hybrid drive translation layer
KR20180091296A (ko) * 2017-02-06 2018-08-16 삼성전자주식회사 손상된 메타 데이터를 처리하는 스토리지 장치 및 상기 스토리지 장치의 동작 방법
CN108733577B (zh) 2017-04-21 2021-10-22 群联电子股份有限公司 存储器管理方法、存储器控制电路单元及存储器存储装置
TWI639918B (zh) 2017-05-11 2018-11-01 慧榮科技股份有限公司 資料儲存裝置以及其操作方法
TWI672590B (zh) * 2017-06-27 2019-09-21 慧榮科技股份有限公司 資料儲存裝置
US10649656B2 (en) * 2017-12-28 2020-05-12 Micron Technology, Inc. Techniques to update a trim parameter in non-volatile memory
TWI660271B (zh) * 2018-04-24 2019-05-21 群聯電子股份有限公司 整理指令記錄方法、記憶體控制電路單元與記憶體儲存裝置
US20190369892A1 (en) 2018-05-31 2019-12-05 Cnex Labs, Inc. Method and Apparatus for Facilitating a Trim Process Using Auxiliary Tables
US10909030B2 (en) 2018-09-11 2021-02-02 Toshiba Memory Corporation Enhanced trim command support for solid state drives
KR20210027563A (ko) * 2019-08-28 2021-03-11 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104346287A (zh) * 2013-08-09 2015-02-11 Lsi公司 在固态介质中使用多级别映射的修整机制
CN108874301A (zh) * 2017-05-08 2018-11-23 慧荣科技股份有限公司 数据储存装置以及其操作方法

Also Published As

Publication number Publication date
US11397669B2 (en) 2022-07-26
CN112882650A (zh) 2021-06-01
US20210165734A1 (en) 2021-06-03

Similar Documents

Publication Publication Date Title
CN112882650B (zh) 数据储存装置以及非挥发式存储器控制方法
US8386698B2 (en) Data accessing method for flash memory and storage system and controller using the same
US10915475B2 (en) Methods and apparatus for variable size logical page management based on hot and cold data
CN100487672C (zh) 用于分割一逻辑块的方法及设备
US9792067B2 (en) Trim command processing in a solid state drive
CN112882649B (zh) 数据储存装置以及非挥发式存储器控制方法
US11232041B2 (en) Memory addressing
US8291155B2 (en) Data access method, memory controller and memory storage system
JP6076506B2 (ja) ストレージ装置
CN111475427A (zh) 使用低延迟非易失性存储器进行逻辑至物理映射管理
CN101493794B (zh) 一种闪存数据处理方法及装置
US10545876B2 (en) Control unit for data storage system and method for updating logical-to-physical mapping table
CN104794070A (zh) 基于动态非覆盖raid技术的固态闪存写缓存系统及方法
KR19990045218A (ko) 불휘발성 기억 장치, 불휘발성 기억 장치의 제어 방법 및 불휘발성 기억 장치를 제어하는 프로그램을 기록한 정보 기록 매체
KR20070024504A (ko) 기억 장치, 메모리 관리 방법 및 프로그램
US20140328127A1 (en) Method of Managing Non-Volatile Memory and Non-Volatile Storage Device Using the Same
CN107943710B (zh) 存储器管理方法及使用所述方法的存储控制器
US6347355B1 (en) Non-volatile storage, the controlling method, and information memory medium
CN112100087B (zh) 数据储存装置以及非挥发式存储器控制方法
TWI745987B (zh) 資料儲存裝置以及非揮發式記憶體控制方法
CN111610931B (zh) 数据储存装置以及非挥发式存储器控制方法
CN112885397B (zh) 数据储存装置以及非挥发式存储器控制方法
US11609844B2 (en) Memory system with hierarchical tables
CN111610929B (zh) 数据储存装置以及非挥发式存储器控制方法
US11269534B2 (en) Data storage device and non-volatile memory control method

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant