定位多核处理器中的被高速缓存的数据的方法和装置转让专利

申请号 : CN201380077270.6

文献号 : CN105264501B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : S·瓦加佩亚姆

申请人 : 英派尔科技开发有限公司

摘要 :

本文中一般地描述了与管理具有多个核和多个高速缓存的多核处理器装置中的被高速缓存的存储器地址相关的技术。可监视所述多个高速缓存和主存储器之间的通信。可基于监视的通信来标识被所述多个核高速缓存的一个或多个存储器地址。可产生被所述多个核高速缓存的所述一个或多个存储器地址的位置的概率存储器地址分布表,并且可基于概率存储器地址分布表来预测给定存储器地址的位置。

权利要求 :

1.一种用于管理多核处理器装置中的被高速缓存的存储器地址的方法,所述方法包括:监视多核处理器装置的多个核的多个高速缓存中的一个或多个高速缓存和主存储器之间的通信;

基于监视的通信来标识被所述多个核中的每个核高速缓存的一个或多个存储器地址;

产生被所述多个核中的每个核高速缓存的、所述一个或多个存储器地址的位置的存储器地址的概率分布表;以及基于所述存储器地址的概率分布表来预测给定存储器地址的位置。

2.根据权利要求1所述的方法,其中监视通信包括分析在所述主存储器和所述多个核中的一个或多个核之间传送的一个或多个消息。

3.根据权利要求1所述的方法,其中预测给定存储器地址的位置包括:将所述存储器地址的概率分布表存储在与所述多个高速缓存中的每个高速缓存相关联的存储器地址摘要器中;

当所述给定存储器地址被访问时,所述多个核中的一个或多个核访问所述存储器地址的概率分布表;以及利用所述存储器地址的概率分布表来标识将所述给定存储器地址存储在对应的高速缓存中的特定核。

4.根据权利要求3所述的方法,其中访问所述存储器地址的概率分布表包括将所述存储器地址的概率分布表发送到所述多个核中的一个或多个核。

5.根据权利要求1所述的方法,其中产生所述存储器地址的概率分布表包括:对标识的一个或多个存储器地址进行分析以标识所述一个或多个存储器地址的位模式;以及存储所述位模式以产生所述存储器地址的概率分布表。

6.根据权利要求1所述的方法,其中产生s所述存储器地址的概率分布表包括利用Bloom过滤器来在所述存储器地址的概率分布表中给标识的一个或多个存储器地址建立索引。

7.根据权利要求1所述的方法,其中预测给定存储器地址的位置包括:将所述给定存储器地址与所述存储器地址的概率分布表进行比较;以及将一个或多个核标识为所述给定存储器地址的预测位置,其中,所述给定存储器地址基于所述比较被高速缓存。

8.根据权利要求7所述的方法,还包括估计所述给定存储器地址在标识的核中的每个中的发生概率。

9.根据权利要求8所述的方法,还包括基于估计的发生概率来在所述一个或多个标识的核中定位所述给定存储器地址。

10.根据权利要求1所述的方法,其中产生存储器地址的概率分布表包括将所述存储器地址的概率分布表存储在多个路由器中的每个处,其中所述多个路由器被配置为促进所述多个核之间的通信。

11.根据权利要求10所述的方法,其中产生存储器地址的概率分布表包括监视在所述多个路由器中的每个路由器到与所述核相关联的一个或多个路由器之间传送的数据。

12.一种多核处理器装置,包括:

多个核,所述多个核中的每个核与一个或多个片上高速缓存相关联,并且具有位置预测模块;以及存储器地址摘要器,其被配置为监视所述一个或多个片上高速缓存和主存储器之间的通信以使用在所述多个核的所述一个或多个片上高速缓存中被高速缓存的多个存储器地址来产生存储器地址的概率分布表,并且其中所述位置预测模块被配置为基于所述存储器地址的概率分布表来预测给定存储器地址的位置。

13.根据权利要求12所述的多核处理器装置,其中所述多核处理器装置包括以下中的一个:通用处理器、应用特定处理器或嵌入式处理器。

14.根据权利要求12所述的多核处理器装置,其中所述存储器地址摘要器被配置为使用从所述主存储器传送到所述多个片上高速缓存中的每个片上高速缓存的数据的片上位置的存储器地址来产生概率分布。

15.根据权利要求14所述的多核处理器装置,其中所述存储器地址摘要器被配置为对所述存储器地址中的一个或多个存储器地址的位模式进行分析以构建所述概率分布。

16.根据权利要求15所述的多核处理器装置,还包括将所述概率分布从所述存储器地址摘要器发送到所述多个核中的一个或多个核的位置预测模块的互连网络。

17.根据权利要求16所述的多核处理器装置,其中所述位置预测模块被配置为:将所述给定存储器地址与所述概率分布表进行比较,并且基于所述比较将所述一个或多个片上高速缓存标识为所述给定存储器地址的预测位置,其中,所述一个或多个片上高速缓存与使得所述给定存储器地址被高速缓存的一个或多个核相关联。

18.根据权利要求17所述的多核处理器装置,其中所述位置预测模块被配置为估计所述给定存储器地址在与一个或多个核相关联的被标识的一个或多个片上高速缓存中的发生概率。

19.一种多核处理器装置,包括:

多个核,每个核与多个片上高速缓存中的一个或多个片上高速缓存相关联;

多个路由器,其被配置为促进所述多个核之间的通信,其中所述多个路由器中的每个路由器包括被耦合到对应路由器的输出连接路径的所述多个核中的一个或多个核的所述多个片上高速缓存存储的存储器地址的存储器地址的概率分布表,其中所述存储器地址的概率分布表被用来基于存储器地址的概率分布来预测给定存储器地址的位置。

20.根据权利要求19所述的多核处理器装置,其中至少两个核与选自所述多个片上高速缓存的共享片上高速缓存相关联。

21.根据权利要求19所述的多核处理器装置,其中所述多个路由器中的每个被进一步配置为将所述存储器地址的概率分布表发送到与耦合到对应路由器的输出连接路径的核相关联的其它路由器。

