CN110968520B - 基于统一缓存架构的多流存储设备 - Google Patents

基于统一缓存架构的多流存储设备 Download PDF

Info

Publication number
CN110968520B
CN110968520B CN201811203693.9A CN201811203693A CN110968520B CN 110968520 B CN110968520 B CN 110968520B CN 201811203693 A CN201811203693 A CN 201811203693A CN 110968520 B CN110968520 B CN 110968520B
Authority
CN
China
Prior art keywords
cache
unit
units
virtual page
data
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
CN201811203693.9A
Other languages
English (en)
Other versions
CN110968520A (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.)
Beijing Memblaze Technology Co Ltd
Original Assignee
Beijing Memblaze Technology Co Ltd
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 Beijing Memblaze Technology Co Ltd filed Critical Beijing Memblaze Technology Co Ltd
Publication of CN110968520A publication Critical patent/CN110968520A/zh
Application granted granted Critical
Publication of CN110968520B publication Critical patent/CN110968520B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/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/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • 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)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本申请涉及存储技术,具体地,涉及基于统一缓存架构的多流存储设备。本申请采用的技术方案是:将具有第一流标识符的缓存单元关联到第一虚拟页;根据第一虚拟页提供的物理地址与缓存单元的索引,将从缓存单元获取的数据写入NVM芯片。由于现有技术的电子设备的多个部件具有缓存,这增加了缓存的用量,增加了电子设备的成本与功耗。因此希望统一管理多个部件使用的缓存,提高缓存的利用率,并降低缓存的成本,提高电子设备的性能。

Description

