CN108228237B - 用于存储流检测和处理的设备和方法 - Google Patents

用于存储流检测和处理的设备和方法 Download PDF

Info

Publication number
CN108228237B
CN108228237B CN201711317200.XA CN201711317200A CN108228237B CN 108228237 B CN108228237 B CN 108228237B CN 201711317200 A CN201711317200 A CN 201711317200A CN 108228237 B CN108228237 B CN 108228237B
Authority
CN
China
Prior art keywords
address
store
memory
buffer
stream
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
CN201711317200.XA
Other languages
English (en)
Other versions
CN108228237A (zh
Inventor
王昊
迪利普·慕斯卡瑞斯南
布莱恩·C·格雷森
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 CN108228237A publication Critical patent/CN108228237A/zh
Application granted granted Critical
Publication of CN108228237B publication Critical patent/CN108228237B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • 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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/502Control mechanisms for virtual memory, cache or TLB using adaptive policy

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Burglar Alarm Systems (AREA)
  • Control Of Vending Devices And Auxiliary Devices For Vending Devices (AREA)

Abstract

提供一种用于存储流检测和处理的设备和方法。根据一个总体方面,一种设备可包括:加载/存储电路和区域大小检测电路。加载/存储电路可被配置为发出用于将数据存储在存储器系统中的多个存储指令。区域大小检测电路可被配置为至少部分地基于通过在所述多个存储指令中跟踪多个缓存行地址项,从多个缓存器确定用于对存储指令的流进行存储的缓存器,其中,以不同的频率更新每个地址项。

Description

用于存储流检测和处理的设备和方法
本申请要求于2016年12月12日提交的题目为“用于存储流检测和处理的系统和方法”的第62/433,232号美国临时专利申请以及于2017年2月1日提交的第15/422,442号美国专利申请的优先权,这些在先提交的申请的主题通过引用合并于此。
技术领域
本公开总体涉及微处理器,更具体地讲,涉及一种用于存储流检测和处理的系统和方法。
背景技术
处理器(CPU)的上下文中的流数据(streaming data)通常是将数据写入到虚拟空间中的连续的或相连的存储器位置的存储指令或写入指令的序列。通常大的数据块将经由一系列的写入操作或存储操作被移动或存储到存储器。流数据或“存储流(storestreaming)”的典型示例为“存储器复制”,这是将存储器的块从源位置复制到目标位置的常用方法。在硬件中,这种方法转换为从源位置获取数据的加载操作或读取操作的流,接着是将加载的数据复制到目标位置的存储操作或写入操作的流。一些应用可简单地利用存储流来初始化大的存储器块。
有时,这些存储流是非暂时性的。即,数据经常仅被引用一次,然后在近期不被重复使用。例如,典型的存储器复制操作可涉及移动数千字节或数兆字节的数据,这些数据可能在程序执行期间仅被引用一次。将存储数据缓存在处理器的缓存器(例如,2级(L2)缓存器、1级(L1)缓存器和3级(L3)缓存器)内可能置换其他有用的缓存器驻留数据,并且对性能不利。
通常,为了避免缓存器污染,应用可尝试提供指示(例如,通过指令操作代码和存储器类型),以使硬件能够知晓流数据将不被缓存。然而,可能存在指示在指令集内不可用的情况。为了解决这样的顾虑,许多硬件设计结合了动态检测存储的模式的机制,并寻找大规模的存储流模式的情况(以便将它们直接流传输到系统存储器)。
使用以上硬件存储流检测的方法倾向于避免缓存器污染的一般问题。然而,一些应用(例如,编译器等)倾向于暂时重新访问将另外适于L2缓存器或L3缓存器内的合理大的规模的存储流。对于这样的应用,缓存会更有益处。然而,使用传统的硬件检测方法,这些存储流将被重复地写入存储器,导致系统存储器带宽和功率使用,以及放弃缓存器存储的益处。
发明内容
根据一个总体方面,一种设备可包括加载/存储电路和区域大小检测电路。加载/存储电路可被配置为发出用于将数据存储在存储器系统中的多个存储指令。区域大小检测电路可被配置为至少部分地基于通过在所述多个存储指令中跟踪多个缓存行地址项,从多个缓存器确定用于对存储指令的流进行存储的缓存器,其中,以不同的频率更新每个地址项。
根据另一个总体方面,一种方法可包括接收用于将数据存储在存储器系统中的多个存储指令,其中,存储器系统被配置为至少暂时地将所述数据存储在至少一个缓存器中。所述方法可包括:经由区域大小检测电路,至少部分地基于通过在所述多个存储指令中跟踪多个地址项来选择用于对存储指令的流进行存储的缓存器,其中,以不同的频率来更新每个地址项。
根据另一个总体方面,一种系统可包括多个处理器、缓存器系统和区域大小检测电路。所述多个处理器的每一个可被配置为发出用于将数据存储在缓存器系统中的存储指令的流。缓存器系统可被配置为将数据存储在缓存器层的层级中。区域大小检测电路可被配置为至少部分地基于通过确定存储指令的流是否包括存储指令的重复的流以及存储指令的重复的流的重复大小,来确定哪个缓存器层用于对存储指令的流进行存储。
在下面的附图和描述中阐述了一个或多个实现的细节。通过描述和附图以及权利要求,其他特征将是清楚的。
如在权利要求中更全面地阐述的,本发明涉及用于数据的存储的系统和/或方法,更具体地讲,基本上如结合附图中的至少一个所示和/或描述的,涉及写入指令或存储指令的流的处理的管理。
附图说明
图1是根据公开的主题的系统的示例实施例的框图。
图2是根据公开的主题的技术的示例实施例的流程图。
图3是根据公开的主题的数据结构和电路的示例实施例的示图。
图4是根据公开的主题的数据结构的示例实施例的框图。
图5是根据公开的主题的数据结构和电路的示例性实施例的示图。
图6是可包括根据公开的主题的原理形成的装置的信息处理系统的示意性框图。
各个附图中的相同的参考符号表示相同的元件。
具体实施方式
将在下文中参照示出一些示例实施例的附图更全面地描述各个示例实施例。然而,本公开的主题可以以很多不同的形式实现,并且不应被解释为受限于在此阐述的示例实施例。相反,提供这些示例实施例,使得本公开将是彻底和完整的,并且将向本领域的技术人员充分地传达本公开的主题的范围。在附图中,为了清楚,层和区域的大小以及相对大小可被夸大。
将理解,当元件或层被称为“在”另一个元件或层上、“连接到”或“结合到”另一个元件或层时,其可直接在其他元件或层上、直接连接到或直接结合到其他元件,或者可存在中间元件或中间层。相反,当元件被称为“直接在”另一个元件或层上、“直接连接到”或“直接结合到”另一个元件或层时,不存在中间元件或中间层。相同的标号始终表示相同的元件。如在此使用的,术语“和/或”包括相关的列出项的一个或多个的任意组合和所有组合。
将理解,虽然可在此使用术语第一、第二、第三等来描述各种元件、组件、区域、层和/或部分,但是这些元件、组件、区域、层和/或部分不应受这些术语限制。这些术语仅用于将一个元件、组件、区域、层或部分与另一区域、层或部分区分。因此,在不脱离本公开的主题的教导的情况下,以下讨论的第一元件、第一组件、第一区域、第一层或第一部分可被称为第二元件、第二组件、第二区域、第二层或第二部分。
为了便于描述,可在此使用诸如“在……之下”,“在……下方”,“下面的”,“在……之上”,“上面的”等的空间相对术语,来描述如附图中所示的一个元件或特征与另一个元件或特征的关系。将理解,空间相对术语意图包括除了附图中描绘的方位之外的使用或操作中的装置的不同方位。例如,如果附图中的装置被翻转,被描述为在其他元件或特征的“下面”或“之下”的元件其后将位于其他元件或特征的“上面”。因此,示例性术语“在……下方”可包括上面和下面两种方位。装置可被另外定位(旋转90度或在其它方位),并且相应地解释在此使用的空间相对描述符。
在此使用的术语仅为了描述具体的示例实施例的目的,并不意图限制本公开的主题。除非上下文另外清楚地指示,否则如在此使用的单数形式也意图包括复数形式。还将理解,当在本说明书中使用时,术语“包括”指定存在阐述的特征、整体、步骤、操作、元件和/或组件,但不排除存在或添加一个或多个其它特征、整体、步骤、操作、元件、组件和/或它们的组。
在此参照作为理想化的示例实施例(和中间结构)的示意图的横截面图来描述示例实施例。如此,将预计出现例如由制造技术和/或公差导致的图示的形状的变化。因此,示例实施例不应被解释为受限于在此示出的区域的特定形状,而是包括例如由制造导致的形状偏差。例如,示出为矩形的注入区域通常在其边缘处具有圆形或弯曲的特征和/或注入浓度梯度,而不是从注入区域到非注入区域的突然变化。同样地,通过注入形成的埋区可导致在埋区与发生注入的表面之间的区域中的一些注入。因此,附图中示出的区域本质上是示意性的,并且它们的形状不意图示出装置的区域的实际形状,并不意图限制本公开的主题的范围。
除非另外定义,否则在此使用的所有术语(包括技术术语和科学术语)具有与本公开的主题所属领域的普通技术人员通常理解的含义相同的含义。还将理解,除非在此明确定义,否则术语(诸如,在通用字典中定义的那些术语)应被解释为具有与相关领域的上下文的含义一致的含义,并且不将被解释为理想化的或过度正式的含义。
在下文中,将参照附图详细地解释示例实施例。
图1是根据公开的主题的系统100的示例实施例的框图。在示出的实施例中,系统100可包括计算装置(诸如,例如,膝上型计算机、台式计算机、工作站、个人数字助理、智能电话、平板和其他合适的计算机)。在各个实施例中,系统100可包括集成电路(诸如,微处理器、处理器或片上系统(SoC))。应理解,以上仅是一些说明性的示例,公开的主题不限于此。
在各个实施例中,系统100可包括被配置为执行各种指令或执行操作的处理器或CPU。在示出的实施例中,系统100可包括被配置为发出加载(读取)操作或存储(写入)操作的加载/存储单元(LSU)或电路102。在示出的实施例中,将讨论存储操作。然而,可创建关注或考虑加载操作的实施例。应理解,以上仅是一个说明性示例,公开的主题不限于此。
此外,系统100还可包括存储器系统108。在示出的实施例中,存储器系统108可包括布置在分层的一系列缓存器中的多个存储器。分层的一系列缓存器可包括(从概念上的最低层到最高层)系统存储器142(例如,动态随机存取存储器(DRAM)、NAND存储器)、L3缓存器132、L2缓存器122和L1缓存器112。
如上所述,存储器系统108可包括多层存储器存储。如本领域的技术人员理解的,存储器系统的层通常试图平衡速度与大小。拓扑地更靠近或更接近LSU 102的层通常比(拓扑地)离LSU 102(或一般为处理器)更远的层更快但更小。例如,L1缓存器112可以是存储器系统的距LSU 102最近、最小并最快的层。L2缓存器122可以在距LSU 102的距离的中间、小于L3缓存器132但大于L1缓存器112,并且比L3缓存器132快但比L1缓存器112慢。同样地,L3缓存器132可在L2缓存器122和系统存储器142之间,并且比系统存储器142小但比系统存储器142快。系统存储器142可以是距LSU 102或处理器最远的层,并且是所有层中最慢但最大的层。应理解,以上仅是一些说明性示例,公开的主题不限于此。
如上所述,当存储器层的大小受限时,在该层中选择存储什么成为问题。如果存在大量数据将被存储,则大的数据可能会挤出其他数据。缓存器或存储器层可能实际变成由大的数据集独占(或支配)。如果该数据集将被重新使用,则缓存器的支配可不是问题。数据由于位于缓存器中而被更快速的访问。相反,如果数据集将不被重新使用或被最小限度地使用,则缓存器的这种支配可导致缓存器实际无用或起反作用,因为缓存器被填满了不需要的数据。
对于存储流量或一系列存储指令,可最好按照传统的方式在各个缓存器层中进行分配。可选择地,有时最好绕过一个或多个缓存器层而直接写入到存储器(例如,系统存储器142或半永久存储器104)。例如,可期望将数据分配在特定级的缓存器(例如,L3缓存器132)中并绕过更高等级的缓存器(例如,L1缓存器112和L2缓存器122)。在一些实施例中,存储不写入到缓存行(cache line)的每个字节。这被称为与缓存行被存储写满的完整存储流不同的部分存储流。在这样的实施例中,对用于部分存储流的缓存器层的期望选择可与在完全存储流方案中的对缓存器的期望选择不同。
在各个实施例中,LSU 102可发出一个存储指令192或多个存储指令192。在各个实施例中,存储指令192可包括将要存储的数据190和指示数据190将要被存储的存储器地址的存储器地址部分191。存储器地址191可以是虚拟的或物理的,并且可在存储器系统108的存储器中的一个或多个存储器中出现或者甚至不在存储器系统108的存储器中出现。在这样的实施例中,当缓存器存储数据或不再存储数据时,与那些各自的缓存器层相关联的存储器地址可改变。
在示出的实施例中,存储器系统108可包括存储器互连器106。在这样的实施例中,存储器互连器106可将存储指令192路由到目标缓存器层或半永久存储器104。传统上,存储器互连器106将存储指令192路由到最高等级的缓存器(例如,L1缓存器112),然后根据需要将相关联的存储器地址191分配(加载或存储)到其他缓存器层(例如,L2缓存器112)中。
在示出的实施例中,存储器互连器106可考虑或包括存储流检测器电路152、区域大小检测器电路154和/或存储组合监视器电路156。存储流检测器电路152、区域大小检测器电路154和存储组合监视器电路156可检测存储192的流是否正在发生,如果是,则检测将所述流存储到哪儿。
在示出的实施例中,系统100可包括存储流检测器电路152。在各个实施例中,存储流检测器电路152可被配置为检测多个存储操作192何时将一系列存储操作或数据存储操作的流构成为连续的存储器空间。在一些实施例中,这可包括软件提示,但是,在示出的实施例中,存储流检测器电路152可被配置为执行存储流的硬件检测。在各个实施例中,存储流检测器电路152可被包括在存储器系统108(如所示)中,或者在另一个实施例中,可被包括在LSU 102中。参照图2,讨论存储流检测器电路152的实施例。
公开的主题试图至少部分地确定将存储指令的流写入到哪个缓存器层。例如,很多应用重复地写入到同一存储器区域。如果存储器区域的大小小于缓存器层级的给定层的缓存器大小,则将流数据分配在该级中而绕过更高等级的缓存器可能是有益的。在公开的主题的各个实施例中,示出用于确定重复的存储流的区域大小(以及因此期望的缓存器层)的方法。
在示出的实施例中,处理器100可包括区域大小检测器电路154。在各个实施例中,区域大小检测器电路154可被配置为确定存储指令的流的目的地的缓存器层。在一些实施例中,区域大小检测器电路154可至少部分地基于通过在多个存储指令192中跟踪多个缓存行地址项来确定存储指令流的目的地的缓存器层,其中,以不同的频率来更新每个缓存行地址项。在一些实施例中,这可包括选择具有比存储指令的重复的流的区域大小大的缓存器大小的缓存器层。在各个实施例中,区域大小检测器电路154可被包括在存储器系统108(如所示)中,或者在另一个实施例中,可被包括在LSU 102中。参照图3和图4,讨论区域大小检测器电路154的实施例。
在许多应用中,存储流可写入到许多个缓存行,但是不写入每个单缓存行的每个字节。这被称为部分存储流(与当写入完整的缓存行时的完整存储流相对)。部分存储流经常表现出更复杂的权衡(trade-off)。对于部分存储流数据绕过缓存器的性能影响常为应用和/或机器特定的,并且性能影响可根据特定的实例为正或负。因此,期望一种用于确定针对部分存储流是绕过缓存器还是在缓存器中进行分配的方法。
在示出的实施例中,系统100可包括存储组合监视器电路156。在各个实施例中,存储组合监视器电路156可被配置为跟踪以缓存行粒度级别组合的存储指令的数量,并且使用该数量来确定部分存储流处理。在各种实施例中,存储组合监视器电路156可被包括在存储器系统108(如所述)中,或者,在另一个实施例中,可被包括在LSU 102中。在图5中讨论存储组合监视器电路156的实施例。
在各个实施例中,存储流检测器电路152、区域大小检测器电路154和存储组合监视器电路156可独立地或互不相关地操作。在这样的实施例中,系统100可包括存储流检测器电路152、区域大小检测器电路154和存储组合监视器电路156中的一个或多个。
在各个实施例中,系统100可包括半永久存储器104。半永久存储器104可被配置为在缓存器层之外以半永久的方式存储数据。在这样的实施例中,半永久存储器104可存储系统100中的所有的数据190,而存储器系统108然后缓存数据190的副本。在各种实施例中,半永久存储器104可包括非易失性存储器(诸如,硬盘驱动器或固态驱动器)。应理解,以上仅是一些说明性示例,公开的主题不限于此。
图2是根据公开的主题的技术200的示例实施例的流程图。在各个实施例中,技术200可被实现为电路,具体地讲,可被实现为存储流检测器电路。
在这样的实施例中,存储流检测器电路152可被配置为检测存储器系统108是否应该进入或退出存储流模式。在这样的实施例中,存储器系统108可使区域尺寸检测器154、存储组合监视器156和/或被配置为处理存储流的其他电路参与。相反,当多个存储指令不构成存储流时,存储器系统可以以单独的方式来处理存储指令,单独的方式通常包括将它们存储在最高的缓存器层中并且如将会正常发生的那样使数据向下流动到较低的缓存器层。应理解,以上仅是一个说明性示例,公开的主题不限于此。
在示出的实施例中,存储流检测器可被配置为跟踪未命中的次数和所有存储指令的数量。然后,可将它们与各自的阈值进行比较,并且基于该比较,进入或退出存储流模式。
在示出的实施例中,在201,本存储流检测器电路检测存储指令。在214,本存储流检测器电路递增存储计数器值。在202,本存储流检测器电路确定是已经发生缓存器命中还是已经发生缓存器未命中。如果存储指令导致缓存器未命中,则在204,本存储流检测器电路递增未命中计数器值。如果存储指令导致缓存器命中,则未命中计数器可不受影响。
在示出的实施例中,存储流检测器可被配置为确定在存储指令的指定窗口内是否发生特定数量的缓存器未命中。如果是,则存储器系统可进入存储流模式。如果不是,则存储器系统可退出存储流模式。在一个实施例中,窗口阈值可以是128个存储,并且未命中阈值可以是64个未命中。应理解,以上仅是一个说明性示例,公开的主题不限于此。
在216,本存储流检测器电路将存储计数器值与窗口阈值进行比较。在218,如果当前存储计数器值的数量大于(在一些实施例中,或等于)窗口阈值,则存储器系统可退出(或者,不进入)存储流模式。在这样的实施例中,在退出存储流模式时,存储计数器值和未命中计数器值可被重置为零。
在206,本存储流检测器电路将未命中计数器值与未命中阈值进行比较。在208,如果当前未命中计数器值大于(在一些实施例中,或等于)未命中阈值,则存储器系统可以进入(或停留在)存储流模式。在这样的实施例中,在进入存储流模式时,存储计数器值和未命中计数器值可被重置为零。
在可选择的实施例中,可使用存储未命中和所有存储的累积大小代替未命中和存储的计数。例如,如果在512字节的存储内发生多于256字节的未命中,则可做出用于进入存储流模式的决定。
在各个实施例中,窗口阈值和未命中阈值可以是动态可调节的,并且基于退出和进入标准而不同。例如,为了进入的目的,可使用512字节内的256字节的未命中/窗口阈值,但是如果在128字节的存储内发生少于64字节的未命中,则可发生退出存储流模式。这可以分别控制处理器如何快速进入或退出存储流模式。应理解,以上仅是一些说明性示例,公开的主题不限于此。
图3是根据公开的主题的数据结构302和电路300的示例实施例的示图。在各个实施例中,如上所述,数据结构302和电路300可被实现为电路,具体地讲,可被实现为区域大小检测器电路。
在示出的实施例中,区域大小检测器300可被配置为检测区域大小并确定重复的存储流的目的地或缓存器层。在各个实施例中,许多应用在存储流期间重复地写入到同一存储器区域。如果该区域的大小大于特定级的缓存器大小,则在该级分配数据可能是不利的。相反,如果该区域小于下一级缓存器层的缓存器大小,则跳过或绕过较高的缓存层而将流数据直接分配到该较低的缓存层可能是有益的。
在示出的实施例中,区域大小检测器300可被配置为监视正被写入的存储器地址是什么,并且确定同一地址是否正被反复写入。区域大小检测器300可被配置为以多个频率这样做,使得不同的重复的周期被检测到或监视到。在一些实施例中,这些频率可以与各个缓存器层的缓存器大小相关联。在这样的实施例中,区域大小检测器300可确定哪个缓存器大小与存储流的重复周期最接近地匹配。
在示出的实施例中,可采用地址项表302来跟踪存储器地址(在地址项中的存储器地址)以及它们的重复(或没有重复)。在这样的实施例中,地址项表302可包括多个地址项或行,每个地址项或行以给定频率更新。每个地址项可包括新近地址字段352、当前周期标志354和最后周期标志356,其中,在352,新近地址字段被配置为存储在当前周期的起点采样的最新近的缓存行地址,在354,当前周期标志被配置为指示最新近地址是否已经在当前周期内至少第二次在多个存储指令内出现,在356,最后周期标志被配置为指示在最后周期的终点的当前周期标志的值。在一些实施例中,地址项表302还可包括用于指示当前存储流最适合哪个区域的选择区域字段358。然而,应理解,以上仅是一个说明性示例,公开的主题不限于此。
在一个实施例中,发生存储指令301。在303,存储指令301的存储器地址经过以缓存行粒度组合存储指令的地址过滤器(例如,缓存行地址滤波器)。因此,如果存在多个存储指令在短时间内访问同一缓存行,则只有一个缓存行地址可从地址过滤器303中出来。在示出的实施例中,区域大小检测器300可包括多个计数器311、312、313和314(统称为计数器308),其对由存储指令访问的缓存行的累积大小进行计数,并确定自上一计数周期以来是否已经出现累积大小的正确值。如参照图4更详细地描述的,每个计数器和地址项可以与特定频率或累积大小(例如,512字节、64字节)相关联。其他实施例可代替这些计数器对存储指令或缓存行的数量进行计数。
一旦已经达成频率事件或者根据第一存储指令,缓存行地址可被存储在地址字段352中。此后,当每个缓存行地址出现时,缓存行地址可与地址字段352中的缓存行地址进行比较。这可以由比较器电路在304执行。如果两个地址(当前地址和最新近采样的地址)匹配,则在命中当前周期(Hit current period,HCP)标志354被置位。其他实施例可仅对在缓存器中未命中的存储指令执行比较。
在每个周期的终点,可将HCP 354复制到命中最后周期(Hit last period,HLP)标志356。并且,这个HCP标志354可被重置。如果新采样的地址352与存储指令中的最后地址相同,则在新的周期期间,HCP标志354可变成置位。
如果HCP标志354和HLP标志356总在同一时间变成置位,则它指示已经在两个连续的周期内看到同一地址,并且已经检测了重复的存储流的大小。这可由比较器电路在306确定。在这样的实施例中,与地址项或频率相关联的缓存器层可被选择,并且存储流可被导向该缓存器层。
图4是根据公开的主题的数据结构400的示例实施例的框图。在示出的实施例中,示出区域大小检测器的工作的示例。应理解,以上仅是一个说明性示例,公开的主题不限于此。
在示出的实施例中,采用四个地址项;然而,可使用更多或更少的项。在示出的实施例中,以256字节(B)、512字节、1千字节(KB)和2千字节的频率对地址项进行采样。应理解,以上仅是一些说明性示例,公开的主题不限于此。
在示出的实施例中,存储流490包括到6个不同的缓存行地址A、B、C、D、E和F的6个存储指令。这些存储指令每384个字节(即,6个具有64字节缓存行的缓存行)重复一次(至少以地址方式)。在示出的实施例中,存储流490重复31/6次,但是存储流490可在示出的部分发生之后继续重复。应理解,以上仅是一些说明性示例,公开的主题不限于此。
在示出的实施例中,在指令401,作为初始存储指令和缓存行地址,所有地址项(例如,256B、512B、1KB、2KB)对初始地址A进行采样。地址A被放置在地址项表的各个新近地址字段。
在指令402,新的缓存行地址(地址B)与最新近采样的地址(地址A)进行比较。在这种情况下,两个地址不匹配并且每个地址项或频率的HCP标志保持清除。除了将新地址C和D与采样的地址A进行比较之外,在指令403和指令404发生相同的事情。
在指令405,达到第一地址项的256B周期,并且其新近地址字段现在被采样为地址E。第二、第三和第四地址项尚未达到它们各自的采样频率,并且它们新近地址字段保持地址A。
指令406(地址F)与指令402、指令403和指令404的发生非常相似地发生。然而,指令407使用返回的地址A标记存储流的初始重复。对于第一地址项,将当前地址A与采样的地址E进行比较,它们不匹配。然而,对于第二、第三和第四地址项,将当前地址A与采样的地址A进行比较,它们匹配。结果,它们各自的HCP标志变成置位,指示存储流在它们频率或周期内重复。
指令408(地址B)与指令406的发生非常相似地发生。然而,即使当前地址B与采样的地址A不匹配,HCP标志也保持置位或对于第二、第三和第四地址项有粘性。
指令409(地址C)在第512字节发生。这个指令与第一地址项和第二地址项(256B和512B)的周期对齐,并且当前地址C被采样到它们的新近地址字段中。第三地址项和第四地址项的新近地址字段保持地址A。第一地址项(被清除)和第二地址项(被置位)的HCP标志被复制为它们的HLP标志。然后,它们的HCP标志被清除。因为未达到第三地址项和第四地址项各自的周期,所以第三地址项和第四地址项的HCP标志和HLP标志保持不变。
指令410、指令411和指令412(地址D、E和F)与指令402、指令403和指令404相似地发生。指令413(地址A)与指令407相似地发生,但是第一地址项的新的采样的地址现在为地址A。指令414(地址B)与指令402相似地发生。
从第一地址项、第三地址项和第四地址项的视角来看,指令415(地址C)与指令414相似地发生。然而,第二地址项具有采样的地址C,因此,当前地址与采样地址的比较匹配(与指令407相似)。第二地址项置位其HCP标志。
在指令415,第二地址项具有其置位的HCP标志和HLP标志二者。这意味着区域大小已经被检测为落在256B与512B边界之间。如在这个实施例中,如果第二地址项与第二缓存器层相关联,则存储流490可被导向第二缓存器层。第一缓存器层可被跳过。
尽管存储流490可被导向第二缓存器层,但是指令416(地址D)可与指令414相似地发生。除了第三地址项的频率边界(1KB)被满足、当前地址被采样以及标记被复制和清除,指令417(地址E)可与指令409相似。指令418和指令419(地址F和地址A)可与指令413相似地发生。在这样的实施例中,存储流490仍可被导向第二缓存器层,直到新的缓存器层被选择为止。
在各个实施例中,多个缓存器层可匹配区域大小。例如,交互式存储流可精确地在缓存器大小边界上重复,并且两个缓存器大小可以是彼此的倍数,使得在较小频率的地址项的每一个周期和较大频率的地址项的每一个其他周期,发生匹配。在这样的实施例中,与较小频率的地址项相关联的缓存器层可被选择为存储流的目的地或目标。应理解,以上仅是一个说明性示例,公开的主题不限于此。
在各个实施例中,每个跟踪项可在可对噪声敏感的周期中仅跟踪一个地址。在一些实施例中,可通过采用跟踪结构的多个实例被改善。例如,两个项均是每64KB进行更新,但是它们的更新点之间存在例如1KB的偏移量。当处于训练状态时,区域大小检测器可仅在两个项均建议检测一个区域时进入检测状态。当处于检测状态时,区域大小检测器可仅在两个项均建议在过去的周期中没有看到地址重复时而退出。
图5是根据公开的主题的数据结构502和电路500的示例实施例的示图。在各个实施例中,如上所述,数据结构502和电路500可被实现为电路,具体地讲,被实施为存储组合监视器电路。在一个实施例中,数据结构502可被实现为先进先出缓冲器或跟踪表。
在各个实施例中,存储组合监视器500可被配置为表征和管理部分存储流(即,写入到少于完整的缓存行的流)的处理。有时,存储流流到半永久存储器或流入到非易失性缓存层。该目标存储器通常为必须一次写入完整的缓存行的固态装置。当仅部分的缓存行需要被写入时,这需要读取-修改-写入操作。在这样的操作中,完整的缓存行被读取,然后使用新的数据被修改,并然后作为完整缓存行被写回。这趋向于显著增加存储操作的开销,并且因此是为什么有时直接流到存储器可对性能产生负面影响的原因。存储组合监视器500可被配置为跟踪每个缓存行组合的存储的数量,并确定存储流是否应该使用具有较少开销的目标缓存器层(即,不需要即时的读取-修改-写入操作的缓存器层)。
在各个实施例中,用于确定处理部分存储流的最有利方式的关键特性是跟踪针对每个缓存行组合的存储的数量(NC)。在一个实施例中,如果大部分缓存行具有它们的低于阈值(NCTH)的NC(即,组合经常相对稀疏),则可期望使存储流被分配到缓存器中而不是直接被写入到存储器(例如,半永久存储器)。否则,可期望使存储流跳过缓存器并直接写入到存储器。
由于部分存储流的处理需要读取-修改-写入,所以部分存储流的处理通常比完整存储流更昂贵。因此,每个事务(即,将部分的缓存行写入到存储器)通常需要更多的资源(例如,带宽、读取-写入周转、排队和缓冲)。稀疏的部分存储流指示每个指令的事务的数量相对高。因此,将流数据分配给不使用读取-修改-写入操作(即,本地允许部分的缓存行写入)的缓存器层从写入解耦(decouple)读取。在这样的实施例中,随着正常的缓存器系统回收(eviction),回写操作被执行,存储的数据可最终被及时写回到半永久或非易失性的较低的缓存器层。这避免部分的缓存行写入(因为缓存行已经被组合在更高的缓存层中),或者将部分写入延迟到稍后的时间(在缓存器回收时),因此在长的时间段内散布任何额外的资源使用需求。
在示出的实施例中,存储组合监视器500可包括被配置为跟踪每个缓存行的组合的存储的数量的跟踪表502。在示出的实施例中,跟踪表502每行或每个项可包括标识与缓存行相关联的地址的区域或直接标识缓存行的地址或缓存行字段552,以及标识这个缓存行已经经历组合存储的次数的组合存储计数字段556。在一些实施例中,跟踪表502还可包括指示缓存行是否包括有效数据的有效字段554,并且如果不,则该项可从表502中被取消。应理解,以上仅是一些说明性示例,公开的主题不限于此。
在501,本存储组合监视器检测存储未命中。在一个实施例中,如果与存储未命中相关联的地址或缓存行已被包括在跟踪表502中,则可进行确定(例如,在503,经由比较器)。如果不,则可在跟踪表502中创建所述地址的新的项。在一些实施例中,可使用为0的初始NC 556来创建项。在另一个实施例中,可使用为1的初始NC 556来创建项。如果项已经存在,则NC 556可被递增1(如由计数器505所示)。
在504,比较器电路示出可确定存储未命中的NC 556是否大于(或等于)组合的阈值(NCTH)。在508,如果缓存行已经经历了多于(或等于)组合存储的阈值量,则可递减坏的缓存行(CL)计数器(例如,由一个电路实现)。相反,在506,如果缓存行已经经历小于组合存储的阈值量,则可递增坏的缓存行(CL)计数器(例如,由另一电路实现)。坏的缓存行计数器可监视缓存器层经受多少读取-修改-写入操作。在各个实施例中,坏的缓存行计数器可以是根据最大值和最小值二者的饱和计数器。在一个具有3位计数器的这样的实施例中,最大值可以是7,最小值可以是0。应理解,以上仅是一个说明性的示例,公开的主题不限于此。
在示出的实施例中,在510,如果坏的缓存行计数器在其最小值处饱和,则绕过缓存器标志可被置位(例如,由一个存储器实现)。当这样的标志被置位(或信号被发送)时,存储流可绕过缓存器并被写入到存储器。相反,在512,在一个实施例中,如果坏的缓存行计数器在其最大值处饱和,则绕过缓存器标志可被清除(例如,由另一存储器实现),并且存储流可被存储在缓存器中。应理解,以上仅是一些说明性的示例,公开的主题不限于此。
虽然将公开的主题已经针对整个存储器系统的出现被讨论,但是在各个实施例中,存储流检测器、区域大小检测器和/或存储组合监视器可在存储器系统的子集上进行操作。例如,电路可基于每个流进行操作,或仅针对特定存储器地址进行操作。在多处理器或多LSU系统的情况下,电路可仅针对多处理器的子集进行操作。应理解,以上仅是一些说明性的示例,公开的主题不限于此。
图6是信息处理系统600的示意性框图,其中,信息处理系统600可包括根据公开的主题的原理形成的半导体装置。
参照图6,信息处理系统600可包括根据公开的主题的原理构造的装置中的一个或多个。在另一个实施例中,信息处理系统600可采用或执行根据公开的主题的原理的一种或多种技术。
在各个实施例中,信息处理系统600可包括计算装置(诸如,膝上型计算机、台式计算机、工作站、服务器、刀片式服务器、个人数字助理、智能电话、平板和其他合适的计算机等)或虚拟机或者它们的虚拟计算装置。在各个实施例中,信息处理系统600可由用户(未示出)使用。
根据公开的主题的信息处理系统600还可包括中央处理器(CPU)、逻辑或处理器610。在一些实施例中,处理器610可包括一个或多个功能单元块(FUB)或组合逻辑块(CLB)615。在这样的实施例中,组合逻辑块可包括各种布尔逻辑运算(例如,NAND、NOR、NOT、XOR等)、稳定逻辑装置(例如,触发器、锁存器等)、其他逻辑装置或它们的组合。这些组合逻辑运算可以以简单或复杂的方式被配置为处理输入信号以实现期望的结果。应理解,虽然描述了同步组合逻辑运算的一些说明性的示例,但是公开的主题不受此限制,并且可包括异步运算或其混合。在一个实施例中,组合逻辑运算可包括多个互补金属氧化物半导体(CMOS)晶体管。在各个实施例中,这些CMOS晶体管可以被布置成执行逻辑运算的门;然而,应理解,其它技术可被使用并且在公开的主题的范围内。
根据公开的主题的信息处理系统600还可包括易失性存储器620(例如,随机存取存储器(RAM)等)。根据公开的主题的信息处理系统600还可包括非易失性存储器630(例如,硬盘驱动器、光学存储器、NAND或闪存等)。在一些实施例中,易失性存储器620、非易失性存储器630或它们的组合或部分中的任意一个可被称为“存储介质”。在各种实施例中,易失性存储器620和/或非易失性存储器630可被配置为以半永久或基本永久的形式存储数据。
在各个实施例中,信息处理系统600可包括被配置为允许信息处理系统600成为通信网络的一部分并且经由通信网络进行通信的一个或多个网络接口640。Wi-Fi协议的示例可包括但不限于电气和电子工程师协会(IEEE)802.11g、IEEE 802.11n等。蜂窝协议的示例可包括但不限于:IEEE 802.16m(又称高级无线MAN(城域网))、高级长期演进(LTE))、增强型数据速率GSM(全球移动通信系统)演进(EDGE)、演进的高速分组接入(HSPA+)等。有线协议的示例可包括但不限于IEEE 802.3(又称以太网)、光纤通道、电力线通信(例如,电力猫(HomePlug)、IEEE 1901等)等。应理解,以上仅是一些说明性的示例,公开的主题不限于此。
根据公开的主题的信息处理系统600还可包括用户接口单元650(例如,显示适配器、触觉接口、人机接口装置等)。在各个实施例中,这种用户接口单元650可被配置为从用户接收输入和/或将输出提供给用户。其他种类的装置也可用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感觉反馈(例如,视觉反馈、听觉反馈或触觉反馈);并且来自用户的输入可以以任何形式(包括,声音、语音或触觉输入)被接收。
在各个实施例中,信息处理系统600可包括一个或多个其他装置或硬件组件660(例如,显示器或监视器、键盘、鼠标、相机、指纹读取器、视频处理器等)。应理解,以上仅是一些说明性的示例,公开的主题不限于此。
根据公开的主题的信息处理系统600还可包括一个或多个系统总线605。在这样的实施例中,系统总线605可被配置为通信地连接处理器610、易失性存储器620、非易失性存储器630、网络接口640、用户接口单元650和一个或多个硬件组件660。由处理器610处理的数据或从非易失性存储器630的外部输入的数据可存储在非易失性存储器630或易失性存储器620中。
在各个实施例中,信息处理系统600可包括或执行一个或多个软件组件670。在一些实施例中,软件组件670可包括操作系统(OS)和/或应用。在一些实施例中,OS可被配置为将一个或多个服务提供给应用并管理或充当信息处理系统600的应用与各个硬件组件(例如,处理器610、网络接口640等)之间的中介。在这样的实施例中,信息处理系统600可包括一个或多个本地应用,其中,本地应用可本地安装(例如,在非易失性存储器630内等)并被配置为直接由处理器610执行并直接与OS交互。在这样的实施例中,本地应用可包括预编译的机器可执行代码。在一些实施例中,本地应用可包括脚本解释器(例如,C shell(csh)、AppleScript、AutoHotkey等)或虚拟执行机(VM)(例如,Java虚拟机、Microsoft CommonLanguage Runtime等),其中,脚本解释器或虚拟机被配置为将源代码或目标代码转换成之后由处理器610执行的可执行代码。
可以使用各种封装技术来封装上述半导体装置。例如,可使用以下技术中的任意一个来封装根据公开的主题的原理构造的半导体装置:堆叠封装(POP)技术、球栅阵列(BGA)技术、芯片级封装(CSP)技术、带引线的塑料芯片载体(PLCC)技术、塑料双列直插封装(PDIP)技术、华夫裸片技术、晶圆形式裸片技术、板上芯片(COB)技术、陶瓷双列直插封装(CERDIP)技术、塑料公制四方扁平封装(PMQFP)技术、塑料四方扁平封装(PQFP)技术、小外形封装(SOIC)技术、收缩型小外形封装(SSOP)技术、薄型小外形封装(TSOP)技术、薄型四方扁平封装(TQFP)技术、系统级封装(SIP)技术、多芯片封装(MCP)技术、晶圆级制造封装(WFP)技术、晶圆级处理堆栈封装(WSP)技术或者本领域的技术人员将知道的其他技术。
可由一个或多个可编程处理器通过对输入数据进行操作并生成输出来执行计算机程序以执行功能,来执行方法步骤。还可由专用逻辑电路(例如,FPGA(现场可编程门阵列)或ASIC(专用集成电路))来执行方法步骤,并且设备可被实现为专用逻辑电路(例如,FPGA(现场可编程门阵列)或ASIC(专用集成电路))。
在各种实施例中,计算机可读介质可包括在执行时使得装置执行方法步骤的至少一部分的指令。在一些实施例中,计算机可读介质可被包括在磁介质、光介质、其他介质或它们的组合(例如,CD-ROM、硬盘驱动器、只读存储器、闪存驱动器等)中。在这样的实施例中,计算机可读介质可以是可触知和非暂时实现的制造品。
虽然已经参考示例实施例描述了公开的主题的原理,但是对于本领域技术人员将清楚的是,在不脱离这些公开的构思的范围的情况下,可对其进行各种改变和修改。因此,应理解,以上实施例不是限制性的,而仅是说明性的。因此,将由权利要求及其等同物的最广泛的允许的解释来确定公开的构思的范围,并且不应受前面的描述的限制或局限。因此,将理解,权利要求意图涵盖落入实施例的范围内的所有这样的修改和改变。