22.根据权利要求21所述的多核处理器装置,其中所述存储器地址的概率分布表包括Bloom过滤器,并且其中所述对应路由器被配置为指示所述给定存储器地址是否被存储在耦合到对应路由器的一个或多个输出连接路径的所述多个核中的一个或多个核上。

23.一种用于管理多核处理器装置中的被高速缓存的存储器地址的方法,所述方法包括:产生被所述多核处理器装置的多个核中的一个或多个核高速缓存的一个或多个存储器地址的存储器地址的概率分布表;

通过所述多核处理器装置的所述多个核中的第一核来标识在所述第一核的片上高速缓存上执行一个或多个线程期间将访问的存储器地址;以及基于产生的存储器地址的概率分布表来预测标识的存储器地址在所述多核处理器装置的所述多个核的其它核的一个或多个片上高速缓存上的位置;以及其中,在执行期间将从预测的位置访问与标识的存储器地址相关联的数据。

24.根据权利要求23所述的方法,还包括:

对所述一个或多个存储器地址进行分析以标识所述存储器地址的位模式;以及利用所述位模式来产生所述存储器地址的概率分布表。

25.根据权利要求23所述的方法,其中预测标识的存储器地址的位置包括:将标识的存储器地址与所述存储器地址的概率分布表进行比较;以及基于所述比较,将一个或多个片上高速缓存标识为标识的存储器地址的预测位置,其中,所述一个或多个片上高速缓存与所述一个或多个核相关联。

说明书 :

定位多核处理器中的被高速缓存的数据的方法和装置

背景技术

[0001] 除非在本文中另外表明,否则本部分中所述的方法对于本申请中的权利要求来说不是现有技术并且不由于包括在本部分中而被承认是现有技术。
[0002] 许多现代的计算系统利用具有两个或多个核的多核处理器,这些核互相配合工作以提高性能并且高效地处理多个任务和线程。执行单个和多个线程应用所需的数据可被存储在多核处理器的多个核的高速缓存上,其中用于存储数据的核可以不同于用于执行单个或多个线程的那些核。在操作期间,可从多个核上的被高速缓存的位置访问这样的数据,并且可能需要确定存储器地址的被高速缓存的位置。
[0003] 针对多核处理器实施的高速缓存一致性协议可合并确定存储器地址的被高速缓存的位置的功能。例如,集中式目录可被用来确定给定存储器地址的被高速缓存的位置。在某些多核处理器中,可实施分布式目录,在分布式目录中,对一个或多个存储器地址的查找请求可被发送到目录,随后,在目录中搜索存储器地址。在其它多核处理器中,核等级目录可被用来确定某些存储器地址的位置。
[0004] 概述
[0005] 以下概要仅仅是说明性的,而并不意图以任何方式是限制性的。除了说明性的方面,上述实施例和特征、另外的方面、实施例和特征将通过参考附图和下面的详细描述而变得显而易见。
[0006] 本文中一般地描述了与管理多核处理器中的被高速缓存的存储器地址相关的技术。所述的各种技术可应用于方法、系统、装置或它们的组合。
[0007] 根据本公开的一些示例,描述了与管理多核处理器装置中的被高速缓存的存储器地址相关的各种方法。一些示例方法可包括监视多核处理器装置的多个核的多个高速缓存中的一个或多个和主存储器之间的通信。可基于监视的通信来标识被所述多个核中的每个高速缓存的一个或多个存储器地址。可产生被所述多个核高速缓存的所述一个或多个存储器地址的位置的概率存储器地址分布表,并且可基于概率存储器地址分布表来预测给定存储器地址的位置。
[0008] 根据本公开的另外的示例,描述了与管理多核处理器装置中的被高速缓存的存储器地址相关的另外的方法。一些示例方法可包括产生被多核处理器装置的多个核中的一个或多个高速缓存的一个或多个存储器地址的概率存储器地址分布表。可在多核处理器装置的多个核中的第一核上执行一个或多个线程。可标识在第一核的片上高速缓存上执行所述一个或多个线程期间将访问的存储器地址。可基于产生的概率存储器地址分布表来在多核处理器装置的其它核的一个或多个片上高速缓存上预测标识的存储器地址的位置。随后可从预测的位置访问与标识的存储器地址相关联的数据。
[0009] 根据本公开的还有的另外的示例,描述了多核处理器装置。所述的一些多核处理器装置可包括多个核。所述核中的每个可与一个或多个片上高速缓存相关联,其中所述核中的一个或多个可包括位置预测模块。多核处理器装置可包括存储器地址摘要器,其被配置为监视所述一个或多个片上高速缓存和主存储器之间的通信以产生概率存储器地址分布表。概率存储器地址分布表可由存储器地址摘要器使用在所述多个核的一个或多个片上高速缓存中被高速缓存的多个存储器地址来产生。每个位置预测模块可被配置为基于概率存储器地址分布表来预测给定存储器地址的位置。
[0010] 根据本公开的另外的示例,描述了另外的多核处理器装置。一些示例多核处理器装置可包括多个核。每个核可与一个或多个片上高速缓存相关联。多核处理器装置可包括被配置为促进多个核之间的通信的多个路由器。所述多个路由器中的每个可包括被耦合到对应路由器的输出连接路径的核中的一个或多个的多个片上高速缓存存储的存储器地址的概率存储器地址分布表。概率存储器地址分布表可被用来基于存储的存储器地址分布来预测给定存储器地址的位置。

附图说明

[0011] 在附图中:
[0012] 图1是用于管理多核处理器装置中的被高速缓存的存储器地址的处理的示图;
[0013] 图2是说明示例多核处理器装置的功能部件的示意图;
[0014] 图3说明图2的多核处理器装置的存储器地址摘要器产生的示例概率存储器地址分布表;
[0015] 图4说明图2的多核处理器装置的存储器地址摘要器产生的另一示例概率存储器地址分布表;
[0016] 图5是说明另一示例多核处理器装置的功能部件的示意图;
[0017] 图6说明根据本文中所述的至少一些实施例布置的、图5的多核处理器装置的示例路由器;以及
[0018] 图7是说明被布置用于管理多核处理器中的被高速缓存的存储器地址的示例计算装置的框图;
[0019] 所有附图都是依照本文所述的至少一些实施例来安排的。