基于统一缓存架构的多流存储设备
技术领域
本申请涉及存储技术,具体地,涉及基于统一缓存架构的多流存储设备。
背景技术
信息处理设备中频繁使用缓存,来临时存储数据,以匹配数据生产者与数据消费者之间的速度差异与波动。
以存储设备为例,图1展示了存储设备的框图。存储设备102同主机相耦合,用于为主机提供存储能力。主机同固态存储设备102之间可通过多种方式相耦合,耦合方式包括但不限于通过例如SATA(Serial Advanced Technology Attachment,串行高级技术附件)、SCSI(Small Computer System Interface,小型计算机系统接口)、SAS(Serial AttachedSCSI,串行连接SCSI)、IDE(Integrated Drive Electronics,集成驱动器电子)、USB(Universal Serial Bus,通用串行总线)、PCIE(Peripheral Component InterconnectExpress,PCIe,高速外围组件互联)、NVMe(NVM Express,高速非易失存储)、以太网、光纤通道、无线通信网络等连接主机与存储设备102。主机可以是能够通过上述方式同存储设备相通信的信息处理设备,例如,个人计算机、平板电脑、服务器、便携式计算机、网络交换机、路由器、蜂窝电话、个人数字助理等。存储设备102包括接口103、控制部件104、一个或多个NVM芯片105以及DRAM(Dynamic Random Access Memory,动态随机访问存储器)110。
NAND闪存、相变存储器、FeRAM(Ferroelectric RAM,铁电存储器)、MRAM(MagneticRandom Access Memory,磁阻存储器)、RRAM(Resistive Random Access Memory,阻变存储器)、XPoint存储器等是常见的NVM。
接口103可适配于通过例如SATA、IDE、USB、PCIE、NVMe、SAS、以太网、光纤通道等方式与主机交换数据。
控制部件104用于控制在接口103、NVM芯片105以及DRAM 110之间的数据传输,还用于存储管理、主机逻辑地址到闪存物理地址映射、擦除均衡、坏块管理等。控制部件104可通过软件、硬件、固件或其组合的多种方式实现,例如,控制部件104可以是FPGA(Field-programmable gate array,现场可编程门阵列)、ASIC(Application SpecificIntegrated Circuit,应用专用集成电路)或者其组合的形式。控制部件104也可以包括处理器或者控制器,在处理器或控制器中执行软件来操纵控制部件104的硬件来处理IO(Input/Output)命令。控制部件104还可以耦合到DRAM 110,并可访问DRAM 110的数据。在DRAM可存储FTL表和/或缓存的IO命令的数据。
控制部件104包括闪存接口控制器(或称为介质接口控制器、闪存通道控制器),闪存接口控制器耦合到NVM芯片105,并以遵循NVM芯片105的接口协议的方式向NVM芯片105发出命令,以操作NVM芯片105,并接收从NVM芯片105输出的命令执行结果。已知的NVM芯片接口协议包括“Toggle”、“ONFI”等。
存储器目标(Target)是NAND闪存封装内的共享CE(,ChipEnable,芯片使能)信号的一个或多个逻辑单元(LUN,Logic UNit)。NAND闪存封装内可包括一个或多个管芯(Die)。典型地,逻辑单元对应于单一的管芯。逻辑单元可包括多个平面(Plane)。逻辑单元内的多个平面可以并行存取,而NAND闪存芯片内的多个逻辑单元可以彼此独立地执行命令和报告状态。
存储介质上通常按页来存储和读取数据。而按块来擦除数据。块(也称物理块)包含多个页。块包含多个页。存储介质上的页(称为物理页)具有固定的尺寸,例如17664字节。物理页也可以具有其他的尺寸。
在存储设备中,利用FTL(Flash Translation Layer,闪存转换层)来维护从逻辑地址到物理地址的映射信息。逻辑地址构成了操作系统等上层软件所感知到的固态存储设备的存储空间。物理地址是用于访问固态存储设备的物理存储单元的地址。在相关技术中还可利用中间地址形态实施地址映射。例如将逻辑地址映射为中间地址,进而将中间地址进一步映射为物理地址。存储了从逻辑地址到物理地址的映射信息的表结构被称为FTL表。
FTL表是固态存储设备中的重要元数据。通常FTL表的数据项记录了固态存储设备中以数据页为单位的地址映射关系。
一些存储设备的FTL由存储设备所耦合的主机提供,由主机的存储器存储FTL表,主机的CPU执行软件提供FTL。还有一些被设置在主机与存储设备之间的存储管理装置提供FTL。
为存储设备提供缓存,来提升存储设备的性能。例如,在中国专利申请201710219077.1、201710219096.4与201710219112.X中提供了用于固态存储设备的分布式缓存。缓存也可以由主机或存储管理装置提供。
发明内容
现有技术的电子设备的多个部件具有缓存,这增加了缓存的用量,增加了电子设备的成本与功耗。希望统一管理多个部件使用的缓存,提高缓存的利用率,并降低缓存的成本,提高电子设备的性能。
根据本申请的第一方面,提供了根据本申请第一方面的第一应用缓存的方法,其中将具有第一流标识符的缓存单元关联到第一虚拟页;根据第一虚拟页提供的物理地址与缓存单元的索引,将从缓存单元获取的数据写入NVM芯片。
根据本申请的第一方面的第一应用缓存的方法,提供了根据本申请第一方面的第二应用缓存的方法,其中,被填充了数据的缓存单元具有流标识符。
根据本申请的第一方面的第一或第二应用缓存的方法,提供了根据本申请第一方面的第三应用缓存的方法,其中,将属于相同流的缓存单元,关联到相同的虚拟页;将属于不同流的缓存单元,组装到来自不同NVM组的虚拟页。
根据本申请的第一方面的第一或第二应用缓存的方法,提供了根据本申请第一方面的第四应用缓存的方法,其中,将具有第二流标识符的缓存单元关联到第二虚拟页。
根据本申请的第一方面的第一、第二或第四应用缓存的方法,提供了根据本申请第一方面的第五应用缓存的方法,其中,第一虚拟页与第二虚拟页分别位于不同的NVM组。
根据本申请的第一方面的第五应用缓存的方法,提供了根据本申请第一方面的第六应用缓存的方法,其中,一个或多个NVM芯片被分为多个NVM组。
根据本申请的第一方面的第四至第六应用缓存的方法,提供了根据本申请第一方面的第七应用缓存的方法,其中,还包括:获取第一流标识符;根据第一流标识符得到同第一流标识符对应的第一NVM组;将具有第一流标识符的缓存单元关联到位于第一NVM组的第一虚拟页。
根据本申请的第一方面的第一至第三应用缓存的方法,提供了根据本申请第一方面的第八应用缓存的方法,其中,接收消息,获取消息中指示的流标识符,获取同流标识符对应的NVM组。
根据本申请的第一方面的第八应用缓存的方法,提供了根据本申请第一方面的第九应用缓存的方法,其中,所述消息中指示一个或多个缓存单元。
根据本申请的第一方面的第九应用缓存的方法,提供了根据本申请第一方面的第十应用缓存的方法,其中,若消息中指示的缓存单元数量小于阈值,选取虚拟页中未被完整填充的读取单元,作为关联缓存单元的目标。
根据本申请的第一方面的第八至第十应用缓存的方法,提供了根据本申请第一方面的第十一应用缓存的方法,其中,NVM芯片被分为多个NVM组,每个NVM组包括一个或多个并行单元;任何并行单元在同一时刻至多属于一个NVM组。
根据本申请的第一方面的第八至第十一应用缓存的方法,提供了根据本申请第一方面的第十二应用缓存的方法,其中,若消息中指示的缓存单元数量小于阈值,寻找具有未被完整填充的读取单元的第一并行单元,选取所述第一并行单元中未被完整填充的读取单元,作为关联缓存单元的目标。
根据本申请的第一方面的第十二应用缓存的方法,提供了根据本申请第一方面的第十三应用缓存的方法,其中,若不存在具有未被完整填充的读取单元的并行单元,选择虚拟页的并行单元之一,作为组装缓存单元的目标。
根据本申请的第一方面的第十三应用缓存的方法,提供了根据本申请第一方面的第十四应用缓存的方法,其中,通过选择具有提供给虚拟页的可用编程单元的并行单元,来选择虚拟页的并行单元之一。
根据本申请的第一方面的第十三应用缓存的方法,提供了根据本申请第一方面的第十五应用缓存的方法,其中,通过从提供虚拟页的多个并行单元中轮流或随机选择并行单元,来选择虚拟页的并行单元之一。
根据本申请的第一方面的第十三应用缓存的方法,提供了根据本申请第一方面的第十六应用缓存的方法,其中,以优先填满编程单元为目标而选择并行单元,或者以尽量平均向各个并行单元分配缓存单元索引为目标而选择并行单元,来选择虚拟页的并行单元之一。
根据本申请的第一方面的第十三应用缓存的方法,提供了根据本申请第一方面的第十七应用缓存的方法,其中,选择具有提供给虚拟页的可容纳消息指示的缓存单元索引数量的可用编程单元的并行单元,来选择虚拟页的并行单元之一。
根据本申请的第一方面的第十至第十七应用缓存的方法,提供了根据本申请第一方面的第十八应用缓存的方法,其中,从所选取的并行单元中获取读取单元,所获取的读取单元能容纳消息指示的缓存单元的数据。
根据本申请的第一方面的第九至第十八应用缓存的方法,提供了根据本申请第一方面的第十九应用缓存的方法,其中,若消息中指示的缓存单元数量不小于阈值,选取虚拟页的并行单元之一,作为组装缓存单元的目标。
根据本申请的第一方面的第九至第十九应用缓存的方法,提供了根据本申请第一方面的第二十应用缓存的方法,其中,若消息中指示的缓存单元数量不小于阈值,选取虚拟页的具有完全未被填充的第一读取单元的并行单元,将所述第一读取单元作为组装缓存单元的目标。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1是现有技术中存储设备的框图;
图2是根据本申请实施例的FTL管理的存储空间的示意图;
图3是本申请实施例的逻辑地址空间(LBA)的示意图;
图4展示了本申请实施例的FTL表;
图5展示了本申请实施例的统一缓存的示意图;
图6A展示了根据本申请实施例向存储设备写入数据的流程图;
图6B展示了根据本申请又一实施例向存储设备写入数据的流程图;
图6C展示了根据本申请另一实施例从存储设备读出数据的流程图;
图7展示了根据本申请实施例的FTL条目缓存的示意图;
图8A展示了根据本申请图7的实施例的从存储设备读出数据的流程图;
图8B展示了根据本申请图7的实施例的向存储设备写入数据的流程图;
图9展示了根据本申请再一实施例的FTL表;
图10A展示了根据本申请图9的实施例向存储设备写入数据的流程图;
图10B展示了根据本申请图9的实施例向存储设备写入数据的又一流程图;
图10C展示了根据本申请图9的实施例向存储设备写入数据的再一流程图;
图11展示了根据本申请的该依然另一实施例向存储设备写入数据的流程图;
图12A展示了根据本申请的该依然另一实施例从存储设备读出数据的流程图;以及
图12B展示了根据本申请的该依然另一实施例从存储设备读出数据的又一流程图;
图13展示了根据本申请又一实施例的统一缓存的示意图;
图14A展示了根据本申请实施例的为虚拟页组装缓存单元的流程图;
图14B展示了根据本申请又一实施例的为虚拟页组装缓存单元的流程图;
图15展示了根据本申请再一实施例的统一缓存的示意图;
图16A展示了根据本申请又一实施例的为虚拟页组装缓存单元的流程图;
图16B展示了根据本申请再一实施例的为虚拟页组装缓存单元的流程图;
具体实施方式
下面结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
图2是根据本申请实施例的FTL管理的存储空间的示意图。
根据本申请的实施例,存储设备102的控制部件204提供FTL。存储设备向主机提供逻辑地址(称为LBA)空间。主机使用逻辑地址访问存储设备。FTL将主机提供的逻辑地址映射为物理地址。
根据本申请的实施例,FTL映射得到的物理地址,部分是访问NVM芯片105的物理地址,而部分是访问DRAM 110的物理地址。因而,参看图2,NVM芯片105与DRAM 110的部分,提供了由FTL管理的存储空间200。
可选地,除了DRAM 110,诸如SRAM的其他类型的存储器也用于提供由FTL管理的存储空间。
可以理解地,根据本申请又一实施例的FTL,由耦合到存储设备的主机,或者被设置在主机与存储设备之间的存储管理装置提供。
FTL由例如运行在控制部件204的CPU中的软件、固件和/或作为ASIC的部分的硬件实现。
图3是本申请实施例的逻辑地址(LBA)空间的示意图。作为举例,逻辑地址空间是连续的地址空间。FTL维护逻辑地址空间。
图3中从上向下的方向是逻辑地址空间递增的方向。逻辑地址空间包括多个具有相同大小的区域,每个区域被称为小块。FTL表的每个条目(称为FTL条目),记录了逻辑地址空间的小块到物理地址的映射。图3中示出了FTL表的多个条目,包括FTL条目0、FTL条目1……FTL条目5。例如,每个FTL条目对应的逻辑地址空间的大小可以是例如512字节、1KB或4KB。根据逻辑地址空间的地址,索引FTL条目。例如,用逻辑地址空间的地址除以FTL条目对应的逻辑地址空间的大小,所得的商为FTL条目的索引。
图4展示了本申请实施例的FTL表。
FTL表包括多个FTL条目,每个FTL条目对应于小块之一,FTL条目的值记录了为小块提供存储空间的NVM数据帧地址或缓存容器索引。可选地,根据FTL条目的值,识别该值指示NVM数据帧地址还是缓存容器索引。例如,将大于阈值的FTL条目值,映射为NVM数据帧地址,而将不大于阈值的FTL条目值,映射为缓存容器索引。作为又一个例子,在FTL条目中记录标志位,用于指示FTL条目的值指示NVM数据帧地址还是缓存容器索引。
FTL表被存储在例如DRAM 110(也参看图2)或SRAM中。FTL根据访问的逻辑地址,计算出对应的FTL条目的索引,并从FTL条目中得到为小块提供存储空间的NVM数据帧或缓存容器。
NVM数据帧地址,是例如访问NVM芯片的物理页的物理地址、访问NVM芯片的多个组合的物理页的物理地址(组合的物理页是例如,位于相同逻辑单元(LUN)的多个平面(Plane)上的具有相同物理页号的物理页)、访问NVM芯片的物理页内的部分数据单元的物理地址。缓存容器索引是例如DRAM中的缓存单元的地址或缓存单元的描述符的地址。缓存单元是例如DRAM中的一段存储空间。缓存单元描述符用于描述缓存单元。缓存容器用于记录缓存单元描述符。
图5展示了本申请实施例的统一缓存的示意图。
FTL使用统一缓存520。作为举例,用DRAM提供统一缓存,或者为统一缓存提供缓存数据的缓存单元。作为举例,FTL将逻辑地址空间映射到一个或多个NVM芯片510与统一缓存520。
NVM芯片510的存储空间包括多个物理块。NVM芯片510的存储空间被组织为NVM数据帧(参看块512)。大块512包括多个NVM数据帧。NVM数据帧的大小同小块的大小相同,从而一个小块对应的逻辑地址空间所存储的数据可被记录在一个NVM数据帧中。
统一缓存520的存储空间被组织为缓存单元。缓存单元是例如DRAM的一段存储空间。缓存单元的大小同小块的大小相同,从而一个小块对应的逻辑地址空间所存储的数据可被记录在一个缓存单元中。
也参看图4,FTL条目的值记录的缓存容器的索引指示了缓存容器。根据缓存容器可访问关联于缓存容器的缓存单元。
返回参看图5,缓存容器描述了同其关联的一个或多个缓存单元。缓存单元可被分配给缓存容器,或者缓存单元同缓存容器具有被指定的关联关系。例如,缓存容器记录了关联于缓存容器的一个或多个缓存单元的缓存单元描述符,缓存单元描述符记录了缓存单元的地址与缓存单元的工作状态。
继续参看图5,FTL条目0、FTL条目2、FTL条目3的值与FTL条目4的值,指示了位于NVM芯片510的NVM数据帧地址,而FTL条目1与FTL条目5的值,指示了位于统一缓存520的缓存容器的索引。从而FTL根据逻辑地址得到FTL条目,并根据FTL条目的值,而提供为逻辑地址空间的小块提供存储空间的物理地址。
图6A展示了根据本申请实施例向存储设备写入数据的流程图。
存储设备获取主机提供的写命令,写命令指示了逻辑地址(610)。存储设备的控制部件根据逻辑地址查询FTL表(612),获取同逻辑地址对应的物理地址。
可选地,写命令指示了逻辑地址空间的多个小块,相应地,根据每个小块的逻辑地址查询FTL表以得到对应的物理地址。为了清楚的目的,在下面的一个或多个例子中,以写命令访问单一小块为例,描述根据本申请的实施例。
识别所得到的同逻辑地址对应的物理地址是否指示缓存容器索引(614)。若FTL提供的同写命令访问的逻辑地址的物理地址是缓存容器索引,则用该缓存容器索引访问对应缓存容器的缓存单元,以承载写命令要写入的数据(616)。可选地,将写命令要写入的数据写入缓存单元后,向发出写命令的主机指示写命令处理完成。
若FTL提供的同写命令访问的逻辑地址对应的物理地址不是缓存容器索引(614)(例如,是NVM数据帧地址,或其他内容),则为该逻辑地址分配新的缓存容器(618),将写命令要写入的数据写入新分配的缓存容器的缓存单元(620)。还在同逻辑地址对应的FTL条目中记录该新分配的缓存容器的索引(622)。
根据本申请的实施例,可选地,在需要时或周期性地,将一个或多个FTL条目所指示的缓存容器的缓存单元中存储的数据,写入NVM芯片。响应于缓存单元中存储的数据被写入NVM芯片,用NVM芯片的NVM数据帧地址,替换FTL条目中的缓存容器索引。从而,直到将FTL表条目中记录的缓存容器索引修改为指示NVM芯片的数据单元的物理地址之前,FTL表条目记录的始终是缓存容器索引,这意味着在这期间,若接收到访问这些FTL表条目的读命令或写命令,将命中统一缓存,并用缓存容器索引记录的缓存单元来响应读命令或写命令。
图6B展示了根据本申请又一实施例向存储设备写入数据的流程图。
存储设备获取主机提供的写命令,写命令指示了逻辑地址(630)。存储设备的控制部件根据逻辑地址查询FTL表(632),获取同逻辑地址对应的物理地址。
识别所得到的同逻辑地址对应的物理地址是否指示缓存容器索引(634)。若FTL提供的同写命令访问的逻辑地址的物理地址是缓存容器索引,则进一步识别该缓存容器索引对应缓存容器的缓存单元是否正在被使用(636)。缓存单元正在被使用,例如,根据其他写命令正向该缓存单元写入数据,正在从该缓存单元读出数据,或者控制部件正在将该缓存单元的数据写入NVM芯片。若该缓存单元当前未被使用,用该缓存单元承载写命令要写入的数据(638)。若该缓存单元当前正在被使用,则为该缓存容器分配新的缓存单元(640),并用该新的缓存单元承载写命令要写入的数据(642)。
若FTL提供的同写命令访问的逻辑地址的物理地址不是缓存容器索引(634)(例如,是NVM数据帧地址,或其他内容),则为该逻辑地址分配新的缓存容器(644),将写命令要写入的数据写入新分配的缓存容器的缓存单元(646)。还在同逻辑地址对应的FTL条目中记录该新分配的缓存容器的索引(648)。
图6C展示了根据本申请另一实施例从存储设备读出数据的流程图。
存储设备获取主机提供的读命令,读命令指示了逻辑地址(650)。存储设备的控制部件根据逻辑地址查询FTL表(652),获取同逻辑地址对应的物理地址。
识别所得到的同逻辑地址对应的物理地址指示缓存容器索引、NVM数据帧地址还是其他类型的物理地址(654)。若FTL提供的同读命令访问的逻辑地址的物理地址是缓存容器索引,则访问缓存容器的缓存单元,从缓存单元获取数据作为对读命令的响应(656)。若FTL提供的物理地址是NVM数据帧地址,则向NVM芯片发送读取命令来读出数据(658)。可选地,FTL条目中记录了其他类型的地址,例如指示所读取的逻辑地址尚未被写入数据,则向主机指示读命令处理出错,或者以指定的值(例如全0)作为对读命令的响应。
图7展示了根据本申请实施例的FTL条目缓存的示意图。
根据图7的实施例,FTL表包括多个FTL条目。FTL条目的数量较多,例如,1亿条,从而访问FTL条目需要花费的时间较多。提供FTL条目缓存来加快FTL表的查询。
FTL条目缓存包括多个条目(称为“缓存条目”),每个缓存条目相关联地记录了逻辑地址(LBA)与缓存容器索引。缓存条目对应于FTL条目之一。缓存条目对应的FTL条目的值,记录的是缓存容器索引。FTL表的每个值为缓存容器索引的FTL条目,都有对应的缓存条目。例如,参看图7,缓存条目710记录了FTL条目1的逻辑地址(LBA)与缓存容器索引,缓存条目712记录了FTL条目2的逻辑地址(LBA)与缓存容器索引,缓存条目714记录了FTL条目4的逻辑地址(LBA)与缓存容器索引。而FTL表的值为非缓存容器索引的FTL条目,没有对应的缓存条目。
响应于为FTL条目对应的小块分配了缓存容器,创建缓存条目,在创建的缓存条目中记录分配的缓存容器索引,也FTL条目中也记录分配的缓存容器索引。
可选地,由于缓存条目记录了缓存容器索引,在同缓存条目对应的FTL条目中记录NVM数据帧地址或其他类型值而不记录缓存容器索引。响应于为FTL条目对应的小块分配了缓存容器,创建缓存条目,在创建的缓存条目中记录分配的缓存容器索引,而不在FTL条目中记录分配的缓存容器索引。
图8A展示了根据本申请图7的实施例的从存储设备读出数据的流程图。
存储设备获取主机提供的读命令,读命令指示了逻辑地址(810)。存储设备的控制部件根据逻辑地址查询FTL条目缓存(815),以尝试尽快获取同逻辑地址对应的物理地址。
若FTL条目缓存的条目中记录了读命令指示的逻辑地址(或其部分)(815),读命令的逻辑地址命中FTL条目缓存。从FTL条目被命中的缓存条目中获取缓存容器索引。并访问缓存容器对应的缓存单元,从缓存单元中读出数据作为对读命令的响应(820)。
若FTL条目缓存的条目中未记录读命令指示的逻辑地址,意味着读命令的逻辑地址未命中FTL条目缓存(815)。在此情况下,进一步查询FTL表(825),以获取同读命令的逻辑地址对应的FTL条目中记录的指示NVM数据帧地址的物理地址,并根据物理地址从NVM数据帧读出数据来响应读命中(830)。
图8B展示了根据本申请图7的实施例的向存储设备写入数据的流程图。
存储设备获取主机提供的写命令,写命令指示了逻辑地址(840)。存储设备的控制部件根据逻辑地址查询FTL条目缓存(845),以识别写命令指示的逻辑地址是否命中FTL条目缓存。
若写命中指示的逻辑地址命中FTL条目缓存(845),从FTL条目被命中的缓存条目中获取缓存容器索引。并访问缓存容器对应的缓存单元,向缓存单元写入写命令所对应的数据(850)。可选地,响应于数据被写入缓存单元,向主机指示写命令处理完成。
若写命令的逻辑地址未命中FTL条目缓存(845)。在此情况下,为该逻辑地址分配新的缓存容器(855),将写命令要写入的数据写入新分配的缓存容器的缓存单元(860)。以及更新FTL条目缓存(865),在FTL条目缓存中增加条目,在增加的条目中记录写命令指示的逻辑地址与新分配的缓存容器的索引的关联关系。可选地,还在同逻辑地址对应的FTL条目中记录该新分配的缓存容器的索引(870)。
根据本申请的实施例,可选地,在需要时或周期性地,将一个或多个FTL条目所指示的缓存容器的缓存单元中存储的数据,写入NVM芯片。以及响应于缓存单元的数据被写入NVM芯片,用NVM芯片的NVM数据帧地址,替换FTL条目中的缓存容器索引,并删除FTL条目缓存中的对应条目。
图9展示了根据本申请再一实施例的FTL表。
FTL表包括多个FTL条目,每个FTL条目对应于小块之一,FTL条目记录了为小块提供存储空间的NVM数据帧地址或缓存容器索引。
其中,一些FTL条目还记录了有效性位图。
小块对应的逻辑地址空间被进一步分成多个区域。FTL条目的有效性位图的每个比特,指示小块的区域之一在缓存单元中存储的数据,同NVM芯片中记录的数据是否一致。例如,小块的逻辑地址空间大小是4KB,将逻辑地址空间分为8个区域,每个区域具有512字节大小。依然作为举例,响应于首次向某小块写入数据,缓存容器的缓存单元容纳了被写入的数据,这些数据尚未被写入NVM芯片,因而缓存单元对应的逻辑地址空间的一个或多个区域的数据同NVM芯片存储的数据不一致,在有效性位图中,标记缓存单元的一个或多个区域的这种不一致。作为又一个例子,从NVM芯片读出对应于小块的数据,并存储在缓存单元中,此时缓存单元对应的逻辑地址空间的一个或多个区域的数据同NVM芯片存储的数据一致,通过有效性位图的一个或多个比特,标记缓存单元的一个或多个区域的同NVM芯片存储的数据一致。
可选地,一些FTL条目的值记录了NVM数据帧地址,而非缓存容器索引,这些FTL条目不包括有效性位图。
根据图9的实施例,利用根据图6C或图8A展示的实施例相同或相似的流程,从存储设备读出数据。
图10A展示了根据本申请图9的实施例向存储设备写入数据的流程图。
存储设备获取主机提供的写命令,写命令指示了逻辑地址(1010)。存储设备的控制部件根据逻辑地址查询FTL表(1012),获取同逻辑地址对应的物理地址。
识别所得到的同逻辑地址对应的物理地址是否指示缓存容器索引(1014)。若FTL提供的同写命令访问的逻辑地址的物理地址是缓存容器索引(1014),访问该缓存容器索引对应的缓存单元,用该缓存单元承载写命令要写入的数据(1016)。
以及,由于写命令要写入的数据仅被写入了缓存单元而未写入NVM数据帧,因而缓存单元中的数据同NVM数据帧的数据不一致。根据写命令访问小块的一个或多个区域,更新FTL条目中的有效性位图(1018)。
若FTL提供的同写命令访问的逻辑地址对应的物理地址不是缓存容器索引(例如,是NVM数据帧地址,或其他内容)(1014),则为该逻辑地址分配新的缓存容器(1020),将写命令要写入的数据写入新分配的缓存容器的缓存单元(1022)。根据写命令访问小块的一个或多个区域,更新FTL条目中的有效性位图(1024)。
进一步地,响应于同写命令访问的逻辑地址对应的物理地址不是缓存容器索引,还识别写命令要写入的数据是否占用完整的缓存单元(或小块)(1026)。例如,小块对应的逻辑地址空间大小为4KB,而写命令向该逻辑地址空间写入4KB数据,则写命令要写入的数据占用完整的缓存单元;若写命令向逻辑地址空间写入例如2KB数据,则写命令要写入的数据未占用完整的缓存单元。
若写命令要写入的数据未占用完整的缓存单元(1026),还从根据FTL提供的同写命令访问的逻辑地址的物理地址(例如,NVM数据帧地址)从NVM芯片读出小块中未被写命令要写入的数据占用的部分逻辑地址空间的数据,并填充到写命令向其写入数据的缓存单元(1028),使得缓存单元中被填充了对应于小块的完整逻辑地址空间的数据(部分来自写命令,而部分来自NVM数据帧)。
此时缓存容器的缓存单元已容纳了对应于小块的完整逻辑地址空间的数据,利用该缓存单元能够响应对小块的访问,而无须再在FTL条目中保留刚才读出数据的NVM数据帧地址。因而还在同写命令的逻辑地址对应的FTL条目中记录该新分配的缓存容器的索引(1030)。
若写命令要写入的数据占用了完整的缓存单元(1026),转向步骤1024更新FTL条目中的有效性位图。
图10B展示了根据本申请图9的实施例向存储设备写入数据的又一流程图。
存储设备获取主机提供的写命令,写命令指示了逻辑地址(1040)。存储设备的控制部件根据逻辑地址查询FTL表(1042),获取同逻辑地址对应的物理地址。
识别所得到的同逻辑地址对应的物理地址是否指示缓存容器索引(1044)。若FTL提供的同写命令访问的逻辑地址的物理地址是缓存容器索引(1044),则进一步识别该缓存容器索引对应缓存容器的缓存单元是否正在被使用(1046)。若该缓存单元当前未被使用,用该缓存单元承载写命令要写入的数据(1048)。若该缓存单元当前正在被使用,则为该缓存容器分配新的缓存单元(1050),并用该新的缓存单元承载写命令要写入的数据(1052)。
以及根据写命令访问小块的一个或多个区域,更新FTL条目中的有效性位图(1054)。
若FTL提供的同写命令访问的逻辑地址的物理地址不是缓存容器索引(例如,是NVM数据帧地址,或其他内容)(1044),则为该逻辑地址分配新的缓存容器(1056),将写命令要写入的数据写入新分配的缓存容器的缓存单元(1058)。
进一步地,还识别写命令要写入的数据是否占用完整的缓存单元(或小块)(1060)。若写命令要写入的数据未占用完整的缓存单元(1060),还从根据FTL提供的同写命令访问的逻辑地址的物理地址(例如,NVM数据帧地址)从NVM芯片读出小块中未被写命令要写入的数据占用的部分逻辑地址空间的数据,并填充到写命令向其写入数据的缓存单元(1062),使得缓存单元中被填充了对应于小块的完整逻辑地址空间的数据(部分来自写命令,而部分来自NVM数据帧)。若写命令要写入的数据占用了完整的缓存单元(1060),直接转向步骤1064。
根据写命令访问小块的一个或多个区域,更新FTL条目中的有效性位图(1064)。还在同写命令的逻辑地址对应的FTL条目中记录该新分配的缓存容器的索引(1066)。
可选地,识别写命令要写入的数据是否占用完整的缓存单元(或小块)的步骤被更早地执行。例如,在识别出FTL提供的同写命令访问的逻辑地址的物理地址是NVM数据帧地址后,即执行识别写命令要写入的数据是否占用完整的缓存单元(或小块)的步骤,以及执行从NVM芯片读出小块中未被写命令要写入的数据占用的部分逻辑地址空间的数据,并填充到写命令向其写入数据的缓存单元的步骤。
根据图9展示的FTL表,可选地,也为其提供FTL条目缓存。
FTL条目缓存包括多个条目(称为“缓存条目”),每个缓存条目相关联地记录了逻辑地址(LBA)、缓存容器索引与有效性位图。缓存条目对应于FTL条目之一。FTL表的每个值为缓存容器索引的FTL条目,有对应的缓存条目。而FTL表的值为非缓存容器索引的FTL条目,没有对应的缓存条目。
图10C展示了根据本申请图9的实施例向存储设备写入数据的再一流程图。
存储设备获取主机提供的写命令,写命令指示了逻辑地址(1070)。存储设备的控制部件根据逻辑地址查询FTL条目缓存(1072),以识别写命令指示的逻辑地址是否命中FTL条目缓存。
若写命中指示的逻辑地址命中FTL条目缓存(1072),从FTL条目被命中的缓存条目中获取缓存容器索引。并访问缓存容器对应的缓存单元,向缓存单元写入写命令所对应的数据(1074)。以及根据写命令访问小块的一个或多个区域,更新FTL条目中的有效性位图(1076)。
若写命令的逻辑地址未命中FTL条目缓存(1072)。在此情况下,为该逻辑地址分配新的缓存容器(1078),将写命令要写入的数据写入新分配的缓存容器的缓存单元(1080)。
在识别出FTL提供的同写命令访问的逻辑地址的物理地址是NVM数据帧地址后,除了分配新的缓存容器,还识别写命令要写入的数据是否占用完整的缓存单元(或小块)(1082)。若写命令要写入的数据未占用完整的缓存单元(1082),还根据写命令的逻辑地址查询FTL表(1084),根据FTL提供的同写命令访问的逻辑地址的物理地址(例如,NVM数据帧地址)从NVM芯片读出小块中未被写命令要写入的数据占用的部分逻辑地址空间的数据,并填充到写命令向其写入数据的缓存单元(1086),使得缓存单元中被填充了对应于小块的完整逻辑地址空间的数据(部分来自写命令,而部分来自NVM数据帧)。若写命令要写入的数据占用了完整的缓存单元(1082),直接转向步骤1088。
以及根据写命令访问小块的一个或多个区域,更新FTL条目中的有效性位图(1088)。更新FTL条目缓存(1090),在FTL条目缓存中增加缓存条目,以记录写命令指示的逻辑地址与新分配的缓存容器的索引的关联关系。可选地,还在同写命令的逻辑地址对应的FTL条目中记录该新分配的缓存容器的索引(1092)。
根据本申请的依然另一实施例,缓存容器中除了记录其所拥有的缓存单元,还记录有效性位图与NVM数据帧地址。缓存容器的NVM数据帧地址是被读出数据以填充缓存单元的NVM数据帧的地址。由于在缓存容器中记录了NVM数据帧地址,从而在向缓存容器写入来自写命令的数据时,即使写命令要写入的数据未占用完整的缓存单元,也无须立即从NVM数据帧读出数据来填补缓存单元。
图11展示了根据本申请的该依然另一实施例向存储设备写入数据的流程图。
存储设备获取主机提供的写命令,写命令指示了逻辑地址(1110)。存储设备的控制部件根据逻辑地址查询FTL表(1120),获取同逻辑地址对应的物理地址。
识别所得到的同逻辑地址对应的物理地址是否指示缓存容器索引(1130)。若FTL提供的同写命令访问的逻辑地址对应的物理地址是缓存容器索引(1130),访问该缓存容器索引对应的缓存单元,用该缓存单元承载写命令要写入的数据(1140)。以及,根据写命令访问小块的一个或多个区域,更新FTL条目中的有效性位图(1150)。
若FTL提供的同写命令访问的逻辑地址对应的物理地址不是缓存容器索引(例如,是NVM数据帧地址,或其他内容)(1130),则为该逻辑地址分配新的缓存容器,将写命令要写入的数据写入新分配的缓存容器的缓存单元(1160)。以及在新分配的缓存容器中记录从FTL表得到的同逻辑地址对应的NVM数据帧地址(1170)。根据写命令访问小块的一个或多个区域,更新FTL条目中的有效性位图(1180)。还在同写命令的逻辑地址对应的FTL条目中记录该新分配的缓存容器的索引(1190)。
可选地,根据写命令访问小块的一个或多个区域更新FTL条目中的有效性位图的步骤,在获取了写命令指示的逻辑地址后即可实施,并且不依赖于写命令指示的逻辑地址对应的物理地址是否指示缓存容器索引。
图12A展示了根据本申请的该依然另一实施例从存储设备读出数据的流程图。
存储设备获取主机提供的读命令,读命令指示了逻辑地址(1210)。存储设备的控制部件根据逻辑地址查询FTL表(1215),获取同逻辑地址对应的物理地址。
识别所得到的同逻辑地址对应的物理地址指示缓存容器索引、NVM数据帧地址还是其他类型的物理地址(1220)。若FTL提供的同读命令访问的逻辑地址对应的物理地址是缓存容器索引(1220),还识别缓存容器能否提供读命令要读取的完整数据(1225)。例如,缓存容器被写入的数据对应的逻辑地址空间大小为4KB,而读命令从该逻辑地址空间读取4KB数据,则缓存容器能提供读命令要读出的完整数据;若读命令从逻辑地址空间读出例如2KB数据,而缓存容器被写入的数据对应的逻辑地址空间大小为1KB,则缓存容器无法提供读命令要读取的完整数据。
若缓存容器无法提供读命令要读取的完整数据(1225),还从根据缓存容器获得的同读命令访问的逻辑地址对应的NVM数据帧地址(1230),从NVM芯片读出缓存容器无法提供的部分数据,以响应读命令(1235)。以及可选地,对于缓存容器能提供的部分数据,从缓存容器获取数据来响应读命令。
若缓存容器能够提供读命令要读取的完整数据(1225),从缓存容器获取数据来响应读命令(1240)。
若FTL提供的同读命令访问的逻辑地址对应的物理地址是NVM数据帧地址(1220),则向NVM芯片发送读取命令来读出数据(1245)。
图12B展示了根据本申请的该依然另一实施例从存储设备读出数据的又一流程图。
存储设备获取主机提供的读命令,读命令指示了逻辑地址(1240)。存储设备的控制部件根据逻辑地址查询FTL条目缓存(1245),以尝试尽快获取同逻辑地址对应的物理地址。
若读命中指示的逻辑地址命中FTL条目缓存(1245),从FTL条目缓存被命中的缓存条目中获取缓存容器索引。还识别缓存容器能否提供读命令要读取的完整数据。若缓存容器能提供读命令要读取的完整数据(例如,通过缓存条目记录的有效性位图)(完全命中),访问缓存容器对应的缓存单元,从缓存单元中读出数据作为对读命令的响应(1250)。
若缓存容器无法提供读命令要读取的完整数据(未完全命中),还根据缓存条目记录的有效性位图,识别缓存容器能为读命令提供的逻辑地址空间(小块)的部分,与缓存容器不能为读命令提供的逻辑地址空间的部分(1255)。从缓存容器的缓存单元获取其能为读命令提供的逻辑地址空间的部分数据(1250)。以及查询FTL表(1265),获取同读命令的逻辑地址对应的指示NVM数据帧的物理地址,并根据物理地址从NVM数据帧读出获取缓存容器不能为读命令提供的逻辑地址空间的部分的数据(1270)。
可选地,对于缓存容器不能为读命令提供的逻辑地址空间的部分,不查询FTL表,而是从缓存容器获取同读命令的逻辑地址对应的指示NVM数据帧的物理地址(1260),并根据物理地址从NVM数据帧读出获取缓存容器不能为读命令提供的逻辑地址空间的部分的数据(1270)。
若FTL条目缓存不存在未记录了读命令指示的逻辑地址的缓存条目,意味着读命令的逻辑地址未命中FTL条目缓存(1245)。在此情况下,进一步查询FTL表,以获取同读命令的逻辑地址对应的FTL条目中记录的指示NVM数据帧地址的物理地址,并根据物理地址从NVM数据帧读出数据来响应读命中。
图13展示了根据本申请又一实施例的统一缓存的示意图。
FTL使用统一缓存1320。
FTL条目0、FTL条目2与FTL条目3的值,指示了位于NVM芯片1310的NVM数据帧地址,而FTL条目1、FTL条目4的值与FTL条目5的值,指示了位于统一缓存1320的缓存容器的索引。从而FTL根据逻辑地址得到FTL条目,并根据FTL条目的值,而提供为逻辑地址空间的小块提供存储空间的物理地址。
存储设备还包括数据组装单元1330。数据组装单元1330将统一缓存1320的多个缓存单元组装为虚拟页1332。组装后的虚拟页1332同NVM芯片的编程接口可承载的数据大小相同或是其整数倍。从而组装后的虚拟页1332的数据(来自多个缓存单元)被分别或一同写入(或称“编程”)到NVM芯片1310。
虚拟页1332具有相关联的NVM芯片1310的物理地址。作为举例,虚拟页1332代表了NVM芯片的一个或多个编程操作的最小单元(例如,物理页或One-Shot编程操作的多个物理页)(统称为编程单元)。NVM芯片的编程单元容纳例如一个或多个数据帧,每个数据帧容纳例如一个缓存单元的数据。
图13的例子中,虚拟页1332代表来自一个或多个并行单元的编程单元。并行单元是例如逻辑单元(LUN)、平面(Plane)和/或将NVM芯片耦合到控制部件的通道。可选地,属于虚拟页1332的多个并行单元能够被并行操作。例如,虚拟页1332的各个并行单元分属不同的通道,控制部件独立地向各个并行单元提供编程命令。依然可选地,虚拟页1332的每个并行单元包括单一的编程单元或者多个编程单元。
组装单元1330通过同虚拟页1332相关联地记录缓存单元的索引来组装缓存单元,从而在组装缓存单元的过程中无须拷贝缓存单元数据。例如,为具有NVM芯片物理地址的每个编程单元P,记录缓存单元索引,以指示将这些缓存单元索引对应的缓存单元的数据,写入编程单元P。组装单元1330用缓存单元索引来组装虚拟页1332。完整组装的虚拟页1332的数据被写入虚拟页所代表的各个编程单元。一些情况下,未被完整组装的虚拟页1332,通过填充代表了随机数或指定的数据的缓存单元索引来完整组装虚拟页1332,并将完整组装的虚拟页的数据写入虚拟页所代表的各编程单元。
依然可选地,为虚拟页1332的一个、多个或部分编程单元组装校验数据。在一个例子中,校验数据由介质接口提供,组装单元1330在虚拟页1332中为校验数据预留空间,并向介质接口提供校验数据应被写入的虚拟页1332所代表的编程单元的地址。作为又一个例子,校验数据由另外的缓存提供,组装单元1330将该另外的缓存的索引记录在虚拟页1332。
依然可选地,组装单元1330组装的虚拟页中,一些包括校验数据,而另一些不包括校验数据。
组装后的虚拟页被提供给控制部件的介质接口。虚拟页中相关联地记录了NVM芯片1310的物理地址与缓存单元索引。介质接口根据虚拟页提供的物理地址与缓存单元索引,从缓存单元获取数据,并将数据通过编程命令提供给NVM芯片。从而介质接口在向NVM芯片提供编程命令过程中,使用统一缓存1320的缓存单元作为数据源,而无须再维护专用于介质接口的缓存。
响应于组装后的虚拟页被写入NVM芯片,虚拟页所承载的多个缓存单元被释放。以及还更新对应的FTL表条目,将FTL表条目中原本记录的被释放的缓存单元所属的缓存容器的索引,更新为虚拟页中同缓存单元关联的指示NVM芯片的数据单元的物理地址。从而,直到将FTL表条目中记录的缓存容器索引修改为指示NVM芯片的数据单元的物理地址之前,FTL表条目记录的始终是缓存容器索引,这意味着在这期间,若接收到访问这些FTL表条目的读命令或写命令,将命中统一缓存,并用缓存容器索引记录的缓存单元来响应读命令。而对于这期间收到的访问这些FTL表条目的写命令,分配关联到相同缓存容器的新的缓存单元来承载要写命令的数据。
可选地,响应于将组装后的虚拟页提供给控制部件的介质接口,组装单元1330开始对另一虚拟页的组装。另一虚拟页代表来自一个或多个并行单元的尚未被写入数据的编程单元。可选地或进一步地,组装单元1330同时组装多个虚拟页。
组装单元1330在多种情况下为虚拟页1332组装缓存单元。例如,响应于统一缓存1320的一个或多个缓存单元承载了写入逻辑地址空间的小块的数据,组装单元1330开始为虚拟页组装缓存单元。作为又一个例子,响应于统一缓存的被写入数据的缓存单元数量大于阈值,或者统一缓存的空闲缓存单元数量小于阈值,组装单元1330开始为虚拟页组装缓存单元。可选地或进一步地,组装单元1330被设置指定的数据带宽,按指定的带宽为虚拟页组装缓存单元,例如在指定的时间间隔内,将指定数量的缓存单元组装到虚拟页。作为再一个例子,组装单元根据统一缓存的使用情况,为虚拟页组装缓存单元,使得任意时刻统一缓存中总能获取可用的缓存单元来承载写入逻辑地址空间的小块的数据。作为依然又一个例子,组装单元1330响应于主机或用户的指示而为虚拟页组装缓存单元。
组装单元1330采用多种策略为虚拟页1332组装缓存单元。例如,根据先进先出的策略,优先选取统一缓存中最早或更早被分配的缓存单元。又例如,选取其对应的逻辑地址空间被完全更新的缓存单元,或对应的逻辑地址空间被更新的比例更大的缓存单元。又例如,根据主机的指示或者对数据的识别,选择其数据生命周期最长或更长(或近期被更新的几率最低或更低)的缓存单元。
图14A展示了根据本申请实施例的为虚拟页组装缓存单元的流程图。也参看图13,例如由组装单元1330来实施图7展示的流程。
组装单元1330获取承载了要写入到NVM芯片的数据的缓存单元的索引(1410)。组装单元1330在多种情况下实施为虚拟页1332组装缓存单元的过程。组装单元1330例如接收消息,消息中指示了要写入到NVM芯片的数据的缓存单元的索引。可选地,消息中指示一个或多个缓存单元的索引。
组装单元1330还获取作为当前组装缓存单元的目标的虚拟页,并从虚拟页中获取可用的编程单元(1420)。可用的编程单元的一个或多个数据帧尚未被分配给缓存单元。
虚拟页包括一个或多个编程单元。为从虚拟页中获取可用的编程单元,可选地,例如从虚拟页中随机选择可用编程单元。又例如,根据获取的缓存单元索引的数量,从虚拟页中选择能容纳获取的缓存单元数量的可用编程单元。
作为举例,编程单元包括64个数据帧,其中30个已经被分配了缓存单元索引,而剩余34个数据帧可用,当在步骤1410中获取的缓存单元索引数量小于34时,选择该可用编程单元。
作为再一个例子,轮流从为虚拟页提供编程单元的各个并行单元中选择可用编程单元。而在又一个例子中,优先选择已经被选取过的可用编程单元,以尽量将一个可用编程单元的数据帧都分配了缓存单元索引后(可用编程单元变为不可用编程单元),再选择其他可用编程单元。
为虚拟页相关联地记录可用编程单元的物理地址与获取的缓存单元索引(1430)。例如,步骤1410中获取的缓存单元索引为BU1-BU3,而步骤1420中选取的可用编程单元的物理地址为P,则相关联地记录<P,BU1,BU2,BU3>。可选地,响应于为物理地址为P的可用编程单元的数据帧再次分配索引为BU4的缓存单元,还追加记录该可用编程单元的物理地址与为其分配的缓存单元索引(<P,BU1,BU2,BU3,BU4>)。以及还相关联地记录可用缓存单元的数据帧与缓存单元索引。例如<P,BU1,BU2,BU3,BU4>暗示了缓存单元索引BU1,BU2,BU3,BU4的每个按顺序对应于物理地址为P的可用编程单元的按物理地址排列的各个数据帧。
响应于虚拟页的各编程单元的未被分配缓存单元索引的数据帧数量都小等于阈值(例如0或正整数),根据虚拟页产生编程命令以向各编程单元写入数据。可选地,响应于虚拟页的任何编程单元的未被分配缓存单元索引的数据帧数量小等于阈值(例如0或正整数),产生编程命令向该编程单元写入数据。可选地,向编程单元写入数据时,向未被分配缓存单元索引的数据帧填充随机数或指定数据。
图14B展示了根据本申请又一实施例的为虚拟页组装缓存单元的流程图。也参看图13,例如由组装单元1330来实施图14B展示的流程。
组装单元1330获取承载了要写入到NVM芯片的数据的缓存单元的索引(1440)。作为举例,组装单元1330接收消息,消息中指示了要写入到NVM芯片的数据的缓存单元的索引。作为举例,在根据图14B的实施例中,消息中指示一个或两个缓存单元的索引。可以理解地,消息中指示其他数量的缓存单元索引。
确定消息中指示的缓存单元索引的数量是否小于阈值(1450)。作为举例,消息中指示一个或两个缓存单元索引,则指定阈值为2。可选地,根据读取单元所容纳的数据帧数量设定阈值。例如,根据读取单元容纳4个数据帧,将阈值设定为2-4;根据读取单元容纳64个数据帧,而将阈值设定为例如2-32。依然可选地,根据读取单元容纳的数据帧数量与所获取的缓存单元索引的数量,而实施不同的处理方式。通过设置阈值,使具有关联关系(例如被单一消息指示)的缓存单元的数据有机会被写入相同的读取单元,而将不具关联关系的缓存单元的数据写入不同的读取单元。从而在从编程单元读出数据时,具有关联关系的数据被用单一读命令整体读出,以降低读出数据的处理延迟。
根据本申请的实施例,编程单元包括一个或多个读取单元。例如,读取单元是NVM芯片的物理页,NVM芯片的半个物理页,或者可被用单一读命令访问的同一逻辑单元的来自多个平面(Plane)的每个的多个物理页。
返回参看图14B,若消息中指示的缓存单元索引数量小于阈值(1450),进一步在构成虚拟页的并行单元中寻找是否存在这样的并行单元,该并行单元提供给虚拟页的编程单元具有未被完整填充的读取单元(1460)。例如,虚拟页包括4个编程单元(每个编程单元来自一个并行单元),每个编程单元包括3个读取单元,每个读取单元包括4个数据帧。未被完整填充的读取单元,是例如被填充了的数据帧数量在1~3之间的读取单元。作为又一个例子,读取单元是NVM芯片的半个物理页,未被完整填充的读取单元是被填充了1个数据帧的读取单元。作为再一个例子,读取单元是NVM芯片的包括4个数据帧单一物理页,未被完整填充的读取单元是被填充了1个或3个数据帧的读取单元。
若存在其提供给虚拟页的编程单元具有未被完整填充的读取单元的并行单元(1460),选取提供了该具有未被完整填充的读取单元的并行单元(1470),作为组装缓存单元的目标。若不存在其提供给虚拟页的编程单元具有未被完整填充的读取单元的并行单元(1460),选择虚拟页的并行单元之一(1465),作为组装缓存单元的目标。所选择的并行单元,是具有提供给虚拟页的可用编程单元的并行单元。
在步骤1465,例如,从提供虚拟页的具有可用编程单元的多个并行单元中轮流或随机选择并行单元。或者,在步骤1465,以优先填满编程单元为目标而选择并行单元,或者以尽量平均向各个并行单元分配缓存单元索引为目标而选择并行单元。
以及在步骤1450,若消息中指示的缓存单元索引数量不小于阈值,选取虚拟页的并行单元之一(1465),作为组装缓存单元的目标。所选择的并行单元,是具有提供给虚拟页的可容纳消息指示的缓存单元索引数量的可用编程单元的并行单元。
从所选取的并行单元中获取属于虚拟页的读取单元(1480),所获取的读取单元能容纳消息指示的缓存单元的数据。以及相关联地记录所获取的读取单元的物理地址与获取的缓存单元索引(1490)。
可选地,在步骤1460,若找到了其提供给虚拟页的编程单元具有未被完整填充的读取单元的并行单元,还记录找到的读取单元与并行单元,作为步骤1470要选择的并行单元与步骤1480要获取的读取单元,并省去步骤1478与步骤1480。
作为举例,虚拟页包括4个编程单元(每个编程单元来自一个并行单元),每个编程单元包括6个读取单元,每个读取单元包括2个数据帧,提供给组装单元的消息指示一个或两个缓存单元索引。响应于先后收到3个指示了单一缓存单元索引的消息,组装单元根据图14B展示的流程,将第一个消息指示的缓存单元索引,分配给读取单元R1(通过步骤1460与1465,随机选择并行单元之一,并从选择的并行单元获取读取单元R1);将第二个消息指示的缓存单元索引,也分配给读取单元R1(通过步骤1460与1470,因为处理了第一个消息后,读取单元R1是未完整填充的读取单元);以及第三个消息指示的缓存单元索引,分配给读取单元R2(通过步骤1460与1465,读取单元R2不同于读取单元R1)。
以及接下来,收到2个指示了具有两个缓存单元索引的消息。组装单元根据图14B展示的流程,将第四个消息指示的缓存单元索引,分配给读取单元R3(通过步骤1450与1465,并在步骤1465,选择能提供完整读取单元的并行单元);将第五个消息指示的缓存单元索引,分配给读取单元R4(通过步骤1450与1465,并在步骤1465,选择能提供完整读取单元的并行单元)。以及可选地,读取单元R3与读取单元R4位于不同的并行单元。
可以理解地,读取单元R1-R4属于相同的虚拟页。
图15展示了根据本申请再一实施例的统一缓存的示意图。
FTL使用统一缓存1520。
FTL条目0、FTL条目2与FTL条目3的值,指示了位于NVM芯片1510的NVM数据帧地址,而FTL条目1、FTL条目4的值与FTL条目5的值,指示了统一缓存1520的缓存容器的索引。
一个或多个NVM芯片1510被分为多个NVM组。作为举例,按并行单元划分NVM组,每个NVM组包括一个或多个并行单元;任何并行单元在同一时刻至多属于一个NVM组。作为又一个例子,按物理块或物理块组划分NVM组,每个NVM组包括一个或多个物理块或物理块组,任何物理块或物理块组在同一时刻至多属于一个NVM组。在垃圾回收期间,物理块组中的所有物理块被作为整体回收。
统一缓存1520中的被填充了数据的缓存单元,被用流来标记。图15展示了例如3个流描述符。每个流描述符代表一个流。参看图15,流描述符1所代表的流包括缓存单元1522、缓存单元1524与缓存单元1526;流描述符2所代表的流包括缓存单元1527与缓存单元1528;流描述符3所代表的流包括缓存单元1529。
组装单元1530尽力将属于相同流的缓存单元的索引,组装到相同的虚拟页,或相同的NVM组的虚拟页;将属于不同流的缓存单元的索引,组装到来自不同NVM组的虚拟页。例如,组装单元1530将流描述符1所代表的缓存单元的索引,组装到来自NVM组1的虚拟页;将流描述符2所代表的缓存单元的索引,组装到来自NVM组2的虚拟页;将流描述符3所代表的缓存单元的索引,组装到来自NVM组3的虚拟页;以及可选地将其他缓存单元的索引,组装到来自NVM组0的虚拟页。
响应于组装后的虚拟页被写入NVM芯片,虚拟页所承载的多个缓存单元被释放。以及还更新对应的FTL表条目,将FTL表条目中原本记录的被释放的缓存单元所属的缓存容器的索引,更新为虚拟页中同缓存单元关联的指示NVM芯片的数据单元的物理地址。从而,直到将FTL表条目中记录的缓存容器索引修改为指示NVM芯片的数据单元的物理地址之前,FTL表条目记录的始终是缓存容器索引,这意味着在这期间,若接收到访问这些FTL表条目的读命令或写命令,将命中统一缓存,并用缓存容器索引记录的缓存单元来响应读命令或写命令。
可选地,主机提供的写命令指示了流。依然可选地,根据中国专利申请201811123110.1、201810355427.1或者201610169011.1中提供的区分并标记流的方案来指示缓存单元所容纳的数据所属的流。
图16A展示了根据本申请又一实施例的为虚拟页组装缓存单元的流程图。也参看图15,例如由组装单元1530来实施图16A展示的流程。
组装单元1530获取承载了要写入到NVM芯片的数据的缓存单元的索引(1610)。组装单元1530例如接收消息,消息中指示了要写入到NVM芯片的数据的缓存单元的索引。可选地,消息中指示一个或多个缓存单元的索引。
组装单元1530还获取消息中指示的流标识符,或者根据缓存单元索引获取流标识符,以及获取同流标识符对应的NVM组(1620)。可选地,消息中指示的一个或多个缓存单元索引,所指示的各缓存单元所承载的数据,属于相同的NVM组。
根据NVM组,获取由该NVM组提供的虚拟页的可用编程单元(1630)。该NVM组提供的虚拟页作为当前组装缓存单元的目标。相关联地记录可用编程单元的物理地址与获取的缓存单元索引(1640)。
响应于虚拟页的编程单元的未被分配缓存单元的数据帧数量小等于阈值(例如0或正整数),根据虚拟页产生编程命令以向各编程单元写入数据。
图16B展示了根据本申请在一实施例的为虚拟页组装缓存单元的流程图。也参看图15,例如由组装单元1530来实施图16B展示的流程。
组装单元1530获取承载了要写入到NVM芯片的数据的缓存单元的索引(1640)。组装单元1530还获取消息中指示的流标识符,或者根据缓存单元索引获取流标识符,以及获取同流标识符对应的NVM组(1642)。根据获取的NVM组,获取由该NVM组提供给待组装的虚拟页的所有并行单元作为候选并行单元(1644)。
确定消息中指示的缓存单元索引的数量是否小于阈值(1650)。若消息中指示的缓存单元索引数量小于阈值(1650),进一步在候选的并行单元中寻找是否存在这样的并行单元,该并行单元提供给虚拟页的编程单元具有未被完整填充的读取单元(1660)。
若候选的并行单元中存在其提供给虚拟页的编程单元具有未被完整填充的读取单元的并行单元(1660),选取其提供给虚拟页的编程单元具有未被完整填充的读取单元的并行单元(1670),作为组装缓存单元的目标。若候选的并行单元中不存在其提供给虚拟页的编程单元具有未被完整填充的读取单元的并行单元,选择为虚拟页提供编程单元的并行单元之一(1665),作为组装缓存单元的目标。在步骤1665所选择的并行单元,是具有提供给虚拟页的可用编程单元的并行单元。
在步骤1665,例如,从为虚拟页提供可用编程单元的多个候选并行单元中轮流或随机选择并行单元。或者,在步骤1665,以优先填满编程单元为目标而选择并行单元,或者以尽量平均向各个并行单元分配缓存单元索引为目标而选择并行单元。
以及在步骤1650,若消息中指示的缓存单元索引数量不小于阈值,选取为虚拟页提供可用编程单元的候选并行单元之一(1665),作为组装缓存单元的目标。所选择的并行单元,是具有提供给虚拟页的可容纳消息指示的缓存单元索引数量的可用编程单元的候选并行单元。
从所选取的并行单元中获取读取单元(1680),所获取的读取单元能容纳消息指示的缓存单元的数据。以及相关联地记录所获取的读取单元的物理地址与获取的缓存单元索引(1690)。
根据本申请的实施例还提供了一种存储设备,包括控制器与非易失存储器芯片,其中,控制器执行本申请实施例提供的任意一种处理方法。
根据本申请的实施例还提供了一种存储在可读介质上的程序,当被存储设备的控制器运行时,使得存储设备执行根据本申请实施例提供的任意一种处理方法。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

