CN109783006A - 计算系统及操作计算系统的方法 - Google Patents
计算系统及操作计算系统的方法 Download PDFInfo
- Publication number
- CN109783006A CN109783006A CN201810770652.1A CN201810770652A CN109783006A CN 109783006 A CN109783006 A CN 109783006A CN 201810770652 A CN201810770652 A CN 201810770652A CN 109783006 A CN109783006 A CN 109783006A
- Authority
- CN
- China
- Prior art keywords
- block
- entropy
- memory
- grade
- computing system
- 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.)
- Granted
Links
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/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/0658—Controller construction 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/0629—Configuration or reconfiguration of storage systems
- G06F3/0634—Configuration or reconfiguration of storage systems by changing the state or mode of one or more devices
-
- 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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
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
一种计算系统及操作计算系统的方法,计算系统包含:存储器存储单元,具有存储块,配置为存储器高速缓存以存储可存储对象;以及装置控制单元,耦合到存储器存储单元,被设置为用以:基于逐出策略来计算可存储对象的熵级;基于存储块中的可存储对象的熵级来计算存储块中的每一个的块熵;从存储块中选择擦除块,其中擦除块是具有块熵的最低值的存储块的执行个体;以及对擦除块执行擦除操作。
Description
技术领域
本发明的一实施例大体上涉及一种计算系统,且更具体地说,涉及一种用于高速缓存管理的系统。
背景技术
现代消费和工业电子产品,特别是云计算装置(cloud computing device)和网页服务器(web server),正提供越来越多的功能来支持现代生活,包含大数据分析以及实时网页应用程序(web application)。可从各种不同方向研究和开发现有技术。
随着用户随着信息处理技术的发展而变得更加强大,新范例和旧范例开始利用这一新空间。一个基于电子的增长空间(典型为其中处理大量信息)处于大数据分析中,例如基于非结构化查询语言(non-Structured Query Language;“NoSQL”或“NonSQL”)的系统。然而,承载信息的后端数据库以及例如网页高速缓存服务器(web caching server)的计算服务器成本高昂,并且可能成为信息吞吐量的瓶颈。因此,具有每秒输入/输出(input/output per second;IOPS)高吞吐量的可扩展数据服务器已难倒本领域的技术人员。
因此,仍然需要具有用于高速缓存管理的存储器管理机制的计算系统。鉴于一直增加的商业竞争压力,连同消费者期望的增长以及市场中有意义的产品区分机会的减少,找到这些问题的答案越来越关键。另外,降低成本、改善效率和性能以及满足竞争压力的需要增加了对找到这些问题的答案的关键必要性的更大紧迫性。
已经长期寻求这些问题的解决方案,但现有的开发尚未教示或建议任何解决方案,且因此本领域的技术人员长期未找到这些问题的解决方案。
发明内容
本发明的一实施例提供一种系统,包含:存储器存储单元,具有存储块,配置为存储器高速缓存(memory cache)以存储可存储对象;以及装置控制单元,耦合到存储器存储单元,被设置为用以:基于逐出(eviction)策略来计算可存储对象的熵级;基于存储块中的可存储对象的熵级来计算存储块中的每一个的块熵;从存储块中选择擦除块,其中擦除块是具有块熵的最低值的存储块的执行个体;以及对擦除块执行擦除操作。
本发明的一实施例提供一种方法,包含:将可存储对象存储在存储器存储单元的存储块中,所述存储器存储单元配置为存储器高速缓存;基于逐出策略来计算可存储对象的熵级;基于存储在存储块中的可存储对象的熵级来计算所述存储块中的每一个的块熵;从存储块中选择擦除块,其中擦除块是具有块熵的最低值的存储块的执行个体;以及对擦除块执行擦除操作。
本发明的某些实施例除上文所提及的那些之外或作为代替而具有其它步骤或元件。本领域的技术人员从参考附图做出的以下详细描述的阅读中将了解所述步骤或元件。
附图说明
图1是本发明的一实施例中的具有高速缓存管理机制的计算系统;
图2是本发明的第一实施例中的计算系统的高速缓存逐出过程的实例;
图3是计算系统的图2的高速缓存逐出过程的示范性流程图;
图4是本发明的第二实施例中的计算系统的高速缓存管理过程的示意性实例;
图5是计算系统的图4的高速缓存管理过程的示范性流程图;
图6是计算系统的图4的高速缓存管理过程的组件的示意性实例;
图7是图4的高速缓存管理过程的存储操作的流程图;
图8是图4的高速缓存管理过程的取回(retrieval)操作的流程图;
图9是图4的高速缓存管理过程的垃圾收集操作的流程图。
附图标号说明
100:计算系统;
102:主机装置;
104:存储器装置;
112:主机控制单元;
114:主机存储单元;
116:主机通信单元;
118:主机用户接口;
122:主机控制接口;
124:主机存储接口、第一存储单元;
126:主机软件;
128:主机通信接口;
130:显示接口、主机显示接口;
152:装置控制单元;
154:存储器存储单元;
156:存储器装置接口;
158:闪存转换层;
160:容量管理器;
162:存储器垃圾收集器;
164:存储接口、存储I/O接口;
165:键值对;
168:存储块;
170:存储器页面;
210:高速缓存逐出过程;
211:键值注册表;
212:键值逐出候选项;
216、416:逐出阈值;
218:相关联逐出数;
220、420:擦除块;
222:逐出目标;
224:相关联逐出候选项;
330、530:逐出策略;
332、532:最早策略;
334、534:频率最低策略;
336、536:到期策略;
340、540:注册表维护步骤;
342:容量监测步骤;
344:逐出识别步骤;
346:相关联候选步骤;
348、548:擦除块识别步骤;
352、552:程序时间戳;
354、554:活动日志;
356、556:活动频率;
358、558:最近活动;
410:高速缓存管理过程;
411、441:对象注册表;
412:可逐出对象;
414:可存储对象;
430:可高速缓存对象;
510:空闲块计数器;
512:空闲块阈值;
516:无效对象;
518:对象信息;
520:分级块;
544:对象可逐出性步骤;
546:重新定位步骤;
560:对象大小;
572:熵计算步骤;
574:熵级;
576:到期时间;
578:熵区;
594:块熵;
596:垃圾收集开销;
710、810:对象查询步骤;
720:信息产生步骤;
730:对象存储步骤;
740:块分配步骤;
750、820:对象信息更新步骤;
760、830:块信息更新步骤;
900:方法;
902、904、906、908、910:框;
VAL:值。
具体实施方式
足够详细地描述以下实施例以使本领域的技术人员能够制作和使用本发明。应理解,其它实施例基于本公开内容将为明显的,且在不脱离本发明的实施例的范围的情况下可做出系统、过程或机械的改变。
在以下描述中,给出许多特定细节以提供对本发明的彻底理解。然而,很明显,可在无这些特定细节的情况下实践本发明。为了避免混淆本发明的实施例,不详细公开一些众所周知的电路、系统配置以及过程步骤。
示出系统的实施例的图式是半图解的且不按比例,且具体地说,尺寸中的一些是为了呈现的清晰性且在绘制的图式中放大示出。类似地,虽然在用于易于描述的图式中的视图大体上示出类似的定向,但图式中的这类描述大部分是任意的。通常,本发明可以在任何定向上操作。实施例已出于描述便利性经编号为第一实施例、第二实施例等,且并不意图具有任何其它意义或提供对本发明实施例的限制。
现参看图1,其中示出本发明的一实施例中的具有存储器管理机制的计算系统100。图1描绘计算系统100的实例框图。计算系统100可包含主机装置102和存储器装置104。框图描绘存储器装置104耦合到主机装置102。
主机装置102可以是计算装置,例如服务器、膝上型计算机或台式计算机。在另一实例中,主机装置102可包含各种集中式计算装置或分散式计算装置。作为一特定实例,主机装置102可以是网格计算资源、虚拟化计算机资源、云计算资源、对等分布式计算装置、网页服务器或其组合。
主机装置102可以是一装置,所述装置能够支持或实施键值存储或例如NoSQL数据库的数据库并且执行大数据和实时网页应用程序或其组合。
主机装置102可包含例如硬件组件的单元,包含主机控制单元112、主机存储单元114、主机通信单元116以及主机用户接口118。主机控制单元112可包含主机控制接口122。主机控制单元112可执行主机软件126以提供主机装置102的智能。
主机控制单元112可以多种不同的硬件电路方式实施。举例来说,主机控制单元112可以是处理器,例如CPU、专用集成电路(application specific integrated circuit;ASIC)、嵌人式处理器、微处理器、硬件控制逻辑器、硬件有限状态机(finite statemachine;FSM)、数字信号处理器(digital signal processor;DSP)、可编程逻辑装置(programmable logic device;PLD)或其组合。主机控制单元112可包含用于存储器分配操作和信息流送的特定电路,例如存储器控制器、存储器芯片控制器或存储器控制器单元。
主机控制接口122可用于主机控制单元112与主机装置102中的其它单元之间的通信。主机控制接口122也可用于主机装置102外部的通信,包含存储器装置104。
主机控制接口122可接收来自其它单元或来自外部来源的信息,或可将信息传送到其它单元或外部目的地。外部来源和外部目的地指代在主机装置102外部的来源和目的地。
主机控制接口122可用硬件电路以不同方式实施,并且可取决于哪个内部单元或外部单元与主机控制接口122介接而包含不同实施方案。举例来说,主机控制接口122可用压力传感器、惯性传感器、微机电系统(microelectromechanical system;MEMS)、光学电路、波导、无线电路、有线电路或其组合予以实施。
主机存储单元114可存储主机软件126。主机存储单元114也可存储相关信息,例如存储在主机存储单元114、存储器装置104或其组合上的与对象相关的信息,包含与键值对(key-value pair;K-VP)165相关联的信息。
主机存储单元114可用硬件电路予以实施,所述硬件电路包含易失性存储器、非易失性存储器、内部存储器、外部存储器或其组合。举例来说,主机存储单元114可以是例如非易失性随机存取存储器(non-volatile random access memory;NVRAM)的非易失性存储装置,例如闪存存储器、磁盘存储装置、电阻式随机存取存储器(resistive random-accessmemory;ReRAM)、相变存储器(Phase-change memory;PRAM)的电子固态非易失性存储器,或例如静态随机存取存储器(static random access memory;SRAM)的易失性存储装置。作为一特定实例,主机存储单元114可包含随机存取存储器(random access memory;RAM)、同步动态存取存储器(synchronous dynamic access memory;SDRAM),呈例如双列直插式存储器模块(dual in-line memory module;DIMM)的硬件模块形式。
主机存储单元114可包含主机存储接口124。主机存储接口124可用于主机装置102中的其它单元之间的通信。主机存储接口124也可用于主机装置102外部的通信。此外,出于说明性目的,虽然已描绘主机存储单元114具有包含主机存储接口124和主机软件126的组件,但是应理解,主机存储单元114可包含额外组件。举例来说,主机存储单元114可包含存储器装置104中包含的组件中的一些或全部,例如装置控制单元152、闪存转换层(flashtranslation layer;FTL)158、容量管理器160、存储器垃圾收集器162、存储接口164、存储器存储单元154、存储块168、存储器页面170或其组合。将在下文详细论述这些元件中的每一个。
主机存储接口124可接收来自其它单元或来自外部来源的信息,或可将信息传送到其它单元或外部目的地。外部来源和外部目的地指代在主机装置102外部的来源和目的地。
主机存储接口124可取决于哪个内部单元或外部单元与主机存储单元114介接而包含不同实施方案。存储接口124可用与主机控制接口122的实施方案类似的技术和技艺予以实施。
主机通信单元116可使得能够外部通信到主机装置102以及从主机装置102外部通信。举例来说,主机通信单元116可允许主机装置102与存储器装置104或例如外围装置或台式计算机的其它附件通信。主机通信单元116可包含有源组件和无源组件,例如微电子、滤波器、调制器、解调器、检测器、解码器、基带调制解调器或天线。
主机通信单元116可包含主机通信接口128。主机通信接口128可用于主机通信单元116与主机装置102中的其它单元之间的通信。主机通信接口128可接收来自其它单元的信息或可将信息传送到其它单元。
主机通信接口128可取决于哪个单元与主机通信单元116介接而包含不同实施方案。主机通信接口128可用与主机控制接口122的实施方案类似的技术和技艺予以实施。
主机用户接口118允许用户(未示出)与主机装置102介接和交互。主机用户接口118可包含输入装置和输出装置。主机用户接口118的输入装置的实例可包含拨号键盘、触控板、软键、键盘、麦克风、用于接收远程信号的红外传感器或其任何组合,以提供数据和通信输入。作为另一实例,主机用户接口118可允许通过远程或网络连接与主机装置102交互。
主机用户接口118可包含显示接口130。显示接口130可包含对显示器、投影仪、视频屏幕、扬声器或其任何组合的连接。
主机控制单元112可操作主机用户接口118以显示由计算系统100产生的信息。主机控制单元112也可针对计算系统100的其它功能执行主机软件126。
主机装置102中的单元可单独地且独立于其它单元工作。主机装置102可单独地且与存储器装置104独立地工作。
存储器装置104是基于非易失性存储器技术的独立式存储器存储硬件。举例来说,存储器装置104可以是被设置为用以操作为多级高速缓存系统的部分的固态存储器装置。存储器装置104可被设置为用以操作为多层(multi-tier)高速缓存系统中的高速缓存装置。举例来说,存储器装置104可独立于主机装置102实施容量管理和逐出操作。存储器装置可包含装置控制单元152、存储器存储单元154以及存储器装置接口156。
装置控制单元152可以多种不同的硬件电路方式实施。举例来说,装置控制单元152可以是处理器,例如CPU、专用集成电路(ASIC)、嵌人式处理器、微处理器、硬件控制逻辑器、硬件有限状态机(FSM)、数字信号处理器(DSP)或其组合。装置控制单元152可包含用于存储器分配操作和信息流送的特定电路,例如存储器控制器、存储器芯片控制器或存储器控制器单元。
装置控制单元152可实施固件以操作存储器装置104。举例来说,装置控制单元152可操作闪存转换层158。闪存转换层158是用于实施存储器装置104的操作的机制和过程的组件,所述操作例如读取、编程以及映射操作。闪存转换层158可包含固件组件,例如容量管理器160、存储器垃圾收集器162以及存储输入/输出(input/output;I/O)接口164。
容量管理器160是在存储器装置104内监测键值对165的状态和活动的组件。举例来说,容量管理器160可处理键值对165的传入执行个体的值以存储在存储器存储单元154中。在另一实例中,容量管理器160可识别擦除操作的候选项。将在下文论述这些操作中的每一个。
存储器垃圾收集器162是用于操控存储器存储单元154内的擦除操作的组件。举例来说,存储器垃圾收集器162可基于从容量管理器160接收的信息来识别和擦除存储块。
存储I/O接口164是用于操控请求以存取存储器存储单元154的组件。举例来说,存储I/O接口164可处理对存储器存储单元154的读取、编程或擦除操作。作为一特定实例,存储I/O接口164可存取存储器存储单元154以用由容量管理器160接收的键值对165的值(VAL)编程存储器页面(memory page;MP)170。在另一特定实例中,存储I/O接口164可存取存储器存储单元154以取回键值对165的值以供用于读取操作。在另一特定实例中,存储I/O接口164可存取存储器存储单元154内的存储块168以执行擦除操作。容量管理器160、存储器垃圾收集器162以及存储I/O接口164独立地操作或可彼此通信以供用于存储器装置104的操作。
存储器存储单元154是非暂时性计算机可读介质。举例来说,存储器存储单元154可以是非易失性存储器,例如快闪存储器,包含NAND闪存存储器、铁电随机存取存储器(ferroelectric random access memory;FRAM)或磁阻随机存取存储器(magnetoresistive random-access memory;MRAM)以及类似存储器。存储器存储单元154可包含存储组件和子组件,例如平面(未示出)、存储块168以及存储器页面170。作为一实例,存储器页面170可以是存储器存储单元154中可进行编程操作的最小部分。存储块168可包含多个存储器页面170。存储块168可以是存储器存储单元154中可进行擦除操作的最小部分。
存储器装置接口156用于提供对存储器装置104的外部装置的连接。举例来说,存储器装置接口156可提供直接连接或间接连接到主机装置102的硬件。作为一特定实例,存储器装置接口156可通过外围组件互连(peripheral component interconnect)或外围组件互连快速(peripheral component interconnect express;PCIe)连接为存储器装置104提供对主机装置102的直接附接。在另一特定实例中,存储器装置接口156可通过有线通信或无线通信在例如局域网(local area network;LAN)、城域网(metropolitan areanetwork;MAN)或广域网(wide-area network;WAN)的网络上提供存储器装置104与主机装置102之间的连接。有线通信的实例可包含通过数字用户线(digital subscriber line;DSL)的通信、光纤连接或具有用于类别(category;Cat)5、Cat 5e或Cat 6连接的接口的以太网连接。卫星通信、蜂窝通信、蓝牙(Bluetooth)、红外数据协会标准(Infrared DataAssociation standard;lrDA)以及无线保真(wireless fidelity;WiFi)是无线通信的实例。
现参看图2,其中示出本发明的第一实施例中的计算系统100的高速缓存逐出过程210的实例。高速缓存逐出过程210是对象选择和逐出操作。高速缓存逐出过程210使得存储器装置104能够操作为独立式高速缓存装置。高速缓存逐出过程210可由图1的存储器装置104上的装置控制单元152执行并且用容量管理器160、存储器垃圾收集器162、存储I/O接口164或其组合予以实施,如下文所描述。
可示出高速缓存逐出过程210具有容量管理器160的键值注册表211。键值注册表211是与存储器装置104的键值对165相关联的信息词典。将在下文论述键值注册表211的额外细节。键值注册表211可追踪键值逐出候选项(eviction candidate;EC)212和逐出目标(eviction target;ET)222。
键值逐出候选项212是满足逐出标准的键值对165。举例来说,键值逐出候选项212可以是具有超出逐出阈值216的逐出标准的键值对165的执行个体。逐出标准和逐出阈值216可根据例如存取频率、存储时间以及最近活动等因素基于逐出策略,这些将在下文中进一步论述。在高速缓存逐出过程210中,容量管理器160可从键值注册表211的键值对165中识别键值逐出候选项212。作为一特定实例,容量管理器160可在键值对165的执行个体超出逐出阈值216(但其可经测量)时识别键值逐出候选项212,这示出为图2的虚线。
逐出目标222是针对根据逐出策略的逐出而选择的键值逐出候选项212的执行个体。作为一实例,针对基于存取频率的策略,逐出目标222可选择为具有最低存取频率的键值逐出候选项212的执行个体。在另一实例中,针对基于最近存取的策略,逐出目标222可选择为具有自上次存取最长时段的键值逐出候选项212的执行个体。在另一实例中,针对基于存储时间的策略,逐出目标222可选择为具有存储在存储器存储单元154中最长时间段的键值逐出候选项212的执行个体。将在下文详细论述从键值逐出候选项212中选择逐出目标222。
在高速缓存逐出过程210中,存储器垃圾收集器162可选择擦除块220,其是存储器存储单元154内包含逐出目标222中的一个的存储块168的执行个体。举例来说,存储器垃圾收集器162可计算逐出目标222的相关联逐出候选项(associated eviction candidate;AEC)224的相关联逐出数218。相关联逐出候选项224是如作为逐出目标222中的一个的在存储块168的相同执行个体内的键值逐出候选项212。对于另一实例,存储器垃圾收集器162可选择擦除块220作为具有逐出目标222的存储块168,所述逐出目标222具有相关联逐出数218的最高值。
出于说明性目的,虽然图2示出为具有两个逐出目标222,但是应理解,可在高速缓存逐出过程210中识别不同数量的逐出目标222。将在下文详细论述高速缓存逐出过程210的细节,包含确定键值逐出候选项212、选择擦除块220以及相关联步骤。
现参看图3,其中示出计算系统100的图2的高速缓存逐出过程的流程图。计算系统100的存储器管理机制可以多种不同方式实施。在此所描述的流程图中描述实施方案的一个实例,其描绘针对图1的存储器装置104的图2的高速缓存逐出过程210。一般来说,高速缓存逐出过程210可基于逐出策略330自主地实施。更具体地说,高速缓存逐出过程210可由装置控制单元152通过图2的容量管理器160发起,而不存在外部命令,例如来自图1的主机装置102的那些命令。
逐出策略330是用于确定从存储器单元逐出数据的候选项的规则。举例来说,逐出策略330可基于存取的键值对165频率、键值对165被存取的的最近时间、已存储在存储器存储单元154中的键值对165的总时间值或其组合来识别作为图2的键值逐出候选项212的图1的键值对165。逐出策略330可包含最早策略(least recent policy)332、频率最低策略(least recent frequent)334、到期策略(expiration policy)336或其组合。
最早策略332是基于键值对165的执行个体被存取的最近时间的逐出策略。举例来说,最早策略332可将键值对165定向为自上次存取以来在存储器存储单元154中的键值对165的值中具有最长持续时间的键值逐出候选项212。
频率最低策略334是基于存取的键值对165的执行个体的频繁程度的逐出策略。举例来说,频率最低策略334可将键值对165定向为在存储器存储单元154中的键值对165的值中存取的频率最低的键值逐出候选项212。
到期策略336是基于存储器存储单元154中的时间的策略。举例来说,到期策略336可定向相对于键值对165的其它执行个体具有已存储在存储器存储单元154中最大时间段的值的键值对165。
高速缓存逐出过程210的流程可包含注册表维护步骤340、容量监测步骤342、逐出识别步骤344、相关联候选步骤346以及擦除块识别步骤348。计算系统100的高速缓存逐出过程210的流程可以注册表维护步骤340开始。注册表维护步骤340用于维护和更新存储装置中存储的键值注册表。
在注册表维护步骤340中,容量管理器160可维护键值注册表211。键值注册表211可包含与键值对165中的每一个相关联的注册表信息。举例来说,键值注册表211可包含关于存储在图1的存储器存储单元154中的键值对165的值的键和位置的信息。在另一实例中,键值注册表211可包含程序时间戳352、活动日志354或其组合以供用于键值对165中的每一个。
程序时间戳352是将键值对165的执行个体的值编程到存储器存储单元154中的时间点。活动日志354是对键值对165的值的存取记录。
活动日志354可追踪与键值对165相关联的活动频率356和最近活动358。活动频率356是键值对165存取的频率的测量。最近活动358是对上一次存取的键值对165的值的记录。
容量管理器160可通过监测键值对165来维护键值注册表211。举例来说,容量管理器160可与编程操作或擦除操作结合更新键值注册表211,例如在由存储器装置104接收键值对165的新执行个体的值时或在从存储器装置104中擦除键值对165时。作为一特定实例,容量管理器160可通过将程序时间戳352添加到从主机装置102接收的键值对165的新执行个体以供用于存储在存储器存储单元154中来更新键值注册表211,其包含活动日志354。在另一特定实例中,容量管理器160还可通过在擦除操作之后从键值注册表211中去除键值对165来维护键值注册表211。装置控制单元152可利用容量管理器160以执行如上文所描述的注册表维护步骤340。
流程可继续到容量监测步骤342。容量监测步骤342用于监测键值对165的注册表以识别用于逐出的候选项。容量监测步骤342可根据逐出策略330识别键值逐出候选项212。更具体地说,容量监测步骤342可基于逐出策略330来确定图2的逐出阈值216。
针对频率最低策略334,逐出阈值216可对应于键值对165的活动频率356。举例来说,具有低于逐出阈值216的活动频率的键值对165可识别为键值逐出候选项212。
针对最早策略332,逐出阈值216可对应于键值对165的最近活动358。举例来说,具有低于逐出阈值216的最近活动358的键值对165可识别为键值逐出候选项212。
针对到期策略336,逐出阈值216可对应于程序时间戳352。举例来说,具有超出逐出阈值216的程序时间戳352的键值对165可识别为键值逐出候选项212。装置控制单元152可利用容量管理器160以执行如上文所描述的容量监测步骤342。
流程可继续到逐出识别步骤344。逐出识别步骤344用于识别图2的逐出目标222。举例来说,在逐出识别步骤344中,存储器垃圾收集器162可基于逐出策略330来从键值逐出候选项212中选择逐出目标222。
在频率最低策略334的实例中,存储器垃圾收集器162可将在键值注册表211中的键值对165中具有最少活动量的键值逐出候选项212中的一个或多个识别为逐出目标222。在最早策略332的实例中,存储器垃圾收集器162可将在键值注册表211中的键值对165中具有最长不活动时段的键值逐出候选项212中的一个或多个识别为逐出目标222。在到期策略336的实例中,存储器垃圾收集器162可将相对于键值注册表211中的键值对165的其它执行个体已在存储器装置104中最长时间段的键值逐出候选项212中的一个或多个识别为逐出目标222。装置控制单元152可利用存储器垃圾收集器162以执行如上文所描述的逐出识别步骤344。
流程可继续到相关联候选步骤346。相关联候选步骤346用于识别相关联逐出候选项224以及确定图2的逐出目标222的相关联逐出数218。在相关联候选步骤346中,容量管理器160可将相关联逐出候选项224识别为在与逐出目标222相同的存储块168的执行个体中的键值逐出候选项212。针对逐出目标222的每一执行个体,容量管理器160可计算相关联逐出数218作为逐出目标222的特定执行个体的相关联逐出候选项224的总数。装置控制单元152可利用容量管理器160以执行如上文所描述的相关联候选步骤346。
流程可继续到擦除块识别步骤348。擦除块识别步骤348用于识别用于擦除操作的最佳存储块。在擦除块识别步骤348中,存储器垃圾收集器162可基于相关联逐出数218来从存储器存储单元154中的存储块168中选择擦除块220。举例来说,存储器垃圾收集器162可选择擦除块220作为与相关联逐出数218的最高值相关联的存储块168。装置控制单元152可利用存储器垃圾收集器162以执行如上文所描述的擦除块识别步骤348。此外,存储器垃圾收集器162可与存储I/O接口164通信以发布对擦除块220的擦除命令或对擦除块220执行擦除操作。
已发现用于键值对165的自逐出(self-eviction)的逐出策略使得例如存储器装置104的非易失性存储器装置能够更好地充当高速缓存装置。
现参看图4,其中示出本发明的第二实施例中的计算系统100的高速缓存管理过程410的实例。高速缓存管理过程410是对象选择和管理操作。高速缓存管理过程410使得能够将存储器装置104或主机存储单元114操作为独立式高速缓存装置。一般来说,高速缓存管理过程410可选择用于存储在存储器装置104、主机存储单元114或其组合的高速缓存中或从存储器装置104、主机存储单元114或其组合中逐出的对象。更具体地说,高速缓存管理过程410可基于可存储对象(storable object;SO)414的状态维护图1的存储块168以及选择图4的擦除块420。可存储对象414是可存储在存储器装置104、主机存储单元114或其组合上的对象。作为一实例,可存储对象414可以是图1的键值对165。
在一个实施方案中,高速缓存管理过程410可由图1的存储器装置104上的装置控制单元152执行,并且用容量管理器160、存储器垃圾收集器162、存储I/O接口164或其组合予以实施,如下文所描述。在另一实施方案中,高速缓存管理过程410可独立于来自主机控制单元112的交互或指令而用图1的存储单元114执行。为论述的简单起见,虽然参照存储器装置104描述高速缓存管理过程410,但是应理解,下文所描述的功能和操作也可用主机存储单元114予以实施。
可示出高速缓存管理过程410具有容量管理器160的对象注册表411。对象注册表411是与可存储对象414相关联的信息词典。将在下文论述对象注册表411的额外细节。对象注册表411可追踪可逐出对象(evictable;EO)412和可高速缓存对象(cacheable object;CO)430。可逐出对象412是满足逐出标准的可存储对象414的执行个体。可高速缓存对象430是适合在存储器存储单元154中高速缓存的可存储对象414的执行个体。
在高速缓存管理过程410中,容量管理器160可基于逐出阈值416来从对象注册表411的可存储对象414中识别可逐出对象412和可高速缓存对象430。示出为图4的虚线的逐出阈值416可根据例如存取频率、存储时间、最近活动以及可存储对象414的大小或可存储对象414占用的空间量等因素基于逐出策略,这些将在下文中进一步论述。
一般来说,可逐出对象412可识别为具有超出逐出阈值416的逐出标准的可存储对象414,其中超出逐出阈值416可以是基于逐出标准的特定执行个体高于或低于逐出阈值416。可高速缓存对象430可基于逐出阈值416识别为用于存储在装置高速缓存中的可存储对象414的有效执行个体。将在下文详细论述用于识别可逐出对象412和可高速缓存对象430的额外细节。
在高速缓存管理过程410中,图1的装置控制单元152可通过动态选择擦除块420来管理存储器垃圾收集器162的工作负载以及存储器装置104的执行,所述擦除块420是包含可逐出对象412中的一个或多个的存储器存储单元154内的存储块168的执行个体。举例来说,装置控制单元152的存储器垃圾收集器162可基于服务质量(Quality of Service;QoS)要求来选择擦除块420。
在另一实例中,装置控制单元152可选择且重新定位可高速缓存对象430。作为一特定实例,可在对擦除块420执行擦除操作之前将擦除块420中的可高速缓存对象430重新定位到存储块168的另一执行个体。将在下文详细论述高速缓存管理过程410的细节,包含识别可逐出对象412、识别可高速缓存对象430、选择擦除块420以及相关联步骤。
现参看图5,其中示出计算系统100的图4的高速缓存管理过程410的控制流程。在下文所描述的控制流程中,计算系统100的存储器管理机制的实施方案描绘用于图1的存储器装置104、图1的主机存储单元114或其组合的高速缓存管理过程410。一般来说,高速缓存管理过程410可自主地实施以基于可存储对象414的状态来从图1的存储块168中选择图4的擦除块420,所述可存储对象414是根据一个或多个逐出策略530来确定的。在一个实施方案中,高速缓存管理过程410可由装置控制单元152通过图1的容量管理器160发起而不存在外部命令,例如来自图1的主机装置102的那些命令。在另一实施方案中,高速缓存管理过程410可由主机存储单元114发起而不存在来自图1的主机控制单元112的命令。为简单起见,虽然参照存储器装置104和相关联组件论述控制流程,但是应理解,高速缓存管理过程410可由主机存储单元114以类似方式实施。此外,应理解,主机存储单元114可包含与存储器装置104的组件类似的组件,例如装置控制单元152、闪存转换层158、容量管理器160、存储器垃圾收集器162、存储器存储单元154、存储块168、图1的所有组件,或其组合。
逐出策略530是用于确定从存储器单元中逐出的候选项的规则。举例来说,可基于所存取的可存储对象414的频率、可存储对象414被存取的最近时间、已存储在存储器存储单元154中的可存储对象414的总时间、可存储对象414占用的大小或空间量或其组合来实施逐出策略530以从图4的可存储对象414中识别图4的可逐出对象412。逐出策略530可包含最早策略532、频率最低策略534、到期策略536或其组合。
最早策略532是基于可存储对象414的执行个体被存取的最近时间的逐出策略530的执行个体。举例来说,最早策略532可将可逐出对象412识别为自上次存取以来在存储器存储单元154中的可存储对象414的值中具有最长持续时间的可存储对象414。
频率最低策略534是基于所存取的可存储对象414的执行个体的频繁程度的逐出策略530的执行个体。举例来说,频率最低策略534可将可逐出对象412识别为在存储器存储单元154中的可存储对象414的值中存取的频率最低的可存储对象414。
到期策略536是基于存储器存储单元154中的时间的逐出策略530的执行个体。举例来说,到期策略536可将可逐出对象412识别为相对于可存储对象414的其它执行个体具有已存储在存储器存储单元154中最大时间段的值的可存储对象414。
用于高速缓存管理过程410的控制流程可包含擦除块识别步骤548、注册表维护步骤540、熵计算步骤572、对象可逐出性步骤544以及重新定位步骤546。用于计算系统100的高速缓存管理过程410的控制流程可以擦除块识别步骤548开始,但是应理解,控制流程中的步骤的顺序作为实例呈现且可以各种顺序执行。举例来说,控制流程可以注册表维护步骤540开始。
擦除块识别步骤548用于通过识别适合用于擦除操作的一个或多个存储块来实施垃圾收集过程。在擦除块识别步骤548中,存储器垃圾收集器162可从存储器存储单元154中的存储块168中动态地识别擦除块420。
擦除块识别步骤548可基于空闲块计数器510和空闲块阈值512发起垃圾收集过程。空闲块计数器510是在发起垃圾收集过程时空闲或可用于存储对象的存储块168的数量。空闲块阈值512是待作为存储块168的空闲执行个体维护的存储块168的数量。举例来说,可基于QoS要求来确定空闲块阈值512。
在发起垃圾收集过程期间,装置控制单元152可将空闲块计数器510与空闲块阈值512进行比较。举例来说,如果空闲块计数器510指示空闲或可用于存储的存储块168的数量超出空闲块阈值512,那么可取消垃圾收集过程。为继续实例,如果空闲块计数器510指示空闲或可用于存储的存储块168的数量低于空闲块阈值512,意味着根据QoS要求的空闲或可用的存储块168的数量不够,那么存储器垃圾收集器162可继续进行垃圾收集过程以产生存储块168的额外空闲执行个体以满足QoS要求。
在擦除块识别步骤548中,存储器垃圾收集器162可基于各种因素动态地识别擦除块420。一般来说,装置控制单元152可选择擦除块420为具有块熵594的最低值的存储块168,然而可考虑其它因素,其将在下文论述。
块熵594是与存储块168的每一执行个体相关联的可存储对象414的熵级574的集合测量。熵级574是基于逐出策略530中的一个或多个来对可存储对象414进行排序的度量。举例来说,熵级574可以是用于根据逐出策略530的单个执行个体或逐出策略530的多个执行个体的组合来对可存储对象414的可逐出性进行排序的度量。将在下文详细论述可存储对象414的熵级574的计算。
举例来说,块熵594可计算为与存储块168的特定执行个体相关联的可存储对象414中的每一个的熵级574的中位值。在另一实例中,块熵594可计算为与存储块168的特定执行个体相关联的可存储对象414中的每一个的熵级574的平均值。存储块168中的每一个可具有对应于逐出策略530的一个执行个体或逐出策略530的多个执行个体的组合的块熵594的不同执行个体。
在一实施方案中,存储器垃圾收集器162可选择擦除块420为与存储器存储单元154内的块熵594的最低值相关联的存储块168。在存储块168的超过一个执行个体具有块熵594的最低值的情况下,存储器垃圾收集器162可选择擦除块440,所述擦除块440具有最低数量的可存储对象414的相关联执行个体,或更具体地说,其中所存储的可存储对象414为最低数量的。
也可考虑到用于识别擦除块420的其它因素。举例来说,装置控制单元152可将擦除块420识别为具有最高数量的可逐出对象412、无效对象516或其组合的存储块168中的一个。无效对象516是已删除或重写的可存储对象414的执行个体。
作为另一因素,装置控制单元152可将擦除块420识别为具有最高可回收空间量的存储块168中的一个。举例来说,可回收空间可以是在由无效对象516、可逐出对象412或其组合占用存储块168的情况下字节的总量。
在擦除块识别步骤548中,存储器垃圾收集器162的工作负载可基于垃圾收集开销596。可通过几个因素来确定垃圾收集开销596。举例来说,可基于存储块168的每执行个体的可存储对象414(例如可高速缓存对象430)的有效执行个体的数量、由存储块168的每执行个体的可存储对象414的有效执行个体占用的空间总量、待由存储器垃圾收集器162进行的擦除操作的数量或其组合来确定垃圾收集开销596。
可基于多个因素动态地调节垃圾收集开销596以满足图1的主机装置102的服务质量(QoS)要求。举例来说,可基于被识别以进行擦除操作的擦除块420的执行个体的数量、可逐出对象412的总数、可逐出对象412的大小、例如由可逐出对象412占用的字节的数量或其组合来调节垃圾收集开销596。
可通过QoS要求来确定针对擦除操作而选择的擦除块420的执行个体的数量。举例来说,如果存储器装置104中存在太多可存储对象414的执行个体(如通过QoS要求所确定的),那么查询开销可超出QoS要求所允许的开销。在这种情况下,存储器垃圾收集器162可更优先减少可存储对象414的数量而非基于可逐出对象412的对象大小560的逐出,这可减少存储器装置104中的可存储对象414的总数。
在太少存储块168的执行个体识别为擦除块420以满足QoS要求的情况下,存储器垃圾收集器162可同时应用多个执行个体或逐出策略530的组合或调节逐出阈值416。举例来说,如果在到期策略536下识别的可逐出对象412太少,那么存储器垃圾收集器162可应用最早策略532、频率最低策略534或其组合以识别存储块168的一个执行个体内的可逐出对象412的另一执行个体或存储块168的多个执行个体以满足QoS要求。在另一实例中,存储器垃圾收集器162可增大逐出阈值416以增加可逐出对象412的数量。
装置控制单元152可利用存储器垃圾收集器162以执行如上文所描述的擦除块识别步骤548。此外,存储器垃圾收集器162可与存储I/O接口164通信以发布对擦除块420的擦除命令或对擦除块420执行擦除操作。
可基于对象注册表411中的信息来计算块熵594,所述对象注册表411在注册表维护步骤540中被维护。注册表维护步骤540用于维护和更新存储装置中存储的对象注册表。在注册表维护步骤540中,容量管理器160可维护对象注册表411。对象注册表411可包含与可存储对象414中的每一个相关联的对象信息518。对象信息518与可存储对象414的存储和存取相关的信息。举例来说,在可存储对象414包含图1的键值对165情况下,对象信息518可包含关于存储在图1的存储单元154存储器中的键值对165的值的键和位置的信息。在另一实例中,对象注册表411可包含程序时间戳552、活动日志554或其组合以供用于可存储对象414中的每一个。在另一实例中,对象注册表411可包含可存储对象414的对象大小560的信息,例如由可存储对象414的值占用的字节的数量,所述可存储对象414包含存储在存储块168中的键值对165。在又一实例中,对象注册表411可包含可存储对象414中的每一个的熵级574。
程序时间戳552是将可存储对象414编程到存储器存储单元154中的时间点。活动日志554是对可存储对象414的存取记录。
活动日志554可追踪与可存储对象414相关联的活动频率556和最近活动558。活动频率556是可存储对象414存取的频率的测量。举例来说,活动频率556可以是在一段时间内存取的可存储对象414的特定执行个体的次数的数。可明确地通过例如读取操作和写入操作的直接操作、隐含地通过可存储对象414的间接存取频率或其组合来确定活动频率556。间接存取频率测量的实例可发生在可存储对象414涉及分选功能时,例如在气泡分选(bubble sort)期间发生的交换,其中在可存储对象414的特定执行个体正移动时,经分选的可存储对象414的执行个体的活动频率556可能相对较高。
最近活动558是对上一次存取的可存储对象414的记录。最近活动558可通过程序时间戳552的最近执行个体来明确地确定、隐含地基于例如检索或分选列表中的可存储对象414的移动的间接存取来确定或其组合来确定。
容量管理器160可通过监测可存储对象414来维护对象注册表411。举例来说,容量管理器160可与编程操作或擦除操作结合更新对象注册表411,例如在由存储器装置104接收可存储对象414的新执行个体的值时或在从存储器装置104中重写或擦除可存储对象414时。作为一特定实例,容量管理器160可通过将程序时间戳552添加到从主机装置102接收的可存储对象414的新执行个体以供用于存储在存储器存储单元154中来更新对象注册表411,其包含活动日志554。在另一特定实例中,容量管理器160也可通过在擦除操作之后从对象注册表411中去除可存储对象414的执行个体来维护对象注册表411。装置控制单元152可利用容量管理器160以执行如上文所描述的注册表维护步骤540。
对象注册表411可包含对象注册表411中的可存储对象414中的每一个的熵级574。熵级574是基于逐出策略530中的一个或多个来对可存储对象414进行排序的度量。举例来说,熵级574可以是用于根据逐出策略530的单个执行个体或逐出策略530的多个执行个体的组合来对可存储对象414的可逐出性进行排序的度量。一般来说,熵级574的高相对值对应于与可存储对象414的其它执行个体有关的可逐出性为低级,同时熵级574的低相对值对应于与可存储对象414的其它执行个体有关的可逐出性为高级。
高速缓存管理过程410可计算熵计算步骤572中的可存储对象414的熵级574。可根据例如频率最低策略534、最早策略532或到期策略536的逐出策略530基于不同逐出标准来计算熵级574。
针对频率最低策略534,可基于可存储对象414的相关联执行个体的活动频率556来计算可存储对象414中的每一个的熵级574。举例来说,频率最低策略534的熵级574可计算为可存储对象414的执行个体的活动频率556以及对象大小560的加权几何平均值。
针对最早策略532,可基于可存储对象414的执行个体的最近活动558来计算可存储对象414中的每一个的熵级574。举例来说,最早策略532的熵级574可计算为可存储对象414的执行个体的新近度(recency)标准差以及对象大小560的加权几何平均值。新近度标准差是当前时间或计算熵级574的时间与最近活动558除以可存储对象414的特定执行个体的对象大小560之间的差。
针对到期策略536,可基于可存储对象414的到期时间576来计算可存储对象414中的每一个的熵级574。举例来说,到期策略536的熵级574可计算为可存储对象414的执行个体的到期时间576以及对象大小560的加权几何平均值。到期时间576可以是限制或预期可存储对象414可预期保留在存储器存储单元154中的时间量,例如存留时间(time to live;TTL)值。
基于可存储对象414中的每一个的熵级574的计算出的值,高速缓存管理过程410可计算存储块168中的每一个的块熵594。如上文所描述的实例中,块熵594可计算为与存储块168的特定执行个体相关联的可存储对象414中的每一个的熵级574的中位值或平均值。块熵594的计算可包含无效对象516,其具有为“零”的熵级574的对应执行个体。此外,高速缓存管理过程410可基于上文所描述的擦除块识别步骤548中描述的过程来选择擦除块168,包含基于块熵594的选择。
在对擦除块168的一个或多个执行个体执行擦除操作之前,高速缓存管理过程410可处理擦除块168中的可存储对象414中的每一个。举例来说,高速缓存管理过程410可识别对象可逐出性步骤544中的可逐出对象412以及重新定位步骤546中的可高速缓存对象430。
在对象可逐出性步骤544中,装置控制单元152可基于图4的逐出阈值416来识别可逐出对象412。一般来说,可逐出对象412可识别为具有超出逐出阈值416的熵级574的可存储对象414,其中超出逐出阈值416可以是基于逐出策略530的特定执行个体高于或低于逐出阈值416。
作为一实例,针对频率最低策略534,逐出阈值416可对应于可存储对象414的活动频率556。举例来说,具有低于逐出阈值416的活动频率的可存储对象414可识别为可逐出对象412。
作为另一实例,针对最早策略532,逐出阈值416可对应于可存储对象414的最近活动558。举例来说,具有低于逐出阈值416的最近活动558的可存储对象414可识别为可逐出对象412。
作为另一实例,针对到期策略536,逐出阈值416可对应于程序时间戳552。举例来说,具有超出逐出阈值416的程序时间戳552的可存储对象414可识别为可逐出对象412。
高速缓存管理过程410可包含基于逐出策略530中的一个或多个来将可存储对象414分类到熵区578中。熵区578是表示可存储对象414的可逐出性的可存储对象414的分级或分组。一般来说,熵区578的较低值表示相对于可存储对象414的其它执行个体的较高可逐出性,同时熵区578的较高值表示相对于可存储对象414的其它执行个体的较低可逐出性。举例来说,虽然可将对象注册表411划分或分割成四个区,但是任何数量的熵区578为可能的。
可基于可存储对象414的熵级574来将对象注册表411中的可存储对象414分类到熵区578中。区0可以是表示在下一垃圾收集间隔时将被逐出或具有最高逐出可能性的可存储对象414的熵级574的最低范围。一般来说,无效对象516和可逐出对象412属于区0。区1可包含表示在下一垃圾收集间隔时有可能被逐出的可存储对象414的熵级574的范围。区2可包含表示在下一垃圾收集间隔时不太可能被逐出的可存储对象414的熵级574的范围。区3可以是表示在下一垃圾收集间隔时几乎确定将不被逐出或具有最低逐出可能性的可存储对象414的熵级574的最高值。
出于说明性目的,已将熵区578描述为具有熵区578的四个不同执行个体,然而应理解,可以不同方式分割熵区578。举例来说,可将熵区578分割成三个或小于三个熵区578的执行个体或五个或大于五个熵区578的执行个体。
存储块168中的一个或多个可与熵区578中的一个相关联。举例来说,存储块168可由装置控制单元152分配以存储对应于熵区578中的一个的可存储对象414。更具体地说,分配给熵区578的特定执行个体的存储块168可存储具有熵区578的相同特定执行个体的熵级574的可存储对象414。
可针对逐出策略530的每一执行个体或基于逐出策略530的多个执行个体的组合或合并来以不同方式确定熵区578。举例来说,在逐出策略530的多个执行个体的组合时熵区578的确定可计算为逐出策略530中的每一个的加权几何平均值。
针对频率最低策略534,熵区578可基于对象注册表411中的可存储对象414的活动频率556的平均值。区0可包含其中对象注册表411的活动频率556的平均值的一半大于可存储对象414的活动频率556的熵级574的范围。区1可包含其中对象注册表411的活动频率556的平均值大于可存储对象414的活动频率556的熵级574的范围。区2可包含其中对象注册表411的活动频率556的平均值小于可存储对象414的活动频率556的熵级574的范围。区3可包含其中对象注册表411的活动频率556的平均值的两倍小于可存储对象414的活动频率556的熵级574的范围。
针对最早策略532,熵区578可基于对象注册表441中的可存储对象414的活动频率556的列表。区0可包含在始于列表尾部的列表的零百分位或零百分位直到25百分位处的熵级574的范围。区1可包含在始于列表尾部的列表的25百分位或25百分位直到50百分位处的熵级574的范围。区2可包含在始于列表尾部的列表的50百分位或50百分位直到75百分位处的熵级574的范围。区3可包含在始于列表尾部的列表的75百分位或75百分位直到100百分位处的熵级574的范围。
针对到期策略536,熵区578可基于一垃圾收集间隔,其是执行垃圾收集操作的频率。区0可包含其中程序时间戳552与到期时间576的总和小于当前时间与最小垃圾收集间隔的总和的熵级574的范围。区1可包含其中程序时间戳552与到期时间576的总和小于当前时间与平均垃圾收集间隔的总和的熵级574的范围。区2可包含其中程序时间戳552与到期时间576的总和小于当前时间与最大垃圾收集间隔的总和的熵级574的范围。区3可包含其中程序时间戳552与到期时间576的总和大于当前时间与最大垃圾收集间隔的总和的熵级574的范围。
在对象可逐出性步骤544中,装置控制单元152可将无效对象516识别为已重写或删除的可存储对象414。无效对象516可具有为零的熵级574。更具体地说,由于无效对象516具有为“零”的熵级574,因此在当前或即将进行的垃圾收集操作期间可将无效对象516确定为可逐出的。
确定为可逐出对象412和无效对象516的可存储对象414可保留在擦除块420内,其是用于后续擦除操作的候选项。可将没有识别为可逐出对象412或无效对象516的可存储对象414识别为可高速缓存对象430。在重新定位步骤546中,可高速缓存对象430可重新定位到存储块168的其它执行个体。
重新定位步骤546用于高速缓存可高速缓存对象430,所述可高速缓存对象430是可存储对象414的有效执行个体。在重新定位步骤546中,装置控制单元152可在擦除操作之前将可高速缓存对象430从擦除块420移动到存储块168的另一执行个体。作为一实例,可高速缓存对象430可移动到可扩展为写入高速缓存的高速缓存,或移动到独占式高速缓存(exclusive cache)。作为另一实例,可高速缓存对象430可基于可高速缓存对象430的熵级574移动到存储块168的执行个体。更具体地说,可高速缓存对象430可移动到存储块168的执行个体,使得熵级574对应于与存储块168相关联的熵区578。
在重新定位步骤546中,具有熵级574的相关联执行个体的可高速缓存对象430中的每一个可重新定位到具有熵区578的对应执行个体的存储块168的执行个体。更具体地说,针对可高速缓存对象430的重新定位,可高速缓存对象430可具有与存储在存储块168的执行个体中的可存储对象414的执行个体相同的熵区578的执行个体内的熵级574。换句话说,重新定位到存储块168的执行个体的可存储对象414和可高速缓存对象430是熵区578的相同执行个体。举例来说,具有“区1”的熵区578的执行个体内的熵级574的可高速缓存对象430可移动到存储块168的开启执行个体,其已分配以存储“区1”的可存储对象414的其它执行个体。类似地,“区2”和“区3”的可高速缓存对象430可移动到存储块168的开启执行个体,其已分配以分别存储“区2”和“区3”的可存储对象414的其它执行个体。开启执行个体指代可用于存储可存储对象414的执行个体的存储块168。
在重新定位步骤546中,高速缓存管理过程410可进一步处理可存储对象414的新的或传入(incoming)的执行个体,然而其并不具有熵级574的相关联执行个体。举例来说,可存储对象414的新的或传入的执行个体最初可存储在分级块520中。分级块520是分配以存储可存储对象414的存储块168的特定执行个体,然而其并不具有熵级574的相关联值。作为一实例,分级块520可以是不具有块熵594的值的存储块168的执行个体。作为另一实例,分级块520没有分配以存储熵区578的特定执行个体的可存储对象414。在下文中,将在图6中详细论述用于操控可存储对象414的新执行个体或可存储对象414的传入执行个体的细节,所述可存储对象414不具有熵级574的对应值。
在对象可逐出性步骤544、重新定位步骤546或其组合之后,高速缓存管理过程410可更新对象注册表411。举例来说,高速缓存管理过程410可实施注册表维护步骤540以更新对象注册表411,以更新用于可存储对象414的对象信息518,例如已重新定位到存储块168的另一执行个体的可高速缓存对象430;进行擦除操作的可逐出对象412、无效对象516或其组合;或其组合。
装置控制单元152可利用存储器垃圾收集器162以执行如上文所描述的擦除块识别步骤548。此外,存储器垃圾收集器162可与存储I/O接口164通信以发布对擦除块420的擦除命令或对擦除块420执行擦除操作。又另外,装置控制单元152可实施以上步骤,例如注册表维护步骤540、熵计算步骤572、重新定位步骤546或其组合,直到擦除块420中的可存储对象414中的每一个已处理为止。更具体地说,可重复步骤中的每一个直到可高速缓存对象430已移动到存储块168的新执行个体、擦除块420的每一执行个体已进行擦除操作或其组合为止。
已发现用于键值对165的自逐出的逐出策略使得例如存储器装置104的非易失性存储器装置能够更好地充当高速缓存装置。
现参看图6,其中示出计算系统100的图4的高速缓存管理过程的组件的示意性实例。图6描绘基于逐出阈值416将可存储对象414作为可逐出对象412和可高速缓存对象430的评估。
存储块168中的每一个可包含可逐出对象412、无效对象516、可高速缓存对象430或其组合。举例来说,与具有块熵594的高相对值的存储块168相比,具有图5的块熵594的最低相对值的存储块168可包含高数量的无效对象516和可逐出对象412,所述具有块熵594的高相对值的存储块168可包含极少到没有可逐出对象412或无效对象516的执行个体。基于相对于存储块168的其它执行个体的块熵594,可将多个存储块168表示为擦除块420。举例来说,具有块熵594的最低相对值的存储块168可视为擦除块420的候选项。作为一特定实例,可基于服务质量(QoS)要求来确定表示为擦除块420的存储块168的数量。
在执行擦除操作之前,可根据用于可高速缓存对象430的图5的熵级574将可高速缓存对象430从擦除块420中重新定位到存储块168的其它执行个体。更具体地说,可将可高速缓存对象430分别重新定位到具有对应于熵区578的相同执行个体的熵级574和块熵594的存储块168。作为一实例,可将具有与“区1”或“区2”的熵区578对应的熵级574的可高速缓存对象430分别重新定位到与“区1”或“区2”的熵区578对应的存储块168。在并不具有熵级574的计算出的值的可存储对象414的特定实例中,可将这类由存储器装置104或主机存储单元114接收的新的或最近的可存储对象414重新定位到图6的分级块520。
现参看图7,其中示出图4的高速缓存管理过程410的存储操作的流程图。在主机装置102、存储器装置104或其组合的启动期间,高速缓存管理过程410可将存储块168中的每一个表示为存储块168的空闲执行个体。存储块168的空闲执行个体仍不与图5的熵区578的特定执行个体相关联。存储块168的空闲执行个体的一部分可分配为图5的分级块520。分级块520是不具有块熵594的对应值或指定到熵区578的执行个体的存储块168的执行个体。
流程图可基于指令或请求开始存储操作以存储可存储对象414的执行个体。高速缓存管理过程410可在对象查询步骤710中处理请求或指令。在对象查询步骤710中,可通过图4的对象注册表411来针对对应于图4的可存储对象414的图5的对象信息518进行检索,所述可存储对象414是存储操作的目标。
在对象注册表411中并不存在用于可存储对象414的对象信息518的情况下,例如在可存储对象414是用于存储在图1的存储器装置104或图1的主机存储单元114上的可存储对象414的新的或传入的执行个体时,高速缓存管理过程410可继续进行到信息产生步骤720。信息产生步骤720用于产生对应于可存储对象414的新执行个体的对象信息518的新执行个体。举例来说,可产生对象信息518以包含图5的程序时间戳552、图5的活动日志554、图5的对象大小560或其组合以供用于可存储对象414的新执行个体。
一旦用于可存储对象414的新执行个体的对象信息518在信息产生步骤720中产生,或如果对象信息518存在于对象查询步骤710中的对象注册表411中,那么高速缓存管理过程410可确定分级块520是否可用于存储操作。在存储块168的空闲执行个体不可用于存储可存储对象414情况下,高速缓存管理过程410可发起包含图5的擦除块识别步骤548和图5的相关联步骤的垃圾收集过程,以产生存储块168的空闲执行个体。可分配存储块168的新产生的空闲执行个体以用于在块分配步骤740中将可存储对象414的新执行个体存储为分级块520。此外,可根据熵区578来分配存储块168的空闲执行个体。举例来说,在与熵区578的特定执行个体相关联的存储块168的数量不足以存储熵区578的相同执行个体的可存储对象414时,可对应于熵区578中的一个分配存储块168的空闲执行个体以存储可存储对象414、可高速缓存对象430或其组合。
一旦存储块168的空闲执行个体在块分配步骤740中产生或在存储块168的空闲执行个体可用于分配为分级块520的情况下,存储操作可继续进行到对象存储步骤730。在对象存储步骤730中,高速缓存管理过程410可存储可存储对象414的新的或传入的执行个体。在一个实施方案中,由存储器装置104或主机存储单元114接收的可存储对象414的新的或传入的执行个体可存储在分级块520中。在另一实施方案中,在不考虑与存储块168相关联的熵区578的特定执行个体的情况下,由存储器装置104或主机存储单元114接收的可存储对象414的新的或传入的执行个体可最初存储在存储块168的任意执行个体中,并且随后在针对可存储对象414计算图5的熵级574时移动。
在已存储可存储对象414之后,存储操作可继续进行到对象信息更新步骤750和块信息更新步骤760。在对象信息更新步骤750中,高速缓存管理过程410可更新对象注册表411中的对象信息518,包含程序时间戳552、活动日志554、对象大小560或其组合。类似地,在块信息更新步骤760中,高速缓存管理过程410可更新与存储块168相关联的信息(例如块熵594)以及与存储块168中的可存储对象414相关联的其它信息。
现参看图8,其中示出图4的高速缓存管理过程410的取回操作的流程图。取回操作可由指令或请求启动以在图1的存储器装置104或图1的主机存储单元114上存取图4的可存储对象414。流程图可基于指令或请求开始取回操作以存取可存储对象414的执行个体。
高速缓存管理过程410可在对象查询步骤810中处理请求或指令。在对象查询步骤810中,可通过图4的对象注册表411来针对为取回操作的目标的图4的可存储对象414的执行个体、对应于可存储对象414的图5的对象信息518或其组合进行检索。在并不存在可存储对象414的请求的执行个体的情况下,高速缓存管理过程410可产生错误通知。
在可存储对象414的请求的执行个体已存在且取回请求已实现之后,取回操作可继续进行到对象信息更新步骤820和块信息更新步骤830。在对象信息更新步骤820中,高速缓存管理过程410可更新对象注册表411中的对象信息518,例如包含图5的活动频率556、图5的最近活动558的活动日志554,对象大小560,到期时间或其组合。类似地,在块信息更新步骤830中,高速缓存管理过程410可更新与存储块168相关联的信息(例如块熵594)以及与存储块168中的可存储对象414相关联的其它信息。
现参看图9,其中示出操作本发明实施例中的计算系统100的方法900的流程图。方法900包含:在框902中将可存储对象存储在存储器存储单元的存储块中,所述存储器存储单元配置为存储器高速缓存;在框904中基于逐出策略来计算可存储对象的熵级;在框906中基于存储在存储块中的可存储对象的熵级来计算所述存储块中的每一个的块熵;在框908中从存储块中选择擦除块,其中擦除块是具有块熵的最低值的存储块的执行个体;以及在框910中对擦除块执行擦除操作。方法900的框可由图1的存储器装置104的单元实施,所述单元例如如上文图3、上文图5、上文图7、上文图8或其组合的流程中所描述的图1的装置控制单元152和图1的存储器存储单元154。举例来说,框902的方法可由装置控制单元152通过图1的存储I/O接口164实施。
所得方法、过程、设备、装置、产品和/或系统是直接的、有成本效益的、不复杂的、高度多功能、准确、敏感且有效的,且可通过适配已知组件用于准备、高效且经济的制造、应用和利用来实施。本发明的实施例的另一重要方面在于其有价值地支持且服务于降低成本、简化系统以及增加性能的历史趋势。
本发明的实施例的这些和其它有价值的方面因此将现有技术状态推进到至少下一个水平。
虽然已与特定最佳模式结合而描述了本发明,但应理解,本领域的技术人员根据前述描述将明了许多替代方案、修改和变化。因此,希望涵盖落入所包含权利要求书的范围内的所有此类替代方案、修改以及变化。本文阐述或附图中所示的所有内容应在说明性和非限制性意义上来解释。
Claims (20)
1.一种计算系统,其特征在于,包括:
存储器存储单元,具有存储块,配置为存储器高速缓存以存储可存储对象;以及
装置控制单元,耦合到所述存储器存储单元,被设置为用以:
基于逐出策略来计算所述可存储对象的熵级;
基于所述存储块中的所述可存储对象的所述熵级来计算所述存储块中的每一个的块熵;
从所述存储块中选择擦除块,其中所述擦除块是具有所述块熵的最低值的所述存储块的执行个体;以及
对所述擦除块执行擦除操作。
2.根据权利要求1所述的计算系统,其特征在于,所述装置控制单元被设置为用以基于包含最早策略的所述逐出策略来计算所述熵级。
3.根据权利要求1所述的计算系统,其特征在于,所述装置控制单元被设置为用以基于包含频率最低策略的所述逐出策略来计算所述熵级。
4.根据权利要求1所述的计算系统,其特征在于,所述装置控制单元被设置为用以基于包含到期策略的所述逐出策略来计算所述熵级。
5.根据权利要求1所述的计算系统,其特征在于,所述装置控制单元被设置为用以发起选择所述擦除块以及对所述擦除块执行所述擦除操作的非请求启动。
6.根据权利要求1所述的计算系统,其特征在于,所述装置控制单元被设置为用以为对象注册表中的所述可存储对象中的每一个维护包含程序时间戳、活动日志或其组合的所述可存储对象的所述对象注册表。
7.根据权利要求1所述的计算系统,其特征在于,所述装置控制单元被设置为用以在执行所述擦除操作之前将可高速缓存对象从所述擦除块中重新定位到所述存储块的另一执行个体,其中基于存储在所述存储块的所述另一执行个体上的所述可存储对象的熵区来确定用于重新定位所述可高速缓存对象的所述存储块的所述另一执行个体。
8.根据权利要求1所述的计算系统,其特征在于,所述装置控制单元被设置为用以基于与所述存储块中的一个相关联的所述可存储对象的所述熵级的平均值或中位值来选择所述擦除块。
9.根据权利要求1所述的计算系统,其特征在于,所述装置控制单元被设置为用以分配分级块以存储所述可存储对象的传入的或新的执行个体。
10.根据权利要求1所述的计算系统,其特征在于,所述装置控制单元被设置为用以基于所述熵级来将所述可存储对象分类到熵区中。
11.一种操作计算系统的方法,其特征在于,包括:
将可存储对象存储在存储器存储单元的存储块中,所述存储器存储单元配置为存储器高速缓存;
基于逐出策略来计算所述可存储对象的熵级;
基于存储在所述存储块中的所述可存储对象的所述熵级来计算所述存储块中的每一个的块熵;
从所述存储块中选择擦除块,其中所述擦除块是具有所述块熵的最低值的所述存储块的执行个体;以及
对所述擦除块执行擦除操作。
12.根据权利要求11所述的操作计算系统的方法,其特征在于,基于逐出策略来计算所述熵级包含基于最早策略来计算所述熵级。
13.根据权利要求11所述的操作计算系统的方法,其特征在于,基于逐出策略来计算所述熵级包含基于频率最低策略来计算所述熵级。
14.根据权利要求11所述的操作计算系统的方法,其特征在于,基于逐出策略来计算所述熵级包含基于到期策略来计算所述熵级。
15.根据权利要求11所述的操作计算系统的方法,更包括发起选择所述擦除块以及对所述擦除块执行所述擦除操作的非请求启动。
16.根据权利要求11所述的操作计算系统的方法,其特征在于,更包括为对象注册表中的所述可存储对象中的每一个维护包含程序时间戳、活动日志或其组合的所述可存储对象的所述对象注册表。
17.根据权利要求11所述的操作计算系统的方法,其特征在于,更包括在执行所述擦除操作之前将可高速缓存对象从所述擦除块中重新定位到所述存储块的另一执行个体,其中基于存储在所述存储块的所述另一执行个体上的可存储对象的熵区来确定用于重新定位所述可高速缓存对象的所述存储块的所述另一执行个体。
18.根据权利要求11所述的操作计算系统的方法,其特征在于,选择所述擦除块包含基于与所述存储块中的一个相关联的所述可存储对象的所述熵级的平均值或中位值来选择所述擦除块。
19.根据权利要求11所述的操作计算系统的方法,其特征在于,更包括分配分级块以存储所述可存储对象的传入的或新的执行个体。
20.根据权利要求11所述的操作计算系统的方法,其特征在于,更包括基于所述熵级来将所述可存储对象分类到所述可存储对象的熵区中。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/812,900 US9983999B2 (en) | 2016-01-22 | 2017-11-14 | Computing system with cache management mechanism and method of operation thereof |
US15/812,900 | 2017-11-14 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109783006A true CN109783006A (zh) | 2019-05-21 |
CN109783006B CN109783006B (zh) | 2022-05-17 |
Family
ID=66496224
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810770652.1A Active CN109783006B (zh) | 2017-11-14 | 2018-07-13 | 计算系统及操作计算系统的方法 |
Country Status (2)
Country | Link |
---|---|
KR (1) | KR102347871B1 (zh) |
CN (1) | CN109783006B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112463626A (zh) * | 2020-12-10 | 2021-03-09 | 网易(杭州)网络有限公司 | 内存泄漏定位方法、装置、计算机设备及存储介质 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11853160B2 (en) * | 2022-05-27 | 2023-12-26 | Western Digital Technologies, Inc. | Variable length ECC code according to data entropy in NVMe key value pair devices |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070005901A1 (en) * | 2004-06-14 | 2007-01-04 | Quickshift, Inc. | Adaptive input / output compressed system and data cache and system using same |
US20130097387A1 (en) * | 2011-10-14 | 2013-04-18 | The Board Of Trustees Of The Leland Stanford Junior University | Memory-based apparatus and method |
US20130282965A1 (en) * | 2010-05-05 | 2013-10-24 | Microsoft Corporation | Flash memory cache including for use with persistent key-value store |
CN103558992A (zh) * | 2011-02-24 | 2014-02-05 | 泰若考特股份有限公司 | 堆外直接内存数据存储器,创建和/或管理堆外直接内存数据存储器的方法,和/或包括堆外直接内存数据存储器的系统 |
US20150242227A1 (en) * | 2014-02-25 | 2015-08-27 | Dynavisor, Inc. | Dynamic Information Virtualization |
US20160269502A1 (en) * | 2012-11-21 | 2016-09-15 | International Business Machines Corporation | Rdma-optimized high-performance distributed cache |
US20160285996A1 (en) * | 2015-03-26 | 2016-09-29 | Alcatel Lucent Usa Inc. | Hierarchical cost based caching for online media |
KR20170088276A (ko) * | 2016-01-22 | 2017-08-01 | 삼성전자주식회사 | 캐시 관리 메커니즘을 위한 컴퓨팅 시스템 및 그것의 동작 방법 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9430376B2 (en) * | 2012-12-26 | 2016-08-30 | Western Digital Technologies, Inc. | Priority-based garbage collection for data storage systems |
-
2018
- 2018-05-30 KR KR1020180061798A patent/KR102347871B1/ko active IP Right Grant
- 2018-07-13 CN CN201810770652.1A patent/CN109783006B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070005901A1 (en) * | 2004-06-14 | 2007-01-04 | Quickshift, Inc. | Adaptive input / output compressed system and data cache and system using same |
US20130282965A1 (en) * | 2010-05-05 | 2013-10-24 | Microsoft Corporation | Flash memory cache including for use with persistent key-value store |
CN103558992A (zh) * | 2011-02-24 | 2014-02-05 | 泰若考特股份有限公司 | 堆外直接内存数据存储器,创建和/或管理堆外直接内存数据存储器的方法,和/或包括堆外直接内存数据存储器的系统 |
US20130097387A1 (en) * | 2011-10-14 | 2013-04-18 | The Board Of Trustees Of The Leland Stanford Junior University | Memory-based apparatus and method |
US20160269502A1 (en) * | 2012-11-21 | 2016-09-15 | International Business Machines Corporation | Rdma-optimized high-performance distributed cache |
US20150242227A1 (en) * | 2014-02-25 | 2015-08-27 | Dynavisor, Inc. | Dynamic Information Virtualization |
US20160285996A1 (en) * | 2015-03-26 | 2016-09-29 | Alcatel Lucent Usa Inc. | Hierarchical cost based caching for online media |
KR20170088276A (ko) * | 2016-01-22 | 2017-08-01 | 삼성전자주식회사 | 캐시 관리 메커니즘을 위한 컴퓨팅 시스템 및 그것의 동작 방법 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112463626A (zh) * | 2020-12-10 | 2021-03-09 | 网易(杭州)网络有限公司 | 内存泄漏定位方法、装置、计算机设备及存储介质 |
CN112463626B (zh) * | 2020-12-10 | 2023-07-11 | 网易(杭州)网络有限公司 | 内存泄漏定位方法、装置、计算机设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN109783006B (zh) | 2022-05-17 |
KR102347871B1 (ko) | 2022-01-06 |
KR20190054882A (ko) | 2019-05-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11531617B2 (en) | Allocating and accessing memory pages with near and far memory blocks from heterogenous memories | |
CN105117180B (zh) | 一种数据存储方法和装置以及固态硬盘 | |
US8352517B2 (en) | Infrastructure for spilling pages to a persistent store | |
TWI627536B (zh) | 用於具有調適分割之一共用快取之系統及方法 | |
CN108829344A (zh) | 数据存储方法、装置及存储介质 | |
EP3089039B1 (en) | Cache management method and device | |
US9983999B2 (en) | Computing system with cache management mechanism and method of operation thereof | |
US9501419B2 (en) | Apparatus, systems, and methods for providing a memory efficient cache | |
US20110252215A1 (en) | Computer memory with dynamic cell density | |
US9372810B2 (en) | Collaborative caching | |
US20130205089A1 (en) | Cache Device and Methods Thereof | |
CN105917318A (zh) | 用于实现基于ssd的i/o高速缓存的系统和方法 | |
KR102538126B1 (ko) | 테일 레이턴시를 인식하는 포어그라운드 가비지 컬렉션 알고리즘 | |
US10387309B2 (en) | High-performance distributed caching | |
US10496541B2 (en) | Dynamic cache partition manager in heterogeneous virtualization cloud cache environment | |
JP2014164769A (ja) | ホストのサービス品質インジケータに重みを割り当てるための装置および方法ならびに記憶媒体 | |
WO2016135570A1 (en) | Using access-frequency hierarchy for selection of eviction destination | |
CN102346682A (zh) | 信息处理装置及信息处理方法 | |
CN113254358A (zh) | 用于地址表高速缓存管理的方法和系统 | |
US20240036756A1 (en) | Systems, methods, and devices for partition management of storage resources | |
KR20170052441A (ko) | 중앙 집중 분산 시스템 및 그것의 동작 방법 | |
CN109783006A (zh) | 计算系统及操作计算系统的方法 | |
US9851925B2 (en) | Data allocation control apparatus and data allocation control method | |
JP2020181474A (ja) | 情報処理装置、分散処理システム及び分散処理プログラム | |
CN109144431A (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 |