CN114217861A - 数据处理方法及装置、电子装置和存储介质 - Google Patents

数据处理方法及装置、电子装置和存储介质 Download PDF

Info

Publication number
CN114217861A
CN114217861A CN202111478651.8A CN202111478651A CN114217861A CN 114217861 A CN114217861 A CN 114217861A CN 202111478651 A CN202111478651 A CN 202111478651A CN 114217861 A CN114217861 A CN 114217861A
Authority
CN
China
Prior art keywords
cache
passive
target private
prefetch
shared
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
Application number
CN202111478651.8A
Other languages
English (en)
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.)
Haiguang Information Technology Co Ltd
Original Assignee
Haiguang Information 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 Haiguang Information Technology Co Ltd filed Critical Haiguang Information Technology Co Ltd
Priority to CN202111478651.8A priority Critical patent/CN114217861A/zh
Publication of CN114217861A publication Critical patent/CN114217861A/zh
Pending legal-status Critical Current

Links

Images

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/3802Instruction prefetching
    • 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
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5044Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (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

数据处理方法及装置、电子装置和存储介质
技术领域
本公开的实施例涉及一种数据处理方法、数据处理装置、电子装置和计算机可读存储介质。
背景技术
在多核处理器体系中,一般采用最后一级缓存作为多个处理核之间的共享缓存,单个处理核内部会有私有缓存作为单个处理核的私有存储单元。由于芯片尺寸的限制和功耗的影响,处理核内部的私有缓存的容量较小,再加上处理核的频率较高,从而对于私有缓存的访存延迟很小。越多的访存操作存储在私有缓存中,访存延迟便越小,处理器的性能便越高。然而,私有缓存的容量较小,只能存储少量数据,而共享缓存一般容量较大,可以存储较多的数据。
发明内容
本公开至少一实施例提供一种数据处理方法,用于计算机***,该计算机***包括分别用于多个处理器的多个私有缓存和共享缓存,该数据处理方法包括:将共享缓存中预定被逐出的缓存块尝试预取到多个私有缓存中可以接受缓存块的目标私有缓存中。
例如,在本公开至少一实施例提供的数据处理方法中,将共享缓存中预定被逐出的缓存块尝试预取到多个私有缓存中可以接受缓存块的目标私有缓存中,包括:共享缓存发起对于目标私有缓存的被动预取请求;目标私有缓存处理被动预取请求,并且向共享缓存发送预取操作请求。
例如,在本公开至少一实施例提供的数据处理方法中,将共享缓存中预定被逐出的缓存块尝试预取到多个私有缓存中可以接受缓存块的目标私有缓存中,还包括:在共享缓存发起对于目标私有缓存的被动预取请求之前,判断多个缓存中是否有可以接受缓存块的目标私有缓存。
例如,在本公开至少一实施例提供的数据处理方法中,判断多个缓存中是否有可以接受缓存块的目标私有缓存,包括:在共享缓存产生逐出操作时,基于共享缓存对应的目录的信息,通过共享缓存的逐出队列发起读取共享缓存对应的目录中对应的索引,判断目标私有缓存在索引中是否有空闲路来接收缓存块。
例如,在本公开至少一实施例提供的数据处理方法中,判断目标私有缓存在索引中是否有空闲路来接收缓存块,包括:将空闲路与被动预取阈值进行比较,在空闲路的个数大于被动预取阈值的情形,确定进行被动预取操作,在空闲路的个数小于被动预取阈值的情形,确定不进行被动预取操作,由共享缓存将缓存块写回到主存中。
例如,在本公开至少一实施例提供的数据处理方法中,被动预取阈值为目标私有缓存的路的个数的一半。
例如,在本公开至少一实施例提供的数据处理方法中,共享缓存发起对于目标私有缓存的被动预取请求,包括:响应于存在目标私有缓存,共享缓存判断是否向目标私有缓存发送被动预取请求。
例如,在本公开至少一实施例提供的数据处理方法中,共享缓存判断是否向目标私有缓存发送被动预取请求,包括:共享缓存判断是否有足够的硬件资源将被动预取请求发送给目标私有缓存,在有足够的硬件资源的情形,共享缓存向目标私有缓存发送被动预取请求,或者在没有足够的硬件资源的情形,共享缓存放弃发送被动预取请求。
例如,在本公开至少一实施例提供的数据处理方法中,共享缓存判断是否有足够的硬件资源将被动预取请求发送给目标私有缓存,包括:共享缓存通过逐出队列产生被动预取请求并将被动预取请求发送到探测队列中,由探测队列判断共享缓存是否有足够的硬件资源将被动预取请求发送给目标私有缓存;共享缓存向目标私有缓存发送被动预取请求,包括:探测队列将被动预取请求发送给目标私有缓存,并等待目标私有缓存反馈是否接受被动预取请求;共享缓存放弃发送被动预取请求,包括:探测队列向逐出队列返回拒绝信息,逐出队列会放弃被动预取操作,将缓存块写回到主存中,并且释放占用的硬件资源。
例如,在本公开至少一实施例提供的数据处理方法中,目标私有缓存处理被动预取请求,并且向共享缓存发送预取操作请求,包括:目标私有缓存针对来自共享缓存的被动预取请求,判断是否响应被动预取操作,并且响应于响应被动预取操作,向共享缓存发送预取操作请求。
例如,在本公开至少一实施例提供的数据处理方法中,目标私有缓存针对来自共享缓存的被动预取请求,判断是否响应被动预取操作,包括:目标私有缓存判断是否接受来自共享缓存的被动预取请求,在接受来自共享缓存的被动预取请求的情形,目标私有缓存响应被动预取操作,或者在不接受来自共享缓存的被动预取请求的情形,目标私有缓存放弃响应被动预取操作。
例如,在本公开至少一实施例提供的数据处理方法中,目标私有缓存判断是否接受来自共享缓存的被动预取请求,包括:目标私有缓存将被动预取请求存储到被动预取先入先出队列中,进行流水线冲突检测和硬件资源检测,判断是否接受被动预取请求;在不接受来自共享缓存的被动预取请求的情形,目标私有缓存放弃响应被动预取操作,包括:响应于当前的流水线忙或没有足够的硬件资源,目标私有缓存向共享缓存发送拒绝信息,逐出队列基于拒绝信息,将缓存块写回到主存中,并且目标私有缓存和共享缓存释放占用的硬件资源;在接受来自共享缓存的被动预取请求的情形,目标私有缓存响应被动预取操作,包括:响应于满足发起被动预取操作的条件,目标私有缓存向共享缓存发送接受信息,逐出队列基于接受信息释放资源,逐出数据缓冲器继续保存缓存块,并且等待目标私有缓存读取缓存块。
例如,在本公开至少一实施例提供的数据处理方法中,将共享缓存中预定被逐出的缓存块尝试预取到多个私有缓存中可以接受缓存块的目标私有缓存中,还包括:在目标私有缓存处理被动预取请求,并且向共享缓存发送预取操作请求之后,共享缓存针对来自目标私有缓存的预取操作请求,判断是否将缓存块发送给目标私有缓存。
例如,在本公开至少一实施例提供的数据处理方法中,共享缓存针对来自目标私有缓存的预取操作请求,判断是否将缓存块发送给目标私有缓存,包括:共享缓存判断是否针对缓存块触发超时机制,在针对缓存块触发超时机制并且缓存块已经写回到主存中的情形,共享缓存不将缓存块发送给目标私有缓存,或者在针对缓存块没有触发超时机制的情形,共享缓存将缓存块发送给目标私有缓存。
例如,在本公开至少一实施例提供的数据处理方法中,共享缓存判断是否针对缓存块触发超时机制,包括:共享缓存将来自目标私有缓存的预取操作请求发送到逐出队列中,逐出队列判断是否针对缓存块触发超时机制;共享缓存不将缓存块发送给目标私有缓存,包括:逐出队列对预取操作请求返回失败信息,目标私有缓存接收到失败信息后,释放占用的硬件资源;共享缓存将缓存块发送给目标私有缓存,包括:将逐出数据缓冲器中的缓存块通过数据旁路返回给目标私有缓存,目标私有缓存接收到缓存块后,将缓存块发送到目标私有缓存的存储单元中,并且目标私有缓存和共享缓存均释放占用的硬件资源。
本公开至少一实施例提供一种数据处理装置,用于计算机***包括的共享缓存,计算机***还包括用于多个处理器的多个私有缓存,数据处理装置包括:被动预取操作单元,配置为将共享缓存中预定被逐出的缓存块尝试预取到多个私有缓存中可以接受缓存块的目标私有缓存中。
本公开至少一实施例提供一种数据处理装置,包括:处理器;以及存储器,存储有计算机可执行指令,计算机可执行指令在被处理器执行时实现本公开至少一实施例提供的数据处理方法。
本公开至少一实施例提供一种电子装置,包括本公开至少一实施例提供的数据处理装置。
本公开至少一实施例提供一种计算机可读存储介质,用于非瞬时性地存储计算机可执行指令,该计算机可执行指令在被处理器执行时实现本公开至少一实施例提供的数据处理方法。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例的附图作简单地介绍,显而易见地,下面描述中的附图仅仅涉及本公开的一些实施例,而非对本公开的限制。
图1示出了一种多核处理器体系的结构示意图;
图2示出了直接相联、全相联和组相联中主存和缓存的映射关系的示意图;
图3示出了缓存的组相联的组织形式和寻址方式的示意图;
图4示出了私有缓存与共享缓存的映射关系的示意图;
图5示出了本公开至少一实施例提供的一种数据处理方法的示意性流程图;
图6示出了本公开至少一实施例提供的数据旁路逻辑结构的示意图;
图7示出了本公开至少一实施例提供的另一种数据处理方法的示意性流程图;
图8A示出了本公开至少一实施例提供的一种数据处理装置的示意框图;
图8B示出了本公开至少一实施例提供的另一种数据处理装置的示意图;
图9示出了本公开至少一实施例提供的又一种数据处理装置的示意图;
图10示出了本公开至少一实施例提供的电子装置的示意图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例的附图,对本公开实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例是本公开的一部分实施例,而不是全部的实施例。基于所描述的本公开的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
除非另外定义,本公开使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。同样,“一个”、“一”或者“该”等类似词语也不表示数量限制,而是表示存在至少一个。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
图1示出了一种多核处理器体系,该体系为集中式共享存储器体系,处理核core0、core1、core2和core3具有各自的专用缓存(私有缓存),具有一级或多级共享缓存(通常是最后一级缓存(LLC)),并且共享同一主存以及输入/输出(I/O)。每个处理核的专用缓存可以包括一级缓存(L1 cache)或二级缓存(L2 cache)等。
例如,通常缓存的容量很小,缓存保存的内容只是主存内容的一个子集,且缓存与主存的数据交换是以块为单位的。为了把主存中的数据缓存到缓存中,必须应用某种函数把主存地址定位到缓存中,这称为地址映射。在将主存中的数据按这种映射关系缓存到缓存中后,中央处理器(central processing unit,CPU)执行程序时,会将程序中的主存地址变换成缓存地址。缓存的地址映射方式通常有直接映射、全相联和组相联映射。
虽然缓存的容量相较于主存来说较小,但是速度相较于主存来说却快的多,因此缓存的主要功能是用来存储近期处理器可能需要频繁访问到的数据。这样处理器便可以直接到缓存中进行数据读取,而无需频繁地访问速度较慢的主存,以此来提高处理器对主存的访问速度。缓存的基本单位是缓存块或缓存行(cache line)。与缓存分成多个缓存块类似,主存中存储的数据也进行了类似划分。主存中的划分出来的数据块称为主存块。通常,一个主存块的大小可以为4KB,一个缓存块的大小也可以为4KB。可以理解的是,实际应用中,还可以将主存块和缓存块的大小设置为其他值,仅需保证主存块的大小与缓存块的大小相同即可。
主存和缓存之间具有一定映射关系,该映射关系可以是直接相联、全相联和组相联。在直接相联、全相联和组相联中,主存和缓存的映射关系原理如图2所示。将主存和缓存都分为大小一样的块。假设主存有32项,缓存有8项。在直接相联方式中,每个主存块只能放到缓存中的一个缓存块的位置上。假设要把主存的第12号块放到缓存中,因为缓存只有8项,所以只能放在第(12mod 8=4)项上,其他地方都不能放;由此可知第4、12、20、28号主存块都对应到缓存的第4项上,如果冲突了就只能替换。直接相联方式所需的硬件简单但效率低,如图2的(a)所示。在全相联方式中,每个主存块都可以放到缓存的任一位置上,这样第4、12、20、28号主存块可以同时放入缓存中。全相联方式所需的硬件复杂但效率高,如图2的(b)所示。组相联是直接相联和全相联的折中。以两路(way)组相联为例,缓存中第0、2、4、6号位置为一路(这里称为第0路),第1、3、5、7号位置为另一路(这里称为第1路),每路4个块。对于主存的第12号块,因为12除以4余数为0,所以既可以把第12号块放到缓存的第0路的第0号位置(即缓存的第0号位置),也可以放到第1路的第0号位置(即缓存的第1号位置),如图2的(c)所示。
图2的(c)中缓存的组相联的组织形式和寻址方式如图3所示。缓存被组织为缓存块数组的形式。一列缓存块组成路,多列缓存块中相同位置的多个缓存块组成一个组(set)。通过要读取的数据或指令的物理地址获取数据或指令在缓存中的位置,每个物理地址被分为三部分:
·索引(Index),用于选择缓存中的组,同一组中的所有缓存块通过索引来选择;
·标签(tag),用于选择一组中特定的缓存块,将物理地址的标签与每个缓存块的标签进行比较,如果匹配,则缓存命中(cache hit),从而选择此缓存块,否则缓存缺失(cache miss);
·偏移量(offset),用于在缓存块中选择相应的地址,其表示物理地址在缓存块中的第一个字节,对应的数据或指令从此字节的位置读取。
缓存的工作原理要求它尽量保存最新或最常用的数据,当从主存向缓存传送一个缓存块,而缓存中可用位置已经被占满时,就会产生缓存数据的替换问题。解决这个问题就涉及到缓存***的数据替换机制。简单来说,缓存***的数据替换机制包括两步:
第一,在缓存中筛选出对应用访问来说“不重要”的数据;
第二,将这些数据从缓存中删除,为新来的数据腾出空间。
已有的替换算法可以包括LRU(Least Recently Used)、LFU(Least FrequentlyUsed)、MRU(Most Recently Used)、NRU(Not Recent Used)、SRRIP(Static RRIP)等。
在多核处理器体系中,私有缓存若填满,则会通过替换机制将缓存块写入到共享缓存中,而共享缓存的大小也是有限的,尤其是在多处理核共享的情况下,共享缓存较容易被填满。当共享缓存也被填满时,则会通过替换机制将缓存块写回到主存中。
在缓存块被写回到主存后,如果需要读取该缓存块,则需要去主存中读取,这样会增加较多访存延迟,影响整体性能。
本公开至少一实施例提供一种数据处理方法,用于计算机***,该计算机***包括分别用于多个处理器的多个私有缓存和共享缓存,该数据处理方法包括:将共享缓存中预定被逐出的缓存块尝试预取到多个私有缓存中可以接受缓存块的目标私有缓存中。
本公开上述实施例提供的数据处理方法能够通过被动预取操作提高私有缓存的命中率,降低访存延迟,并且提升处理器的性能。
本公开至少一实施例还提供对应于上述数据处理方法的数据处理装置、包括该数据处理装置的电子装置、非暂时性地存储用于实现上述方法的计算机可读存储介质。
下面结合附图对本公开的实施例进行详细说明,但是本公开并不限于这些具体的实施例。
图4示出了一个实施例涉及的计算机***中私有缓存与共享缓存的映射关系的示意图。
如图4所示,私有缓存和共享缓存都具有“路-组”(way-set)结构,并且私有缓存中的缓存块和共享缓存中的缓存块具有相同的大小。例如,私有缓存中的同一个组中的路可以对应于共享缓存中的不同组中的路。
图5示出了本公开至少一实施例提供的一种数据处理方法的示意性流程图。例如,该数据处理方法例如用于图1所示的多核处理器体系,多核处理器体系包括分别用于多个处理器(核)的多个私有缓存和共享缓存(例如,LLC缓存)。该数据处理方法包括:将共享缓存中预定被逐出的缓存块尝试预取到多个私有缓存中可以接受该缓存块的目标私有缓存中。
在本公开实施例的多核处理器体系的计算机***中,处理器既可以是单核处理器,或多核处理器的多个处理核之一。
需要说明的是,在此实施例中,私有缓存与共享缓存不限于某个级别的缓存。例如,私有缓存是一级缓存,共享缓存是二级缓存;又例如,私有缓存是二级缓存,共享缓存是四级缓存。例如,上述“目标私有缓存”为多个私有缓存中的一个,但并非预先确定的一个,例如可以根据***运行的情况来实时选择和决定,被选择出来的私有缓存有资源能够接受从共享缓存预定被逐出的缓存块,由此作为“目标私有缓存”。
在此实施例中,例如,共享缓存中所有预定被逐出的缓存块都可以被尝试预取到目标私有缓存中。
又例如,可以根据预定被逐出的缓存块的历史信息来决定是否将该缓存块尝试预取到目标私有缓存中:
·如果缓存块的年龄(age)较小,则表示该缓存块可能之后会被用到,则尝试预取该缓存块。
·如果缓存块的一致性状态具有独占属性,则说明其它处理核内的私有缓存中没有该缓存块,则尝试预取该缓存块。
·如果缓存块的历史信息表示该缓存块曾经是指令数据或者操作数据,则尝试预取该缓存块。
例如,可以在满足上述条件中的一条或多条的情况,将缓存块尝试预取到目标私有缓存中。
如图5所示,将共享缓存中预定被逐出的缓存块尝试预取到多个私有缓存中可以接受该缓存块的目标私有缓存中可以包括如下的步骤S501~S504。
步骤S501:判断多个缓存中是否有可以接受缓存块的目标私有缓存。
步骤S502:共享缓存发起对于目标私有缓存的被动预取请求。
步骤S503:目标私有缓存处理被动预取请求,并且向共享缓存发送预取操作请求。
步骤S504:共享缓存针对来自目标私有缓存的预取操作请求,判断是否将缓存块发送给目标私有缓存。
在本公开的一些实施例中,步骤S501的一个具体示例包括:在共享缓存产生逐出操作时,基于共享缓存对应的目录的信息,通过共享缓存的逐出队列发起读取共享缓存对应的目录中对应的索引,判断目标私有缓存在索引中是否有空闲路来接收缓存块。
例如,共享缓存对应的目录的信息包括如图3所示的物理地址信息,物理地址信息被分为索引、标签、偏移量三个部分。共享缓存和私有缓存存在映射关系,通过读取共享缓存对应的目录中对应的索引,可以判断多个处理核各自的私有缓存在此索引中是否有空闲路来接收预定被逐出的缓存块。
例如,判断目标私有缓存在索引中是否有空闲路来接收缓存块可以包括:将空闲路与被动预取阈值进行比较,在空闲路的个数大于被动预取阈值的情形,确定进行被动预取操作,在空闲路的个数小于被动预取阈值的情形,确定不进行被动预取操作,由共享缓存将缓存块写回到主存中。
例如,被动预取阈值的默认值可以为目标私有缓存的路的个数的一半或3/4等,该被动预取阈值可以由软件或硬件等方式进行配置,本公开的实施例对此不作限制。设置被动预取阈值可以防止干扰私有缓存的其它普通访存操作,从而不降低***的整体性能。
在本公开的一些实施例中,步骤S502的一个具体示例包括:响应于存在目标私有缓存,共享缓存判断是否向目标私有缓存发送被动预取请求。
例如,共享缓存判断是否向目标私有缓存发送被动预取请求可以包括:共享缓存判断是否有足够的硬件资源将被动预取请求发送给目标私有缓存,在有足够的硬件资源的情形,共享缓存向目标私有缓存发送被动预取请求,或者在没有足够的硬件资源的情形,共享缓存放弃发送被动预取请求。
该共享缓存内部的被动预取请求的硬件资源检测机制,可以防止被动预取请求占用过多的硬件资源而导致阻碍其它正常的请求,同时保证被动预取操作不会因为被阻碍太久而影响处理器的性能。
例如,该硬件资源检测机制可以通过软件或硬件等实现,本公开的实施例对此不作限制。
例如,共享缓存判断是否有足够的硬件资源将被动预取请求发送给目标私有缓存可以包括:共享缓存通过逐出队列产生被动预取请求并将被动预取请求发送到探测队列(probe queue)中,由探测队列判断共享缓存是否有足够的硬件资源将被动预取请求发送给目标私有缓存。
例如,共享缓存向目标私有缓存发送被动预取请求可以包括:探测队列将被动预取请求发送给目标私有缓存,并等待目标私有缓存反馈是否接受被动预取请求。
例如,被动预取请求可以不通过探测队列来发送,而直接由逐出队列发送。使用探测队列是为了复用共享缓存发往私有缓存请求的通道。如果硬件资源允许,可以专门增加一个新的队列,或者可以直接通过逐出队列发送被动预取请求。
例如,共享缓存放弃发送被动预取请求可以包括:探测队列向逐出队列(victimqueue)返回拒绝信息,逐出队列会放弃被动预取操作,将缓存块写回到主存中,并且释放占用的硬件资源。
在本公开的一些实施例中,步骤S503的一个示例包括:目标私有缓存针对来自共享缓存的被动预取请求,判断是否响应被动预取操作,并且响应于响应被动预取操作,向共享缓存发送预取操作请求。
例如,目标私有缓存针对来自共享缓存的被动预取请求,判断是否响应被动预取操作可以包括:目标私有缓存判断是否接受来自共享缓存的被动预取请求,在接受来自共享缓存的被动预取请求的情形,目标私有缓存响应被动预取操作,或者在不接受来自共享缓存的被动预取请求的情形,目标私有缓存放弃响应被动预取操作。
例如,目标私有缓存判断是否接受来自共享缓存的被动预取请求可以包括:目标私有缓存将被动预取请求存储到被动预取先入先出(FIFO)队列中,进行流水线冲突检测和硬件资源检测,判断是否接受被动预取请求。
该私有缓存内部的硬件资源检测以及流水线冲突检测机制,可以由私有缓存基于自身当前的情况,来决定是否接受被动预取请求,从而防止干扰私有缓存的正常操作。
例如,私有缓存的预取控制逻辑进行流水线冲突检测以及硬件资源检测。
例如,在不接受来自共享缓存的被动预取请求的情形,目标私有缓存放弃响应被动预取操作可以包括:响应于当前的流水线忙或没有足够的硬件资源,目标私有缓存向共享缓存发送拒绝信息,逐出队列基于拒绝信息,将缓存块写回到主存中,并且目标私有缓存和共享缓存释放占用的硬件资源。
例如,共享缓存内部的探测队列会将目标私有缓存返回的拒绝信息反馈给逐出队列,逐出队列会放弃掉此次被动预取操作。
例如,在接受来自共享缓存的被动预取请求的情形,目标私有缓存响应被动预取操作可以包括:响应于满足发起被动预取操作的条件,目标私有缓存向共享缓存发送接受信息,逐出队列基于接受信息释放资源,逐出数据缓冲器继续保存缓存块,并且等待目标私有缓存读取缓存块。
例如,共享缓存内部的探测队列会将目标私有缓存返回的接受信息反馈给逐出队列,并且探测队列释放占用的硬件资源。
例如,目标私有缓存针对共享缓存发来的被动预取请求,判断可以接受被动预取请求后,将被动预取请求***到流水线中,产生预取操作请求,并将预取操作请求发送给共享缓存。
在本公开的一些实施例中,步骤S504的一个示例包括:共享缓存判断是否针对缓存块触发超时机制,在针对缓存块触发超时机制并且缓存块已经写回到主存中的情形,共享缓存不将缓存块发送给目标私有缓存,或者在针对缓存块没有触发超时机制的情形,共享缓存将缓存块发送给目标私有缓存。
该共享缓存内部的超时机制,可以防止由于被动预取操作时间过长,而影响共享缓存或私有缓存中的正常操作的处理。
例如,共享缓存判断是否针对缓存块触发超时机制可以包括:共享缓存将来自目标私有缓存的预取操作请求发送到逐出队列中,逐出队列判断是否针对缓存块触发超时机制。
例如,共享缓存不将缓存块发送给目标私有缓存可以包括:逐出队列对预取操作请求返回失败信息,目标私有缓存接收到失败信息后,释放占用的硬件资源。
例如,共享缓存将缓存块发送给目标私有缓存可以包括:将逐出数据缓冲器中的缓存块通过数据旁路返回给目标私有缓存,目标私有缓存接收到缓存块后,将缓存块发送到目标私有缓存的存储单元中,并且目标私有缓存和共享缓存均释放占用的硬件资源。
例如,上述数据旁路的逻辑结构的示例性示意图在图6中示出。
如图6所示,在数据旁路的逻辑结构中,共享缓存的存储单元将预定被逐出的缓存块发送到逐出数据缓冲器中。与门1(&1)的两个输入分别是逐出数据缓冲器中保存的缓存块和预取操作有效信号经过反相器之后的信号,与门2(&2)的两个输入分别是逐出数据缓冲器中保存的缓存块和预取操作有效信号。如果预取操作信号的值为0,经过反相器后值为1,在此情况下,与门1的逻辑输出为预定被逐出的缓存块被写回到主存中。如果预取操作信号的值为1,经过反相器后值为0,在此情况下,与门2的逻辑输出为缓存块。与门2的输出端连接到多路选择器,共享缓存的存储单元的一个输出端也连接到多路选择器。多路选择器的输出端连接到一个私有缓存。多路选择器可以从与门2输出的预定被逐出的缓存块、共享缓存的存储单元输出的加载命中数据以及从其它私有缓存中加载的数据中选择一个输出到其连接的私有缓存中。与门2输出的是被动预取操作的数据,而加载命中数据以及从其它私有缓存中加载的数据是正常访存操作的数据。
本公开的至少一个实施例提出的数据处理方法提供了一组示例性的拒绝机制,该组拒绝机制包含三个部分:
·步骤S502中的硬件资源检测机制:共享缓存如果没有足够的硬件资源将被动预取请求发送给目标私有缓存,则放弃此次被动预取请求。
·步骤S503中的硬件资源检测和流水线冲突检测机制:私有缓存如果没有足够的硬件资源或者当前的流水线忙,则放弃接收此次被动预取请求。
·步骤S504中的超时机制:对于共享缓存的逐出队列,会针对被动预取操作进行超时监控,如果触发超时机制,则逐出队列会主动放弃此被动预取操作,并将预定被逐出的缓存块写回到主存中。
这些拒绝机制可以防止被动预取操作影响私有缓存和共享缓存的一般访存请求,从而影响整体性能。
下面通过图7来具体说明上述数据处理方法。
图7示出了本公开至少一实施例提供的另一种数据处理方法的示意性流程图。
如图7所示,在步骤S701中,共享缓存根据***的操作需要产生对于缓存块的逐出操作。
接着,在步骤S702中,读取共享缓存对应的目录中对应的索引。
例如,共享缓存对应的目录存储了共享该共享缓存的所有私有缓存的信息,目录中存储的信息包括私有缓存的物理地址、一致性状态等。
接着,在步骤S703中,根据此索引判断是否有私有缓存具有空闲路来接收预定被逐出的缓存块。
例如,根据索引选择了私有缓存中的一个组,该组具有8个路,判断这8个路中是否有空闲的路来接收预定被逐出的缓存块。
例如,私有缓存有多个空闲路来接收预定被逐出的缓存块。例如,私有缓存的way0~way5都是空闲路,可以按照顺序依次选择空闲路,也可以按照逆序依次选择空闲路,还可以根据随机算法随机选择空闲路,本公开对选择空闲路的方法不做限制。同理,在有多个私有缓存具有空闲路来接收预定被逐出的缓存块时,可以按照自定义的某种规则来选择空闲路接收缓存块,本公开对此不做限制。
例如,对于每个私有缓存,将空闲路的个数和被动预取阈值进行比较来判断是否接收预定被逐出的缓存块;将具有能接收预定被逐出的缓存块的资源的私有缓存被确定为目标私有缓存。
例如,如果有私有缓存的空闲路的个数大于被动预取阈值,确定目标私有缓存且确定进行被动预取操作,如果空闲路的个数小于被动预取阈值,确定不进行被动预取操作,由共享缓存将缓存块写回到主存中。
接着,在步骤S704中,在目标私有缓存有空闲路来接收该缓存块的情形,确定进行被动预取操作。
接着,在步骤S705中,共享缓存判断是否有足够的硬件资源向目标私有缓存发送被动预取请求。
例如,共享缓存通过逐出队列产生被动预取请求并发送到探测队列中,由探测队列判断共享缓存是否有足够的硬件资源将被动预取请求发送到目标私有缓存中。
例如,如果共享缓存没有足够的硬件资源,则探测队列会返回拒绝信息给逐出队列,逐出队列会放弃被动预取操作,而将缓存块写回到主存中,且释放使用的资源。如果共享缓存有足够的硬件资源,则探测队列将被动预取请求发送给目标私有缓存,等待目标私有缓存反馈是否接受此被动预取操作。
接着,在步骤S706中,在共享缓存有足够的硬件资源的情形,共享缓存将被动预取请求发送到目标私有缓存中。
接着,在步骤S707中,目标私有缓存判断是否接受被动预取请求。
例如,目标私有缓存将被动预取请求存储到被动预取先入先出队列中。目标私有缓存进行流水线冲突检测以及硬件资源检测,判断是否接受被动预取请求。
例如,如果目标私有缓存判断当前流水线忙或者没有足够的硬件资源,则对于被动预取请求返回拒绝信息,共享缓存内部的探测队列会将拒绝信息反馈给逐出队列,逐出队列会放弃此被动预取操作,将缓存块写回到主存中,并且共享缓存和私有缓存释放掉所占用的硬件资源。如果目标私有缓存判断可以接受被动预取请求,则对于被动预取请求返回接受信息,探测队列将接受信息返回给逐出队列,探测队列释放占用的硬件资源,逐出数据缓冲器继续保持缓存块,等待目标私有缓存取走缓存块。当目标私有缓存判断可以接受被动预取请求后,将被动预取请求***到流水线中。
接着,在步骤S708中,在目标私有缓存接受被动预取请求的情况,目标私有缓存将被动预取请求***到流水线中。
接着,在步骤S709中,目标私有缓存产生预取操作请求并发送到共享缓存中。
例如,共享缓存接收到预取操作请求后,将预取操作请求发送到逐出队列中。
接着,在步骤S710中,共享缓存判断是否返回缓存块。
例如,共享缓存中的逐出队列判断是否返回缓存块。
例如,如果逐出队列针对缓存块触发超时机制且缓存块已经写回到主存中,则逐出队列对预取操作请求返回失败信息,目标私有缓存接收到失败信息后释放占用的硬件资源。如果逐出队列针对缓存块没有触发超时机制,将逐出数据缓冲器中的数据通过数据旁路返回给目标私有缓存。
接着,在步骤S711中,在共享缓存判断返回缓存块的情形,共享缓存将缓存块发送给目标私有缓存并更新对应的目录。
接着,在步骤S712中,目标私有缓存将缓存块写入到存储单元中。
例如,目标私有缓存将接收到的缓存块存储到存储单元中,共享缓存和目标私有缓存均释放占用的硬件资源。
本公开至少一实施例还提供一种数据处理装置,用于计算机***包括的共享缓存,计算机***还包括用于多个处理器的多个私有缓存,数据处理装置包括:被动预取操作单元,配置为将共享缓存中预定被逐出的缓存块尝试预取到多个私有缓存中可以接受缓存块的目标私有缓存中。例如,该被动预取操作单元配置在共享缓存中。
图8A示出了本公开至少一实施例提供的一种数据处理装置800的示意框图,该数据处理装置可以用于执行图5所示的数据处理方法。
如图8A所示,数据处理装置800包括被动预取操作单元803和缓存802,缓存802包括共享缓存801和多个私有缓存。
被动预取操作单元803被配置为将共享缓存中预定被逐出的缓存块尝试预取到多个私有缓存中可以接受缓存块的目标私有缓存中。
该数据处理装置800和图5所示的数据处理方法的技术效果相同,可以提升处理器的性能,在此不再赘述。
图8B示出了本公开至少一实施例提供的另一种数据处理装置810的示意图。
如图8B所示,数据处理装置810包括共享缓存811和目标私有缓存812。共享缓存811中包括共享缓存的存储单元813、共享缓存对应的目录814、逐出队列815、探测队列816、逐出数据缓冲器817以及图6所示的数据旁路逻辑结构818。目标私有缓存812中包括存储单元819、被动预取先入先出队列820、流水线控制单元821、写入操作控制单元822。
需要说明的是,本公开的实施例提出的数据处理装置中的队列不限于上面描述的逐出队列和探测队列,队列的类型和数量可以根据实际情况而设计。
例如,数据处理装置可以采用硬件、软件、固件以及它们的任意可行的组合实现,本公开对此不作限制。
下面结合图8B所示的数据处理装置810对本公开至少一实施例提供的数据处理方法的实施例进行简述,具体可以参见前面的描述。
共享缓存811的存储单元813通过逐出队列815读取共享缓存对应的目录814中对应的索引,判断私有缓存在该索引中是否有空闲路来接收预定被逐出的缓存块。在存在目标私有缓存812的情况,共享缓存811通过逐出队列815产生一个被动预取请求并发送到探测队列816中,由探测队列816判断共享缓存811是否有足够的硬件资源将该被动预取请求发送给目标私有缓存812。在共享缓存811有足够的硬件资源将被动预取请求发送给目标私有缓存812的情况,探测队列816将被动预取请求发送给目标私有缓存812,目标私有缓存812将此被动预取请求存储到被动预取先入先出队列820中。目标私有缓存812的流水线控制单元821进行流水线冲突检测以及硬件资源检测,判断是否接收此被动预取请求。在目标私有缓存812判断可接收此被动预取请求的情况,目标私有缓存812对于被动预取请求返回接受信息,探测队列816将接受信息返回给逐出队列815,探测队列816释放资源,并且逐出数据缓冲器817继续保持该缓存块,等待目标私有缓存812取走该缓存块。当目标私有缓存812判断可接收此被动预取请求后,将被动预取请求***到流水线中,产生预取操作请求并将预取操作请求发送给共享缓存811。当共享缓存811接收到预取操作请求,共享缓存811将此预取操作请求发送到逐出队列815中,逐出队列815判断是否返回缓存块。在逐出队列815针对此笔缓存块没有触发超时机制的情况,将逐出数据缓冲器817中存储的缓存块通过数据旁路逻辑结构818发送到目标私有缓存812的写入操作控制单元822中,写入操作控制单元822在接收到该缓存块后,将缓存块发送到目标私有缓存812的存储单元819中。最后,共享缓存811和目标私有缓存812均释放所占用的硬件资源。
本公开至少一实施例还提供了一种数据处理装置,包括:存储器,用于非暂时性存储计算机可执行指令;以及处理器,用于运行计算机可执行指令,其中,计算机可执行指令被处理器运行时执行本公开至少一实施例提供的数据处理方法。
图9示出了根据本公开实施例的数据处理装置900的示意图。如图9所示,根据本公开实施例的数据处理装置900可以包括处理装置901以及存储器902,其可以通过总线903进行互连。
处理装置901可以根据存储在存储器902中的程序或代码执行各种动作和处理。具体地,处理装置901可以是一种集成电路芯片,具有信号的处理能力。例如,上述处理装置可以是通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本公开实施例中公开的各种方法、步骤、流程及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,可以是X86架构或者是ARM架构等。
存储器902存储有计算机可执行指令,其中,计算机可执行指令在被处理装置901执行时实现本公开至少一实施例提供的资源分配方法。存储器902可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。非易失性存储器可以是只读存储器(ROM)、可编程只读存储器(PROM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)或闪存。易失性存储器可以是随机存取存储器(RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、同步动态随机存取存储器(SDRAM)、双倍数据速率同步动态随机存取存储器(DDRSDRAM)、增强型同步动态随机存取存储器(ESDRAM)、同步连接动态随机存取存储器(SLDRAM)和直接主存总线随机存取存储器(DRRAM)。应注意,本文描述的方法的存储器旨在包括但不限于这些和任意其它适合类型的存储器。
本公开的至少一个实施例还提供一种电子装置,包括本公开至少一实施例提供的数据处理装置。在一个实施例中,该电子装置例如是中央处理器,该处理器例如是单核或多核处理器。在一个实施例中,该电子装置为计算机***,该计算机***包括一个或多个处理器,
图10示出了根据本公开实施例的电子装置1000的示意图。如图10所示,根据本公开实施例的电子装置1000可以包括数据处理装置800。
本公开至少一实施例提供一种计算机可读存储介质,用于非瞬时性地存储计算机可执行指令,该计算机可执行指令在被处理器执行时实现本公开至少一实施例提供的数据处理方法。
类似地,本公开实施例中的计算机可读存储介质可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。应注意,本文描述的方法的存储器旨在包括但不限于这些和任意其它适合类型的存储器。
本公开的实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行根据本公开实施例的数据处理方法。
上述数据处理装置、电子装置以及存储介质的技术效果与图5所示的数据处理方法的技术效果相同,均可以用于提升处理器的性能,在此不再赘述。
对于本公开,还有以下几点需要说明:
(1)本公开实施例附图只涉及到与本公开实施例涉及到的结构,其他结构可参考通常设计。
(2)在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合以得到新的实施例。
以上所述仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,本公开的保护范围应以所述权利要求的保护范围为准。

Claims (19)

1.一种数据处理方法,用于计算机***,所述计算机***包括分别用于多个处理器的多个私有缓存和共享缓存,所述数据处理方法包括:
将所述共享缓存中预定被逐出的缓存块尝试预取到所述多个私有缓存中可以接受所述缓存块的目标私有缓存中。
2.根据权利要求1所述的数据处理方法,其中,将所述共享缓存中预定被逐出的缓存块尝试预取到所述多个私有缓存中可以接受所述缓存块的目标私有缓存中,包括:
所述共享缓存发起对于所述目标私有缓存的被动预取请求;
所述目标私有缓存处理所述被动预取请求,并且向所述共享缓存发送预取操作请求。
3.根据权利要求2所述的数据处理方法,其中,将所述共享缓存中预定被逐出的缓存块尝试预取到所述多个私有缓存中可以接受所述缓存块的目标私有缓存中,还包括:
在所述共享缓存发起对于所述目标私有缓存的被动预取请求之前,判断所述多个缓存中是否有可以接受所述缓存块的所述目标私有缓存。
4.根据权利要求3所述的数据处理方法,其中,判断所述多个缓存中是否有可以接受所述缓存块的所述目标私有缓存,包括:
在所述共享缓存产生逐出操作时,基于所述共享缓存对应的目录的信息,通过所述共享缓存的逐出队列发起读取所述共享缓存对应的所述目录中对应的索引,判断所述目标私有缓存在所述索引中是否有空闲路来接收所述缓存块。
5.根据权利要求4所述的数据处理方法,其中,判断所述目标私有缓存在所述索引中是否有空闲路来接收所述缓存块,包括:
将所述空闲路与被动预取阈值进行比较,
在所述空闲路的个数大于所述被动预取阈值的情形,确定进行所述被动预取操作,
在所述空闲路的个数小于所述被动预取阈值的情形,确定不进行所述被动预取操作,由所述共享缓存将所述缓存块写回到主存中。
6.根据权利要求5所述的数据处理方法,其中,所述被动预取阈值为所述目标私有缓存的路的个数的一半。
7.根据权利要求2所述的数据处理方法,其中,所述共享缓存发起对于所述目标私有缓存的被动预取请求,包括:
响应于存在所述目标私有缓存,所述共享缓存判断是否向所述目标私有缓存发送所述被动预取请求。
8.根据权利要求7所述的数据处理方法,其中,所述共享缓存判断是否向所述目标私有缓存发起所述被动预取请求,包括:
所述共享缓存判断是否有足够的硬件资源将所述被动预取请求发送给所述目标私有缓存,
在有足够的硬件资源的情形,所述共享缓存向所述目标私有缓存发起所述被动预取请求,或者
在没有足够的硬件资源的情形,所述共享缓存放弃发起所述被动预取请求。
9.根据权利要求8所述的数据处理方法,其中,
所述共享缓存判断是否有足够的硬件资源将所述被动预取请求发送给所述目标私有缓存,包括:
所述共享缓存通过逐出队列产生所述被动预取请求并将所述被动预取请求发送到探测队列中,由所述探测队列判断所述共享缓存是否有足够的硬件资源将所述被动预取请求发送给所述目标私有缓存;
所述共享缓存向所述目标私有缓存发起所述被动预取请求,包括:
所述探测队列将所述被动预取请求发送给所述目标私有缓存,并等待所述目标私有缓存反馈是否接受所述被动预取请求;
所述共享缓存放弃发起所述被动预取请求,包括:
所述探测队列向所述逐出队列返回拒绝信息,所述逐出队列会放弃所述被动预取操作,将所述缓存块写回到主存中,并且释放占用的硬件资源。
10.根据权利要求2所述的数据处理方法,其中,所述目标私有缓存处理所述被动预取请求,并且向所述共享缓存发送所述预取操作请求,包括:
所述目标私有缓存针对来自所述共享缓存的所述被动预取请求,判断是否响应所述被动预取操作,并且响应于响应所述被动预取操作,向所述共享缓存发送所述预取操作请求。
11.根据权利要求10所述的数据处理方法,其中,所述目标私有缓存针对来自所述共享缓存的所述被动预取请求,判断是否响应所述被动预取操作,包括:
所述目标私有缓存判断是否接受来自所述共享缓存的所述被动预取请求,
在接受来自所述共享缓存的所述被动预取请求的情形,所述目标私有缓存响应所述被动预取操作,或者
在不接受来自所述共享缓存的所述被动预取请求的情形,所述目标私有缓存放弃响应所述被动预取操作。
12.根据权利要求11所述的数据处理方法,其中,
所述目标私有缓存判断是否接受来自所述共享缓存的所述被动预取请求,包括:
所述目标私有缓存将所述被动预取请求存储到被动预取先入先出队列中,进行流水线冲突检测和硬件资源检测,判断是否接受所述被动预取请求;
在不接受来自所述共享缓存的所述被动预取请求的情形,所述目标私有缓存放弃响应所述被动预取操作,包括:
响应于当前的流水线忙或没有足够的硬件资源,所述目标私有缓存向所述共享缓存发送拒绝信息,逐出队列基于所述拒绝信息,将所述缓存块写回到主存中,并且所述目标私有缓存和所述共享缓存释放占用的硬件资源;
在接受来自所述共享缓存的所述被动预取请求的情形,所述目标私有缓存响应所述被动预取操作,包括:
响应于满足发起所述被动预取操作的条件,所述目标私有缓存向所述共享缓存发送接受信息,所述逐出队列基于所述接受信息释放资源,逐出数据缓冲器继续保存所述缓存块,并且等待所述目标私有缓存读取所述缓存块。
13.根据权利要求2所述的数据处理方法,其中,将所述共享缓存中预定被逐出的缓存块尝试预取到所述多个私有缓存中可以接受所述缓存块的目标私有缓存中,还包括:
在所述目标私有缓存处理所述被动预取请求,并且向所述共享缓存发送预取操作请求之后,所述共享缓存针对来自所述目标私有缓存的所述预取操作请求,判断是否将所述缓存块发送给所述目标私有缓存。
14.根据权利要求13所述的数据处理方法,其中,所述共享缓存针对来自所述目标私有缓存的所述预取操作请求,判断是否将所述缓存块发送给所述目标私有缓存,包括:
所述共享缓存判断是否针对所述缓存块触发超时机制,
在针对所述缓存块触发所述超时机制并且所述缓存块已经写回到主存中的情形,所述共享缓存不将所述缓存块发送给所述目标私有缓存,或者
在针对所述缓存块没有触发所述超时机制的情形,所述共享缓存将所述缓存块发送给所述目标私有缓存。
15.根据权利要求14所述的数据处理方法,其中,
所述共享缓存判断是否针对所述缓存块触发超时机制,包括:
所述共享缓存将来自所述目标私有缓存的所述预取操作请求发送到逐出队列中,所述逐出队列判断是否针对所述缓存块触发所述超时机制;
所述共享缓存不将所述缓存块发送给所述目标私有缓存,包括:
所述逐出队列对所述预取操作请求返回失败信息,所述目标私有缓存接收到所述失败信息后,释放占用的硬件资源;
所述共享缓存将所述缓存块发送给所述目标私有缓存,包括:
将逐出数据缓冲器中的所述缓存块通过数据旁路返回给所述目标私有缓存,所述目标私有缓存接收到所述缓存块后,将所述缓存块发送到所述目标私有缓存的存储单元中,并且所述目标私有缓存和所述共享缓存均释放占用的硬件资源。
16.一种数据处理装置,用于计算机***包括的共享缓存,所述计算机***还包括用于多个处理器的多个私有缓存,数据处理装置包括:
被动预取操作单元,配置为将所述共享缓存中预定被逐出的缓存块尝试预取到所述多个私有缓存中可以接受所述缓存块的目标私有缓存中。
17.一种数据处理装置,包括:
处理器;以及
存储器,存储有计算机可执行指令,
其中,所述计算机可执行指令在被所述处理器执行时实现根据权利要求1-15中任一项所述的数据处理方法。
18.一种电子装置,包括权利要求16所述的数据处理装置。
19.一种计算机可读存储介质,用于非瞬时性地存储计算机可执行指令,
其中,所述计算机可执行指令在被处理器执行时实现根据权利要求1-15中任一项所述的数据处理方法。
CN202111478651.8A 2021-12-06 2021-12-06 数据处理方法及装置、电子装置和存储介质 Pending CN114217861A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111478651.8A CN114217861A (zh) 2021-12-06 2021-12-06 数据处理方法及装置、电子装置和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111478651.8A CN114217861A (zh) 2021-12-06 2021-12-06 数据处理方法及装置、电子装置和存储介质

Publications (1)

Publication Number Publication Date
CN114217861A true CN114217861A (zh) 2022-03-22

Family

ID=80699878

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111478651.8A Pending CN114217861A (zh) 2021-12-06 2021-12-06 数据处理方法及装置、电子装置和存储介质

Country Status (1)

Country Link
CN (1) CN114217861A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115982091A (zh) * 2023-03-21 2023-04-18 深圳云豹智能有限公司 基于rdma引擎的数据处理方法与***、介质、设备
CN116010109A (zh) * 2023-02-23 2023-04-25 摩尔线程智能科技(北京)有限责任公司 缓存资源分配方法、装置、电子设备和存储介质
CN117435381A (zh) * 2023-11-02 2024-01-23 海光云芯集成电路设计(上海)有限公司 用于缓存的检测和填充方法及装置、电子设备与存储介质

Citations (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080040555A1 (en) * 2006-08-14 2008-02-14 Ravishankar Iyer Selectively inclusive cache architecture
US20100100683A1 (en) * 2008-10-22 2010-04-22 International Business Machines Corporation Victim Cache Prefetching
US20130254488A1 (en) * 2012-03-20 2013-09-26 Stefanos Kaxiras System and method for simplifying cache coherence using multiple write policies
CN104252392A (zh) * 2013-06-28 2014-12-31 华为技术有限公司 一种访问数据缓存的方法和处理器
CN104981786A (zh) * 2013-03-05 2015-10-14 国际商业机器公司 在多核芯片中为母核预取
CN105095109A (zh) * 2014-05-21 2015-11-25 华为技术有限公司 缓存访问方法、缓存访问路由器和计算机***
CN107229593A (zh) * 2016-03-25 2017-10-03 华为技术有限公司 多片多核处理器的缓存一致性操作方法及多片多核处理器
US20170371786A1 (en) * 2016-06-23 2017-12-28 Advanced Micro Devices, Inc. Shadow tag memory to monitor state of cachelines at different cache level
US20190102303A1 (en) * 2017-09-29 2019-04-04 Ren Wang Software-transparent hardware predictor for core-to-core data transfer optimization
US20190196968A1 (en) * 2017-12-21 2019-06-27 Intel Corporation Supporting adaptive shared cache management
CN112231243A (zh) * 2020-10-29 2021-01-15 海光信息技术股份有限公司 一种数据处理方法、处理器及电子设备
CN112612727A (zh) * 2020-12-08 2021-04-06 海光信息技术股份有限公司 一种高速缓存行替换方法、装置及电子设备
CN113342709A (zh) * 2021-06-04 2021-09-03 海光信息技术股份有限公司 在多处理器***中访问数据的方法和多处理器***
CN113434440A (zh) * 2021-08-27 2021-09-24 广东省新一代通信与网络创新研究院 一种减少存储器访问延迟方法及***
CN113760787A (zh) * 2021-09-18 2021-12-07 成都海光微电子技术有限公司 多级高速缓存数据推送***、方法、设备和计算机介质

Patent Citations (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080040555A1 (en) * 2006-08-14 2008-02-14 Ravishankar Iyer Selectively inclusive cache architecture
US20100100683A1 (en) * 2008-10-22 2010-04-22 International Business Machines Corporation Victim Cache Prefetching
US20130254488A1 (en) * 2012-03-20 2013-09-26 Stefanos Kaxiras System and method for simplifying cache coherence using multiple write policies
CN104981786A (zh) * 2013-03-05 2015-10-14 国际商业机器公司 在多核芯片中为母核预取
CN104252392A (zh) * 2013-06-28 2014-12-31 华为技术有限公司 一种访问数据缓存的方法和处理器
CN105095109A (zh) * 2014-05-21 2015-11-25 华为技术有限公司 缓存访问方法、缓存访问路由器和计算机***
CN107229593A (zh) * 2016-03-25 2017-10-03 华为技术有限公司 多片多核处理器的缓存一致性操作方法及多片多核处理器
US20170371786A1 (en) * 2016-06-23 2017-12-28 Advanced Micro Devices, Inc. Shadow tag memory to monitor state of cachelines at different cache level
US20190102303A1 (en) * 2017-09-29 2019-04-04 Ren Wang Software-transparent hardware predictor for core-to-core data transfer optimization
US20190196968A1 (en) * 2017-12-21 2019-06-27 Intel Corporation Supporting adaptive shared cache management
CN112231243A (zh) * 2020-10-29 2021-01-15 海光信息技术股份有限公司 一种数据处理方法、处理器及电子设备
CN112612727A (zh) * 2020-12-08 2021-04-06 海光信息技术股份有限公司 一种高速缓存行替换方法、装置及电子设备
CN113342709A (zh) * 2021-06-04 2021-09-03 海光信息技术股份有限公司 在多处理器***中访问数据的方法和多处理器***
CN113434440A (zh) * 2021-08-27 2021-09-24 广东省新一代通信与网络创新研究院 一种减少存储器访问延迟方法及***
CN113760787A (zh) * 2021-09-18 2021-12-07 成都海光微电子技术有限公司 多级高速缓存数据推送***、方法、设备和计算机介质

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
SUDHANSHU SHUKLA 等: "Sharing-Aware Efficient Private Caching in Many-Core Server Processors", 《2017 IEEE INTERNATIONAL CONFERENCE ON COMPUTER DESIGN (ICCD)》 *
VISHAL GUPTA 等: "Seclusive Cache Hierarchy for Mitigating Cross-Core Cache and Coherence Directory Attacks", 《2021 DESIGN, AUTOMATION & TEST IN EUROPE CONFERENCE & EXHIBITION (DATE)》 *
丁晨 等: "多核程序交互理论及应用", 《计算机工程与科学》 *
周本海等: "基于多核处理器的动态共享缓存分配算法", 《东北大学学报(自然科学版)》 *
王磊等: "片上多核处理器共享资源分配与调度策略研究综述", 《计算机研究与发展》 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116010109A (zh) * 2023-02-23 2023-04-25 摩尔线程智能科技(北京)有限责任公司 缓存资源分配方法、装置、电子设备和存储介质
CN115982091A (zh) * 2023-03-21 2023-04-18 深圳云豹智能有限公司 基于rdma引擎的数据处理方法与***、介质、设备
CN115982091B (zh) * 2023-03-21 2023-06-23 深圳云豹智能有限公司 基于rdma引擎的数据处理方法与***、介质、设备
CN117435381A (zh) * 2023-11-02 2024-01-23 海光云芯集成电路设计(上海)有限公司 用于缓存的检测和填充方法及装置、电子设备与存储介质

Similar Documents

Publication Publication Date Title
US10740261B2 (en) System and method for early data pipeline lookup in large cache design
US8949544B2 (en) Bypassing a cache when handling memory requests
US8782348B2 (en) Microprocessor cache line evict array
US7281092B2 (en) System and method of managing cache hierarchies with adaptive mechanisms
JP7340326B2 (ja) メンテナンス動作の実行
CN114217861A (zh) 数据处理方法及装置、电子装置和存储介质
EP0470734A1 (en) Cache memory management system
US10725923B1 (en) Cache access detection and prediction
US20070079070A1 (en) Cache controller
JP2000250813A (ja) I/oキャッシュ・メモリにおけるデータ管理方法
EP1654660A1 (en) A method of data caching
WO2024066195A1 (zh) 缓存管理方法及装置、缓存装置、电子装置和介质
EP2866148A1 (en) Storage system having tag storage device with multiple tag entries associated with same data storage line for data recycling and related tag storage device
KR102482516B1 (ko) 메모리 어드레스 변환
JPH11272552A (ja) ブリッジ方法、バスブリッジ及びマルチプロセッサシステム
US20110167223A1 (en) Buffer memory device, memory system, and data reading method
CN113760787A (zh) 多级高速缓存数据推送***、方法、设备和计算机介质
US10831673B2 (en) Memory address translation
JP2004199677A (ja) キャッシュを動作させるためのシステム及び方法
US20020099912A1 (en) Memory system
US9442856B2 (en) Data processing apparatus and method for handling performance of a cache maintenance operation
US20060224834A1 (en) Write-back cache methods and apparatus
JP4295815B2 (ja) マルチプロセッサシステムおよびマルチプロセッサシステムの動作方法
JP7311959B2 (ja) 複数のデータ・タイプのためのデータ・ストレージ
JPH1055309A (ja) 階層キャッシュメモリ装置

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