首页> 中国专利> 用于单芯片多处理器的自适应高速缓存组织

用于单芯片多处理器的自适应高速缓存组织

摘要

公开了一种方法、单芯片多处理器片以及具有无定形高速缓存的单芯片多处理器。初始处理核心404可从数据存储装置中获取数据块。邻近所述初始处理核心404的初始无定形高速缓存存储体410可存储初始数据块拷贝422。本地存储体目录424可登记所述初始数据块拷贝422。

著录项

  • 公开/公告号CN101587457A

    专利类型发明专利

  • 公开/公告日2009-11-25

    原文格式PDF

  • 申请/专利权人 英特尔公司;

    申请/专利号CN200910149735.X

  • 申请日2009-04-02

  • 分类号G06F12/08;G06F15/177;

  • 代理机构永新专利商标代理有限公司;

  • 代理人刘瑜

  • 地址 美国加利福尼亚

  • 入库时间 2023-12-17 23:01:37

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2013-03-13

    授权

    授权

  • 2010-01-20

    实质审查的生效

    实质审查的生效

  • 2009-11-25

    公开

    公开

说明书

技术领域

本发明通常涉及单芯片多处理器高速缓存领域。本发明尤其还涉及用 于单芯片多处理器的无定形高速缓存(amorphous cache)。

背景技术

具有多个处理器核心的单芯片多处理器(CMP)系统可利用分片式架构 (tiled architecture),其中,每一片(tile)都具有一个处理器核心、一个私有高 速缓存(L1)、一个第二私有或共享高速缓存(L2)以及一个用来跟踪被缓存 的私有拷贝的拷贝的目录。常规上,这些分片式架构可具有两种L2组织 方式中的一种。

由于线程之间会共享结构化数据,所以,执行多线程工作的CMP系 统可以利用共享L2高速缓存方式。与私有L2高速缓存相比,共享L2高 速缓存方式由于没有数据重复,因此可将有效的L2高速缓存容量最大化, 而且还提高了平均命中等待时间。这些设计可把L2高速缓存和目录视为 一种结构。

执行标量的和对等待时间敏感的工作的CMP系统更愿意利用私有L2 高速缓存组织来对等待时间优化,这是以由可能的数据重复所引起的有效 高速缓存容量的可能减少为代价的。私有L2高速缓存可提供高速缓存隔 离,但不允许高速缓存借用(cache borrowing)。在一些核心上的高速缓存密 集型应用可能无法从不活动的核心或运行小数据占用空间应用的核心借用 高速缓存。

某些普通的CMP系统可具有三级高速缓存。L1高速缓存和L2高速 缓存可形成两个私有级别。第三L3高速缓存则可在所有核心之间共享。

附图说明

应当理解,这些附图仅描述了本发明的典型实施例,并且,不能因此 认为其限制了本发明的范围,将通过使用附图、利用附加特征和细节来描 述和解释本发明,其中:

图1在框图中示出了具有私有和共享高速缓存的单芯片多处理器的一 个实施例;

图2在框图中示出了具有无定形高速缓存架构的单芯片多处理器的一 个实施例;

图3在框图中示出了单芯片多处理器片的一个实施例;

图4在框图中示出了执行数据分配的单芯片多处理器的一个实施例, 其中,该单芯片多处理器具有无定形高速缓存;

图5在流程图中示出了用于在具有无定形高速缓存的单芯片多处理器 中对数据块拷贝进行分配的方法的一个实施例;

图6在框图中示出了执行数据迁移的单芯片多处理器的一个实施例, 其中,该单芯片多处理器具有无定形高速缓存;

图7在流程图中示出了用于在具有无定形高速缓存的单芯片多处理器 中进行数据复制的方法的一个实施例;

图8在框图中示出了执行复制牺牲的单芯片多处理器的一个实施例, 其中,该单芯片多处理器具有无定形高速缓存;

图9在流程图中示出了用于在具有无定形高速缓存的单芯片多处理器 中进行数据牺牲的方法的一个实施例;

图10在框图中示出了具有组合的无定形高速缓存存储体和目录结构 的单芯片多处理器的一个实施例。

具体实施方式

