组合的高速缓存注入和锁定操作的制作方法

文档序号:6498017阅读:128来源:国知局
组合的高速缓存注入和锁定操作的制作方法
【专利摘要】电路布置和方法利用高速缓存注入逻辑来执行高速缓存注入和锁定操作,以与高速缓存行到主存储器的传递并行地在高速缓冲存储器中注入高速缓存行并且自动在所述高速缓冲存储器中锁定所述高速缓存行。所述高速缓存注入逻辑可以例如通过以下操作来附加地限制可以在所述高速缓冲存储器中存储的最大数量的已锁定的高速缓存行:中止高速缓存注入和锁定操作,注入所述高速缓存行而不锁定,或解锁和/或驱逐所述高速缓冲存储器中的另一高速缓存行。
【专利说明】组合的高速缓存注入和锁定操作

【技术领域】
[0001] 本发明通常涉及数据处理,具体地说,涉及处理器架构以及据此而利用的高速缓 冲存储器。

【背景技术】
[0002] 传统数据处理系统典型地依赖于多级存储器架构来优化微处理器和其它处理单 元对数据的存取。通过多级存储器架构,提供多级的存储器,其中,存储器的每个后续级典 型地提供更大的存储空间但增加的存取延迟。提供最低存取延迟但最小的存储空间量的最 高级存储器一般被称为高速缓冲存储器,并且通常直接集成到处理单元中或部署在同一集 成电路设备或芯片上。包括多个处理单元的数据处理系统中所使用的一种普通存储器架构 例如为单个共享主存储器补充专用于每个处理单元的一个或多个L1高速缓存以及一个L2 高速缓存、由多个处理单元共享的一个L3高速缓存。
[0003] 多级存储器架构依赖于数据的空间和时间方位性来使得存储器存取延迟最小化。 此外,处理单元典型地并且重复地存取位于存储器地址空间的相似区域中的数据。因此,通 过在特定处理单元可存取的最高级高速缓存中保存该处理单元需要使用的数据,检索该数 据所需的时间量得以最小化。与之对照,每当处理单元尝试存取并不位于高速缓冲存储器 中的数据时,该存取尝试被看作"错过"高速缓冲存储器,并且由于从更低级的存储器检索 数据,因此导致性能损失。对该数据的随后存取将于是典型地"碰撞"高速缓冲存储器,并 且存取数据所需的时间量将减少。
[0004] 为了促进数据在不同级的存储器之间的移动,典型地将数据组织为被称为"高速 缓存行"的固定大小区段。假定高速缓冲存储器中的有限存储空间,高速缓冲存储器期望地 仅存储处理单元当前正使用或在不久的将来很可能使用的高速缓存行。此外,每当新高速 缓存行需要存储在已满的高速缓冲存储器中时,已经存储在高速缓冲存储器中的高速缓存 行将需要被替换("驱逐")。通常,如果处理单元已经修改高速缓存行,则所驱逐的高速缓 存行写回到主存储器和/或一个或多个更低级的高速缓冲存储器。否则,如果尚未修改所 驱逐的高速缓存行,则可以仅丢弃所驱逐的高速缓存行。
[0005] 传统数据处理系统一般支持用于流送来自I/O设备或另外这样的硬件资源的数 据的能力。这种流送的数据典型地通过共享总线从硬件设备传递到数据处理系统的主存储 器,一个或多个处理单元然后按需要从存储器检索数据。特别是当处理单元也耦合到同一 共享总线时,数据从I/O设备传递到主存储器并且然后从主存储器传递到处理单元可能占 据总线上的过多带宽,并且导致降低的性能。
[0006] 在努力减缓这些问题中,一些传统数据处理系统支持被称为高速缓存注入操作的 操作,其中,正从硬件资源传递到主存储器的数据同时"注入"到高速缓冲存储器中,以用于 由关联处理单元立即使用。通过进行该操作,在一般减少共享总线上的流量的同时,处理单 元可以更快地存取并且处理到来数据。
[0007] 然而,虽然将高速缓存注入到处理单元的高速缓冲存储器中在一些实现中可以增 加处理效率,但由于关联高速缓存行并非特定地由与尝试存取这些高速缓存行的处理单元 关联的处理单元请求,因此高速缓存注入操作一般有点儿臆测。假定高速缓冲存储器中有 限的存储空间量以及对于该有限的存储空间的竞争,已经发现,在一些实例中,在处理高速 缓存行之前,可以从高速缓冲存储器提早地驱逐所注入的高速缓存行,结果,由于从主存储 器重新检索高速缓存行,因此稍后尝试存取这些提早地驱逐的高速缓存行的处理单元将经 历高速缓存错过以及因此较低的性能。
[0008] 因此,现有技术持续需要管理处理单元的高速缓冲存储器中的高速缓存注入以减 少所注入的高速缓存行的过早驱逐的可能性的方式。


【发明内容】

[0009] 本发明通过利用"高速缓存注入和锁定"操作以自动地锁定正注入到高速缓冲存 储器中的高速缓存行来解决与现有技术关联的这些和其它问题,并且由此限制所注入的高 速缓存行在由处理单元使用之前不被驱逐。此外,本发明一些实施例期望地管理高速缓冲 存储器和其中的已锁定的高速缓存行,以保留用于正常使用的高速缓冲存储器的部分和用 于高速缓存注入使用的部分。
[0010] 在本发明一些实施例中,可以监控到耦合到处理单元的主存储器(例如非高速缓 冲存储器)的数据传递,以标识目标为注入到与处理单元关联的高速缓冲存储器中的高速 缓存行。在一些实施例中,可以通过以信号表示高速缓存行可以注入到高速缓冲存储器中 的高速缓存注入指示符来标记所传递的高速缓存行。在其它实施例中,将数据传递到主存 储器的特定硬件资源可以包括指示从所述特定硬件资源发源的数据的源标识符,从而确定 各个高速缓存行是否可以被注入是至少部分地基于所包括的源标识符的。
[0011] 此外,在一些实施例中,高速缓存注入逻辑可以管理高速缓存行注入,以限制高速 缓冲存储器中可以注入并且锁定的高速缓存行的数量。在一些实施例中,高速缓存注入逻 辑可以保存当注入并且锁定高速缓存行时增加而当解锁高速缓存行时(例如在处理单元 已经处理高速缓存行之后)减少的锁定计数器。
[0012] 此外,本发明一些实施例实现驱逐优先化,从而可以响应于较高优先级的高速缓 存行需要在高速缓冲存储器中注入并且锁定而从所述高速缓冲存储器驱逐已锁定的高速 缓存行。在一些实施例中,高速缓存注入可以驱逐最近最少使用的已锁定的高速缓存行,从 而可以注入并且锁定新高速缓存行,而在其它实施例中,可以基于锁定指示符的优先化来 驱逐已锁定的高速缓存行。在一些实施例中,高速缓冲存储器可以保存与每个已锁定的高 速缓存行关联的源标识符,高速缓存注入逻辑可以基于每个已锁定的高速缓存行的源标识 符来驱逐已锁定的高速缓存行。
[0013] 因此,与本发明的一个方面一致,可以提供一种用于在包括执行单元和耦合到所 述执行单元的高速缓冲存储器的处理单元中存储数据的方法,其中,所述高速缓冲存储器 被配置为存储多个高速缓存行。所述方法可以包括:响应于检测到各个高速缓存行到耦合 到所述处理单元的第一存储器的传递,确定是否在所述高速缓冲存储器中注入并且锁定所 述各个高速缓存行;响应于确定在所述高速缓冲存储器中注入并且锁定所述各个高速缓 存行,使用耦合到所述高速缓冲存储器的高速缓存注入逻辑来执行高速缓存注入和锁定操 作,以在所述高速缓冲存储器中注入所述各个高速缓存行并且锁定所述各个高速缓存行。
[0014] 表征本发明的这些和其它优点和特征在所附权利要求中得以阐述并且形成其另 一部分。然而,为了更好地理解本发明以及通过其使用所获得的优点和目的,将参照附图以 及随附的描述本发明示例性实施例的描述性内容。

【专利附图】

