解决高速缓存冲突的制作方法

文档序号:6467925阅读:117来源:国知局
专利名称:解决高速缓存冲突的制作方法
解决高速缓存冲突
本申请是申请日为2005年8月26日申请号为第200580029787.3号发明名称 为"解决高速缓存冲突"的中国专利申请的分案申请。
领域
本发明的实施例涉及微处理器和微处理器系统。本发明的实施例尤其涉及解 决在其中发生对同一个或同一组高速缓存的多个访问的处理器或计算机系统内的
高速缓存访问冲突。 背景
现有技术的处理器和计算机系统对能被并发地管理的特定一个或一组高速缓 存的访问个数有限。用于对抗该问题的一种现有技术是使用其高速缓存条目与一个 或多个处理器核专用的高速缓存(诸如1级(L1)高速缓存)的高速缓存条目相对应 的相容(inclusive)高速缓存结构。换言之,现有技术的多核处理器和/或多处理器 计算机系统己经试图通过简单地将高速缓存访问中的某一些定向到共享的相容高 速缓存结构,诸如末级高速缓存(LLC),来降低核高速缓存内的高速缓存访问冲 突,其中上述共享的相容高速缓存结构含有该相容高速缓存结构相对应的处理器核 或代理的全部高速缓存条目。然而,在高速缓存访问来自于多核处理器内的某核的 情况下,该核通常会首先试图访问它自己的高速缓存内的数据,然后再求助于共享 的高速缓存。共享的相容高速缓存结构有时会被称为"高速缓存过滤器",这是因 为它保护核高速缓存不受过多的高速缓存访问,并因此通过从相容高速缓存而非核 的高速缓存中为这些代理提供所请求的数据来保护总线通信量不受代理影响。
使用诸如LLC等高速缓存结构以服务于来自各代理的高速缓存请求的现有技 术有助于允许请求代理在例如数据并非由一特定的处理器核专有或修改的情况下 无需求助于处理器核的高速缓存就能获取它们需要的数据。就诸如处理器或处理器 核心等代理拥有请求代理企图访问的其自高速缓存的高速缓存行而言,例如LLC 等高速缓存结构能够允许该请求代理获取其正在请求的数据,而非等待拥有数据代理与其共享数据。
尽管如此,当使用LLC来服务高速缓存请求时仍会发生其他冲突。例如,图 1示出了在从LLC中收回(eviction)被访问的行期间试图访问同一高速缓存行的 两个核。更具体地,核0在与核1的高速缓存内的某行被从LLC中收回的基本同 时(经由LLC监听)发起对该行的核高速缓存请求,而与此同时核l则正启动新 数据的写回。在此情况下,如果核0的请求是在来自核1的写回已发生之前做出的, 则核O可能会从LLC中检索到错误的数据。在某些情况下,LLC为履行核O的核 请求而需要对核1的高速缓存做出监听("交叉监听"),而这会导致在核0的请 求、LLC对核1的交叉监听、LLC收回以及核1向LLC写回更新数据之间的四向 高速缓存冲突。


