CN112084122B - 计算机存储器中对区域预取器的置信度和侵略性控制 - Google Patents

计算机存储器中对区域预取器的置信度和侵略性控制 Download PDF

Info

Publication number
CN112084122B
CN112084122B CN202010993418.2A CN202010993418A CN112084122B CN 112084122 B CN112084122 B CN 112084122B CN 202010993418 A CN202010993418 A CN 202010993418A CN 112084122 B CN112084122 B CN 112084122B
Authority
CN
China
Prior art keywords
value
training
computer
instruction
offset
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
CN202010993418.2A
Other languages
English (en)
Other versions
CN112084122A (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.)
Chengdu Haiguang Microelectronics Technology Co Ltd
Original Assignee
Chengdu Haiguang Microelectronics Technology 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 Chengdu Haiguang Microelectronics Technology Co Ltd filed Critical Chengdu Haiguang Microelectronics Technology Co Ltd
Publication of CN112084122A publication Critical patent/CN112084122A/zh
Application granted granted Critical
Publication of CN112084122B publication Critical patent/CN112084122B/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/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/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
    • 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
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/324Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address using program counter relative addressing
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/325Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/452Instruction code

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)

Abstract

本公开涉及计算机存储器中对区域预取器的置信度和侵略性控制,并提供一种通过接收包括程序计数器和数据地址的计算机可执行指令来训练区域预取器的方法。该方法包括:将计算机可执行指令的程序计数器与存储表进行比较,存储表包括锚指令的程序计数器和相应的偏移向量,该偏移向量表示先前接收的偏移访问在由锚指令定义的存储区域内的位置。在确定接收的计算机可执行指令与偏移向量中的先前接收的偏移访问之一对应的情况下,该方法判断计算机可执行指令的数据地址是否被中央处理单元访问。基于中央处理单元是否访问计算机可执行指令的数据地址,通过改变偏移向量中置信等级条目和训练等级条目中的至少一个的值来修改存储表。

Description