将在以下说明书中阐述本发明的附加的特征和优势,通过参考说明书, 一部分特征和优势将是显而易见的,或者可通过实践本发明来理解这些特 征和优势。可通过在所附权利要求书中专门指出的手段和组合来实现和获 得本发明的特征和优势。本发明的这些和其它特征将通过参考以下说明书 和所附权利要求书而变得更加显而易见,或者可通过实践如这里所阐述的 本发明来加以理解。

下面将详细论述本发明的各种实施例。尽管论述了特定的实现,但是 应该理解这仅是为了说明的目的。相关领域的技术人员将认识到,可以使 用其它组件和配置,而不会偏离本发明的精神和范畴。

本发明包括多种实施例,诸如方法、装置、计算机指令集合,以及涉 及本发明基本概念的其它实施例。公开了一种方法、单芯片多处理器片 (tile),以及具有无定形高速缓存的单芯片多处理器。初始处理核心可从数 据存储装置中获取数据块。邻近初始处理核心的初始无定形高速缓存存储 体(bank)可存储初始数据块拷贝。本地存储体目录(directory)可登记该初始 数据块拷贝。

单芯片多处理器(CMP)在单一芯片上具有多个处理器,每个处理器都 有一个或多个高速缓存。这些高速缓存可以是私有高速缓存或共享高速缓 存,其中,私有高速缓存用于存储相关处理器的专用数据,共享高速缓存 用于存储对所有处理器都可用的数据。图1在简化的框图中示出了具有私 有和共享高速缓存100的CMP的一个实施例。CMP 100可具有位于单一 芯片上的一个或多个处理器核心(PC)102。PC 102可以是处理器、协处理 器、固定功能控制器、或其它类型的处理核心。每个PC 102都可具有附属 的核心高速缓存(C$)104。

可将PC 102连接到私有高速缓存(P$)106。P$ 106可被限制为由局部 PC 102访问,但可开放给由其它PC 102基于目录信息和协议动作来进行 监听。可由局部PC 102来分配P$ 106中的行用于任何地址。在PC 102把 将被转发给目录或其它存储源的请求移交给一致性协议引擎之前,该PC 102可访问P$106。可在任意的P$存储体106中复制P$ 106中的行。

还可将PC 102连接到共享高速缓存108。共享高速缓存108对于所有 PC 102来说都是可访问的。任何PC 102都可分配共享高速缓存108中的 行用于地址子集。在通过了一致性协议引擎之后,PC 102可以访问共享高 速缓存108,并且会涉及对其它存储源的遍历。共享高速缓存108可以具 有针对每个PC 102的分离的共享高速缓存存储体(S$B)110。每个数据块 可以在所有S$B 110中具有唯一的位置。每个S$B 110可以具有目录(DIR) 112,该目录用于跟踪被存储在C$ 104、P$ 106、S$B 110或它们三者的某 种组合中的高速缓存数据块。

在任何特定时间,单一高速缓存结构(在本文中被称为“无定形高速缓 存”)都可担当私有高速缓存、共享高速缓存或两者。无定形高速缓存可被 设计为同时提供私有高速缓存设计的等待时间优势和共享高速缓存设计的 容量优势。此外,这种架构也虑及了用以添加私有或共享高速缓存偏好(bias) 的运行时配置。单一高速缓存设计可以表现得像私有高速缓存、共享高速 缓存、或具有在私有和共享部分之间的动态分配的混合高速缓存。所有PC 102都可访问无定形高速缓存。本地PC 102可以分配无定形高速缓存中的 行用于任何地址。其它PC 102可分配无定形高速缓存中的行用于地址子 集。基于本地PC 102的请求,无定形高速缓存可允许在任意无定形高速缓 存存储体中复制行。本地PC 102可在通过一致性协议引擎之前访问无定形 高速缓存存储体。其它PC 102可通过一致性协议引擎来访问无定形高速缓 存存储体。

图2在简化的框图中示出了具有无定形高速缓存架构200的CMP的 一个实施例。可将一个或多个具有附属C$ 104的PC 102与无定形高速缓 存202相连接。可针对每个PC 102将无定形高速缓存202划分为分离的无 定形高速缓存存储体(A$B)204。每个A$B 204都可具有分离的目录(DIR) 206以跟踪存储在A$B 204中的高速缓存数据块。

