使用关键度信息来路由高速缓存一致性通信的制作方法

文档序号:6578446阅读:143来源:国知局
专利名称:使用关键度信息来路由高速缓存一致性通信的制作方法
使用关键度信息来路由高速缓存一致性通信背景技术在具有多个处理器和多个高速缓存的多处理器系统中,每个高速缓存 可以存储有在存储器中所存储的一条数据的一个副本。当不止一个高速缓 存包含了同一条数据的副本时,会出现问题。已经开发了各种技术来确保 多个高速缓存间的数据一致性。例如,当一个高速缓存中的数据被修改时, 该数据的其它副本会被标记为无效,以使得它们不再被使用。为了帮助保持高速缓存一致性,许多系统包括有目录,来帮助确定在 这样的多个高速缓存的各高速缓存行中的数据的存在和状态。高速缓存行 的状态可以表明该行是否具有在主存储器外唯一的一个有效副本,是否 具有由多个高速缓存所共享的多个有效副本,或者,是否不具有在主存储 器外的副本(即,己经在所有高速缓存中使其无效)。高速缓存一致性的效率可以提高通用处理器的整体性能。对于众核处理器(many-core processor)和大规模高速缓存 一 致的非均匀存储器架构 (cc-NUMA)系统来说尤其如此。不同的系统可以具有许多不同的高速缓存 一致性消息类型,由于因目录迂回所导致的跳失衡根(hop imbalance root), 这些消息类型中的每一个会具有不同的定时关键度属性。然而,现有的系 统并不能针对这些不同的消息类型来进行不同地处理。


