CN108874689B - 用于确认队列的设备和方法 - Google Patents
用于确认队列的设备和方法 Download PDFInfo
- Publication number
- CN108874689B CN108874689B CN201810366700.0A CN201810366700A CN108874689B CN 108874689 B CN108874689 B CN 108874689B CN 201810366700 A CN201810366700 A CN 201810366700A CN 108874689 B CN108874689 B CN 108874689B
- Authority
- CN
- China
- Prior art keywords
- predicted
- memory address
- queue
- address
- windowed
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 29
- 238000005516 engineering process Methods 0.000 description 19
- 238000010586 diagram Methods 0.000 description 12
- 238000010200 validation analysis Methods 0.000 description 11
- 238000004519 manufacturing process Methods 0.000 description 4
- 239000004065 semiconductor Substances 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 238000012790 confirmation Methods 0.000 description 3
- 238000002513 implantation Methods 0.000 description 3
- 238000012549 training Methods 0.000 description 3
- 230000009977 dual effect Effects 0.000 description 2
- 230000010365 information processing Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 239000000919 ceramic Substances 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000001627 detrimental effect Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 239000007943 implant Substances 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 229910044991 metal oxide Inorganic materials 0.000 description 1
- 150000004706 metal oxides Chemical class 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 239000003826 tablet Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30047—Prefetch instructions; cache control instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0842—Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1028—Power efficiency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1056—Simplification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/602—Details relating to cache prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6026—Prefetching based on access pattern detection, e.g. stride based prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy 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)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Debugging And Monitoring (AREA)
Abstract
提供一种用于确认队列的设备和方法。根据一个总体方面,一种用于确认队列的设备可包括:缓存预取器,被配置为预测将从存储器系统检索的数据。缓存预取器可包括模式预测器电路和确认队列电路。模式预测器电路可被配置为预测将从存储器系统预取的存储器地址的序列。确认队列电路可被配置为:保持预测的存储器地址的窗化的确认队列,将请求的存储器地址与预测的存储器地址进行比较,如果请求的存储器地址包括在预测的存储器地址中,则指示已经发生成功预取。
Description
本申请要求于2017年5月12日提交的名称为“集成确认队列(INTEGRATEDCONFIRMATION QUEUES)”的第62/505,836号临时专利申请和于2017年7月31日提交的第15/665,401号专利申请的优先权。这些在先提交的申请的主题通过引用包含于此。
技术领域
本公开描述总体上涉及计算机处理器。具体地讲,本公开涉及集成确认队列。
背景技术
计算机处理器通常使用缓存预取以通过在指令或数据被实际需要之前将指令或数据从较慢的存储器中的原始存储提取到较快的本地存储器来提高执行性能。例如,处理器在指令或数据块被实际需要之前从主存储器请求指令或数据块,并将对应的指令或数据块存放在缓存中。当指令或数据块被实际需要时,与不得不从主存储器请求指令或数据块的情况相比,从缓存可更快地访问指令或数据块。预取隐藏了存储器访问延迟。由于数据访问模式比指令模式展示出更少的规律性,因此,准确的数据预取通常比指令预取更具有挑战性。
在预取的背景下,程度是在预取操作中提前预取或预测的缓存行数量。预取距离表示数据块在需求访问流之前多远被预取。预取操作是有用还是无用取决于通过预取操作带来的项是否阻止未来缓存丢失。如果通过预取操作带来的项替换了有用块,从而可能增加缓存丢失,则预取操作有害。有害的预取导致缓存污染。如果通过预取操作带来的数据块已经存在于缓存中,则预取操作是多余的。
为了使数据预取器覆盖动态随机存取存储器(DRAM)访问延迟,数据预取器经常在需求流之前得到许多访问。然而,发出许多不正确的预取可能使存储器系统过载并降低吞吐量。此外,用于计算机处理器的确认队列可需要具有大功耗、使用大面积和时间关键(timing critical)的大的内容可寻址存储器(CAM)结构。通常,确认队列是对所有条目检查传入的虚拟地址或存储器地址的CAM。这样的大的CAM具有较慢的速度。由于多循环增加复杂性,因此,更大的CAM结构需要更高功率并潜在地导致速度路径问题。
发明内容
根据一个总体方面,一种设备可包括:缓存预取器,被配置为预测将从存储器系统检索的数据。缓存预取器可包括模式预测器电路和确认队列电路。模式预测器电路可被配置为预测将从存储器系统预取的存储器地址的序列。确认队列电路可被配置为:保持预测的存储器地址的窗化的确认队列,将请求的存储器地址与预测的存储器地址进行比较,如果请求的存储器地址包括在预测的存储器地址中,则指示已经发生成功预取。
根据另一总体方面,一种方法可包括:预测将从存储器系统预取的存储器地址的序列。所述方法可包括:保持预测的存储器地址的窗化的确认队列。所述方法可包括:将请求的存储器地址与预测的存储器地址进行比较。所述方法还可包括:如果请求的存储器地址包括在预测的存储器地址中,则指示已经发生成功预取。
在附图和下面的描述中阐述了一个或多个实现的细节。从说明书和附图以及权利要求,其他特征将是清楚的。
如在权利要求中更完整地阐述的,基本上如至少一幅附图所示和/或结合至少一幅幅图所描述的一种用于集成确认队列的系统和/或方法。
附图说明
图1是根据本公开的主题的系统的示例实施例的框图。
图2是根据本公开的主题的设备的示例实施例的框图。
图3是根据本公开的主题的设备的示例实施例的框图。
图4是根据本公开的主题的设备的示例实施例的框图。
图5是根据本公开的主题的设备的示例实施例的框图。
图6是可包括根据本公开的主题的原理形成的装置的信息处理系统的示意性框图。
各个附图中的相同的参考符号表示相同的元件。
具体实施方式
以下将参考示出一些示例实施例的附图更全面地描述各个示例实施例。然而,本公开的主题可以以许多不同的形式实现并且不应被解释为限于在此阐述的示例实施例。相反,提供这些示例实施例,使得本公开将是彻底和完整的,并且将向本领域技术人员全面传达本公开的主题的范围。在附图中,为了清楚,层和区域的尺寸和相对尺寸可能被夸大。
将理解,当元件或层被称为“在”另一元件或层“上”、“连接到”或“结合到”另一元件或层时,该元件或层可“直接在”另一元件或层“上”、“直接连接到”或“直接结合到”另一元件或层,或者可存在中间元件或层。相反,当元件或层被称为“直接在”另一元件或层“上”、“直接连接到”或“直接结合到”另一元件或层时,不存在中间元件或层。相同的标号始终表示相同的元件。如在此所使用的,术语“和/或”包括一个或多个相关所列项的任何和所有组合。
将理解,尽管在此可使用术语第一、第二、第三等来描述各种元件、组件、区域、层和/或部分,但是这些元件、组件、区域、层和/或部分不应受这些术语限制。这些术语仅用于将一个元件、组件、区域、层和/或部分与另一元件、组件、区域、层或部分区分开来。因此,在不脱离本公开的主题的教导的情况下,以下讨论的第一元件、组件、区域、层或部分可被称为第二元件、组件、区域、层或部分。
为了便于描述,在此可使用诸如“在……之下”、“在……下方”、“下面的”、“在……上方”、“上面的”等空间相对术语来描述如图中所示的一个元件或特征与另一个元件或特征的关系。将理解,空间相对术语意在包含除了附图中描述的方向之外的装置在使用或操作中的不同方向。例如,如果附图中的装置被翻转,则描述为“在”其他元件或特征“之下”或“下方”的元件将位于其他元件或特征“上方”。因此,示例性术语“在……下方”可包含“在……上方”和“在……下方”两种方向。装置可被另外定位(旋转90度或在其他方向),并且在此使用的空间相对描述符被相应地解释。
在此使用的术语仅用于描述特定示例实施例的目的,而不意在限制本公开的主题。如在此所使用的,除非上下文明确另有指示,否则单数形式也意在包括复数形式。还将理解,当在本说明书中使用术语“包括”和/或“包含”时,指定存在叙述的特征、整体、步骤、操作、元件和/或组件,但并不排除存在或添加一个或多个其他特征、整体、步骤、操作、元件、组件和/或它们的组。
在此参照作为理想的示例实施例(和中间结构)的示意性图示的横截面图示来描述示例实施例。照此,例如,由于制造技术和/或公差的结果导致的来自图示的形状的变化将被预期。因此,示例实施例不应被解释为限于在此示出的区域的特定形状,而是将包括例如由制造引起的形状的偏差。例如,示为矩形的注入区域将通常在其边缘具有圆形或弯曲的特征和/或注入浓度的梯度,而不是从注入区域到非注入区域的二元改变。同样地,通过注入形成的埋区可导致埋区与发生注入的表面之间的区域中的一些注入。因此,附图中示出的区域在实质上是示意性的,并且它们的形状不意在示出装置的区域的实际形状,并且不意在限制本公开的主题的范围。
除非另有定义,否则在此使用的所有术语(包括技术术语和科学术语)具有与本公开的主题所属领域的普通技术人员通常理解的含义相同的含义。还将理解,除非在此明确定义,否则术语(诸如,在通用字典中定义的术语)将被解释为具有与它们在相关领域的上下文中的含义一致的含义,并且将不被解释为理想化或过于正式的含义。
以下,将参考附图详细解释示例实施例。
图1是根据本公开的主题的系统100的示例实施例的框图。在各个实施例中,系统100可包括处理器、片上系统(SoC)、存储器系统或缓存的一部分。在一个实施例中,系统100可在缓存(例如,1级(L1)缓存)中包括预取器。
在一个这样的实施例中,可按编程顺序将地址101发送到系统100。在各个实施例中,由于虚拟地址生成的不自然,因此,可能无法在地址流中检测到步长模式(stride-pattern)。在示出的实施例中,系统100可包括重新排序队列102。重新排序队列102可被配置为按编程顺序对地址101进行排序。
系统100可被配置为检测缓存行访问之间的步长。在示出的实施例中,系统100可包括训练表104。训练表104可被配置为计算步长并将地址流的步长历史保持在区域中。在这样的实施例中,在新的步长计算时,训练表104将地址流的步长模式发送到模式预测器电路106。
在示出的实施例中,模式预测器电路106可包括模式检测器单元或电路108以及模式表110。在各个实施例中,模式检测器单元108可被配置为检测单步长模式或多步长模式,并将检测的步长发送到模式表110。在各个实施例中,表(例如,模式表110)和队列可包括用于存储相关数据的存储器元件以及用于操作或保持如在此描述的数据的电路或逻辑。
在各个实施例中,模式表110可被配置为将检测到的地址流的步长存储在单独的区域(例如,4K)中。模式表110(或者更笼统地讲,模式预测器电路106)可被配置为基于检测的步长模式来生成预取地址或预测的存储器地址103。
在示出的实施例中,预测的存储器地址103可被输入到启动队列112。启动队列112将模式预测器电路106与存储器系统190分开。启动队列112可转而从存储器系统190(例如,2级(L2)缓存、主存储器)检索预测的存储器地址103。由于处理器或指令流实际上未请求存储器地址,因此,预测的存储器地址103被认为是预取的或推测地取来的。在这样的实施例中,可从处理器隐藏从存储器系统190提取数据所需的延迟或时间。
在示出的实施例中,系统100可包括确认队列114。在这样的实施例中,确认队列114可被配置为跟踪预取生成的准确性。确认队列114可被配置为存储启动的或预测的预取地址113,然后将启动的或预测的预取地址113与需求访问或实际请求的存储器地址105进行匹配(或者,比较)。
在各个实施例中,负载-存储单元(LSU)可请求如由处理器执行的指令所需要的各种存储器地址105。预取器或系统100尝试提前准确地预测和请求(预取)的是这些实际请求的存储器地址105。
在这样的实施例中,请求的存储器地址105与确认队列114中的条目进行比较。确认队列114通常是内容可寻址存储器(CAM),但是应理解,上面仅仅是一个说明性示例,本公开的主题不限于此。
在各个实施例中,如果请求的存储器地址105被成功预测(命中),则发生命中的信息被反馈到模式预测器电路106。类似地,如果请求的存储器地址105未被成功预测(丢失),则发生丢失的信息也被反馈到模式预测器电路106。在这样的实施例中,模式预测器电路106尝试提高它的预测能力。
图2是根据本公开的主题的设备或确认队列的示例实施例的框图。如上所述,在各个实施例中,设备200可包括确认队列的一部分。在这样的实施例中,设备200可包括多个存储器元件。
在示出的示例实施例中,设备200(也被称为确认队列200)可包括多个存储器元件202-1、202-2和202-3。在各个实施例中,当存储器地址被预测和预取时,存储器地址被输入到确认队列200中。例如,存储器地址A+1被存储在元件202-1中、存储器地址A+2被存储在元件202-2中、存储器地址A+3被存储在元件202-3中。
在传统的确认队列中,将通过确认队列中的存储器元件的数量来限制可预取的存储器地址的数量。例如,如果在确认队列中存在40个条目(或存储器元件),则可预取多达40个存储器地址。在各个实施例中,例如,由于在预测能力中缺少置信(confidence),因此,实际可能预取少于40个存储器地址。随着用于提高预取引擎的深度的期望增加,确认队列的尺寸也增加。由于确认队列传统上是CAM,因此考虑尺寸、功耗和时序要求方面,尺寸的增大往往非常昂贵。
在示出的实施例中,确认队列200包括预测的存储器地址A+1、预测的存储器地址A+2和预测的存储器地址A+3的窗化的确认队列210。在这样的实施例中,如传统上进行的那样,确认队列200可不包括每个预测的存储器地址。相反,它可保持或存储预测的存储器地址的子集(地址的窗210内的那些预测的存储器地址)。
在这样的实施例中,在窗210外部(例如,在区域212中)的预测的存储器地址可被丢弃,或在其他方面不被输入或添加到确认队列200。在这样的实施例中,确认队列200可包括比传统队列(其包括元件202-1至元件202-40)更少数量的存储器元件(元件202-1、元件202-2和元件202-3)。
在各个实施例中,窗尺寸可根据实施例而变化。在示出的实施例中,窗尺寸可包括3个预测的存储器地址。在这样的实施例中,确认队列200可以是采用传统方式的40个条目队列的大致15%的大小。应理解,上面仅是一个说明性示例,本公开的主题不限于此。
在这样的实施例中,由于请求的存储器地址通过LSU被提取或请求,因此,请求的存储器地址可针对窗化的存储器地址(在区域210中)被检查。如果地址匹配,则可从队列200移除或清除匹配的(和/或跳过的)预测的存储器地址。
例如,如果预测的存储器地址A+1匹配请求的存储器地址,则可从队列200移除地址A+1。在一个实施例中,其他预测的存储器地址可向下或沿着队列200转移。因此,存储器地址A+2可被移动到元件202-1,存储器地址A+3可被移动到元件202-2。由于在窗化的确认队列210中,存储的存储器地址A+4没有转移到元件202-3中,因此,这将留下空元件202-3。
在这样的实施例中,确认队列200或模式预测器电路可动态地重新预测或重新生成预测的存储器地址A+4。这个新重新预测的存储器地址A+4可存放在窗化的确认队列210的末端(元件202-3)。在这样的实施例中,窗化的确认队列210可被不断地填充(假设存在至少与窗化的确认队列210中存在的条目一样多的预测的存储器地址),但是避免了传统确认队列的硬件要求。
在这样的实施例中,可更期望使模式预测器电路多次(例如,两次)执行存储器地址的预测,而不是存储所有的原始预测。此外,在各个实施例中,模式预测器电路可被配置为基于更新的置信水平来进行第二次预测或重新预测。在这样的实施例中,通过确认队列200提供到模式预测器电路的反馈可基于由模式预测器电路采用的最新预测方案,而不是模式预测器电路采用的之前的20(例如)个存储器地址的预测方案。应理解,上面仅是一个说明性示例,本公开的主题不限于此。
在示出的实施例中,当新的存储器地址(例如,如示出为方框214的地址A+41)被预测时,确认队列200确定窗化的确认队列210是否已满或者是否具有未使用的空间(例如,是否仅存在2个未处理(outstanding)的预测的存储器地址)。如果窗化的确认队列210具有未使用的空间(例如,在地址流的开始),则最新的预测的存储器地址A+41可被输入到窗化的确认队列210的末端(例如,如果已存在2个地址,则是元件202-3,否则是元件202-2或者甚至是202-1)。如果窗确认队列210已满,则最新的预测的存储器地址可被丢弃,或者确认队列200可避免将最新的预测的存储器地址A+41添加到窗化的确认队列210。
图3是根据本公开的主题的设备或确认队列300的示例实施例的框图。在示出的实施例中,更详细地示出针对确认队列300来检查请求的存储器地址。应理解,上面仅是一个说明性示例,本公开的主题不限于此。
在示出的实施例中,确认队列300包括具有5个条目的窗化的确认队列。这个窗化的确认队列包括元件302-0、元件302-1、元件302-2、元件302-3和元件302-4。应理解,上面仅是一个说明性示例,本公开的主题不限于此。
在示出的实施例中,元件302-0、元件302-1、元件302-2、元件302-3和元件302-4可分别存储预测的存储器地址A、预测的存储器地址A+1、预测的存储器地址A+2、预测的存储器地址A+3和预测的存储器地址A+4。应理解,虽然存储器地址被标记为增加1(例如,A+1、A+2),但是这仅是它们被预测的顺序,而不是存储器地址本身(例如,地址值0xFED6B072)的差异。应理解,存储器地址本身可以包括步长或者通常可以是非连续的。
在示出的实施例中,当存储器地址304被LSU实际请求时,存储器地址304针对确认队列300中的预测的存储器地址被检查。箭头310示出请求的存储器地址304按从最旧到最新的顺序针对预测的存储器地址A、预测的存储器地址A+1、预测的存储器地址A+2、预测的存储器地址A+3和预测的存储器地址A+4被检查。在一些实施例中,可并行执行这种比较。
在各个实施例中,如果窗内的预测的存储器地址A、预测的存储器地址A+1、预测的存储器地址A+2、预测的存储器地址A+3和预测的存储器地址A+4中的任何一个与请求的存储器地址304匹配,则确认队列命中信号312可被生成。在各个实施例中,确认队列命中信号312可向模式预测器电路指示已经发生成功预取。
在一个实施例中,这个确认队列命中信号312可简单地包括二进制信号。在另一实施例中,确认队列命中信号312可包括关于哪个存储器元件(例如,元件302-0、元件302-1、元件302-2、元件302-3或元件302-4)包括请求的地址304的信息。在另一实施例中,确认队列命中信号312可不具体地详述哪个(哪些)元件包括请求的地址304,而是详述在将被找到的请求的地址304的第一次(通常是仅一次)迭代有多少深入队列中的元件。在这样的实施例中,在找到请求的地址304之前队列中存在的元件的数量被称为发生跳过(skip)的数量。
在各个实施例中,可将跳过计数和匹配元件数量作为预取引擎的预测能力中的置信306的测量的考虑因素。在一些实施例中,确认队列300或预取引擎可被配置为确定与预取预测相关联的置信306的水平。在这样的实施例中,当决定要预取多少个之前的存储器地址(即,预取的程度)或者有多少其他预取参数时,置信306的水平可确定或被考虑。
在示出的实施例中,置信306的水平可包括跳过322的数量以及是否找到匹配(即,确认324)。在这样的实施例中,确认324可以是置信度水平306的主要决定因素,但是确认324可通过跳过322的数量来调和(temper)。例如,如果发现匹配,但是队列300必须跳过大量元件来找到那个匹配,则置信306的水平的任何提高可被调和。
在另一实施例中,队列300可被划分为第一部分或前面部分以及第二部分或后面部分。在一个示例中,第一部分可包括元件302-0和元件302-1,第二部分可包括元件302-2、元件302-3和元件302-4。在一个实施例中,这种划分可以大致是确认队列300的中点。在这样的实施例中,跳过可只在如果直到后面部分才发生匹配时被视为已经发生。在这样的实施例中,在跳过的分析中可出现阈值的形式。在另一实施例中,可在跳过中采用更精细的粒度级别(例如,队列300可被划分为3个或更多个部分)。应理解,上面仅是一些说明性示例,本公开的主题不限于此。
在示出的实施例中,置信306的水平可反馈到预取逻辑308(例如,模式预测器电路的部分)。预取逻辑308可使用这个信息来提高它的下一预取地址309的预测。
在各个实施例中,队列300可采用最大阈值326或最小阈值327来确定呈现给预取逻辑308的置信306的水平是否应该被改变。在一个实施例中,如果确认324的数量大于或等于最大阈值326,则置信306的水平可被提高。如果确认324的数量小于最小阈值327,则置信306的水平可被降低。
在各个实施例中,跳过322的数量可包括在阈值确定中。例如,阈值确定可基于确认324减去跳过322的存在。在另一实施例中,置信306的水平可仅被周期性地更新,确认324和/或跳过322的计数可被采用。应理解,上面仅是一些说明性示例,本公开的主题不限于此。
图4是根据本公开的主题的设备400的示例实施例的框图。在各个实施例中,设备400可包括多个确认队列,或者被分割为多个队列的单个存储器结构。
在示出的实施例中,预取引擎可被配置为预取用于多个流的数据或指令/数据的系列。在这样的实施例中,预取引擎可针对每个指令流来保持单独的窗化的确认队列。例如,在示出的实施例中,可创建或采用窗化的确认队列402、窗化的确认队列404、窗化的确认队列406和窗化的确认队列408。
在这样的实施例中,每个窗化的确认队列402、窗化的确认队列404、窗化的确认队列406和窗化的确认队列408可包括各自版本的存储器元件302-0、存储器元件302-1、存储器元件302-2、存储器元件302-3和存储器元件302-4。此外,在这样的实施例中,每个窗化的确认队列402、窗化的确认队列404、窗化的确认队列406和窗化的确认队列408可输出各自版本的确认命中信号312和置信306。如上所述,在各个实施例中,确认命中信号312和置信306可被组合。
在一个实施例中,每个窗化的确认队列402、窗化的确认队列404、窗化的确认队列406和窗化的确认队列408可与各自的数据流(例如,标记为A、B、C和D的流地址)相关联。在这样的实施例中,模式预测器电路可预测各自的流或者预测的存储器地址的集合,并使用那些地址来填充窗化的确认队列402、窗化的确认队列404、窗化的确认队列406和窗化的确认队列408。例如,窗化的确认队列402可包括预测的地址A、预测的地址A+1、预测的地址A+2、预测的地址A+3和预测的地址A+4。窗化的确认队列404可包括预测的地址B、预测的地址B+1、预测的地址B+2、预测的地址B+3和预测的地址B+4。窗化的确认队列406可包括预测的地址C、预测的地址C+1、预测的地址C+2、预测的地址C+3和预测的地址C+4。窗化的确认队列408可包括预测的地址D、预测的地址D+1、预测的地址D+2、预测的地址D+3和预测的地址D+4。
在这样的实施例中,当请求新的实际存储器地址(例如,地址304A、地址304B、地址304C和地址304D)时,那些请求的存储器地址将与各自的窗化的确认队列402、404、406和408匹配。如上所述,针对流的预测的存储器地址来匹配(或未匹配)流的请求的存储器地址可用于生成流的确认命中信号312和置信306。
在各个实施例中,窗化的确认队列402、窗化的确认队列404、窗化的确认队列406和窗化的确认队列408可全部包括相同深度或相同数量(例如,示出的实施例中的5)的条目。在另一实施例中,每个流的条目的数量可改变。在另一实施例中,可在流的开始处动态地分配条目的数量或窗的尺寸。在另一实施例中,可基于置信水平或预取深度来动态地调节条目的数量或窗的尺寸。应理解,上面仅是一些说明性示例,本公开的主题不限于此。
图5是根据本公开的主题的设备或确认队列500的示例实施例的框图。在示出的实施例中,确认队列500包括6个元件或条目。将理解,上面仅是一个说明性示例,本公开的主题不限于此。
在各个实施例中,窗化的确认队列500可与数据的实际预取分开或分离。在一些实施例中,地址(例如,地址A+5)可仅在输入到启动队列或由启动队列请求时才被输入到确认队列。在这样的实施例中,窗化的确认队列500可仅包括已经被预取的预测地址。
在示出的实施例中,窗化的确认队列500可包括尚未从存储器系统提取的地址。在这样的实施例中,即使请求的地址没有被实际预取(例如,由于存储器系统的争用),窗化的确认队列500也可能够训练模式预测器电路。
在示出的实施例中,地址A+1(存储在元件502-1中)、地址A+2(存储在元件502-2中)、地址A+3(存储在元件502-3中)以及地址A+4(存储在元件502-4中)实际可能已经由预测器电路预取。相反,地址A+5(存储在元件502-5中)和地址A+6(存储在元件502-6中)可能尚未被预取,但是可被预测。在一个实施例中,启动队列可能尚未从存储器系统请求它们,或者甚至地址可能未被输入到启动队列。
在这样的实施例中,如果实际地址506被LSU请求,则可将实际地址506与预测并预取的地址(A+1、A+2、A+3和A+4)和预测但未预取的地址(A+5和A+6)二者进行比较。在这样的实施例中,窗化的确认队列500可一直是满的,并可通过预测方案的测试和反馈一直允许大多数。在这样的实施例中,即使实际需求或地址请求在预取之前得到,窗化的确认队列500也可能够保持对预测的地址的锁定。
在一个实施例中,窗化的确认队列500可包括指示预测的地址是否已经被预取的标签(标签504-1、504-2、504-3、504-4、504-5和504-6)或元数据。在另一实施例中,可不采用这些标签。将理解,上面仅是一些说明性示例,本公开的主题不限于此。
在一个实施例中,返回到跳过的构思,确认队列可被划分为前面部分550和后面部分552。在示出的实施例中,不管存储器地址的预取性质(例如,地址A+4是预取的,但是仍在后面部分552中),都可发生这种划分为部分550和部分552的处理。在另一实施例中,这些部分可基于地址的预取状态。将理解,上面仅是一些说明性示例,本公开的主题不限于此。
图6是可包括根据本公开的主题的原理形成的半导体装置的信息处理系统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,IEEE1901)。应理解,上面仅是一些说明性示例,本公开的主题不限于此。
根据本公开的主题的信息处理系统600还可包括用户接口单元650(例如,显示器适配器、触觉接口、人机接口装置(human interface device))。在各个实施例中,这种用户接口单元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交互。在这样的实施例中,本地应用可包括预编译的机器可执行代码。在一些实施例中,本地应用可包括被配置为将源代码或目标代码转换为之后由处理器610执行的可执行代码的脚本解释器(例如,C shell(csh)、AppleScript、AutoHotkey)或者虚拟执行机(VM)(例如,Java虚拟机、微软(Microsoft)公共语言运行库)。
上述的半导体装置可使用各种封装技术被封装。例如,根据本公开的主题的原理构造的半导体装置可使用以下技术中的任意一种或如将被本领域技术人员已知的其他技术被封装:堆叠封装(POP)技术、球栅阵列(BGA)技术、芯片级封装(CSP)技术、带引线的塑料芯片载体(PLCC)技术、塑料双列直插式封装(PDIP)技术,裸片格栅封装技术,裸片级晶片形式技术、板上芯片(COB)技术、陶瓷双列直插式封装(CERDIP)技术、塑料方形扁平封装(公制)(PMQFP)技术,塑料方形扁平封装(PQFP)技术,小外形封装(SOIC)技术、收缩型小外形封装(SSOP)技术、薄型小外形封装(TSOP)技术、薄型方形扁平封装(TQFP)技术、系统级封装(SIP)技术、多芯片封装(MCP)技术、晶片级制造封装(WFP)技术、晶片级加工的堆叠封装(WSP)技术。
方法步骤可由执行计算机程序的一个或多个可编程处理器执行,以通过对输入数据进行操作并生成输出来执行功能。方法步骤还可由专用逻辑电路(例如,FPGA(现场可编程门阵列)或ASIC(专用集成电路))执行,并且方法步骤可被实现为专用逻辑电路。
在各个实施例中,计算机可读介质可包括当被执行时使装置执行方法步骤的至少一部分的指令。在一些实施例中,计算机可读介质可包括在磁介质、光介质、其他介质或它们的组合(例如,CD-ROM、硬盘、只读存储器、闪存盘)中。在这样的实施例中,计算机可读介质可以是可触摸地和非暂时性地实现的制造品。
尽管已经参考示例实施例描述了本公开的主题的原理,但是本领域的技术人员将清楚的是,在不脱离这些公开的构思的精神和范围的情况下,可对这些示例实施例进行各种改变和修改。因此,应理解,上面的实施例不是限制性的,而仅是说明性的。因此,本公开的构思的范围由权利要求及其等同物的可允许的最广泛的解释来确定,而不应受前面的描述制约或限制。因此,将理解,所附权利要求意在涵盖落入实施例的范围内的所有这样的修改和改变。
Claims (20)
1.一种用于确认队列的设备,包括:
缓存预取器,被配置为预测将从存储器系统检索的数据;
其中,缓存预取器包括:
模式预测器电路,被配置为预测将从存储器系统预取的一系列存储器地址,
确认队列电路,被配置为:
保持预测的存储器地址的窗化的确认队列,
将请求的存储器地址与预测的存储器地址进行比较,
如果请求的存储器地址包括在预测的存储器地址中,则指示已经发生成功预取,并且从窗化的确认队列移除请求的存储器地址,以留下用于新的预测的存储器地址的空间。
2.根据权利要求1所述的设备,其中,窗化的确认队列包括多达预定多个预测的存储器地址,
其中,确认队列电路被配置为:如果通过模式预测器电路预测的未处理的存储器地址的数量大于所述预定多个预测的存储器地址的数量,则避免将任何更多的存储器地址添加到窗化的确认队列。
3.根据权利要求1所述的设备,其中,确认队列电路被配置为:如果请求的存储器地址包括在预测的存储器地址中,则:
从窗化的确认队列移除在请求的存储器地址之前预测的任何存储器地址;
通过重新预测先前由模式预测器电路预测但未添加到窗化的确认队列的存储器地址来重新填充窗化的确认队列。
4.根据权利要求1所述的设备,其中,确认队列电路被配置为:
针对各个地址流,分别保持多个窗化的确认队列;
将地址流的请求的存储器地址和与所述地址流相关联的窗化的确认队列进行比较;
向模式预测器电路指示比较的结果。
5.根据权利要求1所述的设备,其中,确认队列电路被配置为:
将窗化的确认队列划分为前面部分和后面部分;
确定请求的存储器地址是否包括在预测的存储器地址中,如果请求的存储器地址包括在预测的存储器地址中,则确定请求的存储器地址包括在哪个部分;
基于哪个部分包括预测的存储器地址来调节预测中的置信水平。
6.根据权利要求1所述的设备,其中,确认队列电路被配置为:
在请求的存储器地址与预测的存储器地址中的一个匹配之前,如果存在跳过的预测的存储器地址,则确定跳过的预测的存储器地址的数量;
至少部分地基于跳过的预测的存储器地址的数量来降低成功预取中的置信水平。
7.根据权利要求6所述的设备,其中,确认队列电路被配置为:
对成功预测的数量进行计数;
如果成功预测的数量大于或等于预定阈值,则指示提高的置信水平。
8.根据权利要求7所述的设备,其中,确认队列电路被配置为:
至少部分地基于跳过的预测的存储器地址的数量来调节成功预测的数量。
9.根据权利要求1所述的设备,其中,确认队列电路被配置为:
针对每个预测的存储器地址,保持指示各个预测的存储器地址是否已经被预取的标签。
10.根据权利要求1所述的设备,其中,确认队列电路被配置为:即使预测的存储器地址尚未从存储器系统预取,也存储预测的存储器地址。
11.一种用于确认队列的方法,包括:
预测将从存储器系统预取的一系列存储器地址;
保持预测的存储器地址的窗化的确认队列,
将请求的存储器地址与预测的存储器地址进行比较,
如果请求的存储器地址包括在预测的存储器地址中,则指示已经发生成功预取,并且从窗化的确认队列移除请求的存储器地址,以留下用于新的预测的存储器地址的空间。
12.根据权利要求11所述的方法,其中,窗化的确认队列包括多达预定多个预测的存储器地址,
其中,保持的步骤包括:
如果通过模式预测器电路预测的未处理的存储器地址的数量大于所述预定多个预测的存储器地址的数量,则避免将任何更多的存储器地址添加到窗化的确认队列。
13.根据权利要求12所述的方法,其中,保持的步骤还包括:
即使预测的存储器地址尚未从存储器系统预取,也将预测的存储器地址添加到窗化的确认队列。
14.根据权利要求13所述的方法,其中,保持的步骤还包括:
将标签与各个预测的存储器地址相关联,其中,标签指示各个预测的存储器地址是否已经至少部分地从存储器系统预取。
15.根据权利要求11所述的方法,其中,如果请求的存储器地址包括在预测的存储器地址中,则:
从窗化的确认队列移除在请求的存储器地址之前预测的任何存储器地址;
通过重新预测先前由模式预测器电路预测但未添加到窗化的确认队列的存储器地址来重新填充窗化的确认队列。
16.根据权利要求11所述的方法,其中,保持的步骤包括:针对各个地址流,分别保持多个窗化的确认队列;
其中,比较的步骤包括:将地址流的请求的存储器地址和与所述地址流相关联的窗化的确认队列进行比较;
其中,指示的步骤包括:向模式预测器电路指示比较的结果。
17.根据权利要求11所述的方法,其中,比较的步骤包括:
将窗化的确认队列划分为前面部分和后面部分;
确定请求的存储器地址是否包括在预测的存储器地址中,如果请求的存储器地址包括在预测的存储器地址中,则确定请求的存储器地址包括在哪个部分;
其中,指示的步骤包括:基于哪个部分包括预测的存储器地址来调节预测中的置信水平。
18.根据权利要求11所述的方法,其中,比较的步骤包括:
对成功预测的数量进行计数;
如果成功预测的数量大于或等于预定阈值,则指示提高的置信水平。
19.根据权利要求11所述的方法,其中,比较的步骤包括:在请求的存储器地址与预测的存储器地址中的一个匹配之前,如果存在跳过的预测的存储器地址,则确定跳过的预测的存储器地址的数量;
指示的步骤包括:至少部分地基于跳过的预测的存储器地址的数量来降低成功预取中的置信水平。
20.根据权利要求19所述的方法,其中,指示的步骤包括:至少部分地基于跳过的预测的存储器地址的数量来调节成功预测的数量。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201762505836P | 2017-05-12 | 2017-05-12 | |
US62/505,836 | 2017-05-12 | ||
US15/665,401 | 2017-07-31 | ||
US15/665,401 US10387320B2 (en) | 2017-05-12 | 2017-07-31 | Integrated confirmation queues |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108874689A CN108874689A (zh) | 2018-11-23 |
CN108874689B true CN108874689B (zh) | 2023-12-12 |
Family
ID=64097878
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810366700.0A Active CN108874689B (zh) | 2017-05-12 | 2018-04-23 | 用于确认队列的设备和方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10387320B2 (zh) |
KR (1) | KR102513446B1 (zh) |
CN (1) | CN108874689B (zh) |
TW (1) | TWI759449B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112084122B (zh) * | 2019-09-30 | 2021-09-28 | 成都海光微电子技术有限公司 | 计算机存储器中对区域预取器的置信度和侵略性控制 |
GB2593484B (en) * | 2020-03-24 | 2022-09-28 | Advanced Risc Mach Ltd | Memory management |
KR20220035568A (ko) | 2020-09-14 | 2022-03-22 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
KR20220117998A (ko) | 2021-02-18 | 2022-08-25 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
WO2023129316A1 (en) * | 2021-12-31 | 2023-07-06 | SiFive, Inc. | Prefetcher with out-of-order filtered prefetcher training queue |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104583981A (zh) * | 2012-08-17 | 2015-04-29 | 先进微装置公司 | 数据高速缓冲存储器预取提示 |
CN105279105A (zh) * | 2014-07-17 | 2016-01-27 | 三星电子株式会社 | 用于调整预取流的程度的自适应机制 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6134633A (en) | 1997-10-31 | 2000-10-17 | U.S. Philips Corporation | Prefetch management in cache memory |
US6654837B1 (en) | 1999-12-28 | 2003-11-25 | Intel Corporation | Dynamic priority external transaction system |
JP4067887B2 (ja) | 2002-06-28 | 2008-03-26 | 富士通株式会社 | プリフェッチを行う演算処理装置、情報処理装置及びそれらの制御方法 |
US7165167B2 (en) * | 2003-06-10 | 2007-01-16 | Advanced Micro Devices, Inc. | Load store unit with replay mechanism |
US7127574B2 (en) | 2003-10-22 | 2006-10-24 | Intel Corporatioon | Method and apparatus for out of order memory scheduling |
US20060143401A1 (en) | 2004-12-27 | 2006-06-29 | Jacob Doweck | Method and apparatus for prefetching based on cache fill buffer hits |
US7380066B2 (en) * | 2005-02-10 | 2008-05-27 | International Business Machines Corporation | Store stream prefetching in a microprocessor |
US20060248280A1 (en) | 2005-05-02 | 2006-11-02 | Al-Sukhni Hassan F | Prefetch address generation implementing multiple confidence levels |
US8122222B2 (en) * | 2008-04-18 | 2012-02-21 | International Business Machines Corporation | Access speculation predictor with predictions based on a scope predictor |
US8397049B2 (en) | 2009-07-13 | 2013-03-12 | Apple Inc. | TLB prefetching |
US9098418B2 (en) | 2012-03-20 | 2015-08-04 | Apple Inc. | Coordinated prefetching based on training in hierarchically cached processors |
US9262328B2 (en) | 2012-11-27 | 2016-02-16 | Nvidia Corporation | Using cache hit information to manage prefetches |
US20150199276A1 (en) * | 2014-01-13 | 2015-07-16 | Samsung Electronics Co., Ltd. | Pre-fetch confirmation queue |
US9817764B2 (en) * | 2014-12-14 | 2017-11-14 | Via Alliance Semiconductor Co., Ltd | Multiple data prefetchers that defer to one another based on prefetch effectiveness by memory access type |
-
2017
- 2017-07-31 US US15/665,401 patent/US10387320B2/en active Active
-
2018
- 2018-03-06 KR KR1020180026426A patent/KR102513446B1/ko active IP Right Grant
- 2018-03-26 TW TW107110172A patent/TWI759449B/zh active
- 2018-04-23 CN CN201810366700.0A patent/CN108874689B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104583981A (zh) * | 2012-08-17 | 2015-04-29 | 先进微装置公司 | 数据高速缓冲存储器预取提示 |
CN105279105A (zh) * | 2014-07-17 | 2016-01-27 | 三星电子株式会社 | 用于调整预取流的程度的自适应机制 |
Non-Patent Citations (1)
Title |
---|
郇丹丹 ; 李祖松 ; 胡伟武 ; 刘志勇 ; .结合访存失效队列状态的预取策略.计算机学报.2007,(第07期),全文. * |
Also Published As
Publication number | Publication date |
---|---|
TWI759449B (zh) | 2022-04-01 |
US20180329821A1 (en) | 2018-11-15 |
TW201901441A (zh) | 2019-01-01 |
KR20180124708A (ko) | 2018-11-21 |
US10387320B2 (en) | 2019-08-20 |
CN108874689A (zh) | 2018-11-23 |
KR102513446B1 (ko) | 2023-03-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108874689B (zh) | 用于确认队列的设备和方法 | |
TWI791505B (zh) | 空間記憶體串流預取引擎的設備與方法、製造及測試方法 | |
KR102424121B1 (ko) | 프리-페치 유닛, 그것을 포함하는 장치 및 그것의 동작 방법 | |
KR102393151B1 (ko) | 데이터의 액세스를 예측하는 장치, 그것의 동작 방법 및 그것을 포함하는 시스템 | |
US11169925B2 (en) | Capturing temporal store streams into CPU caches by dynamically varying store streaming thresholds | |
US10303608B2 (en) | Intelligent data prefetching using address delta prediction | |
US20160117250A1 (en) | Apparatus and Method of Throttling Hardware Pre-fetch | |
KR20150079429A (ko) | 캐시 미시들에 대한 프로세서 읽기 후 쓰기 해저드를 다루기 위한 장치 및 그것의 동작 방법 | |
US10649904B2 (en) | System and method for store streaming detection and handling | |
TW201725508A (zh) | 由可獲得預取精確度所動態控制的指令預取器及指令預取方法 | |
US9384131B2 (en) | Systems and methods for accessing cache memory | |
US9880849B2 (en) | Allocation of load instruction(s) to a queue buffer in a processor system based on prediction of an instruction pipeline hazard | |
US20190235873A1 (en) | System and method of reducing computer processor power consumption using micro-btb verified edge feature | |
US10372902B2 (en) | Control flow integrity | |
CN110825442B (zh) | 一种指令预取方法及处理器 | |
US20140258639A1 (en) | Client spatial locality through the use of virtual request trackers | |
US9734072B2 (en) | Main memory prefetch operation and multiple prefetch operation | |
CN109753444B (zh) | 用以避免负载填充冲突的设备以及系统 | |
CN110333935B (zh) | 事务请求处理方法及装置 | |
US11093401B2 (en) | Hazard prediction for a group of memory access instructions using a buffer associated with branch prediction | |
CN111984325A (zh) | 提高分支预测吞吐量的装置及系统 | |
CN112130905A (zh) | 计算装置和计算系统 | |
CN114004347A (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 |