高速缓存组织可使用分片式架构、同构架构、异构架构或其它CMP 架构。可通过一致性交换机、总线或其它连接来连接分片式架构中的各片。 图3在框图中示出了CMP片300的一个实施例。CMP片300可具有一个 或多个处理器核心102,其共享C$ 104。PC 102可经由高速缓存控制器302 访问A$B 204,该A$B 204被动态地划分为私有和共享部分。CMP片300 可具有DIR组件206,以跟踪片上所有私有高速缓存块。高速缓存控制器 302可向局部A$B 204发送传入核心请求,其中,该局部A$B 204为该片 300保存私有数据。经由片上互联模块306,高速缓存协议引擎304可向本 地片发送局部A$B中的缺失(miss)。在本地片上的A$存储体(可经由片上 互联模块306来访问该A$存储体)可满足数据缺失。如有必要,高速缓存 协议引擎304可在本地片处查找DIR存储体206,以监听远程私有A$B。 在解析了所有必要的监听之后,在本地片处的缺失会使得本地片发起 off-socket请求。配置为纯粹用作私有高速缓存的A$B 204可跳过A$B 204 本地片查找,但可以遵从目录流。配置为纯粹用作共享高速缓存的A$B 204 可跳过局部A$B 204查找,并直接前往本地片。可通过缓存协议动作来实 现A$B 204的动态划分,该缓存协议动作与块分配、迁移、牺牲 (victimization)、复制、替换以及回写失效(back-invalidation)相关。

图4在框图中示出了执行数据分配的具有无定形高速缓存的CMP 400 的一个实施例。在针对一数据块对本地CMP片404进行检查之后,初始 CMP片402可以请求访问数据存储单元中的该数据块。初始CMP片402 可具有初始处理核心(IPC)406、初始核心高速缓存(IC$)408、初始无定形 高速缓存存储体(IA$B)410、以及初始目录(IDIR)412。本地CPM片404 可具有本地处理核心(HPC)414、本地核心高速缓存(HC$)416、本地无定 形高速缓存存储体(HA$B)418、以及本地目录(HDIR)420。初始CMP片 402可在IA$B 410中存储初始数据块拷贝(IDBC)422或高速缓存块。本地 CMP片404可在HDIR 420中登记本地数据块记录(HDBR)424,以跟踪在 每个无定形高速缓存存储体中的该数据块的拷贝。在之前的共享高速缓存 架构中,可能已在本地CMP片404中分配了该数据块,而不考虑初始CMP 片402和本地CMP片406之间的邻近性。

图5在流程图中示出了用于在具有无定形高速缓存的CMP 200中分配 数据块拷贝的方法500的一个实施例。初始CMP片402可以检查HDIR 以寻找一个数据块(DB)(框502)。如果DB在HA$B中存在(框504),那么, 初始CMP片402可从HA$B中获取DB(框506)。如果DB在HA$B中不 存在(框506),那么,初始CMP片402可从数据存储装置中获取DB(框508)。 初始CMP片402可在IA$B 410中存储IDBC 422(框510)。本地CMP片 404可在HDIR420中登记HDBR 424(框512)。

图6在框图中示出了执行数据迁移的具有无定形高速缓存的CMP 600 的一个实施例。后续CMP片602可搜寻被存储为IA$B 410中的IDBC 422 的该数据块。该后续CMP片602可具有后续处理核心(SPC)604、后续核 心高速缓存(SC$)606、后续无定形高速缓存存储体(SA$B)608、以及后续 目录(SDIR)610。在访问数据存储装置以查找该数据块之前,后续CMP片 602可检查HDIR 420,以确定该数据块的拷贝是否已存在于芯片上的高速 缓存存储体中。如果该数据块的拷贝存在,那么本地CMP片404可把IDBC 422作为本地数据块拷贝(HDBC)612而复制到HA$B 418中。后续CMP 片602可根据HDBC 612在SA$B 608中创建后续数据块拷贝(SDBC)614。 替代地,后续CMP片602可根据IDBC 422在SA$B 608中创建后续数据 块拷贝(SDBC)614,而后HDBC 612才会被创建。以后的数据块拷贝可从 HDBC 612获得。这种迁移方案可提供共享高速缓存的容量优势。对于通 过远程私有高速缓存得到该数据块,未来的请求者将会看到缩短的等待时 间。迁移可能发生在观察到第二个请求者时,不过迁移阈值也可依据个案 的情况来做出调整。实际上,取决于复制策略,初始CMP片402和后续 CMP片602都可在除无定形高速缓存之外的核心高速缓存中保持有数据块 拷贝。