计算机存储器中对区域预取器的置信度和侵略性控制
背景技术
示例性实施例通常涉及使用预取引擎来训练和实现区域预取,以预测未来的存储器访问并将存储的数据从主存储器传输到高速缓冲存储器中,以供中央处理单元(CPU)使用。
计算***包括执行与各种应用或程序相关联的指令的电路,例如CPU。内存访问延迟通常需要数百个处理器周期,这会导致称为内存墙的性能瓶颈。因此,这些指令和由CPU在执行指令时使用的数据可以至少暂时存储在存储器的不同层中。存储器可以包括多个高速缓冲存储器(高速缓存)和一个主存储器。当CPU请求指令和/或数据时,从主存储器或其他类型的***存储器中获取该指令和/或数据。
CPU处理数据和执行指令的速度比主存储器快,这会导致从主存储器提供给CPU的数据或指令延迟。为了避免出现这种延迟,由于高速缓存在物理上比主存储器更靠近处理器,并且其处理速度比主存储器快,因此可以通过高速缓存实现对指令和数据的快速访问。
例如,处理器通过数据预提取来降低CPU从主存储器访问数据的延迟。例如,在CPU实际需要数据之前,处理器请求将主存储器(低级存储器)中的数据块加载到高速缓存中。与处理器在需要数据时才直接从主存储器中请求数据相比,通过将数据预提取到高速缓存中,中央处理器可以更快地访问数据块。
计算机程序通常涉及对数据进行的一些处理操作。计算机程序执行的操作至少包括三个阶段:加载数据、执行数据和输出数据执行的结果。处理器的运行速度(通过时钟周期衡量)通常比主存储器的运行速度快。数据预提取用于减少处理器访问数据的时钟周期数。
发明内容
一种数据预提取方式被称为区域预取。区域预取分析存储器访问模式中的规律性,并试图预测存储器将要访问的数据,以便抢先地将数据块从主存储器移动到高速缓存中。换句话说,硬件预取引擎监视与至少一个静态指令相关联的存储器的过往访问,这被称为训练,从而可以预测静态指令在主存储器中的将要访问的数据地址,并且在CPU使用该预测数据地址处的数据之前,将预测数据地址处的数据传输到高速缓存中。预取引擎可以利用一个表或一组表来监视和训练存储器访问的历史数据。
静态指令是在程序中出现的指令,仅通过虚拟指令地址进行识别,也称为程序计数器(PC)。动态指令是执行静态指令的实例。通常,具有与特定静态指令相同的PC的动态指令重复执行与静态指令相同的功能,这样使得动态指令可以预测预提取的数据。
高速缓存包括多个缓存块。高速缓存区域包括高速缓存的块总数中高速缓存内连续块的子集。高速缓存的每个区域被设置为相同的大小,并且每个区域内的每个块的大小都是相同的。
在区域预取过程中,区域预取器引擎以与计算逻辑相结合的一个表或一组表的形式,监视程序或应用中即将执行的指令,并将即将执行的指令与先前指令和先前指令使用的相关数据进行比较,以确定表示一个区域内存储器访问的一致空间相关性的模式。一个典型的例子涉及访问类对象中的某些项。如图2和3所示,类对象被设置到存储器的一个区域中。锚点是类对象对该区域的第一次数据访问的地址。该访问的相应指令是锚指令,并由PC识别。随后,基于每个后续数据访问的地址相对于锚点的地址,存储器的同一区域中的每个数据访问在存储器中具有空间偏移。空间偏移的轨道沿偏移向量移动。
在数据预取的理想情况下,对于执行类对象的每次迭代或实例,该区域的锚点和类对象内的每次附加数据访问之间的空间相关性是等效的。因此,在理想情况下,区域预取器在一段时间内监视每个执行的指令(和数据访问的地址),并确定该区域内每个指令的每个数据访问的空间相关性。这种空间相关性存储在一个表条目中,该条目由锚指令的PC识别。
确定空间相关性模式后,区域预取器发出预取请求,用于类对象的将来的访问。当区域预取器识别出锚指令的新实例时,区域预取器假设程序或应用开始在类对象的新实例上运行,然后区域预取器预测同一类对象内的接下来的访问地址。
区域预取器扫描/监视尚未执行的未来指令,并使用指令的PC来确定该指令是否是访问高速缓存区域的锚点访问,或者该指令是否正在访问已经由另一个作为锚点的指令建立的区域。一旦锚访问指令已知,可以根据剩余指令的空间相关性(偏移向量)预取该高速缓存区域内剩余指令的数据访问。
例如,图3示出了区域预取器已经确定锚指令为“a+=1”并且两个附加指令的数据访问位于与锚访问(即,本例中的字段“a”)相同的区域内的理想情况。一条指令访问“a+3”偏移量处的数据,另一条指令访问距离锚点“a+5”偏移量处的数据。也就是说,一旦PC识别到锚指令,区域预取器可以基于已知的空间相关性(即已知的从锚的数据访问地址的PC开始的偏移+3和+5)来确定两个附加指令的数据访问地址。因为区域预取器可以基于来自锚点指令的已知空间相关性来可靠地预取类对象内的数据字段,空间相关性中的这种已知模式被称为理想情况。
然而,也存在一种不理想的情况,即不能可靠地确定相对于锚点的所有数据访问的偏移。这种不可靠的偏移可能是由于,例如,偏移值依赖于在运行时不断变化的输入数据,或者因为指令是有条件的,所以在类对象的每个实例或迭代中都不访问偏移。在这种不理想的情况下,传统的区域预取器不能预取数据块,或者没有必要预取不被CPU访问的数据块,这样会导致高速缓存的污染和存储器带宽的浪费。高速缓存的污染是一个将数据传输到高速缓存中却不使用的问题,这样浪费(即污染)了高速缓存中的存储空间。
区域预取器的准确性取决于不必要的预取或预取失败的特点。区域预取器的准确性的另一个度量标准是覆盖范围。区域预取器的覆盖范围是预取器能够预取的需求访问(指令)的数量(即,满足需求访问的数量)。当区域预取器预取请求覆盖更多的需求访问(称为主动覆盖)时,区域预取器不太准确,例如,预取请求总是针对偏移(位于离锚点偏移处的指令的数据访问)发出,即使该偏移的指令不会在程序的每个实例或迭代中出现。
示例性实施例的目的是设计更有效和高效的区域预取器。本领域需要能够:(1)实现精度目标的精细控制和覆盖范围的侵略性(aggressiveness)预取,以及(2)基于来自计算机***的不同类型的反馈,例如来自***内的CPU或其他存储器的反馈,动态地调整区域预取器的侵略性和准确性。
示例性实施例的目的是通过在区域预取器中实现多级置信度控制机制来减少高速缓存的污染,提高效率,并动态地控制区域预取器的精度和覆盖范围,所述多级置信度控制机制将被应用于相对于锚点的每个偏移。
为了实现上述问题的解决方案,示例性实施例提供了一种在计算机***中训练区域预取器的方法,该方法包括接收计算机可执行指令,计算机可执行指令包括程序计数器和计算机可执行指令的数据地址;将计算机可执行指令的程序计数器与存储表进行比较,存储表包括锚指令的程序计数器和相应的偏移向量,偏移向量表示先前接收的偏移指令在由锚指令定义的存储区域内的位置;在确定接收的计算机可执行指令与偏移向量中的先前接收的偏移指令之一对应的情况下,判断计算机可执行指令的数据地址是否被中央处理单元访问;以及基于中央处理单元是否访问计算机可执行指令的数据地址,通过改变偏移向量中置信等级条目和训练等级条目中的至少一个的值来修改存储表。
此外,为了实现上述问题的解决方案,示例性实施例提供一种计算机***中的区域预取器,包括与存储器耦接的处理器,该处理器被配置为:接收计算机可执行指令,计算机可执行指令包括程序计数器和计算机可执行指令的数据地址;将计算机可执行指令的程序计数器与存储表进行比较,存储表包括锚指令的程序计数器和相应的偏移向量,偏移向量表示先前接收的偏移指令在由锚指令定义的存储区域内的位置;在确定接收的计算机可执行指令对应于偏移向量中的先前接收的偏移指令之一的情况下,判断计算机可执行指令的数据地址是否被中央处理单元访问;以及基于中央处理单元是否访问计算机可执行指令的数据地址,通过改变偏移向量中置信等级条目和训练等级条目中的至少一个的值来修改存储表。
附图说明
图1A示出了一种单层高速缓冲存储器***的框图;
图1B示出了一种多层高速缓冲存储器***的框图;
图2示出了示例性实施例提供的一种高速缓冲存储器中的存储区域;
图3示出了一种传统的区域预取器的单个表条目;
图4示出了示例性实施例提供的一种区域预取器的单个表条目;
图5示出了示例性实施例提供的一种用于区域预取的示例性过程的流程图;
图6示出了示例性实施例提供的一种与区域预取器的训练计数器的饱和度相关的示例性过程的流程图;
图7示出了示例性实施例提供的一种与区域预取器包含的下游反馈控制相关的示例性过程的流程图;以及
图8示出了示例性实施例提供的一种用于区域预提取的示例性过程的流程图。
具体实施方式
示例性实施例涉及一种区域预取器,该区域预取器与多级饱和计数器结合,以使得区域预取器能够精细控制精度目标和覆盖范围的侵略性预取,并且基于来自计算机***的不同类型的反馈,动态地调整区域预取器的侵略性与精度。
图1A和1B示出了示例性实施例提供的一种计算机***1的总体框图。计算机***1包括中央处理单元(CPU)10,其包括执行程序和应用的各种指令的处理中心(图中未示出)。CPU 10与硬件高速缓冲存储器20通信,硬件高速缓冲存储器20可以是位于CPU 10内的单一的高速缓存,或者是独立于CPU 10并与之通信的独立的高速缓存。如图1A和1B所示,高速缓冲存储器20可以是按高速缓存层级(例如,L1、L2、L3等)组织的单级高速缓存或多级高速缓存。高速缓冲存储器20在物理上和电气上位于CPU 10和主存储器30之间。主存储器30存储由CPU 10和计算机***1的其他处理设备执行的各种程序和应用使用的各种数据和指令。
区域预取器100的结构和训练过程
区域预取器100与CPU 10、高速缓冲存储器20和主存储器30通信。区域预取器100由表101或一组表结合计算逻辑形成。或者,区域预取器100由CPU 10实现。区域预取器100连续监视程序或应用中即将到来的指令,并将即将到来的指令与先前指令使用的历史指令和相关数据进行比较,以确定访问模式。区域预取器100获取或接收包括程序计数器和数据访问地址的指令。
如图4所示,区域预取器100的表101包括多个条目字段。特别地,表101包括访问该区域的锚点的各个PC的识别标志102。如上所述,锚点被设置为对预定大小(例如4KB)的存储器地址区域的第一次访问,并且执行该访问的指令是锚指令。随后,访问相同地址区域的每个指令具有基于后续指令的数据访问地址相对于锚点地址的空间偏移。在表101的偏移向量条目103中识别出相对于锚点的空间偏移。偏移向量103与锚指令的数据访问104的地址和由锚点定义的区域内的其它每个指令的每个数据访问的地址之间的位置差异对应。
例如,图4所示的区域是被分为64字节块的存储空间的一部分。在这个示例中,该区域的尺寸是八个64字节块的大小。指令“a+=1”是锚指令,因为它是访问该存储区域的第一条指令。锚指令访问的存储器地址是锚点。对位于从锚点开始的+1到+8之间的存储区域的后续的每个访问,由对应于相对于锚点的空间相关性(即偏移)的列中的非零数值来标识。在图4所示的例子中,有三条附加指令位于该存储区域中,分别在+3、+5和+7处。然而,示例性实施例不限于这种配置。该存储区域的尺寸可以定义为任何大小,并且可以包括任何数量的指令。
每次区域预取器100获取或接收指令时,将该指令与表101进行比较,以确定该指令是否与表101中的识别标志102之一匹配。如果指令的识别标志102与表101中的识别标志102之一匹配,则区域预取器100将该指令设置为锚指令。一旦接收到锚指令,区域预取器100向主存储器30发出预提取请求,以将数据块从主存储器30中预提取到高速缓冲存储器20中,以供CPU 10在将来使用。向对应于该锚指令的偏移向量103导出的地址发布该预提取请求。区域预取器100可以对偏移向量103中包括的所有偏移发出预提取请求,或者仅对偏移向量103中包括的偏移子集发出预提取请求。区域预取器100基于偏移向量103中每个偏移的置信等级来确定要预提取偏移向量103中的哪个偏移,具体操作将在下面进行详细地讨论。
表101的偏移向量103是多级置信度控制机制。如图4所示,在该示例性实施例中,表101的偏移向量103包括两个等级,置信等级(也称为置信计数器)和训练等级(也称为训练计数器)。置信等级和训练等级基于类对象(或程序)的每个实例或迭代进行调整。每当区域预取器100发生锚命中时,都会出现新的实例或迭代。锚命中表示输入指令与区域预取器100的表101中的指令之一的识别标志102匹配。
置信等级表示基于由CPU 10执行指令的数据访问的先前历史,由CPU10来执行偏移向量103内的偏移相对应的指令时的精度或概率。置信等级可以在表101中由各种指示符或表示来表示。出于示例性目的,图4示出了使用0-5范围内的数值表示置信等级,其中5是最高置信等级。在图4的例子中,置信等级5表示对于包含指令的类对象(或程序)的每个实例或迭代,CPU 10执行该指令的概率大约为100%。也就是说,在图4中,访问偏移量为+3和+5处的数据的指令将在类对象的每个实例中执行。
此外,低置信等级,例如等级0,表示对于包含指令的类对象(或程序)的每个实例或迭代,CPU 10执行该指令的概率大约为0%或接近0%。例如,当指令是条件指令时,当该条件指令仅在条件被满足时执行该指令,但是该条件从未被满足或很少被满足时,这样会导致低置信等级。置信等级用于确定是否针对对应于该区域的偏移向量103中的偏移的存储器地址发出预取请求。
如图4所示,表101的偏移向量103还包括用于“训练”置信等级的训练计数器。针对包含指令的类对象(或程序)的每个实例或迭代,每当由CPU10执行对应于偏移向量103中的偏移的指令时,都改变训练计数器。偏移向量103的每个偏移具有相应的训练等级/计数器,其可以由各种指示符或表示来表示。出于示例性目的,图4将训练等级示为0-15范围内的数值,其中15是表示训练等级的训练计数器中的训练值的上限阈值,0是表示训练等级的训练计数器中的训练值的下限阈值。
区域预取器100监视程序的每个实例,并且每当CPU 10访问相应偏移的指令时,增加训练计数器的值。训练计数器的值增加了Xi。对于对应于偏移的指令不被CPU 10访问(即,不被执行)的程序的每个实例,训练计数器的值减小。训练计数器的值减少了Yd。Xi和Yd的值被设置成实现区域预取器100的期望或必要的目标精度。
基于计算机***1的设计约束和***要求,为区域预取器100预设目标精度,以便在必要时平衡存储器20/30和CPU 10的性能与区域预取器100的精度,从而减少***带宽和使用。如下文中的进一步的描述,目标精度可以在操作期间基于来自计算机***1的反馈和/或由区域预取器100为每个偏移指令确定的置信等级来动态调整。
目标精度可以通过如下公式(1)计算:
Figure BDA0002691711520000071
当程序在计算机***1的操作期间被执行或循环时,在每次执行程序时,训练计数器的值持续增加和/或减少。当训练等级的值达到或超过上限等级阈值或下限等级阈值时,训练等级已经饱和。当任一偏移的训练计数器达到高饱和时(即,在图4所示的例子中达到15),该饱和表示区域预取器100在之前采样周期中的实际精度高于目标精度(公式(1))。类似地,当任一偏移的训练计数器达到低饱和时(即,在图4所示的例子中达到0),该饱和表示区域预取器100在过去采样周期中的实际精度低于目标精度(公式(1))。
当训练计数器的值饱和时,无论高饱和或低饱和,训练计数器的值被重置为设置训练计数器的值的范围的中点。例如,在图4所示的例子中,训练计数器的值范围是0-15,训练计数器在饱和后被重置为中点值7。
分配给Xi和Yd的值有效地设定了目标精度。例如,较小的Xi值和较大的Yd值导致的目标精度较高,因此区域预取器100的精度较高。较大的Xi值和较小的Yd值导致的目标精度较低,因此区域预取器100的精度较低。如上所述,区域预取器100的精度越高导致区域预取器100的覆盖范围越小(即,更低的侵略性预取),区域预取器100的精度越低导致区域预取器100的覆盖范围越大(即,更高的侵略性预取)。通过控制Xi和Yd的值,区域预取器100能够精细地控制精度目标和覆盖范围的侵略性预取,并且动态地调整区域预取器100的侵略性与精度。
响应于任何一个偏移的训练计数器的饱和的值,通过预设值改变相应的置信计数器的值,例如预设值为1。基于相应训练计数器的饱和,置信计数器的这种变化被称为“训练”区域预取器100或“训练”相应偏移的置信度。随着置信等级增加(即置信计数器的值增加),区域预取器100对于特定偏移的精度增加。当训练计数器达到高饱和时,将置信计数器的值增加预设值。当训练计数器达到低饱和时,将置信计数器的值减小预设值。置信计数器增加的预设值可以与置信计数器减小的预设值相同或不同。
在较高的置信等级下,精度目标较高(即Xi值较小,Yd值较大)。例如,基于公式(1),Xi值为1,Yd值为4,将导致目标的80%的精度。在较低的置信等级下,精度目标相对较低(即,较大的Xi值和较小的Yd值)。例如,基于公式(1),Xi值为1,Yd值为1将导致目标的50%的精度。
在一个示例中,假设置信等级2是40%的目标精度,置信等级3是50%的目标精度:
当“偏移出现的时间百分比”低于40%时,置信计数器的值将逐渐降低到2以下;
当“针对相应偏移发出预提取的精度”在40%和50%之间时,置信计数器的值将在2和3之间交替变化;以及
当“针对相应偏移发出预提取的精度”高于50%时,置信计数器的值将逐渐增加至超过3。
对于偏移向量103的每个偏移,针对训练计数器的饱和度预设采样周期。采样周期可以根据各种参数来设置,例如程序的周期/实例的数量、时间段等。每次训练计数器饱和时,当前采样周期结束,新的采样周期开始。采样周期的每次复位也会复位相应偏移的训练计数器的值。
此外,目标精度可以基于来自下游设备的反馈或计算机***1中的信息。该下游反馈可以是对训练计数器的饱和度的补充,或者是设置控制训练计数器的饱和的上限等级阈值和下限等级阈值的替代方案。
在实现下游反馈控制时,区域预取器100从计算机***1的其他部分接收或获取反馈信号,该计算机***1可能受到CPU 10、高速缓冲存储器20或主存储器30的操作状态的影响。例如,下游反馈可以指示计算机***1的下游部分处于忙碌状态,例如存储器带宽使用率高、互连网网络状态忙等。
在上述示例中,在反馈信号指示计算机***1的下游部分处于忙碌状态时,区域预取器100修改目标精度以增加精度并减少覆盖范围。也就是说,调整(协调)Xi和Yd的值以增加目标精度的百分比值,这样通过预提取对应于具有较高置信度的偏移的数据块来减少计算机***1上的负载,从而减少计算和存储负载(即,减少高速缓冲存储器20的污染)。
反馈控制的实现可以预定义Xi和Yd的一组值到配置寄存器中作为二维矩阵。基于来自计算机***1下游部分的反馈信号,矩阵的每行是不同的置信等级,每列是不同的模式。在接收到反馈信号后,将反馈信号与矩阵进行比较,以确定相应的一对Xi和Yd。存储在寄存器中的矩阵可以为计算机***1的各种操作场景预定义Xi和Yd的。
如上所述,置信等级然后用于控制发布对区域预取器100的偏移向量103内的偏移的预提取请求。区域预取器100确定或者可以预先确定为了发出偏移向量103的偏移的预提取请求所需的置信等级阈值。例如,再次参考上述图4的示例,置信等级阈值可以被设置为4。然后,因为置信计数器指示每个偏移的置信度为5,因此区域预取器100发出对+3和+5偏移的L1预提取请求,以将指令/数据传送到L1高速缓冲存储器20中。
对于+7处的偏移,区域预取器100可以避免发出针对+7处偏移的预提取请求,或者对+7偏移处发出L2或L3高速缓冲存储器20预提取请求,这将指令/数据传输到较低级(存储量较大)的高速缓冲存储器20中。
上述示例性实施例不限于这里的示例和描述,并且可以包括在本领域技术人员的普通技术范围内的附加特征和修改。示例性实施例的替代方案或附加方案也可以被组合。
区域预取器100可以由存储表101或一组表结合计算逻辑,例如处理器、处理中心等,来实现。区域预取器100的功能可以存储在非暂时性计算机可读介质上,并由集成到计算机***1或外部设备中的计算机或中央处理单元执行。
在计算机***1中训练区域预取器100的示例性方法
如图5所示,区域预取器100接收包括程序计数器和数据访问地址的计算机可执行指令。区域预取器100持续监控即将到来的计算机可执行指令。
将指令的程序计数器与存储表101进行比较,存储表101包括由计算机***1的CPU10访问的先前接收的历史指令。存储表101包括锚指令的程序计数器、锚指令104的数据地址以及表示偏移在锚指令的存储区域内的位置的相应偏移向量。
存储表101包括访问区域的锚点的每个PC的识别标志102。来自锚点的指令的空间偏移在表101的偏移向量103中被识别,表101对应于锚点定义的区域内的锚点访问104的数据地址和其他指令的彼此数据访问的地址之间的位置差异。表101的偏移向量是多级置信度控制机制。表101的偏移向量包括两个等级,置信等级(也称为置信计数器)和训练等级(也称为训练计数器)。置信等级和训练等级基于类对象(或程序)的每个实例或迭代进行调整。
在确定接收到的指令对应于偏移向量103内的偏移之一时,确定在执行接收到的指令时,该指令的数据地址是否被CPU 10访问。训练计数器的值根据CPU 10是否执行对应于偏移向量103中每个偏移的指令而变化。
响应于CPU 10访问指令(即,执行指令)的数据地址,修改/更新存储表101以改变多级偏移向量103。基于CPU 10是否访问了指令的偏移地址,改变对应于已接收的指令的数据访问的偏移。存储表101中的偏移向量103包括偏移向量103内每个偏移的置信等级条目和训练等级条目。
针对包含指令的类对象(或程序)的每个实例或迭代,每当CPU 10执行对应于偏移向量103中的偏移的指令时,都改变训练计数器。每当CPU 10访问相应偏移的指令时,区域预取器100将训练计数器的值增加Xi。对于程序的每个实例,当在该程序中CPU 10不访问(即,不执行)对应于偏移的指令时,训练计数器的值减小Yd。如上所述,Xi和Yd的值被设置成实现区域预取器100的期望或必要的目标精度。
当程序被执行时,训练计数器的值在每次执行程序时继续增加和/或减少。当训练等级的值达到或超过上限等级阈值或下限等级阈值时,训练等级已经饱和。当任一偏移的训练计数器达到高饱和时,高饱和表示区域预取器100在之前的采样周期中的实际精度高于目标精度。类似地,当任一偏移的训练计数器达到低饱和时,低饱和表示区域预取器100在之前的采样周期中的实际精度低于目标精度。
当训练计数器的值饱和时,高饱和或低饱和,训练计数器的值被重置为为设置训练计数器的值的范围的中点。如图6所示,响应于任何一个偏移的训练计数器的饱和值,通过预设值改变相应的置信计数器的值,例如预设值为1。基于相应训练计数器的饱和改变置信计数器的值。随着置信等级增加(即置信计数器的值增加),区域预取器100对于特定偏移的精度增加。
针对偏移向量103的每个偏移,预设训练计数器饱和的采样周期。采样周期根据各种参数设置,例如程序的周期/实例的数量、时间周期等。如图5所示,每次训练计数器饱和时,当前采样周期结束,新的采样周期开始,这也会重置相应偏移的训练计数器的值。
如图7和8所示,目标精度可以附加地或替代地基于来自下游设备的反馈或计算机***1中的信息。对于下游反馈控制,区域预取器100基于计算机***1的剩余部分或计算机***1的外部设备的操作状态从计算机***1接收或获取反馈信号。
一旦接收到下游反馈信号,通过下游反馈信号修改Xi和Yd的值,以便响应计算机***1的操作要求。例如,如上所述,下游反馈控制定义Xi和Yd的一组值至配置寄存器中作为二维矩阵。基于来自计算机***1下游部分的反馈信号,矩阵的每行是不同的置信等级,每列是不同的模式。在接收到反馈信号后,将反馈信号与矩阵进行比较,以确定相应的一对Xi和Yd。存储在寄存器中的矩阵允许为计算机***1的各种操作场景预定义Xi和Yd的。
然后,区域预取器100发出对数据块的预提取请求,该数据块具有基于锚点地址和偏移值计算的数据块地址。预提取请求基于对应于未来实例中偏移的置信等级,请求将数据从主存储器30传送到计算机***1的高速缓冲存储器20。然后该通过置信等级控制对区域预取器100的偏移向量103内的偏移的预提取请求的发布。区域预取器100确定或者可以预先确定为了发出偏移向量103的偏移的预提取请求所需的置信等级阈值。
如上所述,该方法的上述示例性实施例不限于这里的示例和描述,并且可以包括在本领域技术人员的普通技术范围内的附加特征和修改。示例性实施例的替代方案或附加方案也可以被组合。
技术优势
上述示例性实施例设计并实现了更有效和高效的区域预取器。示例性实施例的区域预取器(1)能够实现精度目标的精细控制和覆盖范围的预取侵略性,以及(2)基于来自计算机***的不同类型的反馈,例如来自***内的CPU或其他存储器,动态地调整区域预取器的侵略性与精度。这种精细控制和动态调整通过动态调整从主存储器到高速缓存的数据的预提取来改善计算机***和CPU的处理功能和处理负载管理,以满足计算机***的计算要求。
示例性实施例的区域预取器还使用由训练等级训练的置信等级来控制高速缓存的污染。还通过动态调整区域预取器的侵略性与准确性来提高存储器和CPU的可用性。示例性实施例通过实现上述多级饱和区域预取器来改进计算机***、CPU和存储器的计算机功能,该多级饱和区域预取器被应用于位于距锚点指令偏移处的每个指令。