【附图说明】
[0015] 图1是符合本发明实施例的包括数据处理中有用的示例性计算机的示例性自动 化计算机器的框图。
[0016] 图2是图1的计算机中所实现的示例性N0C的框图。
[0017] 图3是更详细地示出来自图2的N0C的节点的示例性实现的框图。
[0018] 图4是示出来自图2的N0C的IP块的示例性实现的框图。
[0019] 图5是示出符合本发明的被配置为支持高速缓存注入和锁定操作的数据处理系 统的框图。
[0020] 图6是示出符合本发明的可以使用图2的N0C实现并且被配置为支持高速缓存注 入和锁定操作的示例性多个节点的框图。
[0021] 图7是示出可以被执行以将图5的数据处理系统配置为将数据从硬件资源流送到 主存储器并且执行与之关联的高速缓存注入和锁定操作的操作序列的流程图。
[0022] 图8是示出可以由图5的处理单元执行以有选择地将数据注入并且锁定到与处理 单元关联的高速缓冲存储器中的操作序列的流程图。
[0023] 图9是示出可以由图5的处理单元执行以选择处理单元的高速缓冲存储器中的已 锁定的高速缓存行以用于驱逐的操作序列的流程图。
[0024] 图10是示出由图5的处理单元执行以在处理高速缓存行之后解锁与处理单元关 联的高速缓冲存储器中的已锁定的高速缓存行的操作序列的流程图。
[0025] 图11是示出图5的处理单元的示例性高速缓冲存储器并且示出符合图7和图8 的流程图的示例性操作序列的示例性框图。
[0026] 应理解,附图不一定符合比例,呈现示出本发明实施例的基本原理的各种优选特 征的某种简化表示。包括例如各种所示组件的具体尺寸、方位、位置、操作序列以及形状的、 符合在此所公开的本发明实施例的具体特征将部分地通过特定意图应用、使用和/或环境 而确定。所示实施例的特定特征可以相对于其它特征而放大或变形,以促进可视化和清楚 的理解。

