CN112947845A - 热数据识别方法及其存储设备 - Google Patents
热数据识别方法及其存储设备 Download PDFInfo
- Publication number
- CN112947845A CN112947845A CN201911266829.5A CN201911266829A CN112947845A CN 112947845 A CN112947845 A CN 112947845A CN 201911266829 A CN201911266829 A CN 201911266829A CN 112947845 A CN112947845 A CN 112947845A
- Authority
- CN
- China
- Prior art keywords
- entry
- command
- hot data
- data table
- address
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0616—Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/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]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
提供了热数据识别方法及其存储设备。所提供的热数据识别与处理方法,包括:获取IO命令访问的地址;若所述IO命令访问的地址命中了热数据表的第一条目,访问所述第一条目对应的缓存单元来处理所述IO命令,以及将所述第一条目设置到所述热数据表的前部;以及淘汰所述热数据表的后部的条目。
Description
技术领域
本申请涉及存储技术,具体地,涉及在存储设备中识别接收的IO命令访问的热数据并优化对热数据的处理。
背景技术
图1展示了存储设备的框图。存储设备102同主机相耦合,用于为主机提供存储能力。主机同固态存储设备102之间可通过多种方式相耦合,耦合方式包括但不限于通过例如SATA(Serial Advanced Technology Attachment,串行高级技术附件)、SCSI(SmallComputer System Interface,小型计算机系统接口)、SAS(Serial Attached SCSI,串行连接SCSI)、IDE(Integrated Drive Electronics,集成驱动器电子)、USB(Universal SerialBus,通用串行总线)、PCIE(Peripheral Component Interconnect Express,PCIe,高速外围组件互联)、NVMe(NVM Express,高速非易失存储)、UFS(Universal Flash Storage)、eMMC(embedded MMC(MultiMediaCard))、以太网、光纤通道、无线通信网络等连接主机与存储设备102。主机可以是能够通过上述方式同存储设备相通信的信息处理设备,例如,个人计算机、平板电脑、服务器、便携式计算机、网络交换机、路由器、蜂窝电话、个人数字助理等。存储设备102包括接口103、控制部件104、一个或多个NVM芯片105以及DRAM(DynamicRandom 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”等。
NVM芯片的寿命与所存储数据的可靠性同被其读/写的次数相关。从NVM芯片读出数据会产生“读扰动(ReadDisturb)”效应,读扰动效应被积累后将升高被读取的存储单元的误码率。NVM芯片被写入数据前需要先执行擦除操作,而NVM芯片所能经历的擦除-写入次数是有限的,该次数通常代表了NVM芯片的寿命。
同SRAM/DRAM等存储介质相比,读/写NVM芯片所需的时间更长,功耗也更大。
主机运行的应用对数据的访问具有多样性的特征。提出了高速缓存(Cache)技术来用高性能的存储介质临时存储近期可能被访问的数据以提升存储系统的性能。例如,使用SRAM/DRAM等存储介质作为NVM存储介质的高速缓存。
发明内容
存储设备的存储空间相对于高速缓存能提供的容量,往往非常大。从而相对过小的高速缓存带来了极低的高速缓存命中率,因而传统的高速缓存技术在大容量存储设备中对性能的提升有限。需要开发适合大容量固态存储设备的高速缓存技术。
并且存储设备的控制部件的处理能力严重受限。由于功耗与成本的限制,控制部件无法高速处理复杂的高速缓存管理算法,而固态存储设备的IO命令的处理延迟又通常在几微秒~几十微秒量级,高速缓存的使用又不能显著影响IO命令的处理延迟。因而如何在有限的处理能力上低延迟地实现对待缓存的数据的识别与缓存管理成为亟待解决的问题。
根据本申请的实施例,提出了热数据识别技术,热数据相对于其他数据有更大的几率被主机在接下来的时间内访问,从而适于被缓存。并且,根据本申请的实施例还提出了对热数据的缓存管理技术。通过将热数据缓存到存储设备的由SRAM/DRAM提供的缓存单元,将主机对热数据的访问从访问NVM芯片改为访问缓存单元,降低了IO命令处理的延时,提高了存储设备的性能,同时减少了对NVM芯片的读写次数,延长了NVM芯片的寿命,降低了NVM芯片存储的数据出错的几率,同时降低了存储设备的功耗。
根据本申请的第一方面,提供了根据本申请第一方面的第一热数据识别与处理方法,包括:获取IO命令访问的地址;若所述IO命令访问的地址命中了热数据表的第一条目,访问所述第一条目对应的缓存单元来处理所述IO命令,以及将所述第一条目设置到所述热数据表的前部;以及淘汰所述热数据表的后部的条目。
根据本申请第一方面的第一热数据识别与处理方法,提供了根据本申请第一方面的第二热数据识别与处理方法,还包括:若所述IO命令访问的地址未命中热数据表的任何条目,访问NVM芯片来处理所述IO命令。
根据本申请第一方面的第一或第二热数据识别与处理方法,提供了根据本申请第一方面的第三热数据识别与处理方法,其中若所述IO命令是读命令,且所述IO命令访问的地址命中了热数据表的第一条目,从所述第一条目对应的缓存单元搬移数据到主机作为对所述读命令的响应。
根据本申请第一方面的第三热数据识别与处理方法,提供了根据本申请第一方面的第四热数据识别与处理方法,其中若所述IO命令是写命令,且所述IO命令访问的地址命中了热数据表的第一条目,将所述写命令待写入的数据搬移到所述第一条目对应的缓存单元,以及将所述第一条目的类型设置为修改(m)。
根据本申请第一方面的第一至第四热数据识别与处理方法之一,提供了根据本申请第一方面的第五热数据识别与处理方法,其中若所述IO命令是读命令,且所述IO命令访问的地址未命中热数据表的任何条目,根据所述读命令访问的地址访问NVM芯片以读出所述读命令要访问的数据,并将所述读命令要访问的数据提供给主机。
根据本申请第一方面的第五热数据识别与处理方法,提供了根据本申请第一方面的第六热数据识别与处理方法,还包括:若所述IO命令是写命令,且所述IO命令访问的地址未命中热数据表的任何条目,将所述写命令要写入的数据写入NVM芯片。
根据本申请第一方面的第一至第六热数据识别与处理方法之一,提供了根据本申请第一方面的第七热数据识别与处理方法,还包括:若所述IO命令访问的地址未命中热数据表的任何条目,进一步识别所述IO命令访问的地址是否命中访问历史表;若所述IO命令访问的地址命中访问历史表的第二条目,递增所述第二条目的计数值;若所述第二条目的计数值达到阈值,生成第三条目添加到所述热数据表的前部;获取可用的缓存单元;其中所述第三条目记录了所述IO命令访问的地址,以及所述第三条目还关联于所述可用的缓存单元;访问所述可用的缓存单元来处理所述IO命令。
根据本申请第一方面的第七热数据识别与处理方法,提供了根据本申请第一方面的第八热数据识别与处理方法,还包括:若所述IO命令是读命令,在所述第三条目中记录类型为共享(s);若所述IO命令是写命令,在所述第三条目中记录类型为修改(m)。
根据本申请第一方面的第七或第八热数据识别与处理方法,提供了根据本申请第一方面的第九热数据识别与处理方法,还包括:从所述访问历史表中删除所述第二条目;或者将所述第二条目的计数值修改为指示被删除的指定值。
根据本申请第一方面的第七至第九热数据识别与处理方法之一,提供了根据本申请第一方面的第十热数据识别与处理方法,其中若所述IO命令是读命令,将根据所述读命令的地址从NVM芯片读出的数据存储在所述可用的缓存单元;从所述可用的缓存单元搬移数据到主机以响应所述读命令。
根据本申请第一方面的第七至第十热数据识别与处理方法之一,提供了根据本申请第一方面的第十一热数据识别与处理方法,其中若所述IO命令是写命令,将所述写命令待写入的数据存储在所述可用的缓存单元。
根据本申请第一方面的第七至第十一热数据识别与处理方法之一,提供了根据本申请第一方面的第十二热数据识别与处理方法,还包括:若所述IO命令访问的地址未命中访问历史表的任何条目,生成第四条目添加到所述访问历史表的前部;其中所述第四条目记录了所述IO命令访问的地址以及初始的计数值。
根据本申请第一方面的第一至第十二热数据识别与处理方法之一,提供了根据本申请第一方面的第十三热数据识别与处理方法,还包括:从所述热数据表的后部获取待淘汰的条目;若所述待淘汰的条目的类型为修改(m),将所述待淘汰的条目对应的缓存单元的数据写入所述NVM芯片,将所述待淘汰的条目从所述热数据表移除;若所述待淘汰的条目的类型为共享(s),将所述待淘汰的条目从所述热数据表移除并且丢弃所述待淘汰的条目对应的缓存单元的数据。
根据本申请第一方面的第七至第十三热数据识别与处理方法之一,提供了根据本申请第一方面的第十四热数据识别与处理方法,还包括:从所述访问历史表的后部移除条目。
根据本申请的第二方面,提供了根据本申请第二方面的第一存储设备,包括控制部件、DRAM与NVM芯片,所述控制部件执行根据本申请第一方面的第一至第十四热数据识别与处理方法之一。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1是现有技术中存储设备的框图;
图2A展示了根据本申请实施例的存储设备的控制部件的框图;
图2B展示了根据本申请实施例的访问历史表与热数据表的示意图;
图3展示了根据本申请实施例的操作访问历史表的流程图;
图4展示了根据本申请实施例操作热数据表并提供缓存的流程图;以及
图5展示了根据本申请的实施例处理IO命令的流程图。
具体实施方式
下面结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
图2A展示了根据本申请实施例的存储设备的控制部件的框图。
控制部件104包括主机接口210、命令处理单元240以及介质接口控制器220。
控制部件104还耦合到多个缓存单元与NVM芯片。多个缓存单元由例如DRAM提供。可选地,多个缓存单元被实施于控制部件104内部,与控制部件104属于同一颗芯片。
主机接口210从主机获取主机提供的命令(例如,IO命令),将命令提供给命令处理单元240。命令处理单元240识别命令的含义,并做出相应处理,以及操作介质接口控制器220访问NVM芯片。
根据本申请的实施例,命令处理单元240还使用访问历史表220与热数据表230来识别热数据并优化对热数据的处理。由例如SRAM或DRAM存储访问历史表220与热数据表230。
访问历史表220包括多个条目,每个条目记录了地址及其被访问的次数。访问历史表220的条目中记录的地址是例如IO命令访问的地址。
热数据表230包括多个条目,每个条目记录了地址、类型与缓存单元索引。热数据表230的条目中记录的地址是例如IO命令访问的地址,类型指示该条目对应的缓存单元的数据是共享的(S)还是被修改的(M),缓存单元索引指示该条目对应的缓存单元。可选地,热数据表230的条目不记录缓存单元索引,而是依据条目在热数据表230中的位置暗示其关联的缓存单元索引。例如,热数据表230的第i个条目关联的缓存单元索引为i。
可以理解地,主机接口210接收的IO命令可能访问可变长度的地址范围。作为举例,IO命令访问的地址范围是例如512字节、4KB或其他尺寸大小存储单元的整数倍。命令处理单元将IO命令拆分为多个512字节、4KB或其他尺寸大小的子命令,从而每个子命令访问相同大小的由单一存储单元所代表的地址范围。根据本申请的实施例,访问历史表的每个条目与热数据表的每个条目的地址,也代表单一存储单元的地址范围。以及为了简便的目的,下文中如无特别提及,IO命令访问的地址范围也为单一存储单元的地址范围。
图2B展示了根据本申请实施例的访问历史表与热数据表的示意图。
访问历史表保存一段时间之内的主机访问存储设备的IO命令的历史。命令处理单元240响应于收到IO命令,从IO命令中提取其访问的地址,并填充到访问历史表。访问历史表的条目中记录的地址所对应的数据无须被保存在缓存单元中。命令处理单元240除了将根据IO命令填充访问历史表,还按正常的流程处理IO命令,例如向NVM芯片写入IO命令指示的数据,或从NVM芯片读出数据。
参看图2B,其第一个条目(m,1)代表了地址m被访问了1次,而其中的条目(p,k)代表了地址p被访问了k次。
根据本申请的实施例,处理单元240为了填充访问历史表,从收到的IO命令中获取被访问的地址(记为a)。用地址(a)查找访问历史表,如果在访问历史表中找到地址为a的条目,则将该条目的计数字段的值加1。如果在访问历史表中没有找到地址为a的条目,则新建一个条目,其地址为a而计数值为1,并将该新建的条目插入访问历史表的前部。从而访问历史表中,越靠近前部的条目是越晚被插入访问历史表的条目。例外在于,当因为访问历史表中存在具有同IO命令访问的地址相同地址的条目时,仅递增该条目的计数值,而不调整该条目在访问历史表中的位置。
访问历史表的空间是有限的,其中记录例如数百、数千个条目。可选地,依据存储设备使用的缓存单元的数量设置热数据表与访问历史表的条目数量。例如,热数据表的数量同缓存单元的数量相同或基本相同,而访问历史表的条目数量是热数据表的条目数量的数倍、数十倍或数百倍。
由于访问历史表的空间有限,一些条目需要被从访问历史表中淘汰以释放出空间容纳新的条目。根据本申请的实施例,从访问历史表的后部获取条目并删除以淘汰条目。例如,为淘汰条目,删除访问历史表最后部的条目。可选地,响应于访问历史表已满且有新的条目要插入访问历史表而发起淘汰条目的过程。依然可选地,周期性地或在指定情况下,发起淘汰条目的过程。
从而从访问历史表的前部向访问历史表添加条目,而从其后部淘汰条目。条目从被添加到访问历史表到其被淘汰的过程,是条目在访问历史表中的留存时间。在条目的留存时间内,若有其他IO命令访问了条目的地址,则条目的计数值被递增(加1)。
通过使用访问历史表,以及从访问历史表的前部向访问历史表添加条目,而从其后部淘汰条目的方式,无须为每个条目记录时间戳,也无须比较条目的地址被访问的时间先后,从而以简单的方式获得了一段时间内条目被访问的次数。该次数被作为根据本申请实施例识别是否为热数据的标志。
进一步地,也无须在访问历史表中搬移条目,以进一步简化热数据识别的操作。
可选地,用FIFO(先进先出)队列提供访问历史表,新条目被添加到FIFO队列的头部,而从FIFO队列的尾部获取淘汰的条目。并且该队列的每个条目都可被访问以对被命中条目的计数字段递增。
根据本申请的实施例,若条目在其被记录在访问历史表的留存时间内,处理单元240收到一个或多个访问该条目记录的地址的IO命令,处理单元240累加该条目的计数字段。并且处理单元240检查累加后的计数值是否达到指定阈值。将其计数字达到指定阈值的条目识别为关联于热数据。
在图2B的例子中,指定阈值为k。处理单元240收到访问地址p的IO命令,并根据地址p使访问历史表中的条目(p,k)计数字段递增,递增后的计数字段值已达到k,从而将地址p关联的数据识别为热数据。
根据本申请的实施例,相应于将条目(p,k)识别为关联与热数据,处理单元240将条目(p,k)从访问历史表中取出,并根据取出的该条目(p,k)生成热数据表的条目并填入热数据表。
将条目(p,k)从访问历史表中取出,使得访问历史表中出现了空缺的条目,将该空缺条目之前的所有条目后移以填满空缺。可选地,为进一步减少处理单元操作访问历史表的负担,条目(p,k)被留在访问历史表中,并同其他条目一样被后续处理(例如淘汰)。进一步地,被留在访问历史表中的条目(p,k)的计数字段被设置为特殊值(例如-1)以使其同其他条目有所区分。
同访问历史表的操作方式类似,新生成的热数据表的条目被填入热数据表的前部。由于热数据表的空间有限,一些条目需要被从热数据表中淘汰以释放出空间容纳新的条目。根据本申请的实施例,从热数据表的后部获取条目并删除以淘汰条目。
从而从热数据表的前部向热数据表添加条目,而从其后部淘汰条目。条目从被添加到热数据表到其被淘汰的过程,是条目在热数据表中的留存时间。热数据表中的条目的地址所关联的数据,是根据本申请实施例所识别出的热数据。热数据表的最前部条目关联的数据热度最高,因为其最近刚被访问过,热数据表的最后部条目关联的数据热度最低,因为有一段时间该数据没有被访问过。
根据本申请的实施例,响应于收到IO命令c(访问地址p),从访问历史表中取出的条目(p,k),生成热数据表的条目。生成的热数据表条目中记录了地址p(来自从访问历史表取出的条目(p,k),或IO命令c)。根据命令c是读命令还是写命令而生成热数据表条目的类型字段。若命令c是读命令,生成的热数据表的条目的类型字段被设置为共享(s);若命令c是写命令,类型字段被设置为修改(m)。类型为修改(m)的条目对应的数据在变冷后需要被写入NVM芯片。类型为共享(s)的条目对应的数据只是NVM芯片中存储的数据的一个副本,当对应的数据变冷时,不需要被写入NVM芯片。
生成的热数据表条目的类型缓存单元索引字段记录了同该条目关联的缓存单元的索引或地址。除了将生成的热数据表的条目填入热数据表的最前部,还将命令c要访问的数据填充到同该条目关联的缓存单元(由该条目的缓存单元索引所指示)。如果命令c是写命令,从该缓存单元承载主机用命令c向存储设备写入的数据;如果命令c是读命令,从NVM芯片读出命令c要读取的数据并存储在该缓存单元,随后在将该缓存单元的数据搬移到主机。
根据本申请的实施例,热数据表还发挥了缓存的作用。命令处理单元240响应于收到IO命令,先查询热数据表,在热数据表寻找记录了该IO命令所访问的地址的条目。若热数据表中存在记录了该IO命令所访问的地址的条目,意味着IO命令命中了条目或缓存单元。根据IO命令访问被命中的缓存单元。若IO命令是写命令,将主机要写入存储设备的数据写入被命中的缓存单元,并将被命中条目的类型设置为修改(m)。若IO命令是读命令,将被命中的缓存单元中的数据提供给主机,并且不修改将被命中条目的类型。向缓存单元写入数据或从中读出数据比访问NVM芯片更快,因而通过查询热数据表查询缓存单元是否命中,使得命中了缓存单元的IO命令的处理被加速。
并且,响应于在热数据表中找到了记录IO命令所访问的地址的条目,还将该条目在热数据表中的位置前移,以反映该条目对应的数据刚被访问过。例如,将该条目前移到热数据表的最前部。
热数据表的条目数量同缓存单元数量一致,因而条目的数量不多。热数据表被条目填满后,还需要淘汰条目及其关联的缓存单元。例如,在热数据表满或临近满时,发起对热数据表的条目的淘汰,以确保热数据表有可用的空间容纳新条目。作为又一个例子,在热数据表满或临近满时,响应于有新条目要加入到热数据表,而发起对热数据表的条目的淘汰。
为从热数据表中淘汰条目,选取热数据表后部或最后部的条目,该条目所关联的数据是热数据表所关联的所有数据中热度最低的数据。对所选取的条目,若其类型是共享(s),表明NVM芯片上存储的数据同该条目关联的缓存单元中的数据一致,因而删除该条目(从热数据表移除)并丢弃该缓存单元中的数据,而无须将该数据写入NVM芯片;若所选取条目的类型是修改(m),表明NVM芯片上存储的数据同该条目关联的缓存单元中的数据不一致,因而将该条目关联的缓存单元的数据写入NVM芯片,再删除该条目。
图3展示了根据本申请实施例的操作访问历史表的流程图。
命令处理单元获取了IO命令(310),从该IO命令中提取其所访问的地址,根据该地址查询访问历史表,以确定是否命中了访问历史表(320)。若访问历史表中存在记录了IO命令所访问的地址的条目,则称IO命令的地址命中了访问历史表。
若IO命令访问的地址命中了条目i(320),将被命中的条目i的计数字段递增(加1)(330)。可选地,不改变条目i在访问历史表中的位置。以及若条目i的递增后的计数值达到了指定阈值(340),根据该IO命令与条目i向热数据表添加条目,并从访问历史表移除条目i(350)。其中根据该IO命令访问的地址以及该IO命令是读命令还是写命令,生成向热数据表添加的条目。还为该IO命令获取可用的缓存单元。例如,分配可用的缓存单元,并将分配的缓存单元的索引记录在所生成的热数据表的条目中。作为又一个例子,条目被添加到热数据表的位置暗示了可用的缓存单元。
若IO命令是读命令,所生成的热数据表条目的类型指示共享(s)。根据IO命令访问的地址从NVM芯片读出数据,并将读出数据存储在该所生成的热数据表条目所指示的缓存单元(370)。以及从该缓存单元将数据搬移到主机以响应读命令。若IO命令是写命令,所生成的热数据表条目的类型指示修改(m)。将IO命令要写入的数据写入该所生成的热数据表条目所指示的缓存单元(380)。以及从该缓存单元将数据写入NVM芯片。
参看图3,回到步骤320,若IO命令的地址未命中访问历史表,则根据IO命令访问的地址生成新条目,新条目指示了该IO命令的地址与初始的计数值(例如1),将新条目添加到访问历史表的最前部(322)。
在需要的时候,还从访问历史表的最后部淘汰旧条目(324)。
返回步骤340,若条目i的递增后的计数值未达到指定阈值,则访问NVM芯片来处理所述读命令。根据本申请的实施例,不使用关联于热数据表的缓存单元来处理该IO命令。若IO命令是读命令,根据IO命令访问的地址从NVM芯片读出数据并提供给主机。若IO命令是写命令,将IO命令要写入的数据写入NVM芯片。
图4展示了根据本申请实施例操作热数据表并提供缓存的流程图。
命令处理单元获取了IO命令(410),从该IO命令中提取其所访问的地址,根据该地址查询访问历史表,以确定是否命中了热数据表(420)。若热数据表中存在记录了IO命令所访问的地址的条目,则称IO命令的地址命中了热数据表。
若IO命令访问的地址命中了热数据表的条目i(420),意味着已经存在为IO命令访问的地址分配的缓存单元,那么根据IO命令是读命令还是写命令(430)来确定使用已分配的缓存单元的方式。
若IO命令是读命令,从被命中的条目i所对应的缓存单元读出数据(432),将读出数据搬移到主机作为对读命令的响应,而无须根据读命令的地址访问NVM芯片。以及也无须改变条目i的类型字段。
若IO命令是写命令,将写命令要写入的数据从主机搬移到被命中的条目i所对应的缓存单元(434),以及将条目i的类型字段设置为修改(m)。被写入条目i对应的缓存单元的数据也无须被立即写入NVM芯片,而是在该数据变冷后,条目i要被从热数据表淘汰时,才被写入NVM芯片。
还将被命中的条目i设置到热数据表的前部(440)。将条目i设置在热数据表的例如最前部,从而条目i将在热数据表中停留更长的时间,并期待其被再次命中。
在需要的时候,还从热数据表的最后部淘汰条目(450)。获取待淘汰的条目的类型,若待淘汰的条目的类型是修改(m)(452),将该待淘汰条目对应的缓存单元的数据写入NVM芯片(454),以及将该待淘汰条目从热数据表中移除(456)。若待淘汰的条目的类型是共享(s)(452),直接修改该条目对应的缓存单元的数据而不将该数据写入NVM芯片,以及将该待淘汰条目从热数据表中移除(456)。
继续参看图4,返回步骤420,若IO命令访问的地址未命中热数据表的任何条目,则不使用关联于热数据表的缓存单元来处理该IO命令。若IO命令是读命令(422),根据IO命令访问的地址从NVM芯片读出数据并提供给主机(424)。若IO命令是写命令(422),将IO命令要写入的数据写入NVM芯片(426)。
图5展示了根据本申请的实施例处理IO命令的流程图。
命令处理单元获取了IO命令(510)。根据IO命令访问的地址确定是否命中了热数据表(520)。
若IO命令访问的地址命中了热数据表的条目i(520),那么访问条目i对应的缓存单元来处理IO命令(530)。若IO命令是读命令,从被命中的条目i所对应的缓存单元读出数据,将读出数据搬移到主机作为对读命令的响应。若IO命令是写命令,将写命令要写入的数据从主机搬移到被命中的条目i所对应的缓存单元,以及将条目i的类型字段设置为修改(m)。还将被命中的条目i设置到热数据表的前部(540)。将条目i设置在热数据表的例如最前部,从而条目i将在热数据表中停留更长的时间,并期待其被再次命中。
在需要的时候,还从热数据表的最后部淘汰条目(590)。获取待淘汰的条目的类型,若待淘汰的条目的类型是修改(m)(592),将该待淘汰条目对应的缓存单元的数据写入NVM芯片(594),以及将该待淘汰条目从热数据表中移除(596)。若待淘汰的条目的类型是共享(s)(592),直接修改该条目对应的缓存单元的数据而不将该数据写入NVM芯片,以及将该待淘汰条目从热数据表中移除(596)。
继续参看图5,返回步骤520,若IO命令访问的地址未命中热数据表的任何条目,则不使用关联于热数据表的缓存单元来处理该IO命令,而是例如访问NVM芯片来处理IO命令(550)。若IO命令是读命令,根据IO命令访问的地址从NVM芯片读出数据并提供给主机。若IO命令是写命令,将IO命令要写入的数据写入NVM芯片。
在步骤520,若IO命令访问的地址未命中热数据表的任何条目,还从该IO命令中提取其所访问的地址,根据该地址查询访问历史表,以确定是否命中了访问历史表(560)。
若IO命令访问的地址命中了访问历史表条目hi(560),将被命中的条目hi的计数字段递增(加1)(570)。以及若条目hi的递增后的计数值达到了指定阈值(575),根据该IO命令与条目hi向热数据表添加新条目,并从访问历史表移除条目hi(580)。还为该IO命令获取可用的缓存单元。添加到热数据表的新条目关联于该可用的缓存单元。访问该可用的缓存单元来处理该IO命令。在步骤550,同访问NVM芯片关联的数据被搬移到该可用的缓存单元。若IO命令是读命令,根据IO命令访问的地址从NVM芯片的读出数据被先搬移到该可用的缓存单元,再从缓存单元将数据提供给主机;若IO命令是写命令,将IO命令要写入的数据先存储在该可用的缓存单元,在将缓存单元的数据写入NVM芯片。从而缓存单元中记录了同该IO命令访问的地址所对应的数据。
若IO命令是读命令,所生成的热数据表条目的类型指示共享(s)。若IO命令是写命令,所生成的热数据表条目的类型指示修改(m)。
继续参看图5,回到步骤560,若IO命令的地址未命中访问历史表,则根据IO命令访问的地址生成新条目,将新条目添加到访问历史表的最前部(562)。在需要的时候,还从访问历史表的最后部淘汰旧条目(564)。
根据本申请的实施例还提供了一种存储设备,包括控制器与非易失存储器芯片,其中,控制器执行本申请实施例提供的任意一种处理方法。
根据本申请的实施例还提供了一种存储在可读介质上的程序,当被存储设备的控制器运行时,使得存储设备执行根据本申请实施例提供的任意一种处理方法。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (10)
1.一种热数据识别与处理方法,包括:
获取IO命令访问的地址;
若所述IO命令访问的地址命中了热数据表的第一条目,访问所述第一条目对应的缓存单元来处理所述IO命令,以及将所述第一条目设置到所述热数据表的前部;以及
淘汰所述热数据表的后部的条目。
2.根据权利要求1所述的方法,还包括:
若所述IO命令访问的地址未命中热数据表的任何条目,访问NVM芯片来处理所述IO命令。
3.根据权利要求1或2所述的方法,其中
若所述IO命令是读命令,且所述IO命令访问的地址命中了热数据表的第一条目,从所述第一条目对应的缓存单元搬移数据到主机作为对所述读命令的响应;
若所述IO命令是写命令,且所述IO命令访问的地址命中了热数据表的第一条目,将所述写命令待写入的数据搬移到所述第一条目对应的缓存单元,以及将所述第一条目的类型设置为修改(m)。
4.根据权利要求1-3之一所述的方法,还包括:
若所述IO命令访问的地址未命中热数据表的任何条目,进一步识别所述IO命令访问的地址是否命中访问历史表;
若所述IO命令访问的地址命中访问历史表的第二条目,递增所述第二条目的计数值;若所述第二条目的计数值达到阈值,生成第三条目添加到所述热数据表的前部;
获取可用的缓存单元;
其中所述第三条目记录了所述IO命令访问的地址,以及所述第三条目还关联于所述可用的缓存单元;
访问所述可用的缓存单元来处理所述IO命令。
5.根据权利要求4所述的方法,还包括:
若所述IO命令是读命令,在所述第三条目中记录类型为共享(s);若所述IO命令是写命令,在所述第三条目中记录类型为修改(m)。
6.根据权利要求4或5所述的方法,其中
若所述IO命令是读命令,将根据所述读命令的地址从NVM芯片读出的数据存储在所述可用的缓存单元;从所述可用的缓存单元搬移数据到主机以响应所述读命令。
7.根据权利要求4-6之一所述的方法,还包括:
若所述IO命令访问的地址未命中访问历史表的任何条目,生成第四条目添加到所述访问历史表的前部;其中所述第四条目记录了所述IO命令访问的地址以及初始的计数值。
8.根据权利要求1-7之一所述的方法,还包括:
从所述热数据表的后部获取待淘汰的条目;
若所述待淘汰的条目的类型为修改(m),将所述待淘汰的条目对应的缓存单元的数据写入所述NVM芯片,将所述待淘汰的条目从所述热数据表移除;
若所述待淘汰的条目的类型为共享(s),将所述待淘汰的条目从所述热数据表移除并且丢弃所述待淘汰的条目对应的缓存单元的数据。
9.根据权利要求4-8之一所述的方法,还包括:
从所述访问历史表的后部移除条目。
10.一种存储设备,包括控制部件、DRAM与NVM芯片,所述控制部件执行权利要求1-9之一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911266829.5A CN112947845A (zh) | 2019-12-11 | 2019-12-11 | 热数据识别方法及其存储设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911266829.5A CN112947845A (zh) | 2019-12-11 | 2019-12-11 | 热数据识别方法及其存储设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112947845A true CN112947845A (zh) | 2021-06-11 |
Family
ID=76226535
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911266829.5A Pending CN112947845A (zh) | 2019-12-11 | 2019-12-11 | 热数据识别方法及其存储设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112947845A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024032015A1 (zh) * | 2022-08-11 | 2024-02-15 | 华为技术有限公司 | 数据缩减方法、装置及系统 |
-
2019
- 2019-12-11 CN CN201911266829.5A patent/CN112947845A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024032015A1 (zh) * | 2022-08-11 | 2024-02-15 | 华为技术有限公司 | 数据缩减方法、装置及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11055230B2 (en) | Logical to physical mapping | |
CN106448737B (zh) | 读取闪存数据的方法、装置以及固态驱动器 | |
CN107797759B (zh) | 访问缓存信息的方法、装置与驱动器 | |
CN107797760B (zh) | 一种访问缓存信息的方法、装置与固态驱动器 | |
US11526296B2 (en) | Controller providing host with map information of physical address for memory region, and operation method thereof | |
US11726906B2 (en) | Memory device and non-transitory computer readable recording medium | |
US20230342294A1 (en) | Memory device and non-transitory computer readable recording medium | |
US8782345B2 (en) | Sub-block accessible nonvolatile memory cache | |
US20210124522A1 (en) | Address translation method and system for kv storage device | |
CN110515861B (zh) | 处理刷写命令的存储设备及其方法 | |
CN112947845A (zh) | 热数据识别方法及其存储设备 | |
CN111352865B (zh) | 存储控制器的写缓存 | |
CN110968527B (zh) | Ftl提供的缓存 | |
CN111290975A (zh) | 使用统一缓存处理读命令与预读命令的方法及其存储设备 | |
CN111290974A (zh) | 用于存储设备的缓存淘汰方法与存储设备 | |
US20230359550A1 (en) | File system integration into data mining model | |
CN109960667B (zh) | 大容量固态存储设备的地址转换方法与装置 | |
US10474569B2 (en) | Information processing device including nonvolatile cache memory and processor | |
US10331551B2 (en) | Information processing device and non-transitory computer readable recording medium for excluding data from garbage collection | |
US11941246B2 (en) | Memory system, data processing system including the same, and operating method thereof | |
CN111258491B (zh) | 降低读命令处理延迟的方法与装置 | |
CN110580227A (zh) | 自适应nvm命令生成方法与装置 | |
US11354241B2 (en) | Memory system | |
US20240143512A1 (en) | Write buffer linking for easy cache reads | |
CN113434083A (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 |