用于多线程和多核心系统的高速缓存及其方法

文档序号:6477643阅读:159来源:国知局
专利名称:用于多线程和多核心系统的高速缓存及其方法
技术领域
本公开涉及用于提高处理器的性能的高速缓存,更具体地说,涉及用于多线程和/
或多核心系统以提高处理器的高速缓存的性能的高速缓存。


结合附图,参照以下详细地描述和权利要求,将会更好地理解本公开的优点和特 征,其中用相同的符号表示相同的元件,其中 图1是说明了根据本公开的示例性实施例的、用于提高处理器的性能的多线程和 多核心的框图; 图2是说明了根据本公开的示例性实施例的高速缓存的架构的框图以及 图3是说明了根据本发明的示例性实施例的、用于提高处理器的高速缓存的性能
的方法的流程图。
具体实施例方式
为了透彻地理解本公开,结合上述附图,参照包括所附权利要求的以下的详细的 描述。尽管结合示例性实施例来描述本公开,但是本公开并不旨在被限定为本文阐述的具 体形式。应当理解,等价物的省略和替换视情况而定,其旨在在不背离本公开的权利要求的 精神或范围的情况下,覆盖应用或实现。此外,应当理解,本文使用的措辞和术语是为了描 述的目的,不应当被认为是限定性的。 本文的术语"第一"、"第二"等不表示任何顺序、数量或重要性,而是用于将一个元 素与另一个元素相区分。本文的术语"一"和"一个"不表示数量的限定,而是表示存在至 少一个引用对象。 图1是说明了用于提高处理器的性能的多线程和多核心系统102的框图。系统可 以包括多个核心104、 106、 108和110以及连接到多个核心104、 106、 108和110的高速缓存 112。高速缓存112可以支持多个核心104、 106、 108和110,同时对高速缓存112的性能产 生很小的影响。多个核心104、 106、 108和110可以同时处理多个线程,由此增强了处理器 的性能。下面结合图2详细地描述高速缓存112的一个示例性架构。 图2是说明了高速缓存112的架构的框图200。高速缓存112可以包括多个 指令队列202、204、206和208 ;数据随机存取存储器(RAM)210 ;标签RAM 212 ;未完成 RAM(in-f light RAM) 214 ;以及仲裁器220。多个指令队列202、204、206和208可以用于捕 获由核心发出的对高速缓存的请求。数据RAM 210能够存储各种形式的多个数据。仲裁器 220可以指示返回到每个执行单元的命中和未命中的数据可能碰撞并需要仲裁的点,以便 遵守接收单元的任何限制,例如每个时钟周期仅发送回一个响应。 在一些实施例中,每个执行单元(EU)可以用于处理无序的返回。EU可以和每个 指令取请求一起提供指令队列位置,以便一旦高速缓存行(cacheline)返回便放置其。因 为每个线程可以具有例如3个缓冲的高速缓存行,所以2b代码会是足够的。在图2中其被指示为IQ[1:0],用于指令队列地址[l:O]。此外,请求可以是针对高速缓存行中的奇指令 (odd instruction)的,例如未对齐的跳转地址的情况。在图2中该信号被指示为"0/E"信 令"奇,,(odd)或"偶,,(even)。 在一些实施例中,每个执行单元可以有一个指令队列。本文描述的高速缓存架构 可以在发出时间丢弃队列的头部,这是因为每个发出被确保完成(即,它可以不需要重新 发出),并且任何路由或元数据可以用请求携带,在队列的头部可以没有阻滞,因此不需要 使队列变扁平以暴露所有条目。指令缓冲器的最大深度可以是由性能决定的,仅受执行单 元的指令FIF0中的目的地的总数的限制。例如,其可以被限制为12(即,4线程/EUX3高 速缓存行深度/指令缓冲器(inst-buffer))。 标签RAM 212可以用于存储在数据RAM 210中存储的多个数据的存储器地址。标 签RAM 212可以识别来自存储器的数据,所述数据目前存储在数据RAM 210中。在标签RAM 212中存储的存储器地址可以确定高速缓存查找结果是命中还是未命中。标签RAM 212的 大小可以与数据RAMI 12的容量和结构成比例。 在一些实施例中,标签可以花费多于一个时钟来比较并更新。例如,可以使用3个 时钟。因此,可能存在以下情况,即,对于给定的发出来说,命中一标签,其可能由于之前的 未命中而改变,但是还没有被写入标签RAM 212。在最近3个时钟期间内发出的组地址的副 本可以被存储(例如,位于图2中仲裁器的右侧的寄存器中)并且与每个队列的头部进行 比较。这可能需要多个平行的比较器,在图2中显示为标签未完成(tag in-flight)逻辑 240。如果在队列的头部与最近3个时钟内发出的组中的仅仅一个之间存在匹配,那么会阻 止队列仲裁。 高速缓存命中可以被转发到命中FIFO 242,其深度可以是由性能/成本决定的。 由于有限的深度,FIF0有时会填满。命中FIFO跟踪电路跟踪FIF0242的当前深度,其可以 由一些组合逻辑以及加法器或其它电路组成。每次发出发生时,命中/未命中结果未知,并 且加法器可以采取旧的路径并假定命中。所以,将l加到其当前的值上。如果之后确定结 果是未命中,那么加法器可以减1。加法器还可以对从FIFO移除并转发到高速缓存RAM的 每个条目减l。由于转发和误预测命中会在相同的时钟内发生,所以可以支持减2的功能。 从命中路径返回的高速缓存行可以针对单个线程。可以存在少量的逻辑以仅仅启用适当的 线程,来将16个信道IQ 0/E信令合成到旁路MUX。 高速缓存未命中可以转发到未命中逻辑244。该电路可以为每个高速缓存行保持 等待该行填充的EU指令队列位置。该信息可以保存在未完成RAM 214中(例如,128个条 目,每个高速缓存行一个)。RAM的宽度可以改变。对于每个未命中,可以向未完成RAM 214 查询组/路。如果对于该行没有未完成的请求,那么未命中可以被转发到未命中队列,并且 可以更新RAM中的线程的位置以显示等待行填充的线程。如果查询表明一个或多个可以已 经处于未完成状态,那么可以挤进未命中并且更新线程的位置。未命中数据可以经由填充 逻辑返回,所述填充逻辑可以看到来自L2的所有高速缓存行返回。对于每个返回,可以对 在未完成RAM 214中的关联组执行查找,指出等待该数据的高速缓存行的填充的所有请求 EU。高速缓存行数据和向EU指示所有挂起的填充的控制以及指令队列位置可以被发送到 指令总线。旁路mux仲裁器可以结合命中和未命中填充并且驱动指令总线。它可以越过命 中返回服务未命中返回。在一些实施例中,未命中返回可以引起命中队列上的背压(backpressure)。 未完成RAM 214可以用于维护在任意时刻所有未完成的未命中的识别和记账信 息。识别可以包括确定哪个线程和执行单元(EU)发出了请求,对应于组和路的、将最终返 回的数据置入数据RAM中的目的地位置,以及颜色指示符,其可以识别请求属于哪个来自 请求线程/EU的连续流。当高速缓存开始处理请求时,可以在标签RAM 212中检查所请求 的地址,并且如果没有发现匹配(即,导致未命中),那么请求可以被转发到未完成RAM 214 和其支持逻辑。RAM 214和逻辑可以将新的未命中请求的地址与保存在未完成RAM 214中 的、有可能匹配的、所有未完成的请求的地址的子集(通常映射到相同的高速缓存组)进行 比较。如果匹配存在,那么与该地址对应的请求已由之前的未命中转发到下一级存储器子 系统(即,该请求已经是未完成的),并且将新的未命中请求和其关联的识别和记账信息记 录到未完成RAM 214中,并且不向下一级存储器子系统发出请求。如果没有发现匹配,表明 对于该地址没有到下一级存储器子系统的未完成的请求,那么将未命中识别和记账信息记 录到未完成RAM 214中,并且请求可以被转发到下一级存储器子系统。 一旦下一级存储器 子系统完成了由该高速缓存提供的未命中请求,那么它可以基于实现选择返回所请求的数 据以及所请求的地址和/或关联的记账信息。为了发现一个或多个匹配,可以将地址/记 账信息与在未完成RAM 214内容中保持的子集潜在匹配(通常映射到相同的组)进行比 较。发现的匹配的集合可以指示已请求了该相同数据的EU/线程组合的列表。未完成RAM 214和其关联的逻辑可以将指令数据广播到处理器的多个核心104、106、108和110中的多 个线程,从而提高了处理器的性能。此外,对于来自另一高速缓存的未命中请求返回,可以 在未完成RAM214中执行查找并且可以在单个时钟内应答等待所述指令数据的所有挂起的 线程。因此,高速缓存112的架构向多个线程提供了对指令数据的存取。
到每个执行单元(EU)的高速缓存112的输出接口可以对于每个EU/线程/指令队 列条目/颜色排列设置返回给每个EU的单独的数据有效位,以允许将返回的数据指示为对 EU执行中所提供的所有可能的目的地位置同时有效。此外,改变未完成RAM 214存储设备 以存储该组属性和路属性。因此,高速缓存112的架构可以在单个时钟内向多个请求提供 对多个数据的存取。此外,与通常的高速缓存实现相比,高速缓存112的整体性能提高了。
高速缓存112与EU的接口包括颜色比特,以允许EU以推测性的方式在其执行的 点之前来预取指令,并且之后,当返回数据时,识别返回的数据是有效的还是过期的。为了 实现这一点,"颜色比特",即多状态变量可以用于识别与线程正在执行的当前连续指令流 关联的当前的和任意的"颜色"。在一些实施例中,可以为每个EU的每个线程维护颜色。每 当随着EU执行指令遇到指令请求流中的不连续时,例如,在"跳转"指令的情况下,可以改 变颜色比特的值。颜色信息可以作为任何高速缓存请求的一部分发送到高速缓存。本文描 述的高速缓存112可以支持处理每个线程两个颜色,尽管这可以容易地扩展到处理"n"个 颜色。EU用对高速缓存的每个请求提供颜色比特,并且当请求正在被服务时高速缓存用保 持的所有记账信息来维护颜色比特。在由高速缓存将数据返回给EU时,高速缓存可以返回 作为原始请求的一部分所发送的颜色比特的值。这允许EU/线程将返回的颜色与本地维护 的执行单元(EU)的当前的颜色进行比较。颜色匹配表明EU仍在当向高速缓存发出请求时 有效的连续指令流上工作,因此返回的数据可以与正在执行的指令流相关;未匹配可以表 明在请求未完成期间,EU/线程已经遇到指令流不连续,因此所返回的数据可能与执行的当前的流不相关,并且可以被丢弃。该机制允许EU/线程在每个指令流不连续处用新颜色做 出推测性的指令请求,尽管可以有对于高速缓存112中的相同线程挂起的未完成的和可能 过期的请求。这可以通过在数据返回的时间确定返回的数据的有效性,来提高具有引起较 低命中率的大内核的高速缓存112的整体性能。 仲裁器220可以用于调度到EU的数据返回。在任意给定的时钟,来自命中或未命 中或这两者的数据可以是准备好返回的。在一些实施例中,仲裁算法可以用于确定关于哪 个数据返回到服务的规则。 图3是说明了用于提高处理器的性能的方法的流程图。该方法可以包括将多个数 据存储在数据随机存取存储器(RAM)中(302)。该方法还可以包括为转发到下一级存储器 子系统的所有未完成的请求保存信息(304)。该方法还可以包括在已经完成所述请求之后 清除与所服务的请求相关联的信息(306)。方法还可以包括确定随后的请求是否与提供给 已经处于到下一级存储器子系统的未完成状态的一个或多个请求的地址相匹配(308)。方 法还可以包括将由下一级存储器子系统服务的所完成的请求匹配到至少一个请求者,所述 请求者在原始请求处于到下一级存储器子系统的未完成状态时发出请求(310)。方法可以 还包括存储每个请求特有的信息,所述信息包括组属性和路属性,所述组和路属性用于识 别一旦数据被返回,返回的数据应当被保存在数据RAM中的哪里,每个请求特有的信息还 包括线程ID和颜色(312)。方法可以还包括调度命中和未命中数据返回(314)。
为了说明和描述的目的,示出了本公开的具体的实施例的上述描述。其并不旨在 穷举或限制本公开为所公开的精确的形式,根据上述教导,可以进行多个变型和改变。为了 最佳地解释本公开的原理和其实际应用,选择并描述了实施例,由此使得本领域的其它技 术人员能够最佳地使用本公开和适于特定应用的具有各种变形的各种实施例。应当理解, 等价物的省略和替换视情况而定,其旨在在不背离本公开的权利要求的精神或范围的情况 下,覆盖应用或实现。
权利要求
一种用于处理器的高速缓存,所述高速缓存包括多个指令队列,用于处理至少一个无序指令返回;数据随机存取存储器(RAM),其能够存储多个数据;标签RAM,其能够存储所述数据RAM中所存储的所述多个数据的存储器地址和数据;未完成RAM,其能够为转发到下一级存储器子系统的所有未完成的请求保存信息;在所述请求已被完成之后清除与所服务的请求相关联的信息;确定随后的请求是否与提供给已经处于到所述下一级存储器子系统的未完成状态的一个或多个请求的地址相匹配;将由所述下一级存储器子系统服务的所完成的请求匹配到至少一个请求者,其中所述请求者在原始请求处于到所述下一级存储器子系统的未完成状态时发出请求;以及存储每个请求特有的信息,所述信息包括组属性和路属性,所述组和路属性用于识别一旦数据被返回,那么所返回的数据应当被保存在所述数据RAM中的何处,所述每个请求特有的信息还包括线程ID、指令队列位置和颜色中的至少一个;以及仲裁器,用于调度命中和未命中数据返回。
2. 根据权利要求1所述的高速缓存,其中,所述高速缓存能够向多个核心提供对所述数据RAM中存储的所述多个数据的存取。
3. 根据权利要求l所述的高速缓存,其中,所述数据RAM减小了存储在所述数据RAM中的所述多个数据的延迟。
4. 根据权利要求1所述的高速缓存,其中,一旦完成所述请求,就将线程ID、指令队列位置和颜色中的所述至少一个返回给所述请求者。
5. 根据权利要求4所述的高速缓存,其中,所述高速缓存在单个时钟时间内将数据返回到多个线程。
6. 根据权利要求1所述的高速缓存,还包括EU接口 ,该EU接口包括颜色比特,用于在数据返回时确定所返回的数据的关联性。
7. 根据权利要求6所述的高速缓存,其中,所述EU接口提高了具有低命中率的处理器的高速缓存的性能。
8. —种多核心和多线程系统,所述系统包括多个核心;以及连接到所述多个核心的高速缓存,所述高速缓存包括多个指令队列,用于处理至少一个无序指令返回;数据随机存取存储器(RAM),其能够存储多个数据;标签RAM,其能够存储所述数据RAM中所存储的所述多个数据的存储器地址和数据;未完成RAM,其能够为转发到下一级存储器子系统的所有未完成的请求保存信息;在所述请求已被完成之后清除与所服务的请求相关联的信息;确定随后的请求是否与提供给已经处于到所述下一级存储器子系统的未完成状态的一个或多个请求的地址相匹配;将由所述下一级存储器子系统服务的所完成的请求匹配到至少一个请求者,其中所述请求者在原始请求处于到所述下一级存储器子系统的未完成状态时发出请求;以及存储每个请求特有的信息,所述信息包括组属性和路属性,所述组和路属性用于识别一旦数据被返回,那么所返回的数据应当被保存在所述数据RAM中的何处,所述每个请求特有的信息还包括线程ID、指令队列位置和颜色中的至少一个;以及仲裁器,用于调度命中和未命中数据返回。
9. 根据权利要求8所述的系统,其中,所述高速缓存能够向所述多个核心提供对所述数据RAM中存储的所述多个数据的存取。
10. 根据权利要求8所述的系统,其中,所述数据RAM减小了存储在所述数据RAM中的所述多个数据的延迟。
11. 根据权利要求8所述的系统,其中, 一旦完成所述请求,就将所述线程ID、指令队列位置和颜色中的至少一个返回给所述请求者。
12. 根据权利要求11所述的系统,其中,所述高速缓存在单个时钟时间内向所述多个线程提供所述指令数据的存取。
13. 根据权利要求8所述的系统,还包括EU接口 ,该EU接口包括颜色比特,用于在数据返回时确定所返回的数据的关联性,以及允许所述EU的推测性请求。
14. 根据权利要求13所述的系统,其中,所述EU接口提高了具有低命中率的处理器的高速缓存的性能。
15. —种用于提高处理器的高速缓存的性能的方法,所述方法包括在数据随机存取存储器(RAM)中存储多个数据;在标签RAM中存储所述数据RAM中所存储的所述多个数据的存储器地址;为转发到下一级存储器子系统的所有未完成的请求保存信息;在所述请求已被完成之后清除与所服务的请求相关联的信息;确定随后的请求是否与提供给已经处于到所述下一级存储器子系统的未完成状态的一个或多个请求的地址相匹配;将由所述下一级存储器子系统服务的所完成的请求匹配到至少一个请求者,其中所述请求者在原始请求处于到所述下一级存储器子系统的未完成状态时发出请求;存储每个请求特有的信息,所述信息包括组属性和路属性,所述组和路属性用于识别一旦数据被返回,那么所返回的数据应当被保存在所述数据RAM中的何处,所述每个请求特有的信息还包括线程ID、指令队列位置和颜色中的至少一个;以及调度命中和未命中数据返回。
16. 根据权利要求15所述的方法,其中,所述高速缓存能够向多个核心提供对所述数据RAM中存储的所述多个数据的存取。
17. 根据权利要求15所述的方法,其中,所述数据RAM减小了存储在所述数据RAM中的所述多个数据的延迟。
18. 根据权利要求15所述的方法,其中,一旦完成所述请求,就可以将所述线程ID和颜色返回到所述请求者。
19. 根据权利要求18所述的方法,其中,所述高速缓存在单个时钟时间内向所述多个线程提供所述指令数据的存取。
20. 根据权利要求15所述的方法,还包括EU接口 ,该EU接口包括颜色比特,用于在跳转指令的情况下减小延迟c
全文摘要
根据一个实施例,本公开总体上提供了用于提高处理器的高速缓存的性能的方法。方法可以包括将多个数据存储在数据随机存取存储器(RAM)中。该方法还可以包括为转发到下一级存储器子系统的所有未完成的请求保存信息。该方法还可以包括在已经完成所述请求之后清除与所服务的请求相关联的信息。方法还可以包括确定随后的请求是否与提供给已经处于到下一级存储器子系统的未完成状态的一个或多个请求的地址相匹配。方法还可以包括将由下一级存储器子系统服务的所完成的请求匹配到至少一个请求者,所述请求者在原始请求处于到下一级存储器子系统的未完成状态时发出请求。方法可以还包括存储每个请求特有的信息,所述信息包括组属性和路属性,所述组和路属性用于识别一旦数据被返回,返回的数据应当被保存在数据RAM中的何处,每个请求特有的信息还包括线程ID,指令队列位置和颜色中的至少一个。方法可以还包括调度命中和未命中数据返回。当然,各种替代性实施例也在本公开的范围内。
文档编号G06F12/00GK101730885SQ200880022206
公开日2010年6月9日 申请日期2008年6月18日 优先权日2007年6月28日
发明者M·德怀尔, S·程, T·皮亚扎 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1