【具体实施方式】
[0027] 本发明实施例提供用于执行高速缓冲存储器中注入并且自动锁定高速缓存行的 高速缓存注入和锁定操作的电路布置和方法。在一些实施例中,与高速缓冲存储器关联的 高速缓存注入逻辑管理高速缓存行的注入和锁定,从而高速缓冲存储器的部分可以对于正 常操作而保留,高速缓冲存储器的部分可以对于高速缓存注入和锁定而保留。本发明的实 施例可以管理过度锁定条件,其中,最大数量的已锁定的高速缓存行存储在高速缓冲存储 器中,并且新的高速缓存行可以被注入并且锁定。在一些实施例中,可以不注入并且锁定所 述新的高速缓存行,反而可以将所述新的高速缓存行仅写入到主存储器,由此有效地中止 高速缓存注入和锁定操作。在一些实施例中,所述新的高速缓存行可以注入到高速缓冲存 储器中,而不锁定所述新的高速缓存行,由此有效地将高速缓存注入和锁定操作转换为高 速缓存注入操作。在一些实施例中,可以基于已锁定的高速缓存行的优先化来驱逐和/或 解锁已锁定的高速缓存行,从而可以注入并且锁定所述新的高速缓存行。故此,本发明的一 些实施例通过经由高速缓存注入逻辑的高速缓冲存储器的可配置管理来实现高速缓冲存 储器中的高速缓存注入和锁定。
[0028] 本领域技术人员应理解其它变化和修改。因此,本发明不限于在此所讨论的具体 实现方式。
[0029] 硬件和软件环境
[0030] 现参照附图,其中,相同的标号贯穿若干视图表示相同部分,图1示出符合本发明 实施例的包括数据处理中有用的示例性计算机10的示例性自动化计算机器。图1的计算 机10包括至少一个计算机处理器12或"CPU"以及随机存取存储器14 ( "RAM"),其通过高 速存储器总线16和总线适配器18连接到处理器12和计算机10的其它组件。
[0031] RAM 14中所存储的是应用程序20--用户级计算机程序指令的模块,用于执行特 定数据处理任务(例如比如文字处理、电子表单、数据库操作、视频游戏、股票市场仿真、原 子量子处理仿真或其它用户级应用)。RAM 14中还存储的是操作系统22。结合本发明的实 施例有用的操作系统包括 UNIX?、Linux?,Microsft Windows XP?、AIX?、IBM 的 i5/0S? 以 及对于本领域技术人员将存在的其它操作系统。图1的示例中的操作系统22和应用20示 出在RAM 14中,但该软件的很多组件典型地存储在同样例如在盘驱动器24上的非易失性 存储器中。
[0032] 如以下将变得更清楚的那样,可以在片上网络(N0C)集成电路设备或芯片内实现 符合本发明的实施例,故此,计算机10示出包括两个示例性N0C :视频适配器26和协处理 器28。N0C视频适配器26可以另外被称为图形适配器,其为特殊地设计用于对显示设备 30 (例如显示屏幕或计算机监视器)的图形输出的I/O适配器的示例。N0C视频适配器26 通过高速视频总线32、总线适配器18以及前端总线34 (其也是高速总线)连接到处理器 12。N0C协处理器28通过总线适配器18以及前端总线34和36 (其也是高速总线)连接到 处理器12。图1的N0C协处理器可以优化为例如根据主处理器12的命令而加速特定数据 处理任务。
[0033] 图1的示例性N0C视频适配器26和N0C协处理器28均包括N0C,包括集成处理器 ("IP")块、路由器、存储器通信控制器和网络接口控制器,将在以下结合图2-图3更详细 地讨论其细节。N0C视频适配器和N0C协处理器均对于使用并行处理的程序得以优化,并且 还需要对共享存储器的快速随机存取。然而,本领域技术人员应理解,可以以N0C设备和设 备架构之外的设备和设备架构来实现本发明。本发明因此不限于N0C设备内的实现。
[0034] 图1的计算机10包括盘驱动器适配器38,通过扩展总线40和总线适配器18耦合 到处理器12以及计算机10的其它组件。盘驱动器适配器38将非易失性数据存储器以盘 驱动器24的形式连接到计算机10,并且可以例如使用集成驱动器电子("IDE")适配器、 小型计算机系统接口("SCSI")适配器以及对于本领域技术人员将存在的其它适配器而得 以实现。非易失性存储器也可以实现为光盘驱动器、电可擦除可编程只读存储器(所谓的 "EEPR0M"或"闪速"存储器)、RAM驱动器等,如将对于本领域技术人员存在的那样。
[0035] 计算机10还包括一个或多个输入/输出("I/O")适配器42,其通过例如用于控 制对显示设备(例如计算机显示屏幕)的输出的软件驱动器和计算机硬件以及来自用户输 入设备44(例如键盘和鼠标)的用户输入来实现面向用户的输入/输出。此外,计算机10 包括:通信适配器46,用于与其它计算机48的数据通信以及与数据通信网络50的数据通 信。可以通过RS-232连接、通过外部总线(例如通用串行总线("USB"))、通过数据通信 数据通信网络(例如IP数据通信网络)并且以对于本领域技术人员将存在的其它方式来 串行地执行这样的数据通信。通信适配器实现硬件级的数据通信,计算机据此直接地或通 过数据通信网络将数据通信发送到另一计算机。适合于在计算机10中使用的通信适配器 的示例包括用于有线拨号通信的调制解调器、用于有线数据通信网络通信的以太网(IEEE 802. 3)适配器以及用于无线数据通信网络通信的802. 11适配器。
[0036] 为了进一步解释,图2阐述根据本发明实施例的示例N0C 102的功能框图。在"芯 片" 100上(即在集成电路上)实现图2中的NOC。N0C 102包括分组为互连节点的集成处 理器("IP")块104、路由器110、存储器通信控制器106和网络接口控制器108。每个IP 块104通过存储器通信控制器106和网络接口控制器108适配到路由器110。每个存储器 通信控制器控制IP块与存储器之间的通信,每个网络接口控制器108控制通过路由器110 的IP块间通信。
[0037] 在N0C 102中,每个IP块表示用作用于N0C内的数据处理的构建块的同步或异步 逻辑设计的可重用单元。术语" IP块"有时扩展为"知识产权块",有效地将IP块指定为由 一方所有的设计,即一方的知识产权,以许可于其它用户或半导体电路的设计者。然而,在 本发明的范围内,因为无需IP块服从任何特定所有权,所以该术语在该说明书中总是扩展 为"集成处理器块"。在此所指定的IP块是逻辑、小单元或芯片布局设计的可重用单元,其 可以是或可以不是知识产权的主题。IP块是可以形成为ASIC芯片设计或FPGA逻辑设计的 逻辑内核。
[0038] -种用于通过类比来描述IP块的方式是,IP块用于N0C设计,什么库用于计算机 编程,或分立式集成电路组件用于印制电路板设计。在符合本发明实施例的N0C中,IP块 可以实现为普通门网表(gate netlist)、完全专用或通用微处理器,或以对于本领域技术 人员可以存在的其它方式而得以实现。网表是IP块的逻辑功能的布尔代数表示(门、标准 小单元),类似于用于高级程序应用的汇编代码列表。也可以例如通过硬件描述语言(例 如Verilog或VHDL)中所描述的可合成的形式来实现N0C。除了网表和可合成的实现之外, 也可以在较低级物理描述中递送N0C。模拟IP块元件(例如SERDES、PLL、DAC、ADC等)可 以通过晶体管布局格式(例如GDSII)而分布。同样有时以布局格式来提供IP块的数字元 件。应理解,IP块以及符合本发明而实现的其它电路可以通过在各个细节级定义实现该逻 辑的电路布置的功能和/或布局的计算机数据文件(例如逻辑定义程序代码)的形式而分 发。因此,虽然本发明已经并且下文中将在完全功能集成电路设备、利用这些设备的数据处 理系统以及其它有形、物理硬件电路中所实现的电路布置的情况下得以描述,但具有本公 开的益处的本领域技术人员应理解,也可以在程序产品内实现本发明,并且无论用于分发 程序产品的特定类型的计算机可读存储介质如何,本发明都等同地应用。计算机可读存储 介质的示例包括但不限于物理可记录类型介质,例如易失性和非易失性存储器设备、软盘、 硬盘驱动器、CD-ROM和DVD (其中)。
[0039] 图2的示例中的每个IP块104通过存储器通信控制器106适配到路由器110。 每个存储器通信控制器是适用于在IP块与存储器之间提供数据通信的同步和异步逻辑电 路的聚合。IP块与存储器之间的这些通信的示例包括存储器加载指令和存储器存储指令。 以下参照图3更详细地描述存储器通信控制器106。每个IP块104还通过网络接口控制 器108适配到路由器110,网络接口控制器108控制各IP块104之间通过路由器110的通 信。各IP块之间的通信的示例包括携带数据的消息以及用于在并行应用中并且在管道式 (pipelined)应用中处理IP块当中的数据的指令。以下还参照图3更详细地描述网络接口 控制器108。
[0040] 路由器110以及其间的对应链路118实现N0C的网络操作。链路118可以是在连 接所有路由器的物理并行有线总线上所实现的分组结构。也就是说,在宽得足以同时容纳 包括所有头信息和有效载荷数据的整个数据交换分组的有线总线上实现每个链路。如果分 组结构包括64个字节(例如,包括八字节头和56字节的有效载荷数据),则针对每个链路 的有线总线是64字节宽,512条有线。此外,每个链路可以是双向的,从而如果链路分组结 构包括64字节,则有线总线实际上在每个路由器与网络中的其邻近设备中的每一个之间 包含1024条有线。在这种实现中,消息可以包括多于一个的分组,但每个分组将精确地配 合到有线总线的宽度上。在替选中,可以在仅宽得足以容纳分组的一部分的有线总线上实 现链路,从而分组将拆分为多个拍子(beat),例如,从而如果链路在宽度上实现为16字节 或128条有线,则64字节分组可以拆分为四个拍子。应理解,不同的实现可以基于实际物 理限制以及期望的性能特征而使用不同的总线宽度。如果路由器与有线总线的每个区段之 间的连接被称为端口,则每个路由器包括五个端口,一个端口用于在网络上的数据传输的 四个方向中的每一个,第五端口用于将路由器通过存储器通信控制器和网络接口控制器适 配到特定IP块。
[0041] 每个存储器通信控制器106控制IP块与存储器之间的通信。存储器可以包括片 外主RAM 112、直接通过存储器通信控制器106连接到IP块的存储器114、作为IP块而启用 的片上存储器116以及片上高速缓存。在N0C 102中,片上存储器114、116之一例如可以实 现为片上高速缓冲存储器。所有这些形式的存储器可以部署在相同的地址空间、物理地址 或虚拟地址中,甚至对于直接附连到IP块的存储器也成立。因为可以从在网络上的任何地 方的任何IP块直接寻址该存储器,所以存储器寻址消息因此可以关于IP块是完全双向的。 可以从该IP块或N0C中任何其他的IP块寻址IP块上的存储器116。直接附连到存储器通 信控制器的存储器114可以由通过该存储器通信控制器适配到网络的IP块寻址,并且也可 以从N0C中任何地方的任何其他IP块寻址。
[0042] N0C 102包括两个存储器管理单元("MMU") 120、122,示出符合本发明实施例的用 于N0C的两个替选存储器架构。MMU 120实现于IP块内,在允许N0C的整个其余架构在物 理存储器地址空间中操作的同时,允许IP块内的处理器在虚拟存储器中操作。MMU 122实 现于片外,通过数据通信端口 124连接到N0C。端口 124包括在N0C与MMU之间传导信号所 需的管脚和其它互连以及外部MMU 122所需的用于将消息分组从N0C分组格式转换为总线 格式的足够智能。MMU的外部位置意味着N0C的所有IP块中的所有处理器可以在虚拟存储 器地址空间中操作,其中,由片外MMU 122处理对片外存储器的物理地址的所有转换。
[0043] 除了通过使用MMU 120U22所示的两个存储器架构之外,数据通信端口 126还示 出能够在本发明实施例中利用的N0C中有用的第三存储器架构。端口 126提供N0C 102的 IP块104与片外存储器112之间的直接连接。在处理路径中没有MMU的情况下,该架构提 供由NOC的所有IP块对于物理地址空间的利用。在双向地共享地址空间中,NOC的所有IP 块可以通过直接连接到端口 126的IP块导向的包括加载和存储的存储器寻址消息来存取 地址空间中的存储器。端口 126包括在NOC与片外存储器112之间传导信号所需的管脚和 其它互连以及片外存储器112所需的用于将消息分组从NOC分组格式转换为总线格式的足 够智能。
[0044] 在图2的示例中,IP块之一被指定主机接口处理器128。主机接口处理器128在 N0C与可以安装N0C的主机计算机10之间提供接口,并且还将数据处理服务提供给N0C上 的其它IP块,包括例如在N0C的IP块之间接收并且派发来自主机计算机的数据处理请求。 N0C可以例如实现如以上参照图1所描述的较大计算机10上的视频图形适配器26或协处 理器28。在图2的示例中,主机接口处理器128通过数据通信端口 130连接到较大主机计 算机。端口 130包括在N0C与主机计算机之间传导信号所需的管脚和其它互连以及主机计 算机10所需的用于将消息分组从N0C转换为总线格式的足够智能。在图1的计算机中的 N0C协处理器的示例中,该端口将提供N0C协处理器28的链路结构与在N0C协处理器28和 总线适配器18之间的前端总线36所需的协议之间的数据通信格式转译。
[0045] 图3接下来示出更详细地说明以可以被称为节点或硬件线程的132联合示出的在 N0C 102中的IP块104、存储器通信控制器106、网络接口控制器108和路由器110内所实 现的组件的功能框图。IP块104包括计算机处理器134和I/O功能136。在该示例中,计 算机存储器由IP块104中的随机存取存储器("RAM")138的区段表示。以上参照图2所 描述的存储器可以占据每个IP块上的内容可从N0C中的任何IP块寻址并且存取的物理地 址空间的区段。每个IP块中的处理器134、I/O能力136和存储器138有效地将IP块实现 为普通可编程微计算机。然而,如上所述,在本发明的范围中,IP块通常表示用作用于N0C 内的数据处理的构建块的同步或异步逻辑的可重用单元。因此,虽然为了解释,普通实施例 是有用的,但将IP块实现为普通可编程微计算机并非本发明的限制。
[0046] 在图3的N0C 102中,每个存储器通信控制器106包括多个存储器通信执行引擎 140。每个存储器通信执行引擎140能够执行来自IP块104的存储器通信指令,包括网络 与IP块104之间的双向存储器通信指令流141、142、144。存储器通信控制器所执行的存储 器通信指令可以不仅源自通过特定存储器通信控制器适配到路由器的IP块,而且还可以 源自N0C 102中的任何地方的任何IP块104。也就是说,N0C中的任何IP块可以生成存储 器通信指令,并且通过N0C的路由器将该存储器通信指令发送到与用于执行该存储器通信 指令的另一 IP块关联的另一存储器通信控制器。该存储器通信指令可以包括例如转译后 备(lookaside)缓冲器控制指令、高速缓存控制指令、屏蔽(barrier)指令以及存储器加载 和存储指令。
[0047] 每个存储器通信执行引擎140能够与其它存储器通信执行引擎分离地并且并行 地执行整个存储器通信指令。存储器通信执行引擎实现对于存储器通信指令的并发吞吐量 而优化的可调节存储器事务处理器。存储器通信控制器106支持全都对于多个存储器通信 指令的同时执行而并发地运行的多个存储器通信执行引擎140。新的存储器通信指令由存 储器通信控制器106分配到存储器通信引擎140,存储器通信执行引擎140可以同时接受多 个响应事件。在该示例中,所有存储器通信执行引擎140是相同的。因此,通过调节存储器 通信执行引擎140的数量来实现调节可以由存储器通信控制器106同时处理的存储器通信 指令的数量。
[0048] 在图3的N0C 102中,每个网络接口控制器108能够将通信指令从命令格式转换为 网络分组格式,以用于通过路由器110在各IP块104之间的传输。通信指令可以由IP块 104或存储器通信控制器106以命令格式而格式化,并且以命令格式提供给网络接口控制 器108。命令格式可以是符合IP块104和存储器通信控制器106的架构寄存器文件的本机 格式。网络分组格式典型地是通过网络的路由器110的传输所需的格式。每个这种消息由 一个或多个网络分组构成。在网络接口控制器中从命令格式转换为分组格式的这些通信指 令的示例包括IP块与存储器之间的存储器加载指令和存储器存储指令。这些通信指令也 可以包括IP块之间发送携带数据的消息的通信指令以及用于在并行应用和管道式应用中 处理IP块之间的数据的指令。
[0049] 在图3的N0C 102中,每个IP块能够通过IP块的存储器通信控制器将基于存储器 地址的通信发送到存储器以及从存储器发送基于存储器地址的通信,然后还通过其网络接 口控制器发送到网络。基于存储器地址的通信是IP块的存储器通信控制器的存储器通信 执行引擎所执行的存储器存取指令(例如加载指令或存储指令)。这些基于存储器地址的 通信典型地在IP块中发源,以命令格式而格式化,并且移交到存储器通信控制器,以用于 执行。
[0050] 因为无论哪个IP块发源任何特定的基于存储器地址的通信,任何待存取的存储 器都可以位于直接附连到N0C中的任何存储器通信控制器的片上或片外的物理存储器地 址空间中的任何地方,或最终通过N0C的任何IP块得以存取,所以通过消息流量来执行很 多基于存储器地址的通信。因此,在N0C 102中,以消息流量执行的所有基于存储器地址的 通信从存储器通信控制器传送到关联的网络接口控制器,以用于从命令格式转换为分组格 式并且以消息通过网络而传输。在对分组格式的转换中,网络接口控制器还根据待由基于 存储器地址的通信存取的一个或多个存储器地址来标识用于分组的网络地址。以存储器地 址来寻址基于存储器地址的消息。每个存储器地址由网络接口控制器映射到网络地址,典 型地,负责物理存储器地址的某个范围的存储器通信控制器的网络位置。存储器通信控制 器106的网络位置自然也是该存储器通信控制器的关联路由器110、网络接口控制器108和 IP块104的网络位置。为了通过N0C的路由器发送基于存储器地址的通信,每个网络接口 控制器内的指令转换逻辑150能够将存储器地址转换为网络地址。
[0051] 在从网络的路由器110接收到消息流量时,每个网络接口控制器108针对存储器 指令来探查每个分组。包含存储器指令的每个分组移交到与接收网络接口控制器关联的 存储器通信控制器106,其在将分组的其余有效载荷发送到IP块之前执行存储器指令,以 用于进一步处理。以此方式,在IP块开始执行取决于特定存储器内容的来自消息的指令之 前,存储器内容总是准备支持IP块进行的数据处理。
[0052] 在图3的N0C 102中,每个IP块104能够旁路其存储器通信控制器106,并且通 过IP块的网络接口控制器108将IP块间网络寻址的通信146直接发送到网络。网络寻址 的通信是由网络地址导向到另一 IP块的消息。这些消息发送管道式应用中的工作数据、用 于SMD应用中的IP块之间的单个程序处理的多个数据等,如对于本领域技术人员将存在 的那样。这些消息与基于存储器地址的通信的区别在于,它们是由获知消息通过N0C的路 由器而导向到的网络地址的发源IP块从一开始就网络寻址的。这些网络寻址的通信以命 令格式由IP块通过I/O功能136直接传送到IP块的网络接口控制器,然后由网络接口控 制器转换为分组格式,并且通过NOC的路由器发送到另一 IP块。这些网络寻址的通信146 是双向的,取决于它们在任何特定应用中的使用而潜在地进入或出自NOC的每个IP块。然 而,每个网络接口控制器能够既将这些通信发送到关联路由器又从关联路由器接收这些通 信,每个网络接口控制器能够直接既将这些通信直接发送到关联IP块又从关联IP块直接 接收这些通信,这样旁路关联存储器通信控制器106。
[0053] 图3的示例中的每个网络接口控制器108也能够实现按类型来表征网络分组的网 络上的虚拟信道。每个网络接口控制器108包括虚拟信道实现逻辑148,其按类型来分类每 个通信指令,并且在以分组形式将指令移交到路由器110之前,将指令的类型记录在网络 分组格式的字段中,以用于在N0C上的传输。通信指令类型的示例包括IP块间基于网络地 址的消息、请求消息、对请求消息的响应、导向到高速缓存的无效消息;存储器加载和存储 消息;对存储器加载消息的响应等。
[0054] 图3的示例中的每个路由器110包括路由逻辑152、虚拟信道控制逻辑154和虚拟 信道缓冲器156。路由逻辑典型地实现为同步和异步逻辑的网络,其实现用于路由器110、 链路118和各路由器之间的总线有线所形成的网络中的数据通信的数据通信协议栈。路由 逻辑152包括本领域技术人员可以在片外网络中关联于路由表的功能,路由表在至少一些 实施例中被认为太慢并且对于N0C中的使用是麻烦的。实现为同步和异步逻辑的网络的路 由逻辑可以被配置为与单个时钟周期同样快地进行路由判断。该示例中的路由逻辑通过选 择用于转发路由器中所接收到的每个分组的端口来对分组进行路由。每个分组包含该分组 待路由到的网络地址。
[0055] 在描述以上的基于存储器地址的通信中,每个存储器地址描述为由网络接口控制 器映射为网络地址--存储器通信控制器的网络位置。存储器通信控制器106的网络位置 自然也是该存储器通信控制器的关联路由器110、网络接口控制器108和IP块104的网络 位置。因此,在IP块间或基于网络地址的通信中,对于应用级数据处理还典型的是,将网络 地址看作N0C的路由器、链路和总线有线所形成的网络内的IP块的位置。图2示出该网络 的一种组织是行和列的网格,其中,每个网络地址可以实现为例如用于网格的关联路由器、 IP块、存储器通信控制器和网络接口控制器的每个集合的唯一标识符或网格中的每个该集 合的X、y坐标。
[0056] 在图3的N0C 102中,每个路由器110实现两个或更多个虚拟通信信道,其中,每 个虚拟通信信道由通信类型来表征。通信指令类型并且因此虚拟信道类型包括上述这些类 型:IP块间基于网络地址的消息、请求消息、对请求消息的响应、导向到高速缓存的无效消 息;存储器加载和存储消息;对存储器加载消息的响应等。在支持虚拟信道中,图3的示例 中的每个路由器110还包括虚拟信道控制逻辑154和虚拟信道缓冲器156。虚拟信道控制 逻辑154针对其所分配的通信类型来检查每个接收到的分组,并且将每个分组放置在用于 该通信类型的外出虚拟信道缓冲器中,以用于通过端口传输到N0C上的邻近路由器。
[0057] 每个虚拟信道缓冲器156具有有限存储空间。当在短时间段中接收到很多分组 时,虚拟信道缓冲器可能填满--从而没有更多的分组可以置放在缓冲器中。在其它协议 中,将丢弃到达缓冲器填满的虚拟信道的分组。然而,该示例中的每个虚拟信道缓冲器156 通过总线有线的控制信号而能够通过虚拟信道控制逻辑建议周围路由器暂停虚拟信道中 的传输,即暂停特定通信类型的分组的传输。当因此而暂停一个虚拟信道时,所有其它虚拟 信道不受影响,并且可以继续以满容量而操作。控制信号一路通过每个路由器有线连接返 回到每个路由器的关联网络接口控制器108。在接收到该信号时,每个网络接口控制器被配 置为:拒绝从其关联存储器通信控制器106或其关联IP块104接受用于所暂停的虚拟信道 的通信指令。以此方式,暂停虚拟信道作用于实现虚拟信道的所有硬件,一路回到发源IP 块。
[0058] 暂停虚拟信道中的分组传输的一个效果是:绝不丢弃分组。当路由器遭遇在某种 不可靠的协议(例如比如因特网协议)中可能丢弃分组的情况时,图3的示例中的路由器 可以通过它们的虚拟信道缓冲器156和它们的虚拟信道控制逻辑154来暂停虚拟信道中的 所有分组传输,直到缓冲器空间再次可用为止,这消除了对丢弃分组的任何需要。因此,图 3的N0C可以通过异常薄的硬件层来实现高度可靠的网络通信协议。
[0059] 图3的示例N0C也可以被配置为:保持片上存储器高速缓存与片外存储器高速缓 存之间的高速缓存一致性。每个N0C可以支持均针对相同潜在存储器地址空间而操作的多 个高速缓存。例如,高速缓存可以受控于IP块、存储器通信控制器或N0C外部的高速缓存 控制器。图2的示例中的片上存储器114U16之一也可以实现为片上高速缓存,并且在本 发明的范围内,高速缓冲存储器也可以实现为片外的。
[0060] 图3所示的每个路由器110包括五个端口--通过总线有线118连接到其它路 由器的四个端口 158A-D以及将每个路由器通过网络接口控制器108和存储器通信控制器 106连接到其关联IP块104的第五端口 160。从图2和图3的图示可见,N0C 102的路由器 110和链路118形成网格网络,其中,垂直链路和水平链路连接每个路由器中的垂直端口和 水平端口。在图3的图示中,例如,端口 158AU58C和160被称为垂直端口,而端口 158B和 158D被称为水平端口。
[0061] 图4接下来以另一方式示出实现为分区为指令单元(IU) 162、执行单元(XU) 164和 辅助执行单元(AXU) 166的处理元件的符合本发明的IP块104的一个示例性实现。在所示 实现中,IU 162包括多个指令缓冲器168,其从L1指令高速缓存(iCACHE) 170接收指令。每 个指令缓冲器168专用于多个(例如四个)对称多线程(SMT)硬件线程之一。有效到真实 转译单元(iERAT) 172耦合到iCACHE 170,并且用于将来自多个线程取回定序器174的指令 取回请求转译为用于从更低阶存储器检索指令的真实地址。每个线程取回定序器174专用 于特定硬件线程,并且用于确保待由关联线程执行的指令被取回到iCACHE中,以用于派发 到适当的执行单元。还如图4所示,取回到指令缓冲器168中的指令也可以受分支预测逻 辑176监控,分支预测逻辑176将提示提供给每个线程取回定序器174,以最小化在执行线 程中源自分支的指令高速缓存错失。
[0062] IU 162还包括依赖性/发布逻辑块178,专用于每个硬件线程,并且被配置为:解 决依赖性并且控制指令从指令缓冲器168发布到XU 164。此外,在所示实施例中,在AXU 166 中提供分离的依赖性/发布逻辑180,因此使得分离的指令能够由不同的线程并发地发布 到XU 164和AXU 166。在替选实施例中,逻辑180可以被部署在IU 162中,或可以完全被省 略,从而逻辑178将指令发布到AXU 166。
[0063] XU 164实现为固定点执行单元,包括耦合到固定点逻辑184、分支逻辑186和加载 /存储逻辑188的通用寄存器(GPR) 182的集合。加载/存储逻辑188通过dEART逻辑192 所提供的有效到真实转译而耦合到L1数据高速缓存(dCACHE) 190。XU 164可以被配置为: 实际上实现任何指令集(例如32b或64b PowerPC指令集的全部或一部分)。
[0064] AXU 166操作为连同一个或多个执行块194包括专用依赖性/发布逻辑180的辅 助执行单元。AXU 166可以包括任何数量的执行块,并且可以实际上实现任何类型的执行单 元(例如浮点单元)或一个或多个专用执行单元(例如加密/解密单元、协处理器、矢量处 理单元、图形处理单元、XML处理单元)等。在所示实施例中,AXU 166包括对XU 164的高 速辅助接口,例如,以支持AXU架构状态与XU架构状态之间的直接移动。
[0065] 可以经由耦合到N0C 102的网络接口控制器108通过以上结合图2所讨论的方式 来管理与IP块104的通信。连同基于消息的通信一起,可以提供基于地址的通信,例如,以 存取L2高速缓冲存储器。例如,每个IP块104可以包括专用收取箱和/或发出箱,以处理 各IP块之间的节点间通信。
[0066] 可以在以上结合图1-图4所描述的硬件和软件环境内实现本发明实施例。然而, 具有本公开的益处的本领域技术人员应理解,本发明可以实现于大量不同的环境中,并且 在不脱离本发明的精神和范围的情况下,可以对前述硬件和软件实施例进行其它修改。故 此,本发明不限于在此所公开的特定硬件和软件环境。
[0067] 用于高速缓冲存储器的可配置高速缓存注入和锁定
[0068] 包括符合本发明实施例的高速缓冲存储器和执行单元的处理单元从数据传递到 耦合到处理单元的存储器而将高速缓存行注入到高速缓冲存储器中。例如,流式传送工作 负荷一般将数据从I/O设备写入到主存储器,目的是在近期未来中处理数据。在该示例中, 数据中所包括的高速缓存行可以注入到高速缓冲存储器中,以用于处理,所注入的行可以 被锁定,从而高速缓存行在被使用之前不受驱逐或驱赶。有利的是,由于高速缓存行与在 主存储器中存储高速缓存行并行地注入到高速缓冲存储器,因此促进流式传送工作负荷的 高速缓存注入并且锁定流式传送工作负荷的高速缓存行可以减少存储器带宽需求,从而并 不从主存储器检索高速缓存行以用于处理。此外,在一些实施例中,基于高速缓存行、所传 递的数据和/或生成所传递的数据的硬件资源,高速缓存行注入和锁定可以由耦合到高速 缓冲存储器的高速缓存注入逻辑管理,从而在驱逐和/或解锁较低优先级高速缓存行的同 时,在高速缓冲存储器中注入并且锁定较高优先级高速缓存行。
[0069] 现参照图5,该图示出符合本发明实施例的包括执行单元202和高速缓冲存储器 204 (例如L2高速缓存)的示例性处理器200或处理单元。硬件资源206和主存储器208 可以耦合到处理器200和/或彼此耦合。在本发明一些实施例中,处理器200、硬件资源206 和主存储器208可以经由计算系统的共享系统总线而互连,从而数据可以在处理器200、硬 件资源206和/或主存储器208之间通过系统总线而得以传递。于此,硬件资源可以包括 例如处理来自蜂窝电话天线的数据流的分组处理器。作为另一示例,硬件资源可以实现为 内嵌解压或加密引擎,其取走网络接口的数据并且将其流送到处理器。硬件资源也可以指 代通过N0C将数据流送到另一 IP块或节点的IP块或节点,有效地将数据从一个节点的高 速缓存流送到另一节点的高速缓存。具有本公开的益处的本领域技术人员应理解硬件资源 的其它实现方式。
[0070] 故此,在符合本发明的实施例中,分析从硬件资源传递到主存储器208的数据,以 确定是否将数据中所包括的一个或多个高速缓存行注入并且锁定到处理器200的高速缓 冲存储器204中。确定是否注入并且锁定高速缓存行可以例如至少部分地基于数据中所包 括的高速缓存注入指示符、与硬件资源208对应的源标识符和/或高速缓冲存储器204的 状态。
[0071] 应理解,硬件资源、高速缓冲存储器和主存储器可以通过符合本发明的多种不同 方式而彼此耦合。例如,替代如图5的数据处理系统中所使用的共享总线,图6示出包括经 由片上网络224而彼此耦合的多个节点222的示例性N0C处理器220。如所示,每个节点 222包括用于通过片上网络224传递数据的路由器226以及IP块228,每个IP块包括高速 缓冲存储器230和执行单元232。此外,N0C包括耦合到片上网络224的片上存储器234、片 外存储器控制器236和I/O控制器238。如所示,片外存储器控制器236耦合到片外存储器 240,从而数据可以经由片外存储器控制器236通过片上网络224传递出入片外存储器240。 相似地,I/O控制器238耦合到I/O设备242,从而数据可以经由I/O控制器238通过片上 网络传递出入I/O设备。
[0072] 故此,在本发明一些实施例中,各个IP块228的各个高速缓冲存储器230可以分 析从I/O设备242传递到片外存储器240和/或片上存储器234的数据,以确定是否可以 在各个高速缓存230中注入并且锁定所传递的数据的一个或多个高速缓存行。此外,符合 本发明实施例,I/O控制器238和I/O设备242可以由N0C处理器220配置为传递在各个 高速缓冲存储器230中用于注入的数据。此外,N0C处理器220可以通知各个高速缓冲存 储器230针对用于注入和锁定的高速缓存行而探听从I/O设备传递到片上存储器234和/ 或片外存储器240的数据。故此,当数据从I/O设备242传递到片外存储器240或片上存 储器234时,各个高速缓冲存储器230可以分析数据,以确定是否注入并且锁定所传递的数 据中所包括的高速缓存行。
[0073] 图7提供示出可以由处理单元(即处理器)和/或高速缓冲存储器执行从而从硬 件资源传递到主存储器的数据中所包括的高速缓存行可以有选择地在高速缓冲存储器中 得以注入并且锁定的操作序列的流程图300。初始地,可以期望处理器将硬件资源和/或高 速缓冲存储器配置为执行可注入数据传送操作,例如流送将在主存储器中并发地存储并且 注入到高速缓冲存储器中的数据。处理器通知I/O控制器和/或连接到I/O控制器的硬件 设备将数据传递到存储器并且对数据做标记或做标签,以用于高速缓存注入(块302)。处 理器还通知与高速缓冲存储器关联的高速缓存注入逻辑针对用于注入到高速缓冲存储器 中的高速缓存行探听从硬件设备传递到存储器的数据。故此,当设备将数据传递到存储器 时(块306),与高速缓冲存储器关联的高速缓存注入逻辑探听数据并且对所传递的数据中 所包括的高速缓存行执行高速缓存注入和锁定操作(块308)。
[0074] 应理解,设备和/或高速缓冲存储器可以通过不同的方式被配置为处理符合本发 明的高速缓存注入和锁定操作。例如,可以期望在一些实施例中支持高速缓存注入操作以 及高速缓存注入和锁定操作二者,故此,可以期望通知或配置设备以附加地对其通信做标 记或做标签,以指示是否当数据注入到高速缓冲存储器中时应被锁定。也可以期望通知或 配置高速缓冲存储器以锁定所注入的高速缓存行或让高速缓存行解锁。在一些实施例中, 锁定高速缓存行可以是仅对于特定设备(例如基于源标识符)或特定类型的数据而可配置 的。在其它实施例中,可以期望仅支持高速缓存注入和锁定操作,从而作为默认条件,将锁 定所有可注入数据。
[0075] 图8提供示出可以由与处理器的高速缓冲存储器关联的高速缓存注入逻辑执行 以有选择地注入并且锁定高速缓冲存储器中所包括的高速缓存行的操作序列的流程图 320。高速缓存注入逻辑例如经由探听存储器总线来检测传递到耦合到处理器的存储器的 数据(块322),高速缓冲存储器和/或数据受分析以确定是否注入并且锁定数据中所包括 的高速缓存行。高速缓存注入逻辑确定数据是否适合于注入(块324)。在一些实施例中, 所传递的数据可以包括指示可以注入数据的注入使能指示符。在一些实施例中,数据可以 包括指示数据传递自的源硬件资源的源标识符,高速缓存注入逻辑可以基于源标识符来确 定数据是否适合于注入。
[0076] 响应于确定数据不是用于注入的类型(块324的"N"分支)(例如,数据不包括有 效源标识符,或数据不包括指示可以注入数据的注入指示符),不在该高速缓冲存储器中注 入并且锁定数据(块326)。注意,由于数据正传递到主存储器,因此通信仍然完成,并且数 据写入到存储器中。此外,应理解,因为同一数据处理系统中的不同处理器可能同时正探听 相同通信,所以即使一个处理器判断不将数据注入到其高速缓冲存储器中,另一处理器也 可以判断将数据注入到其高速缓冲存储器中。
[0077] 响应于确定数据是用于注入的类型(块324的"Y"分支),高速缓存注入逻辑分 析高速缓冲存储器以确定是否在高速缓冲存储器中锁定最大数量的高速缓存行(块328)。 可以期望在一些实施例中高速缓存注入逻辑管理高速缓冲存储器以及注入和锁定操作,从 而高速缓冲存储器的部分得以保留,以用于正常操作(即不在注入和锁定操作中利用)。因 此,高速缓存注入逻辑分析高速缓冲存储器以确保可以在高速缓冲存储器中注入并且锁定 高速缓存行。
[0078] 响应于确定在高速缓冲存储器中不锁定最大数量的高速缓存行(块328的"N"分 支),可以将来自所传递的数据的各个高速缓存行注入到高速缓冲存储器中(块330),并且 可以锁定所注入的高速缓存行(块332)。在一些实施例中,高速缓冲存储器对于高速缓冲 存储器中所存储的每个高速缓存行可以保存注入锁定指示符,其中,注入锁定指示符可以 指示是否锁定高速缓存行,并且在这些实施例中,锁定所注入的高速缓存行可以包括:响应 于注入高速缓存行,高速缓存注入逻辑设置注入锁定指示符。此外,高速缓存注入逻辑可 以保存关联锁定计数器,其中,锁定计数器指示锁定高速缓冲存储器中所存储的高速缓存 行的数量。故此,响应于注入并且锁定高速缓存行,高速缓存注入逻辑可以增加锁定计数器 (块 334)。
[0079] 响应于确定在高速缓冲存储器中锁定最大数量的高速缓存行(块328的"Y"分 支),在一些实施例中,高速缓存注入逻辑可以指示不能注入并且锁定来自所传递的数据的 各个高速缓存行(块336),并且各个高速缓存行可以写入到存储器,而不在高速缓冲存储 器中注入各个高速缓存行。在其它实施例中,响应于确定在高速缓冲存储器中锁定最大数 量的高速缓存行(块328的"Y"分支),各个高速缓存行可以注入到高速缓冲存储器中,而 不锁定各个高速缓存行(块338)。
[0080] 在一些其它实施例中,响应于确定在高速缓冲存储器中锁定最大数量的高速缓存 行(块328的"Y"分支),高速缓存注入逻辑可以选择用于驱逐和/或解锁的已锁定的高速 缓存行(块340),如以下将详细描述的那样。驱逐所选择的已锁定的高速缓存行(块342), 并且减少与高速缓存注入逻辑关联的锁定计数器(块344)。故此,在块342中驱逐已锁定 的高速缓存行之后,不再锁定最大数量的高速缓存行,可以注入并且锁定各个高速缓存行 (块330、块332),可以增加锁定计数器(块334)。
[0081] 图9是示出与图9的块340对应的可以由与符合本发明实施例的处理单元的高速 缓冲存储器关联的高速缓存注入逻辑执行以选择用于解锁和/或驱逐的已锁定的高速缓 存行,从而当已经在高速缓冲存储器中锁定最大数量的高速缓存行时可以在高速缓冲存储 器中注入并且锁定新高速缓存行的操作序列的流程图360。故此,高速缓存注入逻辑确定锁 定高速缓冲存储器中的最大数量的高速缓存行(块362),高速缓存注入逻辑选择用于解锁 和/或驱逐的已锁定的高速缓存行,从而符合本发明,可以注入并且解锁新高速缓存行。
[0082] 如在此所讨论的那样,在一些实施例中,可以注入并且解锁的所传递的数据中可 以包括源标识符。在一些实施例中,所注入的高速缓存行中可以包括源标识符,或高速缓存 逻辑可以保存包括与高速缓冲存储器中所存储的每个高速缓存行关联的源标识符的引用 数据结构。在一些实施例中,高速缓存注入逻辑可以保存与彼此比较而指示不同源标识符 的优先级的优先级数据。在一些实施例中,高速缓存注入逻辑可以存取优先化数据以确定 高速缓冲存储器中所存储的每个已锁定的高速缓存行的优先级(块364),高速缓存注入逻 辑可以选择已锁定的高速缓存行以基于与每个已锁定的高速缓存行关联的源指示符而解 锁和/或驱逐(块366)。
[0083] 在一些实施例中,高速缓冲存储器和/或注入逻辑可以对于高速缓冲存储器中所 存储的每个高速缓存行保存软件锁定指示符和高速缓存注入锁定指示符。如讨论的那样, 用于高速缓存行的高速缓存注入锁定可以设置为指示当注入高速缓存行时锁定高速缓存 行,高速缓存注入锁定可以调整为指示在处理单元已经处理高速缓存行之后解锁高速缓存 行。软件锁定指示符可以被配置为由处理器的执行单元上执行的软件线程和/或处理设 置,从而该处理可以在高速缓冲存储器中锁定该处理将在近期未来处理的一个或多个高速 缓存行。故此,这两个锁定指示符可以响应于不同的事件而得以设置,并且可以指示不同类 型的锁定。在本发明一些实施例中,高速缓存注入逻辑可以在优先化数据中保存软件锁定 指示符与注入锁定指示符相比的优先级。在这些实施例中,高速缓存注入逻辑可以存取该 锁定优先化数据以确定哪个锁定指示符与另外锁定指示符相比是较低优先级的(块368)。 高速缓存注入逻辑可以基于与每个已锁定的高速缓存行关联的特定锁定指示符的优先级 来选择用于解锁和/或驱逐的已锁定的高速缓存行(块370)。
[0084] 在一些实施例中,高速缓存注入逻辑可以分析已锁定的高速缓存行以确定耦合到 高速缓冲存储器的执行单元最近最少使用的已锁定的高速缓存行。在这些实施例中,高速 缓存注入逻辑可以选择最近最少使用的已锁定的高速缓存行,以用于解锁和/或驱逐(块 372)。具有本公开的益处的本领域技术人员将理解选择已锁定的高速缓存行以驱逐的其它 方式。
[0085] 图10是示出可以被执行以在处理高速缓存行之后解锁高速缓冲存储器中的高速 缓存行的符合本发明实施例的操作序列的流程图380。耦合到高速缓冲存储器的执行单元 可以使用各个高速缓存行来执行指令(即,执行单元可以处理各个高速缓存行)(块382)。 响应于处理各个高速缓存行,高速缓存注入逻辑可以解锁各个高速缓存行(块384),其中, 解锁包括:调整与各个高速缓存行关联的高速缓冲存储器中所保存的注入锁定指示符,以 指示解锁各个高速缓存行。响应于解锁各个高速缓存行,可以减少高速缓存注入逻辑所保 存的锁定计数器(块386)。
[0086] 图11是示出符合本发明一些实施例的高速缓冲存储器400的示例性框图。高速 缓冲存储器400可以实现为例如L2高速缓存,并且包括与高速缓冲存储器关联的高速缓存 注入逻辑402、可以由高速缓存注入逻辑402保存以指示高速缓冲存储器400中所存储的已 锁定的高速缓存行的数量的锁定计数器404。符合本发明一些实施例,高速缓存注入逻辑 402可以保存指示用于一个或多个源标识符的优先级的优先化数据,其中,源标识符与硬件 资源对应。在该示例性实施例中,高速缓冲存储器400包括优先化数据结构406,其中,优先 化数据结构406在优先级表408中存储优先化数据。优先级表408包括用于指示与源指示 符关联的优先级值的一个或多个源指示符的数据项,在该示例中,优先级表408包括用于 源标识符的项" SRC0 "、" SRC1"和" SRC2 ",并且包括" 0 "、" 1"、" 2 "的优先级值。对于该示例 性框图,用于优先级值的较低值指示源标识符具有较高优先级。因此,源标识符"SRC0"具 有指示来自与"SRC0"对应的硬件资源的数据高速缓存行应优先于来自与源标识符"SRC1" 和"SRCX"对应的硬件资源的数据高速缓存行的最高优先级值"0"。此外,源标识符"SRCX" 可以被看作默认配置,其指示用于来自除了 "SRC0"或"SRC1"之外的硬件资源的高速缓存 行的默认优先级值。
[0087] 高速缓冲存储器400可以包括存储高速缓存行411a-j的高速缓存数据结构410。 此外,可以对于每个所存储的高速缓存行41 la-j保存源标识符412,其中,源标识符412可 以与高速缓存行412a-j传递自的硬件资源对应。此外,可以对于高速缓冲存储器中的每个 高速缓存行411a-j保存软件锁定指示符414,其中,软件锁定指示符指示通过在耦合到高 速缓冲存储器400的执行单元上执行的处理是否锁定对应高速缓存行411a-j。故此,执行 单元可以执行用于处理的指令,以设置用于各个所存储的高速缓存行411a-j的各个软件 锁定指示符414。也可以对于每个所存储的高速缓存行411a-j保存注入锁定指示符416, 其中,注入锁定指示符416指示锁定对应高速缓存行411a-j。符合本发明实施例的高速缓 存注入逻辑402可以调整用于各个高速缓存行411a-j的注入锁定指示符416。
[0088] 虽然在示例性实施例中,在高速缓冲存储器400中示出锁定计数器404、优先化数 据结构406、用于每个高速缓存行的源标识符412、软件锁定指示符414以及注入锁定指示 符416,但本发明不限于此。在一些实施例中,组件中的一个或多个可以存储于位于高速缓 存注入逻辑402可存取的一个或多个存储器位置中的数据结构中,而不一定驻留在高速缓 冲存储器中。
[0089] 如示例性框图所示,硬件资源418可以耦合到高速缓冲存储器400和主存储器 420。在该示例中,硬件资源418将包括各个高速缓存行424的数据422传递到主存储器 420。高速缓冲存储器400和高速缓存注入逻辑402被配置为:监控从硬件资源418传递到 存储器420的数据,以确定所传递的数据的一个或多个高速缓存行是否可以注入到高速缓 冲存储器400中。传递到存储器420的数据422可以包括与各个高速缓存行424关联的源 标识符426,指示数据是从硬件资源418传递的。在该示例中,源指示符"SRC0"与硬件资源 418对应。此外,所传递的数据422可以包括高速缓存注入使能数据428,指示所传递的数 据422是否为可以被高速缓存注入的类型。在该示例中,高速缓存注入使能数据428包括 值" 1",其为了示例性目的而指示所传递的数据422适合于高速缓存注入。
[0090] 符合本发明一些实施例,高速缓存注入逻辑402可以探听所传递的数据422,以确 定是否在高速缓冲存储器400中注入并且锁定各个高速缓存行424。在一些实施例中,高 速缓存注入逻辑402可以分析高速缓存注入使能数据428,以确定所传递的数据422是否 包括适合于注入的数据(例如各个高速缓存行424)。在一些实施例中,高速缓存注入逻辑 402可以分析所传递的数据422中所包括的源标识符426,以确定所传递的数据是否包括适 合于高速缓存注入到高速缓冲存储器中的数据。
[0091] 为了示例性目的,优先化数据结构406在优先级表408中包括指示用于一些源标 识符的优先级顺序的优先化数据,并且如优先化数据中所指示的那样,与硬件资源418对 应的源标识符"SRC0"是系统中的最高优先级源指示符。在该示例中,如果高速缓存注入逻 辑被配置为基于所传递的数据中所包括的源标识符426而确定各个高速缓存行424适合 于注入,则各个高速缓存行424可以优先于与具有除了 "SRC0"之外的源标识符的硬件资 源关联的高速缓存行。故此,如果高速缓存注入逻辑基于软件锁定指示符414、注入锁定指 示符416和/或锁定计数器来确定锁定高速缓冲存储器400中的最大数量的高速缓存行 411a-j,从而可以不注入各个高速缓存行,而不解锁和/或驱逐多个已锁定的高速缓存行 411a-d中的第一高速缓存行,则高速缓存注入逻辑可以选择用于解锁和/或驱逐的第一高 速缓存行作为与源指示符"SRC2"关联的已锁定的高速缓存行411d。如优先级表408中的 优先化数据所指示的那样,与优先级表408中并未具体地列出的源标识符(即"SRCX")关 联的默认优先级是最低优先级。故此,在该示例性实施例中,可以响应于确定在高速缓冲存 储器400中注入较高优先级高速缓存行而从高速缓冲存储器解锁和/或驱逐已锁定的高速 缓存行,其中,可以基于与每个高速缓存行关联的源标识符以及高速缓存注入逻辑402所 保存的优先化数据来确定高速缓存行的优先级。
[0092] 在另一示例中,响应于确定在高速缓冲存储器400中锁定最大数量的高速缓存 行,高速缓存注入逻辑可以基于软件锁定指示符414和注入锁定指示符416来选择用于解 锁和/或驱逐的已锁定的高速缓存行。在该示例性实施例中,每个类型的锁定指示符可以 具有与其他锁定指示符有关的与之关联的优先级,高速缓存注入逻辑402可以基于与已锁 定的高速缓存行411a-d关联的锁定指示符的类型来选择用于解锁和/或驱逐的多个已锁 定的高速缓存行411a-d中的第一高速缓存行。例如,软件锁定指示符414可以是比注入锁 定指示符416更低优先级的,故此,高速缓存注入逻辑402可以选择仅与软件锁定指示符 416关联的高速缓存行(例如高速缓存行41 Id)。
[0093] 在一些实施例中,与高速缓存行关联的优先级可以基于与高速缓存行关联的锁定 指示符的类型以及与高速缓存行关联的源指示符。在一些实施例中,高速缓存注入逻辑可 以基于用于存储的高速缓冲存储器中的可用高速缓存行的数量来确定是解锁已锁定的高 速缓存行还是解锁并且驱逐已锁定的高速缓存行。
[0094] 应理解,对于设置关联的高速缓冲存储器,可以期望在一些实施例中在逐个集合 的基础上而不是跨越整个高速缓冲存储器来限制锁定的高速缓存行的数量。例如,可以期 望在四路集合关联高速缓存(four way set associative cache)中允许锁定任何给定集合 中的最大两个或三个高速缓存行,从而保留每个集合的至少一部分,以用于正常(已锁定 的非高速缓存注入)高速缓存行。此外,应理解,上述用于驱逐已锁定的高速缓存行的驱逐 算法典型地合并到或另外补充于将已解锁的高速缓存行的驱逐优先于已锁定的高速缓存 行的标准高速缓存驱逐逻辑算法,并且主要用于当没有已解锁的高速缓存行是其它合适的 用于驱逐的候选时选择用于驱逐的高速缓存行。
[0095] 因此,本发明实施例通过以与高速缓冲存储器关联的注入逻辑来管理高速缓存注 入和锁定而实现包括可配置注入和锁定的用于高速缓冲存储器单元的高速缓存注入。此 夕卜,高速缓存注入逻辑所保存的优先化数据可以被配置为:减少与从存储器检索数据关联 的对用于处理的高速缓冲存储器的存储器带宽需求。
[〇〇96] 虽然已经通过各个实施例和示例的描述示出了本发明,并且虽然已经相当详细地 描述了这些实施例,但 申请人:并非意图将所附权利要求的范围限定或以任何方式限制为该 细节。例如,在不脱离本发明的范围的情况下,可以重排、串行处理和/或并发地处理任何 流程图的块。此外,任何流程图可以包括比符合本发明实施例所示的块更多或更少的块。 [〇〇97] 附加优点和修改将容易对于本领域技术人员显现。因此,本发明因此在其更宽泛 的方面不限于表示装置和方法的具体细节以及所示出和描述的说明性示例。具体地说,以 上流程图的任何块可以根据本发明的原理而删除、增补、使得彼此同时、组合或另外改动。 相应地,在不脱离 申请人:的普通发明性构思的精神和范围的情况下,可以脱离这些细节。
【权利要求】
1. 一种用于在包括经由片上网络而彼此耦合的多个节点的片上网络(NOC)处理单元 中存储数据的方法,每个节点包括集成处理器块,每个集成处理器块包括执行单元以及耦 合到所述执行单元的高速缓冲存储器,所述高速缓冲存储器被配置为存储多个高速缓存 行,其中,所述高速缓冲存储器被配置为对于所述高速缓冲存储器中所存储的每个高速缓 存行保存与该高速缓存行关联的软件锁定标志和高速缓存注入锁定标志,所述方法包括: 响应于检测到各个高速缓存行到耦合到所述片上网络的第一存储器的传递,通过存取 与所述高速缓冲存储器关联的高速缓存锁定计数器来确定是否高速缓存注入锁定所述高 速缓冲存储器中最大数量的高速缓存行; 响应于确定未高速缓存注入锁定所述最大数量的高速缓存行,在所述高速缓冲存储器 中注入各个高速缓存行,并且锁定所述各个高速缓存行,其中,锁定所述各个高速缓存行包 括:设置用于所述各个高速缓存行的高速缓存注入锁定标志,并且增加所述高速缓存锁定 计数器。
2. 如权利要求1所述的方法,还包括: 响应于确定锁定所述最大数量的高速缓存行,将所述各个高速缓存行写入到所述第一 存储器,而不将所述各个高速缓存行注入到所述高速缓冲存储器中。
3. 如权利要求1所述的方法,还包括: 响应于确定锁定所述最大数量的高速缓存行,将所述各个高速缓存行注入到所述高速 缓冲存储器中,而不锁定所述各个高速缓存行。
4. 如权利要求1所述的方法,还包括: 响应于确定锁定所述最大数量的高速缓存行,驱逐所述高速缓冲存储器中所存储的最 近最少使用的高速缓存行。
5. -种用于在包括执行单元和耦合到所述执行单元的高速缓冲存储器的处理单元中 存储数据的方法,所述高速缓冲存储器被配置为存储多个高速缓存行,所述方法包括: 响应于检测到各个高速缓存行到耦合到所述处理单元的第一存储器的传递,确定是否 在所述高速缓冲存储器中注入并且锁定所述各个高速缓存行;以及 响应于确定在所述高速缓冲存储器中注入并且锁定所述各个高速缓存行,使用耦合到 所述高速缓冲存储器的高速缓存注入逻辑来执行高速缓存注入和锁定操作,以在所述高速 缓冲存储器中注入所述各个高速缓存行并且锁定所述各个高速缓存行。
6. 如权利要求5所述的方法,其中,确定是否注入并且锁定所述各个高速缓存行包括: 确定是否锁定所述高速缓冲存储器中最大数量的高速缓存行。
7. 如权利要求6所述的方法,还包括:响应于确定锁定所述高速缓冲存储器中所述最 大数量的高速缓存行,解锁并且驱逐所述高速缓冲存储器中所存储的第一高速缓存行。
8. 如权利要求7所述的方法,其中,所述高速缓冲存储器中所存储的每个高速缓存行 包括:源标识符,其中,解锁并且驱逐所述第一高速缓存行至少部分地基于所述第一高速缓 存行的所述源标识符。
9. 如权利要求8所述的方法,其中,所述高速缓存注入逻辑保存指示彼此有关的一个 或多个源标识符的注入和锁定优先级的优先化数据,其中,解锁并且驱逐所述第一高速缓 存行至少部分地基于所述优先化数据。
10. 如权利要求9所述的方法,其中,所述优先化数据指示用于所述优先化数据中未包 括的源标识符的默认注入和锁定优先级,其中,解锁并且驱逐所述第一高速缓存行至少部 分地基于所述默认注入和锁定优先级。
11. 如权利要求7所述的方法,其中,所述高速缓冲存储器被配置为对于所述高速缓冲 存储器中所存储的每个高速缓存行,保存与该高速缓存行关联的软件锁定标志和高速缓存 注入锁定标志,其中,所述软件锁定标志被配置为由在所述处理单元上执行的软件线程设 置,其中,锁定所述各个高速缓存行包括:设置用于所述各个高速缓存行的所述高速缓存注 入锁定标志,其中,解锁并且驱逐所述高速缓冲存储器中的所述第一高速缓存行至少部分 地基于所述第一高速缓存行的所述高速缓存注入锁定标志和所述软件锁定标志。
12. 如权利要求6所述的方法,还包括:响应于确定锁定所述最大数量的高速缓存行, 确定不在所述高速缓冲存储器中注入并且锁定所述各个高速缓存行。
13. 如权利要求12所述的方法,还包括:响应于确定不在所述高速缓冲存储器中注入 并且锁定所述各个高速缓存行,在所述高速缓冲存储器中注入所述各个高速缓存行,而不 锁定所述各个高速缓存行。
14. 如权利要求5所述的方法,其中,所述传递包括指示对于所述各个高速缓存行是否 应执行高速缓存注入的注入指示符,其中,确定是否在所述高速缓冲存储器中注入并且锁 定数据的所述各个高速缓存行至少部分地基于所述注入指示符。
15. 如权利要求5所述的方法,其中,所述传递包括指示耦合到生成数据的所述处理单 元的源硬件资源的源标识符,其中,确定是否在所述高速缓冲存储器中注入并且锁定数据 的所述各个高速缓存行至少部分地基于所述源标识符。
16. 如权利要求5所述的方法,其中,所述处理单元是多个处理单元当中的第一处理单 元,其中,所述第一存储器包括通过共享总线或网络耦合到所述多个处理单元的主存储器, 其中,所述高速缓冲存储器包括专用于所述第一处理单元的L2高速缓冲存储器,其中,所 述方法还包括: 监控所述共享总线或网络以检测所述各个高速缓存行从耦合到所述共享总线或网络 的10设备传递到所述主存储器; 与在所述高速缓冲存储器中注入所述各个高速缓存行并且锁定所述各个高速缓存行 并行地在所述主存储器中存储所述高速缓存行。
17. -种电路布置,包括: 处理单元; 高速缓冲存储器,耦合到所述处理单元,并且被配置为存储多个高速缓存行;以及 高速缓存注入逻辑,耦合到所述高速缓冲存储器,所述高速缓存注入逻辑被配置为响 应于检测到各个高速缓存行到耦合到所述处理单元的第一存储器的传递,确定是否在所述 高速缓冲存储器中注入并且锁定所述各个高速缓存行,其中,所述高速缓存注入逻辑还被 配置为:响应于确定在所述高速缓冲存储器中注入并且锁定所述各个高速缓存行,执行高 速缓存注入和锁定操作以在所述高速缓冲存储器中注入所述各个高速缓存行并且锁定所 述各个高速缓存行。
18. 如权利要求17所述的电路布置,其中,所述高速缓存注入逻辑被配置为:通过确定 是否锁定所述高速缓冲存储器中最大数量的高速缓存行来确定是否注入并且锁定所述各 个高速缓存行。
19. 如权利要求18所述的电路布置,其中,所述高速缓存注入逻辑还被配置为:响应于 确定锁定所述高速缓冲存储器中所述最大数量的高速缓存行,解锁并且驱逐所述高速缓冲 存储器中所存储的多个已锁定的高速缓存行中的第一高速缓存行。
20. 如权利要求19所述的电路布置,其中,所述高速缓冲存储器被配置为:保存用于所 述高速缓冲存储器中所存储的每个高速缓存行的源标识符,其中,所述高速缓存注入逻辑 被配置为:至少部分地基于与所述第一高速缓存行关联的所述源标识符而解锁并且驱逐所 述第一高速缓存行。
21. 如权利要求19所述的电路布置,其中,所述高速缓冲存储器被配置为:对于所述高 速缓冲存储器中所存储的每个高速缓存行,保存与该高速缓存行关联的软件锁定指示符和 高速缓存注入锁定指示符,其中,所述高速缓存注入逻辑被配置为:通过调整用于所述各个 高速缓存行的所述高速缓存注入锁定指示符来锁定所述各个高速缓存行,其中,所述高速 缓存注入逻辑被配置为:至少部分地基于所述软件锁定指示符和所述高速缓存注入锁定指 示符来解锁并且驱逐所述第一高速缓存行。
22. 如权利要求17所述的电路布置,其中,所述高速缓存注入逻辑被配置为:响应于确 定不在所述高速缓冲存储器中注入并且锁定所述各个高速缓存行,在所述高速缓冲存储器 中注入所述各个高速缓存行,而不锁定所述各个高速缓存行。
23. 如权利要求17所述的电路布置,还包括: 多个处理单元,其中,所述处理单元是所述多个处理单元当中的第一处理单元,其中, 所述高速缓冲存储器包括专用于所述第一处理单元的L2高速缓冲存储器; 共享总线,将所述多个处理单元耦合到所述第一存储器,其中,所述第一存储器包括: 主存储器,可由所述多个处理单元存取; I/O设备,耦合到所述共享总线,并且被配置为:将所述各个高速缓存行传递到所述主 存储器; 其中,所述高速缓存注入逻辑被配置为:通过监控所述共享总线来检测所述各个高速 缓存行到所述主存储器的传递,并且与在所述主存储器中存储所述各个高速缓存行并行地 在所述高速缓冲存储器中注入所述各个高速缓存行并且锁定所述各个高速缓存行。
24. -种集成电路设备,包括如权利要求17所述的电路布置。
25. -种程序产品,包括计算机可读介质以及驻留在所述计算机可读介质上并且定义 如权利要求17所述的电路布置的逻辑定义程序代码。
【文档编号】G06F12/08GK104067242SQ201280067905
【公开日】2014年9月24日 申请日期:2012年12月10日 优先权日:2012年1月23日
【发明者】P.沙特, R.希勒, M.库弗施密特, J.库塞尔 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1