CN117389630A - 一种数据缓存方法、装置、电子设备及可读存储介质 - Google Patents

一种数据缓存方法、装置、电子设备及可读存储介质 Download PDF

Info

Publication number
CN117389630A
CN117389630A CN202311686437.0A CN202311686437A CN117389630A CN 117389630 A CN117389630 A CN 117389630A CN 202311686437 A CN202311686437 A CN 202311686437A CN 117389630 A CN117389630 A CN 117389630A
Authority
CN
China
Prior art keywords
data block
access
condition
memory
target data
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.)
Granted
Application number
CN202311686437.0A
Other languages
English (en)
Other versions
CN117389630B (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.)
Beijing Open Source Chip Research Institute
Original Assignee
Beijing Open Source Chip Research Institute
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 Beijing Open Source Chip Research Institute filed Critical Beijing Open Source Chip Research Institute
Priority to CN202311686437.0A priority Critical patent/CN117389630B/zh
Publication of CN117389630A publication Critical patent/CN117389630A/zh
Application granted granted Critical
Publication of CN117389630B publication Critical patent/CN117389630B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/3824Operand accessing
    • G06F9/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • 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/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
    • 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/3824Operand accessing
    • G06F9/383Operand prefetching
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明实施例提供一种数据缓存方法、装置、电子设备及可读存储介质,涉及计算机技术领域,该方法包括:接收处理器发送的访存请求,所述访存请求中携带访存地址;在所述访存请求满足旁路预测条件的情况下,对所述访存地址对应的目标数据块进行旁路预测,得到预测结果;在所述预测结果指示所述访存地址对应的目标数据块需要被旁路的情况下,将所述目标数据块写入所述流式缓冲区;在所述预测结果指示所述访存地址对应的目标数据块不需要被旁路的情况下,将所述目标数据块写入所述基础高速缓存。本发明实施例可以提升缓存命中率,减少访问内存次数,降低内存系统的延迟和功耗。

Description

