用于I/O数据包压缩的寄存器文件的制作方法

文档序号:14254444阅读:242来源:国知局
用于I/O数据包压缩的寄存器文件的制作方法



背景技术:

本发明是在政府支持下根据doe授予的主合同号de-ac52-07na27344,分包合同号b608045进行的。政府可在本发明中拥有某些权利。

本文描述的实施方案涉及数据处理装置,并且更具体地涉及减少节点间带宽消耗。

相关技术的描述

计算机系统通常利用一个或多个互连来实现系统部件之间(例如处理器和存储器之间)的通信。互连也可用于支持与输入/输出(i/o)装置、其他处理器或加速器的连接。当前正在使用各种类型的互连协议来支持不同类型的互连上的数据传输,并且新的互连协议正在不断地被开发并被引入到市场中。例如,新的互连协议正在被扩展和开发用于多芯片配置、百万万亿节点架构、存储器中处理(pim)架构、高速存储器装置。然而,当以带宽消耗来衡量时,节点间通信可能是昂贵的。带宽消耗增加又可能导致功耗增加和通信等待时间增加。

鉴于以上所述,期望用于减少节点间带宽消耗的经改进的系统和方法。



技术实现要素:

预期用于减少节点间带宽消耗的系统、设备和方法。

在各种实施方案中,计算机系统包括将事务发送到一个或多个目标节点的一个或多个请求者节点。请求者节点可以发送被配置为读取或写入目标节点中的存储位置的事务。在各种实施方案中,请求者节点向目标节点发送请求以分配供请求者节点在随后从请求者节点向目标节点传送一个或多个事务期间使用的寄存器。该请求通常可以包括要被写入数据块的目标节点中的存储器位置的地址(例如,在写入事务的情况下)。所请求的位置可以例如是动态分配的存储器位置或专用寄存器。

在接收到请求之后,目标节点确定在事务期间寄存器是否可供请求者使用。如果是,则目标节点将接收到的地址存储在寄存器中,并用寄存器的识别(id)向请求者节点发送响应。在各种实施方案中,请求者节点随后以数据包的形式向目标节点发送一个或多个事务。在各种实施方案中,数据包中的每一者包括寄存器id以代替目标节点内被瞄准的存储器位置的地址。在数据包中使用的寄存器id通常可以使用比地址本身已经使用的更少的位。在一些实施方案中,请求者节点具有目标节点中的一组寄存器的所有权。在这样的情况下,可以保证请求者节点使用目标节点中的至少给定数量的寄存器。目标节点内的这些请求者拥有的寄存器可以是寄存器文件中的专用寄存器,或分配的存储器位置等等。替代地,请求者节点可能不具有目标节点内的任何特定寄存器的所有权。无论请求者节点是否具有目标节点中的一个或多个寄存器的所有权,如果目标节点确定没有可用的寄存器,则目标节点向请求者节点发送指示寄存器未被分配供请求者使用的响应。在此之后,请求者节点可以发送另一个请求(即,再次尝试)。替代地,请求者节点可以在数据包内发送包括目标节点中的存储器位置的地址的一个或多个事务。

在接收到包括寄存器id的数据包之后,目标节点使用寄存器id来识别对应于事务的地址。在寄存器是专用寄存器的实施方案中,寄存器id可以直接识别一组寄存器(例如寄存器文件)内的专用寄存器。在寄存器是动态分配的存储器位置的实施方案中,寄存器id可以被映射到目标节点内的存储器位置。

在各种实施方案中,目标节点确定寄存器如何被分配和如何被请求者节点使用。目标节点基于各种资源管理方案来选择寄存器。在其他实施方案中,插在请求者节点和目标节点之间的交换机包括寄存器,并且还确定如何分配和使用寄存器。在又其他实施方案中,如上所述,请求者节点具有一组寄存器的所有权。这些请求者拥有的寄存器可以位于目标节点中或交换机中。在这种情况下,请求者节点可以确定如何分配和使用目标节点或交换机内的请求者拥有的寄存器。

另外,在各种实施方案中,目标节点对存储在寄存器中的存储器地址执行算术或逻辑运算。例如,所接收的数据包可以包括操作码,所述操作码指示要对所存储的存储器地址执行的操作。例如,操作码可以指示执行预增量操作、后增量操作、利用所包括的偏移值进行加法或者减法、利用所包括的操作数数据值来替换或代换地址子范围等等。在各种实施方案中,操作可以在使用地址来执行存储器访问之前或之后改变存储在寄存器中的地址的状态。

参考以下描述和附图将进一步理解这些和其他实施方案。本文描述的实施方案可以由任何半导体、存储器、网络、电信或其他公司在处理器、外围装置等之间的互连中使用。这些实施方案可以用于任何芯片上、芯片外通信介质。

