CN101571843A - 在多核处理器中动态共享高速缓存的方法、设备和系统 - Google Patents
在多核处理器中动态共享高速缓存的方法、设备和系统 Download PDFInfo
- Publication number
- CN101571843A CN101571843A CNA2008100839463A CN200810083946A CN101571843A CN 101571843 A CN101571843 A CN 101571843A CN A2008100839463 A CNA2008100839463 A CN A2008100839463A CN 200810083946 A CN200810083946 A CN 200810083946A CN 101571843 A CN101571843 A CN 101571843A
- Authority
- CN
- China
- Prior art keywords
- cache
- cache line
- nuclear
- counter
- 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
Links
Images
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种在多核处理器中动态共享高速缓存的方法、设备以及多核处理器系统。所述高速缓存可以包括分配给每个核的私有高速缓存部分和在多个核之间共享的共享高速缓存部分。该方法可以包括:计数步骤,利用针对高速缓存中的每条高速缓存线设置的计数器,对多个核对所述高速缓存线的访问进行计数;以及调整步骤,根据所述计数的结果,在所述私有高速缓存部分和所述共享高速缓存部分之间动态调整所述高速缓存线。
Description
技术领域
本发明一般涉及数据处理领域,以及具体地,本发明涉及一种用于在多核处理器中动态共享高速缓存的方法、设备和多核处理器系统。
背景技术
近些年来,处理器的设计已经从传统的单核处理器逐渐进入了多核处理器的时代。目前,已经开发了包括双核、四核以及甚至更多核的处理器。多核可提高硬件的集成度以及运算效率,从而使处理器的性能倍增。然而,多核处理器也面临着多级高速缓存(cache)的一致性的挑战。随着处理器中核数的增加,越来越多的数据需要在多核之间进行共享。这样,如何实现多核之间的同步以及高速缓存的一致性已经成为当前研究的重点。
众所周知,在计算机中存在不同级别的存储器,诸如,高速缓存、内存、外部存储设备等等。处理器对以上存储器的访问速度依次降低。这样,为了提高计算速度,通常使用多级高速缓存,例如L1级高速缓存、L2级高速缓存、......Ln高速缓存。
典型地,L1级高速缓存集成在处理器核内,用于在处理器核处理数据过程中暂时存储数据。由于缓存指令和数据与处理器核在相同频率下工作,L1级高速缓存的存在可减少处理器与内存之间的数据交换次数,从而提高处理器的运算效率。然而,在有限的芯片面积上,不可能设置大容量的L1级高速缓存。这样,为了再次提高处理器的运算速度,还需要在处理器核外部设置L2级高速缓存。典型地,处理器核在读取数据时,依次在L1级高速缓存、L2级高速缓存、内存、外部存储设备中查找数据。
由于L1级高速缓存与处理器核在硬件上相关性较强,因而在多核处理器设计过程中,一般将L1级高速缓存设计为处理器核的私有部分,而主要针对L2级高速缓存进行核间共享。
在现有的多核处理器设计中,已经提出了一种方案,其中将L2级高速缓存设计为包括共享部分和针对每个核的私有部分。然而,在这种处理器中,只是静态地共享L2级高速缓存,而不能根据实际需要动态地调整L2级高速缓存的共享部分。
因而,本领域特别需要一种在多核处理器中动态共享L2级高速缓存的方法、设备以及处理器系统。
发明内容
本发明的目的在于提供一种在多核处理器中动态共享高速缓存的方法、设备和多核处理器系统,用于在处理器的多个核之间提供高速缓存的动态共享。
根据本发明的一方面,提供一种在多核处理器中动态共享高速缓存的方法。所述高速缓存可以包括分配给每个核的私有高速缓存部分和在多个核之间共享的共享高速缓存部分。该方法可以包括:计数步骤,利用针对高速缓存中的每条高速缓存线(cache line)设置的计数器,对多个核对所述高速缓存线的访问进行计数;以及调整步骤,根据所述计数的结果,在所述私有高速缓存部分和所述共享高速缓存部分之间动态调整所述高速缓存线。
根据本发明的另一方面,提供一种在多核处理器中动态共享高速缓存的设备。所述高速缓存可以包括分配给每个核的私有高速缓存部分和在多个核之间共享的共享高速缓存部分。该设备可以包括:针对高速缓存中的每条高速缓存线设置的计数器,用于对多个核对所述高速缓存线的访问进行计数;以及调整装置,用于根据所述计数的结果,在所述私有高速缓存部分和所述共享高速缓存部分之间动态调整所述高速缓存线。
根据本发明的另一方面,提供一种多核处理器系统,包括:多个核;高速缓存,包括分配给每个核的各个私有高速缓存部分和在多个核之间共享的共享高速缓存部分;针对高速缓存中的每条高速缓存线设置的计数器,被设置为对多个核对所述高速缓存线的访问进行计数;以及高速缓存控制器,被设置为根据所述计数的结果,在所述私有高速缓存部分和所述共享高速缓存部分之间动态调整所述高速缓存线。
附图说明
结合附图并参考以下的详细说明,本发明的特征、优点以及其他方面将变得更加明显,在附图中:
图1是示出了根据本发明一种实施方式的用于在多核间动态共享L2级高速缓存的多核处理器系统的示意图;
图2是示出了根据本发明的第一实施方式的为了在多核间动态共享L2级高速缓存而在每个高速缓存线上所定义数据结构的示意图;
图3是示出了根据本发明的第一实施方式的用于动态共享L2级高速缓存的算法的示意图;
图4是示出了根据本发明的第二实施方式的用于在多核间动态共享L2级高速缓存而在每个高速缓存线上所定义数据结构的示意图;
图5是示出了根据本发明的第二实施方式的用于动态共享L2级高速缓存的算法的示意图;
图6是根据本发明的一个实施方式的用于在多核处理器中动态共享高速缓存的方法的流程图;
图7是根据本发明的计数器的操作的示意流程图;
图8是根据本发明的图6所示方法中的调整步骤的示意流程图;以及
图9是根据本发明的一个实施方式的用于在多核处理器中动态共享高速缓存的设备的示意性框图。
应当理解,在全部附图中,相同的参考标记表示相同的部件。
具体实施方式
本发明的原理在于,通过计数多核处理器系统中的多个核对高速缓存中的每个高速缓存线的访问,来确定将该高速缓存线置于高速缓存的私有高速缓存部分还是共享高速缓存部分,以实现高速缓存的动态共享。
以下说明中,描述了在处理器系统的L2级高速缓存来实现动态共享。然而,应该理解,根据需要,可以在任何级的高速缓存中实现本发明的高速缓存动态共享。下面参考附图来详细说明根据本发明的各个实施方式。
第一实施方式
首先参考图1,图1描述根据本发明的一种实施方式的多核处理器系统。在图1中,以双核处理器系统作为例子来描述对L2级高速缓存进行动态共享的机制。
如图1所示,多核处理器系统100可以包括:核C1112、对于核C1112私有的L1级高速缓存114、对于核C1112私有的L2级高速缓存部分C1116、对于核C2122私有的L1级高速缓存124、对于核C2122私有的L2级高速缓存部分C2126、以及核C1112和核C2122共享的L2级高速缓存部分Cs1-2130。
也就是说,在多核处理器系统100中,L1级高速缓存包括对于核C1112私有的L1级高速缓存114和对于核C2122私有的L1级高速缓存124,而L2级高速缓存包括对于核C1112私有的L2级高速缓存部分C1116、对于核C2122私有的L2级高速缓存部分C2126、以及核C1112和核C2122共享的L2级高速缓存部分Cs1-2130。
如图1所示,核C1112可用的高速缓存部分如虚线框110所示,而核C2122可用的高速缓存部分如虚线框120所示。
另外,多核处理器系统100还可以包括用于分别控制L1级高速缓存和L2级高速缓存的操作的L1级高速缓存控制器和L2级高速缓存控制器(没有示出)。应该理解,也可以通过单个高速缓存控制器来实现对L1级高速缓存和L2级高速缓存的控制。高速缓存控制器可以执行根据本发明的用于在多核处理器系统中动态共享高速缓存的方法。
下面将结合图2和图3详细描述根据本发明第一实施方式的用于动态共享L2级高速缓存的机制。
图2示出了针对L2级高速缓存中的每个高速缓存线所定义的数据结构。如图2所示,每个高速缓存线包括一个数据结构,该数据结构用于记录多核对该高速缓存线所进行的访问,所述访问包括处理器核对所述高速缓存线的装载、命中、存储、读取等操作。在本实施方式中,所述数据结构可以包括:3位的计数器202,用于存储标识每个高速缓存线的当前状态的值;以及1位的处理器指示器,用于指示由哪个处理器核对该高速缓存线执行了最近一次访问。
根据本实施方式,可以根据计数器202的值来标识每个高速缓存线的当前位置(即属于共享部分还是私有部分)。可认为计数器202的值对应于数组的形式(在本实施方式中是一维数组)。在此,数组的值与计数器的值相对应。具体地,3位计数器可以具有0至7的8个不同数值,其中例如,数值0、1、2表示该高速缓存线对于核C1112是私有的,数值3、4表示该高速缓存线对于核C1112及核C2122是共享的,而数值5、6、7表示该高速缓存线对于核C2122私有的。如图3所示,对应于计数器值0、1和2的部分C1116表示核C1112私有的高速缓存部分,对应于计数器值3和4的部分C2126表示由核C2122私有的高速缓存部分,而对应于计数器值5、6和7的部分Cs 130表示由核C1112与核C2122所共享的高速缓存部分。
下面通过表1来示出根据本实施方式如何通过高速缓存线中的计数器值来确定该高速缓存线处于何种位置(即,属于“私有”部分还是“共享”部分)。表1示出了高速缓存线中的计数器值与该高速缓存线所处位置的关系。
表1
计数器值(Counter) | 所处位置 |
0 | C1 |
1 | C1 |
2 | C1 |
3 | Cs |
4 | Cs |
5 | C2 |
6 | C2 |
7 | C2 |
如表1所示,当计数器值为0、1、2时,该计数器所处的高速缓存线位于核C1112私有的高速缓存部分C1116;当计数器值为5、6、7时,该计数器所处的高速缓存线位于核C2122私有的高速缓存部分C2126;以及当计数器值为3和4时,该计数器所处的高速缓存线位于由核C1112和核C2122共享的高速缓存部分Cs 130。
下面参考图2和图3对本实施方式的原理进行详细说明。
首先,为高速缓存中的每个高速缓存线定义一维数组,例如,图3中的表示0至7的数字的3位计数器202。
然后,如果核C1112第一次装载高速缓存线,则该高速缓存线的计数器的值被初始化为0;否则,如果核C2122第一次装载该高速缓存线,则该高速缓存线的计数器的值被初始化为7。
接下来。对于每个高速缓存线,如果核C1112命中(hit)该高速缓存线,则该高速缓存线的计数器值将递减一;如果核C2122命中该高速缓存线,则该高速缓存线上的计数器值将递增一。在本实施方式中,如果计数器值≤0则不再执行递减操作,以及如果计数器值≥7则不再执行递增操作,而是保持当前的计数器值不变。应该理解,计数器值每次也可以递增或者递减其他预定值。
接下来,一旦高速缓存线的计数器的值等于3或4,则将该高速缓存线从私有部分C1116或者C2126中移至共享部分Cs 130,并且将被替换的共享高速缓存线移回私有部分C1116或者C2126中的相应位置。
另外,一旦高速缓存线的计数器的值小于3,则将该高速缓存线从共享部分Cs 130移至私有部分C1116,并将私有部分C1116中被替换的高速缓存线移至共享部分Cs 130中的相应位置。另一方面,一旦高速缓存线的计数器的值大于4,则将该高速缓存线从共享部分Cs 130移至私有部分C2126,并将私有部分C2126中被替换的高速缓存线移至共享部分Cs 130中的相应位置。
从上面的描述可以看到,在本实施方式中,可以根据如下公式来计算每条高速缓存线的计算计数器值Counter:
应该注意,上述公式只是出于示出的目的。本领域技术人员还可以使用其他类似的方法来计算计数器的值。例如,可以在由核C1112第一次装载时,将高速缓存线计数器的值初始化为7,而在由核C2122第一次装载时,将高速缓存线计数器的值初始化为0。同时将由核C1命中时的计算规则改为递增一,而将由核C2命中时的计算规则改为递减一。
具体地,下面通过表2来示出根据本发明第一实施方式的共享高速缓存的详细操作。表2示出了高速缓存线中计数器状态及相关调整操作。
表2
如表2所示,当核C1112命中正处于Cs 130的某高速缓存线时,根据本实施方式的规则,将当前计数器值Counter减1,并判断Counter-1的值是否小于3。则出现以下两种情况:
1)如果结果为“是”,则在Cs和C1之间交换高速缓存线。交换方法如下:在Cs中找到最老的并且其Counter值最大的高速缓存线,并且将所找到的高速缓存线与当前高速缓存线进行交换;
2)如果结果为“否”,则对Counter赋予新的值(即,Counter=Counter-1)。
根据表2中的内容以及上述举例,本领域技术人员将理解当计数器值为其他数字时的动态共享高速缓存的操作,在此不再赘述。
第二实施方式
在第一实施方式中,给出了一对核(双核)之间动态共享高速缓存的机制。本发明并不仅局限于在一对核之间动态共享高速缓存,而是还可以应用于多对核之间动态共享高速缓存。在第一实施方式中已经阐明,定义一组数据结构,用于记录一对核对每条高速缓存线的访问并以此作为动态共享Cache的基础。在本发明的第二实施方式中,作为示例,将示出在两对核之间动态共享Cache的方法。
如图4所示,在第二实施方式中每条高速缓存线的数据结构可以包括:两个分别具有3位的计数器1402和计数器2404,用于存储标识每个高速缓存线的当前状态的数值(分别由0至7的数字来表示);以及一个2位的处理器指示器,用于指示哪个处理器核在上一次对该高速缓存线进行了访问。
下面参考图5来详细说明在两对核之间动态共享Cache的机制。如图5中所示,根据计数器1402和计数器2404的值来标识每个高速缓存线的当前位置。与第一实施方式类似,在这里,可认为两个计数器以二维数组的形式来标识高速缓存线的当前位置。二维数组的第一维的值与计数器1402的值相对应,二维数组的第二维的值与计数器2404的值相对应。在第二实施方式中,两个3位计数器均可以表示0至7的8个不同数字。如图5所示,二维数组的第一维(即,计数器1的值)和第二维(即,计数器2的值)共同表示当前高速缓存线所处的位置。
在第二实施方式中,L2级高速缓存500可以划分成为以下部分:核C1私有的L2级高速缓存部分C1516、核C2私有的L2级高缓存部分C2526、核C3私有的L2级高速缓存部分C3536、核C4私有的L2级高速缓存部分C4546、核C1-C2共享的L2级高速缓存部分Cs1-2552、核C3-C4共享的L2级高速缓存部分Cs3-4554以及核C1-C2-C3-C4共享的L2级高速缓存部分Cs1-2-3-4550。如图5所示,沿高速缓存500上方横向示出的0至7的数字是每条高速缓存线的计数器1的值,而沿处理器800左侧纵向示出的0至7的数字是计数器2的值,其中图5与下文的表3相对应。
在表3中,详细给出根据本实施方式如何采用两个计数器来标识每个高速缓存线的当前所处位置。
表3
例如,从表3中可看到,当计数器1值为3且计数器2值为4(即,二维数组(3,4))时,则满足以上条件的高速缓存线位于4个核C1、核C2、核C3、核C4的共享L2级高速缓存部分Cs1-2-3-4550。
下面参考图4和图5对第二实施方式的原理进行详细说明:
首先,为高速缓存中的每个高速缓存线定义二维数组,例如,如图4中用于表示0至7的数字的3位计数器1402和计数器2404。
接下来,如果核C1第一次装载高速缓存线,则该高速缓存线的二维数组的初值为(0,0);当核C2第一次装载高速缓存线,则该高速缓存线的二维数组的初值为(7,0);当核C3第一次装载该高速缓存线,则该高速缓存线的二维数组的初值为(0,7);当核C4第一次装载该高速缓存线,则该高速缓存线的二维数组的初值为(7,7)。
接下来,对于每个高速缓存线,如果核C1命中,则该高速缓存线上的计数器1值递减1;如果核C2命中,则该高速缓存线上的计数器1值递增1,如果核C3命中,则该高速缓存线上的计数器2值递减1;如果核C4命中,则该高速缓存线上的计数器2值递增1。在本实施方式中,如果计数器的值≤0或者≥7,则不再执行递增或者递减操作,而保持当前的计数器值不变。
高速缓存部分Cs1-2、Cs3-4以及Cs1-2-3-4表示在核间共享的高速缓存部分,处于共享部分的高速缓存线在如图4所示的处理器指示器406中记录指示由哪个处理器核对该Cache执行了最近一次访问。
接下来,一旦高速缓存线的计数器1的值等于3或4,则会存在以下几种情况:
如果计数器2的值小于3,将该高速缓存线从C1或者C2中移至Cs1-2552,而将被替换的内容(即,来自相同处理器核的内容)移回C1516或者C2526中;
如果计数器2的值等于3或4:将该高速缓存线从Cs1-2552或者Cs3-4554中移至Cs1-2-3-4550,而将被替换的内容(即,来自相同处理器核的内容)移回Cs1-2552或者Cs3-4554中;
如果计数器2的值大于4:将该高速缓存线从C3536者C4546中移至Cs3-4554,而将被替换的内容(即,来自相同处理器核的内容)移回C3536或者C4546中。
在本实施方式中,可以根据如下公式来计算计数器1的值Counter1和计数器2的值Counter2:
上述两个计数器值共同构成标识每个高速缓存线的状态的二维数组。应当注意,上述公式只是出于示出的目的。本领域技术人员还可以使用其他类似的方法来计算计数器的值。
根据第二实施方式中所述的数据结构和方法,本领域技术人员可以很容易地得出类似表2的针对两组核间动态共享高速缓存的状态及其操作,在此不作赘述。
其他变型
针对本发明的第一实施方式,还可以存在如下变型。
使用n位的计数器来指示高速缓存线的当前位置;以及分别采用参数a来作为划分核C1的私有L2级高速缓存部分C1116以及核C1-核C2的共享L2级高速缓存部分Cs 130之间的边界值;并且采用参数b来作为划分核C1-核C2的共享L2级高速缓存部分Cs 130与核C2的私有L2级高速缓存部分C2126之间的边界值。参数a、b、n满足以下条件:
0≤a≤b≤2n-1
从上述公式中可以看出:对于(0≤计数器值<a)的高速缓存线,作为核C1的私有L2级高速缓存部分C1116而存在;对于(a≤计数器值≤b)的高速缓存线,作为核C1-核C2的共享L2级高速缓存部分Cs 430而存在;对于(b<计数器值≤2n-1)的高速缓存线,作为核C2的私有L2级高速缓存部分C2426而存在。
在这里,针对参数a、b的几种特殊情况分别进行讨论。
当a=0时:1)如果b=0,则整个L2级高速缓存中中只存在核C2的私有L2级高速缓存部分C2126;2)如果b=2n-1,则整个L2级高速缓存中只存在核C1-核C2的共享L2级高速缓存部分Cs 430;3)如果0<b<2n-1,则整个L2级高速缓存中存在核C2的私有L2级高速缓存部分C2126、核C1-核C2的共享L2级高速缓存部分Cs430。
当b=2n-1时,情况与a=0时类似,在此不再赘述。
当a=b时,则整个L2级高速缓存中不存在核C1-核C2的共享L2级高速缓存部分Cs 430,即如同传统技术中所使用的方式。
在实际应用中,参数a、b、n同时满足以下条件:
a+b=2n-1且a≠b且a≠0且b≠2n-1
即优选地,在多核处理器高速缓存动态共享中,保证在L2级高速缓存中同时存在核C1的私有L2级高速缓存部分C1416、核C1-核C2的共享L2级高速缓存部分Cs 430以及核C2的私有L2级高速缓存部分C2426。
应该理解,根据多核处理器系统的具体设计,通过将第二实施方式中所述的“二维组数据结构”进行扩展,还可以在多于两组核之间进行动态共享。例如,为了在m对核之间动态共享Cache,可以采用m个计数器,并且类似地根据上文具体阐述的方法步骤来进行共享。
下面,对根据本发明的用于在多核处理器系统中共享高速缓存的方法做以总结。图6示出了根据本发明的用于在多核处理器系统中共享高速缓存的方法600的流程图。高速缓存可以包括分配给每个核的私有高速缓存部分和在多个核之间共享的共享高速缓存部分。
如图6所示,首先,在步骤S601,利用针对高速缓存中的每条高速缓存线设置的计数器,对多个核对所述高速缓存线的访问进行计数。
然后,在步骤S602,根据上述计数的结果,在所述私有高速缓存部分和所述共享高速缓存部分之间动态调整所述高速缓存线。
图7示出针对每条高速缓存线设置的计数器在步骤S601的操作过程700。
首先,在操作701中,当一对核中的第一核初次访问高速缓存线时,将计数器初始化为计数器的下限值。
在操作702,当所述一对核中的第二核初次访问所述高速缓存线时,将所述计数器初始化为所述计数器的上限值。
在操作703,当第一核访问所述高速缓存线时,所述计数器值递减预定值,直到所述计数器下限值为止。
在操作704,当第二核访问所述高速缓存线时,所述计数器值递增所述预定值,直到所述计数器上限值为止。
图8示出了图6所示方法中的调整步骤S602的具体操作800。
在操作801中,当所述计数器值达到一个预定中间范围时,将所述高速缓存线从相应的私有高速缓存部分移动到共享高速缓存部分,以及将替换的共享高速缓存线移动到相应的私有高速缓存部分。
在操作802中,当所述计数器值变为小于预定中间范围的下限时,将所述高速缓存线从共享高速缓存部分移动到对应于第一核的私有高速缓存部分,以及将替换的私有高速缓存线移动到共享高速缓存部分。
在操作803中,当所述计数器值变为大于预定中间范围的上限时,将所述高速缓存线从共享高速缓存部分移动到对应于第二核的私有高速缓存部分,以及将替换的私有高速缓存线移动到共享高速缓存部分。
图9示出了根据本发明的一个实施方式的用于在多核处理器中动态共享高速缓存的设备900的示意性框图。高速缓存可以包括分配给每个核的私有高速缓存部分和在多个核之间共享的共享高速缓存部分。
如图9所示,设备900可以包括:针对高速缓存中的每条高速缓存线设置的计数器902,用于对多个核对高速缓存线的访问进行计数;以及调整装置904,用于根据计数的结果,在私有高速缓存部分和共享高速缓存部分之间动态调整所述高速缓存线。
根据本发明的一个实施方式,当一对核中的第一核初次访问所述高速缓存线时,计数器902被初始化为其下限值;当所述一对核中的第二核初次访问所述高速缓存线时,计数器902被初始化为其上限值;当第一核访问所述高速缓存线时,计数器902的值递减预定值,直到其下限值为止;以及当第二核访问所述高速缓存线时,所述计数器902的值递增预定值,直到其上限值为止。
如图9所示,按照本发明的实施例,调整装置904还可以包括:装置9042,用于当计数器值达到一个预定中间范围时,将所述高速缓存线从相应的私有高速缓存部分移动到共享高速缓存部分,以及将替换的共享高速缓存线移动到相应的私有高速缓存部分。
进一步,调整装置904还可以包括:装置9044,用于当计数器值变为小于预定中间范围的下限时,将高速缓存线从共享高速缓存部分移动到对应于第一核的私有高速缓存部分,以及将替换的私有高速缓存线移动到共享高速缓存部分。
进一步,调整装置904还可以包括:装置9046,用于当计数器值变为大于预定中间范围的上限时,将所述高速缓存线从共享高速缓存部分移动到对应于第二核的私有高速缓存部分,以及将替换的私有高速缓存线移动到共享高速缓存部分。
本领域技术人员应该理解,上述装置9042、9044和9046可以是分立的、也可以集成在一起。
本领域技术人员应该理解,可以通过软件、硬件、固件或者它们的结合的方式,来实现本发明实施例中的方法和装置。例如,本发明可以实现为一种计算机程序产品,包含存储在计算机可读的介质上的程序代码,其在被计算机执行时执行本发明实施例中所述的方法。
进一步,本领域技术人员应该理解,在实际环境中,可以对上述实施方式及其变型中的各个特征和步骤进行任意组合,只要能够在多核处理器中实现高速缓存的动态共享即可。
从上述描述应该理解,在不脱离本发明精神的情况下,可以对本发明各实施方式进行修改和变更。本说明书中的描述仅仅是说明性的,而不应被认为是限制性的。本发明的范围仅受权利要求书的限制。
Claims (13)
1.一种在多核处理器中动态共享高速缓存的方法,其中所述高速缓存包括分配给每个核的私有高速缓存部分和在多个核之间共享的共享高速缓存部分,该方法包括:
计数步骤,利用针对高速缓存中的每条高速缓存线设置的计数器,对多个核对所述高速缓存线的访问进行计数;以及
调整步骤,根据计数的结果,在所述私有高速缓存部分和所述共享高速缓存部分之间动态调整所述高速缓存线。
2.根据权利要求1所述的方法,其中,所述计数步骤包括:
当一对核中的第一核初次访问所述高速缓存线时,将所述计数器初始化为所述计数器的下限值;
当所述一对核中的第二核初次访问所述高速缓存线时,将所述计数器初始化为所述计数器的上限值;
当第一核访问所述高速缓存线时,所述计数器值递减预定值,直到所述计数器下限值为止;以及
当第二核访问所述高速缓存线时,所述计数器值递增所述预定值,直到所述计数器上限值为止。
3.根据权利要求2所述的方法,其中,所述调整步骤还包括:
当所述计数器值达到一个预定中间范围时,将所述高速缓存线从相应的私有高速缓存部分移动到共享高速缓存部分,以及将替换的共享高速缓存线移动到相应的私有高速缓存部分。
4.根据权利要求2所述的方法,其中,所述调整步骤还包括:
当所述计数器值变为小于预定中间范围的下限时,将所述高速缓存线从共享高速缓存部分移动到对应于第一核的私有高速缓存部分,以及将替换的私有高速缓存线移动到共享高速缓存部分。
5.根据权利要求2所述的方法,其中,所述调整步骤还包括:
当所述计数器值变为大于预定中间范围的上限时,将所述高速缓存线从共享高速缓存部分移动到对应于第二核的私有高速缓存部分,以及将替换的私有高速缓存线移动到共享高速缓存部分。
6.根据权利要求1-5任意一个所述的方法,其中,所述高速缓存为L2级高速缓存。
7.一种在多核处理器中动态共享高速缓存的设备,其中所述高速缓存包括分配给每个核的私有高速缓存部分和在多个核之间共享的共享高速缓存部分,该设备包括:
针对高速缓存中的每条高速缓存线设置的计数器,用于对多个核对所述高速缓存线的访问进行计数;以及
调整装置,用于根据所述计数的结果,在所述私有高速缓存部分和所述共享高速缓存部分之间动态调整所述高速缓存线。
8.根据权利要求7所述的设备,其中,
当一对核中的第一核初次访问所述高速缓存线时,所述计数器被初始化为所述计数器的下限值;
当所述一对核中的第二核初次访问所述高速缓存线时,所述计数器被初始化为所述计数器的上限值;
当第一核访问所述高速缓存线时,所述计数器值递减预定值,直到所述计数器下限值为止;以及
当第二核访问所述高速缓存线时,所述计数器值递增所述预定值,直到所述计数器上限值为止。
9.根据权利要求8所述的设备,其中,所述调整装置还包括:
用于当所述计数器值达到一个预定中间范围时,将所述高速缓存线从相应的私有高速缓存部分移动到共享高速缓存部分,以及将替换的共享高速缓存线移动到相应的私有高速缓存部分的装置。
10.根据权利要求8所述的设备,其中,所述调整装置还包括:
用于当所述计数器值变为小于预定中间范围的下限时,将所述高速缓存线从共享高速缓存部分移动到对应于第一核的私有高速缓存部分,以及将替换的私有高速缓存线移动到共享高速缓存部分的装置。
11.根据权利要求8所述的设备,其中,所述调整装置还包括:
用于当所述计数器值变为大于预定中间范围的上限时,将所述高速缓存线从共享高速缓存部分移动到对应于第二核的私有高速缓存部分,以及将替换的私有高速缓存线移动到共享高速缓存部分的装置。
12.根据权利要求7-11任意一个所述的设备,其中,所述高速缓存为L2级高速缓存。
13.一种多核处理器系统,包括:
多个核;
高速缓存,包括分配给每个核的各个私有高速缓存部分和在多个核之间共享的共享高速缓存部分;
针对高速缓存中的每条高速缓存线设置的计数器,被设置为对多个核对所述高速缓存线的访问进行计数;以及
高速缓存控制器,被设置为根据所述计数的结果,在所述私有高速缓存部分和所述共享高速缓存部分之间动态调整所述高速缓存线。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2008100839463A CN101571843A (zh) | 2008-04-29 | 2008-04-29 | 在多核处理器中动态共享高速缓存的方法、设备和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2008100839463A CN101571843A (zh) | 2008-04-29 | 2008-04-29 | 在多核处理器中动态共享高速缓存的方法、设备和系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101571843A true CN101571843A (zh) | 2009-11-04 |
Family
ID=41231202
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2008100839463A Pending CN101571843A (zh) | 2008-04-29 | 2008-04-29 | 在多核处理器中动态共享高速缓存的方法、设备和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101571843A (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102088395A (zh) * | 2009-12-02 | 2011-06-08 | 杭州华三通信技术有限公司 | 一种调整媒体数据缓存的方法和装置 |
CN102117262A (zh) * | 2010-12-21 | 2011-07-06 | 清华大学 | 用于多核处理器的Cache的主动复制方法及系统 |
CN102446159A (zh) * | 2010-10-12 | 2012-05-09 | 无锡江南计算技术研究所 | 多核处理器的数据管理方法及装置 |
US8489787B2 (en) | 2010-10-12 | 2013-07-16 | International Business Machines Corporation | Sharing sampled instruction address registers for efficient instruction sampling in massively multithreaded processors |
US8589922B2 (en) | 2010-10-08 | 2013-11-19 | International Business Machines Corporation | Performance monitor design for counting events generated by thread groups |
US8601193B2 (en) | 2010-10-08 | 2013-12-03 | International Business Machines Corporation | Performance monitor design for instruction profiling using shared counters |
CN104252392A (zh) * | 2013-06-28 | 2014-12-31 | 华为技术有限公司 | 一种访问数据缓存的方法和处理器 |
CN105426319A (zh) * | 2014-08-19 | 2016-03-23 | 超威半导体产品(中国)有限公司 | 动态缓存分区设备和方法 |
CN106663058A (zh) * | 2014-06-24 | 2017-05-10 | 高通股份有限公司 | 分离式共享信息及专用信息缓存 |
CN107832238A (zh) * | 2017-10-09 | 2018-03-23 | 江苏航天龙梦信息技术有限公司 | 一种基于龙芯处理器平台的高速缓存作内存的方法 |
CN110825690A (zh) * | 2019-11-14 | 2020-02-21 | 北京华捷艾米科技有限公司 | 多核处理器的核间通信方法及装置 |
WO2024103666A1 (zh) * | 2022-11-16 | 2024-05-23 | 中山大学 | 一种多核处理器动态缓存分区隔离系统及其控制方法 |
-
2008
- 2008-04-29 CN CNA2008100839463A patent/CN101571843A/zh active Pending
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102088395A (zh) * | 2009-12-02 | 2011-06-08 | 杭州华三通信技术有限公司 | 一种调整媒体数据缓存的方法和装置 |
CN102088395B (zh) * | 2009-12-02 | 2014-03-19 | 杭州华三通信技术有限公司 | 一种调整媒体数据缓存的方法和装置 |
US8601193B2 (en) | 2010-10-08 | 2013-12-03 | International Business Machines Corporation | Performance monitor design for instruction profiling using shared counters |
US8589922B2 (en) | 2010-10-08 | 2013-11-19 | International Business Machines Corporation | Performance monitor design for counting events generated by thread groups |
US8489787B2 (en) | 2010-10-12 | 2013-07-16 | International Business Machines Corporation | Sharing sampled instruction address registers for efficient instruction sampling in massively multithreaded processors |
CN102446159A (zh) * | 2010-10-12 | 2012-05-09 | 无锡江南计算技术研究所 | 多核处理器的数据管理方法及装置 |
CN102446159B (zh) * | 2010-10-12 | 2013-09-18 | 无锡江南计算技术研究所 | 多核处理器的数据管理方法及装置 |
CN102117262B (zh) * | 2010-12-21 | 2012-09-05 | 清华大学 | 用于多核处理器的Cache的主动复制方法及系统 |
CN102117262A (zh) * | 2010-12-21 | 2011-07-06 | 清华大学 | 用于多核处理器的Cache的主动复制方法及系统 |
CN104252392B (zh) * | 2013-06-28 | 2019-06-18 | 华为技术有限公司 | 一种访问数据缓存的方法和处理器 |
CN104252392A (zh) * | 2013-06-28 | 2014-12-31 | 华为技术有限公司 | 一种访问数据缓存的方法和处理器 |
WO2014206218A1 (zh) * | 2013-06-28 | 2014-12-31 | 华为技术有限公司 | 一种访问数据缓存的方法和处理器 |
CN106663058A (zh) * | 2014-06-24 | 2017-05-10 | 高通股份有限公司 | 分离式共享信息及专用信息缓存 |
CN105426319A (zh) * | 2014-08-19 | 2016-03-23 | 超威半导体产品(中国)有限公司 | 动态缓存分区设备和方法 |
CN105426319B (zh) * | 2014-08-19 | 2019-01-11 | 超威半导体产品(中国)有限公司 | 动态缓存分区设备和方法 |
CN107832238A (zh) * | 2017-10-09 | 2018-03-23 | 江苏航天龙梦信息技术有限公司 | 一种基于龙芯处理器平台的高速缓存作内存的方法 |
CN110825690A (zh) * | 2019-11-14 | 2020-02-21 | 北京华捷艾米科技有限公司 | 多核处理器的核间通信方法及装置 |
CN110825690B (zh) * | 2019-11-14 | 2022-03-15 | 北京华捷艾米科技有限公司 | 多核处理器的核间通信方法及装置 |
WO2024103666A1 (zh) * | 2022-11-16 | 2024-05-23 | 中山大学 | 一种多核处理器动态缓存分区隔离系统及其控制方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101571843A (zh) | 在多核处理器中动态共享高速缓存的方法、设备和系统 | |
CN102662868B (zh) | 用于处理器的动态组相联高速缓存装置及其访问方法 | |
KR101687081B1 (ko) | 단채널 컨볼루션 레이어를 위한 처리 방법 및 장치, 및 다채널 컨볼루션 레이어를 위한 처리 방법 및 장치 | |
EP3232330A1 (en) | Sanitize-aware dram controller | |
CN111602377B (zh) | 高速缓存中资源调整方法、数据访问方法及装置 | |
TWI632460B (zh) | 非對稱設置組合式快取記憶體 | |
US9552303B2 (en) | Method and system for maintaining release consistency in shared memory programming | |
US20140330796A1 (en) | Compressed pointers for cell structures | |
CN106775461B (zh) | 热点数据确定方法、设备及装置 | |
CN104461957A (zh) | 一种异构多核cpu共享片上高速缓存的方法及装置 | |
CN103593304B (zh) | 基于并行设备模型的高效使用缓存的量化方法 | |
CN104050189B (zh) | 页面共享处理方法及装置 | |
CN104778088A (zh) | 一种基于减少进程间通信开销的并行i/o优化方法与系统 | |
CN100520737C (zh) | 高速缓存系统、方法及计算机系统 | |
CN102081659A (zh) | 倒排索引压缩的预处理方法 | |
CN104700435A (zh) | 一种利用oasis图形阵列压缩版图数据的方法 | |
US10417005B2 (en) | Multi-multidimensional computer architecture for big data applications | |
CN102662864B (zh) | 一种缺页异常的处理方法、装置及系统 | |
US20220414013A1 (en) | Dynamically coalescing atomic memory operations for memory-local computing | |
EP3144817A1 (en) | Method and apparatus for multiple accesses in memory and storage system | |
CN104133789A (zh) | 用于调整带宽的设备和方法 | |
CN106155923B (zh) | 内存共享的方法和装置 | |
KR20130131135A (ko) | QoS 기반 캐시 컨트롤러 및 그 동작 방법 | |
CN108257150B (zh) | 一种基于嵌入式系统的目标相关滤波跟踪方法 | |
KR101558068B1 (ko) | GPU를 활용한 R*-tree에서의 부분 노드 병렬 처리 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Open date: 20091104 |