一种数据缓存方法、装置、电子设备及可读存储介质
技术领域
本发明涉及计算机技术领域,尤其涉及一种数据缓存方法、装置、电子设备及可读存储介质。
背景技术
近年来,中央处理器(Central Processing Unit,CPU)和图形处理器(GraphicsProcessing Unit,GPU)等计算部件的运行快速提高。同时,内存(Memory)的运行速度虽有提升,但幅度却远不及处理器的性能提升幅度,这就导致了计算部件和存储部件之间出现了愈发增大的性能鸿沟。在等待存储给出数据的过程中,计算部件只能暂停工作,其性能因此被浪费了。这被称为存储墙(Memory Wall),存储墙成为制约各种计算机系统性能的瓶颈。
为缓解存储墙对计算机系统性能带来的负面影响,人们在计算机体系结构中提出了存储层次的概念。计算机存储层次即把各种存储部件(包括寄存器、高速缓存、内存、硬盘等)根据工作速度和单位成本划分成不同层次。越靠近处理器端,存储部件的工作速度越快、容量越小、单位容量的成本越高;越靠近内存端,存储部件的容量越大、工作速度越慢、单位容量的成本越低。
在存储层次中,高速缓存(cache)是缓解存储墙影响的有效方法。cache的运行速度通常慢于处理器但是快于内存。得益于程序的局部性原理,把最近可能反复访问的数据拷贝到工作速度更快的cache中,能有效减少访存消耗的时间,从而在一定程度上掩盖处理器和内存之间的工作速度差距。其次,考虑到内存子系统的功耗在系统总功耗中的占比较大,如果能在cache中取到数据,就能减少访问内存的次数,从而减少内存功耗。因此,cache同时具有降低访问延迟和存储子系统功耗的能力。
当前计算机微体系结构设计中使用大容量的被多种设备共享的系统级高速缓存(System Cache)作为整个存储层次系统的最后一道防线(Last Defense),希望其能发挥降低访存延迟和减少内存访问次数的作用。然而,实验表明,把上层cache的管理方法直接应用到System Cache上时,system cache的命中率通常很低。
如何提升系统级缓存的命中率,减少对内存的访问,是优化芯片系统能耗、提升用户体验的重要课题。
发明内容
本发明实施例提供一种数据缓存方法、装置、电子设备及可读存储介质,可以提升系统级高速缓存的命中率。
为了解决上述问题,本发明实施例公开了一种数据缓存方法,应用于系统级高速缓存,所述系统级高速缓存包括流式缓冲区和基础高速缓存;所述方法包括:
接收处理器发送的访存请求,所述访存请求中携带访存地址;
在所述访存请求满足旁路预测条件的情况下,对所述访存地址对应的目标数据块进行旁路预测,得到预测结果;
在所述预测结果指示所述访存地址对应的目标数据块需要被旁路的情况下,将所述目标数据块写入所述流式缓冲区;
在所述预测结果指示所述访存地址对应的目标数据块不需要被旁路的情况下,将所述目标数据块写入所述基础高速缓存;
其中,所述旁路预测条件包括以下任一项:
所述访存请求为写请求;
所述访存请求为读请求,且所述系统级高速缓存中不存在与所述访存地址相匹配的数据块;
所述访存请求满足预取条件;所述预取条件用于指示将内存中的数据块提前预取至所述系统级高速缓存中需要满足的条件。
另一方面,本发明实施例公开了一种数据缓存装置,应用于系统级高速缓存,所述系统级高速缓存包括流式缓冲区和基础高速缓存;所述装置包括:
请求接收模块,用于接收处理器发送的访存请求,所述访存请求中携带访存地址;
旁路预测模块,用于在所述访存请求满足旁路预测条件的情况下,对所述访存地址对应的目标数据块进行旁路预测,得到预测结果;
第一写入模块,用于在所述预测结果指示所述访存地址对应的目标数据块需要被旁路的情况下,将所述目标数据块写入所述流式缓冲区;
第二写入模块,用于在所述预测结果指示所述访存地址对应的目标数据块不需要被旁路的情况下,将所述目标数据块写入所述基础高速缓存;
其中,所述旁路预测条件包括以下任一项:
所述访存请求为写请求;
所述访存请求为读请求,且所述系统级高速缓存中不存在与所述访存地址相匹配的数据块;
所述访存请求满足预取条件;所述预取条件用于指示将内存中的数据块提前预取至所述系统级高速缓存中需要满足的条件。
再一方面,本发明实施例还公开了一种电子设备,所述电子设备包括处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;所述存储器用于存放可执行指令,所述可执行指令使所述处理器执行前述的数据缓存方法。
本发明实施例还公开了一种可读存储介质,当所述可读存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行前述的数据缓存方法。
本发明实施例包括以下优点:
本发明实施例提供的数据缓存方法,在接收到的访存请求满足旁路预测条件的情况下,对访存地址对应的目标数据块进行旁路预测,并将需要被旁路的目标数据块写入流式缓冲区,从而让被旁路的数据块在流式缓冲区中缓存一小段时间,即使数据块被错误旁路,也会存在于流式缓冲区中,有被命中的机会,从而消除了错误旁路带来的影响;将不需要被旁路的目标数据块写入基础高速缓存中,从而避免了不会被命中的数据块与其他可能被命中的数据块对缓存的争用,有利于提升缓存命中率,从而减少访问内存次数,降低内存系统的延迟和功耗。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明的一种数据缓存方法实施例的步骤流程图;
图2是本发明的一种数据缓存的流程示意图;
图3是本发明的一种命中历史表的结构示意图;
图4是本发明的一种区域型预取器的结构示意图;
图5是本发明的一种数据缓存装置的结构示意图;
图6是本发明示例提供的一种电子设备的结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的说明书和权利要求书中的术语“第一”、“第二”等是用于区别类似的对象,而不用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施,且“第一”、“第二”等所区分的对象通常为一类,并不限定对象的个数,例如第一对象可以是一个,也可以是多个。此外,说明书以及权利要求中的术语“和/或”用于描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。本发明实施例中术语“多个”是指两个或两个以上,其它量词与之类似。
方法实施例
参照图1,示出了本发明的一种数据缓存方法实施例的步骤流程图,所述方法具体可以包括如下步骤:
步骤101、接收处理器发送的访存请求,所述访存请求中携带访存地址。
步骤102、在所述访存请求满足旁路预测条件的情况下,对所述访存地址对应的目标数据块进行旁路预测,得到预测结果。
步骤103、在所述预测结果指示所述访存地址对应的目标数据块需要被旁路的情况下,将所述目标数据块写入所述流式缓冲区。
步骤104、在所述预测结果指示所述访存地址对应的目标数据块不需要被旁路的情况下,将所述目标数据块写入所述基础高速缓存。
其中,所述旁路预测条件包括以下任一项:
A1、所述访存请求为写请求;
A2、所述访存请求为读请求,且所述系统级高速缓存中不存在与所述访存地址相匹配的数据块;
A3、所述访存请求满足预取条件;所述预取条件用于指示将内存中的数据块提前预取至所述系统级高速缓存中需要满足的条件。
需要说明的是,本发明实施例提供的数据缓存方法,可以应用于系统级高速缓存,所述系统级高速缓存包括流式缓冲区和基础高速缓存。系统级高速缓存位于内存控制器中,是处理器访问内存的最后一道缓存。系统级高速缓存由片上所有设备共享,包括CPU、GPU和各种加速芯片,等等。
系统级高速缓存具有存储层次低、多设备共享、到达的访存局部性差等特点,需要不同于传统缓存管理方法的独特管理策略。在低存储层次中,由于上层缓存的过滤作用,到达的访存请求的局部性很差,因此大量缓存块(cache line)在进入系统级高速缓存后没有被命中(re-reference)就被替换出系统级高速缓存。这种进入系统级高速缓存后没有被命中的缓存块被称为长复用块。长复用块因为其自身复用距离很大,无法在系统级高速缓存中命中;其次,它加剧了缓存的争用,使一些可能被命中的块被替换出了系统级高速缓存,进一步降低了缓存命中率。为了解决这一问题,本发明实施例在系统级高速缓存中使用旁路机制,对目标数据块进行旁路预测,仅把不需要被旁路的目标数据块写入基础高速缓存中,被旁路的数据块则不会被插入基础高速缓存中,从而避免了长复用块与其他可能被命中的数据块对缓存的争用,避免了其他数据块因缓存行被长复用块占用而被替换出缓存,有利于提升缓存命中率。
具体地,本发明实施例将系统级高速缓存划分为两个部分:流式缓冲区(streambuffer)和基础高速缓存(cache)。其中,流式缓冲区的容量较小,用于暂存被旁路的数据块;基础高速缓存的容量大,用于缓存未被旁路的数据块。示例性地,从系统级高速缓存的总容量中拿出一小部分作为流式缓冲区。在流式缓冲区中,可以采用先进先出的替换策略对被旁路的数据块进行管理,所有被旁路的块都按序进入和退出流式缓冲区。
在本发明实施例中,如果系统级高速缓存接收到处理器发送的访存请求,可以先判断该访存请求是否满足旁路预测条件,并在访存请求满足旁路预测条件的情况下,对该访存请求中携带的访存地址对应的目标数据块进行旁路预测,将需被旁路的数据块写入流式缓冲区,从而让被旁路的数据块在流式缓冲区中缓存一小段时间,即使数据块被错误旁路,也会存在于流式缓冲区中,有被命中的机会,从而消除了错误旁路带来的影响。不需要被旁路的数据块则会被写入基础高速缓存中,长复用块不会被插入基础高速缓存中,从而避免了长复用块与其他可能被命中的数据块对缓存的争用,提升了缓存命中率。
可以理解的是,本发明实施例中的处理器可以包括但不限于:CPU、GPU、数据处理器(Data Processing Unit,DPU)、现场可编程门阵列(Field Programmable Gate Array,FPGA)和专用集成电路(Application Specific Integrated Circuit,ASIC)中的处理模块或处理单元,等等。
本发明实施例中的旁路预测条件包括A1至A3中的任一项,换言之,只要系统级接收到的访存请求符合A1至A3中的任一项,就可以确定该访存请求满足旁路预测条件。
参照图2,示出了本发明实施例提供的一种数据缓存的流程示意图。如图2所示,系统级高速缓存包括旁路模块、流式缓冲区和基础高速缓存。其中,旁路模块用于进行旁路预测。如果该访存请求为写请求,说明处理器要向系统级高速缓存中写入数据,这种情况下,旁路模块对处理器写入的目标数据块进行旁路预测,基于预测结果确定该目标数据块是否需要被旁路。如果该目标数据块需要被旁路,则将该目标数据块写入流式缓冲区中,如果该目标数据块不需要被旁路,则将该目标数据块写入基础高速缓存中。
如果访存请求为读请求,则基于该访存请求中携带的访存地址,在系统级高速缓存中查找与该访存地址相匹配的数据块。如果系统级高速缓存中存在与访存地址相匹配的数据块,则直接将该数据块返回给处理器即可。如果系统级高速缓存中不存在与访存地址相匹配的数据块,则需要到内存中查找与该访存地址相匹配的目标数据块,并将查找到的目标数据块从内存中读取出来,写入系统级高速缓存中。
可选地,所述旁路预测条件包括:所述访存请求为读请求,且所述系统级高速缓存中不存在与所述访存地址相匹配的数据块;步骤102所述在所述访存请求满足旁路预测条件的情况下,对所述访存地址对应的目标数据块进行旁路预测,得到预测结果,包括:
步骤S11、在所述访存请求为读请求,且所述系统级高速缓存中不存在与所述访存地址相匹配的数据块的情况下,从内存中获取与所述访存地址相匹配的目标数据块;
步骤S12、对所述目标数据块进行旁路预测,得到预测结果。
在访存请求为读请求,且系统级高速缓存中不存在与访存地址相匹配的数据块的情况下,系统级高速缓存需要从内存中读数据。如图2所示,系统级高速缓存可以对从内存中读取到的数据,也即本发明实施例中的目标数据块,进行旁路预测。如果该目标数据块需要被旁路,则将该目标数据块写入流式缓冲区中,如果该目标数据块不需要被旁路,则将该目标数据块写入基础高速缓存中。
如果访存请求满足预取条件,则说明此时可以将内存中的数据块提前预取至系统级高速缓存中。在这种情况下,系统级高速缓存需要从内存中读数据。如图2所示,系统级高速缓存可以对从内存中读取到的数据,也即本发明实施例中的目标数据块,进行旁路预测,并将需要被旁路的数据块写入流式缓冲区,将不需要被旁路的数据块写入基础高速缓存中。
如果是系统级高速缓存向内存中写数据,则不需要进行旁路预测。同样的,如果是系统级高速缓存向处理器返回数据,也不需要进行任何处理。
可以理解的是,旁路预测的主要目的是预测一个数据块是否为长复用块,也即预测该数据块在进入缓存后是否会被命中,如果预测该数据块进入缓存后不会被命中,就可以确定该数据块为长复用块,需要被旁路;反之,如果预测该数据块进入缓存后可能会被命中,就可以确定该数据块不是长复用块,不需要被旁路。在本发明实施例中,可以基于访存请求所属的程序段或代码段中的各条指令,预测该访存地址对应的数据块是否需要被旁路;也可以基于缓存中各个数据块的历史命中情况,预测该访存地址对应的数据块是否需要被旁路,还可以采用其他旁路预测算法,对此,本发明实施例不做具体限定。
本发明实施例提供的数据缓存方法,在接收到的访存请求满足旁路预测条件的情况下,对访存地址对应的目标数据块进行旁路预测,并将需要被旁路的目标数据块写入流式缓冲区,从而让被旁路的数据块在流式缓冲区中缓存一小段时间,即使数据块被错误旁路,也会存在于流式缓冲区中,有被命中的机会,从而消除了错误旁路带来的影响;将不需要被旁路的目标数据块写入基础高速缓存中,从而避免了不会被命中的数据块与其他可能被命中的数据块对缓存的争用,有利于提升缓存命中率,从而减少访问内存次数,降低内存系统的延迟和功耗。
在本发明的一种可选实施例中,步骤102所述在所述访存请求满足旁路预测条件的情况下,对所述访存地址对应的目标数据块进行旁路预测,得到预测结果,包括:
步骤S21、在所述访存请求满足旁路预测条件的情况下,确定所述访存地址对应的目标数据块的历史命中情况;
步骤S22、根据所述历史命中情况对所述目标数据块进行旁路预测,得到预测结果。
在本发明实施例中,可以基于目标数据块的历史命中情况对目标数据块进行旁路预测。其中,历史命中情况可以反映在过去一段时间内处理器访问缓存时,目标数据块是否在缓存中被命中。历史命中情况中记录的历史数据的时间跨度可以根据实际需求进行设置,例如,可以预先设置一个周期,记录在这个周期内处理器访问缓存时,访存地址对应的各个数据块在缓存中的命中情况。
作为一种示例,如果历史命中情况反映该目标数据块在过去一段时间内的访问都是缓存缺失,也即处理器要访问该目标数据块时,该目标数据块不在缓存中,那么就可以认为处理器访问目标该数据块的间隔较长,该目标数据块是长复用块,应该被旁路。
反之,如果历史命中情况反映该目标数据块在过去一段时间内的访问存在命中,则可以认为该目标数据块不是长复用块,有机会在缓存中被命中,不应该被旁路。
可选地,所述系统级高速缓存中还包括命中历史表,所述命中历史表用于记录数据块过去连续N次访问的历史命中情况,N为正整数;
步骤S22所述根据所述历史命中情况对所述目标数据块进行旁路预测,得到预测结果,包括:
子步骤S221、查询所述命中历史表中是否存在与所述访存地址相匹配的表项;
子步骤S222、若所述命中历史表中不存在与所述访存地址相匹配的表项,则确定所述目标数据块需要被旁路;或者,
子步骤S223、若所述命中历史表中存在与所述访存地址相匹配的表项,且所述目标数据块过去连续N次均未命中,则确定所述目标数据块需要被旁路。
在本发明实施例中,根据局部性原理,只使用一个较小容量的命中历史表记录最近被处理器访问过的数据块在缓存中的命中历史。该命中历史表中记录了数据块在过去连续N次访问中的历史命中情况。示例性地,参照图3,示出了本发明实施例提供的一种命中历史表的结构示意图。如图3所示,命中历史表共有32K个组(set),4路组相联,每个表项对应地址连续的四个内存块,用于记录物理地址连续的四个块的过去的命中历史,使用这四个内存块对应的相同的地址高位作为地址标签(tag)进行索引,以减少用于索引的存储开销。
如果一个块没有对应的命中历史,则认为这个块不是最近访问的块,符合长复用块的特征,因此需要旁路这个块。
可以理解的是,一个块没有对应的命中历史,包括在命中历史表中不存在与访存地址相匹配的表项,和命中历史表中存在与访存地址相匹配的表项,但该目标数据块在过去连续N次访问中均未命中,因此,对于这两种情况,都可以认为该目标数据块需要被旁路。
可选地,所述方法还包括:
若所述命中历史表中存在与所述访存地址相匹配的表项,且所述目标数据块在过去连续N次访问中至少命中一次,则确定所述目标数据块不需要被旁路。
如果命中历史表中存在与该访存地址相匹配的表项,且该目标数据块在过去连续N次访问中至少命中一次,就可以确定该目标数据块在系统级高速缓存中有机会被命中,不应该被旁路。
需要说明的是,在本发明实施例中,目标数据块在基础高速缓存中命中,或者在流式缓冲区中命中,都可以认为是命中。
作为一种示例,假设N=2,命中历史表中某个表项中某个数据块的历史命中记录为“命中历史1 = 1,命中历史2 = 0”,则表示这个块上次被访问时在缓存中命中,在上上次被访问时没有在缓存中命中,如果接收到的访存请求中携带的访存地址,与该数据块的地址相同,则可以认为该数据块在接下来的访问中有机会在缓存中命中,不应该被旁路。该数据块在上次被访问时在缓存中命中,可能是在基础高速缓存中命中,也可能是在流式缓冲区中命中,在本发明实施例中,无论数据块是在系统级高速缓存的哪个部分命中,都属于在缓存中命中。
如果命中历史表中某个表项中某个数据块的历史命中记录为“命中历史1 = 0,命中历史2 = 0”,则表示这个块上次被访问时没有在缓存中命中,在上上次被访问时也没有在缓存中命中,如果接收到的访存请求中携带的访存地址,与该数据块的地址相同,则可以认为该数据块在接下来的访问中不会在缓存中命中,应该被旁路。
可选地,所述方法还包括:
步骤S31、若所述命中历史表中不存在与所述访存地址相匹配的表项,则确定所述命中历史表中的目标表项;所述目标表项对应的数据块的命中次数小于其他表项对应的数据块;
步骤S32、清除所述目标表项的表项内容,并将所述目标数据块的命中情况填入所述目标表项中。
如果命中历史表中不存在于与访存地址相匹配的表项,也即之前未在命中历史表中记录该访存地址对应的数据块的历史命中情况,那么可以在命中历史表中添加该访存地址对应的数据块的命中记录。具体地,确定出命中历史表中命中次数小于其他数据块的命中次数的目标表项,清除该目标表项的表项内容,并将访存地址对应的目标数据块的命中情况填入该目标表项中。
可以理解的是,在图3所示的命中历史表中,可以在命中历史表的相同组中替换一项,替换方法为“替换相同组中‘1’的数量最少的表项”,重置该项所有记录为0,然后再根据目标数据块在本次访问中的命中情况,重新填写该表项中的记录,如果本次访问在缓存中命中,就将“命中历史1 ”更新为“1”,如果本次访问在缓存中未命中,就保持“命中历史1=0”。
在本发明的一种可选实施例中,所述系统级高速缓存中还包括旁路历史表,所述旁路历史表用于记录所述系统级高速缓存中在历史周期内被旁路的数据块的地址标签;所述方法还包括:
步骤S41、若所述系统级高速缓存中存在与所述访存地址相匹配的数据块,和/或,所述旁路历史表中存在与所述访存地址相匹配的表项,则确定所述访存请求命中缓存;
步骤S42、若所述系统级高速缓存中不存在与所述访存地址相匹配的数据块,且所述旁路历史表中不存在与所述访存地址相匹配的表项,则确定所述访存请求未命中缓存;
步骤S43、根据所述访存地址更新所述命中历史表中对应的表项。
可以理解的是,流式缓冲区中只能暂时存储一些被旁路的块,被旁路的块在流式缓冲区中被替换出去之后,就无法在系统级高速缓存中产生命中,因而在命中历史表中无法记录到这些块的命中,导致这些数据块一直被旁路而无法进入缓存。为了解决这个问题,本发明实施例采用旁路历史表记录缓存中历史周期内被旁路的数据块的地址标签,其中,历史周期可以根据实际需求进行设置,例如,历史周期为当前时刻之前的M个时钟周期,M为正整数。通过旁路历史表,就可以确定最近被旁路的块。
旁路历史表的set数量和系统级高速缓存的set数量相同且一一对应,旁路历史表的相联度也和系统级高速缓存的相联度相同。其中,缓存中的组(set)指的是若干缓存行(cache line)的集合,路(entry)指的是每个组中包含的缓存行的行数,也称为相联度。旁路历史表记录每个set中最近被旁路的块的地址标签,使用先进先出替换方法,被旁路块的地址标签插入到队列尾部,踢出队头的块。
系统级高速缓存每接收到一个访存请求,都需要更新命中历史表。具体地,在系统级高速缓存和旁路历史表中查看是否存在与本次访存请求的访存地址相匹配的数据块,如果在系统级高速缓存,和/或旁路历史表中找到与该访存地址相匹配的数据块,则确定该访存请求命中缓存,可以将命中历史表中记录的该数据块的最近一次访问的命中情况更新为“命中”,例如,在图3所示的命中历史表中,将地址标签与该访存地址相匹配的数据块的“命中历史1”更新为“1”。
如果在系统级高速缓存,和旁路历史表中均未找到与该访存地址相匹配的数据块,则确定该访存请求未命中缓存,可以将命中历史表中记录的该数据块的最近一次访问的命中情况更新为“未命中”,例如,在图3所示的命中历史表中,将地址标签与该访存地址相匹配的数据块的“命中历史1”更新为“0”。
在本发明的一种可选实施例中,所述旁路预测条件包括所述访存请求满足预取条件;步骤102所述在所述访存请求满足旁路预测条件的情况下,对所述访存地址对应的目标数据块进行旁路预测,得到预测结果,包括:
在所述访存请求满足预取条件的情况下,对预取的各个目标数据块分别进行旁路预测,得到每个数据块的预测结果;所述目标数据块包括所述预设内存区域中与所述访存地址相匹配的数据块,以及所述预设内存区域中的其他数据块。
其中,预取是指通过学习处理器的访存模式,预测将要访问的块,如果将要访问的块不在缓存中,则提前从内存中预取到缓存中。预取能够有效增加缓存命中率,降低访存延迟。
本发明实施例在进行旁路预测时,同等对待预取块(prefetch block)和真实访存块(demand block)。如果访存请求满足预取条件,将预设内存区域中的目标数据块预取到系统级高速缓存之后,对预取的各个目标数据块也进行旁路预测,如果预测结果指示预取的目标数据块(以下简称“预取块”)需要被旁路,则将该预取块写入流式缓冲区;如果预测结果指示预取块不需要被旁路,则将该预取块写入基础高速缓存。
在本发明实施例中,即使旁路了一个预取块,该预取块也会进入流式缓冲区,而不会被丢弃。存储在流式缓冲区中的预取块仍然有被使用的机会,从而实现了预取和旁路的协调工作。
此外,在进行预取时,还可以进一步检查要预取的块是否已存在于基础高速缓存中,如果已经存在于基础高速缓存中,则不会再次发出预取请求,而是通知基础高速缓存的替换策略提升这个块在LRU(Least Recently Used,最近最少使用)栈中的位置以达到保护的效果。如果在基础高速缓存和流式缓冲区中命中预取块(对预取块的第一次使用),则可以通知替换策略不更新其在LRU栈的位置。其中,LRU栈用于保存当前正在使用的各个内存页的页面号。当一个新的进程访问某页面时,便将该页面号压入栈顶,其他的页面号往栈底移,如果栈已满,则将栈底的页面号移除,这样,栈顶始终是最新被访问的页面的页面号,而栈底则是最近最久未访问的页面的页面号。
在本发明的一种可选实施例中,所述旁路预测条件包括所述访存请求满足预取条件;所述在所述访存请求满足旁路预测条件的情况下,对所述访存地址对应的目标数据块进行旁路预测,得到预测结果,包括:
步骤S51、在所述访存地址属于预设内存区域的情况下,确定所述访存请求满足预取条件;
步骤S52、根据所述预设内存区域的第一历史访存信息确定所述预设内存区域的第一访存位图;所述第一访存位图用于记录所述预设内存区域中各个数据块在历史周期内的被访问情况;
步骤S53、在所述第一访存位图满足第一条件的情况下,根据所述第一访存位图确定所述预设内存区域中待预取的目标数据块;
步骤S54、对所述目标数据块进行旁路预测,得到预测结果。
其中,所述第一条件包括以下至少一项:
所述第一访存位图中包含的第一标志位的数目大于或等于第一预设值;所述第一标志位用于指示数据块在历史周期内被访问;
所述第一访存位图的可信度分值大于或等于第二预设值。
在本发明实施例中,可以基于预设内存区域的第一历史访存信息确定该预设内存区域的第一访存位图,然后基于第一访存位图确定待预取的目标数据块。
其中,预设内存区域可以是预先确定的任一内存区域,例如,预设内存区域可以是一个内存页。第一访存位图用于记录预设内存区域中各个数据块在历史周期内的被访问情况。
由于上层多级缓存的过滤作用,想要从到达系统级高速缓存的访存请求发现某种跨步规律非常困难,因此现有的许多基于跨步规律的预取器(stride-based prefetcher,包括BOP、SPP、VLDP等)都无法很好地发挥作用。到达系统级高速缓存的访存请求中存在一种较强的“区域型”特征,即一个内存区域中的特定几个数据块在短时间内会被重复访问。基于此,本发明实施例提供了一种复合型区域型预取器,可以将预设内存区域中的多个数据块同时预取到系统级高速缓存中。
具体地,该区域型预取器可以包括页内预取器和页间预取器。两个预取器的启动顺序为先启动页内预取器,当页内预取器由于缺少历史访存信息或学习到的访存特征不明显而没有发出预取时,启动页间预取器进行预取。示例性地,页内预取器可以学习内存页A上的访存特征,然后使用该特征为内存页A生成预取请求;页间预取器学习内存页B、页C、页D等的访存特征(内存页B、C、D在物理地址上与内存页A相邻),然后用于为内存页A生成预取请求。
如果到达系统级高速缓存的访存请求中携带的访存地址属于预设内存区域,系统级高速缓存中的页内预取器就开始工作:根据该预设内存区域的第一历史访存信息确定第一访存位图,并进一步判断该第一访存位图是否满足第一条件。
在本发明实施例中,如果第一访存位图中包含的第一标志位的数目大于或等于第一预设值,说明该预设内存区域中的多个数据块在历史周期内被访问,一个内存区域中被访问的块越多,该内存区域对应的访存位图越准确,则根据这个访存位图发出的预取的准确度越高。因此,为了提高预取准确度,可以在第一访存位图中包含第一标志位的数目大于或等于第一预设值的情况下,才认为访存请求满足第一条件,进而发出预取。
同样地,访存位图的可信度分值越大,说明该访存位图越准确,根据这个访存位图发出的预取的准确度就越高。因此,可以在预设内存区域的第一访存位图的可信度分值大于或等于第二预设值的情况下,才认为访存请求满足预取条件,进而发出预取。
可以理解的是,第一预设值、第二预设值均可以根据实际需求进行设置,本发明实施例对此不做具体限定。例如,在预设内存区域为一个内存页的情况下,假设该内存页中有4个内存块,则第一预设值可以为3或4。第二预设值可以为80%、90%,等等。
本发明实施例中的目标数据块,可以是该预设内存区域中的所有数据块,也可以是第一访存位图中标志位为第一标志位的数据块。可选地,所述在所述第一访存位图满足第一条件的情况下,根据所述第一访存位图确定所述预设内存区域中待预取的目标数据块,包括:在所述第一访存位图满足第一条件的情况下,将所述第一访存位图中标志位为第一标志位的数据块确定为目标数据块。
最后,对预取的各个目标数据块分别进行旁路预测,将需要被旁路的目标数据块插入到流式缓冲区,将不需要被旁路的目标数据块插入到基础高速缓存。
作为一种示例,所述对所述目标数据块进行旁路预测,得到预测结果,包括:
步骤S61、根据所述预设内存区域的起始地址和所述目标数据块的地址偏移,确定每个目标数据块的内存地址;所述地址偏移用于指示所述目标数据块的内存地址相对于所述预设内存区域的起始地址的偏移值;
步骤S62、根据所述目标数据块的内存地址,对所述目标数据块进行旁路预测,得到预测结果。
对预取的各个目标数据块进行旁路预测时,可以根据预设内存区域的起始地址和目标数据块的地址偏移,确定每个目标数据块的内存地址。例如,假设预设内存区域为一个内存页,该内存页的页号为PN,内存页中一个块的大小是64 Byte,第一访存位图中标志位为第一标志位的是0、1、4,则预取的目标数据块的内存地址分别为PN、PN+64、PN+4×64。
接下来,根据目标数据块的内存地址对目标数据块进行旁路预测。示例性地,如果命中历史表中不存在与该目标数据块的内存地址相匹配的表项,则可以认为该目标数据块需要被旁路;或者,如果命中历史表中存在与该目标数据块的内存地址相匹配的表项,但该目标数据块在过去连续N次均未命中,则可以认为该目标数据块需要被旁路。如果命中历史表中存在与该目标数据块的内存地址相匹配的表项,且该目标数据块在过去连续N次访问至少命中一次,则可以认为该目标数据块不应该被旁路。
在本发明实施例中,利用访存位图可以精准的定位每一个预取块,提高了预取精度。
可选地,所述系统级高速缓存中还包括累积表和模式表;其中,所述累积表用于记录第一历史周期内预设内存区域中各个数据块的被访问情况;所述模式表用于记录第二历史周期内所述预设内存区域中各个数据块的被访问情况,所述第二历史周期大于所述第一历史周期。
步骤S51所述根据所述预设内存区域的第一历史访存信息确定所述预设内存区域的第一访存位图,包括:
子步骤S511、查询所述累积表中是否存在与所述访存地址相匹配的第一表项;
子步骤S512、在所述累计表中存在与所述访存地址相匹配的第一表项的情况下,将所述第一表项中所述访存地址对应的目标数据块的标志位更新为第一标志位,并根据所述访存请求的访问时间更新所述第一表项的时间戳;
子步骤S513、根据各个表项对应的时间戳,确定所述累积表中的第二表项,所述第二表项的时间戳大于所述累积表中的其他表项的时间戳;
子步骤S514、将所述第二表项的表项内容添加至所述模式表中,并在所述累积表中清除所述第二表项的表项内容;
子步骤S515、根据所述累积表和所述模式表,确定所述预设内存区域的第一访存位图。
系统级高速缓存中的页内预取器可以包含累积表(Accumulation Table,AT)、模式表(Pattern Table,PT)和筛选表(Filter Table,FT)这三个部分。其中,AGT用于第一历史周期内预设内存区域中各个数据块的被访问情况,PT用于记录第二历史周期内所述预设内存区域中各个数据块的被访问情况,所述第二历史周期大于所述第一历史周期。在本发明实施例中,AT用于观察对某一页的访存位图(Pattern),这是为了完成Pattern的构造和学习,从这个意义上说,AT是PT的源头,更准确地说,AT反映的是最近较短时间内的访存信息,而PT反映的是综合了过去较长一段时间内的稳定的访存信息。筛选表用于记录数据块的访存信息,进而根据记录的访存信息筛选出需要填入累积表中的数据。
以预设内存区域为一个内存页为例,参照图4,示出了本发明实施例提供的一种页内预取器的结构示意图。如图4所示,累积表中每个预设内存区域对应一行表项,记录了内存页的页号(PN)、访存位图(Pattern),以及该内存页的上次访问时间(Last AccessTime)。模式表中记录了内存页的页号(PN)和访存位图(Pattern)。筛选表中记录的内存页的页号(PN)、内存页中各个块的地址偏移(offsets)、上次访问时间(Last Access Time)和位置(Position),其中,地址偏移是指内存块相对于该内存页的起始地址的偏移值,位置指的的上次访问的内存块在内存页中的位置。
在本发明实施例中,当一个访存请求到达系统级高速缓存时,页内预取器可以先根据该访存请求中携带的访存地址,在累积表中查询是否存在与该访存地址相匹配的第一表项。如果在累积表中找到与访存地址相匹配的第一表项,则更新该第一表项,也即把第一表项中该访存地址对应的目标数据块的标志位更新为第一标志位,并根据访问时间更新第一表项的时间戳。示例性地,可以将图4所示的累积表中第一表项的访存位图中该目标数据块对应的标志位更新为“1”,将第一表项的上次访问时间更新该访存请求对应的访问时间,如系统级高速缓存接收到该访存请求的时间。
接下来,根据各个表项对应的时间戳,例如图4所示的累积表中记录的上次访问时间,确定累积表中时间戳大于其他表项的第二表项,第二表项为累积表中最久未访问的表项。
将第二表项的表项内容添加到模式表中,并在累积表中清除该第二表项的表项内容。如图4所示,将第二表项中记录的页号(PN)和访存位图(Pattern)添加到模式表中。
最后,根据累积表和模式表,就可以确定预设内存区域的第一访存位图。作为一种示例,如果模式表中不存在预设内存区域对应的表项,也即该预设内存区域对应的访问情况还没有从累积表中被替换到模式表中,在这种情况下,可以基于累积表中记录的访问情况,如访存位图(Pattern),确定该预设内存区域的第一访存位图。如果模式表中存在预设内存区域对应的表项,则可以直接根据模式表中记录的访问情况,如访存位图(Pattern),确定该预设内存区域的第一访存位图。
可以理解的是,一般观念上,预取只能用于提高命中率降低延迟,而无法用于优化功耗。但本发明实施例提供的区域型预取器具有降低功耗的潜能,这主要得益于区域型预取器的“聚合效果”。聚合效果指区域型预取器把对一个连续内存区域的多次分散访问聚合到一起,在短时间内一次性全部发送给内存。由于一个连续内存区域往往映射到同一内存库(bank)的同一行上,因此聚合效果有助于提高了内存库的行命中率,从而减少行激活次数。再者,内存控制器在一段时间没有接收到访存请求后,会进入低功耗状态。聚合效果让时间上分散的多个请求在集中的一小段时间内被处理,让内存控制器有更多机会进入低功耗模式。
可选地,所述系统级高速缓存中还包括筛选表;所述方法还包括:
步骤S71、在所述累积表中不存在与所述访存地址相匹配的第一表项的情况下,在所述筛选表中记录所述访存地址的访问信息;
步骤S72、若所述筛选表中存在至少一个第三表项,且所述第三表项已经记录了M次访问,则将所述第三表项的表项内容添加至所述累积表,并在所述筛选表中清除所述第三表项的表项内容;M为正整数。
在本发明实施例中,如果累积表中不存在与访存地址相匹配的第一表项,则可以在筛选表中记录该访存地址的访问信息,例如该访存地址所属的内存页的页号、该访存地址对应的内存块的地址偏移、访问时间、访问的内存块在内存页中的位置,等等。
如果筛选表中存在已经记录了M次访问的第三表项,例如,第三表项记录的内存页中已经有M个内存块被访问,和/或,第三表项记录了M个被访问的内存块的地址偏移,此时可以将第三表项的表项内容添加到累积表中,并在筛选表中清除该表项内容。作为一种示例,可以将筛选表中第三表项的表项内容转换为“地址标签,访存位图”的形式添加到累积表中。如图4所示,可以将第三表项中记录的页号(PN)和上次访问时间直接添加到累积表中,并根据地址偏移确定被访问的数据块是哪几个,并在累积表生成对应的访存位图(Pattern),被访问的数据块的标志位为第一标志位。
在本发明的一种可选实施例中,所述访存位图包括所述累积表中所述预设内存区域的第一位图,和所述模式表中所述预设内存区域的第二位图;所述方法还包括:
步骤S81、确定在所述第一位图和所述第二位图中的标志位均为所述第一标志位的数据块的第一数量;
步骤S82、确定所述第二位图中标志位为所述第一标志位的数据块的第二数量,以及所述第一位图中标志位为所述第一标志位的数据块的第三数量;
步骤S83、根据预设权重参数、所述第一数量、所述第二数量和所述第三数量,计算所述访存位图的可信度分值。
可以理解的是,在图4所示的累积表和模式表中,每一个表项均记录有预设内存区域的访存位图(Pattern),访存位图用于反映预设内存区域中每个数据块在历史周期内的被访问情况,在本发明实施例中,可以将累积表和模式表中记录的访存位图作为该预设内存区域的访存位图。
在累积表和模式表中均包含某个预设内存区域对应的表项时,可以根据累积表中记录的第一位图,和模式表中记录的第二位图,计算该预设内存区域的第一访存位图的可信度。
具体地,假设该预设内存区域中,同时出现在AT和PT中,且标志位均为第一标志位的数据块的第一数量为X;出现在PT中,且标志位为第一标志位的数据块的第二数量为Y;出现在AT中,且标志位为第一标志位的数据块的第三数量为Z,则该预设内存区域的第一访存位图的可信度分值可以表示为:
(1)
其中,,/>。a和b均为预设权重参数。
当可信度分值大于或等于第二预设值时,可以认为满足预取条件,根据PT中的访存位图,也即第二位图,计算预取的各个目标数据块的内存地址。
在本发明的一种可选实施例中,在对所述目标数据块进行旁路预测,得到预测结果之前,所述方法还包括:
步骤S91、在所述第一访存位图不满足所述第一条件的情况下,获取预设内存范围内各个内存区域的第二历史访存信息;所述预设内存范围包含所述预设内存区域,以及与所述预设内存区域相邻的其他内存区域;
步骤S92、根据所述第二历史访存信息确定第二访存位图;所述第二访存位图用于反映所述预设内存区域在所述预设内存范围内的各个参照数据块在历史周期内的被访问情况;
步骤S93、将所述第二访存位图中标志位为第一标志位的数据块确定为第一数据块;
步骤S94、将所述预设内存区域内与所述第一数据块具有相同地址偏移的数据块确定为待预取的目标数据块。
在本发明实施例中,如果预设内存区域的第一访存位图不满足第一条件,则说明预设内存区域缺少历史访存信息,或者第一访存位图中的访存特征不明显,在这种情况下,页内预取器无法基于第一访存位图发出预取,此时可以启动页间预取器进行预取。页间预取器的基本思想:对于在地址上相邻的内存区域,例如内存页,它们的空间访存规律是相似的,也就是说,可以参照相邻页上哪些块被访问过,然后预取本页上相同偏移的块。
具体地,在第一访存位图不满足第一条件的情况下,页间预取器获取预设内存范围内的各个内存区域的第二历史访存信息,也即预设内存区域的第一历史访存信息,以及与该预设内存区域相邻的各个内存区域的历史访存信息。
然后,根据第二历史访存信息确定第二访存位图,第二访存位图用于反映所述预设内存区域在所述预设内存范围内的各个参照数据块在历史周期内的被访问情况。示例性地,第二访存位图可以包括与预设内存区域相邻的各个内存区域的访存位图,在第二访存位图中,历史周期内被访问的数据块的标志位为第一标志位。或者,可以根据预设内存范围内各个内存区域的访存位图,确定这些访存位图中同一个地址偏移对应的第一标志位最多的子位图,然后将每个地址偏移对应的子位图进行组合,得到第二访存位图。
接下来,将第二访存位图中标志位为第一标志位的数据块确定为第一数据块,也即参照数据块。然后,将预设内存区域内与第一数据块具有相同地址偏移的数据块确定为待预取的目标数据块。例如,假设预设内存区域为内存页A,内存页A的相邻页为内存页B,在第二访存位图中存在一个第一数据块b1,该数据块为内存页B中的第一个数据块,其地址偏移为0,那么,可以将内存页A中的第一个数据块a1确定为目标数据块,数据块a1的地址偏移为0。需要说明的是,本发明中的地址偏移,指的是数据块的内存地址相对于所属内存区域的起始地址的偏移值。
可选地,所述所述第二历史访存信息包括历史页表,所述历史页表用于记录所述预设内存范围内的各个内存区域的页号和访存位图,所述访存位图用于记录所述内存区域中各个数据块在历史周期内的被访问情况。步骤S92所述根据所述第二历史访存信息确定第二访存位图,包括:
子步骤S921、根据所述预设内存区域的第一页号在所述历史页表中查询是否存在与所述第一页号相匹配的第一表项;
子步骤S922、在所述历史页表中存在与所述第一页号相匹配的第一表项的情况下,将所述第一表项的访存位图中与所述访存地址相匹配的数据块的标志位设置为所述第一标志位;
子步骤S923、根据所述第一页号在所述历史页表中确定与所述预设内存区域相邻的N个第一内存区域;
子步骤S924、将据所述预设内存区域的访存位图分别与所述N个第一内存区域的访存位图按位进行逻辑与运算,得到N个第三位图;
子步骤S925、将所述N个第三位图中包含的第一标志位的数目最多的位图确定为第二访存位图。
页间预取器的主要结构是历史页表(Recent Page Table,RPT),用于记录预设内存范围内的各个内存区域的页号和访存位图,例如最近访问的一组内存页上的访存特征,其中每个表项可以对应一个内存页,记录内存页的页号和访存位图。当一个访存请求的访存地址属于预设内存区域,但是预设内存区域的第一访存位图包含的访存特征不支持页内预取器发出预取的情况下,页间预取器可以在RPT表中查询与预设内存区域相邻的N个内存区域的表项,并对预设内存区域的第访存位图和相邻区域的访存位图进行逻辑与运算,得到N个第三位图,将N个第三位图中包含的第一标志位的数目最多的位图确定为第二访存位图,进而根据第二访存位图中标志位为第一标志位的第一数据块确定预设内存区域中待预取的目标数据块。
以内存区域为一个内存页为例,页间预取器的操作流程如下:
第一步:一个访存请求到达cache时,先交给页内预取器处理,如果无法生成预取,再交给页间预取器处理。页间预取器使用当前访存请求所属内存页的页号PN到RPT表中查找,如果找到则执行第二步;如果未找到,则随机替换RPT表中的一个表项,然后记录PN到页号(page number)域,访存位图(pattern)域全部置为0,然后执行第二步。
第二步:根据当前访问的块地址,也即访存请求中携带的访存地址,对pattern中的相应位置1。
第三步:在RPT表中查找与当前访问页(也即访存地址所属的内存页)在地址上相邻页的表项。示例性地,可以比较表项中页号的差值,把差值小于一定范围的视为相邻页。
第四步:把当前访问页的pattern和找到的所有N个相邻页pattern分别进行按位“与”操作得到N个新的位图。在这N个位图中找出其中“1”的数量最多的表项,并将该位图确定为将要参照的第二访存位图ref_pattern。
第五步:将第二访存位图ref_pattern中标志位为“1”的数据块确定为第一数据块,将当前访问页中地址偏移与第一数据块的地址偏移相同的数据块确定为待预取的目标数据块。对目标数据块进行旁路预测,将需要被旁路的目标数据块写入流式缓冲区,将不需要被旁路的目标数据块写入基础高速缓存。
综上,本发明实施例提供了一种数据缓存方法,在接收到的访存请求满足旁路预测条件的情况下,对访存地址对应的目标数据块进行旁路预测,并将需要被旁路的目标数据块写入流式缓冲区,从而让被旁路的数据块在流式缓冲区中缓存一小段时间,即使数据块被错误旁路,也会存在于流式缓冲区中,有被命中的机会,从而消除了错误旁路带来的影响;将不需要被旁路的目标数据块写入基础高速缓存中,从而避免了不会被命中的数据块与其他可能被命中的数据块对缓存的争用,有利于提升缓存命中率,从而减少访问内存次数,降低内存系统的延迟和功耗。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
装置实施例
参照图5,示出了本发明的一种数据缓存装置的结构框图,所述装置具体可以包括:
请求接收模块501,用于接收处理器发送的访存请求,所述访存请求中携带访存地址;
旁路预测模块502,用于在所述访存请求满足旁路预测条件的情况下,对所述访存地址对应的目标数据块进行旁路预测,得到预测结果;
第一写入模块503,用于在所述预测结果指示所述访存地址对应的目标数据块需要被旁路的情况下,将所述目标数据块写入所述流式缓冲区;
第二写入模块504,用于在所述预测结果指示所述访存地址对应的目标数据块不需要被旁路的情况下,将所述目标数据块写入所述基础高速缓存;
其中,所述旁路预测条件包括以下任一项:
所述访存请求为写请求;
所述访存请求为读请求,且所述系统级高速缓存中不存在与所述访存地址相匹配的数据块;
所述访存请求满足预取条件;所述预取条件用于指示将内存中的数据块提前预取至所述系统级高速缓存中需要满足的条件。
可选地,所述旁路预测模块,包括:
第一确定子模块,用于在所述访存请求满足旁路预测条件的情况下,确定所述访存地址对应的目标数据块的历史命中情况;
第一预测子模块,用于根据所述历史命中情况对所述目标数据块进行旁路预测,得到预测结果。
可选地,所述系统级高速缓存中还包括命中历史表,所述命中历史表用于记录数据块过去连续N次访问的历史命中情况,N为正整数;
所述第一预测子模块,包括:
第一查询单元,用于查询所述命中历史表中是否存在与所述访存地址相匹配的表项;
第一确定单元,用于若所述命中历史表中不存在与所述访存地址相匹配的表项,则确定所述目标数据块需要被旁路;或者,
第二确定单元,用于若所述命中历史表中存在与所述访存地址相匹配的表项,且所述目标数据块过去连续N次均未命中,则确定所述目标数据块需要被旁路。
可选地,所述第一预测子模块还包括:
第三确定单元,用于若所述命中历史表中存在与所述访存地址相匹配的表项,且所述目标数据块在过去连续N次访问中至少命中一次,则确定所述目标数据块不需要被旁路。
可选地,所述装置还包括:
第一确定模块,用于若所述命中历史表中不存在与所述访存地址相匹配的表项,则确定所述命中历史表中的目标表项;所述目标表项对应的数据块的命中次数小于其他表项对应的数据块;
第一更新模块,用于清除所述目标表项的表项内容,并将所述目标数据块的命中情况填入所述目标表项中。
可选地,所述系统级高速缓存中还包括旁路历史表,所述旁路历史表用于记录所述系统级高速缓存中在历史周期内被旁路的数据块的地址标签;所述装置还包括:
第二确定模块,用于若所述系统级高速缓存中存在与所述访存地址相匹配的数据块,和/或,所述旁路历史表中存在与所述访存地址相匹配的表项,则确定所述访存请求命中缓存;
第三确定模块,用于若所述系统级高速缓存中不存在与所述访存地址相匹配的数据块,且所述旁路历史表中不存在与所述访存地址相匹配的表项,则确定所述访存请求未命中缓存;
第二更新模块,用于根据所述访存地址更新所述命中历史表中对应的表项。
可选地,所述旁路预测条件包括所述访存请求满足预取条件;所述旁路预测模块,包括:
第二确定子模块,用于在所述访存地址属于预设内存区域的情况下,确定所述访存请求满足预取条件;
第三确定子模块,用于根据所述预设内存区域的第一历史访存信息确定所述预设内存区域的第一访存位图;所述第一访存位图用于记录所述预设内存区域中各个数据块在历史周期内的被访问情况;
第四确定子模块,用于在所述第一访存位图满足第一条件的情况下,根据所述第一访存位图确定所述预设内存区域中待预取的目标数据块;
第二预测子模块,用于对所述目标数据块进行旁路预测,得到预测结果;
其中,所述第一条件包括以下至少一项:
所述第一访存位图中包含的第一标志位的数目大于或等于第一预设值;所述第一标志位用于指示数据块在历史周期内被访问;
所述第一访存位图的可信度分值大于或等于第二预设值。
可选地,所述系统级高速缓存中还包括累积表和模式表;其中,所述累积表用于记录第一历史周期内预设内存区域中各个数据块的被访问情况;所述模式表用于记录第二历史周期内所述预设内存区域中各个数据块的被访问情况,所述第二历史周期大于所述第一历史周期;
所述第三确定子模块,包括:
第二查询单元,用于查询所述累积表中是否存在与所述访存地址相匹配的第一表项;
第一更新单元,用于在所述累计表中存在与所述访存地址相匹配的第一表项的情况下,将所述第一表项中所述访存地址对应的目标数据块的标志位更新为第一标志位,并根据所述访存请求的访问时间更新所述第一表项的时间戳;
第四确定单元,用于根据各个表项对应的时间戳,确定所述累积表中的第二表项,所述第二表项的时间戳大于所述累积表中的其他表项的时间戳;
第二更更新单元,用于将所述第二表项的表项内容添加至所述模式表中,并在所述累积表中清除所述第二表项的表项内容;
第五确定单元,用于根据所述累积表和所述模式表,确定所述预设内存区域的第一访存位图。
可选地,所述系统级高速缓存中还包括筛选表;所述装置还包括:
信息记录模块,用于在所述累积表中不存在与所述访存地址相匹配的第一表项的情况下,在所述筛选表中记录所述访存地址的访问信息;
信息筛选模块,用于若所述筛选表中存在至少一个第三表项,且所述第三表项已经记录了M次访问,则将所述第三表项的表项内容添加至所述累积表,并在所述筛选表中清除所述第三表项的表项内容;M为正整数。
可选地,所述第一访存位图包括所述累积表中所述预设内存区域的第一位图,和所述模式表中所述预设内存区域的第二位图;所述装置还包括:
第四确定模块,用于确定在所述第一位图和所述第二位图中的标志位均为所述第一标志位的数据块的第一数量;
第五确定模块,用于确定所述第二位图中标志位为所述第一标志位的数据块的第二数量,以及所述第一位图中标志位为所述第一标志位的数据块的第三数量;
计算模块,用于根据预设权重参数、所述第一数量、所述第二数量和所述第三数量,计算所述第一访存位图的可信度分值。
可选地,所述第四确定子模块,包括:
目标数据块确定单元,用于在所述第一访存位图满足第一条件的情况下,将所述第一访存位图中标志位为第一标志位的数据块确定为目标数据块。
可选地,所述装置还包括:
访存信息获取模块,用于在所述第一访存位图不满足所述第一条件的情况下,获取预设内存范围内各个内存区域的第二历史访存信息;所述预设内存范围包含所述预设内存区域,以及与所述预设内存区域相邻的其他内存区域;
访存位图确定模块,用于根据所述第二历史访存信息确定第二访存位图;所述第二访存位图用于反映所述预设内存区域在所述预设内存范围内的各个参照数据块在历史周期内的被访问情况;
第一数据块确定模块,用于将所述第二访存位图中标志位为第一标志位的数据块确定为第一数据块;
目标数据块确定模块,用于将所述预设内存区域内与所述第一数据块具有相同地址偏移的数据块确定为待预取的目标数据块。
可选地,所述第二历史访存信息包括历史页表,所述历史页表用于记录所述预设内存范围内的各个内存区域的页号和访存位图,所述访存位图用于记录所述内存区域中各个数据块在历史周期内的被访问情况;
所述访存位图确定模块,包括:
页表查询子模块,用于根据所述预设内存区域的第一页号在所述历史页表中查询是否存在与所述第一页号相匹配的第一表项;
设置子模块,用于在所述历史页表中存在与所述第一页号相匹配的第一表项的情况下,将所述第一表项的访存位图中与所述访存地址相匹配的数据块的标志位设置为所述第一标志位;
内存区域确定子模块,用于根据所述第一页号在所述历史页表中确定与所述预设内存区域相邻的N个第一内存区域;
位图运算子模块,用于将据所述预设内存区域的访存位图分别与所述N个第一内存区域的访存位图按位进行逻辑与运算,得到N个第三位图;
位图确定子模块,用于将所述N个第三位图中包含的第一标志位的数目最多的位图确定为第二访存位图。
可选地,所述第二预测子模块,包括:
内存地址确定单元,用于根据所述预设内存区域的起始地址和所述目标数据块的地址偏移,确定每个目标数据块的内存地址;所述地址偏移用于指示所述目标数据块的内存地址相对于所述预设内存区域的起始地址的偏移值;
旁路预测单元,用于根据所述目标数据块的内存地址,对所述目标数据块进行旁路预测,得到预测结果。
可选地,所述旁路预测条件包括:所述访存请求为读请求,且所述系统级高速缓存中不存在与所述访存地址相匹配的数据块;
所述旁路预测模块,包括:
数据获取子模块,用于在所述访存请求为读请求,且所述系统级高速缓存中不存在与所述访存地址相匹配的数据块的情况下,从内存中获取与所述访存地址相匹配的目标数据块;
第三预测子模块,用于对所述目标数据块进行旁路预测,得到预测结果。
综上,本发明实施例提供了一种数据缓存装置,在接收到的访存请求满足旁路预测条件的情况下,对访存地址对应的目标数据块进行旁路预测,并将需要被旁路的目标数据块写入流式缓冲区,从而让被旁路的数据块在流式缓冲区中缓存一小段时间,即使数据块被错误旁路,也会存在于流式缓冲区中,有被命中的机会,从而消除了错误旁路带来的影响;将不需要被旁路的目标数据块写入基础高速缓存中,从而避免了不会被命中的数据块与其他可能被命中的数据块对缓存的争用,有利于提升缓存命中率,从而减少访问内存次数,降低内存系统的延迟和功耗。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
关于上述实施例中的处理器,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
参照图6,是本发明实施例提供的一种电子设备的结构框图。如图6所示,所述电子设备包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;所述存储器用于存放可执行指令,所述可执行指令使所述处理器执行前述实施例的数据缓存方法。
所述处理器可以是CPU(Central Processing Unit,中央处理器)、通用处理器、DSP(Digital Signal Processor,数字信号处理器)、ASIC(Application SpecificIntegrated Circuit,专用集成电路)、FPGA(Field Programmble Gate Array,现场可编程门阵列)或者其他可编辑器件、晶体管逻辑器件、硬件部件或者其任意组合。所述处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等。
所述通信总线可包括一通路,在存储器和通信接口之间传送信息。通信总线可以是PCI(Peripheral Component Interconnect,外设部件互连标准)总线或EISA(ExtendedIndustry Standard Architecture,扩展工业标准结构)总线等。所述通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一条线表示,但并不表示仅有一根总线或一种类型的总线。
所述存储器可以是ROM(Read Only内存,只读内存)或可存储静态信息和指令的其他类型的静态存储设备、RAM(Random Access,随机存取存储器)或者可存储信息和指令的其他类型的动态存储设备,也可以是EEPROM(Electrically Erasable Programmable ReadOnly,电可擦可编程只读内存)、CD-ROM(Compact Disa Read Only,只读光盘)、磁带、软盘和光数据存储设备等。
本发明实施例还提供了一种非临时性计算机可读存储介质,当所述存储介质中的指令由电子设备(服务器或者终端)的处理器执行时,使得处理器能够执行图1所示的数据缓存方法。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以预测方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本发明所提供的一种数据缓存方法、装置、电子设备及可读存储介质,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (18)