图1中描绘的现有技术问题会随着系统中处理器核或其他总线代理数目的 增加而恶化。例如,在图1中描绘的冲突在含有4核而非图1所示的2核的多核处 理器中为两倍。类似地,随着计算机系统中处理器数目的增加,对任何特定核高速 缓存的访问数也会增加,由此在LLC收回期间发生的冲突个数也会增加。
诸如在图1中描绘的高速缓存冲突会因为请求代理等待LLC收回及相应的写 回完成,或者检测由冲突引起的不正确检索数据并从中恢复而对处理器性能产生不 利影响。因此,在现有技术的处理器和/或计算机系统中可以访问特定高速缓存结 构的代理数目是有限的。
附图简述
在其中相同的标号指示类似元素的附图中,以示例性而非限制性的方式示出 了本发明的实施例,在附图中-
图1示出了现有技术处理器或计算机系统中对同一高速缓存行的多个访问之 间的冲突。
图2示出了根据本发明一个实施例的高速缓存桥架构。
图3示出了结合本发明的一实施例使用的用于处理器的交叉监听状态机。
图4是示出结合本发明的至少一个实施例使用的操作的流程图。
图5示出了在其中可以使用本发明的至少一个实施例的前端总线计算机系统。
图6示出了在其中可以使用本发明的至少一个实施例的点对点计算机系统。
详细描述本发明的实施例涉及微处理器和/或计算机系统内的高速缓存架构。本发明的 实施例尤其涉及用于管理在其中对特定的一个或一组高速缓存做出多个访问的处 理器和/或计算机系统内的高速缓存冲突的技术。
本公开描述了用于解决与现有技术的多处理器和/或多核计算机系统中的高速 缓存技术相关联的问题的各个本发明实施例,其中包括当多个请求代理试图访问同 一高速缓存行时冲突的解决和避免。在本发明的至少一个实施例中,诸如末级高速
缓存(LLC)等相容高速缓存结构可以与具有诸如1级(Ll)高速缓存的相关联高 速缓存的多个处理器或处理器核结合使用。诸如LLC等相容高速缓存结构包括那 些至少含有与该相容高速缓存结构所对应的其他高速缓存所含数据相同的结构。通 过维持相容高速缓存结构与相对应的核和/或处理器高速缓存之间的一致性,可由 该相容高速缓存来服务对相应的核/处理器高速缓存的访问,由此降低对相应的核/ 处理器的总线通信量并允许该核/处理器。
其中使用相容高速缓存结构的本发明实施例还能够降低甚至减轻当多个处理 器和/或处理器核试图访问该相容高速缓存结构内的同一高速缓存行时可能发生的 冲突个数和/或类型。例如,本发明的至少一个实施例减轻了由多处理器系统内的 处理器和/或从多核处理器内的核对相容高速缓存结构(诸如LLC)内正被收回的 某行的高速缓存请求以及从与该行所对应的被收回的核的写回所引起的高速缓存 冲突,其中所述行被收回是因为核高速缓存被收回并导致对LLC相同组的又一次 填充。此外,至少一个实施例能够减轻由多处理器系统内的处理器和/或多核处理 器内的核对共享的相容高速缓存(诸如LLC)内的正被填充的行的高速缓存请求 以及所导致的对该共享的相容高速缓存行的收回所引起的冲突。其他实施例可以解 决各请求代理对被收回的相容高速缓存行的多个访问所引起的其他冲突。
图2示出了根据本发明一个实施例的解决对被收回的相容高速缓存行的多个 访问之间的冲突的高速缓存桥架构。更具体地,图2的高速缓存桥架构示出了可由 外部代理经由诸如前端总线接口和/或点对点接口之类的计算机系统互连接口 205 访问的LLC201。此外,LLC可由核0 210和/或核1215分别经由核互连接口213 和217来访问。高速缓存桥调度与排序(CBSO)逻辑220在本发明的至少一个实 施例中分别使用内部和外部请求队列225和230来管理外部与核代理对LLC的访 问,这些请求队列可用于存储与外部和/或核逻辑对LLC做出的访问相对应的命令、 地址和/或数据。
在本发明的至少一个实施例中,CBSO逻辑可用于管理并解决由包括LLC查找、LLC高速缓存收回、LLC行填充和交叉监听事务在内的多项事务所引起的冲
LLC查找通常涉及对访问LLC的核的读取及读取所有权事务以读取或得到期 望的高速缓存行的所有权。如果该LLC查找未命中,则可将该请求分配给与计算 机系统互连接口相对应的外部请求队列。但如果该LLC查找命中,并且相应的LLC 行不为另一核或处理器所专有,则随后就能够完成该请求并将数据返回给请求核。 通过维持另一核是否对LLC的所请求的行具有专有权的记录就能减少请求代理对 特定核的访问。该记录可以是寄存器内与处理器内核的个数相对应的多个位,其中 每一位都指示它所对应的核/处理器对所请求的LLC行是否具有所有权。尽管如此, 该记录也可由其他方式实现。
LLC收回可能需要对一个或多个核或处理器的监听("后监听")来重新填 充该LLC高速缓存行。如果将后监听发送给多个核或处理器,则可能会出现一个 或多个核/处理器不接收该后监听的情况。因此就导致冲突。
对LLC的填充通常在原始请求未命中该LLC的情况下由核或处理器对LLC 写数据产生。可以从是管芯上存储器控制器或管芯外存储器控制器的存储器代理中 获取新数据和一致性状态。该行然后在新数据和一致性状态被返回给请求核之后填 充LLC。如果正发生填充的高速缓存组全满,则引起从该LLC的收回,该收回因 为是由LLC内容量限制引起的所以有时可被称为"容量收回"。填充可以取决于 待填充的LLC行所对应的核而起源于多核处理器内的核。此外,在本发明的一个 实施例中,LLC的被填充的行可以具有多种所有权状态,例如共享、专有或修改。 在某些多核处理器中,LLC 一致性状态可以包括指示该高速缓存行对核的状态相 对于该高速缓存行对多核处理器外部的代理的状态的扩展状态。例如,在某些实施 例中,LLC 一致性状态ES可以向多核处理器外部的代理指示该被填充的LLC行 为一特定核所专有,同时向其他核指示该被填充的LLC行可被共享。类似地,MS 一致性状态可向外部代理指示该LLC行可被修改,同时向其他核指示该LLC行可 被共享。
对LLC的交叉监听事务通常在来自核或其他代理的所有权请求确定该LLC行 为另一核或代理所有时引起。在此情况下,该核/代理请求所有权会对拥有该行的 核/代理执行监听("交叉监听"),而这会导致该行的状态取决于使用的特定一 致性协议从"专有的"变为"无效的"或"共享的"。
如果上述事务(后监听、交叉监听、读取和收回)中有任何事务基本同时发生,则会引发会对处理器和/或系统性能产生不利影响的冲突。因此,本发明的一 个实施例能够防止,或者至少管理这些事务中的两个事务之间的冲突("双向冲突" 管理)。此外,本发明的另一实施例能够防止,或者至少管理这些事务中的三个事 务之间的冲突("三向冲突"管理)。
在本发明的一个实施例中,CBSO逻辑管理或防止由从核或外部总线代理对正 从该LLC中被收回的行的LLC写回所导致的冲突。在正被收回的同一 LLC行发 生写回的情况下,如果后监听正在从与正在执行写回的核或代理不同的另一核或代 理中检索数据,则会在由该收回所引起的后监听和该写回操作之间发生冲突。该冲 突会导致将不正确数据写入被收回的LLC行。
在另一实施例中,CBSO逻辑管理或防止由对来自图2计算机系统接口上的代 理的LLC行的监听、对来自核的LLC行的写回以及为填充该行而进行的LLC后 监听所引起的冲突。在对发生了后监听和写回的同一 LLC行进行外部监听的情况 下,因为LLC行由于后监听会被来自核的写回或来自核的数据所填满,所以外部 代理会检索到不正确的数据。
图3示出了根据本发明一实施例的与典型交叉监听事务相关联的操作的状态 图。从空闲状态301开始,诸如从多核处理器内的某核的对LLC的读取事务会导 致状态图转换至挂起状态303,直到该行能被授予该请求代理,而这时状态就变为 查找状态305。在查找状态期间,LLC将所请求的行的一致性状态返回给请求核, 而这能指明另一核当前正拥有该被请求的行。在另一核拥有该LLC内的所请求的 行的情况下,就在状态308处发起从该LLC到其他核或代理的交叉监听。在从要 对其发起交叉监听的核发送了确认之后,就在状态310处发出该交叉监听。在从该 核中检索出交叉监听数据之后,就在状态313处完成该交叉监听,并在状态315 处将该交叉监听数据传送给请求核。在状态320处用该交叉监听数据更新该LLC 并返回到空闲状态。
在状态308到状态320期间,交叉监听会与由对该请求所对应的LLC的收回 所引起的操作发生冲突。由LLC收回引起的会与该交叉监听发生冲突的一个操作 是从被收回的LLC行所对应的核中的写回。另一个冲突会在读请求引起对从中向 被从LLC中收回的行做出写回的核的交叉监听的情况下发生。如果写回发生在交 叉监听之前,则会将错误的数据返回给请求核或代理。此外,冲突会在与涉及与收 回、交叉监听和写回相同的LLC地址的基本同时对LLC做出外部监听的情况下发 生。在本发明的一个实施例中,通过将在LLC内做出请求的行的一致性信息复制 到临时存储位置并使相对应的LLC行无效,使该行看起来像是对后续事务无效 ("原子的"),由此避免可能会导致事务与由请求引起的交叉监听间的冲突的 LLC行的收回,而能够避免上述冲突。通过在接收读请求之后存储该LLC行的一 致性信息,就能确保所得的交叉监听将最新近的数据传送给请求者。此外,通过原 子地无效LLC行,就可由后续事务避免对LLC的收回,因此就不会发生对LLC 行的冲突性LLC收回。
在将所请求的数据传送给请求者之后,就可以将数据和一致性信息存储到被 无效的LLC行以维持相容性。在一可选实施例中,可以使用一机制来取消可防止 对LLC的访问导致交叉监听的任何事务。这一情形例如会在对LLC的写回在读取 LLC行之后发生时产生。
图4是示出了本发明的一个实施例中涉及的操作的流程图。在操作401处, 检测到对核高速缓存行的读请求,并且如果由对相应的核高速缓存的读请求导致 "未命中",就响应于该未命中访问相对应的LLC行。在操作405处,保存该LLC 行的一致性状态信息。在一实施例中,可以将该一致性状态数据保存到图2的CBS0 逻辑中的一寄存器内。在另一实施例中,可以将该一致性信息保存到存储器或某些 其他的存储结构内。在一致性状态信息被保存之后,就在操作410处原子地无效 LLC内的相应行,以使得在该请求将导致交叉监听并且CBSO逻辑未检测到取消 信号的情况下后续事务会将该LLC行视为无效。在操作415处,由LLC对适当核 或处理器进行的交叉监听会把所请求的数据从核或处理器返回给请求代理。
在本发明的一个实施例中,在图4中示出的至少部分操作可由图2的CBSO 逻辑执行。在其它实施例中,该操作可通过其他手段来执行,诸如软件或图2高速 缓存桥架构内的其他逻辑。
图5示出了在其中可以使用本发明一个实施例的前端总线(FSB)计算机系统。 处理器505访问一级(Ll)高速缓冲存储器510和主存储器515中的数据。在本 发明的其它实施例中,高速缓冲存储器可以是二级(L2)高速缓存或计算机系统 存储器层级内的其他存储器。此外,在某些实施例中,图5的计算机系统可以同时 含有Ll高速缓存和L2高速缓存两者,并含有一致性数据可以在Ll和L2高速缓 存之间被共享的相容高速缓存层级。
在图5处理器中示出的是本发明的一个实施例506。在某些实施例中,图5 中的处理器是多核处理器。主存储器可由各种存储器源实现,诸如动态随机存取存储器(DRAM)、硬 盘驱动器(HDD) 520或者经由含有各种存储设备和技术的网络接口 530而位于远 离该计算机系统处的存储器源。高速缓冲存储器既可以位于处理器内也可接近处理 器放置,例如可位于处理器的局部总线507上。此外,高速缓冲存储器可以含有相 对较快的存储器单元,诸如六晶体管(6T)单元,或者访问速度大致相等或更快 的其他存储器单元。
图5的计算机系统可以是总线代理(诸如,微处理器)的点对点(PtP)网络, 该网络经由专用于该PtP网络上的每个总线代理的总线信号进行通信。在每个总线 代理内部,或者至少与每个总线代理相关联的是本发明的至少一个实施例506,从 而能够在总线代理之间便捷快速地进行存储操作。
图6示出了以点对点(PtP)配置排列的计算机系统。更具体地,图6示出了 在其中处理器、存储器与输入/输出设备通过多个点对点接口互连的系统。
图6的系统还可以包括多个处理器,为明晰起见仅示出了其中的两个处理器 670与680。处理器670和680各自包括连接至存储器62与64的局部存储器控制 器集线器(MCH) 672与682。处理器670和680可以经由使用点对点(PtP)接 口电路678和688的PtP接口 650来交换数据。处理器670和680可以各自经由使 用点对点接口电路676、 694、 686与698的独立PtP接口 652和654与芯片组690 交换数据。芯片组690还可以经由高性能图形接口 639与高性能图形电路638交换 数据。
本发明的至少一个实施例可以位于处理器670和680内。然而,本发明的其 它实施例则可存在于图6的系统内的其他电路、逻辑单元或设备中。此外,本发明 的其他实施例也可分布于图6中示出的各个电路、逻辑单元或设备中。
在此描述的本发明实施例可以用使用互补金属氧化物半导体器件的电路,即 "硬件",或者使用一组被存储在介质内并且当由诸如处理器等机器执行时可执行 与本发明的实施例相关联操作的指令,即"软件"来实现。另外,本发明的实施例 还可使用硬件与软件的组合来实现。
虽然业已参考了说明性实施例对本发明进行了描述,但是该描述并不应该被 解释为限制性的。可以认为对本领域普通技术人员显而易见的对说明性实施例的各 种修改及其他实施例都落入本发明的精神和范围之内。
权利要求
1. 一种系统,包括含有共享的相容高速缓存的第一处理器,所述共享的相容高速缓存包括第一高速缓存行,所述第一高速缓存行响应于来自所述第一处理器内另一核的监听而具有无效状态,所述无效状态向所述读访问之后但在所述读访问完成之前的所有事务指明所述第一高速缓存行是无效的。
2. 如权利要求l所述的系统,其特征在于,包括用于响应于所述监听存储所 述第一高速缓存行的一致性信息的存储单元。
3. 如权利要求2所述的系统,其特征在于,包括多个处理器核,每个处理器核都具有至少一个相应的核高速缓存。
4. 如权利要求3所述的系统,其特征在于,所述共享的相容高速缓存是存储 所述至少一个相应的核高速缓存内所存储的同一数据的末级高速缓存。
5. 如权利要求4所述的系统,其特征在于,所述第一处理器包括响应于所述 监听设置所述无效状态并存储所述一致性信息的逻辑。
6. 如权利要求5所述的系统,其特征在于,所述第一处理器包括分别存储来 自和对所述多个存储器核与第二处理器的访问的内部和外部请求队列。
7. 如权利要求6所述的系统,其特征在于,所述第一和第二处理器经由点对 点互连耦合在一起。
8. 如权利要求6所述的系统,其特征在于,所述第一和第二处理器经由前端 总线互连耦合在一起。
全文摘要
防止和解决微处理器和/或计算机系统内的高速缓存冲突。更具体地,本发明的实施例涉及用于管理在其中可对特定的一个或一组高速缓存做出多个访问的处理器和/或计算机系统内的高速缓存冲突的技术。
文档编号G06F12/08GK101425042SQ20081017613
公开日2009年5月6日 申请日期2005年8月26日 优先权日2004年9月9日
发明者J·吉尔伯特, K·西斯特拉, Y-C·刘, Z-N·蔡 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1