Claims (18)

1.一种用于存储流检测和处理的设备,包括:
加载/存储电路,被配置为发出用于将数据存储在存储器系统中的多个存储指令;
区域大小检测电路,被配置为:至少部分地基于通过在所述多个存储指令中使用地址项表跟踪多个地址项,从包括在存储器系统中的多个缓存器确定用于对存储指令的流进行存储的缓存器,其中,以与相关联的缓存器的大小相关联的频率更新每个地址项。
2.根据权利要求1所述的设备,其中,区域大小检测电路包括地址项表,地址项表具有针对每个更新频率的地址项,其中,每个地址项包括:
新近地址字段,被配置为存储在当前周期的起点采样的最新近地址,
当前周期标记,被配置为指示最新近地址是否已经在当前周期内至少第二次在所述多个存储指令内出现,
最后周期标记,被配置为指示在最后周期的终点的当前周期标记的值。
3.根据权利要求1所述的设备,其中,区域大小检测电路被配置为:如果存在地址项指示已经在两个连续的跟踪周期内发生地址匹配,则基于哪个地址项指示已经在两个连续的跟踪周期内发生地址匹配,来选择用于对存储指令的流进行存储的缓存器。
4.根据权利要求1所述的设备,还包括:
存储流检测电路,被配置为至少部分地基于对选择的缓存器的缓存器未命中的数量和存储指令的大小,检测所述多个存储指令是否包括存储指令的流。
5.根据权利要求1所述的设备,还包括:
存储组合监视器电路,被配置为跟踪以缓存行粒度级别组合的存储指令的数量,并采用所述数量来确定部分存储流处理。
6.根据权利要求5所述的设备,还包括:半永久存储器,被配置为至少半永久地存储至少部分地和暂时地存储在至少一个缓存器中的数据;
其中,存储组合监视器电路被配置为:至少部分地基于与存储指令的流相关联的稀疏缓存行的数量是否低于阈值,来确定存储指令的流是将被直接存储在缓存器还是半永久存储器中。
7.根据权利要求5所述的设备,其中,存储组合监视器电路包括:
先进先出地址缓冲器,被配置为跟踪有多少存储被组合到每个缓存行。
8.根据权利要求6所述的设备,其中,存储组合监视器电路包括:
饱和计数器,被配置为指示缓存行已经经历超过阈值的组合存储的次数。
9.根据权利要求1所述的设备,其中,区域大小检测电路被配置为:以基于相同数量的字节的频率但以不同的偏移量,更新至少两个地址项。
10.一种用于存储流检测和处理的方法,包括:
接收用于将数据存储在存储器系统中的多个存储指令,其中,存储器系统被配置为至少暂时地将所述数据存储在包括在存储器系统中的至少一个缓存器中;
经由区域大小检测电路,至少部分地基于通过在所述多个存储指令中使用地址项表跟踪多个地址项来选择用于对存储指令的流进行存储的缓存器,其中,以与相关联的缓存器的大小相关联的频率来更新每个地址项。
11.根据权利要求10所述的方法,其中,区域大小检测电路包括地址项表,地址项表具有针对每个更新频率的地址项,其中,每个地址项包括:
新近地址字段,被配置为存储在当前周期的起点采样的最新近地址,
当前周期标志,被配置为指示最新近地址是否已经在当前周期内至少第二次在所述多个存储指令中出现,
最后周期标志,被配置为指示在最后周期的终点的当前周期标志的值。
12.根据权利要求10所述的方法,其中,如果存在地址项指示已经在两个连续的跟踪周期内发生地址匹配,则选择用于对存储指令的流进行存储的缓存器的步骤是基于哪个地址项指示已经在两个连续的跟踪周期内发生地址匹配。
13.根据权利要求10所述的方法,还包括:
经由存储流检测电路,至少部分基于对选择的缓存器的缓存器未命中的数量和存储指令的大小,检测所述多个存储指令是否包括存储指令的流。
14.根据权利要求10所述的方法,还包括:
经由存储组合监视器电路,跟踪以缓存行粒度级组合的存储指令的数量,并采用所述数量来确定部分存储流处理。
15.根据权利要求14所述的方法,还包括:
至少部分地基于与存储指令的流相关联的稀疏缓存行的数量是否低于阈值,确定存储指令的流是将被直接存储在缓存器还是半永久存储器中。
16.根据权利要求14所述的方法,其中,存储组合监视器电路包括:
先进先出地址缓冲器,被配置为跟踪有多少存储被组合到每个缓存行。
17.根据权利要求16所述的方法,其中,存储组合监视器电路包括:
饱和计数器,被配置为指示缓存行已经经历超过阈值的组合存储的次数。
18.根据权利要求10所述的方法,还包括:
以基于相同数量的字节的频率但以不同的偏移量,更新至少两个地址项。
CN201711317200.XA 2016-12-12 2017-12-12 用于存储流检测和处理的设备和方法 Active CN108228237B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201662433232P 2016-12-12 2016-12-12
US62/433,232 2016-12-12
US15/422,442 US10649904B2 (en) 2016-12-12 2017-02-01 System and method for store streaming detection and handling
US15/422,442 2017-02-01

