CN109582599B - 数据储存装置以及非挥发式存储器操作方法 - Google Patents
数据储存装置以及非挥发式存储器操作方法 Download PDFInfo
- Publication number
- CN109582599B CN109582599B CN201710907869.8A CN201710907869A CN109582599B CN 109582599 B CN109582599 B CN 109582599B CN 201710907869 A CN201710907869 A CN 201710907869A CN 109582599 B CN109582599 B CN 109582599B
- Authority
- CN
- China
- Prior art keywords
- host
- data
- write
- writing
- read
- 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
Links
- 238000013500 data storage Methods 0.000 title claims description 24
- 238000000034 method Methods 0.000 title claims description 23
- 238000013507 mapping Methods 0.000 claims abstract description 58
- 230000004044 response Effects 0.000 claims 1
- 238000012546 transfer Methods 0.000 description 5
- 239000007787 solid Substances 0.000 description 3
- 238000012005 ligant binding assay Methods 0.000 description 2
- 230000007774 longterm Effects 0.000 description 2
- 230000005055 memory storage Effects 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 238000012935 Averaging Methods 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000013524 data verification Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000004064 recycling Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- 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
- G06F12/0866—Addressing 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
-
- 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
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- 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/0253—Garbage collection, i.e. reclamation of unreferenced 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- 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/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- 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
- G06F3/0607—Improving 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
-
- 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/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- 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]
-
- 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/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1004—Compatibility, e.g. with legacy hardware
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/20—Employing a main memory using a specific memory technology
- G06F2212/206—Memory mapped I/O
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/22—Employing cache memory using specific memory technology
- G06F2212/222—Non-volatile memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7202—Allocation control and policies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7205—Cleaning, compaction, garbage collection, erase control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7208—Multiple device management, e.g. distributing data over multiple flash devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7211—Wear leveling
Abstract
采用装置端配置空间、且主机端映射查表的非挥发式存储器操作技术。装置端一控制器根据一主机下达的一写入指令指示的一写入逻辑地址,配置一非挥发式存储器提供一写入物理地址的空间供写入数据写入,并将该写入物理地址回传该主机,用于该主机上一映射表的建立。该映射表记录该写入逻辑地址以及该写入物理地址的对应关系。
Description
技术领域
本发明系有关于数据储存装置以及非挥发式存储器操作方法,涉及电子装置以及数据中心…等应用。
背景技术
非挥发式存储器有多种形式─例如,闪存(flash memory)、磁阻式随机存取存储器(Magnetoresistive RAM)、铁电随机存取存储器(Ferroelectric RAM)、电阻式随机存取存储器(Resistive RAM)、自旋转移力矩随机存取存储器(Spin Transfer Torque-RAM,STT-RAM)…等,用于长时间数据保存。
非挥发式存储器一般是链接一主机,由该主机操作。非挥发式存储器的物理空间系动态配置对应主机端识别用的逻辑地址。逻辑地址以及物理空间之间的对应关系需以映射表记录。如何使用运算资源,有效率的建立以及管理所述映射表,为本技术领域重要课题。
发明内容
根据本案一种实施方式所实现的一数据储存装置包括一非挥发式存储器以及一控制器。该控制器根据一主机下达的一写入指令指示的一写入逻辑地址,配置该非挥发式存储器提供一写入物理地址的空间供写入数据写入,并将该写入物理地址回传该主机,用于该主机上一映射表的建立。该映射表记录该写入逻辑地址以及该写入物理地址的对应关系。
一种实施方式中,该控制器是根据该主机传来的一读取指令中指示的一读取物理地址自该非挥发式存储器取得读取数据、并回传该主机。该读取物理地址系该主机查表该映射表而得,对应该主机要求的一读取逻辑地址。如此架构实现装置端(device-based)配置空间、且主机端(host-based)映射查表。
根据本案一种实施方式实现的一种非挥发式存储器操作方法,包括:根据一主机下达的一写入指令指示的一写入逻辑地址,配置一非挥发式存储器提供一写入物理地址的空间供写入数据写入;且将该写入物理地址回传该主机,用于该主机上一映射表的建立。该映射表记录该写入逻辑地址以及该写入物理地址的对应关系。
一种实施方式中,上述非挥发式存储器操作方法,更包括:根据该主机传来的一读取指令中指示的一读取物理地址自该非挥发式存储器取得读取数据、并回传该主机。该读取物理地址系该主机查表该映射表而得,对应该主机要求的一读取逻辑地址。如此非挥发式存储器操作方法同样实现装置端(device-based)配置空间、且主机端(host-based)映射查表。
下文特举实施例,并配合所附图示,详细说明本发明内容。
附图说明
图1图解根据本案一种实施方式所实现的一非挥发式存储器100操作架构;
图2根据本案一种实施方式图解一数据中心200;
图3为流程图,根据本案一种实施方式说明控制器102如何应付一写入指令;
图4为流程图,根据本案一种实施方式说明主机106相关一写入指令的动作;
图5为流程图,根据本案一种实施方式说明主机106相关一读取指令的动作;以及
图6为流程图,根据本案一种实施方式说明控制器102如何应付一读取指令。
符号说明
100、100_1…100_M~非挥发式存储器;
102、102_1…102_M~控制器;
104、104_1…104_M~数据储存装置;
106~主机;
108、108_1…108_N~微处理器;
110、110_1…110_N~指令队列;
112、112_1…112_N~完成队列;
114~系统存储器;
116~映射表;
118~读取/写入数据;
200~数据中心;且
S302…S312、S402…S408、S502…S512、S602…S610~步骤。
具体实施方式
以下叙述列举本发明的多种实施例。以下叙述介绍本发明的基本概念,且并非意图限制本发明内容。实际发明范围应依照申请专利范围界定之。
非挥发式存储器可以是闪存(flash memory)、磁阻式随机存取存储器(Magnetoresistive RAM)、铁电随机存取存储器(Ferroelectric RAM)、电阻式存储器(Resistive RAM,RRAM)、自旋转移力矩随机存取存储器(Spin Transfer Torque-RAM,STT-RAM)…等,提供长时间数据保存的储存媒体,可用于实现数据储存装置、或应用于数据中心。以下特别以闪存(flash memory)为例进行讨论。
现今数据储存装置常以闪存为储存媒体,用来实现记忆卡(memory card)、通用串行总线闪存装置(USB flash device)、固态硬盘(SSD)…等产品。有一种应用是采用多芯片封装、将闪存与其控制器包装在一起─称为嵌入式闪存模块(如eMMC)。以闪存为储存媒体的数据储存装置可应用于多种电子装置中。所述电子装置包括智能型手机、穿戴装置、平板计算机、虚拟现实设备…等。电子装置的运算模块可视为一主机(host),操作所使用的数据储存装置内的闪存。
闪存实现的储存媒体也可用于建构数据中心。例如,服务器可操作固态硬盘(SSD)阵列形成数据中心。服务器即可视为一主机(host),操作所链接的固态硬盘上的闪存。
主机(host)端是以逻辑地址(例如,逻辑区块地址LBA或全局主机页编号GHP…等)区别闪存储存内容。为了优化使用闪存,闪存的储存空间系动态配置对应主机所识别的逻辑地址。闪存一般划分为多个区块(blocks)。各区块包括多个页(pages)。各页可更划分为多个储存单元。如此小单位的动态配置使用方式,可能使得主机端逻辑地址以及闪存物理空间之间的映射关系(可以一映射表进行管理)相当庞杂。如何善用运算资源建立并且使用该映射表为本技术领域一项重要课题。
此段落举例说明该映射表的应用。映射表除了用于读取闪存内容,更有其他作用。特别是,闪存储存空间需以区块为单位进行抹除(erase)后方能再次使用。由于各区块可承受的抹除次数有上限,闪存的操作有抹写平均(wear leveling)议题需要考虑。另外,旧数据更新并非同空间复写。更新数据写入闲置空间后,会将旧空间内容标为无效,故垃圾回收(garbage collection)需求相应产生。一区块中留存的零星有效数据可经垃圾回收技术搬移到闲置空间,使得徒留无效数据的区块得以被抹除再利用。整理之,读取操作、抹写平均以及垃圾回收技术,都需要使用到映射表。甚至,其他促进闪存操作效能的技术,也都有可能使用到映射表。
本案技术是在装置端建立逻辑地址以及物理空间映射关系,并将此映射关系回传主机端形成一映射表。如此一来,闪存的物理空间实际状况可于配置时充分考虑,且耗费资源的映射表应用可由运算能力强大的主机端分担。
图1图解根据本案一种实施方式所实现的一非挥发式存储器100操作架构。该非挥发式存储器100结合一控制器102形成一数据储存装置104。该数据储存装置104链接一主机106。本案对该控制器102有特殊设计、并提供对应的驱动程序由该主机106执行,以实现装置端(device-based)配置空间、且主机端(host-based)映射查表。
主机106具有一微处理器108、一指令队列(command queue)110、一完成队列(completion queue)112以及一系统存储器114。微处理器108发出的指令将队列于该指令队列110中,待装置端的该控制器102执行,以操作该非挥发式存储器100。该控制器102执行完指令后,会藉由填写该完成队列112告知该微处理器108。系统存储器114可包括动态随机存取存储器(DRAM)。关于非挥发式存储器100的读取/写入数据可采用直接内存访问(DMA)技术自该非挥发式存储器100读取至该系统存储器114、或自该系统存储器114取得以写入该非挥发式存储器100。特别是,该系统存储器114内维护有一映射表116,纪录主机106识别的逻辑地址(例如,逻辑区块地址LBA)以及非挥发式存储器100物理空间(例如,以物理区块为指PBA区别)之间的映射关系。映射表116所储存的映射关系并非在主机端设定,而是在装置端确立,再回传主机端填入该映射表116。
一种实施方式中,关于该非挥发式存储器100的一写入指令,该控制器102将其自该指令队列110取出时是获得欲写入数据的一逻辑地址(例如,逻辑区块地址LBA)。控制器102负责将该非挥发式存储器100的一物理空间配置对应该逻辑地址LBA,并将该物理空间的一物理地址(例如,物理区块地址PBA)填入该完成队列112,由微处理器108用于修正该映射表116,记录该逻辑地址LBA以及该物理地址PBA的对应关系。后续关于该逻辑地址LBA的操作(例如,读取),映射表116查询是由微处理器108进行。查询到的物理地址PBA将随着读取指令填入指令队列110,待控制器102取得后据以自非挥发式存储器100的该物理地址PBA取得数据,回传主机106。
一种实施方式中,微处理器108填入该指令队列110的写入指令可包括:
描述符(descriptor),例如,直接内存访问(DMA)描述符,用于指示该控制器102去该系统存储器114何处取得写入数据。
元数据(metadata),注明写入数据的逻辑地址(如LBA)、数据更新版本(versionnumber)、以及/或其他关于写入数据的属性信息(如校验码CRC、时间标签timestamp…等)。
指定写入区(target zone),指定配置该非挥发式存储器100何区域提供部分空间储存写入数据─例如,逻辑单位标号(LUN number)、写入通道(channel)、芯片致能编号(CEnumber)…等。此字段帮助实现闪存的跨区块超级页(super page)写入。
根据指令队列110上述内容,该控制器102配置该非挥发式存储器100该指定写入区(target zone)提供部分空间,并依照该指令符(descriptor)自该系统存储器114取得写入数据,合并上述元数据(metadata)写入该部分空间。该微控制器102执行完写入指令后,回填该完成队列112的信息可包括:
完成状态(completion status),显示该控制器102是否成功执行该写入指令。
物理地址(如物理区块地址PBA),回报该控制器102是配置该非挥发式存储器100何处储存写入数据。
根据完成队列112上述内容,微处理器108更新系统存储器114内的该映射表116,记录该逻辑地址LBA以及该物理地址PBA之间的映射关系。
一种实施方式中,微处理器108填入该指令队列110的读取指令可包括:
描述符(descriptor),例如,直接内存访问(DMA)描述符,用于指示该控制器102将该非挥发式存储器100提供的读取数据回传至该系统存储器114何处。
物理地址(如物理区块地址PBA),系该微处理器108基于该读取指令所欲读取的逻辑地址(如逻辑区块地址LBA)对该映射表116所进行的查表结果。
根据指令队列110上述内容,该控制器102将取自该非挥发式存储器100该物理地址PBA的读取数据写入该系统存储器114。该微控制器102执行完读取指令后,回填该完成队列112的信息可包括:
完成状态(completion status),显示该控制器102是否成功执行该读取指令。
元数据(metadata),即当初写入而藉此次回传的元数据,包括前述逻辑地址(如LBA)、数据更新版本(version number)、以及/或其他属性信息(如校验码CRC、时间标签timestamp…等)。
根据完成队列112上述内容,微处理器108可利用上述元数据(metadata)判断该非挥发式存储器100提供的读取数据(载至该系统存储器114)是否正确。例如,取自该完成队列112的元数据可与主机端所维护的元数据比对,有变动则代表读取数据不可靠。
一种实施方式中,微处理器108发出一元数据收集(metadata read only)指令填入该指令队列110。控制器102将自该非挥发式存储器100取得所有空间或部分区域的元数据填入该完成队列112。此操作不同于读取指令,无关用户数据读取,可应用在映射表116重建。取自该非挥发式存储器100所有空间的元数据将包括所有物理地址(例如,PBA)对应的逻辑地址(例如,LBA)。元数据收集指令可以在开机、或是非预期掉电后的复电中,由该微处理器108填入该指令队列110执行。微处理器108将陆续根据完成队列112于主机端重建映射表116。
一种实施方式中,垃圾回收的一源区块(source block)是在主机端参考该映射表116内容选定。主机106可藉由以上介绍的读取指令将该源区块的有效内容自该非挥发式存储器100读出,再经由以上介绍的写入指令将上述有效数据写入该控制器102于该非挥发式存储器100所新配置的一闲置空间─例如,垃圾回收的一目标区块(destination block)。主机106端会修正映射表116,将该源区块的有效数据改映射至该目标区块。无映射有效数据的该源区块可被抹除再次利用。
一种实施方式中,抹写平均(wear leveling)对冷数据(少变动)以及热数据(频繁更新)的判别是由主机106端进行。此冷/热数据标签可以元数据方式传入装置104端。控制器102可根据该冷/热数据标签配置该非挥发式存储器100提供适当抹除计数的区块来储存写入数据。例如,高抹除计数的区块可配置储存冷数据,低抹除计数的区块可配置储存热数据。抹写平均技术由主机106以及装置104联合提供运算资源进行。
一种实施例中,主机106可为多核心,并对各微处理器(或各执行序thread)提供专属的指令队列与完成队列。本案揭露的技术─装置端(device-based)配置空间、且主机端(host-based)映射查表─将使得主机106多核心运作单纯。主机106端无须考虑非挥发式存储器100的配置使用规则(例如,依照物理地址顺序使用),因而可确保主机106多核心的平行运算效能。例如,多执行序对非挥发式存储器100的多个写入指令可等待于对应的指令队列,待控制器102执行。控制器102将考虑非挥发式存储器100的配置使用规则,为该等写入指令一一配置该非挥发式存储器100提供储存空间完成数据写入。多执行序排程因而可与非挥发式存储器100物理空间使用分开考虑。
图2根据本案一种实施方式图解一数据中心200。主机106可为服务器,即采用多核心架构,具有多个微处理器108_1…108_N(或可以多个执行序标示),以及多对指令队列以及完成队列(110_1与112_1…110_N与112_N)。装置端包括多个数据储存装置104_1、104_2…104_M,各自提供控制器102_1、102_2…102_M控制其上的非挥发式存储器100_1、100_2…100_M。本案装置端(device-based)配置空间且主机端(host-based)映射查表的技术将使得控制器102_1、102_2…102_M各自设计单纯,且多核心运算无须浪费过多资源在非挥发式存储器空间配置上。
图3为流程图,根据本案一种实施方式说明控制器102如何应付一写入指令。步骤S302,控制器102自主机106接收一写入指令。步骤S304,控制器102根据该写入指令指示的描述符自系统存储器114取得写入数据。步骤S306,控制器102自写入指令指示的元数据取得写入数据的逻辑地址(如LBA)、并根据写入指令获知一指定写入区(target zone)。步骤S308,控制器102在非挥发式存储器100的该指定写入区配置空间,并将写入数据编程于其中。步骤S310判断编程是否成功。若不成功,步骤S308再次进行,控制器102在非挥发式存储器100的该指定写入区另外配置空间编程该写入数据。若编程成功,步骤S312回传控制器102于步骤S308所配置空间的物理地址(如PBA)给该主机106,并告知主机106该写入指令完成。
图4为流程图,根据本案一种实施方式说明主机106相关一写入指令的动作。步骤S402,主机106在映射表114开放一写入指令的写入数据的逻辑地址(如LBA)的字段。步骤S404,主机106将该写入指令传递给该控制器102。步骤S406,主机106侦测该控制器102为该写入指令所回传的”成功”完成状态。步骤S408,主机106将控制器102回传的物理地址(PBA)填入该映射表114该逻辑地址LBA对应的字段。
图3以及图4显示控制器102以及主机106如何适当分工对非挥发式存储器100完成一写入指令。
图5为流程图,根据本案一种实施方式说明主机106相关一读取指令的动作。步骤S502,主机106查询映射表114,获知欲读取的逻辑地址(如LBA)映射的物理地址(如PBA)。步骤S504,主机106传递读取指令给该控制器102,其中包括该物理地址(PBA)。步骤S506,主机106侦测该控制器102为该读取指令所回传的”成功”完成状态。步骤S508,主机106将控制器102回传的元数据用于数据校验。步骤S510若判定校验失败,步骤S512中,主机106进行失败报导。若步骤S510判定校验成功,则程序结束。
图6为流程图,根据本案一种实施方式说明控制器102如何应付一读取指令。步骤S602,控制器102自主机106接收一读取指令。步骤S604,控制器102根据该读取指令获知欲读取的物理地址(如PBA)。步骤S606,控制器102根据该物理地址PBA自该非挥发式存储器100获得读取数据。步骤S608,控制器102根据该读取指令将该读取数据写入该系统存储器114。步骤S610,该控制器106回传该读取数据的元数据至该主机106,并告知主机106该读取指令完成。
图5以及图6显示控制器102以及主机106如何适当分工完成对非挥发式存储器100的一写入指令。
其他采用装置端(device-based)配置空间、且主机端(host-based)映射查表的技术都属于本案所欲保护的范围。基于以上技术内容,本案更涉及非挥发式存储器操作方法。
虽然本发明已以较佳实施例揭露如上,然其并非用以限定本发明,本领域技术人员,在不脱离本发明的精神和范围内,当可做些许更动与润饰,因此本发明的保护范围当视权利要求所界定者为准。
Claims (22)
1.一种数据储存装置,包括:
一非挥发式存储器;以及
一控制器,根据一主机下达的一写入指令指示的一写入逻辑地址,配置该非挥发式存储器提供一写入物理地址的空间供写入数据写入,并将该写入物理地址回传该主机,用于该主机上一映射表的建立;
其中,该映射表记录该写入逻辑地址以及该写入物理地址的对应关系;且
该控制器是将该写入物理地址填入该主机的一完成队列,以写入该映射表,其中该控制器执行完该写入指令后,是借由填写该完成队列告知该主机。
2.如权利要求1所述的数据储存装置,其中:
该控制器是根据该主机传来的一读取指令中指示的一读取物理地址自该非挥发式存储器取得读取数据、并回传该主机;且
该读取物理地址系该主机查表该映射表而得,对应该主机要求的一读取逻辑地址。
3.如权利要求2所述的数据储存装置,其特征在于:
该写入逻辑地址呈元数据由该写入指令指示该控制器。
4.如权利要求3所述的数据储存装置,其特征在于:
该控制器将上述元数据结合上述写入数据写入该非挥发式存储器。
5.如权利要求4所述的数据储存装置,其特征在于:
响应该主机下达的一元数据收集指令,该控制器将该非挥发式存储器的多个空间内的多笔元数据回传该主机,以于该主机重建该映射表。
6.如权利要求4所述的数据储存装置,其特征在于:
该控制器更自该非挥发式存储器取得上述读取数据的元数据、并回传该主机,供该主机校验上述读取数据。
7.如权利要求2所述的数据储存装置,其特征在于:
该写入指令更指示一指定写入区;且
该控制器系配置该非挥发式存储器提供的该写入物理地址位于该指定写入区。
8.如权利要求2所述的数据储存装置,其特征在于:
该写入指令包括一写入描述符,描述上述写入数据位于该主机上一系统存储器何处;
该控制器根据该写入描述符采用直接内存访问自该系统存储器取得上述写入数据,以写入该非挥发式存储器;
该读取指令包括一读取描述符,描述上述读取数据目标存入该系统存储器何处;且
该控制器将取自该非挥发式存储器的上述读取数据根据该读取描述符采用直接内存访问存入该系统存储器。
9.如权利要求2所述的数据储存装置,其特征在于:
该非挥发式存储器为闪存;
该控制器为垃圾回收配置该闪存提供一目标区块收集一源区块的有效数据;且
该源区块是由该主机根据该映射表所判定。
10.如权利要求2所述的数据储存装置,其特征在于:
该非挥发式存储器为闪存;
该控制器为抹写平均配置该闪存提供高抹除计数区块储存冷数据,并提供低抹除计数区块储存热数据;且
上述冷数据以及热数据是由该主机判定。
11.如权利要求2所述的数据储存装置,其特征在于:
该控制器是自该主机上多个指令队列取得指令,且该等指令队列对应该主机上执行的多个执行序。
12.一种非挥发式存储器操作方法,包括:
根据一主机下达的一写入指令指示的一写入逻辑地址,配置一非挥发式存储器提供一写入物理地址的空间供写入数据写入;且
将该写入物理地址回传该主机,用于该主机上一映射表的建立,其中,该映射表记录该写入逻辑地址以及该写入物理地址的对应关系,该写入物理地址是填入该主机的一完成队列,以写入该映射表,且该写入指令执行完后,是借由填写该完成队列告知该主机。
13.如权利要求12所述的非挥发式存储器操作方法,其特征在于,更包括:
根据该主机传来的一读取指令中指示的一读取物理地址自该非挥发式存储器取得读取数据、并回传该主机,
其中,该读取物理地址系该主机查表该映射表而得,对应该主机要求的一读取逻辑地址。
14.如权利要求13所述的非挥发式存储器操作方法,其特征在于:
该写入逻辑地址呈元数据由该写入指令指示。
15.如权利要求14所述的非挥发式存储器操作方法,其特征在于,更包括:
将上述元数据结合上述写入数据写入该非挥发式存储器。
16.如权利要求15所述的非挥发式存储器操作方法,其特征在于,更包括:
对应该主机下达的一元数据收集指令,将该非挥发式存储器的多个空间内的多笔元数据回传该主机,以于该主机重建该映射表。
17.如权利要求15所述的非挥发式存储器操作方法,其特征在于,更包括:
自该非挥发式存储器取得上述读取数据的元数据、并回传该主机,供该主机校验上述读取数据。
18.如权利要求13所述的非挥发式存储器操作方法,其特征在于,更包括:
令该写入指令更指示一指定写入区;且
配置该非挥发式存储器提供的该写入物理地址位于该指定写入区。
19.如权利要求13所述的非挥发式存储器操作方法,其特征在于,更包括:
令该写入指令包括一写入描述符,描述上述写入数据位于该主机上一系统存储器何处;
根据该写入描述符采用直接内存访问自该系统存储器取得上述写入数据,以写入该非挥发式存储器;
令该读取指令包括一读取描述符,描述上述读取数据目标存入该系统存储器何处;以及
将取自该非挥发式存储器的上述读取数据根据该读取描述符采用直接内存访问存入该系统存储器。
20.如权利要求13所述的非挥发式存储器操作方法,其特征在于,更包括:
提供闪存作为该非挥发式存储器;以及
为垃圾回收配置该闪存提供一目标区块收集一源区块的有效数据,其中,该源区块是由该主机根据该映射表所判定。
21.如权利要求13所述的非挥发式存储器操作方法,其特征在于,更包括:
提供闪存作为该非挥发式存储器;以及
为抹写平均配置该闪存提供高抹除计数区块储存冷数据,并提供低抹除计数区块储存热数据,其中,上述冷数据以及热数据是由该主机判定。
22.如权利要求13所述的非挥发式存储器操作方法,其特征在于,更包括:
自该主机上多个指令队列取得指令,其中该等指令队列对应该主机上执行的多个执行序。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710907869.8A CN109582599B (zh) | 2017-09-29 | 2017-09-29 | 数据储存装置以及非挥发式存储器操作方法 |
US15/956,985 US10817415B2 (en) | 2017-09-29 | 2018-04-19 | Data storage device and method including device or controller-based space allocation and host-based mapping table searching |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710907869.8A CN109582599B (zh) | 2017-09-29 | 2017-09-29 | 数据储存装置以及非挥发式存储器操作方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109582599A CN109582599A (zh) | 2019-04-05 |
CN109582599B true CN109582599B (zh) | 2023-12-22 |
Family
ID=65898002
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710907869.8A Active CN109582599B (zh) | 2017-09-29 | 2017-09-29 | 数据储存装置以及非挥发式存储器操作方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10817415B2 (zh) |
CN (1) | CN109582599B (zh) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10558393B2 (en) * | 2017-10-20 | 2020-02-11 | Qualcomm Incorporated | Controller hardware automation for host-aware performance booster |
CN110018897B (zh) * | 2018-01-09 | 2023-05-26 | 阿里巴巴集团控股有限公司 | 数据处理方法、装置及计算设备 |
TWI704456B (zh) * | 2018-11-22 | 2020-09-11 | 慧榮科技股份有限公司 | 資料儲存裝置與資料存取方法 |
KR20210004322A (ko) | 2019-07-04 | 2021-01-13 | 에스케이하이닉스 주식회사 | 메모리 시스템에서 맵정보 및 리드카운트를 전송하는 장치 및 방법 |
KR20210004502A (ko) | 2019-07-05 | 2021-01-13 | 에스케이하이닉스 주식회사 | 메모리 시스템, 메모리 컨트롤러 및 메모리 시스템의 동작 방법 |
KR20200123684A (ko) | 2019-04-22 | 2020-10-30 | 에스케이하이닉스 주식회사 | 메모리 시스템에서 맵 정보를 전송하는 장치 |
KR20200137181A (ko) | 2019-05-29 | 2020-12-09 | 에스케이하이닉스 주식회사 | 메모리 시스템에서 맵정보를 전송하는 장치 |
US11422942B2 (en) * | 2019-04-02 | 2022-08-23 | SK Hynix Inc. | Memory system for utilizing a memory included in an external device |
KR20200139433A (ko) | 2019-06-04 | 2020-12-14 | 에스케이하이닉스 주식회사 | 컨트롤러의 동작 방법 및 메모리 시스템 |
CN112130750B (zh) * | 2019-06-25 | 2023-11-07 | 慧荣科技股份有限公司 | 数据储存装置以及非挥发式存储器控制方法 |
CN110609660A (zh) * | 2019-09-10 | 2019-12-24 | 深圳忆联信息系统有限公司 | Ssd阵列的主机端映射方法、装置、计算机设备及存储介质 |
US11294827B2 (en) * | 2019-09-12 | 2022-04-05 | Western Digital Technologies, Inc. | Non-sequential zoned namespaces |
CN110569000A (zh) * | 2019-09-17 | 2019-12-13 | 深圳忆联信息系统有限公司 | 基于固态硬盘阵列的主机端raid管理方法和装置 |
CN111581022B (zh) * | 2020-04-30 | 2022-07-08 | 江苏芯盛智能科技有限公司 | 一种数据恢复方法及系统 |
US11372716B2 (en) * | 2020-07-28 | 2022-06-28 | Micron Technology, Inc. | Detecting special handling metadata using address verification |
KR20220030090A (ko) * | 2020-09-02 | 2022-03-10 | 에스케이하이닉스 주식회사 | 저장 장치 및 그 동작 방법 |
US11487455B2 (en) * | 2020-12-17 | 2022-11-01 | Pure Storage, Inc. | Dynamic block allocation to optimize storage system performance |
US11693779B2 (en) * | 2021-04-30 | 2023-07-04 | International Business Machines Corporation | Prefetch of random data using application tags |
CN113934370B (zh) * | 2021-09-09 | 2022-06-28 | 珠海海奇半导体有限公司 | 非易失性存储器的耗损均衡方法、设备及介质 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1448847A (zh) * | 2002-03-28 | 2003-10-15 | 群联电子股份有限公司 | 通用串行总线架构快闪存储器储存装置 |
CN101794256A (zh) * | 2009-02-04 | 2010-08-04 | 超捷公司 | 非易失性存储器子系统及其存储器控制器 |
CN102799392A (zh) * | 2012-06-16 | 2012-11-28 | 北京忆恒创源科技有限公司 | 存储设备及其中断控制方法 |
CN103176746A (zh) * | 2011-09-06 | 2013-06-26 | 西部数据技术公司 | 用于数据存储系统中增强的控制器架构的系统和方法 |
CN103810113A (zh) * | 2014-01-28 | 2014-05-21 | 华中科技大学 | 一种非易失存储器和动态随机存取存储器的融合内存系统 |
CN104040518A (zh) * | 2011-11-30 | 2014-09-10 | 超威半导体公司 | 高效存储器和资源管理 |
CN104750626A (zh) * | 2013-12-26 | 2015-07-01 | 慧荣科技股份有限公司 | 数据储存装置以及快闪存储器控制方法 |
CN105740157A (zh) * | 2014-11-03 | 2016-07-06 | 慧荣科技股份有限公司 | 数据储存装置以及快闪存储器控制方法 |
CN106575271A (zh) * | 2014-06-23 | 2017-04-19 | 谷歌公司 | 管理存储设备 |
CN107015917A (zh) * | 2015-12-18 | 2017-08-04 | 三星电子株式会社 | 储存装置和其读取回收方法 |
CN107168639A (zh) * | 2016-03-08 | 2017-09-15 | 东芝存储器株式会社 | 存储系统、信息处理系统及非易失性存储器的控制方法 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7934074B2 (en) * | 1999-08-04 | 2011-04-26 | Super Talent Electronics | Flash module with plane-interleaved sequential writes to restricted-write flash chips |
KR20140057454A (ko) * | 2012-11-02 | 2014-05-13 | 삼성전자주식회사 | 비휘발성 메모리 장치 및 이와 통신하는 호스트 장치 |
KR20150015764A (ko) * | 2013-08-01 | 2015-02-11 | 삼성전자주식회사 | 스토리지 디바이스 및 이를 포함하는 스토리지 시스템 |
US10108565B2 (en) * | 2015-03-31 | 2018-10-23 | Toshiba Memory Corporation | Method for on-demand fetching of SGL pointers based buffer, traffic and command requirements |
US20160321010A1 (en) * | 2015-04-28 | 2016-11-03 | Kabushiki Kaisha Toshiba | Storage system having a host directly manage physical data locations of storage device |
US10229051B2 (en) * | 2015-12-30 | 2019-03-12 | Samsung Electronics Co., Ltd. | Storage device including nonvolatile memory device and controller, operating method of storage device, and method for accessing storage device |
US10853233B2 (en) * | 2016-10-18 | 2020-12-01 | Toshiba Memory Corporation | Reconstruction of address mapping in a host of a storage system |
TWI639917B (zh) * | 2017-04-25 | 2018-11-01 | 慧榮科技股份有限公司 | 資料儲存裝置及映射表重建方法 |
US10635584B2 (en) * | 2017-06-29 | 2020-04-28 | Western Digital Technologies, Inc. | System and method for host system memory translation |
-
2017
- 2017-09-29 CN CN201710907869.8A patent/CN109582599B/zh active Active
-
2018
- 2018-04-19 US US15/956,985 patent/US10817415B2/en active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1448847A (zh) * | 2002-03-28 | 2003-10-15 | 群联电子股份有限公司 | 通用串行总线架构快闪存储器储存装置 |
CN101794256A (zh) * | 2009-02-04 | 2010-08-04 | 超捷公司 | 非易失性存储器子系统及其存储器控制器 |
CN103176746A (zh) * | 2011-09-06 | 2013-06-26 | 西部数据技术公司 | 用于数据存储系统中增强的控制器架构的系统和方法 |
CN104040518A (zh) * | 2011-11-30 | 2014-09-10 | 超威半导体公司 | 高效存储器和资源管理 |
CN102799392A (zh) * | 2012-06-16 | 2012-11-28 | 北京忆恒创源科技有限公司 | 存储设备及其中断控制方法 |
CN104750626A (zh) * | 2013-12-26 | 2015-07-01 | 慧荣科技股份有限公司 | 数据储存装置以及快闪存储器控制方法 |
CN103810113A (zh) * | 2014-01-28 | 2014-05-21 | 华中科技大学 | 一种非易失存储器和动态随机存取存储器的融合内存系统 |
CN106575271A (zh) * | 2014-06-23 | 2017-04-19 | 谷歌公司 | 管理存储设备 |
CN105740157A (zh) * | 2014-11-03 | 2016-07-06 | 慧荣科技股份有限公司 | 数据储存装置以及快闪存储器控制方法 |
CN107015917A (zh) * | 2015-12-18 | 2017-08-04 | 三星电子株式会社 | 储存装置和其读取回收方法 |
CN107168639A (zh) * | 2016-03-08 | 2017-09-15 | 东芝存储器株式会社 | 存储系统、信息处理系统及非易失性存储器的控制方法 |
Also Published As
Publication number | Publication date |
---|---|
US10817415B2 (en) | 2020-10-27 |
CN109582599A (zh) | 2019-04-05 |
US20190102291A1 (en) | 2019-04-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109582599B (zh) | 数据储存装置以及非挥发式存储器操作方法 | |
CN110058796B (zh) | 数据储存装置 | |
CN110781096B (zh) | 用于通过预测需求时间来执行垃圾收集的设备和方法 | |
US8595414B2 (en) | Selectively combining commands for a system having non-volatile memory | |
CN109753234B (zh) | 存储器系统及非易失性存储器的控制方法 | |
CN110928807B (zh) | 用于检查存储器系统中的有效数据的设备和方法 | |
CN111290704B (zh) | 用于控制储存在存储系统中的数据的装置和方法 | |
US9141302B2 (en) | Snapshots in a flash memory storage system | |
JP7155028B2 (ja) | メモリシステムおよび制御方法 | |
CN110806984B (zh) | 在存储器系统中搜索有效数据的设备和方法 | |
US11747984B2 (en) | Memory system that constructs virtual storage regions for virtual machines | |
US11409467B2 (en) | Memory system and method of controlling nonvolatile memory and for reducing a buffer size | |
CN110806837B (zh) | 数据处理系统及其操作方法 | |
CN110928487A (zh) | 存储装置和存储装置的操作方法 | |
KR102349381B1 (ko) | 데이터 저장 장치 및 그것의 동작 방법 | |
CN109697017B (zh) | 数据储存装置以及非挥发式存储器操作方法 | |
CN112684976A (zh) | 用于执行迁移操作的存储器系统及其操作方法 | |
KR102596964B1 (ko) | 맵 캐시 버퍼 크기를 가변시킬 수 있는 데이터 저장 장치 | |
CN114253461A (zh) | 混合通道存储设备 | |
CN114253462A (zh) | 提供混合通道存储设备的方法 | |
CN213338708U (zh) | 一种控制部件及存储设备 | |
US10698621B2 (en) | Block reuse for memory operations | |
CN114691534A (zh) | 控制器以及包括控制器的存储器系统 |
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 | ||
GR01 | Patent grant |