Claims (14)

1.一种在计算机***中训练区域预取器的方法,该方法包括:
接收计算机可执行指令,所述计算机可执行指令包括程序计数器和所述计算机可执行指令的数据地址;
将所述计算机可执行指令的程序计数器与存储表进行比较,所述存储表包括锚指令的程序计数器和相应的偏移向量,所述偏移向量表示先前接收的偏移指令在由所述锚指令定义的存储区域内的位置;
响应于确定所述接收的计算机可执行指令与所述偏移向量中的所述先前接收的偏移指令之一对应,判断所述计算机可执行指令的数据地址是否被中央处理单元访问;以及
基于所述中央处理单元是否访问所述计算机可执行指令的数据地址,通过改变所述偏移向量中置信等级条目和训练等级条目中的至少一个的值来修改所述存储表。
2.根据权利要求1所述的训练区域预取器的方法,还包括:在将来的实例中执行所述计算机可执行指令之前,在所述将来的实例中发布对数据块的预提取请求。
3.根据权利要求2所述的训练区域预取器的方法,其中,基于对应于相对于锚点的偏移的所述存储表中的置信等级条目的值定义的置信等级,所述发布的预提取请求请求将所述数据块从主存储器传送到高速缓冲存储器,所述高速缓冲存储器包括由所述锚指令定义的所述存储区域。
4.根据权利要求1所述的训练区域预取器的方法,其中,在执行包含所述计算机可执行指令的程序的周期中,每当所述中央处理单元访问对应于偏移的数据地址时,所述训练等级条目的值增大;每当所述中央处理单元不访问对应于所述偏移的数据地址时,所述训练等级条目的值减小。
5.根据权利要求4所述的训练区域预取器的方法,其中,
响应于训练等级的值达到或超过上限等级阈值,置信等级的值增大;
响应于所述训练等级的值达到或低于下限等级阈值,所述置信等级的值减小。
6.根据权利要求4所述的训练区域预取器的方法,其中,
响应于训练等级的值达到或超过上限等级阈值,或者,响应于所述训练等级的值达到或低于下限等级阈值,所述训练等级的值被重置为设置所述训练等级的值的范围的中点。
7.根据权利要求1所述的训练区域预取器的方法,还包括:基于所述计算机***的操作状态从所述计算机***的下游部分接收反馈信号,其中,通过基于接收到的所述反馈信号改变所述偏移向量中的置信等级条目和训练等级条目中的至少一个的值来进一步修改所述存储表。
8.一种计算机***中的区域预取器,包括:
处理器,与存储器耦接,所述处理器被配置为:
接收计算机可执行指令,所述计算机可执行指令包括程序计数器和所述计算机可执行指令的数据地址;
将所述计算机可执行指令的程序计数器与存储表进行比较,所述存储表包括锚指令的程序计数器和相应的偏移向量,所述偏移向量表示先前接收的偏移指令在由所述锚指令定义的存储区域内的位置;
响应于确定所述接收的计算机可执行指令与所述偏移向量中的所述先前接收的偏移指令之一对应,判断所述计算机可执行指令的数据地址是否被中央处理单元访问;以及
基于所述中央处理单元是否访问所述计算机可执行指令的数据地址,通过改变所述偏移向量中置信等级条目和训练等级条目中的至少一个的值来修改所述存储表。
9.根据权利要求8所述的区域预取器,其中,所述处理器被配置为在将来的实例中执行所述计算机可执行指令之前,在所述将来的实例中发布对数据块的预提取请求。
10.根据权利要求9所述的区域预取器,其中,基于对应于相对于锚点的偏移的所述存储表中的置信等级条目的值定义的置信等级,所述发布的预提取请求请求将所述数据块从主存储器传送到高速缓冲存储器,所述高速缓冲存储器包括由所述锚指令定义的所述存储区域。
11.根据权利要求8所述的区域预取器,其中,在执行包含所述计算机可执行指令的程序的周期中,每当所述中央处理单元访问对应于偏移的数据地址时,所述训练等级条目的值增大;每当所述中央处理单元不访问对应于所述偏移的数据地址时,所述训练等级条目的值减小。
12.根据权利要求11所述的区域预取器,其中,
响应于训练等级的值达到或超过上限等级阈值,置信等级的值增大;
响应于所述训练等级的值达到或低于下限等级阈值,所述置信等级的值减小。
13.根据权利要求11所述的区域预取器,其中,
响应于训练等级的值达到或超过上限等级阈值,或者响应于所述训练等级的值达到或低于下限等级阈值,所述训练等级的值被重置为设置所述训练等级的值的范围的中点。
14.根据权利要求8所述的区域预取器,其中,所述处理器被配置为基于所述计算机***的操作状态从所述计算机***的下游部分接收反馈信号,其中,通过基于接收到的所述反馈信号改变所述偏移向量中的置信等级条目和训练等级条目中的至少一个的值来进一步修改所述存储表。
CN202010993418.2A 2019-09-30 2020-09-21 计算机存储器中对区域预取器的置信度和侵略性控制 Active CN112084122B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201916588233A 2019-09-30 2019-09-30
US16/588,233 2019-09-30