附图说明

通过结合附图参考以下描述,可以更好地理解方法和机构的上述和其他优点,在附图中:

图1是计算系统的一个实施方案的概括性框图。

图2是用于使用输入/输出(i/o)寄存器文件的协议的一个实施方案的概括性框图。

图3是要包括在请求者节点和目标节点之间的数据包中的命令的一个实施方案的概括性框图。

图4是要包括在请求者节点和目标节点之间的数据包中的命令的另一个实施方案的概括性框图。

图5是传输具有减少的数据包开销的数据包的一个实施方案的概括性框图。

图6是示出用于传输具有减少的数据包开销的数据包的方法的一个实施方案的概括性流程图。

图7是示出用于传输具有减少的数据包开销的数据包的方法的另一个实施方案的概括性流程图。

图8是示出用于传输具有减少的数据包开销的数据包的方法的又一个实施方案的概括性流程图。

图9是示出用于传输具有减少的数据包开销的数据包的方法的又一个实施方案的概括性流程图。

具体实施方式

在以下描述中,阐述了许多具体细节以提供对本发明的透彻理解。然而,本领域的普通技术人员应认识到,可以在没有这些具体细节的情况下实施本发明。在一些情况下,众所周知的电路、结构和技术未被详细示出以避免使本发明模糊不清。

参考图1,示出了说明计算系统的一个实施方案的概括性框图。计算系统包括一个或多个请求者(或请求)节点110a-110b和一个或多个目标节点140a-140b。虽然在图1中示出了四个节点,但其他实施方案可以包括不同数量的节点。另外,请求者节点110a-110b可以同时用作从其他节点接收事务来服务的目标节点。类似地,目标节点140a-140b可以同时用作生成事务供其他节点服务的请求者节点。

节点110a-110b和140a-140b使用网络130和互连链路132来彼此通信。通信可以包括在节点之间发送的事务。事务可以包括针对目标数据的读取操作、针对目标数据的写入操作、对统计或其他信息的请求、对线程或数据进行迁移的请求等。正在发送的事务可能包括在数据包中。数据包包括用于由节点110a-110b和140a-140b进行路由和处理的标头。使节点110a-110b和140a-140b之间的互连链路132上的数据包开销最小化可以增加有效数据带宽并减少等待时间。如本文所使用的,术语“数据包”不旨在被限制于任何特定的格式。相反,数据包可以具有用于传送数据的各种格式中的任何一种。

图1示出了在节点之间传输的数据包的大小可以在大小上减小的系统的实施方案。节点110a-110b和140a-140b中的每一个可以包括连接到存储器的处理元件。例如,节点110a-110b和140a-140b中的每一个可以是计算装置,诸如台式计算机、服务器、膝上型计算机、平板计算机、智能电话等。替代地,节点110a-110b和140a-140b中的每一个可以是计算单元,诸如芯片上系统(soc)上的裸片、存储器中处理(pim)节点等等。

在各种实施方案中,请求者节点110a-110b和目标节点140a-140b使用各种通信协议中的任何一种通过网络130经由互连链路132彼此连接。例如,在节点110a-110b和140a-140b是单独的计算装置的实施方案中,网络130和互连链路132可以利用诸如以太网、光纤信道、tcp/ip、wi-fi连接等网络协议。替代地,在节点110a-110b和140a-140b是单独的集成电路(ic)、计算装置内的半导体裸片或pim节点的实施方案中,网络130和互连链路132可以使用快速外围部件互连高速(pcie)、hypertransport或rapidio来提供点对点通信。这些和其他协议和互连技术是可能的并且是预期的。

在所示的示例中,请求者节点110a包括处理器112、连接到处理器112的存储器114、以及也连接到处理器112的接口116。计算系统中的其他节点中的每一个可以包括类似的部件。处理器112可以是几种已知类型的处理器中的一者。例如,处理器112可以包括通用cpu(中央处理单元)、simd(单指令多数据)处理器、gpu(图形处理单元)、异构处理单元等等。在各种实施方案中,处理器112可以包括一个或多个处理核心以用于处理诸如操作系统(os)和固件的控制软件和包括来自几种类型的指令集架构(isa)之一的指令的软件应用两者。接口116可以包括用于支持经由网络130和互连链路与其他节点进行通信的控制逻辑和缓冲器或队列。控制逻辑可以硬件、软件或硬件和软件的组合来实施。存储器114可以包括任何合适的存储器装置。存储器装置的示例包括rambus动态随机存取存储器(dram)、同步dram(sdram)、dram、静态ram、三维(3d)集成dram等。在其他示例中,处理器112和存储器114被组合在存储器中处理(pim)节点中。