Publications (2)

Publication Number Publication Date
CN108228237A CN108228237A (zh) 2018-06-29
CN108228237B true CN108228237B (zh) 2023-04-07

Family

ID=62490098

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711317200.XA Active CN108228237B (zh) 2016-12-12 2017-12-12 用于存储流检测和处理的设备和方法

Country Status (4)

Country Link
US (1) US10649904B2 (zh)
KR (1) KR102452660B1 (zh)
CN (1) CN108228237B (zh)
TW (1) TWI774703B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11010092B2 (en) 2018-05-09 2021-05-18 Micron Technology, Inc. Prefetch signaling in memory system or sub-system
US10714159B2 (en) 2018-05-09 2020-07-14 Micron Technology, Inc. Indication in memory system or sub-system of latency associated with performing an access command
US10942854B2 (en) 2018-05-09 2021-03-09 Micron Technology, Inc. Prefetch management for memory
US10754578B2 (en) * 2018-05-09 2020-08-25 Micron Technology, Inc. Memory buffer management and bypass
KR102684940B1 (ko) * 2018-11-21 2024-07-17 에스케이하이닉스 주식회사 데이터 처리 시스템

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5590292A (en) * 1992-12-08 1996-12-31 Compaq Computer Corporation Scalable tree structured high speed input/output subsystem architecture
US5781926A (en) * 1996-05-20 1998-07-14 Integrated Device Technology, Inc. Method and apparatus for sub cache line access and storage allowing access to sub cache lines before completion of line fill
CN102483720A (zh) * 2009-09-18 2012-05-30 国际商业机器公司 读写感知的高速缓存

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7194582B1 (en) * 2003-05-30 2007-03-20 Mips Technologies, Inc. Microprocessor with improved data stream prefetching
US8051250B2 (en) * 2007-03-14 2011-11-01 Hewlett-Packard Development Company, L.P. Systems and methods for pushing data
US20090083490A1 (en) * 2007-09-26 2009-03-26 International Business Machines Coproration System to Improve Data Store Throughput for a Shared-Cache of a Multiprocessor Structure and Associated Methods
US8667221B2 (en) 2008-04-08 2014-03-04 Intel Corporation Detection of streaming data in cache
US7958317B2 (en) 2008-08-04 2011-06-07 International Business Machines Corporation Cache directed sequential prefetch
US8667225B2 (en) 2009-09-11 2014-03-04 Advanced Micro Devices, Inc. Store aware prefetching for a datastream
US8402344B2 (en) 2009-10-05 2013-03-19 Cleversafe, Inc. Method and apparatus for controlling dispersed storage of streaming data

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5590292A (en) * 1992-12-08 1996-12-31 Compaq Computer Corporation Scalable tree structured high speed input/output subsystem architecture
US5781926A (en) * 1996-05-20 1998-07-14 Integrated Device Technology, Inc. Method and apparatus for sub cache line access and storage allowing access to sub cache lines before completion of line fill
CN102483720A (zh) * 2009-09-18 2012-05-30 国际商业机器公司 读写感知的高速缓存