Publications (2)

Publication Number Publication Date
CN112084122A CN112084122A (zh) 2020-12-15
CN112084122B true CN112084122B (zh) 2021-09-28

Family

ID=73739213

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010993418.2A Active CN112084122B (zh) 2019-09-30 2020-09-21 计算机存储器中对区域预取器的置信度和侵略性控制

Country Status (1)

Country Link
CN (1) CN112084122B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114490456B (zh) * 2021-12-28 2024-06-04 海光信息技术股份有限公司 电路模块、信用控制方法、集成电路和存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108027732A (zh) * 2015-09-19 2018-05-11 微软技术许可有限责任公司 与断言的加载指令相关联的预取
CN108027778A (zh) * 2015-09-19 2018-05-11 微软技术许可有限责任公司 与断言的存储指令相关联的预取
CN109697111A (zh) * 2017-10-20 2019-04-30 图核有限公司 在多线程处理器中调度任务

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8364902B2 (en) * 2009-08-07 2013-01-29 Via Technologies, Inc. Microprocessor with repeat prefetch indirect instruction
DE102015115582A1 (de) * 2014-10-22 2016-04-28 Imagination Technologies Limited Vorrichtung und Verfahren zum Drosseln des Hardwarevorauslesens
US20170046158A1 (en) * 2015-08-14 2017-02-16 Qualcomm Incorporated Determining prefetch instructions based on instruction encoding
US10353819B2 (en) * 2016-06-24 2019-07-16 Qualcomm Incorporated Next line prefetchers employing initial high prefetch prediction confidence states for throttling next line prefetches in a processor-based system
US10540287B2 (en) * 2017-05-12 2020-01-21 Samsung Electronics Co., Ltd Spatial memory streaming confidence mechanism
US10387320B2 (en) * 2017-05-12 2019-08-20 Samsung Electronics Co., Ltd. Integrated confirmation queues
US20190065964A1 (en) * 2017-08-30 2019-02-28 Qualcomm Incorporated Method and apparatus for load value prediction
CN109783399B (zh) * 2018-11-19 2021-01-19 西安交通大学 一种动态可重构处理器的数据缓存预取方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108027732A (zh) * 2015-09-19 2018-05-11 微软技术许可有限责任公司 与断言的加载指令相关联的预取
CN108027778A (zh) * 2015-09-19 2018-05-11 微软技术许可有限责任公司 与断言的存储指令相关联的预取
CN109697111A (zh) * 2017-10-20 2019-04-30 图核有限公司 在多线程处理器中调度任务