在各种实施方案中,计算系统的地址空间可以在节点110a-110b和140a-140b之间划分。节点110a-110b和140a-140b中的每一个可以包括存储器映射图或其他数据结构,其用于确定哪些地址被映射到哪个系统存储器,以及因此应将对特定地址的存储器请求路由到节点110a-110b和140a-140b中的哪一个。在一些实施方案中,计算系统(未示出)内的地址的高速缓存相干点被耦合到存储对应于所述地址的数据的存储器。

如图1所示,目标节点140a包括可由请求者节点使用的寄存器资源152。在各种实施方案中,寄存器资源152中的寄存器可以用于存储从请求者节点110a-110b发送的数据包中使用的数据值(诸如存储器地址)。在各种实施方案中,寄存器资源152可以包括组织在寄存器文件中的多个寄存器。替代地,寄存器资源152可以包括组织在目标节点140a的存储器中的地址空间中的多个存储器位置。在所示的示例中,目标节点140a包括n个寄存器,其中n是非零整数。分配的存储位置被示出为交叉阴影线,而可用的寄存器被示出为未交叉阴影线。

在任何给定的时间处,可存在给定数量的寄存器(j),所述寄存器目前没有被使用,并且可以被分配来使用。在寄存器资源152中的存储位置是cam中的物理寄存器或条目的实施方案中,寄存器(使用中和可供使用两者)的总数固定为n。然而,在寄存器资源152中的存储位置被分配存储器中的存储器位置的实施方案中,寄存器的总数n可随着存储器资源改变而改变。例如,可用于寄存器资源152的存储器的量可以随着系统存储器的存储器空间被提供用于其他用途而减少。因此,寄存器的总数n可能会减少。类似地,随着为寄存器资源152提供存储器空间,可用于寄存器资源152的存储器量可增加。因此,寄存器的总数n可能增加。在一些实施方案中,可以分配的寄存器的数量的上限(m)可以编程方式或在制造时建立。

寄存器资源控制逻辑150(也称为控制逻辑150)可用于确定寄存器资源152中的寄存器的分配和重新分配。在一些实施方案中,控制逻辑150位于目标节点140a内的接口逻辑中。在其他实施方案中,控制逻辑150位于存储器控制器、处理器或其他单元中。控制逻辑150还可以被配置为管理具有存储寄存器识别符、关于寄存器是否可用于分配的指示、作出分配请求的请求节点的识别、事务id等的条目的表。该表可以被称为输入/输出(i/o)寄存器文件(例如,如节点110a中所描绘的)。

如所示,请求者节点110a包括寄存器文件控制逻辑120和一个或多个i/o寄存器文件122-124。类似于目标节点140a的i/o寄存器文件,i/o寄存器文件122-124中的每一个可以在表的条目中存储信息。每个表条目可以存储与被分配用于存储给定数据值的目标节点140-140b中的一个的寄存器相关联的寄存器id、给定数据值、识别目标节点140a-140b中的一个的指示、事务id等中的一个或多个。在一些实施方案中,i/o寄存器文件122-124不存储用于目标节点的i/o寄存器文件中所存储的给定数据值。例如,如果已知一系列读取遵循来自经编程寄存器的序列,则在根据操作代码正确更新目的地寄存器的假设下一个接一个地发送所述读取。

在各种实施方案中,请求者节点110a-110b被配置为发送数据包(160),其包括作为给定事务的目标的地址。另外,请求者节点110a-110b可以被配置为发送数据包(170),其利用在数据包中使用比地址更少位的寄存器识别符(id)来替换目标地址。寄存器id识别可以自己存储所替换的地址的目标节点中的寄存器,或者以其他方式指示存储所替换的地址的位置。另外,由请求者节点传送的数据包可以指示对存储在所识别的寄存器中的数据值(例如,数据包可以包括对应于给定操作的操作码)执行的算术运算。例如,在寄存器存储存储器地址的实施方案中,数据包中的操作码可以指示要在数据包被处理之前(在前)或之后(在后)递增存储器地址。下面将更详细地描述这些和其他实施方案。

现在转到图2,示出了用于使用输入/输出(i/o)寄存器文件的协议的一个实施方案。如所示,在请求者节点110a和目标节点140a之间可能发生时间线(从上到下)上的一系列事件。应注意,虽然特定事件被示出为发生在时间1-6处,但是也可能发生未示出的各种其他事件和或不同事件。另外,一些事件可能会以不同的顺序执行,或者至少有一些是并发的。所述事件可以由请求者节点110a和目标节点140a中的每一个内的控制逻辑来执行。