共享数据块拷贝可迁移到HA$B 418以提供容量优势。每个私有高速 缓存都可缓存该共享数据块的副本,从而以容量来换取等待时间。无定形 高速缓存可支持复制,但它并不要求复制。无定形高速缓存可择机进行复 制,且与个体实例相比,它更倾向于复制而不是替换。

初始CMP片402可具有初始寄存器(IREG)616,以便监测IA$B 410 中IDBC 422的牺牲。可以以最近最常使用(MRU)到最近最少使用(LRU) 高速缓存块来组织寄存器IREG 616,其中LRU高速缓存块最先被驱逐 (evicted)。一旦从数据存储装置或HA$B 418复制了IDBC 422,则IDBC 422 可在IREG 616中被记为MRU,使IDBC 422倾向于被最后驱逐。本地CMP 片404可具有本地寄存器(HREG)618,用以监测HA$B 418中HDBC 612 的牺牲。一旦从IA$B 410向HA$B 418拷贝了IDBC 422以使其对后续CMP 片602可用,则该HDBC 612可在HREG 618中被记为MRU,使HDBC 612 倾向于被最后驱逐。此外,IDBC 422可被移动到IREG 616中更靠近LRU 端的位置,使IDBC 422倾向于被较早驱逐。后续CMP片602可具有后续 寄存器(SREG)620,用以监测SA$B 608中SDBC 614的牺牲。一旦从HA$B 418拷贝了SDBC 614,则SDBC 614可被记入SREG 620中更靠近LRU 端的位置,使SDBC 614倾向于被较早驱逐。

基于IDBC 422在IREG 616中的放置位置,IREG 616可被用来配置 无定形高速缓存,以使其表现为私有高速缓存或共享高速缓存。对于共享 高速缓存设置,IDBC 422可被放置在IREG 616中的LRU位置,或者保持 未分配状态。此外,HDBC 612可被放置在HREG 620中的MRU位置。 对于私有高速缓存设置,IDBC 422可被放置在MRU位置。此外,HDBC 612 可被放置在HREG 620中的LRU位置,或者保持未分配状态。

图7在流程图中示出了用于在具有无定形高速缓存的CMP 200中进行 数据复制的方法700的一个实施例。后续CMP片602可访问HDIR 420中 的HDBR 424(框702)。本地CMP片404可从IA$B 410中获取IDBC 422(框 704)。本地CMP片404可在HA$B 418中存储HDBC 612(框706)。后续 CMP片602可在SA$B 608中存储SDBC 614(框708)。后续CMP片602 可在HDIR 420中登记SDBC 614(框710)。初始CMP片402可使该IDBC 422倾向于被较早驱逐(框712)。后续CMP片602可使该SDBC 614倾向 于被较早驱逐(框714)。

图8在框图中示出了执行拷贝牺牲的具有无定形高速缓存的CMP 800 的一个实施例。当从无定形高速缓存存储体中驱逐独有的干净或脏的数据 块拷贝时,初始CMP片402可把脏或干净的IDBC 422作为驱逐本地数据 块拷贝(EHDBC)802写到HA$B 418中。EHDBC 802可被记入HREG 620 中更靠近LRU端的位置,使得EHDBC 802倾向于被较早驱逐。如果具有 私有高速缓存结构或配置的CMP片请求EHDBC 802的拷贝,那么, EHDBC 802会保留在LRU位置中,并且新的请求者可把该请求者数据块 拷贝放置在MRU位置中。如果之后的CMP片从本地CMP片404做出了 请求,那么,EHDBC 802可被移动到MRU位置,且之后的请求者可把之 后的数据块拷贝放置在LRU位置中。

在先前的架构中,私有高速缓存或共享高速缓存可丢弃干净牺牲者或 未改变的高速缓存块,并且向存储器写回脏牺牲者或已改变的高速缓存块。 在无定形高速缓存中,把IDBC 422写到HA$B 418会导致高速缓存借用。 高速缓存借用允许数据密集型应用来使用来自其它片的高速缓存。