Also Published As

Publication number Publication date
CN112084122A (zh) 2020-12-15

Similar Documents

Publication Publication Date Title
US10353819B2 (en) Next line prefetchers employing initial high prefetch prediction confidence states for throttling next line prefetches in a processor-based system
US9990297B2 (en) Processor and control method of processor
CN104636270B (zh) 数据处理装置和数据处理方法
US11294810B2 (en) Memory request throttling to constrain memory bandwidth utilization
US8621157B2 (en) Cache prefetching from non-uniform memories
US6311260B1 (en) Method for perfetching structured data
US6983356B2 (en) High performance memory device-state aware chipset prefetcher
KR102424121B1 (ko) 프리-페치 유닛, 그것을 포함하는 장치 및 그것의 동작 방법
US20030079089A1 (en) Programmable data prefetch pacing
US20110072218A1 (en) Prefetch promotion mechanism to reduce cache pollution
US10296460B2 (en) Prefetch bandwidth throttling by dynamically adjusting miss buffer prefetch-dropping thresholds
US8595443B2 (en) Varying a data prefetch size based upon data usage
US9465744B2 (en) Data prefetch ramp implemenation based on memory utilization
US20070239940A1 (en) Adaptive prefetching
JP2008505396A (ja) リソースの割り当ておよび制限を介するヘテロジニアスチップマルチプロセッサのための装置および方法
JP2017509998A (ja) キャッシュ汚染を低減するために専用キャッシュセットにおける専用プリフェッチポリシーを競合させることに基づいた適応キャッシュプリフェッチング
US7246203B2 (en) Queuing cache for vectors with elements in predictable order
JP2008521085A (ja) プリフェッチを有するキャッシュ
US9367466B2 (en) Conditional prefetching
US7200719B2 (en) Prefetch control in a data processing system
KR20150047423A (ko) 데이터 처리방법 및 프리페치 장치
EP3335124A1 (en) Register files for i/o packet compression
CN112084122B (zh) 计算机存储器中对区域预取器的置信度和侵略性控制
CN113407119A (zh) 数据预取方法、数据预取装置、处理器
US20230169007A1 (en) Compression aware prefetch

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
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20210908

Address after: 610093 No. 23-32, 12 / F, block E5, Tianfu Software Park, building 2, No. 1366, middle section of Tianfu Avenue, Chengdu high tech Zone, China (Sichuan) pilot Free Trade Zone, Chengdu, Sichuan

Applicant after: CHENGDU HAIGUANG MICROELECTRONICS TECHNOLOGY Co.,Ltd.

Address before: 300392 North 2-204 industrial incubation-3-8, 18 Haitai West Road, Huayuan Industrial Zone, Tianjin

Applicant before: Haiguang Information Technology Co., Ltd

GR01 Patent grant
GR01 Patent grant