Also Published As

Publication number Publication date
US20180165211A1 (en) 2018-06-14
TW201832087A (zh) 2018-09-01
US10649904B2 (en) 2020-05-12
CN108228237A (zh) 2018-06-29
KR102452660B1 (ko) 2022-10-11
KR20180067405A (ko) 2018-06-20
TWI774703B (zh) 2022-08-21

Similar Documents

Publication Publication Date Title
CN108228237B (zh) 用于存储流检测和处理的设备和方法
US9594521B2 (en) Scheduling of data migration
JP5621048B2 (ja) フラッシュ指標を動的に調整可能な結合書き込みバッファ
KR102424121B1 (ko) 프리-페치 유닛, 그것을 포함하는 장치 및 그것의 동작 방법
US20110055838A1 (en) Optimized thread scheduling via hardware performance monitoring
US20170060754A1 (en) Capturing temporal store streams into cpu caches by dynamically varying store streaming thresholds
US20160231933A1 (en) Memory page access detection
KR102513446B1 (ko) 집적된 컨펌 대기열 회로를 포함하는 장치 및 그것의 동작 방법
US8868835B2 (en) Cache control apparatus, and cache control method
Moraru et al. Persistent, protected and cached: Building blocks for main memory data stores
Ryoo et al. A case for granularity aware page migration
Li et al. SEAL: User experience-aware two-level swap for mobile devices
US10922137B2 (en) Dynamic thread mapping
US10372902B2 (en) Control flow integrity
JP2013016187A (ja) ノーマル割り当てからの干渉がないキャッシュロッキング
US20220350609A1 (en) Protection Against Timing-based Security Attacks on Re-order Buffers
US10901691B2 (en) System, method and apparatus for inter-process communication
US9880947B2 (en) Return oriented programming stack pivoting protection
US10019341B2 (en) Using hardware performance counters to detect stale memory objects
CN115879175A (zh) 通过插桩指针算术降低边界检查开销的装置、计算机可读介质和方法
US9507714B2 (en) Managed runtime extensions to reduce power consumption in devices with hybrid memory
KR20210152929A (ko) Ssd에서의 라이트 명령하기
US8020139B1 (en) Method and apparatus for implementing a dataflow circuit model using application-specific memory implementations
Bang et al. Enhancing a Lock-and-key Scheme with MTE to Mitigate Use-After-Frees
KR20140116943A (ko) 높은 시간적인 참조 국부성 데이터 필 버퍼들의 변위의 방지

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