在时间1期间,请求者节点110a准备将被瞄准到目标节点140a内的位置的一个或多个输入/输出(i/o)事务。在各种实施方案中,请求者节点110a确定用于缓冲的i/o事务的一个或多个地址。例如,可以向目标节点140a内的地址执行一系列写入。然后,与请求者节点相关联的控制逻辑可以确定与i/o事务相关联的地址是否呈现一个模式。例如,控制逻辑可以分析缓冲的i/o事务,以确定所述事务是否呈现顺序模式、具有给定步幅的模式或者某种其他可辨别模式。然后,请求者节点110a可以发送分配目标节点140a中的寄存器的请求。目标节点140a接收请求并确定是否存在可用的寄存器。如果是,则选择可用的寄存器来分配给请求者,并且将由请求识别的地址(例如,用于写入块的基址)存储在分配的寄存器中。另外,目标节点140a可以存储所分配的寄存器现在已被分配使用并且当前不可用的指示。另外,可由目标节点存储的其他信息包括识别寄存器已被分配到的请求节点110a的指示、事务id等中的一个或多个。在各种实施方案中,可将该信息存储在i/o寄存器文件的条目中。

在时间2,目标节点140a向请求者节点发送指示寄存器的成功分配和对应寄存器id的响应。请求者节点110a接收响应并且存储寄存器id(例如,在其i/o寄存器文件中的一个中)。在时间3,请求者节点110a发送(例如,先前被缓冲的)i/o事务。当发送i/o事务时,请求者节点110a不包括表示事务目标的数据包的地址。相反,请求者节点包括接收到的寄存器id。另外,在一些实施方案中,请求者节点110a还可以包括要对存储在寄存器中的值执行的算术运算的指示。该操作码与关于i/o事务是否对应于读取操作、写入操作、信息收集请求等的指示是分开的。例如,数据包中的操作码可以指示在数据包中所包括的数据被写入到由寄存器识别的存储器位置之后(或之前)递增存储在寄存器中的地址。增量可以在操作码中编码,例如按已知块大小的增量。高速缓存行是已知块大小的一个示例。其他示例是可能的且是预期的。

除了寄存器id和操作码之外,在一些实施方案中,请求者节点110a还可以在数据包数据中包括操作数数据。例如,增量值或步幅值可作为操作数数据发送。替代地,操作数数据可以是用来替换存储在寄存器中的当前值的新值。因此,当请求者节点110a发送用于i/o事务的后续数据包时,寄存器可能不一定存储与来自请求者节点的原始请求一起传送的相同值。相反,在目标节点接收到每个数据包之后,目标节点可以自动地改变(例如,递增、应用步幅值等)存储在寄存器中的地址。以这种方式,接收的数据(或相反地接收的读取请求)将与存储在寄存器中的正确地址相关联。

当目标节点140a接收到数据包时,所述目标节点可以立即处理所述数据包,或者缓冲所述数据包以便稍后处理。在验证由数据包识别的期望的事务之后,目标节点140a处理数据包中的信息并且在数据包中执行操作。验证可以包括确定所识别的寄存器被分配给请求节点等。执行操作可以包括利用从存储在指定的寄存器中的数据创建的地址来生成i/o事务。例如,事务可以被瞄准到配置为处理符合特定格式的数据包和或事务的装置或部件。这种格式可以包括具有作为事务目标的地址的标头。由于从请求者节点接收的数据包可能不符合这种格式(例如,地址被替换为寄存器识别符,添加了新的操作码等),因此部件不能处理数据包。为了弥补这一点,目标节点被配置为通过使用接收的数据包和从存储在指定的寄存器中的数据创建的地址来生成符合预期格式的i/o事务。以这种方式,系统内的其他部件可以继续处理事务,而不需要新的或修改的硬件和/或软件。

除了上述之外,目标节点140a还可以根据需要确定一个或多个寄存器将被重新分配以便允许分配给其他进程或其他请求者节点。可以基于各种条件中的任何一种来选择要重新分配哪个或哪些寄存器。例如,目标节点140a可以基于与事务或存储在寄存器中的值相关联的优先级水平来选择寄存器来重新分配。目标节点140a还可以基于存储在寄存器中的地址的大小来选择寄存器来重新分配。例如,存储较小地址的寄存器可以首先被重新分配。目标节点140还可以使用最近最少使用(lru)算法来选择寄存器以重新分配。这些和其他条件以及条件的组合可以用于选择寄存器来重新分配。