1.一种数据缓存方法,其特征在于,应用于系统级高速缓存,所述系统级高速缓存包括流式缓冲区和基础高速缓存;所述方法包括:
接收处理器发送的访存请求,所述访存请求中携带访存地址;
在所述访存请求满足旁路预测条件的情况下,对所述访存地址对应的目标数据块进行旁路预测,得到预测结果;
在所述预测结果指示所述访存地址对应的目标数据块需要被旁路的情况下,将所述目标数据块写入所述流式缓冲区;
在所述预测结果指示所述访存地址对应的目标数据块不需要被旁路的情况下,将所述目标数据块写入所述基础高速缓存;
其中,所述旁路预测条件包括以下任一项:
所述访存请求为写请求;
所述访存请求为读请求,且所述系统级高速缓存中不存在与所述访存地址相匹配的数据块;
所述访存请求满足预取条件;所述预取条件用于指示将内存中的数据块提前预取至所述系统级高速缓存中需要满足的条件。
2.根据权利要求1所述的方法,其特征在于,所述在所述访存请求满足旁路预测条件的情况下,对所述访存地址对应的目标数据块进行旁路预测,得到预测结果,包括:
在所述访存请求满足旁路预测条件的情况下,确定所述访存地址对应的目标数据块的历史命中情况;
根据所述历史命中情况对所述目标数据块进行旁路预测,得到预测结果。
3.根据权利要求2所述的方法,其特征在于,所述系统级高速缓存中还包括命中历史表,所述命中历史表用于记录数据块过去连续N次访问的历史命中情况,N为正整数;
所述根据所述历史命中情况对所述目标数据块进行旁路预测,得到预测结果,包括:
查询所述命中历史表中是否存在与所述访存地址相匹配的表项;
若所述命中历史表中不存在与所述访存地址相匹配的表项,则确定所述目标数据块需要被旁路;或者,
若所述命中历史表中存在与所述访存地址相匹配的表项,且所述目标数据块过去连续N次均未命中,则确定所述目标数据块需要被旁路。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
若所述命中历史表中存在与所述访存地址相匹配的表项,且所述目标数据块在过去连续N次访问中至少命中一次,则确定所述目标数据块不需要被旁路。
5.根据权利要求3所述的方法,其特征在于,所述方法还包括:
若所述命中历史表中不存在与所述访存地址相匹配的表项,则确定所述命中历史表中的目标表项;所述目标表项对应的数据块的命中次数小于其他表项对应的数据块;
清除所述目标表项的表项内容,并将所述目标数据块的命中情况填入所述目标表项中。
6.根据权利要求3所述的方法,其特征在于,所述系统级高速缓存中还包括旁路历史表,所述旁路历史表用于记录所述系统级高速缓存中在历史周期内被旁路的数据块的地址标签;所述方法还包括:
若所述系统级高速缓存中存在与所述访存地址相匹配的数据块,和/或,所述旁路历史表中存在与所述访存地址相匹配的表项,则确定所述访存请求命中缓存;
若所述系统级高速缓存中不存在与所述访存地址相匹配的数据块,且所述旁路历史表中不存在与所述访存地址相匹配的表项,则确定所述访存请求未命中缓存;
根据所述访存地址更新所述命中历史表中对应的表项。
7.根据权利要求1所述的方法,其特征在于,所述旁路预测条件包括所述访存请求满足预取条件;所述在所述访存请求满足旁路预测条件的情况下,对所述访存地址对应的目标数据块进行旁路预测,得到预测结果,包括:
在所述访存地址属于预设内存区域的情况下,确定所述访存请求满足预取条件;
根据所述预设内存区域的第一历史访存信息确定所述预设内存区域的第一访存位图;所述第一访存位图用于记录所述预设内存区域中各个数据块在历史周期内的被访问情况;
在所述第一访存位图满足第一条件的情况下,根据所述第一访存位图确定所述预设内存区域中待预取的目标数据块;
对所述目标数据块进行旁路预测,得到预测结果;
其中,所述第一条件包括以下至少一项:
所述第一访存位图中包含的第一标志位的数目大于或等于第一预设值;所述第一标志位用于指示数据块在历史周期内被访问;
所述第一访存位图的可信度分值大于或等于第二预设值。
8.根据权利要求7所述的方法,其特征在于,所述系统级高速缓存中还包括累积表和模式表;其中,所述累积表用于记录第一历史周期内所述预设内存区域中各个数据块的被访问情况;所述模式表用于记录第二历史周期内所述预设内存区域中各个数据块的被访问情况,所述第二历史周期大于所述第一历史周期;
所述根据所述预设内存区域的第一历史访存信息确定所述预设内存区域的第一访存位图,包括:
查询所述累积表中是否存在与所述访存地址相匹配的第一表项;
在所述累计表中存在与所述访存地址相匹配的第一表项的情况下,将所述第一表项中所述访存地址对应的目标数据块的标志位更新为第一标志位,并根据所述访存请求的访问时间更新所述第一表项的时间戳;
根据各个表项对应的时间戳,确定所述累积表中的第二表项,所述第二表项的时间戳大于所述累积表中的其他表项的时间戳;
将所述第二表项的表项内容添加至所述模式表中,并在所述累积表中清除所述第二表项的表项内容;
根据所述累积表和所述模式表,确定所述预设内存区域的第一访存位图。
9.根据权利要求8所述的方法,其特征在于,所述系统级高速缓存中还包括筛选表;所述方法还包括:
在所述累积表中不存在与所述访存地址相匹配的第一表项的情况下,在所述筛选表中记录所述访存地址的访问信息;
若所述筛选表中存在至少一个第三表项,且所述第三表项已经记录了M次访问,则将所述第三表项的表项内容添加至所述累积表,并在所述筛选表中清除所述第三表项的表项内容;M为正整数。
10.根据权利要求8所述的方法,其特征在于,所述第一访存位图包括所述累积表中所述预设内存区域的第一位图,和所述模式表中所述预设内存区域的第二位图;所述方法还包括:
确定在所述第一位图和所述第二位图中的标志位均为所述第一标志位的数据块的第一数量;
确定所述第二位图中标志位为所述第一标志位的数据块的第二数量,以及所述第一位图中标志位为所述第一标志位的数据块的第三数量;
根据预设权重参数、所述第一数量、所述第二数量和所述第三数量,计算所述第一访存位图的可信度分值。
11.根据权利要求7所述的方法,其特征在于,所述在所述第一访存位图满足第一条件的情况下,根据所述第一访存位图确定所述预设内存区域中待预取的目标数据块,包括:
在所述第一访存位图满足第一条件的情况下,将所述第一访存位图中标志位为第一标志位的数据块确定为目标数据块。
12.根据权利要求7所述的方法,其特征在于,在对所述目标数据块进行旁路预测,得到预测结果之前,所述方法还包括:
在所述第一访存位图不满足所述第一条件的情况下,获取预设内存范围内各个内存区域的第二历史访存信息;所述预设内存范围包含所述预设内存区域,以及与所述预设内存区域相邻的其他内存区域;
根据所述第二历史访存信息确定第二访存位图;所述第二访存位图用于反映所述预设内存区域在所述预设内存范围内的各个参照数据块在历史周期内的被访问情况;
将所述第二访存位图中标志位为第一标志位的数据块确定为第一数据块;
将所述预设内存区域内与所述第一数据块具有相同地址偏移的数据块确定为待预取的目标数据块。
13.根据权利要求12所述的方法,其特征在于,所述第二历史访存信息包括历史页表,所述历史页表用于记录所述预设内存范围内的各个内存区域的页号和访存位图,所述访存位图用于记录所述内存区域中各个数据块在历史周期内的被访问情况;
所述根据所述第二历史访存信息确定第二访存位图,包括:
根据所述预设内存区域的第一页号在所述历史页表中查询是否存在与所述第一页号相匹配的第一表项;
在所述历史页表中存在与所述第一页号相匹配的第一表项的情况下,将所述第一表项的访存位图中与所述访存地址相匹配的数据块的标志位设置为所述第一标志位;
根据所述第一页号在所述历史页表中确定与所述预设内存区域相邻的N个第一内存区域;
将据所述预设内存区域的访存位图分别与所述N个第一内存区域的访存位图按位进行逻辑与运算,得到N个第三位图;
将所述N个第三位图中包含的第一标志位的数目最多的位图确定为第二访存位图。
14.根据权利要求11或12所述的方法,其特征在于,所述对所述目标数据块进行旁路预测,得到预测结果,包括:
根据所述预设内存区域的起始地址和所述目标数据块的地址偏移,确定每个目标数据块的内存地址;所述地址偏移用于指示所述目标数据块的内存地址相对于所述预设内存区域的起始地址的偏移值;
根据所述目标数据块的内存地址,对所述目标数据块进行旁路预测,得到预测结果。
15.根据权利要求1所述的方法,其特征在于,所述旁路预测条件包括:所述访存请求为读请求,且所述系统级高速缓存中不存在与所述访存地址相匹配的数据块;
所述在所述访存请求满足旁路预测条件的情况下,对所述访存地址对应的目标数据块进行旁路预测,得到预测结果,包括:
在所述访存请求为读请求,且所述系统级高速缓存中不存在与所述访存地址相匹配的数据块的情况下,从内存中获取与所述访存地址相匹配的目标数据块;
对所述目标数据块进行旁路预测,得到预测结果。
16.一种数据缓存装置,其特征在于,应用于系统级高速缓存,所述系统级高速缓存包括流式缓冲区和基础高速缓存;所述装置包括:
请求接收模块,用于接收处理器发送的访存请求,所述访存请求中携带访存地址;
旁路预测模块,用于在所述访存请求满足旁路预测条件的情况下,对所述访存地址对应的目标数据块进行旁路预测,得到预测结果;
第一写入模块,用于在所述预测结果指示所述访存地址对应的目标数据块需要被旁路的情况下,将所述目标数据块写入所述流式缓冲区;
第二写入模块,用于在所述预测结果指示所述访存地址对应的目标数据块不需要被旁路的情况下,将所述目标数据块写入所述基础高速缓存;
其中,所述旁路预测条件包括以下任一项:
所述访存请求为写请求;
所述访存请求为读请求,且所述系统级高速缓存中不存在与所述访存地址相匹配的数据块;
所述访存请求满足预取条件;所述预取条件用于指示将内存中的数据块提前预取至所述系统级高速缓存中需要满足的条件。
17.一种电子设备,其特征在于,所述电子设备包括处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;所述存储器用于存放可执行指令,所述可执行指令使所述处理器执行如权利要求1至15中任一项所述的数据缓存方法。
18.一种可读存储介质,其特征在于,当所述可读存储介质中的指令由电子设备的处理器执行时,使得所述处理器能够执行如权利要求1至15中任一项所述的数据缓存方法。
CN202311686437.0A 2023-12-11 2023-12-11 一种数据缓存方法、装置、电子设备及可读存储介质 Active CN117389630B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311686437.0A CN117389630B (zh) 2023-12-11 2023-12-11 一种数据缓存方法、装置、电子设备及可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311686437.0A CN117389630B (zh) 2023-12-11 2023-12-11 一种数据缓存方法、装置、电子设备及可读存储介质

