CN108694134B - 在混合dram/nand存储器中降低读取-修改-写入开销的技术 - Google Patents

在混合dram/nand存储器中降低读取-修改-写入开销的技术 Download PDF

Info

Publication number
CN108694134B
CN108694134B CN201810315719.2A CN201810315719A CN108694134B CN 108694134 B CN108694134 B CN 108694134B CN 201810315719 A CN201810315719 A CN 201810315719A CN 108694134 B CN108694134 B CN 108694134B
Authority
CN
China
Prior art keywords
cache
memory
end memory
write buffer
cache line
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
CN201810315719.2A
Other languages
English (en)
Other versions
CN108694134A (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.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics 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 Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of CN108694134A publication Critical patent/CN108694134A/zh
Application granted granted Critical
Publication of CN108694134B publication Critical patent/CN108694134B/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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • G06F12/127Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning using additional replacement algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/21Employing a record carrier using a specific recording technology
    • G06F2212/214Solid state disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6022Using a prefetch buffer or dedicated prefetch cache
    • 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

一种从前端存储器选择数据的多个高速缓存行中的高速缓存行用于逐出的方法,该方法包括:将基线替换分数分配给高速缓存的多个通道中的每一通道,所述通道分别存储高速缓存行;基于存储在每一通道中的高速缓存行的有效性程度将有效性分数分配给每个通道;基于通道的基线替换分数和通道的有效性分数的函数将逐出决定分数分配给每个通道;以及选择具有最高逐出决定分数的通道的高速缓存行作为要逐出的高速缓存行。

Description

在混合DRAM/NAND存储器中降低读取-修改-写入开销的技术
技术领域
本公开的一些实施例一般涉及存储器(memory)设备结构,并且涉及存储器设备管理的方法。
背景技术
在存储器存储领域,存储大量存储器的数据中心试图实现高容量、高性能、低功率使用和低成本。闪存可能是数据中心的可行候选,因为与动态随机存取存储器(DRAM)相比,闪存能够以降低的成本提供高容量和高效的功率使用。例如,闪存能够提供每模块千兆字节的存储容量,是使用DRAM技术可以实现的容量的10倍。此外,闪存使用较低的待机功率。
不幸的是,与DRAM相比,闪存通常提供更弱的性能,同时也具有更有限的耐用性。例如,某些类型的闪存(例如,ZNAND)可能具有比使用DRAM技术所实现的明显更长的读取和写入操作的等待时间。
发明内容
本公开的一些实施例,提供了包括具有降低的开销和降低的功耗的读取-修改-写入的存储器管理操作的方法,以及能够执行这些方法的存储器设备。
根据一些实施例,提供了一种从前端存储器选择数据的多个高速缓存行中的高速缓存行用于逐出的方法,该方法包括:将基线替换分数分配给高速缓存通道的多个通道中的每一通道,所述通道分别存储高速缓存行;基于存储在每一通道中的高速缓存行的有效性程度将有效性分数分配给每个通道;基于通道的基线替换分数和通道的有效性分数的函数将逐出决定分数分配给每个通道;以及选择具有最高逐出决定分数的通道的高速缓存行作为要逐出的高速缓存行。
基线替换分数可对应于通道的高速缓存行的使用新近程度或通道的高速缓存行的使用频率。
该方法可以进一步包括将加权因子分配给有效性分数,或者将加权因子分配给基线替换分数。
该方法可以进一步包括将对应于有效性分数的加权因子存储在寄存器中,或将对应于基线替换分数的加权因子存储在寄存器中。
该方法可以进一步包括对存储对应于有效性分数的加权因子的寄存器进行编程,或者对存储对应于基线替换分数的加权因子的寄存器进行编程。
基线替换分数可以是随机分数,并且该方法可以进一步包括利用随机数生成器来生成随机分数。
该方法还可以包括通过读取每个高速缓存行的有效比特并且运行对每个高速缓存行的有效比特的计数来确定有效性分数。
该方法可以进一步包括逐出被选择用于逐出的高速缓存行。
根据一些实施例,提供了一种用于使用存储器模块实现预读取操作的存储器高速缓存控制器,该存储器高速缓存控制器被配置为:确定后端存储器或前端存储器是否繁忙;当后端存储器和前端存储器都不繁忙时,基于写入缓冲区集合计数器对写入缓冲区的写入缓冲区元数据进行索引;读取写入缓冲区的有效比特;确定写入缓冲区的所有高速缓存行是否完全有效;当写入缓冲区的所有高速缓存行被确定为完全有效时,将写入缓冲区集合计数器递增1;当并非写入缓冲区的所有高速缓存行都被确定为完全有效时,选择写入缓冲区的不完全有效的高速缓存行作为用于逐出的替换行;从后端存储器预读取该替换行;以及将写入缓冲区集合计数器递增1。
根据一些实施例,提供了一种使用存储器模块执行读取-修改-写入操作的方法,该方法包括:基于后端存储器的繁忙度并且基于前端存储器的繁忙度,确定何时执行预读取操作;以及基于写入缓冲区的高速缓存行的有效性确定要预读取哪个高速缓存行。
确定何时执行预读取操作可以包括维护未命中状态处理寄存器(MSHR),用于跟踪发送到后端存储器的媒体控制器的待处理请求。
该方法可以进一步包括当MSHR低于阈值时向后端存储器发送读取请求以执行预读取操作。
该阈值可以基于后端存储器的特性。
该方法可以进一步包括基于操作条件调整阈值。
基于写入缓冲区的高速缓存行的有效性确定要预读取哪个高速缓存行可以包括读取写入缓冲区的有效比特。
读取写入缓冲区的有效比特可以包括在前端存储器的高速缓存中选择数据集合,单独选择该集中的每一行,并且检查每个选定行的数据的有效性。
该方法可以进一步包括基于基线替换分数和数据有效性分数来在该数据集合内选择用于逐出的高速缓存行。
该方法还可以包括监视前端存储器的控制器中的事务队列,其中前端存储器的繁忙度对应于所述事务队列。
确定要预读取哪个高速缓存行可以发生在确定前端存储器的繁忙度低于第一阈值并且后端存储器的繁忙度低于第二阈值之后。
该方法可以进一步包括维护WB集合计数器,并且基于WB集计数器在前端存储器的高速缓存中选择数据集合中的行用于逐出。
因此,因为本公开的实施例的ZDIMM能够提供基线替换策略和数据有效性之间的加权平衡,所以这些实施例提供了选择用于逐出的数据的新颖方法,并且因此能够降低RMW操作的功率开销同时提高系统性能。
附图说明
根据以下结合附图的描述,可以更加详细地理解一些实施例,其中:
图1是示出根据本公开的实施例的ZNAND双列直插式存储器模块(ZNAND dual in-line memory module,ZDIMM)的框图。
图2是示出根据本公开的实施例的写入操作的框图。
图3是根据本公开的实施例的用于基于加权逐出策略(eviction policy)选择用于数据逐出的数据高速缓存的通道的表格的示例;以及
图4是描述根据本公开的实施例的方法的示例的流程图。
具体实施方式
本发明构思的特征和实现该构思的方法可以通过参考以下实施例和附图的详细描述而更容易理解。在下文中,将参照附图更详细地描述实施例,其中在整篇中相似的附图标记表示相似的元件。然而,本发明可以以各种不同的形式来实施,并且不应该被解释为仅限于在此示出的实施例。相反,提供这些实施例作为例子,使得本公开是彻底和完整的,并且将向本领域技术人员充分地传达本发明的方面和特征。因此,可能不会描述本领域普通技术人员完全理解本发明的方面和特征所不需要的过程、元件和技术。除非另有说明,否则在整个附图和书面说明书中,相似的附图标记表示相似的元件,并且因此将不重复其描述。在附图中,为了清楚起见,元件、层和区域的相对尺寸可能被夸大。
在以下说明中,为解释的目的,陈述许多具体细节,以便透彻理解各种实施例。然而,显而易见的是,可以在没有这些具体细节的情况下或者利用一个或多个等同布置来实施各种实施例。在其他情况下,以框图形式示出公知的结构和设备,以避免不必要地模糊各种实施例。
应该理解的是,虽然这里可以使用术语“第一”、“第二”、“第三”等来描述各种元件、部件、区域、层和/或部分,但是这些元件、部件、区域、层和/或部分不应受这些术语的限制。这些术语用于区分一个元件、部件、区域或部分与另一个元件、部件、区域或部分。因此,下面描述的第一元件、部件、区域或部分可以被称为第二元件、部件、区域或部分,而不脱离本发明的精神和范围。
为了便于说明,在此可以使用诸如“在...下方”、“在...下面”、“下”、“在...之下”、“在...之上”、“上”等的空间上相对的术语来描述一个元件或特征与图中所示的另一个元件或特征的关系。应该理解的是,除了图中所示的取向之外,空间上相对的术语意在包含使用中或操作中的设备的不同取向。例如,如果图中的设备翻转,那么被描述为在其他元件或特征“下面”或“下方”或“之下”的元件将取向为在其他元件或特征“之上”。因此,示例性术语“在...下面”和“在...之下”可以包括上方和下方的取向。设备可以以其他方式取向(例如,旋转90度或处于其他朝向),并且相应地解释这里使用的空间上相对的描述词。
应该理解的是,当元件、层、区域或部件被称为“在另一元件、层、区域或部件上”、“连接到”或“耦合到”另一元件、层、区域或部件时,可以是直接在其上,连接到或耦合到它,或者可以存在一个或多个中间元件、层、区域或部件。此外,还将理解,当元件或层被称为在两个元件或层“之间”时,它可以是两个元件或层之间的唯一元件或层,或者一个或多个中间元件或层也可能存在。
为了本公开的目的,“X、Y和Z中的至少一个”和“从由X、Y和Z组成的组中选择的至少一个”可以被解释为仅X、仅Y、仅Z,或者X、Y和Z中的两个或更多个的任意组合,例如XYZ、XYY、YZ和ZZ。在整个说明书中,相似数字指代相似的元件。如本文所使用的,术语“和/或”包括一个或多个相关的所列项目的任何和所有组合。
这里使用的术语仅用于描述特定实施例的目的,而不意图限制本发明。如本文所使用的,单数形式“一”和“一个”也旨在包括复数形式,除非上下文另有明确指示。将进一步理解的是,当在本说明书中使用时,术语“包括”和“包含”规定存在所陈述的特征、整体、步骤、操作、元件和/或组件,但不排除一个或多个其他特征、整体、步骤、操作、元件、组件或其组合的存在或增加。如本文所使用的,术语“和/或”包括一个或多个相关的所列项目的任何和所有组合。诸如“……中的至少一个”之类的表达当在元件列表之后时,修饰元件的整个列表并且不修饰列表的各个元件。
如本文所使用的,术语“基本上”、“约”以及类似术语被用作近似术语而不是程度术语,并且旨在说明测量值或计算值中的固有偏差,这些偏差将被本领域普通技术人员认可。此外,当描述本公开的实施例时,“可以”的使用是指“本公开的一个或多个实施例”。如本文所使用的,术语“使用”可以被认为与术语“利用”同义。而且,术语“示例性”旨在表示示例或说明。
当某个实施例可以以不同方式实现时,特定的处理顺序的执行可以与所描述的顺序不同。例如,两个连续描述的过程可以基本上同时执行两个,或者以与所描述的顺序相反的顺序执行。
而且,本文公开和/或列举的任何数值范围旨在包括包含在所述范围内的具有相同数值精度的所有子范围。例如,“1.0至10.0”的范围旨在包括所述最小值1.0和所述最大值10.0之间(并且包括)的所有子范围,即具有等于或大于1.0的最小值,以及等于或小于10.0的最大值,例如2.4至7.6。本文所述的任何最大数值限制旨在包括其中包含的所有较低数值限制,并且本说明书中所述的任何最小数值限制旨在包括其中包含的所有较高数值限制。因此,申请人保留修改本说明书(包括权利要求书)的权利,以明确记载包含在本文明确记载的范围内的任何子范围。所有这些范围旨在在本说明书中固有地描述。
这里参考作为实施例和/或中间结构的示意图的截面图来描述各种实施例。因此,由于例如制造技术和/或公差的原因,预计会出现图示形状的变化。因此,这里公开的实施例不应被解释为限于区域的特定示出的形状,而是包括例如由制造引起的形状的偏差。例如,示出为矩形的注入区域通常在其边缘处具有圆形或弯曲的特征和/或注入浓度的梯度,而不是从注入区域到非注入区域的二元变化。类似地,通过注入形成的掩埋区域可以导致在掩埋区域和注入发生的表面之间的区域中的一些注入。因此,附图中示出的区域本质上是示意性的,并且它们的形状并不旨在示出设备的区域的实际形状,并且不旨在限制。
可以利用任何合适的硬件、固件(例如专用集成电路)、软件或软件、固件和硬件的组合来实现根据本文所述的本公开的实施例的电子或电气设备和/或任何其他相关设备或部件。例如,这些设备的各种部件可以形成在一个集成电路(IC)芯片上或分开的IC芯片上。此外,可以在柔性印刷电路膜、带载封装(TCP)、印刷电路板(PCB)上实现或者在一个基板上形成这些设备的各种部件。此外,这些设备的各种部件可以是在一个或多个计算设备上的一个或多个处理器上运行的进程或线程,其执行计算机程序指令并且与其他系统部件进行交互以执行本文所述的各种功能。计算机程序指令被存储在存储器中,该存储器可以使用标准存储器设备(例如,随机存取存储器(RAM))在计算设备中实现。计算机程序指令也可以存储在其他非暂时性计算机可读介质中,例如CD-ROM,闪存驱动器等。而且,本领域技术人员应该认识到,可以将各种计算设备的功能组合或集成到单个计算设备中,或者可以将特定计算设备的功能分布在一个或多个其他计算设备上而不偏离本公开的示例性实施例的精神和范围。
除非另外定义,否则这里使用的所有术语(包括技术和科学术语)具有与本发明所属领域的普通技术人员通常理解的相同的含义。应该进一步理解的是,诸如在通用字典中定义的那些术语应该被解释为具有与其在相关技术和/或本说明书的上下文中的含义一致的含义,并且不应该被解释为一个理想化的或过于正式的意义,除非在这里明确地如此定义。
如上所述,RMW操作引入了性能开销和功率开销。本公开的实施例提供了用于降低RMW开销的方法。
图1是示出根据本公开的实施例的ZNAND双列直插式存储器模块(ZNAND dual in-line memory module,ZDIMM)的框图。图2是示出根据本公开的实施例的写入操作的框图。
参考图1,ZNAND双列直插式存储器模块(ZDIMM)100包括作为高速缓冲存储器(cache memory)操作的动态随机存取存储器(DRAM)高速缓存/DRAM 170以及作为主存储器在单个存储器模块100上操作的ZNAND型快闪存储器(例如,ZNAND 130)。DRAM 170包括高速缓存(cache)元数据120,针对读取操作而优化的读取/写入高速缓存(read/write cache,RWC)180,并且还包括针对写入操作优化的写入缓冲区(write buffer,WB)140。
ZDIMM 100还包括高速缓存控制器160,并且还包括用于连接到ZNAND 130的主机(host)控制器190,ZNAND 130操作为高容量后端存储器存储。
尽管以下公开提及图中示出的ZDIMM 100,但是本发明的实施例可以应用于具有以下特性的任何硬件架构:(1)存在两种或更多种存储器类型,其中一种存储器类型充当作为主存储器的另一种存储器类型的高速缓冲存储器;(2)高速缓冲存储器的访问粒度小于主存储器所对应的粒度,并且采用读取-修改-写入操作来维护数据的一致性;(3)主存储器的操作比高速缓冲存储器的操作慢。
参考图2,ZDIMM 100的存储器管理(包括读取-修改-写入(RMW)操作)先前已经受到限制。这些限制是由于以下事实造成的:来自处理器110的写入请求112具有64字节(64B)的粒度,而(对于ZNAND技术)WB 140的回写114的粒度对应于2千字节(2KB)高速缓存行114。因此,对于要写入114到ZNAND 130的数据,数据必须以2KB区块(chunk)写入114。此外,为了执行关于例如2KB高速缓存行中的仅64B的更新,从ZNAND 130将2KB高速缓存行的所有数据读取到高速缓存层(例如,RWC180),然后整个2KB被写回114到ZNAND130,从而由于读取操作而导致不必要的开销。
应该注意,对于高速缓存访问粒度小于主存储器访问粒度的实例,读取-修改-写入操作不一定是有益的。例如,在DRAM中,由于DRAM是可字节寻址的并且能够使用“原地写入(in-place write)”方式进行写入,所以可以更新64B块的8B。
相反,NAND不是可字节寻址的,并且NAND写入操作“不在原地(out-of-place)”进行,意味着写入操作不直接更新保存数据的存储器页面。而是为写入操作分配新页面,并且旧页面被无效。因此,如果写入粒度小于页面大小,则一些有用的数据可能被不必要地无效化。
RMW操作在高速缓存层进行管理。这意味着当高速缓存控制器从WB140向ZNAND写入2KB数据时,2KB数据应该是完全有效的。结果,如果WB 140中的2KB数据仅部分有效(例如,因为处理器110以64B的粒度向WB 140写入118),则高速缓存控制器160应该从ZNAND130读取以获得有效数据的其余部分,从而使2KB完全有效。也就是说,高速缓存控制器160可以首先从ZNAND 130读取以获得有效数据的其余部分,并且可以填充整个2KB数据区块以产生完全有效的2KB高速缓存数据行。
因此,RMW操作引入了性能开销和功率开销。例如,RMW需要从ZNAND 130的额外读取以获得有效数据,并且还需要向WB 140进行额外写入115以使部分有效的2KB高速缓存行完全有效。在一些实施例中,额外写入115可能涉及从ZNAND 130读取2KB,并且将2KB的一部分写入WB 140。因此,当ZNAND读取处于临界路径(critical path)上时,以及当ZNAND读取正在经历尾延迟(tail latency)时,RMW开销会使性能变差。
此外,DRAM 170实际上用作高速缓存。然而,DRAM 170的容量是有限的,并且有时存储器管理可能导致旧数据从DRAM 170中被踢出,并被发送回ZNAND 130,以便为新数据进入而腾出空间(即,逐出数据)。但是,选择从DRAM中逐出哪些数据可能取决于实施的逐出策略。
参考图1和图2,本公开的实施例可以使用新颖的加权逐出策略来改进RMW性能。在下面描述的实施例中,可以在高速缓存层处管理RMW操作。然而,在其他实施例中,可能存在RMW操作不在高速缓存层处进行管理的设计。然而,无论哪个实体管理RMW操作,以下描述的实施例的特征都将保持适用。
例如,关于RMW操作,当将要从DRAM 170中逐出的2KB高速缓存行(即,如果要写回114到ZNAND 130的2KB高速缓存行)是完全有效的,则可以假定两件事。第一,由于高速缓存行是完全有效的,所以从ZNAND 130到WB 140的读取115变得没有必要。也就是说,因为完全有效的2KB高速缓存行已经位于DRAM 170中,所以不需要从ZNAND 130读取相同的数据。第二,向WB 140提供数据以写入WB 140也变得不必要,因为该信息已经包含在WB 140中。
然而,如果要从DRAM 170中逐出的2KB高速缓存行是部分有效的,那么执行从ZNAND 130读取115有效数据以确保数据一致性。也就是说,从ZNAND 130读取115的原因是为了确保要写回或复制到ZNAND 130的2KB高速缓存行是完全有效的。此外,向WB 140的写入数量115取决于有效性百分比,其对应于DRAM170中的2KB高速缓存行的多少百分比是有效的(例如,DRAM 170中2KB高速缓存行的有效64B子行数越大,ZNAND 130需要用有效数据更新的64B子行的数量越少)。例如,如果要从DRAM 130中逐出的2KB高速缓存行的大约91%的数据是有效的,则只有剩余的9%的数据将需要被更新。
作为说明性示例,WB 140中的2KB初始完全无效(即,WB 140是空的)。在初始化之后,处理器110可以向WB 140写入一些有用的数据,由此使得该2KB中的一些64B条目有效。如果处理器110继续向WB 140写入64B数据,并且这些64B数据可能碰巧填充该2KB中的每个可能的64B条目,则该2KB将变得完全有效。然而,处理器110可能不会向WB 140写入许多64B条目,或者64B条目可能不会填充该2KB的全部,从而使得该2KB仅部分有效。之后,如果高速缓存控制器160从WB 140中将2KB逐出到ZNAND130,则可以通过从ZNAND 130读取包含能够使得WB 140中的2KB完全有效的有效64B数据的2KB来执行RMW。处理器110不参与RMW过程。
因此,本实施例在决定哪个高速缓存行将被逐出时利用有效性的概念。用于确定要逐出哪个高速缓存行的逐出决定可以既是基线(baseline)逐出/替换策略的函数,又是高速缓存行有效性的函数(例如,分析过的2KB ZNAND高速缓存行中的有效64B子行数的函数)。也就是说,本公开的实施例提供了与旧的传统逐出策略结合使用的新的逐出策略。这可以通过将逐出决定基于两个因素——基线替换策略和高速缓存行有效性,来完成。
例如,如果在确定从DRAM逐出哪些数据时仅考虑传统的基线替换策略,则可能存在大量的RMW操作(例如,由于逐出具有许多无效条目的高速缓存行)。
类似地,如果在确定要逐出哪个数据时仅考虑高速缓存行有效性,则高速缓存行可能被不合需要地过早逐出(例如,对未来的高速缓存行重用有利的高速缓存行可能被逐出,从而要求这些高速缓存行被重新加载)。例如,重用高速缓存行可能是有益的,并且逐出最近加载的高速缓存行可能增加被逐出的高速缓存行将被再次访问的可能性,并且此后将需要再次加载。因此,在一些情况下,相对更频繁使用的高速缓存行,逐出未被使用或不常使用的高速缓存行可能是有益的。
图3是根据本公开的实施例的用于基于加权逐出策略选择用于数据逐出的数据高速缓存的通道的表格的示例。
参考图3,根据本公开的实施例,通过考虑基线替换策略和高速缓存行有效性二者来确定要逐出哪些数据,减少了RMW开销。如下提供本实施例的加权逐出策略的示例。
作为本实施例的例子,使用四通道高速缓存作为DRAM 170的例子。本示例的基线替换策略是最近最少使用(LRU)替换策略。四通道高速缓存的第一通道(例如,通道0)可以在1到4的范围(指示第一通道是最近最少使用的)上具有4的LRU分数,第二通道(例如,通道1)可以具有3的LRU分数,第三通道(例如,通道2)可以具有2的LRU分数,并且第四通道(例如通道3)可以具有1的LRU分数(指示第四通道是最近使用的)。应该注意的是,在其他实施例中,DRAM 170可以具有不同数量的通道,并且可以使用对各个通道进行排序的不同范围。还应该注意的是,在其他实施例中,可以使用不同的基线替换策略(例如,最不常用的(LFU),先进先出(FIFO),随机等)。
在本示例中,高速缓存行有效性由有效性分数确定,有效性分数可以简单地是分析过的2KB高速缓存行的有效64B子行数的总和。在本示例中,第一通道的有效性分数为20(例如,在高速缓存行的32个64字节子行中有20个子行有效),第二通道的有效性分数为32(例如,2千字节的高速缓存行是完全有效的,意味着其中的所有32个子行都是有效的),第三通道的有效性分数为10,第四通道的有效性分数为5。
本实施例可以通过对每个相应通道的基线替换策略分数(在本示例中为LRU分数)和有效性分数中的任一个或两者进行加权,通过将每个通道的两个加权分数加起来以获得每个通道相应的总计分数/逐出决定分数,然后选择具有最高逐出决定分数的通道用于逐出存储在其中的数据,来作出逐出决定。
在本例中,逐出决定分数可以等于LRU分数乘以x并且加上有效性分数乘以y(即(x*LRU分数)+(y*有效性分数)),其中x和y是加权因子。在图3所示的本例中,x等于10,y等于1,但是可以使用其他权重,并且将根据具体的使用而变化。因此,第一通道的逐出决定分数为60(10*4+1*20),第二通道的逐出决定分数为62(10*3+1*32),第三通道的逐出决定分数是30(10*2+1*10),第四通道的逐出决定分数是15(10*1+1*5)。
因此,由于本例中的第二通道具有最高的逐出决定分数,第二通道是其数据被选择逐出的通道。因此,本实施例能够提供一种新颖的方法来确定逐出决定,其通过基于在多个给定通道中的每一个中存储的分析过的高速缓存行的有效程度来平衡传统的基线替换策略与逐出/替换策略来确定逐出决定。
为了实现本实施例的加权逐出策略,替换分数可以是例如LRU分数(例如,基于使用每通道数据的定时的分数),LFU分数(例如,基于使用每通道中的数据的频率)、或者FIFO分数,其中的任何一个都可以通过替换比特来获得。可替代地,替换分数可以是随机分数,其可以通过随机数发生器来获得(例如,每个通道的基线替换分数可以是随机的,并且可以被加到从它们的加权有效性分数获得的值中)。类似的方法可以用于其它替换策略,诸如nMRU(不是最近使用的)或者可以由ZDIMM 100的高速缓存控制器160实现的任何其他现有的替换策略。
此外,有效性分数可以通过简单地读取有效比特并且运行对每个高速缓存行/通道的有效比特的计数(tally)来确定。此外,应该注意的是,逐出决定分数可以通过使加权因子(例如,x和y)可编程并存储在寄存器中来调整,并且可以通过使用逻辑(例如,通过实现乘加硬件)来实现。
关于本公开的另一个实施例,如前所述,当ZNAND读取处于临界路径上时以及当ZNAND读取正在经历尾延迟时,RMW开销可能会妨碍性能。如下所述,本实施例可以使能预读操作以避免临界路径读取和尾延迟。这可以通过有选择地选择何时预读取并且选择性地选择预读取什么来实现。也就是说,根据另一个实施例,通过进行预读取操作,可以减少RMW开销以避免由于读取数据而造成的性能恶化,从而避免临界路径读取并且避免尾延迟。
例如,关于预读取的条件可以是ZNAND繁忙度、DRAM繁忙度、WB集合索引和/或替换策略的函数。该函数可以指示ZNAND 130的预读取应当发生在ZNAND 130不繁忙时,WB 140的有效比特应当在当前端DRAM 170不繁忙时进行检查,高速缓存行应当跨越集合被均匀地预更新,并且在集合内,将来最有可能被逐出的高速缓存行应当被预更新。
更详细地说,本实施例可以被实现为使得何时预读取可以取决于ZNAND(后端存储器)繁忙度和DRAM(前端存储器)繁忙度。
作为ZNAND繁忙的函数,当ZNAND 130太忙时,执行预读取操作可能是不期望的。但是,当ZNAND 130空闲时,从ZNAND 130的预读取不会对系统性能产生负面影响。因此,在本实施例中,为了确定何时进行预读取操作,高速缓存控制器160可以维护用于跟踪发送到ZNAND媒体控制器的待处理请求的“未命中状态处理寄存器”(miss status handlingregister,MSHR)162。通过监视MSHR 162,高速缓存控制器160可以估计ZNAND 130的繁忙度(例如,到ZNAND 130的大量待处理请求可以指示ZNAND 130在那个时间处于忙碌状态)。因此,如果MSHR 162指示到ZNAND 130的待处理请求的数目小于阈值(例如,ZNAND请求阈值),则可以将读取请求发送到ZNAND 130以进行预读取操作。阈值可以是可调整的值(例如,基于操作条件来调整)。例如,通过执行诊断测试,并且通过将诊断测试的结果发送给高速缓存控制器160,高速缓存控制器160可以确定阈值被设置得太高(例如,ZNAND 130的性能可能由于一些待处理请求导致的繁忙而低得令人不可接受,尽管该阈值指示预计ZNAND 130不会繁忙)。相应地,高速缓存控制器160可以减小阈值,使得即使当具有较少的待处理请求时,更新的阈值也指示ZNAND 130正忙。而且,可以基于ZNAND 130的特性(例如,基于后端存储器的特性)来预定义所述阈值。
在确定何时进行预读取操作之后,高速缓存控制器160可以基于DRAM繁忙度的估计来确定预读取哪个高速缓存行(例如,预读取高速缓存中的哪个位置)。因此,高速缓存控制器160可以读取WB有效比特以确定要预读取哪个高速缓存行。通过读取WB有效比特,高速缓存控制器160可以避免预读取完全有效的高速缓存行。读取WB有效比特可以由具有DRAM元数据访问权的高速缓存控制器160来完成,其可以被存储在高速缓存元数据120中。这可以由位于高速缓存层中的高速缓存控制器160之上的DRAM高速缓存控制器/DRAM控制器122来实现。
而且,DRAM控制器122可以具有事务队列172,并且可以存储发送到DRAM 170的所有待处理命令。DRAM控制器122可监视DRAM控制器122中的事务队列172以估计DRAM 170的繁忙度。为了确保高速缓存控制器对DRAM元数据的访问不影响关键的DRAM高速缓存访问,DRAM控制器122可以监视DRAM控制器122中的事务队列172以估计DRAM 170的繁忙度。如果对DRAM 170的待处理请求的数量小于阈值(例如,DRAM请求阈值),则高速缓存控制器160可以向DRAM 170发送读取请求以读取高速缓存行的有效比特。与ZNAND请求阈值一样,DRAM请求阈值可以是可编程的或者基于DRAM 170的一个或多个特性预定义的值。
根据本实施例,基于上述内容,只有在ZNAND 130和DRAM 170都不忙的情况下才可能发生预读取操作。也就是说,本实施例具有如下的协议,即仅当确定发送到ZNAND媒体控制器的待处理请求的数量低于ZNAND请求阈值并且发送到DRAM 170的待处理请求的数量低于DRAM请求阈值时才确定要预读取什么。
在确定要预读取什么(例如,DRAM高速缓存170中的哪个位置)时,可以使用WB集索引。通过高速缓存控制器160首先选择给定数据集合,然后选择该数据的行(line),高速缓存控制器160可以确定预读取哪个高速缓存行。也就是,高速缓存控制器160可以选择DRAM高速缓存170的多个通道。然后,高速缓存控制器160可以实施加权逐出策略(例如,参照图3描述的加权逐出策略),以针对DRAM高速缓存170的多个通道中的一个作出加权逐出决定。此后,高速缓存控制器160可以预读取在相应通道中包含的该数据行。
在选择给定的数据集合之后,高速缓存控制器160可以实现许多选择协议中的一个,例如轮转集合选择协议(round robin set selection protocol)。例如,高速缓存控制器160可以查看数据的第一排(row)/集合,然后查看下一排,直到最后一排被检查,然后第一排可以被高速缓存控制器160再次检查。在检查数据行/集合的每一个时,高速缓存控制器160可以确定通道(其中每一个通道对应所述排中的一排)中的哪一通道将成为逐出的目标(例如,基于诸如LRU的基线替换策略)。然而,如果高速缓存控制器160在检查该逐出目标通道时,得出该目标通道是完全有效的的结论,则高速缓存控制器可以移动到下一个合适的通道(例如,第二最近最少使用的通道),直到找到不完全有效的通道。因此,高速缓存控制器可以使用轮转集合选择协议来评估每个被检查的数据排或集合的通道的有效性,并且选择用于逐出的一个或多个通道。
为了实施轮转集合选择协议,高速缓存控制器160可以维护对应于WB集合索引的计数器(例如,指示值3的计数器可以指示选择第三集合)。每次执行预读取时,计数器可以加1。此外,当给定的数据集合中的所有高速缓存行都是完全有效的时,计数器可以增加1,并且可以由高速缓存控制器160选择第二数据集合。
也就是说,高速缓存控制器160的计数器可以被初始化为1,使得高速缓存控制器160选择第一数据集合/第一排用于检查。高速缓存控制器160然后可以对第一数据集合执行预读取操作,并且可以确定第一数据集合中的所有高速缓存行是完全有效的。因此,高速缓存控制器160可以确定第一数据集合中没有什么要预读取,然后可以将计数器递增到2。高速缓存控制器160此后可以根据计数器所指示的值来选择第二数据集合用于检查。通过重复该过程,高速缓存控制器160继续以“轮转”方式检查各种数据集合。
此后,可以实施替换策略。例如,在选择集合之后,可以基于上述示例中描述的上述加权逐出决定分数来确定要在该集合内选择的高速缓存行(例如,哪个通道)。加权逐出决定分数可以通过可应用的基线替换策略和数据有效性来确定。因此,如果LRU策略被用作基线替换策略,则高速缓存控制器160可以选择最近最少使用的高速缓存行作为目标。然而,如果根据LRU策略选择的高速缓存行(即,最近最少使用的高速缓存行)是完全有效的,则高速缓存控制器160可以选择仅次于最近最少使用的高速缓存行作为目标。此外,如果基线替换策略是随机的,则高速缓存控制器160可以选择任何不完全有效的随机高速缓存行。
图4是描述根据本公开的实施例的方法的示例的流程图。
参考图4并且为总结上述内容,根据本公开的一个实施例,高速缓存控制器160可以首先监视MSHR 162以估计ZNAND 130是否繁忙,并且还可以监视DRAM控制器事务队列172以估计DRAM 170是否繁忙(S101)。高速缓存控制器160确定ZNAND 130或DRAM 170中的任一个繁忙(S102)。其次,如果高速缓存控制器160确定ZNAND 130或DRAM 170中的任一个繁忙,则高速缓存控制器160可以决定不采取行动(S103)。然而,第三,如果高速缓存控制器160确定ZNAND 130或DRAM 170都不繁忙,则高速缓存控制器160然后可以确定要预读取什么数据(S104)(例如,通过基于WB集合计数器对WB元数据进行索引以选择数据集合中的一行,高速缓存控制器160可以确定预读取哪些数据)。第四,高速缓存控制器160然后可以读取WB 140中的有效比特(S105)。第五,高速缓存控制器160确定所述行是否完全有效(S106)。当高速缓存控制器160从有效比特的读取中确定所有行完全有效时,则WB集合计数器可递增1(S107)。然而,如果高速缓存控制器160确定并非所有行都完全有效,则高速缓存控制器160可以选择不完全有效的高速缓存行作为“替换行”,并且然后可以从ZNAND 130预读取该行(S108)。之后,高速缓存控制器160可以将WB集合计数器递增1(S107),并且可以返回到监视DRAM控制器122的繁忙度和ZNAND 130的繁忙度(S101)。
相应地,本公开的实施例提供加权逐出策略以减少读取-修改-写入(RMW)开销和功耗。此外,所描述的实施例提供基于替换分数、有效性分数和与每个分数相关联的各个权重的逐出决定函数。
此外,本公开的实施例提供了预读取功能,其能够避免RMW的最坏情况性能影响,并且可以基于ZNAND繁忙度、DRAM繁忙度、WB集合公平性(fairness)和高速缓存行逐出可能性。
相应地,所描述的实施例提供执行逐出决定函数的硬件实现以及执行预读取功能的硬件机构。

Claims (11)

1.一种用于利用存储器模块实现预读取操作的存储器高速缓存控制器,所述存储器高速缓存控制器被配置为:
基于对后端存储器的待处理请求的数量是否满足后端存储器阈值数量确定后端存储器是否繁忙;
基于对前端存储器的待处理请求的数量是否满足前端存储器阈值数量来确定前端存储器是否繁忙;
至少部分基于确定后端存储器和前端存储器都不繁忙,基于用于对写入缓冲区集合索引进行计数的写入缓冲区集合计数器来索引写入缓冲区的写入缓冲区元数据;
读取所述写入缓冲区的有效比特;
确定所述写入缓冲区的所有高速缓存行的比特是否完全有效;
确定所述写入缓冲区的所有高速缓存行的比特被确定为完全有效,并且将所述写入缓冲区集合计数器递增1;
确定并非所述写入缓冲区的所有高速缓存行的比特被确定为完全有效,
选择其中的比特不完全有效的写入缓冲区的高速缓存行作为用于逐出的替换行,其中基于确定对前端存储器的待处理请求的数量未能满足第一阈值数量以及对后端存储器的待处理请求的数量未能满足第二阈值数量来选择高速缓存行;
从所述后端存储器预读取所述替换行;以及
将所述写入缓冲区集合计数器递增1。
2.一种利用存储器模块执行预读取操作的方法,所述方法包括:
确定后端存储器被待处理后端工作负载占用的后端繁忙度,所述后端繁忙度对应于对后端存储器的待处理请求的数量;
确定前端存储器被待处理前端工作负载占用的前端繁忙度,所述前端繁忙度对应于对前端存储器的待处理请求的数量;
至少部分基于所述后端繁忙度和所述前端繁忙度来执行预读取操作;以及
基于写入缓冲区的高速缓存行的有效性并且基于确定对前端存储器的待处理请求的数量未能满足第一阈值数量以及对后端存储器的待处理请求的数量未能满足第二阈值数量,确定要预读取哪个高速缓存行。
3.根据权利要求2所述的方法,其中,执行所述预读取操作包括维护未命中状态处理寄存器MSHR,用于跟踪发送到所述后端存储器的媒体控制器的待处理请求。
4.根据权利要求3所述的方法,还包括:确定发送到后端存储器的媒体控制器的待处理请求未能满足阈值数量,以及向所述后端存储器发送读取请求以执行预读取操作。
5.根据权利要求4所述的方法,其中,所述阈值数量基于所述后端存储器的特性。
6.根据权利要求4所述的方法,还包括基于操作条件调整所述阈值数量。
7.根据权利要求2所述的方法,其中,基于所述写入缓冲区的高速缓存行的有效性确定要预读取哪个高速缓存行包括,读取所述写入缓冲区的有效比特。
8.根据权利要求7所述的方法,其中,读取所述写入缓冲区的有效比特包括:
在所述前端存储器的高速缓存中选择数据集合;
单独选择该集合的每一行;以及
检查每个选定行的数据的有效性。
9.根据权利要求8所述的方法,还包括基于基线替换分数和数据有效性分数在所述数据集合内选择用于逐出的高速缓存行。
10.根据权利要求2所述的方法,还包括监视所述前端存储器的控制器中的事务队列,所述前端繁忙度对应于所述事务队列。
11.根据权利要求2所述的方法,还包括:
维护用于对写入缓冲区集合索引进行计数的写入缓冲区集合计数器;以及
基于所述写入缓冲区集合计数器在所述前端存储器的高速缓存中选择用于逐出的数据集合的行。
CN201810315719.2A 2017-04-10 2018-04-10 在混合dram/nand存储器中降低读取-修改-写入开销的技术 Active CN108694134B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201762483910P 2017-04-10 2017-04-10
US62/483,910 2017-04-10
US15/662,072 US10762000B2 (en) 2017-04-10 2017-07-27 Techniques to reduce read-modify-write overhead in hybrid DRAM/NAND memory
US15/662,072 2017-07-27

Publications (2)

Publication Number Publication Date
CN108694134A CN108694134A (zh) 2018-10-23
CN108694134B true CN108694134B (zh) 2023-11-21

Family

ID=63711718

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810315719.2A Active CN108694134B (zh) 2017-04-10 2018-04-10 在混合dram/nand存储器中降低读取-修改-写入开销的技术

Country Status (5)

Country Link
US (1) US10762000B2 (zh)
JP (1) JP6882226B2 (zh)
KR (1) KR102521053B1 (zh)
CN (1) CN108694134B (zh)
TW (1) TWI729264B (zh)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200008759A (ko) * 2018-07-17 2020-01-29 에스케이하이닉스 주식회사 캐시 메모리 및 이를 포함하는 메모리 시스템, 캐시 메모리의 축출 방법
US11281545B2 (en) * 2018-09-07 2022-03-22 University Of Central Florida Research Foundation, Inc. Methods of crash recovery for data stored in non-volatile main memory
CN111506521B (zh) * 2019-01-31 2023-10-20 华为技术有限公司 一种存储器、数据请求写入方法及控制器
KR20200118994A (ko) 2019-04-09 2020-10-19 에스케이하이닉스 주식회사 메모리 시스템, 메모리 컨트롤러 및 그 동작 방법
US10922235B2 (en) 2019-06-26 2021-02-16 Western Digital Technologies, Inc. Method and system for address table eviction management
CN110399316B (zh) * 2019-06-28 2021-10-01 苏州浪潮智能科技有限公司 一种用于业务系统性能优化的方法和装置
US11086791B2 (en) * 2019-08-29 2021-08-10 Micron Technology, Inc. Methods for supporting mismatched transaction granularities
US11288209B2 (en) * 2019-09-20 2022-03-29 Arm Limited Controlling cache entry replacement based on usefulness of cache entry
CN110888600B (zh) * 2019-11-13 2021-02-12 西安交通大学 一种面向nand闪存的缓冲区管理方法
US11436016B2 (en) * 2019-12-04 2022-09-06 Advanced Micro Devices, Inc. Techniques for improving operand caching
US11681617B2 (en) * 2021-03-12 2023-06-20 Arm Limited Cache victim selection based on completer determined cost in a data processing system
US11586552B2 (en) * 2021-05-13 2023-02-21 Apple Inc. Memory cache with partial cache line valid states
US12019542B2 (en) 2022-08-08 2024-06-25 Google Llc High performance cache eviction

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1538284A (zh) * 2003-04-14 2004-10-20 ��ʽ���������Ƽ� 存储设备
CN103324584A (zh) * 2004-12-27 2013-09-25 英特尔公司 用于多核处理器中非一致性高速缓存的系统和方法

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6748495B2 (en) * 2001-05-15 2004-06-08 Broadcom Corporation Random generator
US9478062B2 (en) * 2006-09-19 2016-10-25 Imagination Technologies Limited Memory allocation in distributed memories for multiprocessing
US8554790B2 (en) * 2007-12-18 2013-10-08 Red Hat, Inc. Content based load balancer
US8990506B2 (en) * 2009-12-16 2015-03-24 Intel Corporation Replacing cache lines in a cache memory based at least in part on cache coherency state information
US20110276744A1 (en) * 2010-05-05 2011-11-10 Microsoft Corporation Flash memory cache including for use with persistent key-value store
GB2516091A (en) 2013-07-11 2015-01-14 Ibm Method and system for implementing a dynamic array data structure in a cache line
US9552301B2 (en) * 2013-07-15 2017-01-24 Advanced Micro Devices, Inc. Method and apparatus related to cache memory
US9317448B2 (en) * 2013-07-30 2016-04-19 Advanced Micro Devices, Inc. Methods and apparatus related to data processors and caches incorporated in data processors
US10346059B2 (en) 2013-10-15 2019-07-09 Dell Products, Lp System and method for supporting read requests and write requests for drives having different sector alignments without a RAID
JP6255893B2 (ja) 2013-10-24 2018-01-10 富士通株式会社 ストレージ制御装置、およびストレージ制御プログラム
US9626297B2 (en) * 2014-10-08 2017-04-18 Wisconsin Alumni Research Foundation Memory fault patching using pre-existing memory structures
US10185730B2 (en) 2014-12-31 2019-01-22 Nexenta Systems, Inc. Methods and systems for key-value-tuple-encoded storage
US9720835B1 (en) * 2015-01-30 2017-08-01 EMC IP Holding Company LLC Methods to efficiently implement coarse granularity cache eviction based on segment deletion hints
US9916275B2 (en) * 2015-03-09 2018-03-13 International Business Machines Corporation Preventing input/output (I/O) traffic overloading of an interconnect channel in a distributed data storage system
US11042300B2 (en) * 2015-03-31 2021-06-22 Toshiba Memory Corporation Command load balancing for NVME dual port operations
CN104866238B (zh) 2015-05-25 2018-12-14 华为技术有限公司 访问请求调度方法及装置
KR102461453B1 (ko) 2015-06-10 2022-11-02 삼성전자주식회사 스토리지 장치
US20170083474A1 (en) * 2015-09-22 2017-03-23 Advanced Micro Devices, Inc. Distributed memory controller
US10310997B2 (en) * 2016-09-22 2019-06-04 Advanced Micro Devices, Inc. System and method for dynamically allocating memory to hold pending write requests

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1538284A (zh) * 2003-04-14 2004-10-20 ��ʽ���������Ƽ� 存储设备
CN103324584A (zh) * 2004-12-27 2013-09-25 英特尔公司 用于多核处理器中非一致性高速缓存的系统和方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
姜国松 ; .一种高效、可扩展细粒度缓存管理混合存储研究.计算机科学.2013,(第08期),第79-108页. *

Also Published As

Publication number Publication date
US20180293175A1 (en) 2018-10-11
JP2018181336A (ja) 2018-11-15
TWI729264B (zh) 2021-06-01
TW201837919A (zh) 2018-10-16
KR102521053B1 (ko) 2023-04-13
US10762000B2 (en) 2020-09-01
CN108694134A (zh) 2018-10-23
KR20180114497A (ko) 2018-10-18
JP6882226B2 (ja) 2021-06-02

Similar Documents

Publication Publication Date Title
CN108694134B (zh) 在混合dram/nand存储器中降低读取-修改-写入开销的技术
US8615634B2 (en) Coordinated writeback of dirty cachelines
US20180211708A1 (en) Memory system and control method
EP0557050B1 (en) Apparatus and method for executing processes in a multiprocessor system
US10318365B2 (en) Selective error correcting code and memory access granularity switching
US8645627B2 (en) Memory bus write prioritization
US9298620B2 (en) Selective victimization in a multi-level cache hierarchy
US11500781B2 (en) Methods and apparatuses for addressing memory caches
US20140181402A1 (en) Selective cache memory write-back and replacement policies
US11281585B2 (en) Forward caching memory systems and methods
US7809889B2 (en) High performance multilevel cache hierarchy
US9043570B2 (en) System cache with quota-based control
EP4078387B1 (en) Cache management based on access type priority
US9406361B2 (en) Low latency, high bandwidth memory subsystem incorporating die-stacked DRAM
US20140297961A1 (en) Selective cache fills in response to write misses
US7293141B1 (en) Cache word of interest latency organization
KR101823983B1 (ko) 메모리 디바이스들 및 방법들
US20020108021A1 (en) High performance cache and method for operating same
US9767043B2 (en) Enhancing lifetime of non-volatile cache by reducing intra-block write variation
US7434001B2 (en) Method of accessing cache memory for parallel processing processors
US20240069808A1 (en) Logical unit number queues and logical unit number queue scheduling for memory devices

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