在一些实施方案中,请求者节点将传达不再需要使用分配的寄存器的指示(显式地或隐式地)。响应于检测到或确定这一点,目标节点可以重新分配先前分配的寄存器。在其他实施方案中,在某个时间点(例如,时间4)处,目标节点140a可以确定在时间1分配的寄存器将被重新分配而没有从请求者节点110a接收到任何通知。在一些情况下,在目标节点决定重新分配寄存器时,请求者节点110a可能没有完成使用寄存器。在这种情况下,请求者节点110a可以从目标节点接收驱逐通知。在丢失了寄存器的使用之后,请求者节点110a可以通过发送具有数据包中包括的必要地址的数据包来完成处理与寄存器相关联的i/o事务。替代地,请求者节点110a可以决定重复时间1并请求在目标节点140a中使用另一个寄存器。请求者节点的这个决定可以基于各种因素,例如要处理的剩余i/o事务的数量。例如,是否仍存在相对大量的事务。然后,通过使用基于寄存器id的方法节省开销可能被认为值得返回到时间1。在各种实施方案中,请求者节点110a可以跟踪每个未确认的未决事务。因此,请求者节点110a能够识别可能需要重试的事务-例如在给定时间间隔之后或者在另一个合格条件之后。

在时间5中,如果请求者节点110a使用与已经在目标节点140a中驱逐的寄存器相关联的寄存器id发送数据包,则目标节点140a可以在验证过程期间检测驱逐。例如,请求者节点110a在完全处理先前接收到的驱逐通知之前可能无意中发送了数据包。替代地,甚至在目标节点140a能够发送相关联的寄存器的驱逐通知之前,请求者节点110a可能已经发送了数据包。在时间6,目标节点140a发送具有错误指示的数据包。错误可能是由于试图访问驱逐的寄存器或由于试图访问现在由另一个进程或另一个请求者节点拥有的寄存器所致。

现在参考图3,示出了可以被包括在请求者节点和目标节点之间的数据包中的命令的一个实施方案的概括性框图。尽管命令中的字段被示出为以连续的方式存储并以特定的顺序存储,但是字段的放置可能不同于图3所示的示例。另外,在图3的示例中未示出的其他字段可以存储在数据包中。例如,事务、虚拟信道等的指示也可以用命令310-340中的一个或多个存储在数据包中。此外,可以使用事务id来将响应与先前发送的经处理的事务进行匹配。虚拟信道id可以用于识别给定的虚拟信道,以便维持预定的指派并且减轻或防止信道拥塞。数据包中包括其他字段是可能的并且是预期的。

命令310可以用于读取目标节点中的存储器位置。命令310包括指示用于接收数据包的目标节点的目的地字段312。操作码字段314指示要执行的操作是读取存储器位置。地址316指示要读取的存储器位置的地址。如所示,命令320、330和340还包括目的地字段322、332和342。与目的地字段312类似,这些字段存储用于识别要接收和处理数据包的目标节点的信息。

命令320用于请求分配目标节点中的(例如,如上所述,用于存储诸如基址的数据值)寄存器。操作码字段324指示这个请求。在一些实施方案中,字段326指示用于存储在分配的寄存器中的基址。在其他实施方案中,字段326可以指示除了要存储在指定目标节点中的经分配的寄存器中的基址以外的数据值。

命令330用于读取指定目标节点中的存储器位置,并更新存储在由字段336识别的寄存器中的地址。操作码字段334指示该请求和要执行的更新的类型。例如,在一些实施方案中,所指示的更新可以是预处理递增或递减操作。在其他实施方案中,所指示的更新是后处理递增或递减操作。字段336可以存储要在指定的目标节点中使用的寄存器的指示。例如,寄存器id可以被存储在字段336中。也可以使用指示寄存器的其他形式。应注意,字段336可以使用比用于指示目标节点中的地址的字段316和326更少数量的位。使用较少数量的位可以减少数据包开销。减少数据包开销又可以增加可用数据带宽并减少请求者节点与目标节点之间的互连链路上的等待时间。

命令340用于请求读取指定的目标节点中的存储器位置,并基于指定的偏移来更新地址。操作码字段344指示该请求。类似于命令330中的字段336,命令340中的字段346可以存储要在指定的目标节点中使用的寄存器的指示。字段348可以存储用于由字段344指示的更新的偏移的指示。更新可以是数据值(例如地址)的预处理更新。替代地,更新可以是存储在寄存器中的数据值的后处理更新。就偏移而言,在一些实施方案中,更新将步幅值加到与读取操作相关联的地址。替代地,更新从地址减去一个步幅值。使用偏移的许多其他类型的更新是可能的并且是预期的。

应注意,命令330-340可被修改以创建存储器写入请求。可以使用额外字段来存储用于修改指定的目标节点中的存储器位置的写入数据的指示。然而,写入操作仍将使用字段336和346来代替使用目标写入位置的地址。

现在转到图4,示出了命令410和目标节点480的概括性框图。如所示,目标节点480至少包括输入/输出(i/o)寄存器文件430、存储器440和更新逻辑450。为了便于说明,未示出其他控制逻辑。另外,命令410可以表示从请求者节点发送到目标节点480的数据包内的命令。如前所述,目标节点接收数据包、验证数据包并处理数据包中的信息。