Publications (2)

Publication Number Publication Date
CN117389630A true CN117389630A (zh) 2024-01-12
CN117389630B CN117389630B (zh) 2024-03-05

Family

ID=89466979

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311686437.0A Active CN117389630B (zh) 2023-12-11 2023-12-11 一种数据缓存方法、装置、电子设备及可读存储介质

Country Status (1)

Country Link
CN (1) CN117389630B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117573574A (zh) * 2024-01-15 2024-02-20 北京开源芯片研究院 一种预取方法、装置、电子设备及可读存储介质
CN117909258A (zh) * 2024-03-18 2024-04-19 北京开源芯片研究院 一种处理器缓存的优化方法、装置、电子设备及存储介质
CN117971318A (zh) * 2024-03-28 2024-05-03 北京微核芯科技有限公司 取数指令猜测不相关错误的预测方法和装置
CN117971501A (zh) * 2024-03-28 2024-05-03 北京壁仞科技开发有限公司 一种数据访问方法、设备、存储介质及程序产品

Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6212603B1 (en) * 1998-04-09 2001-04-03 Institute For The Development Of Emerging Architectures, L.L.C. Processor with apparatus for tracking prefetch and demand fetch instructions serviced by cache memory
US7610351B1 (en) * 2002-05-10 2009-10-27 Oracle International Corporation Method and mechanism for pipelined prefetching
CN102360339A (zh) * 2011-10-08 2012-02-22 浙江大学 一种提高tlb利用效率的方法
CN102841857A (zh) * 2012-07-25 2012-12-26 龙芯中科技术有限公司 缓存预测执行的处理器与装置及方法
CN103092774A (zh) * 2013-01-04 2013-05-08 北京北大众志微系统科技有限责任公司 一种处理器末级高速缓存的管理系统及方法
US20150121046A1 (en) * 2013-10-25 2015-04-30 Advanced Micro Devices, Inc. Ordering and bandwidth improvements for load and store unit and data cache
CN111241010A (zh) * 2020-01-17 2020-06-05 中国科学院计算技术研究所 一种基于缓存划分及回滚的处理器瞬态攻击防御方法
CN111382089A (zh) * 2018-12-26 2020-07-07 三星电子株式会社 用于专用最末级高速缓存器的旁路预测器
US20210049015A1 (en) * 2019-08-13 2021-02-18 Apple Inc. Early load execution via constant address and stride prediction
CN113190499A (zh) * 2021-05-26 2021-07-30 北京算能科技有限公司 一种面向大容量片上缓存的协同预取器及其控制方法
CN114924792A (zh) * 2022-06-14 2022-08-19 平头哥(上海)半导体技术有限公司 指令译码单元、指令执行单元及相关装置和方法
CN115309453A (zh) * 2022-07-14 2022-11-08 复旦大学 一种支持乱序处理器数据预取的缓存访问系统
CN116991479A (zh) * 2023-09-28 2023-11-03 中国人民解放军国防科技大学 超长指令字缓存标签体的前瞻执行-旁路纠错方法及装置

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6212603B1 (en) * 1998-04-09 2001-04-03 Institute For The Development Of Emerging Architectures, L.L.C. Processor with apparatus for tracking prefetch and demand fetch instructions serviced by cache memory
US7610351B1 (en) * 2002-05-10 2009-10-27 Oracle International Corporation Method and mechanism for pipelined prefetching
CN102360339A (zh) * 2011-10-08 2012-02-22 浙江大学 一种提高tlb利用效率的方法
CN102841857A (zh) * 2012-07-25 2012-12-26 龙芯中科技术有限公司 缓存预测执行的处理器与装置及方法
CN103092774A (zh) * 2013-01-04 2013-05-08 北京北大众志微系统科技有限责任公司 一种处理器末级高速缓存的管理系统及方法
US20150121046A1 (en) * 2013-10-25 2015-04-30 Advanced Micro Devices, Inc. Ordering and bandwidth improvements for load and store unit and data cache
CN111382089A (zh) * 2018-12-26 2020-07-07 三星电子株式会社 用于专用最末级高速缓存器的旁路预测器
US20210049015A1 (en) * 2019-08-13 2021-02-18 Apple Inc. Early load execution via constant address and stride prediction
CN111241010A (zh) * 2020-01-17 2020-06-05 中国科学院计算技术研究所 一种基于缓存划分及回滚的处理器瞬态攻击防御方法
CN113190499A (zh) * 2021-05-26 2021-07-30 北京算能科技有限公司 一种面向大容量片上缓存的协同预取器及其控制方法
CN114924792A (zh) * 2022-06-14 2022-08-19 平头哥(上海)半导体技术有限公司 指令译码单元、指令执行单元及相关装置和方法
CN115309453A (zh) * 2022-07-14 2022-11-08 复旦大学 一种支持乱序处理器数据预取的缓存访问系统
CN116991479A (zh) * 2023-09-28 2023-11-03 中国人民解放军国防科技大学 超长指令字缓存标签体的前瞻执行-旁路纠错方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
葛健达;谢憬;唐正;王琴;毛志刚;: "一种基于流水化流应用的混合式高速缓存设计", 微电子学与计算机, no. 02, pages 1 - 9 *

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117573574A (zh) * 2024-01-15 2024-02-20 北京开源芯片研究院 一种预取方法、装置、电子设备及可读存储介质
CN117573574B (zh) * 2024-01-15 2024-04-05 北京开源芯片研究院 一种预取方法、装置、电子设备及可读存储介质
CN117909258A (zh) * 2024-03-18 2024-04-19 北京开源芯片研究院 一种处理器缓存的优化方法、装置、电子设备及存储介质
CN117909258B (zh) * 2024-03-18 2024-05-14 北京开源芯片研究院 一种处理器缓存的优化方法、装置、电子设备及存储介质
CN117971318A (zh) * 2024-03-28 2024-05-03 北京微核芯科技有限公司 取数指令猜测不相关错误的预测方法和装置
CN117971501A (zh) * 2024-03-28 2024-05-03 北京壁仞科技开发有限公司 一种数据访问方法、设备、存储介质及程序产品