Claims (17)

1.一种应用缓存的方法,其特征在于,包括:
将具有第一流标识符的缓存单元关联到第一虚拟页;其中被填充了数据的缓存单元具有流标识符;
根据第一虚拟页提供的可用编程单元的物理地址与缓存单元的索引,将从缓存单元获取的数据写入NVM芯片;第一虚拟页由NVM组提供;
NVM芯片被分为多个NVM组,每个NVM组包括一个或多个并行单元;任何并行单元在同一时刻至多属于一个NVM组;第一虚拟页代表来自一个或多个并行单元的编程单元,属于同一虚拟页的多个并行单元能够被并行操作。
2.如权利要求1所述的方法,将属于相同流的缓存单元,关联到相同的虚拟页;将属于不同流的缓存单元,组装到来自不同NVM组的虚拟页。
3.如权利要求1所述的方法,将具有第二流标识符的缓存单元关联到第二虚拟页。
4.如权利要求1所述的方法,第一虚拟页与第二虚拟页分别位于不同的NVM组。
5.如权利要求1或2所述的方法,还包括:
获取第一流标识符;根据第一流标识符得到同第一流标识符对应的第一NVM组;
将具有第一流标识符的缓存单元关联到位于第一NVM组的第一虚拟页。
6.如权利要求1所述的方法,接收消息,获取消息中指示的流标识符,获取同流标识符对应的NVM组。
7.如权利要求1所述的方法,接收消息,所述消息中指示一个或多个缓存单元。
8.如权利要求7所述的方法,若消息中指示的缓存单元数量小于阈值,选取虚拟页中未被完整填充的读取单元,作为关联缓存单元的目标。
9.如权利要求7所述的方法,若消息中指示的缓存单元数量小于阈值,寻找具有未被完整填充的读取单元的第一并行单元,选取所述第一并行单元中未被完整填充的读取单元,作为关联缓存单元的目标。
10.如权利要求9所述的方法,若不存在具有未被完整填充的读取单元的并行单元,选择虚拟页的并行单元之一,作为组装缓存单元的目标。
11.如权利要求10所述的方法,通过选择具有提供给虚拟页的可用编程单元的并行单元,来选择虚拟页的并行单元之一。
12.如权利要求10所述的方法,通过从提供虚拟页的多个并行单元中轮流或随机选择并行单元,来选择虚拟页的并行单元之一。
13.如权利要求10所述的方法,以优先填满编程单元为目标而选择并行单元,或者以尽量平均向各个并行单元分配缓存单元索引为目标而选择并行单元,来选择虚拟页的并行单元之一。
14.如权利要求10所述的方法,选择具有提供给虚拟页的可容纳消息指示的缓存单元索引数量的可用编程单元的并行单元,来选择虚拟页的并行单元之一。
15.如权利要求9-14任一项所述的方法,从所选取的并行单元中获取读取单元,所获取的读取单元能容纳消息指示的缓存单元的数据。
16.如权利要求7所述的方法,若消息中指示的缓存单元数量不小于阈值,选取虚拟页的具有完全未被填充的第一读取单元的并行单元,将所述第一读取单元作为组装缓存单元的目标。
17.一种存储设备,包括控制部件与非易失存储介质,所述控制部件用于执行根据权利要求1-16之一所述的应用缓存的方法。
CN201811203693.9A 2018-09-30 2018-10-16 基于统一缓存架构的多流存储设备 Active CN110968520B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201811154413X 2018-09-30
CN201811154413 2018-09-30