在所示的实施方案中,i/o寄存器文件430中的分配的寄存器被配置为存储数据值。在各种实施方案中,这些数据值是用于访问存储器440的地址。目标节点480可以基于存储在接收到的命令410中的信息来改变存储在i/o寄存器文件430的特定经分配寄存器中的数据值。在所示的示例中,所接收的命令410包括字段412-422。尽管命令410中的字段412-422被示出为以连续的方式存储并以特定的顺序存储,但字段的放置可以不同于图4所示的示例。类似于图3中的示例,包括命令410的数据包可以包括未示出的其他字段。

命令410可以用于更新存储在目标节点480的i/o寄存器文件430中的特定经分配寄存器中的数据值。目的地字段412可存储特定寄存器所定位的目标节点的识别。操作码字段414可以存储要对存储在特定寄存器中的数据值执行的更新的类型的指示。

字段416可以存储要在指定的目标节点480中(例如,在i/o寄存器文件430中)使用的特定寄存器的识别。例如,寄存器id可以被存储在字段416中。也可以使用指示寄存器的其他形式。如示例中所示,所存储的识别可以用于索引到指定的目标节点480中的i/o寄存器文件430中。在一些实施方案中,存储在字段416中的指示可以用于直接索引到i/o寄存器文件430中。在其他实施方案中,存储在字段416中的信息可以用于访问一个或多个映射表以提供用于索引到i/o寄存器文件430(可以存在一个或多个间接级)中的值。应注意,字段416可以使用比原本将用于存储目标地址更少的位。

字段418和420可以用于存储要更新存储在特定寄存器中的数据值的范围的指示。例如,在一些实施方案中,存储在特定寄存器中的数据值是地址,并且字段418和420可以分别存储地址范围的最高有效位和地址范围的最低有效位的指示。如所示,字段418和420用于识别存储在i/o寄存器文件430的特定寄存器中的数据值432的部分或范围。字段422可以存储操作数数据的指示与由字段418和420指定的数据值432的范围组合。如所示,更新逻辑450可以接收数据值432的指定范围、来自字段422的操作数数据以及来自字段414的操作码。许多不同类型的操作可以由字段414中的操作码指示用于组合数据值432的范围和字段422中的操作数数据。例如,字段414中的操作码可以指示诸如递增、递减、应用步幅值、应用布尔(boolean)运算等的操作。

更新存储在i/o寄存器文件430中的寄存器中的数据值432可以发生在使用数据值432之前。替代地,更新存储在i/o寄存器文件430中的寄存器中的数据值432可以发生在使用数据值432之后。在数据值432是地址的实施方案中,可以在利用地址432访问存储器440之前执行地址范围的更新。替代地,可以在利用地址432访问存储器440之后执行地址范围的更新。可以将由更新逻辑450生成的数据值432的更新部分与数据值的未改变部分连结以提供完全改变的数据值。在数据值432是地址的实施方案中,可以将更新的地址部分与未改变的地址部分连结以提供完全更新的地址。如所示,改变的数据值可以被存储在i/o寄存器文件430的特定寄存器中以供随后的i/o事务使用。另外,改变的数据值可以用于存储器440的可能的加速访问。例如,来自存储器440的数据可以使用改变的数据值来预提取,并且被存储以供稍后使用。

现在参考图5,示出了用于发送具有减少的数据包开销的数据包的一个实施方案的框图。如所示,请求者节点中的处理器112生成i/o事务,然后可以将所述i/o事务存储在队列(或缓冲器)510中。队列510可以包括多个条目用于存储与i/o事务相关联的信息。每个条目可以存储识别i/o事务的指示、目的地(目标节点)、与i/o事务对应的操作的指示以及在目标节点中的存储器位置的地址。指示有效状态、一个或多个时间戳、优先级水平等的其他指示符也可以被存储在队列510中的每个条目中。

控制逻辑512可以确定队列510中的给定的i/o事务是否应以降低的数据包开销进行处理。控制逻辑512可以使用许多因素来做出这样的确定。这些因素中的一些可以包括:目标节点的i/o寄存器文件中的寄存器的分配是否成功完成、目标节点是否发送了寄存器的驱逐通知、对应于相同的事务识别符(id)的i/o事务的数量等。

在各种实施方案中,使用表520来存储存储器地址和已经在目标节点中分配的寄存器的寄存器id之间的映射。也可在表520中存储其他信息。在一些实施方案中,在表520中存储除存储器地址以外的数据值。例如,可以将指针存储到队列510中的对应条目。当在目标节点中请求和分配寄存器时,表520可以被更新。类似地,当寄存器被重新分配或驱逐时,表520可被适当地更新。在一些实施方案中,存储在队列510和表520中的信息可以被组合以形成i/o寄存器文件。替代地,信息被存储在物理上分开的位置中,但信息形成逻辑i/o寄存器文件中的条目。

