CN116483743A - 数据高速缓存预取装置、方法及处理器 - Google Patents
数据高速缓存预取装置、方法及处理器 Download PDFInfo
- Publication number
- CN116483743A CN116483743A CN202310272722.1A CN202310272722A CN116483743A CN 116483743 A CN116483743 A CN 116483743A CN 202310272722 A CN202310272722 A CN 202310272722A CN 116483743 A CN116483743 A CN 116483743A
- Authority
- CN
- China
- Prior art keywords
- data
- unit
- cache
- access
- address
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 33
- 230000003139 buffering effect Effects 0.000 claims abstract description 8
- 230000004044 response Effects 0.000 claims description 20
- 239000013598 vector Substances 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 24
- 238000012545 processing Methods 0.000 description 8
- 239000012634 fragment Substances 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 238000013519 translation Methods 0.000 description 6
- 238000004590 computer program Methods 0.000 description 5
- 101150015860 MC1R gene Proteins 0.000 description 4
- 102100034216 Melanocyte-stimulating hormone receptor Human genes 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 239000008358 core component Substances 0.000 description 2
- 238000011156 evaluation Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000003252 repetitive effect Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 239000000306 component Substances 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
Classifications
-
- 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/0877—Cache access modes
-
- 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/0893—Caches characterised by their organisation or structure
-
- 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)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本公开提供了一种数据高速缓存预取装置、方法及处理器,该装置包括加载存储单元、高速缓存单元、寄存器、行缓冲单元以及数据缓存预取单元;其中,数据缓存预取单元配置为在高速缓存单元发生数据缺失的情况下,响应于接收到的数据访问请求,根据数据访问请求的访问地址,生成预测地址流,以及将预测地址流发送至行缓冲单元,以使行缓冲单元通过总线获取与预测地址流对应的目标数据,并将目标数据发送至高速缓存单元。
Description
技术领域
本公开涉及数据缓存预取技术领域,更具体地,涉及一种数据高速缓存预取装置、方法及处理器。
背景技术
高速缓存系统(Cache System)是影响高性能处理器及高端服务器中商业应用程序性能的核心部件。在商业服务器的工作负载中,大约1/2到2/3的执行时间花费在处理器中内存系统相关的停顿等待上。这些工作负载依赖于复杂的算法和数据结构,具有较大的代码足迹,对超过物理内存的数据集进行操作,并且使用复杂的细粒度同步来最大化并发性,这对处理器架构设计人员提出了挑战。
相关技术中,对高性能处理器微架构的改进,例如乱序执行、非阻塞缓存(NonBlocking Cache)和提前运行执行等方法,通过增加芯片外内存级并行(Memory LevelParallelism,MLP)来提高内存系统性能。然而,为了发现并行错误,这些方法需保证正确地预测指令流和执行指令流,这限制了这些方法可以探索指令窗口的深度。因此,提高内存并行性和隐藏缓存延迟是提高高性能处理器及高端服务器性能的关键。
发明内容
本公开提出了一种数据高速缓存预取装置、方法及处理器。
根据本公开的第一方面,提出了一种数据高速缓存预取装置,包括加载存储单元、高速缓存单元、寄存器、行缓冲单元以及数据缓存预取单元;其中,数据缓存预取单元配置为在高速缓存单元发生数据缺失的情况下,响应于接收到的数据访问请求,根据数据访问请求的访问地址,生成预测地址流,以及将预测地址流发送至行缓冲单元,以使行缓冲单元通过总线获取与预测地址流对应的目标数据,并将目标数据发送至高速缓存单元。
例如,加载存储单元配置为在高速缓存单元发生数据缺失的情况下,指示在寄存器创建第一表项,以使寄存器对总线发起数据访问请求,以及在行缓冲单元创建第二表项,以使行缓冲单元通过总线接收与数据访问请求相对应的响应数据,并将该响应数据输出至高速缓存单元;其中,响应数据与目标数据相同。
例如,加载存储单元包括管道;数据缓存预取单元还配置为根据管道的访问地址,生成预测地址流;以及将预测地址流发送至行缓冲单元,以使行缓冲单元通过总线获取与预测地址流对应的数据,并将该数据发送至高速缓存单元。
例如,数据缓存预取单元还配置为根据管道的访问地址,得到与访问地址相对应的空间分布信息;其中,空间分布信息表征在数据访问请求的期间,与数据访问请求相对应的访问空间区域的位向量;以及根据空间分布信息,得到预测地址流。
例如,数据访问请求包括访问地址信息,访问地址信息指示与数据访问请求相对应的访问空间区域,访问空间区域包括多个空间区域,每个空间区域包括多个缓存行。
例如,数据缓存预取单元还配置为对访问空间区域的多个空间区域依次访问,得到与访问地址相对应的空间分布信息。
例如,数据缓存预取单元还配置为根据数据访问请求的访问地址信息和与数据访问请求相对应的地址信息,对访问空间区域的空间特征进行索引。
例如,数据缓存预取单元还配置为将访问地址信息与地址信息进行逻辑运算,得到第一地址信息;将第一地址信息进行截断处理,得到第二地址信息;以及根据第二地址信息和访问空间区域的预置索引值,得到第三地址信息;其中,该第三地址信息表征索引空间特征的地址。
例如,数据访问请求包括触发器访问信号、逐出信号和无效信号中的一种或多种。
根据本公开实施例的第二方面,提供了一种数据高速缓存预取方法,该方法应用于数据高速缓存预取装置,该数据高速缓存预取装置包括加载存储单元、高速缓存单元、寄存器、行缓冲单元和数据缓存预取单元,该方法包括:在高速缓存单元发生数据缺失的情况下,数据缓存预取单元响应于接收到的数据访问请求,根据数据访问请求的访问地址,生成预测地址流,以及将预测地址流发送至行缓冲单元,以使行缓冲单元通过总线获取与预测地址流对应的目标数据,并将目标数据发送至高速缓存单元。
例如,该方法还包括在高速缓存单元发生数据缺失的情况下,加载存储单元指示在寄存器创建第一表项,以使寄存器对总线发起数据访问请求,以及在行缓冲单元创建第二表项,以使行缓冲单元通过总线接收与数据访问请求相对应的响应数据,并将该响应数据输出至高速缓存单元;其中,响应数据与目标数据相同。
根据本公开实施例的第三方面,提供了一种处理器,包括:如本公开第一个方面提供的数据高速缓存预取装置。
根据公开实施例的技术方案,提供了一种数据高速缓存预取装置。在高速缓存单元发生数据缺失的情况下,该数据高速缓存预取装置通过数据缓存预取单元监测的空间区域访问机制,得到预测地址流信息,以避免强制缓存数据缺失所引起的延迟及性能开销,提高处理器的性能。
附图说明
通过下面结合附图说明本公开实施例,将使本公开实施例的上述及其它目的、特征和优点更加清楚。应注意,贯穿附图,相同的元素由相同或相近的附图标记来表示。图中:
图1示出了相关技术中的处理器的结构示意图;
图2示出了根据本公开一实施例的数据高速缓存预取装置的结构示意图;
图3A示出了根据本公开一实施例的请求访问的结构示意图;
图3B示出了根据本公开一实施例的空间区域的结构示意图;
图3C示出了根据本公开一实施例的数据缓存空间访问特征的数据结构示意图;
图4示出了根据本公开一实施例的空间区域和缓存区的结构示意图;
图5A~5D示出了根据本公开一实施例的第一次对空间区域访问的流程示意图;
图5E~5H示出了根据本公开一实施例的第二次对空间区域访问的流程示意图;
图5I~5J示出了根据本公开一实施例的第三次对空间区域访问的流程示意图;以及
图6示出了根据本公开一实施例的数据高速缓存预取方法的流程图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整的描述。显然,所描述的实施例是本公开的一部分实施例,而不是全部。基于所描述的本公开实施例,本领域普通技术人员在无需创造性劳动的前提下获得的所有其他实施例都属于本公开保护的范围。在以下描述中,一些具体实施例仅用于描述目的,而不应该理解为对本公开有任何限制,而只是本公开实施例的示例。在可能导致对本公开的理解造成混淆时,将省略常规结构或构造。应注意,图中各部件的形状和尺寸不反映真实大小和比例,而仅示意本公开实施例的内容。
除非另外定义,本公开实施例使用的技术术语或科学术语应当是本领域技术人员所理解的通常意义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。
图中示出了一些方框图和/或流程图。应理解,方框图和/或流程图中的一些方框或其组合可以由计算机程序指令来实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,从而这些指令在由该处理器执行时可以创建用于实现这些方框图和/或流程图中所说明的功能/操作的装置。本公开的技术可以硬件和/或软件(包括固件、微代码等)的形式来实现。另外,本公开的技术可以采取存储有指令的计算机可读存储介质上的计算机程序产品的形式,该计算机程序产品可供指令执行系统使用或者结合指令执行系统使用。
图1示出了相关技术中的处理器的结构示意图。如图1所示,该处理器100包括多个核,分别为核0、核1、核2和核3。各核之间通过环形总线(Ring)电连接。可以理解,核0、核1核2和核3相互协同工作以实现复杂的指令执行过程,在此不对核0、核1核2和核3进行详细介绍。
如图1所示,该处理器100的核心部件包括取指令单元110、指令高速缓存单元(Instruction Cache)120、分支预测单元130、指令译码单元140、指令执行单元150、访存单元160、数据预取单元170、数据高速缓存单元180和二级高速缓存单元190。
取指令单元110配置为处理器100的核将指令从存储器中读取出来的过程(按照其指令地址值对应的存储器地址进行取指)。
指令高速缓存单元120配置为根据取指令单元110发出的取指令请求,在第一级高速缓存单元中寻找与取指令请求相对应的指令。如果第一级高速缓存中存在与取指令请求相对应的指令,则返回命中的指令。否则,在下一级高速缓存单元中进行寻找与取指令请求相对应的指令。
分支预测单元130配置为根据取指令请求,预测在后指令的类型。
指令译码单元140配置为对指令高速缓存单元120读取的指令进行译码处理,得到与该指令相对应的指令执行信息。
指令执行单元150配置为根据指令译码单元140输出的指令执行信息,执行该指令,并输出执行结果。
访存单元160配置为根据指令执行单元150输出的执行结果执行数据访存。
数据预取单元170配置为当程序以地址递增的方式访问数据时,数据预取单元170会被激活,自动预取下一个高速缓存行的数据。
数据高速缓存单元(Data Cache)180配置为存储各指令和与各指令对应的数据。
二级高速缓存单元(L2Cache)190配置为处理器100提供数据临时存储分配与支持。
三级缓存高速缓存单元配置为读取和存储二级高速缓存单元190之后未命中的数据。
主存储器配置为存储指令和数据。例如,处理器100可以直接对主存储器进行随机存取。
可以理解,如图1所示的处理器100仅为示例性的说明,该处理器100包括但不仅限于如图1所示的各单元。
例如,处理器100对各指令的执行过程一般分为5个阶段,分别为取指令、指令译码、执行指令、访存取数以及结果写回。
例如,取指令(Instruction Fetch,IF)阶段是处理器100指示将一条指令从主存储器中取到指令寄存器的过程。程序计数器(Program Counter,PC)中的数值,用来指示当前指令在主存储器中的位置。
例如,处理器100可以通过取指令单元110向指令高速缓存单元120发出取指令请求。
例如,指令高速缓存单元120可以为处理器100的一级指令高速缓存单元(L1 ICache)。
例如,取出指令后,处理器100立即进入指令译码(Instruction Decode,ID)阶段。在指令译码阶段,指令译码单元140按照预定的指令格式,对取回的指令进行译码执行,得到与各指令对应的指令类别以及与各指令相对应的操作数。
例如,在指令译码阶段,通过译码得到的指令信息,并结合分支预测单元130输出的分支目标缓冲区(Branch Target Buffer,BTB)信息,可以得到各指令的指令信息。
例如,还可以通过结合指令快速翻译查找表(Instruction-TranslationLookaside Buffer,I-TLB),可以得到各指令的虚拟地址到物理地址的转换信息。
例如,指令执行(Instruction Execute,EX)阶段,该阶段的目的是通过指令执行单元150完成指令所规定的各种操作,具体实现指令的功能。因此,在指令执行阶段,处理器100的不同部分被连接起来,以执行所需的操作。
例如,在完成一个逻辑加法处理的过程中,算术逻辑单元(Arithmetic and LogicUnit,ALU)将被连接到一组输入和一组输出,输入端提供需要相加的数值,输出端将含有最后的运算结果。
例如,指令执行阶段可以包括分支跳转单元、算术逻辑单元、浮点电路以及加载存储单元(Load Store Unit,LSU)对各指令执行的过程。
例如,加载存储单元负责数据缓存和寄存器之间的数据搬运,并且可以结合数据快速翻译查找表(Data-Translation Lookaside Buffer,D-TLB),以获得虚拟地址到物理地址的转换信息。
例如,根据指令需要,有可能存在要访问主存储器,读取操作数,此时处理器100进入访存取数(Memory,MEM)阶段。访存取数阶段的目的是访存单元160根据指令地址码,得到操作数在主存储器中的地址,并从主存储器中读取该操作数用于运算。
例如,结果写回(Write Back,WB)阶段作为指令执行的最后一个阶段,表示把执行指令阶段的运行结果数据写回至某种存储形式。
例如,结果数据通常被写回至处理器100的内部寄存器中,以便被后续的指令快速地存取。在其他一些情况下,结果数据也可被写入至主存储器。
在指令执行完毕、结果数据写回之后,在不存在意外事件(如结果溢出等)发生的情况下,处理器100接着从程序计数器PC中取得下一条指令地址,开始下一处理周期的指令执行循环,下一处理周期将顺序取出下一条指令。高性能处理器可以同时取出、译码和执行多条指令,具备并行处理的特性。
在实际应用过程中,许多服务器应用程序广泛使用具有规则和固定布局的数据对象,这导致处理器的内存访问模式存在很大的空间变化,并且在内存区域上重复出现。
例如,访问会从页首跨越到页尾,而高性能处理器内存系统的高速缓存块(CacheBlock)是固定的,传统的预取算法很难灵活的捕获这种大跨度的空间相关性。另外,在商业服务器的工作负载中,有些内存访问尽管跨越大内存区域,但仍会在更大尺度的空间区域上呈现重复布局问题,并且这些重复访问与程序计数器PC存在一些相关性。
数据缓存预取的关键在于捕获访问内存的空间相关性和时间相关性。传统的捕获空间相关性的策略,包括但不限于指令预取中常用的next line预取器、跨步(stride)预取器、流(stream)预取器等,以及调整缓存行大小(Cache Line Size)也可等效为捕获空间相关性的一种策略。但实质上这些方法都是绑定不同地址所包含数据的联系。这些传统的预取策略仅能覆盖比较简单的数据结构,比如数组,对于大跨度的访问特征并不能捕获到正确的空间相关性。
基于此,关注空间地址相关性来预测存储器的访问行为,是提高处理器对数据缓存空间预取性能的关键手段之一。
本公开实施例提供了一种数据高速缓存预取装置,包括加载存储单元、高速缓存单元、寄存器、行缓冲单元以及数据缓存预取单元;其中,数据缓存预取单元配置为在高速缓存单元发生数据缺失的情况下,响应于接收到的数据访问请求,根据数据访问请求的访问地址,生成预测地址流,以及将预测地址流发送至行缓冲单元,以使行缓冲单元通过总线获取与预测地址流对应的目标数据,并将目标数据发送至高速缓存单元。
根据公开实施例的技术方案,提供了一种数据高速缓存预取装置。在高速缓存单元发生数据缺失的情况下,该数据高速缓存预取装置通过数据缓存预取单元监测的空间区域访问机制,得到预测地址流信息,以避免强制缓存数据缺失所引起的延迟及性能开销,提高处理器的性能。
图2示出了根据本公开一实施例的数据高速缓存预取装置的结构示意图。为了简明,本公开对处理器100不再赘述。
如图2所示,该数据高速缓存预取装置200包括加载存储单元(LSU)210、寄存器220、数据缓存预取单元(Prefetcher,简称预取单元)230、行缓冲单元240和高速缓存单元250。
LSU 210配置为加载和存储各缓存单元和寄存器彼此之间的数据。
寄存器220配置为存储高速缓存单元250发生数据缺失(miss)的情况下的信息。
预取单元230配置为根据数据访问请求的访问地址(address,addr),生成与各数据访问请求相对应的预测地址流(PC流)。
行缓冲单元240配置为从总线(Bus Interface Unit,BIU)中取回与PC流相对应的数据,并将该数据回填至高速缓存单元250中。
例如,寄存器220可以为处理器的数据缺失状态保存寄存器(Miss StatusHolding Registers,MSHRs)。
例如,在高速缓存单元250发生数据缺失的情况下,MSHRs 220用于记录缓存数据缺失状态,高速缓存单元250可以继续响应其它的存储访问请求,当缓存数据缺失被满足后,MSHRs 220记录的信息会被释放。
例如,MSHRs 220包括多个表项(即条目)。每个条目用于记录对应高速缓存块上的数据缺失信息。
例如,行缓冲单元240可以为处理器的行填充缓冲单元(Line Fill Buffer,LFB)。
例如,LFB240配置为在高速缓存单元250发生数据缺失的情况下,从总线BIU中取回与PC流相对应的数据,并将该数据回填至高速缓存单元250中。
例如,高速缓存单元250可以为处理器的一级数据高速缓存单元(L1 D-Cache)。
在本公开实施例中,预取单元230配置为在L1 D Cache 250发生数据缺失的情况下,响应于接收到的数据访问请求,根据数据访问请求的访问地址addr,生成PC流。以及将PC流发送至LFB 240,以使LFB 240通过总线BIU获取与PC流对应的目标数据,并将目标数据发送至L1 D Cache 250。
例如,LSU 210包括管道(Pipeline,或称为流水线)。
例如,预取单元230还配置为跟踪LSU210的管道中的访问地址addr,在L1 D Cache250发生数据缺失时使能,生成与各访问地址addr对应的PC流。并将该PC流发送至LFB 240,以使LFB 240通过总线BIU获取与PC流对应的目标数据,并将目标数据发送至L1 D Cache250。
在本公开实施例中,LSU 210配置为在L1 D Cache 250发生数据缺失的情况下,指示在MSHRs 220中创建第一表项,以使MSHRs 220对总线BIU发起数据访问请求,以及在LFB240中创建第二表项,以使LFB 240通过总线BIU接收与数据访问请求相对应的响应数据,并将该响应数据输出至L1 D Cache 250。
例如,MSHRs 220的第一表项可以为记录对应高速缓存块上的数据缺失信息。
例如,MSHRs 220的第一表项可以以表(table)的形式设计。
例如,LFB 240的第二表项也可以以table的形式设计,用于等待接受从总线BIU返回的数据,然后将数据写回至L1 D Cache 250中。
例如,在预取单元230预测缓存数据缺失命中(即预测正确)的情况下,从总线BIU返回的响应数据和目标数据相同。
可以理解,本公开实施例中的高速缓存单元发生数据缺失指的是访问请求的数据或指令不在高速缓存单元250中。
根据本公开的实施例,在高速缓存单元发生数据缺失的情况下,通过数据缓存预取单元监测的空间区域访问机制,得到预测地址流信息,以避免强制缓存数据缺失所引起的延迟及性能开销,提高处理器的性能。
图3A示出了根据本公开一实施例的请求访问的结构示意图。
如图3A所示,访问片段(Generation)表征访问某个空间区域(Spatial Region)的时间窗口。
例如,数据访问请求包括触发访问(Trigger Access)信号、逐出(Evict)信号和无效(Invalidate)信号中的一种或多种。
例如,Generation可以定义为从触发访问到逐出信号或从触发访问到无效信号之间的时间段。
例如,以空间区域对应的高位地址作为标签(Tag)用以标记。
例如,将各空间区域的某个子空间区域对应的所有标签之间的时间段记为访问片段。
例如,如图3A所示,所有Tag0之间的时间段记为访问片段。以及,所有Tag1之间的时间段也记为访问片段。
例如,在访问空间区域A的过程中,访问请求包括多个触发访问信号和逐出信号。每个触发访问信号访问的空间区域的高电平对应一个标签Tag0。以及,根据逐出信号结束对空间区域A的访问。因此,在访问空间区域A的过程中,对应的多个标签Tag0构成一个访问片段Generation。
例如,在访问空间区域B的过程中,访问请求包括多个触发访问信号和无效信号。每个触发访问信号访问的空间区域的高电平对应一个标签Tag1。以及,根据无效信号结束对空间区域B的访问。因此,在访问空间区域B的过程中,对应的多个标签Tag1构成一个访问片段Generation。
例如,空间区域可以以高速缓存块为基础单位,通过此为目标捕获数据缓存的空间相关性。
例如,触发访问表示记录对空间区域的访问。
例如,空间分布(Spatial Pattern)表示在Generation期间,对空间区域访问空间区域对应的位向量,即每一bit位均一一映射到一个高速缓存行(Cache Line)上,并以位向量作为记录空间区域的空间访问特征的数据结构。
图3B示出了根据本公开一实施例的空间区域的结构示意图。
如图3B所示,以空间区域310的大小为页(Page)为例说明,缓冲池页(Buffer poolpage)表示访问的空间区域的大小。空间区域可以包括页头(Page header)、B树键值对(B-Tree key-ptr pair)和固定大小的元组(Fixed-size tuples)。
图3C示出了根据本公开一实施例的数据缓存空间访问特征的数据结构示意图。
例如,空间区域310可以包括区域A1、区域A2、...、区域An。n为正整数。
例如,将空间区域以缓存行(Cache line)为粒度分成若干位。对页的首尾进行访问的时候,将对应的空间分布信息320的bit位置为高电平“1”。
需说明的是,本公开实施例的空间区域和空间分布信息仅为示例性的说明,并不构成本公开实施例的空间区域和空间分布信息的限定。
根据本公开的实施例,数据缓存预取单元还配置为根据LSU的管道的访问地址addr,得到与访问地址addr相对应的空间分布信息。以及根据空间分布信息,得到预测PC流。
例如,数据访问请求包括访问地址信息。访问地址信息PC指示与数据访问请求相对应的访问空间区域。访问空间区域可以包括多个空间区域,每个空间区域包括多个缓存行。
图4示出了根据本公开一实施例的空间区域和缓存区的结构示意图。如图4所示,以空间区域410的大小为页为例说明。
例如,页有16个高速缓存行。
例如,页可以分成4个区域,分别为区域A、区域B、区域C和区域D。
例如,区域A到区域D分别对应1个高速缓存块。一个空间区域Spatial Region对应4个高速缓存块Cache Block。
例如,如图4所示,区域A包括区域A0、A1、A2、A3。区域B包括区域B0、B1、B2、B3。区域C包括区域C0、C1、C2、C3。区域D包括区域D0、D1、D2、D3。
例如,不同区域的标签可以通过字母A、B、C、...进行区分。
例如,数字0、1、2、3...表示区域内部以高速缓存行Cache line为单位的偏移量(Offset)。
需说明的是,本公开实施例中空间区域包括但不仅限于页大小,以及空间区域包括但不仅限于分成4个高速缓存块Cache Block。在其他实施例中,空间区域还可以分成其他数量的高速缓存块Cache Block,例如3个、5个、6个等,本公开的实施例对此不做限定。
下面将结合具体实施例对本公开实施例中的各访问请求过程进行详细介绍。需说明的是,下述实施例仅为示例说明,以帮助本领域技术人员理解本公开的技术内容,并不构成本公开实施例的限定。
图5A~5D示出了根据本公开一实施例的第一次对空间区域访问的流程示意图。图5E~5H示出了根据本公开一实施例的第二次对空间区域访问的流程示意图。图5I~5J示出了根据本公开一实施例的第三次对空间区域访问的流程示意图。
可以理解,图5A~5J中所示的空间区域510的结构与图4所示的空间区域410的结构相同。为了简明,本公开对空间区域510不作赘述。
如图5A~5D所示,以第一次访问对区域A的0位、1位、2位进行访问为例进行说明,记为Generation(A:1)。
如图5A所示,在第一次访问Generation(A:1)中,对区域A的区域A0进行触发访问,此时区域A0对应的bit位置为高电平“1”。
例如,通过对区域A的区域A0进行触发访问得到的空间分布信息521为“1 0 0 0”。
如图5B所示,在完成对区域A0触发访问之后,对区域A的区域A1进行触发访问,此时区域A1对应的bit位置为高电平“1”。
例如,通过对区域A的区域A1进行触发访问得到的空间分布信息521为“1 1 0 0”。
如图5C所示,在完成对区域A1触发访问之后,对区域A的区域A2进行触发访问,此时区域A2对应的bit位置为高电平“1”。
例如,通过对区域A的区域A2进行触发访问得到的空间分布信息521为“1 1 1 0”。
如图5D所示,在完成对区域A1触发访问之后,通过对区域A的区域A1逐出,此时结束第一次访问Generation(A:1),得到的第一次访问的最终空间分布信息521为“1 1 1 0”。
如图5E~5H所示,以第二次访问对区域A的0位、1位和区域B的3位进行访问为例进行说明,记为Generation(A:2)。
如图5E所示,在完成第一次访问Generation(A:1)之后,对区域A的区域A0进行触发访问,此时区域A0对应的bit位置为高电平“1”。
例如,在第二次访问中,通过对区域A的区域A0进行触发访问得到的空间分布信息522为“1 0 0 0”。
如图5F所示,在完成对区域A0触发访问之后,对区域A的区域A1进行触发访问,此时区域A1对应的bit位置为高电平“1”。
例如,在第二次访问中,通过对区域A的区域A1进行触发访问得到的空间分布信息522为“1 1 0 0”。
如图5G所示,在完成对区域A1触发访问之后,对区域B的区域B3进行触发访问。由于该访问请求为对区域A的访问请求,此时得到的空间分布信息522仍为“1 1 0 0”。
如图5H所示,在完成对Region B3触发访问之后,通过对区域A的区域A1的数据无效处理。此时结束第二次访问Generation(A:2),得到的第二次访问的最终空间分布信息522为“1 1 0 0”。
如图5I~5J所示,以第三次访问对区域B的3位、2位进行访问为例进行说明,记为Generation(B:1)。
在如图5I~5J所示的示例中,在第二次访问Generation(A:2)未结束之前,对区域B开启新的访问Generation(B:1),即当下一次访问不同区域时,并发一个新的Generation对区域B的特征进行捕获。
例如,在第二次访问Generation(A:2)中,当执行对区域A的区域A1的数据无效时,结束第二次访问Generation(A:2)。以及继续对区域B的访问,直到执行至无效信号结束。
如图5J所示,第三次访问Generation(B:1)的最终空间分布信息523为“0 0 1 1”。
可以理解,本公开的实施例对区域C或区域D的访问过程如上述实施例对区域A、区域B的访问过程所示,本公开的实施例对区域C或区域D的访问过程不作详细介绍。
在本公开实施例中,通过依次对各区域进行访问,得到相对应的空间分布信息。各空间分布信息可以为访问空间区域的位向量,用以表征预测PC流。以及,根据预测PC流,获取与预测PC流对应的目标数据,完成数据预取操作。
根据本公开的实施例,该装置可以应用于处理器中,通过在处理器内嵌数据缓存预取单元,该数据缓存预取单元基于空间地址相关性来预测缓冲单元的访问行为,以避免强制缓存数据缺失,提升高性能处理器在跨越大内存区域重复布局的工作负载中的系统性能。
根据本公开的实施例,数据缓存预取单元还配置为根据数据访问请求的访问地址信息PC和与数据访问请求相对应的地址信息addr,对访问空间区域的空间特征进行索引。
例如,数据缓存预取单元还配置为将访问地址信息PC与地址信息addr进行逻辑运算,得到第一地址信息PC1。将第一地址信息进行截断Cut处理,得到第二地址信息PC2。以及根据第二地址信息(PC2)和访问空间区域的预置索引值Offset,得到第三地址信息PC3,该第三地址信息PC3表征索引空间特征的地址。
例如,将访问地址信息PC对应的PC地址与预测地址流的地址addr进行逻辑加运算,得到第一地址信息PC1。
例如,PC地址可以为64bit的地址。
例如,将PC地址与地址addr进行逻辑加运算,得到64bit的第一地址信息PCI[63:0]。
例如,将第一地址信息PC1进行截断Cut处理n个bit,得到(64-n)bit的第二地址信息PC2。n为正整数。
例如,n可以取值为52等。
例如,在n取值52的情况下,第二地址信息PC2的地址范围可以表示为[0,212-1]。
例如,将空间区域的高速缓存行Cacheline作为预置索引值Offset,得到第三地址信息PC3。
例如,第三地址信息PC3的地址范围可以表示为[0,212-Offset-1]。
需说明的是,上述实施例中所示的对PC地址、地址addr以及预置索引值Offset仅为示例性的说明,并不构成本公开实施例的限定。在其他一些实施例中,各参数的取值可以根据实际需求进行设定,本公开的实施例对此不做限定。
根据本公开的实施例,通过访问地址信息PC与预测地址流addr相结合的方式,实现对空间特征的索引。该方式可以提高特征索引的准确性,通过截断addr处理以及将空间区域的高速缓存行Cache line作为预置索引值Offset,有效减小装置的面积,以及减小关键路径的延时。
另外,对于标准性能评估公司(Standard Performance EvaluationCorporation,SPEC)研发的针对中央处理器(Central Processing Unit,CPU)的子系统评估软件,对空间特征的访问可以通过访问地址信息PC和空间区域偏移(Spatial RegionOffset)相结合来近似实现。
例如,数据地址的空间区域偏移量是地址从空间区域开始的距离,空间区域偏移允许数据缓存空间预测器区分由相同代码片段而生成的重复模式,这些重复模式仅在它们相对于空间区域边界的对齐方面有所不同。由于应用程序的明显未命中PC比未命中地址addr少得多,通过访问地址信息PC和空间区域偏移的索引方式大大降低了对预测表存储要求。本公开实施例通过地址信息PC和空间区域偏移索引的索引方式,不仅可以节省存储空间,还可以消除冷缺失。
图6示出了根据本公开一实施例的数据高速缓存预取方法的流程图。
如图6所示,该数据高速缓存预取方法600,应用于数据高速缓存预取装置,包括步骤S610。可以理解,该方法600可以应用于如图2所示的数据高速缓存预取装置200。为了简明,本公开对数据高速缓存预取装置200不再赘述。
在步骤S610,在高速缓存单元发生数据缺失的情况下,数据缓存预取单元响应于接收到的数据访问请求,根据数据访问请求的访问地址,生成预测地址流,以及将预测地址流发送至行缓冲单元,以使行缓冲单元通过总线(BIU)获取与预测地址流对应的目标数据,并将目标数据发送至高速缓存单元。
可以理解,步骤S610可以由图2所示的数据缓存预取单元200执行。为了简明,本公开对数据缓存预取单元200不再赘述。
根据本公开的实施例,该方法还包括在高速缓存单元发生数据缺失的情况下,加载存储单元指示在寄存器创建第一表项,以使寄存器对总线发起数据访问请求,以及在行缓冲单元创建第二表项,以使行缓冲单元通过总线接收与数据访问请求相对应的响应数据,并将该响应数据输出至高速缓存单元。
可以理解,上述步骤可以由图2所示的加载存储单元LSU执行。为了简明,本公开对加载存储单元LSU不再赘述。
本公开的实施例还提供一种处理器。该处理器包括数据高速缓存预取装置。
可以理解,该数据高速缓存预取装置与如图2所示的数据高速缓存预取装置200的结构相同。为了简明,本公开对数据高速缓存预取装置200不再赘述。
在本公开实施例中,该处理器为如图1所示的处理器100的结构改进。通过在该处理器中内嵌数据缓存预取单元,在高速缓存单元L1D Cache发生数据缺失的情况下,通过数据缓存预取单元监测的空间区域访问机制,得到预测地址流信息,以避免强制缓存数据缺失所引起的延迟及性能开销,提高处理器的性能。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
本领域技术人员可以理解,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合,即使这样的组合或结合没有明确记载于本公开中。特别地,在不脱离本公开精神和教导的情况下,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合。所有这些组合和/或结合均落入本公开的范围。
尽管已经参照本公开的特定示例性实施例示出并描述了本公开,但是本领域技术人员应该理解,在不背离所附权利要求及其等同物限定的本公开的精神和范围的情况下,可以对本公开进行形式和细节上的多种改变。因此,本公开的范围不应该限于上述实施例,而是应该不仅由所附权利要求来进行确定,还由所附权利要求的等同物来进行限定。
Claims (12)
1.一种数据高速缓存预取装置,包括:
加载存储单元;
高速缓存单元;
寄存器;
行缓冲单元;以及
数据缓存预取单元;
其中,所述数据缓存预取单元配置为在所述高速缓存单元发生数据缺失的情况下,
响应于接收到的数据访问请求,根据所述数据访问请求的访问地址,生成预测地址流,以及将所述预测地址流发送至所述行缓冲单元,以使所述行缓冲单元通过所述总线获取与所述预测地址流对应的目标数据,并将所述目标数据发送至所述高速缓存单元。
2.根据权利要求1所述的装置,其中,所述加载存储单元配置为在所述高速缓存单元发生数据缺失的情况下,
指示在所述寄存器创建第一表项,以使所述寄存器对总线发起数据访问请求,以及在所述行缓冲单元创建第二表项,以使所述行缓冲单元通过所述总线接收与所述数据访问请求相对应的响应数据,并将该响应数据输出至所述高速缓存单元;其中,所述响应数据与所述目标数据相同。
3.根据权利要求1所述的装置,其中,所述加载存储单元包括管道;所述数据缓存预取单元还配置为:
根据所述管道的访问地址,生成预测地址流;以及
将所述预测地址流发送至所述行缓冲单元,以使所述行缓冲单元通过所述总线获取与所述预测地址流对应的数据,并将该数据发送至所述高速缓存单元。
4.根据权利要求3所述的装置,其中,所述数据缓存预取单元还配置为:
根据所述管道的访问地址,得到与所述访问地址相对应的空间分布信息;其中,所述空间分布信息表征在所述数据访问请求的期间,与所述数据访问请求相对应的访问空间区域的位向量;以及
根据所述空间分布信息,得到所述预测地址流。
5.根据权利要求4所述的装置,其中,所述数据访问请求包括访问地址信息,所述访问地址信息指示与所述数据访问请求相对应的访问空间区域,所述访问空间区域包括多个空间区域,每个空间区域包括多个缓存行。
6.根据权利要求5所述的装置,其中,所述数据缓存预取单元还配置为:
对所述访问空间区域的多个空间区域依次访问,得到与所述访问地址相对应的空间分布信息。
7.根据权利要求1所述的装置,其中,所述数据缓存预取单元还配置为:
根据所述数据访问请求的访问地址信息和与所述数据访问请求相对应的地址信息,对所述访问空间区域的空间特征进行索引。
8.根据权利要求7所述的装置,其中,所述数据缓存预取单元还配置为:
将所述访问地址信息与所述地址信息进行逻辑运算,得到第一地址信息;
将所述第一地址信息进行截断处理,得到第二地址信息;以及
根据所述第二地址信息和所述访问空间区域的预置索引值,得到第三地址信息;其中,该第三地址信息表征索引空间特征的地址。
9.根据权利要求1所述的装置,其中,所述数据访问请求包括触发器访问信号、逐出信号和无效信号中的一种或多种。
10.一种数据高速缓存预取方法,应用于数据高速缓存预取装置,所述数据高速缓存预取装置包括加载存储单元、高速缓存单元、寄存器、行缓冲单元和数据缓存预取单元,该方法包括:
在高速缓存单元发生数据缺失情况下,
所述数据缓存预取单元响应于接收到的数据访问请求,根据所述数据访问请求的访问地址,生成预测地址流,以及将所述预测地址流发送至所述行缓冲单元,以使所述行缓冲单元通过所述总线获取与所述预测地址流对应的目标数据,并将所述目标数据发送至所述高速缓存单元。
11.根据权利要求10所述的方法,还包括:
在所述高速缓存单元发生数据缺失的情况下,
所述加载存储单元指示在所述寄存器创建第一表项,以使所述寄存器对总线发起数据访问请求,以及在所述行缓冲单元创建第二表项,以使所述行缓冲单元通过所述总线接收与所述数据访问请求相对应的响应数据,并将该响应数据输出至所述高速缓存单元;其中,所述响应数据与所述目标数据相同。
12.一种处理器,包括:
如权利要求1~9中任一项所述的数据高速缓存预取装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310272722.1A CN116483743A (zh) | 2023-03-20 | 2023-03-20 | 数据高速缓存预取装置、方法及处理器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310272722.1A CN116483743A (zh) | 2023-03-20 | 2023-03-20 | 数据高速缓存预取装置、方法及处理器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116483743A true CN116483743A (zh) | 2023-07-25 |
Family
ID=87225875
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310272722.1A Pending CN116483743A (zh) | 2023-03-20 | 2023-03-20 | 数据高速缓存预取装置、方法及处理器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116483743A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117609110A (zh) * | 2023-12-19 | 2024-02-27 | 北京开源芯片研究院 | 一种缓存方法、高速缓存、电子设备及可读存储介质 |
-
2023
- 2023-03-20 CN CN202310272722.1A patent/CN116483743A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117609110A (zh) * | 2023-12-19 | 2024-02-27 | 北京开源芯片研究院 | 一种缓存方法、高速缓存、电子设备及可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10585804B2 (en) | Systems and methods for non-blocking implementation of cache flush instructions | |
US10248570B2 (en) | Methods, systems and apparatus for predicting the way of a set associative cache | |
US5941981A (en) | System for using a data history table to select among multiple data prefetch algorithms | |
TWI397813B (zh) | 用於虛擬化交易式記憶體的總體溢位之裝置、方法與系統 | |
US6978350B2 (en) | Methods and apparatus for improving throughput of cache-based embedded processors | |
US7383415B2 (en) | Hardware demapping of TLBs shared by multiple threads | |
JP5357017B2 (ja) | 高速で安価なストア−ロード競合スケジューリング及び転送機構 | |
JP7159223B2 (ja) | キャッシュの競合を管理するための方法およびシステム | |
US8984261B2 (en) | Store data forwarding with no memory model restrictions | |
JP2005521924A (ja) | シングルスレッドプログラムのマルチスレッドでのインプリシットな実行を可能にするマルチスレッドプロセッサ | |
US6760835B1 (en) | Instruction branch mispredict streaming | |
US20200233664A1 (en) | Efficient range-based memory writeback to improve host to device communication for optimal power and performance | |
US8387065B2 (en) | Speculative popcount data creation | |
WO2022237585A1 (zh) | 处理方法及装置、处理器、电子设备及存储介质 | |
CN116483743A (zh) | 数据高速缓存预取装置、方法及处理器 | |
US20180121353A1 (en) | System, method, and apparatus for reducing redundant writes to memory by early detection and roi-based throttling | |
US7134004B1 (en) | Processing device for buffering sequential and target sequences and target address information for multiple branch instructions | |
JPH1055276A (ja) | 多重レベル分岐予測方法および装置 | |
JP3045959B2 (ja) | スーパースカラ・プロセッサ装置内の非アーキテクト命令を選択的にサポートする方法及び装置 | |
US20180173640A1 (en) | Method and apparatus for reducing read/write contention to a cache | |
US7234027B2 (en) | Instructions for test & set with selectively enabled cache invalidate | |
JP4111645B2 (ja) | キャッシュミスした後のメモリバスアクセス制御方式 | |
US6954848B2 (en) | Marking in history table instructions slowable/delayable for subsequent executions when result is not used immediately | |
US9047199B2 (en) | Reducing penalties for cache accessing operations | |
KR20240072241A (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 |