Publications (2)

Publication Number Publication Date
CN110968520A CN110968520A (zh) 2020-04-07
CN110968520B true CN110968520B (zh) 2024-04-12

Family

ID=70028399

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811203693.9A Active CN110968520B (zh) 2018-09-30 2018-10-16 基于统一缓存架构的多流存储设备

Country Status (1)

Country Link
CN (1) CN110968520B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116048428B (zh) * 2023-03-30 2023-08-29 北京特纳飞电子技术有限公司 数据请求处理方法、装置、存储设备和可读存储介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11143776A (ja) * 1997-11-10 1999-05-28 Sharp Corp 情報処理装置
US6470437B1 (en) * 1999-12-17 2002-10-22 Hewlett-Packard Company Updating and invalidating store data and removing stale cache lines in a prevalidated tag cache design
WO2016002325A1 (ja) * 2014-07-04 2016-01-07 日本電気株式会社 情報処理システム、情報処理方法、記憶制御装置およびその制御方法と制御プログラム
CN106815152A (zh) * 2016-12-27 2017-06-09 华中科技大学 一种优化页级闪存转换层的方法
US9934150B1 (en) * 2015-10-21 2018-04-03 Marvell International Ltd. Data caching circuit and method
CN108228470A (zh) * 2016-12-21 2018-06-29 北京忆恒创源科技有限公司 一种处理向nvm写入数据的写命令的方法和设备
CN108536623A (zh) * 2018-04-19 2018-09-14 深圳市得微电子有限责任公司 多通道NAND Flash控制器及移动存储设备

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10579560B2 (en) * 2016-08-31 2020-03-03 Futurewei Technologies, Inc. Transaction-based hybrid memory

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11143776A (ja) * 1997-11-10 1999-05-28 Sharp Corp 情報処理装置
US6470437B1 (en) * 1999-12-17 2002-10-22 Hewlett-Packard Company Updating and invalidating store data and removing stale cache lines in a prevalidated tag cache design
WO2016002325A1 (ja) * 2014-07-04 2016-01-07 日本電気株式会社 情報処理システム、情報処理方法、記憶制御装置およびその制御方法と制御プログラム
US9934150B1 (en) * 2015-10-21 2018-04-03 Marvell International Ltd. Data caching circuit and method
CN108228470A (zh) * 2016-12-21 2018-06-29 北京忆恒创源科技有限公司 一种处理向nvm写入数据的写命令的方法和设备
CN106815152A (zh) * 2016-12-27 2017-06-09 华中科技大学 一种优化页级闪存转换层的方法
CN108536623A (zh) * 2018-04-19 2018-09-14 深圳市得微电子有限责任公司 多通道NAND Flash控制器及移动存储设备