一般来说,存储在队列510和表520中的信息可用于形成具有减少的开销的数据包,例如数据包515。这样的数据包可以包括对i/o事务的识别、请求者节点(源)、目标节点(目的地)、i/o事务的操作、寄存器id以及前面针对命令310-340和命令410所描述的可能字段。通过从数据包中排除目标地址,数据包在通过互连链路发送到目标节点时具有减小的大小。

当目标节点接收到数据包时,目标节点中的控制逻辑530确定接收到的数据包是否应作为减少开销的数据包来处理。在各种实施方案中,数据包中可以包括有助于做出该确定的指示。类似于请求者节点中的表520,目标节点中的表540存储有地址和寄存器id之间的映射。存储在表540中的其他信息可以包括以下各项中的一个或多个:对应的请求者节点(所有者)的指示、优先级水平、地址或其他存储的数据值的大小、lru值、识别i/o事务或任务的指示等。队列550可以存储类似于队列510的信息,但是包括对请求者节点(源)而非目标节点(目的地)的识别。与队列510和表520一样,队列550和表540可以各种方式组合。应注意,在一些实施方案中,框530-550可以位于请求者节点和目标节点之间的部件(例如,交换机)中,而非位于目标节点中。通过将框530-550的功能置于交换机中,充当目标节点的端部节点可能不需要被重新设计成支持对i/o寄存器文件的维护。

现在转到图6,示出了用于传输具有减少的数据包开销的数据包的方法600的一个实施方案。为了讨论的目的,按顺序示出了本实施方案中的步骤。应注意,在下面描述的方法以及本文中描述的其他方法的各种实施方案中,所描述要素中的一个或多个可以同时执行,与所示不同的顺序执行,或者可以被完全省略。也可以根据需要执行其他额外要素。本文描述的各种节点、设备或系统中的任何一个均可以被配置来实施方法600。

由于请求者节点中的诸如一个或多个处理器的处理元件生成要发送到外部目标节点的i/o事务,因此输入/输出(i/o)带宽减少以框602开始。在框604中,请求者节点存储对应于多个i/o事务的数据。在框606中,请求者节点确定对应于多个i/o事务的存储器访问中的模式。在其他实施方案中,编译器可以检测存储器访问中的模式。在又其他实施方案中,例如交换机中的芯片外存储器控制器或控制逻辑的另一个芯片外硬件部件可以检测模式并向请求者节点发送对应的指示。在框608中,请求者节点基于模式来确定用于i/o事务的一个或多个地址更新。

在框610中,请求者节点发送分配用于多个i/o事务的远程寄存器的请求。如果未从远程位置接收到针对请求的成功响应(条件框612),则在框614中,请求者节点通过发送具有识别所发送每个数据包的目标的地址的数据包来处理事务。否则,如果接收到成功响应(条件框612),则在框616中,请求者节点在本地记录所分配的寄存器的识别符(id)。在框618中,请求者节点然后通过发送具有寄存器id和地址更新指示而非目标地址的数据包来处理i/o事务。在一些实施方案中,请求者节点具有一组寄存器的所有权。这些请求者拥有的寄存器位于目标节点中或交换机中。在这种情况下,请求者节点确定如何分配和使用目标节点或交换机内的请求者拥有的寄存器。因此,在这些情况下,请求者节点可以使用上述方法中的步骤610和618,而跳过中间步骤612-616。

现在转到图7,示出了用于传输具有减少的数据包开销的数据包的方法700的一个实施方案。本文描述的各种节点、设备或系统中的任何一个均可以被配置来实施方法700。处理具有寄存器id的i/o事务以框702开始。在框704中,请求者节点识别用于多个事务中的一个事务的地址更新。在框706中,请求者节点使用寄存器id代替相关联的存储器地址来发送用于i/o事务的数据包。数据包还包括地址更新的指示。如果尚未到达最后的i/o事务(条件框708),则方法700返回到框704。如果已经到达最后的i/o事务(条件框708),则请求者确定是否使用相同的远程寄存器来进行其他后续i/o事务。换句话说,分配寄存器的初始要求可能是针对给定的事务。在完成给定的事务之后,请求者可以放弃分配的寄存器,并通过请求新的寄存器来重复所述过程。替代地,如果请求者现在有其他事务要处理,则其可以仅继续使用先前分配的寄存器。如果请求者节点决定继续使用相同的远程寄存器(条件框710),则在框712中,请求者节点可以发送用对应于新事务的不同地址来更新寄存器的请求。如果请求者节点决定不继续使用相同的远程寄存器(条件框710),则在框714中,请求者节点可以发送指示远程寄存器可以被重新分配的消息,并且请求者节点使与寄存器id相关联的本地使用无效(框716)。例如,请求者节点可以使本地i/o寄存器文件和存储寄存器id的其他数据结构中的条目无效。

