一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

探听过滤器、处理单元、计算设备和相关方法与流程

2022-11-19 07:08:39 来源:中国专利 TAG:


1.本技术实施例涉及芯片技术领域,尤其涉及一种探听过滤器、处理单元、计算设备和相关方法。


背景技术:

2.在包括多个处理器核的处理单元中,缓存包括私有缓存和共享缓存,私有缓存属于特定的处理器核,共享缓存属于多个处理器核。处理器核从缓存中查询数据时,首先从其私有缓存中查询所需数据,如果查询不到则依次向下一级缓存查询。如果所需数据存储在其他处理器核的私有缓存中,则需要在其他处理器核的私有缓存中查询所需数据,这种处理方式称为探听(snoop)。探听其他处理器核的私有缓存,会降低其他处理器核的运行效率。
3.目前,设置用于存储私有缓存中所存放数据的相关信息的探听过滤器,通过查询探听过滤器可以确定未存放所需数据的私有缓存,从而避免探听未存放所需数据的私有缓存。
4.然而,为了保证探听过滤器能够准确反映私有缓存所存放的数据,每当私有缓存主动删除一条缓存行时,都需要向探听过滤器发送删除请求,将探听过滤器中被删除缓存行的相关信息删除,即使被删除的缓存行与内存中的数据相同,也需要向探听过滤器发送删除请求,这将占据处理器核内与处理器核外的通信带宽,影响处理单元的性能。


技术实现要素:

5.有鉴于此,本技术实施例提供一种探听过滤器、处理单元、计算设备和相关方法,以至少解决或缓解上述问题。
6.根据本技术实施例的第一方面,提供了一种探听过滤器,包括:接收单元,用于接收第一缓存行被填充到私有缓存中后所述私有缓存发送的坐标信息,其中,所述坐标信息用于指示所述第一缓存行在所述私有缓存中的目标填充位置;探听单元,用于在根据所述坐标信息确定所述目标填充位置对应的映射表项中存储有第二缓存行的标识信息时,将所述第二缓存行的标识信息从所述目标填充位置对应的映射表项转移到牺牲表项,并在所述目标填充位置对应的映射表项中存储所述第一缓存行的标识信息,其中,不同的缓存行对应不同的标识信息。
7.根据本技术实施例的第二方面,提供了一种处理单元,包括:根据上述第一方面所述的探听过滤器;至少两个处理器核,用于查询所述探听过滤器,确定所需数据所在的私有缓存。
8.根据本技术实施例的第三方面,提供了一种计算设备,包括:上述第二方面所述的处理单元;存储器,与所述处理单元耦接,存储所述处理单元所需的数据。
9.根据本技术实施例的第四方面,提供了一种探听过滤方法,包括:接收第一缓存行被填充到私有缓存中后所述私有缓存发送的坐标信息,其中,所述坐标信息用于指示所述
第一缓存行在所述私有缓存中的目标填充位置;在根据所述坐标信息确定所述目标填充位置对应的映射表项中存储有第二缓存行的标识信息时,将所述第二缓存行的标识信息从所述目标填充位置对应的映射表项转移到牺牲表项,并在所述目标填充位置对应的映射表项中存储所述第一缓存行的标识信息,其中,不同的缓存行对应不同的标识信息。
10.根据本技术实施例提供的探听过滤方案,私有缓存中的填充位置与探听过滤器中的映射表项一一对应,在第一缓存行被填充到目标填充位置后,如果目标填充位置对应的映射表项中存储有第二缓存行的标识信息,探听单元将第二缓存行的标识信息转移到牺牲表项,并将第一缓存行的标识信息存储到目标填充位置对应的映射表项。由于填充位置与映射表项一一对应,在第二缓存行不需要进行数据回写时,私有缓存仅需将目标填充位置的坐标信息发送给探听过滤器,探听过滤器将第一缓存行的标识信息存储到目标填充位置对应的映射表项,而将第二缓存行的标识信息转移到牺牲表项中,因此对于无需数据回写的缓存行,私有缓存无需向探听过滤器发送删除请求,即可保证根据探听过滤器确定哪些私有缓存不可能存放所需的数据,从而减少对其他处理器核的私有缓存进行探听的次数,进而可以减小发送删除请求对处理器核内与处理器核外的通信带宽的占据,从而保证处理单元的性能。
附图说明
11.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术实施例中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
12.图1是本技术一个实施例所应用的计算设备的示意图;
13.图2是本技术一个实施例的处理单元的示意图;
14.图3是本技术一个实施例的探听过滤器的示意图;
15.图4是本技术一个实施例的私有缓存和探听过滤器的示意图;
16.图5是本技术一个实施例的探听过滤方法的流程图。
具体实施方式
17.以下基于实施例对本技术进行描述,但是本技术并不仅仅限于这些实施例。在下文对本技术的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本技术。为了避免混淆本技术的实质,公知的方法、过程、流程没有详细叙述。另外附图不一定是按比例绘制的。
18.首先,对本技术实施例进行描述的过程中出现的部分名词或术语适用于如下解释。
19.探听:在包括多个处理器核的处理单元中,如果一个处理器核所需的数据存放在其他处理器核的私有缓存中,则该处理器核需要去其他处理器核的私有缓存中查询所需数据,该过程称为探听(snoop)。
20.探听过滤器:由于探听其他处理器核的私有缓存会降低其他处理器核的运行效率,为了减少探听的次数,在下一级缓存的附近存放上一级缓存的查找表,该查找表中存储
有相应私有缓存中所存放数据的相关信息,通过查找表可以确定相应私有缓存中是否存储有所需数据,该查找表称为探听过滤器(snoopfilter)。
21.缓存行:处理器核将数据从主存读入缓冲存储器时,需要将所需数据及其附近的一部分数据都读取进来,每次读取的一组数据叫做缓存行(cacheline),每一级缓存中可以存放很多缓存行,每一级缓存均以缓存行为单位进行数据存储。
22.计算设备
23.图1示出一个计算设备10的示意性框图。计算设备10可以基于各种型号的处理单元构建,并由windows操作系统、unix操作系统、linux操作系统等任一操作系统驱动。此外,计算设备10可以在pc机、台式机、笔记本、服务器和移动通信装置等硬件和/或软件中实施。
24.如图1所示,计算设备10可以包括一个或多个处理单元12,以及存储器14。计算设备10中的存储器14可以作为主存储器(简称为主存或内存),用于存储由数据信号表示的指令信息和/或数据信息,例如,存储器14可以存放处理单元12提供的数据(例如为预算结果),也可以用于实现处理单元12与外部存储设备16(或成为辅助存储器或外部存储器)之间的数据交换。
25.在一些情形下,处理单元12需要通过总线11访问存储器14,以获取存储器14中的数据或对存储器14中的数据进行修改。由于存储器14的访问速度较慢,为了缓解处理单元12与存储器14之间的速度差距,计算设备10还包括与总线11通信连接的高速缓冲存储器18,高速缓冲存储器18用于对存储器14中的一些可能会被反复调用的程序数据或者报文数据进行缓存。高速缓冲存储器18可以由诸如静态随机存储器(static random access memory,sram)等类型的存储装置实现。高速缓冲存储器18可以为多级结构,例如具有一级缓存(l1cache)、二级缓存(l2cache)和三级缓存(l3cache)的三级缓存结构,高速缓冲存储器18也可以是三级以上的缓存结构或其他类型缓存结构。在一些实施例中,高速缓冲存储器18的一部分(例如一级缓存,或一级缓存和二级缓存两者)可以集成在处理单元12内部或与处理单元12集成在同一片上系统中。
26.基于此,处理单元12可以包括指令执行单元121、以及内存管理单元122等部分。指令执行单元121在执行一些需要修改内存的指令时发起写访问请求,该写访问请求指定了需要写入内存中的写入数据和相应的物理地址。内存管理单元122用于将这些指令指定的虚拟地址转译为该虚拟地址映射的物理地址,写访问请求指定的物理地址与相应指令指定的物理地址可以一致。
27.存储器14和高速缓冲存储器18之间的信息交互可以按照数据块来组织。在一些实施例中,高速缓冲存储器18和存储器14可以按照相同的空间尺寸被划分成数据块,数据块可以作为高速缓冲存储器18和存储器14之间的数据交换的最小单位(包括预设长度的一个或多个数据)。为了表述简洁清晰,下面将高速缓冲存储器18中的各数据块简称为缓存块(或者可以称为cacheline或高速缓存线),且不同的缓存块具有不同的缓存块地址。将存储器14中的各个数据块简称为内存块,且不同的内存块具有不同的内存块地址。缓存块地址和/或内存块地址可以包括用于定位数据块的物理地址标签。
28.由于受到空间和资源的限制,高速缓冲存储器18无法对存储器14中的全部内容进行缓存,即高速缓冲存储器18的存储容量通常小于存储器14,高速缓冲存储器18提供的各个缓存块地址无法对应存储器14提供的全部内存块地址。处理单元12在需要访问内存时,
首先经总线11访问高速缓冲存储器18,以判断所要访问的内容是否已被存储于高速缓冲存储器18中。如果所要访问的内容已被存储于高速缓冲存储器18中,则高速缓冲存储器18命中,此时处理单元12直接从高速缓冲存储器18中调用所要访问的内容。如果所要访问的内容未被存储于高速缓冲存储器18中,则高速缓冲存储器18和处理单元12需要经总线11访问存储器14,以在存储器14中查找相应的信息。由于高速缓冲存储器18的存取速率非常快,因此在高速缓冲存储器18命中时,处理单元12的效率可以显著提高,进而也使得整个计算设备10的性能和效率得以提升。
29.此外,计算设备10还可以包括存储设备16、显示设备、音频设备、鼠标/键盘等输入/输出设备。存储设备16可以是通过相应接口与总线11耦合的硬盘、光盘以及闪存等用于信息存取的设备。显示设备可以经相应的显卡与总线11耦合,用于根据总线11提供的显示信号进行显示。
30.计算设备10还可以包括通信设备17,进而计算设备10可以通过各种方式与网络或其他设备进行通信。通信设备17可以包括一种或多种通信模块,通信设备17可以包括适用于特定的无线通信协议的无线通信模块。例如,通信设备17可以包括wlan模块,用于实现符合电气和电子工程协会(ieee)制定的802.11标准的wifi通信。通信设备17可以包括wwan模块,用于实现符合蜂窝或其他无线广域协议的无线广域通信。通信设备17还可以包括蓝牙模块等采用其他协议的通信模块,或其他自定义类型的通信模块。通信设备17还可以是用于串行传输数据的端口。
31.需要说明的是,不同的计算设备10根据主板、操作系统和指令集架构的不同,计算设备10的结构可能有所变化。例如,目前很多计算设备设置有连接在总线11和各个输入/输出设备之间的输入/输出控制中心,且该输入/输出控制中心可以集成于处理单元12之内或独立于处理单元12。
32.处理单元
33.图2是本技术一个实施例的处理单元12的示意性框图。如图2所示,每个处理单元12可以包括用于处理指令的多个处理器核120,指令的处理和执行是可以被用户(例如通过应用程序)和/或系统平台控制的。每个处理器核120可以用于处理特定的指令集,指令集可以支持复杂指令集计算(complex instruction set computing,cisc)、精简指令集计算(reduced instruction set computing,risc)或基于超长指令字(very long instruction word,vliw)的计算,特别需要说明的是,处理器核120适用于处理risc-v指令集。不同的处理器核120可以各自处理不同或相同的指令集。处理器核120还可以包括其他处理模块,比如数字信号处理器(digital signal processor,dsp)等。作为一种示例,图2中示出了处理器核1至处理器核m,m是正整数。
34.图1示出的高速缓冲存储器18可以被全部或部分集成于处理单元12中。根据架构的不同,高速缓冲存储器18可以是位于各个处理器核120之内和/或之外的单个或多级的内部高速缓冲存储器(如图2示出的3级高速缓冲存储器l1至l3,图2中统一标识为18),也可以包括面向指令和指令高速缓存和面向数据的数据高速缓存。处理单元12中的各处理器核120可以共享至少一部分的高速缓存存储器,例如,处理器核1至m可以共用第三级高速缓冲存储器l3。处理单元12中每个处理器核120具有各自的私有缓存,例如,每个处理器核120均具有第一级高速缓冲存储器l1和第二级高速缓冲存储器l2。处理单元12还可以包括外部高
速缓存(未示出),其他高速缓存结构也可以作为处理单元12的外部高速缓存。
35.如图2所示,处理单元12可以包括寄存器堆(register file)126,寄存器堆126可以包括用于存储不同类型的数据和/或指令的多个寄存器,这些寄存器可以是不同类型,比如寄存器堆126可以包括整数寄存器、浮点寄存器、状态寄存器、指令寄存器和指针寄存器等。寄存器堆126中的寄存器可以选用通用寄存器来实现,也可以根据处理单元12的实际需求采用特定的设计。
36.处理单元12可以包括内存管理单元(memory management unit,mmu)122,用于实现虚拟地址到物理地址的转译。内存管理单元122中缓存有页表中的一部分表项,内存管理单元122也可以从内存中获取未被缓存的表项。每个处理器核120中可以设置一个或多个内存管理单元122,不同处理器核120中的内存管理单元122可以与位于其他处理单元或处理器核中的内存管理单元122实现同步,使得每个处理单元或处理器核可以共享统一的虚拟存储系统。
37.处理单元12用于执行指令序列(即程序)。处理单元12执行每个指令的过程包括:从存放指令的存储器中取出指令,对取出的指令进行译码,执行译码后的指令,及保持指令执行结果等步骤,如此循环,直到执行完指令序列中的全部指令或遇到停机指令。
38.为了实现上述过程,处理单元12可以包括取指令单元124、指令译码单元125、指令发射单元(未示出)、指令执行单元121和退休单元123等。
39.取指令单元124作为处理单元12的启动引擎,用于将指令从存储器14中搬运到指令寄存器(可以是图2示出的寄存器堆126中的一个用于存放指令的寄存器)中,并接收下一个取指地址或根据取指算法计算获得下一个取指地址,取指算法可以是根据指令长度递增地址或递减地址。
40.取出指令后,处理单元12进入指令译码阶段,指令译码单元125按照预定的指令格式,对取回的指令进行解码,以获得取回的指令所需的操作数获取信息,从而为指令执行单元121的操作做准备。操作数获取信息可以包括指向立即数、寄存器或其他能够提供源操作数的软件/硬件。
41.指令发射单元通常存在于高性能的处理单元12中,位于指令译码单元125与指令执行单元121之间,用于指令的调度和控制,以将各个指令高效地分配至不同的指令执行单元121,使得多个指令的并行操作成为可能。指令经取指、译码并被调度到相应的指令执行单元121之后,相应的指令执行单元121开始执行该指令,即执行该指令所指示的操作,现相应的功能。
42.退休单元123(或称为指令引退单元或指令写回单元)主要用于将指令执行单元121产生的执行结果写回到相应的存储位置(例如为处理单元12内部的寄存器),以使后续指令能够从该存储位置快速获取相应的执行结果。
43.对于不同类别的指令,可以在处理单元12中相应地设置不同的指令执行单元121。指令执行单元121可以是运算单元(例如包含算术逻辑单元、整形处理单元、矢量运算单元等,用于根据操作数进行运算并输出运算结果)、内存执行单元(例如用于根据指令访问内存以读取内存中的数据或向内存写入指定的数据等)以及协处理器等。在处理单元12中,各个指令执行单元121可以并行运行并输出相应的执行结果。
44.指令执行单元121在执行某类指令(例如访存指令)时,需要访问存储器14,以获取
存储器14中存储的信息或提供需要写入存储器14中的数据。需要说明的是,用于执行访存指令的指令执行单元121也可以简称为内存执行单元,该内存执行单元可以为加载存储单元(load store unit,lsu)和/或其他用于内存访问的单元。
45.访存指令被取指令单元124获取之后,指令译码单元125可以对访存指令进行译码处理,使得访存指令的源操作数可被获取。译码处理后的访存指令被提供至相应的指令执行单元121,该指令执行单元121可以对访存指令的源操作数进行相应的运算(例如由算术逻辑单元对存储于寄存器中的源操作数进行运算)以获得访存指令对应的地址信息,并根据该地址信息发起相应的请求,例如地址转译请求、写访问请求等。
46.访存指令的源操作数通常包括地址操作数,指令执行单元121对该地址操作数进行运算以获得访存指令对应的虚拟地址或物理地址。当内存管理单元122被禁用时,指令执行单元121可以直接通过逻辑运算获得访存指令的物理地址。当内存管理单元121被启用时,相应的指令执行单元121根据访存指令对应的虚拟地址发起地址转译请求,该地址转译请求包括与访存指令的地址操作数对应的虚拟地址;内存管理单元122响应地址转译请求,并根据与该虚拟地址匹配的表项将地址转译请求中的虚拟地址转换为物理地址,使得指令执行单元121可以根据转译后的物理地址访问高速缓冲存储器18和/或存储器14。
47.根据功能的不同,访存指令可包括加载指令和存储指令。加载指令的执行过程通常不需要对存储器14或高速缓冲存储器18中的信息进行修改,指令执行单元121只需要根据加载指令的地址操作数读取存储于存储器14、高速缓冲存储器18或外部的存储设备中的数据。不同于加载指令,存储指令的源操作数不仅包括地址操作数,还包括数据信息,存储指令的执行过程通常需要对存储器14和/或高速缓冲存储器18中的信息进行修改。存储指令的数据信息可以指向写入数据,该写入数据的来源可以是运算指令、加载指令等指令的执行结果,也可以是处理单元12中的寄存器或其他存储单元提供的数据,还可以是立即数。
48.如图2所示,处理单元12包括探听过滤器15,探听过滤器15设置于共享缓存l3附近,探听过滤器15的数量可以是一个或多个,比如,不同的处理器核120可以对应不同的探听过滤器15,也可以多个处理器核120对应同一个探听过滤器15。探听过滤器15中存储有相对应的处理器核120的私有缓存(l1和l2)中所存放数据的相关信息,其他处理器核120通过查询探听过滤器15,可以确定探听过滤器15所对应处理器核120的私有缓存中是否存放有所需数据,比如,处理器核2通过查询处理器核1对应的探听过滤器15,可以确定处理器核1对应的私有缓存中是否存放有处理器核2所需的数据。
49.探听过滤器15存储相对应处理器核120的私有缓存所存放数据的相关信息,当私有缓存所存放数据发生改变时,探听过滤器15需要更新所存储的相关信息,使得所存储的相关信息与相对应私有缓存所存放数据相对应,以使其他处理器核120通过查询探听过滤器15可以确定相应私有缓存中是否存储有所需数据。
50.本技术实施例主要着眼于探听过滤器15更新所存储相关信息的过程,在后文中会对探听过滤器15更新所存储相关信息的过程进行详细描述。
51.探听过滤器
52.多核处理单元通常包括多级缓存,顶层缓存容量较小但访问速度较快,底层缓存容量较大但访问速度较慢。顶层缓存属于某个处理器核私有,底层缓存由多个处理器核共同占用,比如,一级缓存(l1cache)属于某一个处理器核私有,仅用于缓存该处理器核的数
据,二级缓存(l2 cache)由多个处理器核共同占用,用于缓存共用该二级缓存的多个处理器核的数据。当处理器核需要查询特定数据时,首先从其私有缓存中查询所需数据,如果查询不到所需数据,则依次向下一级缓存查询。如果所需数据存储在其他处理器核的私有缓存中,则需要对其他处理器核的私有缓存中查询所需数据。
53.目前,探听过滤器存储私有缓存所存放数据的相关信息,为了保证探听过滤器所存储的相关信息能够准确反映私有缓存所存放的数据,每当私有缓存主动删除一条缓存行时,都需要向探听过滤器发送删除请求,将监被删除缓存行的相关信息从探听过滤器中删除。当被删除的缓存行与内存中的数据相同,此时无需进行数据回写,但仍需要向探听过滤器发送删除请求,以将被删除缓存行的相关信息从探听过滤器中删除,保证探听过滤器中所存储相关信息与私有缓存中的缓存行一一对应。由于处理器核需要频繁向探听过滤器发送删除请求,这将占据处理器核内与处理器核外的通信带宽,影响处理单元的性能。
54.本技术实施例就是为了应对探听过滤器删除表项对核内与核外之间通信带宽占用较大的问题,它主要是通过探听过滤器15实现的。下面详细讨论探听过滤器15的内部结构和本技术实施例的实现过程。
55.图3是本技术一个实施例的探听过滤器的内部结构示意图。如图3所示,探听过滤器15包括接收单元151和探听单元152。在第一缓存行被填充到私有缓存中之后,私有缓存会向接收单元151发送坐标信息,该坐标信息可以指示第一缓存行在私有缓存中的目标填充位置。接收单元151接收到坐标信息后,探听单元152可以根据坐标信息判断目标填充位置对应的映射表项中是否存储有第二缓存行的标识信息,如果目标填充位置对应的映射表项中存储有第二缓存行的标识信息,则将第二缓存行的标识信息从目标填充位置对应的映射表项转移到牺牲表项,并在目标填充位置对应的映射表项中存储第一缓存行的标识信息,其中,不同的缓存行对应不同的标识信息。
56.探听过滤器15用于存储私有缓存中所填充缓冲行的标识信息,私有缓存可以是一个也可以是多个。不同的缓存行对应不同的标识信息,根据标识信息可以区别不同的缓存行,比如标识信息可以是缓存行在内存中的地址。
57.私有缓存包括多个用于填充缓存行的填充位置,探听过滤器15包括多个映射表项,探听过滤器15中的映射表项与私有缓存中的填充位置一一对应,映射表项用于存储相对应的填充位置中所填充缓存行的标识信息。比如,私有缓存包括n个填充位置,n为大于或等于2的正整数,则探听过滤器15包括n个映射表项,不同的填充位置与不同的映射表项相对应。探听过滤器15除了包括有多个映射表项外,还包括牺牲表项,牺牲表项也用于存储缓存行的标识信息,但牺牲表项不属于某一个填充位置,而是由多个填充位置共享。
58.私有缓存中的目标填充位置之前填充有第二缓存行,当第一缓存行被填充到目标填充位置时,私有缓存将目标填充位置的坐标信息发送给接收单元151,探听单元152根据接收单元151接收到的坐标信息,将目标填充位置对应的映射表项中存储的第二缓存行的标识信息转移到牺牲表项,并将第一缓存行的标识信息存储到目标填充位置对应的映射表项。如果第二缓存行不需要进行数据回写,第一缓存行被填充到目标填充位置后,第二缓存行被从私有缓存中挤出,第二缓存行的标识信息被存储在牺牲表项,同样保证了私有缓存中所存放的缓存行的标识信息均存储在探听过滤器15中。
59.在本技术实施例中,私有缓存中的填充位置与探听过滤器15中的映射表项一一对
应,在第一缓存行被填充到目标填充位置后,如果目标填充位置对应的映射表项中存储有第二缓存行的标识信息,探听单元152将第二缓存行的标识信息转移到牺牲表项,并将第一缓存行的标识信息存储到目标填充位置对应的映射表项。由于填充位置与映射表项一一对应,在第二缓存行不需要进行数据回写时,私有缓存仅需将目标填充位置的坐标信息发送给探听过滤器15,探听过滤器15将第一缓存行的标识信息存储到目标填充位置对应的映射表项,而将第二缓存行的标识信息转移到牺牲表项中,因此对于无需数据回写的缓存行,私有缓存无需向探听过滤器15发送删除请求,即可保证根据探听过滤器确定哪些私有缓存不可能存放所需的数据,从而减少对其他处理器核的私有缓存进行探听的次数,进而可以减小发送删除请求对处理器核内与处理器核外的通信带宽的占据,从而保证处理单元的性能。
60.在一种可能的实现方式中,探听单元152根据坐标信息确定目标填充位置对应的映射表项为空时,将第一缓存行的标识信息存储到目标填充位置对应的映射表项中。
61.由于私有缓存中的填充位置与探听过滤器15中的映射表项是一一对应的,如果目标填充位置对应的映射表项为空,说明在填充第一缓存行之前目标填充位置未被填充其他缓存行,或者在填充第一缓存行之前目标填充位置中填充的缓存行已被排除私有缓存。根据坐标信息确定目标填充位置对应的映射表为空时,探听单元152将第一缓存行的标识信息存储到目标填充位置对应的映射表项中,通过第一缓存行的标识信息指示私有缓存中存放中第一缓存行。
62.在本技术实施例中,在目标填充位置对应的映射表项为空时,探听单元152无需执行将标识信息转移到牺牲表项的步骤,直接将被填充到目标填充位置的第一缓存行的标识信息存储到目标填充位置对应的映射表项,进而其他处理器核查询探听过滤器15时,根据目标填充位置对应的映射表项中所存储的标识信息,可以确定探听过滤器15对应的私有缓存中存储有第一缓存行,保证处理器核能够快速的查询到所需数据。
63.在一种可能的实现方式中,探听过滤器15包括至少一个探听表项集合,每个探听表项集合包括一个牺牲表项和至少一个映射表项,每个探听表项集合与私有缓存中的一个填充位置集合相对应,每个填充位置集合包括至少一个填充位置,每个探听表项集合中映射表项的数量与相对应的填充位置集合中填充位置的数量相等,且在相对应的探听表项集合和填充位置集合中,不同的映射表项对应不同的填充位置。在根据坐标信息确定目标填充位置对应的映射表项中存储有第二缓存行的标识信息后,探听单元152确定目标填充位置对应的映射表项所属的探听表项集合,然后将第二缓存行的标识信息从目标填充位置对应的映射表项转移到该探听表项集合包括的牺牲表项中。
64.例如,私有缓存包括y个填充位置集合,每个填充位置集合包括x个填充位置,其中x和y均为大于或等于1的正整数。探听过滤器15包括y个探听表项集合,每个探听表项集合包括x个映射表项和1个牺牲表项。填充位置集合与探听表项集合一一对应,比如,填充位置集合0与探听表项集合0相对应,填充位置集合1与探听表项集合1相对应,填充位置集合y-1与探听表项集合y-1相对应。在相对应的填充位置集合和探听表项集合中,填充位置与映射表项一一对应,比如,填充位置0与映射表项0相对应,填充位置1与映射表项1相对应,填充位置x-1与映射表项x-1相对应。
65.将第一缓存行填充到填充位置集合0中的填充位置x-1后,探听单元152会将探听
表项集合0中映射表项x-1中存储的第二缓存行的标识信息,转移到探听表项集合0中的牺牲表项,并将第一缓存行的标识信息存储到探听表项集合0中映射表项x-1。
66.针对同一个缓存行,每次将该缓存行存放到私有缓存中时,需要将该缓存行填充到相同的填充位置集合中,但可以将该缓存行填充到该填充位置集合中不同的填充位置。比如,每次将缓存行l存放到私有缓存时,都将该缓存行l填充到填充位置集合1,上一次将该缓存行l填充到填充位置集合1包括的填充位置1,下一次可以将该缓存行l填充到填充位置集合1包括的填充位置0。
67.在本技术实施例中,将私有缓存包括的填充位置划分为多个填充位置集合,并将探听过滤器15包括的表项分别为多个探听表项集合,使得填充位置集合与探听表项集合一一对应,而且相对应填充位置集合与探听表项集合中的填充位置与映射表项一一对应,便于根据坐标信息确定与填充位置相对应的映射表项,提高探听过滤器15更新标识信息的效率。另外,每个探听表项集合还包括一个牺牲表项,同一个探听表项集合包括的各映射表项共享一个牺牲表项,用于存储转移的标识信息,而且同一个缓存行每次都被填充到同一个填充位置集合中,从而在其他处理器核在查询探听过滤器15时,仅需查询用于存储所需数据的填充位置集合对应的探听表项集合,便可以确定私有缓存中是否存放有其他处理器核所需的数据,无需遍历探听过滤器15所存储的全部标识信息,从而可以提高处理器核从其他处理器核的私有缓存中获取所需数据的效率。
68.在一种可能的实现方式中,每个填充位置集合对应的待完成的缓存行填充请求的数量小于或等于1,其中,缓冲行填充请求用于请求向相对应的填充位置集合包括的填充位置填充缓存行。
69.每个填充位置集合可以包括多个填充位置。针对每个填充位置集合,该填充位置集合对应的缓存行填充请求用于请求向该填充位置集合包括的填充位置中填充缓存行,该填充位置集合接收到缓存行填充请求后,响应于缓存行填充请求向相对应的填充位置填充缓存行。在一个缓存行被填充到一个填充位置之后,该填充位置之前存放的缓存行将被挤出私有缓存,如果该被挤出私有缓存的缓存行需要进行数据回写,在该缓存行被回写的过程中,该缓存行的标识信息将被存储在相应探听表项集合中的牺牲表项。
70.比如,在前述实施例中填充位置集合与探听表项集合对应关系及填充位置与映射表项对应关系的基础上,第二缓存行存放于填充位置集合1中的填充位置1,当私有缓存接收到缓存行填充请求,将第一缓存行填充到填充位置集合1中的填充位置1时,第二缓存行将被挤出私有缓存,第二缓存行的标识信息被从探听表项集合1中的映射表项1转移到探听表项集合1中的牺牲表项。如果第二缓存行与内存中的数据不同,则第二缓存行需要进行数据回写,在第二缓存行被回写的过程中,第二缓存行的标识信息被存储在探听表项集合1中的牺牲表项,保证探听过滤器15中所存储标识信息与私有缓存中缓存行的对应性。
71.在本技术实施例中,由于填充位置集合与探听表项集合一一对应,而每个探听表项集合包括一个牺牲表项,如果一个缓存行需要进行数据回写,该缓存行被回写的过程中,该缓存行的标识信息需要被存储在相应的牺牲表项,保证私有缓存中存放的缓存行在探听过滤器15中有相对应的标识信息,为了避免一个缓存行回写完成之前,其他缓存行的标识信息被转移到牺牲表项将该缓存行的标识信息覆盖,进而导致私有缓存中存放的缓存行在探听过滤器15中没有相对应标识信息的情况发生,针对每个填充位置集合,仅允许存在小
于或等于一个待完成的缓存行填充请求,从而保证私有缓存中存放的每个缓存行在探听过滤器15中均存储有相对应的标识信息,进而保证处理器核通过查询探听过滤器15查找所需数据的正确性。
72.在一种可能的实现方式中,探听单元152在将第二缓存行的标识信息转移到牺牲表项时,如果牺牲表项中存储有第三缓存行的标识信息,则通过第二缓存行的标识信息覆盖牺牲表项中第三缓存行的标识信息。
73.例如,在将第二缓存行的标识信息从探听表项集合1中的映射表项1转移到探听表项集合1中的牺牲表项时,如果探听表项集合1中的牺牲表项为空,则直接将第二缓存行的标识信息存储到探听表项集合1中的牺牲表项,如果探听表项集合1中的牺牲表项存储有第三缓存行的标识信息,则通过第二缓存行的标识信息覆盖探听表项集合1中牺牲表项中第三缓存行的标识信息,以将第二缓存行的标识信息存储到探听表项集合1中的牺牲表项。
74.在本技术实施例中,由于每个探听表项集合包括一个牺牲表项,当被替换的缓存行与内存中的数据不相同时,允许首先发起数据填充请求,再发起数据回写请求,无需先向探听过滤器15发起表项删除操作,再向探听过滤器15发起表项添加操作,从而提高了数据填充到缓存的速度。由于每个探听表项集合包括一个牺牲表项,在将一个缓存行的标识信息从映射表项转移到同一探听表项集合中的牺牲表项时,即使牺牲表项之前存储有其他缓存行的标识信息,该标识信息所对应的缓存行在私有缓存中已不存在,所以可以被覆盖。
75.在一种可能的实现方式中,每个处理器核对应一个探听过滤器15,一个处理器核内可以包括多个私有缓存,每个私有缓存包括至少一个填充位置集合。探听过滤器15包括多个探听表项集合,与各探听表项集合相对应的至少两个填充位置集合位于至少两个私有缓存中,不同的探听表项集合与不同的填充位置集合相对应,各私有缓存位于同一处理器核内。
76.每个私有缓存包括至少一个填充位置集合,不同的私有缓存所包括的填充位置集合的数量可以相同或不同。各私有缓存中填充位置集合的总数等于探听过滤器15中探听表项集合的数量,每个探听表项集合对应一个填充位置集合,且不同的探听表项集合对应不同的填充位置集合。
77.例如,处理器核内包括一级缓存和第二缓存,一级缓存和二级缓存均包括y个填充位置集合。探听过滤器包括2y个探听表项集合,其中y个探听表项集合与一级缓存中的y个填充位置集合相对应,另外y个探听表项集合与二级缓存中的y个填充位置集合相对应,而且不同的探听表项集合对应不同的填充位置集合。
78.在本技术实施例中,探听过滤器15所包括的各探听表项集合可以对应相同私有缓存中的多个填充位置集合,也可以对应不同私有缓存中的多个填充位置集合,从而探听过滤器15适用于包括一个私有缓冲的处理器核,也适用于包括多个私有缓冲的处理器核,保证了探听过滤器15具有较强的适用性。
79.在一种可能的实现方式中,同一个填充位置集合包括的各填充位置对应相同的索引信息,索引信息可以标识私有缓存中填充位置所能够填充的缓存行的地址区段。
80.在私有缓存内,按照从0依次加1分别赋予不同填充位置集合以索引(index)信息,即各填充位置集合的索引信息分别为0,1,2
……
,并将可以缓存的地址区间分割成至少一个地址区段,使得地址区段的数量与填充位置集合的数量相等。同样,按照从0依次加1分别
赋予不同地址区段以索引信息,使得每个地址区段与具有相同索引信息的填充位置集合相对应。任意缓存行所处的地址区段,只能缓存在对应索引信息的填充位置。
81.与私有缓存中的填充位置相对应,可以为探听过滤器15中的映射表项分配索引信息和路信息,使得相对应的填充位置和映射表项具有相同的索引信息和路信息,从而可以将具有相同索引信息的多个映射表项划分到同一个探听表项集合中。另外,为牺牲表项分配索引信息,使得不同的牺牲表项对应不同的索引信息,使得每个探听表项集合包括一个牺牲表项,而且同一探听表项集合中的映射表项和牺牲表项具有相同的索引信息。
82.图4是本技术一个实施例提供的私有缓存和探听过滤器的示意图。如图4所示,私有缓存包括y个填充位置集合,每个填充位置集合包括x个填充位置。不同的填充位置集合对应不同的索引信息,各填充位置集合对应的索引信息分别为index0、index1