Also Published As

Publication number Publication date
CN110968520A (zh) 2020-04-07

Similar Documents

Publication Publication Date Title
US10761977B2 (en) Memory system and non-transitory computer readable recording medium
US11263149B2 (en) Cache management of logical-physical translation metadata
CN108595349B (zh) 大容量存储设备的地址转换方法与装置
US10997080B1 (en) Method and system for address table cache management based on correlation metric of first logical address and second logical address, wherein the correlation metric is incremented and decremented based on receive order of the first logical address and the second logical address
US20150186259A1 (en) Method and apparatus for storing data in non-volatile memory
US20130103893A1 (en) System comprising storage device and related methods of operation
KR102430198B1 (ko) 플래시 저장 장치의 어드레스 매핑 테이블 정리 방법
CN108614668B (zh) 基于kv模型的数据访问方法与固态存储设备
JP7030942B2 (ja) メモリ装置及びその制御方法
US12072797B2 (en) Memory system and non-transitory computer readable recording medium
CN109947669A (zh) Kv存储设备的地址转换方法与系统
CN108614671B (zh) 基于命名空间的键-数据访问方法与固态存储设备
CN110968527B (zh) Ftl提供的缓存
CN108628762B (zh) 一种固态存储设备及其处理io命令的方法
CN110968520B (zh) 基于统一缓存架构的多流存储设备
CN111290974B (zh) 用于存储设备的缓存淘汰方法与存储设备
CN110096452B (zh) 非易失随机访问存储器及其提供方法
CN111290975A (zh) 使用统一缓存处理读命令与预读命令的方法及其存储设备
CN112148626A (zh) 压缩数据的存储方法及其存储设备
CN110968528B (zh) 应用统一缓存架构为非易失存储介质组装数据
CN109960667B (zh) 大容量固态存储设备的地址转换方法与装置
CN109840219B (zh) 大容量固态存储设备的地址转换系统与方法
CN110688056B (zh) Nvm组的存储介质替换
CN110968525B (zh) Ftl提供的缓存、其优化方法与存储设备
CN108614669B (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
CB02 Change of applicant information

Address after: 100192 room A302, building B-2, Dongsheng Science Park, Zhongguancun, 66 xixiaokou Road, Haidian District, Beijing

Applicant after: Beijing yihengchuangyuan Technology Co.,Ltd.

Address before: 100192 room A302, building B-2, Dongsheng Science Park, Zhongguancun, 66 xixiaokou Road, Haidian District, Beijing

Applicant before: BEIJING MEMBLAZE TECHNOLOGY Co.,Ltd.

CB02 Change of applicant information
GR01 Patent grant
GR01 Patent grant