Also Published As

Publication number Publication date
CN117389630B (zh) 2024-03-05

Similar Documents

Publication Publication Date Title
CN117389630B (zh) 一种数据缓存方法、装置、电子设备及可读存储介质
US10019369B2 (en) Apparatuses and methods for pre-fetching and write-back for a segmented cache memory
TWI757539B (zh) 用於資料預取之系統、方法及設備
EP3414665B1 (en) Profiling cache replacement
US20110072218A1 (en) Prefetch promotion mechanism to reduce cache pollution
US7707379B2 (en) Dynamic latency map for memory optimization
JP3323212B2 (ja) データプレフェッチの方法およびその装置
US9582282B2 (en) Prefetching using a prefetch lookup table identifying previously accessed cache lines
US7584327B2 (en) Method and system for proximity caching in a multiple-core system
US20120030431A1 (en) Predictive sequential prefetching for data caching
US6782453B2 (en) Storing data in memory
EP1505506A1 (en) A method of data caching
US9552301B2 (en) Method and apparatus related to cache memory
CN110297787B (zh) I/o设备访问内存的方法、装置及设备
CN110888600B (zh) 一种面向nand闪存的缓冲区管理方法
US20170371795A1 (en) Multi-Level System Memory With Near Memory Scrubbing Based On Predicted Far Memory Idle Time
CN114830100A (zh) 预取级别降级
US8151058B2 (en) Vector computer system with cache memory and operation method thereof
US6959363B2 (en) Cache memory operation
CN107562806B (zh) 混合内存文件系统的自适应感知加速方法及系统
CN109074313B (zh) 缓存和方法
KR20210097345A (ko) 캐시 메모리 장치, 이를 포함하는 시스템 및 캐시 메모리 장치의 동작 방법
KR101976320B1 (ko) 라스트 레벨 캐시 메모리 및 이의 데이터 관리 방법
CN116069752A (zh) 一种面向分布式文件系统的混合预取方法
Yoon et al. Access characteristic-based cache replacement policy in an SSD

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