index(y-1)。同一填充位置集合包括的各填充位置具有相同的索引信息,而且同一填充位置集合包括的各填充位置对应不同的路信息,各填充位置对应的路信息分别为way0、way1

way(x-1)。
83.与私有缓存包括的各填充位置相对应,探听过滤器15包括y个探听表项集合,每个探听表项集合包括x个映射表项和1个牺牲表项。不同的探听表项集合对应不同的索引信息,各探听表项集合对应的索引信息分别为index0、index1

index(y-1)。同一探听表项集合包括的各映射表项对应相同的索引信息,而同一探听表项集合包括的各映射表项对应不同的路信息,各映射表项对应的路信息分别为way0、way1

way(x-1)。
84.私有缓存中的填充位置与探听过滤器15中的映射表项一一对应。私有缓存中的填充位置填充有缓存行和缓存行的标识信息,探听过滤器15中的映射表项存储有相对应填充位置所填充缓存行的标识信息。
85.在本技术实施例中,以私有缓存中填充位置的地址区段作为索引信息,根据索引信息将私有缓存中的填充位置划分为多个填充位置集合,使同一填充位置集合包括的各填充位置具有相同的索引信息,而且同一填充位置集合包括的各填充位置对应不同的路信息,为探听过滤器15包括的各映射表项分别不同的索引信息和路信息,使具有相同索引信息和路信息的填充位置与映射表项相对应,从而实现填充位置与映射表项的一一对应。
86.在一种可能的实现方式中,标识信息可以是缓存行在内存中的地址信息。
87.在本技术实施例中,由于不同的缓存行在内存中具有不同的地址,因此可以将缓存行在内存中的地址信息作为缓存行的标识信息,使得可以根据标识信息区别不同的缓存行,方便处理器核根据缓存行的标识信息从其他处理器核的私有缓存中查找所需数据,保证处理器核查找所需数据的效率,进而保证处理单元的性能。
88.探听过滤方法
89.图5是本技术一个实施例的探听过滤方法的流程图,该探听过滤方法可由上述实施例中的探听过滤器15执行。如图5所示,该探听过滤方法包括如下步骤:
90.步骤501、接收第一缓存行被填充到私有缓存中后私有缓存发送的坐标信息,其中,坐标信息用于指示第一缓存行在私有缓存中的目标填充位置;
91.步骤502、在根据坐标信息确定目标填充位置对应的映射表项中存储有第二缓存行的标识信息时,将第二缓存行的标识信息从目标填充位置对应的映射表项转移到牺牲表项,并在目标填充位置对应的映射表项中存储第一缓存行的标识信息,其中,不同的缓存行
对应不同的标识信息。
92.在本技术实施例中,私有缓存中的填充位置与映射表项一一对应,在第一缓存行被填充到目标填充位置后,如果目标填充位置对应的映射表项中存储有第二缓存行的标识信息,则将第二缓存行的标识信息转移到牺牲表项,并将第一缓存行的标识信息存储到目标填充位置对应的映射表项。由于填充位置与映射表项一一对应,在第二缓存行不需要进行数据回写时,将第一缓存行的标识信息存储到目标填充位置对应的映射表项,而将第二缓存行的标识信息转移到牺牲表项中,因此对于无需数据回写的缓存行,私有缓存无需向探听过滤器发送删除请求,即可保证根据探听过滤器确定哪些私有缓存不可能存放所需的数据,从而减少对其他处理器核的私有缓存进行探听的次数,进而可以减小发送删除请求对处理器核内与处理器核外的通信带宽的占据,从而保证处理单元的性能。
93.在一种可能的实现方式中,在根据坐标信息确定目标填充位置对应的映射表项为空时,将第一缓存行的标识信息存储到目标填充位置对应的映射表项中。
94.在一种可能的实现方式中,将第二缓存行的标识信息从目标填充位置对应的映射表项转移到牺牲表项,包括:确定目标填充位置对应的映射表项所属的探听表项集合,并将第二缓存行的标识信息从目标填充位置对应的映射表项转移到该探听表项集合包括的牺牲表项,其中,探听过滤器包括至少一个探听表项集合,每个探听表项集合包括牺牲表项和至少一个映射表项,每个探听表项集合与私有缓存中的一个填充位置集合相对应,每个填充位置集合包括至少一个填充位置,每个探听表项集合中映射表项的数量与相对应的填充位置集合中填充位置的数量相等,相对应的探听表项集合和填充位置集合中不同的映射表项对应不同的填充位置。
95.在一种可能的实现方式中,将第二缓存行的标识信息从目标填充位置对应的映射表项转移到牺牲表项,包括:若牺牲表项中存储有第三缓存行的标识信息,通过第二缓存行的标识信息覆盖牺牲表项中第三缓存行的标识信息,其中,每个填充位置集合对应的待完成的缓存行填充请求的数量小于或等于1,缓存行填充请求用于请求向相对应的填充位置集合包括的填充位置填充缓存行。
96.需要说明的是,由于探听过滤方法的细节在上述实施例的探听过滤器部分,已经结合结构示意图进行了详细说明,具体过程可参见前述探听过滤器实施例中的描述,在此不再进行赘述。
97.计算机存储介质
98.本技术还提供了一种计算机可读存储介质,存储用于使一机器执行如本文所述的探听过滤方法的指令。具体地,可以提供配有存储介质的系统或者装置,在该存储介质上存储着实现上述实施例中任一实施例的功能的软件程序代码,且使该系统或者装置的计算机(或cpu或mpu)读出并执行存储在存储介质中的程序代码。
99.在这种情况下,从存储介质读取的程序代码本身可实现上述实施例中任何一项实施例的功能,因此程序代码和存储程序代码的存储介质构成了本技术的一部分。
100.用于提供程序代码的存储介质实施例包括软盘、硬盘、磁光盘、光盘(如cd-rom、cd-r、cd-rw、dvd-rom、dvd-ram、dvd-rw、dvd rw)、磁带、非易失性存储卡和rom。可选择地,可以由通信网络从服务器计算机上下载程序代码。
101.计算机程序产品
102.本技术实施例还提供了一种计算机程序产品,包括计算机指令,该计算机指令指示计算设备执行上述多个方法实施例中的任一对应的操作。
103.本技术实施例的商业价值
104.本技术实施例在解决探听过滤占据处理器核内与处理器核外的通信带宽较大的问题时,通过设置牺牲表项,私有缓存填充缓存行时通知探听过滤器相对应的坐标信息,探听过滤器将所填充缓存行的标识信息存储到相对应的映射表项,如果映射表项中有其他标识信息,但该标识信息对应的缓存行不需要回写时,仅需要告知探听过滤器坐标信息,探听过滤器会将原缓存行的标识信息存放到牺牲表项,从而私有缓存不需要向探听过滤器发送删除请求,减少了对于处理器核内与处理器核外的通信带宽的占用,进而保证处理单元的性能。由于增加了牺牲表项,并且限制了同一填充位置集合仅允许一个正在执行的填充请求,当被替换的缓存行与内存中的数据不相同时,允许首先发起数据填充请求,然后发起数据回写请求,保证数据填充缓存的速度。
105.应该理解,本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同或相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于方法实施例而言,由于其基本相似于装置和系统实施例中描述的方法,所以描述的比较简单,相关之处参见其他实施例的部分说明即可。
106.应该理解,上述对本说明书特定实施例进行了描述。其它实施例在权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
107.应该理解,本文用单数形式描述或者在附图中仅显示一个的元件并不代表将该元件的数量限于一个。此外,本文中被描述或示出为分开的模块或元件可被组合为单个模块或元件,且本文中被描述或示出为单个的模块或元件可被拆分为多个模块或元件。
108.还应理解,本文采用的术语和表述方式只是用于描述,本说明书的一个或多个实施例并不应局限于这些术语和表述。使用这些术语和表述并不意味着排除任何示意和描述(或其中部分)的等效特征,应认识到可能存在的各种修改也应包含在权利要求范围内。其他修改、变化和替换也可能存在。相应的,权利要求应视为覆盖所有这些等效物。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献