在处理数据包期间,请求者节点可以从目标节点接收与寄存器id相关联的寄存器不再可用的指示。该指示可能是异步指示。如果接收到这样的指示(条件框718),则在框720中,请求者节点请求分配另一个寄存器或处理剩余的i/o事务而不使用远程寄存器。

现在转到图8,示出了用于传输具有减少的数据包开销的数据包的方法800的另一个实施方案。本文描述的各种节点、设备或系统中的任何一个均可以被配置来实施方法800。减少输入/输出(i/o)带宽消耗以框802开始。如果目标节点接收到i/o事务(条件框804)并且i/o事务请求分配寄存器(条件框806),则在框808中,目标节点选择可用的寄存器。在框810中,目标节点记录所识别寄存器的识别符(id)和发送了i/o事务请求分配的请求者节点的指示。替代地,可以存储寄存器文件中所识别的寄存器的索引或位置。在框812中,目标节点分配具有在分配请求中接收的数据值的选定寄存器。在各种实施方案中,数据值是存储器地址。在框814中,目标节点向请求者节点发送包括寄存器id的响应,所述响应指示成功分配。随后,方法800返回到条件框804。

如果i/o事务请求访问寄存器(条件框806),则在框816中,目标节点利用包括在事务中的指示识别寄存器。在各种实施方案中,请求中的指示可以是寄存器识别符(id)。如果所识别的寄存器不可用(条件框818),则在框824中,目标节点向请求者节点发送所述寄存器不可用的通知。通知可能指示存储在寄存器中的数据已被驱逐。之后,方法800返回到条件框804。

如果所识别的寄存器仍然可用(条件框818),则在框820中,目标节点访问由寄存器识别的存储器位置。目标节点也可以基于接收到的事务或接收到的数据包中的操作码和其他更新信息来更新存储器地址。在框822中,目标节点可以向请求者节点发送指示事务已经被处理的确认。

现在转到图9,示出了用于处理具有减少的数据包开销的数据包的方法900的另一实施方案。本文描述的各种节点、设备或系统中的任何一个均可以被配置来实施方法800。如前所述,请求者节点借助使用识别供在传输i/o事务时使用的远程寄存器的寄存器识别符(id)来生成要发送到目标节点的事务。在处理接收到的事务期间,或者在其他时间,目标节点可以确定已分配的寄存器将被重新分配。如前所述,目标节点可以确定在未从请求者节点接收到任何通知的情况下,寄存器将被重新分配。如果目标节点确定已分配的寄存器将被重新分配(条件框904),则在框906中,目标节点重新分配寄存器。在框908中,目标节点向被识别为正在使用寄存器的节点的请求者节点发送指示寄存器已被重新分配的通知。此通知可能是异步通知。

如果请求者节点完成使用接收到的通知中识别的寄存器(条件框910),则在框912中,请求者节点继续处理事务,并且方法900的控制流程返回到条件框904。如果请求者节点未完成使用在所接收的通知中识别的寄存器(条件框910),则请求者节点确定其是否将请求使用另一个寄存器来继续事务(条件框914)。如果请求者节点不请求另一寄存器(条件框914),则所述方法以框912继续。如果请求者节点确实确定请求另一个远程寄存器来完成处理一个或多个事务(条件框914),则在框916中,请求者节点向目标节点发送分配用于一个或多个i/o事务的远程寄存器的请求。如果未从目标节点接收到对请求的成功响应,则请求者节点通过发送具有识别所发送的每个数据包的目标存储器位置的地址的数据包来处理事务。否则,如果接收到成功响应,则请求者节点在本地记录所分配的寄存器的识别符(id)。然后,请求者节点通过发送具有寄存器id和地址更新指示的数据包,而非如图8中一般性描述的那样发送具有目标地址的数据包,来处理i/o事务。

在各种实施方案中,可以使用软件应用的程序指令来实施先前描述的方法和/或机构。程序指令可以以诸如c的高级编程语言描述硬件的行为。替代地,可以使用硬件设计语言(hdl),例如verilog。程序指令可以被存储在非暂时性计算机可读存储介质上。许多类型的存储介质是可用的。存储介质在使用期间可以由计算系统访问,以向计算系统提供程序指令和随附数据以进行程序执行。计算系统可以包括至少一个或多个存储器以及被配置为执行程序指令的一个或多个处理器。

应强调,上述实施方案仅是实施的非限制性示例。一旦完全理解了上述公开内容,许多变化和修改对于本领域技术人员来说将变得明显。意图将所附权利要求书解释为涵盖全部这类变化和修改。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1