本发明属于处理器领域,尤其是涉及一种监听过滤器。
背景技术:
1、现代异构多核系统为确保存储器共享区域中所有处理器或总线主机在本地缓存中的数据保持一致,通过向所有处理器发出监听请求(snoop request),以检查缓存中数据的存在情况来实现缓存一致性。处理器在接收到监听请求后,检索自身缓存标签并采取适当的操作。由于监听请求导致的缓存检索通常出现未命中,为了减少不必要的高速缓存检索所带来的功耗,为处理器引入了监听过滤器(snoop filter),通过维护该处理器的共享缓存地址信息来提供当前针对该地址命中/未命中的信息,命中则会进入处理器进行查找,未命中则会立即返回未命中状态,以较低的成本过滤掉不必要的监听请求。然而考虑到硬件开销,监听过滤器并不能精确指示处理器中所有缓存存在状态,如果来自命中信号的请求最终导致检索缓存未命中,则该命中信号称为假阳性信号,假阳性信号在所有命中信号中所占的比例称为误判率。因此设计一个高效的监听过滤器需要在误判率和硬件开销之间进行权衡。
技术实现思路
1、本发明主要解决的问题是怎样在不提高硬件开销的前提下降低监听过滤器误判率,提供了一种监听过滤器。
2、为解决上述技术问题,所采用的技术方案是:
3、一种监听过滤器,按照多核系统中缓存行的长度将缓存地址划分两部分,属于缓存行内的地址值用于表示缓存行内偏移信息,属于缓存行外的地址值用于表示缓存行检索信息,将用于表示缓存行检索信息的缓存地址划分为多段,将划分出的各段缓存地址分别对应到相应的段寄存器,在相邻的段寄存器与段寄存器之间设置有段连接指示器,所述段连接指示器用于指示与段连接指示器相连的前一段缓存地址与后一段缓存地址的连接状态。
4、进一步地,所述段连接指示器为一个多位寄存器,所述多位寄存器的位数取决于与该段连接指示器连接的后一段段寄存器内缓存地址可能表示的多种具体地址值数量,每种缓存地址具体值对应多位寄存器中的一位,当多位寄存器中的某一位为1时,则表示该位对应的后一段缓存地址与段连接指示器相连的前一段缓存地址相连。
5、进一步地,所述段寄存器还配置有计数器,用于在各段缓存地址分别对应到相应的段寄存器时进行计数器递增,在缓存逐出时计数器递减。
6、进一步地,将每一段缓存地址划分为多组,为每组缓存地址配备组连接指示器,所述组连接指示器用于指示当前组缓存地址与后一组缓存地址的连接状态。
7、进一步地,所述组连接指示器是指使用多个多位寄存器,多个多位寄存器中的多个与当前组缓存地址可能的多种具体地址值数量相对应,罗列出当前组所有可能的缓存地址值,并为当前组所有可能的缓存地址值编序列号,则当前组的第几个多位寄存器对应第几序列号对应的缓存地址值,利用多个多位寄存器分别表示该组多种取值分别与组连接指示器连接的后一组缓存地址的连接关系;
8、多位寄存器的位数取决于与当前组相连的后一组缓存地址可能的各种组缓存地址值数量,罗列出与当前组有连接关系的后一组缓存地址所有可能的缓存地址值,预先为多位寄存器的每一位对应一个缓存地址值,当当前组与后一组某个缓存地址存在连接关系,则赋予当前组的组连接指示器中与当前组具体地址值对应的第几序列号的多位寄存器中与该种缓存地址对应的相应位为1,多位寄存器中的多个位为1则表示当前组缓存地址与多位寄存器中多个相应位为1对应的后一组缓存地址分别有连接关系。
9、进一步地,将各组缓存地址进行分类,并为每类赋予一个数值,使用该数值来表示相应类的几种缓存地址。
10、进一步地,根据预先设置的组缓存地址二进制具体值将各组缓存地址划分成两类,根据所划分的类将一组缓存地址赋予数值0或者1,使用数值0或1来表示一组缓存地址,则一段缓存地址使用各组所对应的类的数值以及每组配备的组连接指示器进行表示。
11、进一步地,将一段缓存地址均匀划分成三组,每组缓存地址根据预先设置的组缓存地址二进制具体值划分成两类,根据每组缓存地址二进制具体值所划分的类为一组缓存地址赋予数值0或者1,数值0或1分别代表一组缓存地址的几种可能缓存地址值,每组配备有组连接指示器。
12、进一步地,所述组连接指示器为4个4位寄存器,4个4位寄存器的4个表示该组缓存地址所划分的类可能表示的缓存地址值数量,罗列出当前分类所赋予的数值0或1所对应的各种可能表示的缓存地址值并给出序列号,则第几个4位寄存器表示当前组分类的数值中对应的第几个缓存地址值,4位寄存器中的各位分别对应与当前组相连的后一组的组缓存地址的连接关系,有连接关系的相应位为1。
13、采用上述技术方案,本发明具有如下有益效果:
14、本发明提供的一种监听过滤器,通过将用于表示缓存行检索信息的缓存地址分成多段,在相邻的段与段之间设置段连接指示器,因此在进行缓存查询时,将地址进行分割,当分割后的地址均相连,则视为该缓存行可能已经被当前处理器缓存,为维护缓存一致性,需要前往该处理器的缓存中进行访问。而现有技术中,分段后大多采用将地址完全展开的方式进行检索,占据空间大。本发明在分段的基础上又对段进行了分组,因此本发明的方法可以快速命中缓存地址,减小存储空间,降低误判率,提高检索效率。
15、本发明在段内进行了分组,为每组缓存地址进行分类,采用数值0或1取代展开的地址,地址具体值检索交由组连接指示进行实现,相比段内地址全部展开,减少30%左右的地址存储空间。同时,使用段连接指示与组连接指示,可以尽量避免出现多段或多组同时命中,进行排列组合导致的误判率。现有技术中,分段后再进行细化连接指示,将占用较大存储空间,本发明利用组连接指示进行地址具体值检索,对于3段共27位地址使用场景,如果只使用段连接指示,两个缓存行检索地址最大会存在8(23)种命中情况,即最差情况存在75%误判率;加上组连接指示后,即使段之间存在8种命中情况,也会由组连接指示进行修正。
1.一种监听过滤器,其特征在于,按照多核系统中缓存行的长度将缓存地址划分两部分,属于缓存行内的地址值用于表示缓存行内偏移信息,属于缓存行外的地址值用于表示缓存行检索信息,将用于表示缓存行检索信息的缓存地址划分为多段,将划分出的各段缓存地址分别对应到相应的段寄存器,在相邻的段寄存器与段寄存器之间设置有段连接指示器,所述段连接指示器用于指示与段连接指示器相连的前一段缓存地址与后一段缓存地址的连接状态。
2.根据权利要求1所述的一种监听过滤器,其特征在于,所述段连接指示器为一个多位寄存器,所述多位寄存器的位数取决于与该段连接指示器连接的后一段段寄存器内缓存地址可能表示的多种具体地址值数量,每种缓存地址具体值对应多位寄存器中的一位,当多位寄存器中的某一位为1时,则表示该位对应的后一段缓存地址与段连接指示器相连的前一段缓存地址相连。
3.根据权利要求1所述的一种监听过滤器,其特征在于,所述段寄存器还配置有计数器,用于在各段缓存地址分别对应到相应的段寄存器时进行计数器递增,在缓存逐出时计数器递减。
4.根据权利要求3所述的一种监听过滤器,其特征在于,将每一段缓存地址划分为多组,为每组缓存地址配备组连接指示器,所述组连接指示器用于指示当前组缓存地址与后一组缓存地址的连接状态。
5.根据权利要求4所述的一种监听过滤器,其特征在于,所述组连接指示器是指使用多个多位寄存器,多个多位寄存器中的多个与当前组缓存地址可能的多种具体地址值数量相对应,罗列出当前组所有可能的缓存地址值,并为当前组所有可能的缓存地址值编序列号,则当前组的第几个多位寄存器对应第几序列号的缓存地址值;
6.根据权利要求5所述的一种监听过滤器,其特征在于,将各组缓存地址进行分类,并为每类赋予一个数值,使用该数值来表示相应类的几种缓存地址。
7.根据权利要求6所述的一种监听过滤器,其特征在于,根据预先设置的组缓存地址二进制具体值将各组缓存地址划分成两类,根据所划分的类将一组缓存地址赋予数值0或者1,使用数值0或1来表示一组缓存地址,则一段缓存地址使用各组所对应的类的数值以及每组配备的组连接指示器进行表示。
8.根据权利要求7所述的一种监听过滤器,其特征在于,将一段缓存地址均匀划分成三组,每组缓存地址根据预先设置的组缓存地址二进制具体值划分成两类,根据每组缓存地址二进制具体值所划分的类为一组缓存地址赋予数值0或者1,数值0或1分别代表一组缓存地址中的几种可能缓存地址值,每组配备有组连接指示器。
9.根据权利要求8所述的一种监听过滤器,其特征在于,所述组连接指示器为4个4位寄存器,4个4位寄存器的4个表示该组缓存地址所划分的类可能表示的缓存地址值数量,罗列出当前分类所赋予的数值0或1所对应的各种可能表示的缓存地址值并给出序列号,则第几个4位寄存器表示当前组分类的数值中对应的第几个缓存地址值,4位寄存器中的各位分别对应与当前组相连的后一组的组缓存地址的连接关系,有连接关系的相应位为1。