具体实施方式

[0020] 在以下详细描述中,对附图进行参考,所述附图形成详细描述的一部分。除非上下文另外指示,否则在附图中,相似的符号通常标识相似的部件。在详细描述、附图和权利要求中描述的说明性实施例并不意味着是限制性的。在不脱离本文所提供的主题的精神或范围的情况下,可以利用其它实施例,以及可以进行其它改变。将易于理解的是,如在本文中一般地描述的和在图中示出的那样,本公开的各方面可以以广泛多样的不同配置被布置、替代、组合、分割和设计,所有这些在本文中都被明确地构想。
[0021] 本公开的示例实施例一般地针对用于管理多核处理器装置中的被高速缓存的存储器地址的技术。多核处理器装置可包括多个核,每个核可包括一个或多个片上高速缓存,其可被布置为在物理上紧密邻近相应的核。存储器位置可被高速缓存在所述一个或多个片上高速缓存中。在所述的实施例中,概率技术可被用来使用将被访问的存储器位置的存储器地址定位给定存储器地址的片上位置。使用下述概率技术预测存储器地址的高速缓存位置可能使得定位存储器地址的查找时间大幅缩短。所述技术对于具有大量核(例如, 1000个或更多个核)的多核处理器装置可能是可伸缩的。
[0022] 图1是根据本文中所述的至少一些实施例布置的、用于管理多核处理器装置中的被高速缓存的存储器地址的示例过程100的示图。过程100可包括如方框102-108中的一个或多个所示的一个或多个操作、功能或动作。尽管方框按顺序的次序示出,但是这些方框也可并行地执行,和/或按与本文中所述的次序不同的次序执行。另外,各个方框可基于期望的实施方式而被组合为更少的方框,被划分为附加的方框,和/或被去除。过程100可从方框102 开始。
[0023] 在方框102,“监视多核处理器装置的多个高速缓存和主存储器之间的通信”,可监视并分析在多核处理器装置的多个核的多个高速缓存和主存储器之间传送的消息。每个核可与一个或多个片上高速缓存(诸如等级1 (L1)高速缓存和/或等级2(L2)高速缓存)相关联。另外,可存在可被多个核中的两个或更多个核访问的其它片上高速缓存,诸如共享高速缓存。在一些示例中,一个核在执行一个或多个线程期间所用的数据可被高速缓存在多核处理器装置的其它核的高速缓存中。而且,该数据也可被高速缓存在核中的两个或更多个之间的共享高速缓存中。在一个实施例中,多个核的多个高速缓存中的每个高速缓存条目可包括在主存储器中被高速缓存的数据的至少一部分的被高速缓存的副本。
[0024] 每个片上高速缓存和主存储器之间的通信可由多核处理器装置的存储器地址摘要器监视。在一个示例中,多核处理器装置可包括附加的处理核,其可被配置为执行线程,该线程可通过监视请求处理核的地址以及从共享高速缓存和/或主存储器提取的数据来动态地概括高速缓存的数据的片上位置的分布。在其它示例中,多核处理器装置的处理核中的一个或多个可被配置为充当存储器地址摘要器。
[0025] 在一个示例中,可监视核的片上高速缓存(诸如L1高速缓存或L2高速缓存)和共享高速缓存之间的通信。在另一示例中,可监视共享高速缓存和主存储器之间的通信。在又一示例中,可监视片上高速缓存(诸如L1高速缓存或L2高速缓存)和主存储器之间的通信。在另一示例中,可监视两个或更多个核的片上高速缓存(例如,L2高速缓存)之间的通信。这样的通信可通过通信总线或互连网络来传载。在某些示例中,可监视向片上高速缓存、共享高速缓存和主存储器请求数据的核的存储器地址以及从片上高速缓存、共享高速缓存和主存储器提取的数据。
[0026] 处理可从方框102继续进行到方框104,“标识被多个核中的一个或多个核高速缓存的一个或多个存储器地址”。在方框104,多核处理器装置的存储器地址摘要器基于监视的通信来标识被多个核中的一个或多个核高速缓存的一个或多个存储器地址。在一些示例中,可对在核或片上高速缓存和主存储器之间传送的消息进行分析以标识被相应的核高速缓存的一个或多个存储器地址。
[0027] 处理可从方框104继续进行到方框106,“产生所述一个或多个存储器地址的位置的存储器地址分布表”。在方框106,存储器地址摘要器可产生被所述多个核中的每个核高速缓存的所述一个或多个存储器地址的位置的存储器地址分布表。在操作期间,可在多核处理器装置的每个核上执行一个或多个线程。在这样的执行期间,存储器地址摘要器可标识一个或多个存储器地址。此外,可通过对这样的请求进行分析来监视请求被高速缓存的数据的相应的核的核/高速缓存标识编号。这样的核/高速缓存标识编号可被存储器地址摘要器用来当在多核处理器上执行一个或多个线程期间从一个或多个高速缓存和/或从主存储器提取数据时构建存储器地址分布表。下面将参照图4来描述存储器地址分布表的细节。在一些示例中,附加核可被用来监视请求核的地址以及从共享高速缓存和/或主存储器提取的数据以产生存储器地址分布表。在其它示例中,多核处理器装置的核中的一个或多个可被配置为构建存储器地址分布表。
[0028] 在一些示例中,存储器地址分布表可包括使用被所述多个核中的每个核高速缓存的一个或多个存储器地址的位置而产生的概率分布表。在某些示例实施例中,可对标识的一个或多个存储器地址进行分析来标识存储器地址的位模式,并且标识的位模式可被用来产生存储器地址分布表。然而,可设想产生存储器地址分布表的其它技术。存储器地址分布表可被存储在存储器地址摘要器上。在一些示例中,存储器地址分布表可被传送(例如,周期性地发送)到多核处理器装置的一个或多个核,其中每个核可包括相应的位置预测模块。位置预测模块可被配置为存储存储器地址分布表,并且还被配置为基于存储的存储器地址分布表来预测给定存储器地址的位置。
[0029] 处理可从方框106继续进行到方框108,“基于存储器地址分布表来预测给定存储器地址的位置”。在方框108,可使用存储器地址分布表来预测给定存储器地址(例如,在多核处理器装置的核上执行一个或多个线程期间将访问的存储器地址)的位置。在一些示例中,多核处理器装置的每个核可包括位置预测模块,其(例如,经由硬件逻辑或软件执行指令)被配置为将给定存储器地址与存储器地址分布表(例如,概率分布表)进行比较并且标识可包括标识的存储器地址的一个或多个片上高速缓存。
[0030] 存储器地址分布表可使用各种其它技术而产生。在一些示例实施例中,可监视通过多个路由器(例如,与一个或多个核相关联的路由器)路由的数据以产生存储器地址分布表。每个路由器可维护存储器地址分布表,其中该表包括指示被耦合到对应路由器的输出连接路径的核中的一个或多个核的片上高速缓存存储的存储器地址的数据。在一些示例中,存储器地址分布表可包括被物理连接到对应路由器的核中的一个或多个核的多个片上高速缓存存储的存储器地址的存储器地址列表。这样的存储器地址分布表可由对应路由器动态更新,并且可被用来预测任何给定存储器地址的位置。
[0031] 图2是说明根据本公开的至少一些实施例布置的示例多核处理器装置 200的功能部件的示意图。多核处理器装置200可以是通用处理器、专用处理器、应用特定处理器、嵌入式处理器、图形处理器等。多核处理器装置 200可包括多个核,诸如第一核202和第二核204。核的数量(N)可以是大于1的任何数量。每个核(诸如第一核202和第二核204)包括内部功能块。
[0032] 在一些实施例中,第一核202可包括处理器206,第二核204可包括处理器208。而且,每个核可与一个或多个片上高速缓存相关联。例如,第一核102可包括等级1(L1)高速缓存210和等级2(L2)高速缓存212。类似地,第二核204可包括等级1(L1)高速缓存214和等级2(L2)高速缓存 216。另外,第一核202和第二核204可与共享高速缓存218相关联。应指出,部件的以上布置纯粹是说明性的,并且可设想各种其它布置和部件。本技术可适用于具有存储数据的本地高速缓存和共享高速缓存的不同配置的各种多核处理器。例如,至少两个核可与从多核处理器装置200的多个片上高速缓存选择的共享片上高速缓存相关联。在一些示例中,可提供附加的高速缓存等级,诸如L3高速缓存。在一些示例中,可在每个核中提供单个L1高速缓存。
[0033] 在一些实施例中,在多核处理器装置200执行单线程或多线程应用期间访问的数据可位于多核处理器装置200的片上高速缓存(诸如第一处理器 202的L1高速缓存210和L2高速缓存212以及第二处理器204的L1高速缓存214和L2高速缓存216)和共享高速缓存218上。而且,这样的数据的副本也可被存储在主存储器220中。这样的数据可在执行机器指令的同时供核 (诸如第一核202和第二核204)访问(例如,可供用于读或写访问)。在一些实施例中,主存储器220可包括片外高速缓存。
[0034] 多核处理器装置200还可包括存储器地址摘要器222,其被配置为监视一个或多个片上高速缓存(例如,第一处理器202的L2高速缓存212或第二处理器204的L2高速缓存216)和主存储器220之间的通信,并且还被配置为产生可被用来预测给定存储器地址的位置的存储器地址分布表223。在一个实施例中,存储器地址摘要器222可被配置为监视一个或多个处理器的片上高速缓存(例如,第一处理器202的L1高速缓存210和L2高速缓存 212)之间的通信,并且还被配置为基于监视的通信来产生存储器地址分布表 223。在另一实施例中,存储器地址摘要器222可被配置为监视共享高速缓存 218和主存储器220之间的通信,并且还被配置为基于监视的通信来产生存储器地址分布表223。在某些实施例中,上述技术的不同组合和/或子集可被用来产生存储器地址分布表223。
[0035] 存储器地址摘要器222可被配置为基于监视的通信,使用在多个核(诸如第一核22和第二核204)的一个或多个片上高速缓存(例如,L1高速缓存 210、L2高速缓存212、L1高速缓存214、L2高速缓存216)中被高速缓存的多个存储器地址的位置来产生存储器地址分布表223。在一些示例实施例中,存储器地址摘要器222可包括附加核,其可被配置为通过监视请求核的地址以及从共享高速缓存218和/或主存储器220提取的数据来动态地概括被高速缓存的数据的片上位置的分布。在一些示例中,多核处理器装置200的核中的一个或多个核可被配置为充当存储器地址摘要器222。在一些其它示例中,可包括充当存储器地址摘要器222的(诸如高速缓存一致性协议中使用的)附加硬件逻辑。在一个示例中,多核处理器装置
200可包括可被配置为产生存储器地址分布表223的片外核或现场可编程门阵列(FPGA)。
[0036] 存储器地址摘要器222可被配置为将产生的存储器地址分布表223传送 (例如,周期性地发送、按需等方式)到位置预测模块,其中每个核可包括相应的位置预测模块。例如,来自存储器地址摘要器222的存储器地址分布表223可通过通信总线(例如,互连网络228)被发送到第一核202的位置预测模块224和第二核204的位置预测模块226。位置预测模块224和226可被配置为存储存储器地址分布表223,并且还被配置为基于存储的存储器地址分布表223来预测给定存储器地址的位置。在一些实施例中,存储器地址摘要器222可根据预定调度将存储器地址分布表223发送到位置预测模块,诸如224和226。在一些示例中,位置预测模块(诸如224和226)中的每个可包括存储器地址分布表223的子集。存储器地址表
223的子集可基于在相应的位置预测模块相关联的处理器核上执行的线程所访问的数据来选择。
[0037] 在一些示例实施例中,可在多核处理器装置200的第一核202上执行一个或多个线程,并且可标识在第一核202上执行一个或多个线程期间将访问的存储器地址。存储器地址摘要器222可通过对从相应核对另一高速缓存 (诸如共享高速缓存218)的这样的存储器访问请求(一般用参考数字230 表示)进行分析来监视核(诸如第一核202)的核标识编号或者请求被高速缓存的数据的高速缓存的标识编号。在一些实施例中,共享高速缓存218可依次从主存储器220提取数据(一般用参考数字232表示),并将提取的数据传送到请求核202(一般用参考数字234表示)。类似地,请求被高速缓存的数据的其它核(诸如第二核204)的核标识编号可被用来当从一个或多个高速缓存或者从主存储器220提取数据时构建存储器地址分布。
[0038] 存储器地址摘要器222可被配置为对从主存储器220传送到核(诸如第一核202)或一个或多个片上高速缓存(诸如L2高速缓存212)的这样的消息进行分析以监视请求核的核标识编号和被高速缓存的数据。在各种示例中,存储器地址分布表223可包括概率分布表。在一些示例中,存储器地址摘要器222可被配置为对每个存储器地址的位模式进行分析以构建概率分布表。然而,其它技术可被用来从被高速缓存的数据的存储器地址产生存储器地址分布表223。
[0039] 第一核202和第二核204的位置预测模块224和226分别可利用存储器地址分布表223来预测给定存储器地址(诸如在执行线程期间请求的存储器地址)的位置。位置预测模块224和226可被配置为将标识的存储器地址与存储器地址分布表223(例如,概率分布表)进行比较并且标识可将存储器地址高速缓存在相关联的高速缓存中的一个或多个核。可将这样的一个或多个片上高速缓存标识为标识的存储器地址的预测位置。
[0040] 在各种示例实施例中,可将两个或更多个片上高速缓存标识为存储器地址的预测位置,并且还可估计每个预测位置上的存储器地址的发生概率。在各种实施例中,当在核上执行一个或多个线程期间产生存储器访问请求时,将所需的存储器地址呈现给相应核的位置预测模块。结果,在本地高速缓存未命中的情况下,可包含存储器地址的预测位置可被访问。
[0041] 如上所述,存储器地址摘要器222可通过监视多核处理器装置200的多个片上高速缓存之间(诸如第一核202的L1高速缓存210和L2高速缓存 212之间或者L1高速缓存214和L2高速缓存216之间)的通信来产生存储器地址分布表223。类似地,可监视片上高速缓存(诸如第一核202的L2高速缓存212)和共享高速缓存218之间的通信。而且,可监视共享高速缓存 218和主存储器220之间的通信,并且可利用该通信来产生存储器地址分布表223。
[0042] 可动态地更新存储器地址分布表223,并且可周期性地将存储器地址分布表223发送到每个核(诸如第一核202和第二核204)的位置预测模块 (诸如224和226),以使得更新的分布223可供相应的位置预测模块用于预测任何给定存储器地址的位置。
[0043] 图3说明根据本文中所述的至少一些实施例布置的示例存储器地址分布表300。存储器地址摘要器222可包括被配置为执行用于产生存储器地址分布表300的分布摘要器过程的核(或控制器或逻辑等)。分布摘要器线程可以是简单线程,其可标识用于将存储器地址映射到一个或多个核和相关联的高速缓存的基本模式。然而,各种其它技术可被存储器地址摘要器222用于产生存储器地址分布表300。在其它示例中,存储器地址摘要器222可包括用于产生存储器地址分布表300的硬件逻辑。在一些示例中,存储器地址分布表300可指示存储器地址的位模式302和核标识编号304之间的映射以供用于预测相应存储器地址的位置。
[0044] 在一个示例中,存储器地址分布表300示出,给定存储器地址具有诸如参考数字306所表示的位模式“00.0X010XXX”,其有可能存在于核编号7 (由条目308表示)中。类似地,如果给定存储器地址具有诸如参考数字 310所表示的位模式“00.0X10110X1XXX”,则它有可能存在于多核处理器装置200的核编号5(由条目312表示)中。存储器地址分布表300可包括若干个这样的位模式和对应的预测核位置。多核处理器装置200的核(诸如第一核202和第二核204)的位置预测模块(诸如模块224和226)可查找这样的存储器地址分布表300来预测给定存储器地址的位置并且从预测的位置访问与该存储器地址相关联的数据。
[0045] 图4说明根据本文中所述的至少一些实施例布置的另一示例存储器地址分布表400。存储器地址分布表400可包括存储器地址的位模式402、关于相应存储器地址的预测位置的核标识编号404以及给定存储器地址在与一个或多个标识的核相关联的一个或多个高速缓存中的发生概率406之间的映射。
[0046] 例如,如果给定存储器地址具有诸如参考数字408所表示的位模式“000X0010”,则它有可能存在于多核处理器的核编号4(由条目410表示)中,并且该位模式在核编号4中的发生概率约为80%(由条目412表示)。类似地,如果给定存储器地址具有诸如参考数字414所表示的位模式“000X0110”,则它有可能存在于多核处理器设备的核编号2(由条目416 表示)中,并且该位模式在核编号4中的发生概率约为12%(由条目418表示)。多核处理器装置200的核(诸如第一核202和第二核204)的位置预测模块(诸如由参考数字224和226)可利用这样的概率分布来确定给定存储器地址的可能的位置。
[0047] 作为示例,如果位模式408包括具有被设置为0的地址位18的32位地址,则它可被映射到核标识编号4,其中存储的地址的大约80%具有被设置为0的地址位18。类似地,存储在核2中的地址的大约12%可具有被设置为 0的地址位18。当特定核(比如说核0)需要地址位18为0的特定存储器地址的位置时,对应的位置预测模块利用上述概率分布,并且可在核4和核2 中查找存储器地址。在一些示例中,可对存储器地址的32个位中的每个产生概率分布,并且可利用该概率分布来确定存储器地址的位置。
[0048] 多核处理器装置200的核(诸如第一核202和第二核204)的位置预测模块(诸如由参考数字224和226表示)可利用存储器地址摘要器222产生的存储器地址分布表223来预测给定存储器地址的位置。在一些示例实施例中,位置预测模块可使用逻辑运算(诸如移位运算、掩蔽运算)和预加载值来提供给定存储器地址的快速位置预测。这样的位置预测模块可在几个时钟周期内提供预测位置。在一些示例中,位置预测模块可利用硬件表和相关联的逻辑来缩短标识存储器地址分布表223中的模式以预测给定存储器地址的位置的时间。存储器地址分布表300和400在这里仅仅是为了说明性的目的而示出的。各种其它技术可被用来产生用于预测一个或多个存储器地址的位置的存储器地址分布表。
[0049] 图5是说明根据本公开的至少一些实施例布置的另一示例多核处理器装置500的示意图。多核处理器装置500可包括诸如由参考数字502、504、 506、508、510、512、514和516表示的多个核。多核处理器装置500还可包括诸如由参考数字518、520、522、524、526、528、530和532表示的多个路由器,这些路由器耦合到它们对应的核502、504、506、508、510、512、 
514和516。路由器518、520、522、524、526、528、530和532可被配置为促进多个核502、504、
506、508、510、512、514和516之间的通信。
[0050] 这里,路由器518、520、522、524、526、528、530和532按矩阵形式布置,并且形成网格网络。应指出,路由器和核的以上配置仅仅是为了说明性的目的。可设想路由器和核的各种其它的布置。例如,一个路由器可耦合到多个核,或者多个路由器可耦合到一个核。
[0051] 在该示例实施例中,每个核(例如,核502)可包括处理器534,并且可与一个或多个片上高速缓存(诸如L1高速缓存536和L2高速缓存538)相关联。在一些示例中,可存在附加的片上共享高速缓存。本技术可适用于具有存储数据的本地高速缓存和共享高速缓存的不同配置的各种多核处理器。而且,路由器中的每个(例如,路由器518)可包括存储器地址的诸如参考数字540所表示的存储器地址分布表(或者其子集),所述存储器地址是被耦合到对应路由器518的输出连接路径(诸如连接路径542和544)的核 (诸如核504和510)中的一个或多个核的多个片上高速缓存存储的存储器地址。存储器地址分布表(诸如表540)可由每个路由器(例如,路由器 518)维护,并且可被用来预测给定存储器地址的位置。
[0052] 在一些示例实施例中,存储器地址分布表540可包括关于存储在核中的一个或多个核上的存储器地址的概率信息。将参照图6来更详细地描述存储器地址分布表540的产生的细节。在一个示例中,存储器地址分布表540可包括Bloom过滤器,其充当指示给定存储器地址是否被存储在耦合到对应路由器(例如,路由器518)的一个或多个输出连接路径(诸如连接路径542 和544)的核(诸如核504和510)中的一个或多个核上的数据结构。在一些示例中,附加的硬件逻辑可被用来当相关联的高速缓存的内容被更新时执行对Bloom过滤器的更新。在一个实施例中,附加的硬件逻辑可驻留在每个路由器中。在一些其它示例中,附加的硬件逻辑可驻留在耦合到每个路由器的核中。在一些示例中,线程可在耦合到每个路由器的核上被执行以更新 Bloom过滤器。因此,路由器518、520、522、524、526、528、530和532 中的每个维护每个输出连接路径处的关于存储在从相应的输出链路路径可到达的核上的存储器地址的信息。
[0053] 在操作期间,可将请求发送到可被指示为给定存储器地址的可能的位置的核,并且可接收来自这些核中的一个的响应。然后可从相应的核访问给定存储器地址。
[0054] 在一些示例实施例中,所述多个路由器中的每个(诸如路由器518)可被配置为将存储器地址分布表(例如,表540)发送到与耦合到对应路由器 (路由器518)的输出连接路径(例如,连接路径542和544)的核(诸如核 504和510)相关联的其它路由器(诸如路由器520和526)。可动态地更新链接到每个路由器的存储器地址分布表540,并且可利用存储器地址分布表 540来预测访问的存储器地址的位置。
[0055] 如以上所讨论的,每个路由器可维护用于相关联的核的被高速缓存的内容的Bloom过滤器。当信息针对每个路由器被更新时,可将该信息传播到其它邻近的路由器。每个路由器可用关于邻近对应的路由器的核的信息以及对这样的信息的每次更新来维护存储器分布表的一部分,可将更新传播到邻近核。在一些示例实施例中,所述多个路由器中的每个可以以不同的精度级别来维护多个存储器地址分布表,并且这样的表可被用来预测给定存储器地址。
[0056] 存储器分布表的产生:以上说明的示例实施例描述了具有多个路由器的多核处理器装置。每个路由器可维护存储器分布表以供用于预测给定存储器地址的被高速缓存的位置。可通过监视输入和输出通过多核处理器装置的每个路由器的路由来产生存储器分布表。
[0057] 图6说明根据本文中所述的至少一些实施例布置的、图5的多核处理器装置500的示例路由器。如所示,多个输入请求(诸如由参考数字602、 604、606和608表示)和多个输出请求(诸如由参考数字610、612、614和 616表示)可通过路由器518被路由。可监视输入请求602、604、606和608 以及输出请求610、612、614和616的这样的路由,并且可利用该路由来产生路由器518的存储器地址分布表540。
[0058] 可对输入请求602、604、606和608以及输出请求610、612、614和616 进行分析以监视通过路由器518发送和/或接收(即,传送)数据的核的核标识编号。通过路由器518传送的数据的片上位置可被用来产生对应路由器的存储器地址分布表。在各种示例实施例中,存储器地址分布表可包括概率分布。在一些示例实施例中,存储器地址分布表可包括Bloom过滤器。
[0059] 如上所述,所述多个路由器中的每个(诸如路由器518)可被配置为将存储器地址分布表(例如,表540)发送到与耦合到对应路由器(路由器 518)的输出连接路径(例如,连接路径542和544)的核(诸如核504和 510)相关联的其它路由器(诸如路由器520和526)。这样的更新的存储器地址分布表然后可被用来预测给定存储器地址的位置。
[0060] 本文中所述的示例技术可被用来定位多核处理器装置中的被高速缓存的数据。示例技术还可被用来当多核处理器装置的单个核开启、但是其它核的高速缓存工作时定位被高速缓存的数据。更一般地,示例技术可被用在如下的各种应用中,在这些应用中,被在处理器上执行的线程访问的数据可被高速缓存在多核处理器装置的许多高速缓存中的一个中,并且维护存储器地址到它们的高速缓存位置的准确映射的效率低下。在一些示例中,上述概率技术可连同标准的一致性逻辑一起来实施以定位多核处理器装置的核中的被高速缓存的数据。
[0061] 在某些实施例中,附加技术可被用来预测给定存储器地址的位置。例如,对给定存储器地址的请求可被传送到每个核以定位具有给定存储器地址的核。在其它示例中,对给定存储器地址的请求可被发送到中央目录,并且可被进一步引导到具有给定存储器地址的适当的目的地核。
[0062] 上述示例方法和系统提供用于预测多核处理器中以及其它一般的并行或分布式计算系统中的被高速缓存的数据的位置的概率框架。本技术被用来使用基于存储在多核处理器的核上的存储器地址的位置的存储器地址分布的计算来预测给定存储器地址的位置。这样的预测可以在不维护具有很大大小的、可与核的数量和多核处理器的存储器大小成比例地生长的集中式目录的情况下进行。
[0063] 例如,对于具有N个核的多核处理器装置,给定存储器地址可存在于任何的高速缓存中或者N个核中的每个中。如果片上高速缓存中的至少一个包括大约M个存储器位置,则对于位掩模数据结构,存储器目录可能需要大约 M×N个位来维护存储器位置到它们所有的被高速缓存的位置的映射。而且,为了向N个核中的每个提供映射的副本,可利用大约(M×N)×N个位的目录。可以看出,随着核的数量增加,维护这样的映射的存储器要求可能变得相当大。本技术继而可利用概率技术来在不需要集中式和/或局部目录的情况下预测给定存储器地址的位置。而且,本解决方案对于大量核是可伸缩的,并且可导致多核处理器中的数据查找时间缩短。
[0064] 图7是说明根据本公开的至少一些实施例布置的、被布置为用于管理多核处理器中的被高速缓存的存储器地址的示例计算装置700的框图。在非常基本的配置702中,计算装置700通常包括一个或多个处理器704和系统存储器706。存储器总线708可被用于处理器704和系统存储器706之间的通信。处理器704包括多核处理器。
[0065] 取决于期望的配置,处理器704可以是任何类型,包括但不限于微处理器(μP)、微控制器(μC)、数字信号处理器(DSP)或它们的任何组合。处理器 704可包括一个或多个等级的高速缓存,诸如等级一的高速缓存710和等级二的高速缓存712、两个或更多个处理器核714和寄存器716。示例处理器核 714可包括算术逻辑单元(ALU)、浮点单元(FPU)、数字信号处理核(DSP 核)或它们的任何组合。示例存储器控制器718也可与处理器704一起被使用,或在一些实施方式中存储器控制器718可以是处理器704的内部部分。处理器704可包括诸如上述的位置预测模块,其促进基于被处理器核714中的一个或多个的片上高速缓存存储的存储器地址的存储器地址分布表来预测给定存储器地址的位置。
[0066] 取决于期望的配置,系统存储器706可以是任何类型,包括但不限于易失性存储器(诸如RAM)、非易失性存储器(诸如ROM、闪存等)或它们的任何组合。系统存储器706可包括操作系统720、一个或多个应用722以及程序数据724。在一些实施例中,应用722可被布置为与程序数据724一起在操作系统720上进行操作。该所述的基本配置702在图7中通过内部虚线内那些部件而被示出。应用722可包括用于预测给定存储器地址的位置的算法。程序数据724可包括被处理器核中的一个或多个高速缓存的一个或多个存储器地址的位置的存储器地址分布表。
[0067] 计算装置700可具有附加特征或功能以及用于促进基本配置702和任何所需的装置和接口之间的通信的附加接口。例如,总线/接口控制器730可被用来促进基本配置702与一个或多个数据存储装置732之间经由存储接口总线734的通信。数据存储装置732可以是可移除存储装置736、不可移除存储装置738或它们的组合。
[0068] 可移除存储装置和不可移除存储装置的示例举几个示例来说包括诸如软盘驱动器和硬盘驱动器(HDD)的磁盘装置、诸如压缩盘(CD)驱动器或数字通用盘(DVD)驱动器的光盘驱动器、固态驱动器(SSD)和磁带驱动器。示例计算机存储介质可包括在信息存储的任何方法或技术中被实施的易失性和非易失性、可移除和不可移除的介质,诸如计算机可读指令、数据结构、程序模块或其它数据。
[0069] 系统存储器706、可移除存储装置736和不可移除存储装置738是计算机存储介质的示例。计算机存储介质包括但不限于:RAM、ROM、 EEPROM、闪存或其它存储技术、CD-ROM、数字通用盘(DVD)或其它光学存储装置、磁带盒、磁带、磁盘存储装置或其它磁存储器装置或可用于存储期望的信息以及可被计算装置700访问的任何其它介质。任何这样的计算机存储介质可以是计算装置700的一部分。
[0070] 计算装置700也可包括用于促进从各种接口装置(例如,输出装置 742、外围接口744和通信装置746)到基本配置702的经由总线/接口控制器 730的通信的接口总线740。示例输出装置742包括图形处理单元748和音频处理单元750,其可被配置为与诸如显示器或扬声器的各种外部装置经由一个或多个A/V端口752进行通信。
[0071] 示例外围接口744包括串行接口控制器754或并行接口控制器756,其可被配置为与诸如输入装置(例如,键盘、鼠标、笔、声音输入装置、触摸输入装置等)或其它外围装置(例如,打印机、扫描仪等)的外部装置经由一个或多个I/O端口758进行通信。示例通信装置746包括网络控制器760,其可被布置为促进与一个或多个其它计算装置762经由一个或多个通信端口 764在网络通信链路上的通信。
[0072] 网络通信链路可以是通信介质的一个示例。通信介质通常可以被体现为计算机可读指令、数据结构、程序模块或诸如载波或其它传输机制的调制数据信号中的其它数据,并且可包括任何信息递送介质。“调制数据信号”可以是具有其特性集合中的一个或多个或者被更改为对信号中的信息进行编码的信号。举例来说,而非限制,通信介质可包括诸如有线网络或有线直接连接的有线介质、以及诸如声学、射频(RF)、微波、红外(IR)和其它无线介质的无线介质。如本文中所使用的术语计算机可读介质可包括存储介质和通信介质两者。
[0073] 计算装置700也可被实施作为小型便携式(或移动)电子装置的一部分,所述电子装置诸如蜂窝电话、个人数据助理(PDA)、个人媒体播放器装置、无线网表装置、个人耳机装置、专用装置或包括以上功能中的任何功能的混合装置。计算装置700也可被实施作为包括笔记本计算机和非笔记本计算机配置两者的个人计算机。
[0074] 在本申请中所述的特定实施例(意图使其作为各方面的例证)方面,本公开不应当是受限的。如对本领域技术人员来说将显而易见的,在不脱离其精神和范围的情况下可以做出许多修改和改变。通过前述描述,本公开范围内的功能等价的方法和设备(除本文中所列举的那些之外)对于本领域技术人员来说将是显而易见的。意图使这样的修改和改变落在所附权利要求的范围内。
[0075] 本公开仅由所附权利要求的各项以及这样的权利要求所赋予的等同物的全部范围一起来限定。应当理解,本公开并不限于特定的方法、试剂、化合物成分或生物系统(当然其可以变化)。还应当理解,本文中所使用的术语仅仅是为了描述特定实施例的目的,且并不意图是限制性的。
[0076] 关于基本上任何复数和/或单数术语在本文中的使用,本领域技术人员可以按照其适用于的情景和/或应用而从复数转化到单数和/或从单数转化到复数。为了清楚起见,在本文中可能明确地阐述了各种单数/复数变换。
[0077] 本领域技术人员将理解的是,总之,本文中且尤其是所附权利要求(例如所附权利要求的主体)中所使用的术语通常意图是“开放的”术语(例如术语“包括”应当被解释为“包括但不限于”,术语“具有”应当被解释为“至少具有”,术语“包含”应当被解释为“包含但不限于”,等等)。本领域技术人员将进一步理解的是,如果所引入的权利要求叙述的特定数字是有意的,这样的意图将被明确叙述在权利要求中,并且在没有这样的叙述的情况下不存在这样的意图。
[0078] 例如,作为理解的辅助,下面所附的权利要求可以包含引入性短语“至少一个”和“一个或多个”的使用以引入权利要求叙述。然而,这样的短语的使用不应被解释为暗示着通过不定冠词“一”或“一个”引入权利要求叙述将包含这样引入的权利要求叙述的任何特定权利要求限定到包含只有一个这样的叙述的实施例,即使当该同一权利要求包括引入性短语“一个或多个”或“至少一个”以及诸如“一”或“一个”的不定冠词时也是这样(例如,“一”和/或“一个”应当被解释为意味着“至少一个”或“一个或多个”);对于用来引入权利要求叙述的定冠词的使用来说情况是同样的。
[0079] 此外,即使明确记载了所引入的权利要求叙述的特定数字,本领域技术人员也将认识到,这样的记载应当被解释为意味着至少所记载的数字(例如,在没有其它修饰的情况下,“两个叙述”的直率叙述意味着至少两个叙述或者两个或更多叙述)。此外,在其中使用类似于“A、B和C等中的至少一个”的惯例的那些实例中,通常这样的构造意图是本领域技术人员将理解该惯例的意义(例如,“具有A、B和C等中的至少一个的系统”将包括但不限于单独具有A、单独具有B、单独具有C、具有A和B一起、具有A和C一起、具有B和C一起以及/或者具有A、B和C一起等的系统)。在其中使用类似于“A、B或C等中的至少一个”的惯例的那些实例中,通常这样的构造意图是本领域技术人员将理解该惯例的意义(例如,“具有A、B或C等中的至少一个的系统”将包括但不限于单独具有A、单独具有B、单独具有C、具有 A和B一起、具有A和C一起、具有B和C一起以及/或者具有A、B和C 一起等的系统)。
[0080] 本领域技术人员将进一步理解的是,实际上任何转折性词语和/或提供两个或更多替换术语的短语无论是在说明书、权利要求中还是在附图中都应当被理解为构想包括这些术语中的一个、这些术语中的任一个或这些术语两个的可能性。例如,短语“A或B”将被理解为包括“A”或“B”或“A和B”的可能性。
[0081] 如本领域技术人员将理解的,出于任何和所有目的,诸如在提供书面描述方面,本文中所公开的所有范围也涵盖任何和所有可能的子范围以及其子范围的组合。任何所列出的范围可被容易地理解为充分描述并使能被分解成至少相等的两半、三份、四份、五份、十份等的该同一范围。作为一非限制示例,本文中所讨论的每个范围都可被容易地分解成下三分之一、中间三分之一和上三分之一,等等。
[0082] 如本领域技术人员也将理解的,诸如“高达”、“至少”、“大于”、“少于”等的所有语言都包括所述的该数字并且指代随后可被分解成如上所讨论的子范围的范围。最后,如本领域技术人员将理解的,范围包括每个单个成员。因此,例如,具有1-3个单元的群组指代具有1个、2个或3个单元的群组。相似地,具有1-5个单元的群组指代具有1个、2个、3个、4个或5个单元的群组,以此类推。
[0083] 虽然本文中已经描述了各个方面和实施例,但是其它方面和实施例对于本领域技术人员将是显而易见的。本文中所公开的各个方面和实施例是出于例证的目的,而非意图限制,其中真实范围和精神由权利要求来指明。