图1是根据本发明的一个实施例的系统的一部分的方框图。 图2是根据本发明的一个实施例的互连路由器的方框图。 图3是根据本发明的一个实施例的方法的流程图。 图4是根据本发明的一个实施例的系统的方框图。
具体实施方式
在各个实施例中,互连路由器或其它系统部件可以被配置为是知晓关键度的。也就是说,以可能会减慢非关键消息为代价,使关键的一致性消 息的路由器延迟变得更短。可以在运行时基于高速缓存一致性消息类型由 硬件来提取关键度。随后,利用该关键度来驱动对在其上传送消息的互连 (例如,点对点(PTP)的虚拟通道或其它互连方案)进行管理。实施例既可适 用于片上网络,也可适用于传统的独立路由器。实施例可以在微架构硬件 中实现,并且可以对软件完全透明。使用这样的实施例,可以显著增强高 速缓存一致性处理。现在参考图1,其示出了系统的一部分的方框图,该系统包含实现了 给定高速缓存一致性协议的目录。该高速缓存一致性协议可以是按照修改、独占、共享、无效(MESI)或修改、独占、共享、无效、转发(MESIF)协议 或另一个这样的协议,但本发明的范围并不限制于此。在图l示出的实施 例中,仅仅示出了多个核心中的两个核心20a和20b(通称为核心20),其中 的每个核心耦合到对应的私有高速缓存30a和30b (通称为私有高速缓存 30)。在一些实施例中,私有高速缓存30可以是最低级别的高速缓存,例如,与其相应核心紧密关联的零级高速缓存。高速缓存30又可以耦合到共享存储器40。在各个实施例中,共享存 储器40可以是包含式共享高速缓冲存储器或系统主存储器。以此方式,共 享存储器40包括了在高速缓存30中存在的所有数据,以及可能的额外数 据。换句话说,在高速缓存30中存在的数据可以包含在存储器40的数据 中,但反之并不成立。另外,共享存储器40可以包括目录。这样的目录可 以是单独的数组(array)或存储器40的其它部分,其包括多个条目(以及相 关的控制逻辑),以表明在较低级别高速缓存中相应高速缓存行的位置、以 及这样的高速缓存行的状态。因此,存储器40的目录可以用于实现给定的 高速缓存一致性协议。在一种实现中,系统10可以是片上网络(NoC)。这样的NoC可以是单 芯片集成电路,其连接各种处理代理(agent)(例如核心、专用处理器、加速 器等)、以及本地存储器和其它这样的结构。可以用给定的互连结构,例如 图1中示出的互连50,来耦合所有这些各种的代理。在不同的实现中,可 以用PTP链路的方式对特定的代理进行互连,所述PTP链路通过互连的中 间路由器将各设备耦合到一起。因此,尽管在图1中为了容易说明而并未示出,但是可以理解,互连50可以代表互连链路以及互连路由器。为了保持系统10中的各个存储器的高速缓存一致性,可以在不同的代 理间发送各种高速缓存一致性消息,来请求在给定存储器中存在的数据、 以及获得对这样的数据的状态的了解。不同高速缓存一致性消息的延迟会 对应用产生非常不同的性能影响。图1示出了在MESI协议中的情形,其 中高速缓存30a对在高速缓存30b中的为脏状态的块发出读请求(消息1)。 根据给定的一致性协议,该读请求可能导致传输额外的消息,包括第二消 息(消息2),其直接向高速缓存30a发送在共享存储器40中存在的所请求 的数据。然而,注意这个数据是推测性的,这是由于并不知道是否(例如, 在高速缓存30b中)存在该数据的已修改副本。因此,仍然响应于来自高速 缓存30a的读请求,所述目录向高速缓存30b发送探测消息(g卩,消息3)。 响应于这个消息,高速缓存30b可以使得向高速缓存30a直接发送(消息4) 该数据(其可能为脏状态)。最后,发送写回(WB)消息(g卩,消息5),来把来 自高速缓存30b的该脏数据提供回共享存储器40。消息3和4是用于完成该读请求的连续步骤,而且它们构成了关键路 径。换句话说,消息3和4具有更高的优先级并应该具有更短的延迟,这 是因为消息1的存储器请求的等待时间取决于这些消息。因此,这两个消 息可以被映射到最高的关键度级别。相反,在这个例子中消息2是无用的 (假定所请求的数据在高速缓存30b中为修改状态),但是根据传统的协议, 其通常会在消息4的有效数据之前到达存储器30a。这种不希望的情形是 由目录迂回所导致的跳失衡根的结果。消息5最不关键,因此可以被映射 到最低的关键度级别。消息1也在关键路径上,但是它比消息3和4占用 更少的系统资源。消息2通常不在关键路径上,尽管它的数据在高速缓存 30b不具有脏副本时是有用的。消息1和2可以被划分到中等关键度级别。 因此,在图1中使用实线和各种虚线来标识不同的关键度级别。存在着许多MESI协议的变体,但是对于它们中的每一个,都可以有 多个关键度级别,每一个级别对应于一组给定的消息类型。在一些实现中, 可以确定出大约2到8个关键度级别,然而本发明的范围并不限制于此。 另外,这些关键度级别中的每一个可以与一个或多个一致性协议消息类型 相匹配。现在参考表1,以下示出了示例的协议消息及其所对应的关键度级别。最关键中等关键非关键RsplRspFwdWbMtoIRspSRspFwdSWbMtoERspCnfltRspFwd懸WbMtoSSnpCodeRdCurRspIWbSnpDataRdCodeRspSWbSnpInvOwnRdDataS叩InvItoERdlnvOwnAckCnfltInvItoE表1示出了各种高速缓存一致性消息,它们中的每一个被映射到三个关键度级别中的一个。表l中示出的各种消息的名称(RspI、 RspFwd等)是 助记符,在不同的实现中可以具有不同的标记。通常这些名称包括消息类 型縮写(例如,响应(Rsp)、探听(Snp)、确认(Ack)、读(Rd)、写回(WB)、转 发(Fwd)等)和高速缓存状态縮写(例如,MESI状态中的一个)。通常,表l中示出的最高关键度级别的消息指向探测消息和对其的响 应。中等关键度级别通常与请求和某些响应相关联,而最低关键度级别通 常与写回消息相关联。可以理解,上面的表是一个示例性的映射,其它消 息和不同的协议可以具有不同的映射。如将在下文中进一步描述的,在各种实现中,关键度或其它此类控制 逻辑可以用于将协议高速缓存一致性消息类型映射到给定的关键度级别。 在各种实施例中,互连路由器或其它交换逻辑可以是知晓关键度的。以此 方式,以可能减慢非关键消息为代价,可以使关键的一致性消息的路由器 延迟变得更短。可以在运行时基于消息类型由硬件来提取关键度,并随后 可以用于驱动VC管理。现在参考图2,其示出了根据本发明的一个实施例的互连路由器的方 框图。如图2所示,互连路由器100可以是互连系统的路由器结构。如下 面会进一步讨论的,在给定系统中可以存在许多这样的互连路由器,用来 从与输入相连接的路由器接收事务、并向与输出相连接的路由器转发这样 的事务。如图2所示,示例性的路由器100包括多个输入虚拟通道(VC)110a-110n(通称为VC 110)。每个VC 110被耦合以用来接收入局消息。这样的消息可以采用各种形式,包括请求消息、数据消息、确认消息等。这 些入局消息可以从被以类似方式配置的与输入相连接的路由器处接收。然 而,在其它实现中,对给定路由器的至少一些输入可以是直接从例如处理 器核心或其它此类代理的缓存代理处接收的。入局消息被提供给输入复用器112,其中基于与这些消息相关联的关 键度信息来控制该输入复用器。也就是说,在各个实施例中,所述消息可 以是链路层消息,其中, 一个事务被分割为多个例如分组的流控制单元, 例如微片(flit),其中,每个微片对应于最小链路级消息且包括报头。该报 头可包括关键度信息。例如,事务层可以向链路层提供关键度信息,链路 层又向它所生成的每个链路层分组(例如,微片)添加该关键度信息。基于 与给定消息(例如,高速缓存一致性消息)相关联的关键度级别,相关联的 微片可以被提供给多个队列115a_115n (通称为队列115)中的一个,上述队 列中的每一个可以与给定的关键度级别相关联。在一个实施例中,队列115 可以是先进先出(FIFO)缓冲器,然而本发明的范围并不限制于此。在一个 实施例中,每个队列115可以与一个单独的关键度级别相关联,然而在其 它实施例中, 一个队列可以为多个关键度级别的消息提供存储。为了从VC 110输出消息,VC分配器/控制逻辑120可以耦合到输出复用器118,来控 制消息输出。在各种实现中,可以根据关键度级别来控制要从VC 110发 送的消息。如图2所示,来自各个VC110的输出被提供给交换机130,其 同样由VC分配器120控制,以用来向与输出相连接的路由器或其它此类 代理输出消息。注意,在针对一个消息的发起路由器或源路由器(即,连接到生成高速 缓存一致性消息的缓存代理的路由器)的情形中,VC分配器/控制逻辑120 可以将消息类型映射到给定的关键度级别,并对发送自交换机130的该消 息的每个微片应用该关键度级别。以此方式,接收到该消息的与输出相连 接的路由器也可接收相关联的关键度级别,从而来管理消息从虚拟通道中 通过。尽管在图2的实施例中示出了这个特定的实现,但本发明的范围并 不限制于此。在不同的实施例中,由具体的一致性协议和性能目标来确定从高速缓存一致性消息类型到关键度级别的映射。在运行期间,源路由器(其连接到 缓存代理)提取消息类型,将它转换为关键度级别中的一个,并将该信息添 加到微片报头中。在每个中间路由器中,由于微片报头中的关键度位被用作vc标识符,因此vc分配被简化。在微片被插入到合适的队列115后,可以实施不同的方式来确保关键 消息的快速传送。在一个实现中,可以区分FIFO的优先次序,以使得较 高关键度的FIFO在与较低关键度的FIFO竞争交换机130时总能获胜。在 其它实施例中,每个队列115可以具有不同的相对优先级。这可以通过使 用基于优先级的硬件仲裁器(例如,在VC分配器120中的)来实现,该仲 裁器为更高关键度的消息提供了准许并启用了 "更快路径"。然而,其它实 现也是可能的。注意,实施例与现有的VC设计是不同的,因为每个关键 度级别可以具有与它相关联的多个VC。由于消息类型被暴露给链路层,所以可以为每个微片使用1og2C个位, 其中C是关键度级别的总数。实践中,C可以是像4这样的小数目。另外, 与传统的同类VC设计相比,VC分配仲裁器的大小可以减少为原来的1/V, 其中V是每个端口的虚拟通道的数目。另外,由于实施例完全是微架构的, 因此不需要来自用户(例如,程序员)的任何软件提示,因此也不会对高速 缓存一致性协议的正确性产生影响。也就是说,提供了基于硬件的优先级 方案,而不是由软件程序员来对消息的优先级信息进行编码。现在参考图3,示出了根据本发明的实施例的方法的流程图。如图3 所示,方法200可以用于对高速缓存一致性消息类型应用关键度级别,并使得能够在将该消息转发到其目标的操作中使用该关键度级别。如图3所 示,可以在互连结构中实现方法200,例如,在与源路由器相关联的关键 度或其它控制逻辑中,以及在该源路由器和被耦合到消息目标的目标路由 器之间所耦合的各个中间路由器中。方法200可以开始于从缓存代理接收高速缓存一致性消息(块210)。例 如,源路由器可以从处理器核心或其它代理接收高速缓存一致性消息。随 后,该消息类型可以被映射到一个关键度级别(块220)。例如,源路由器的 关键度逻辑或其它控制逻辑可以包括一个表或与之相关联,该表例如可以 被存储在非易失存储器中,其中包括了在高速缓存一致性协议的各种消息类型和不同关键度级别间的映射。在一个实施例中,每个消息类型可以具 有它自己的关键度级别,然而在其它实施例中,多个消息可以与一个给定 的关键度级别相关联。然后,路由器可以向消息添加关键度级别(块230)。例如,在其中链路 层向物理层提供微片的通信协议中,每个这样的微片可以具有插入到其报 头中的关键度级别。至少部分地基于这个信息,消息可以经互连结构被路 由到它的目标(块240)。以此方式,可以更高效地处理更高优先级的消息, 改善了存储器等待时间和系统性能。尽管图3的实施例示出了这个具体实 现,但本发明的范围并不限制于此。现在参考图4,其示出了根据本发明的一个实施例的系统的方框图。 如图4所示,系统300可以是片上网络或多芯片设备。然而,本发明的范 围并不限制于此。在图4的实施例中,系统300包括多个缓存代理310x, 其中的每一个通过一个或多个路由器330x耦合到互连结构320。缓存代理 310x可以是处理器核心、高速缓冲存储器或其它处理代理。图4还示出了, 网络接口 340和网桥350可以耦合到各自的路由器330。在一个实施例中, 例如按照外围组件互连(PCI) Express (PCIe)协议的输入/输出(I/0)控制中 心或交换机这样的设备可以耦合到网桥350。图4还示出了,存储器控制 器360可以耦合到另一路由器330,以处理对片外存储器(例如,动态随机 存取存储器(DRAM)或其它系统存储设备)的存储器操作。作为通信路由的 一个例子,如果一个微片从右上的代理310x传输到存储器控制器360,则 该微片会穿过9个路由器,并且,7个中间路由器中的每一个可以根据本 发明的实施例使用关键度信息来传递消息。尽管图4的实施例示出了这个 具体的实现,但本发明的范围并不限制于此。通过使用消息关键度信息来管理虚拟通道,实施例可以帮助存储器系 统获得比现有路由器更高的性能。另外,可以用微架构来实现实施例,使 得在无软件开销的情况下就能得到性能提升。实施例可以用代码实现并可以存储在存储介质上,该存储介质具有存 储在其上的指令,其可用于对一个系统进行编程来执行所述指令。所述存 储介质可以包括但不限于任何类型的盘,包括软盘、光盘、光盘只读存 储器(CD-ROM)、可重写光盘(CD-RW)、以及磁光盘,半导体器件,例如只读存储器(ROM)、诸如动态随机存取存储器(DRAM)和静态随机存取存 储器(SRAM)这样的随机存取存储器(RAM)、可擦可编程只读存储器 (EPROM)、闪速存储器、电可擦可编程只读存储器(EEPROM),磁卡或光 卡,或适于存储电子指令的任意其它类型的介质。尽管以有限数目的实施例来描述了本发明,但本领域的技术人员可以 领会到许多基于此的修改和变型。所附的权利要求旨在覆盖落入本发明的 实质精神和范围内的所有这样的修改和变型。
权利要求
1、一种装置,包括多个虚拟通道,每个虚拟通道包括输入复用器,用于接收高速缓存一致性消息,所述高速缓存一致性消息中的每一个均具有与其相关联的关键度标识符;耦合到所述输入复用器的多个队列,用于存储所述高速缓存一致性消息,其中,所述队列中的每一个均与至少一个关键度标识符相关联;以及耦合到所述多个队列的输出复用器,用于至少部分地基于相应的关键度标识符来选择所述队列中的一个的输出;以及耦合到所述多个虚拟通道的交换机,用于向互连结构输出所述高速缓存一致性消息。
2、 根据权利要求1所述的装置,还包括关键度逻辑,用于将高速缓 存一致性消息映射到关键度标识符,以及向所述高速缓存一致性消息的每 个分组的报头添加所述关键度标识符。
3、 根据权利要求2所述的装置,其中,所述关键度标识符用于指示 一个高速缓存一致性消息相对于一组高速缓存一致性消息来说的相对关键 度。
4、 根据权利要求3所述的装置,其中,所述关键度逻辑与表相关联, 以将所述一组高速缓存一致性消息中的每一个映射到关键度标识符,其中, 所述关键度逻辑在没有来自用户的软件提示的情况下执行所述映射。
5、 根据权利要求2所述的装置,还包括虚拟通道分配器,用于控制 所述输出复用器,其中,所述虚拟通道分配器包括仲裁器,该仲裁器用于 至少部分地基于所述多个队列的相对优先级来控制所述输出复用器。
6、 根据权利要求5所述的装置,其中,所述虚拟通道分配器先于具有 第二关键度标识符的第二队列的输出而选择具有第一关键度标识符的第一 队列的输出,其中,所述第一关键度标识符具有比所述第二关键度标识符 更高的级别。
7、 根据权利要求6所述的装置,其中,所述第一队列的输出是用于探 测消息,所述第二队列的输出是用于在收到对所述探测消息的响应之前所 发送的来自目录的数据响应。
8、 根据权利要求l所述的装置,其中,所述装置包括片上网络(NoC) 和多个路由器,所述片上网络包括由所述互连结构耦合的多个缓存代理, 所述多个路由器中的每一个包括所述多个虚拟通道和所述交换机。
9、 根据权利要求8所述的装置,其中,第一路由器向来自第一缓存代 理的入局高速缓存一致性消息添加所述关键度标识符,以及,第二路由器 根据至少部分地基于所述关键度标识符的优先级来对所述入局高速缓存一 致性消息进行路由。
10、 一种方法,包括在互连路由器中从缓存代理接收高速缓存一致性消息; 根据与所述互连路由器相关联的表,将所述高速缓存一致性消息的消息类型映射到关键度级别;以及向发送自所述互连路由器的所述高速缓存一致性消息的每个流控制单元添加所述关键度级别。
11、 根据权利要求10所述的方法,还包括将所述高速缓存一致性消 息从所述互连路由器经互连结构路由到被耦合到第二互连路由器的目标。
12、 根据权利要求11所述的方法,还包括在中间互连路由器的虚拟通道的输入复用器处接收所述高速缓存一致性消息,以及至少部分地基于 所述关键度级别在多个队列中的一个中存储所述高速缓存一致性消息。
13、 根据权利要求12所述的方法,还包括至少部分地基于所述关键 度级别对来自所述虚拟通道的输出复用器的所述高速缓存一致性消息进行 路由。
14、 根据权利要求13所述的方法,还包括先于第二高速缓存一致性 消息而对来自所述中间互连路由器的所述高速缓存一致性消息进行路由, 其中,所述第二高速缓存一致性消息具有比所述高速缓存一致性消息的关 键度级别更低的关键度级别。
全文摘要
在一个实施例中,本发明包括一种方法,用于在互连路由器中从缓存代理接收高速缓存一致性消息,根据预定的映射将所述消息映射到关键度级别,以及向所述消息的每个流控制单元添加该关键度级别,其中可以至少部分地基于该关键度级别从互连路由器发送所述消息。还描述及声明了其它实施例。
文档编号G06F12/08GK101593159SQ20091014260
公开日2009年12月2日 申请日期2009年5月31日 优先权日2008年5月30日
发明者L·程, S·R·万高尔, Z·方 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1