在先前的架构中,目录牺牲者需要把所有的私有高速缓存数据块拷贝 宣布无效,这是因为私有高速缓存数据块拷贝变得难以跟踪。对这些数据 块的后续访问将需要存储器访问。无定形高速缓存将通过把目录牺牲者移 动到本地片来减轻无效的影响,其中,通过目录进行跟踪不是必须的。

图9在流程图中示出了用于在具有无定形高速缓存的CMP 200中进行 数据复制的方法900的一个实施例。初始CMP片402可从IA$B 410中驱 逐IDBC 422(框902)。初始CMP片402可把IDBC 422写到HA$B 418中 (框904)。本地CMP片404可使EHDBC 802倾向于被较早驱逐(框906)。 当本地CMP片404最终驱逐EHDBC 802时(框908),本地CMP片404 可把EHDBC 802写到数据存储装置中(框910)。

无定形高速缓存存储体204和目录206可以是分离的结构。图10在方 框图中示出了具有组合的无定形高速缓存存储体(A$B)1002和目录(DIR) 1004结构的CMP 1000的一个实施例。A$B 1002可包含一组数据块拷贝 (DBC)1006。DIR 1004可把本地存储体数据块记录(HBDBR)1008与DBC 1006相关联。此外,DIR 1004可把一个或多个替代存储体数据块记录 (ABDBR)1010与DBC 1006相关联,这导致了在DIR 1004中具有比A$B 1002更多的数据块。

本发明至少部分地是在由电子设备(诸如通用计算机)执行的计算机可 执行指令(诸如程序模块)的一般上下文中来进行描述的,但这并不是必需 的。通常,程序模块包括用来执行特定任务或实现特定抽象数据类型的例 程、对象、组件、数据结构等。此外,本领域的技术人员将认识到,本发 明的其它实施例可在网络计算环境中实施,该网络计算环境具有多种类型 的计算机系统配置,包括个人计算机、手持设备、多处理器系统、基于微 处理器或可编程的消费者电子装置、网络个人计算机、小型机、大型计算 机等等。

所述实施例还可在分布式计算环境中实现,其中,通过经由通信网络 来进行链接(或者通过硬线链接、无线链接,或者通过它们的组合)的本地 和远程处理设备来执行任务。

在本发明范围中的实施例还可包括计算机可读介质,其用于携带或具 有其上所存储的计算机可执行指令或数据结构。这种计算机可读介质可以 是可被通用或专用计算机所访问的任何可用的介质。作为例子而不是限制, 这种计算机可读介质可包括RAM、ROM、EEPROM、CD-ROM或其它光 盘存储,磁盘存储或其它磁存储设备,或可被用于以计算机可执行指令或 数据结构的形式来携带或存储期望程序代码的任何其它介质。当信息被通 过网络或其它通信连接(或者是硬线的、无线的,或者是它们的组合)传递 或提供给计算机时,计算机适当地将该连接视为计算机可读介质。因此, 任何这种连接都可被适当地称为计算机可读介质。以上的组合也应被包括 在计算机可读介质的范围内。

计算机可执行指令包括例如指令和数据,其使得通用计算机、专用计 算机或专用处理设备执行特定功能或功能组。计算机可执行指令还包括程 序模块,可用独立的或网络环境中的计算机来执行所述程序模块。通常, 程序模块包括用来执行特定任务或实现特定抽象数据类型的例程、程序、 对象、组件和数据结构等。计算机可执行指令、相关的数据结构以及程序 模块代表了用于执行本文公开的方法的步骤的程序代码模块的例子。这种 可执行指令或相关数据结构的特定序列代表了用于实现在这样的步骤中所 描述的功能的相应动作的例子。

尽管上述说明书可包含特定细节,但它们不应被解释为以任何方式限 制权利要求。本发明的所描述的实施例的其它配置是本发明的范围的一部 分。例如,本发明的原则在于可被应用于每个单独用户,其中,每个用户 可单独地部署这种系统。这使得每个用户都可利用本发明的优点,即使大 量可能的应用中的任意一个并不需要本文描述的功能。换句话说,这里可 以有电子设备的多个实例,每个以各种可能的方式来处理内容。一个系统 不必被所有终端用户使用。因此,所附权利要求及其法律等同物应当仅定 义本发明,而不是所给出的任何特定实施例。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号