CN104050144B - 改善有效链路带宽的完成组合 - Google Patents
改善有效链路带宽的完成组合 Download PDFInfo
- Publication number
- CN104050144B CN104050144B CN201410213367.1A CN201410213367A CN104050144B CN 104050144 B CN104050144 B CN 104050144B CN 201410213367 A CN201410213367 A CN 201410213367A CN 104050144 B CN104050144 B CN 104050144B
- Authority
- CN
- China
- Prior art keywords
- packet
- completion
- header
- complete
- new
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4022—Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3041—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is an input/output interface
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/41—Flow control; Congestion control by acting on aggregated flows or links
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- Computer Hardware Design (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Quality & Reliability (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
公开一种接合打算供单个目标(请求者)使用的不相关的完成操作以改善可达到的数据带宽的装置和方法。在传输期间,完成操作被收集以及压缩到单个分组中并沿着链路被传输。在链路的接收端,单个分组被解压缩,并且之前不相关的分组在被请求者接收之前返回到它们的初始状态。在PCIe实现的情况下,该方法可被实施在根复合体、端点和/或交换机中,但是除了PCIe还可以应用于其它协议。
Description
技术领域
本申请涉及分组处理。
背景技术
在串行链路中,每一个分组都有与其相关的开销。PCIe中的完成事务有五个双字(DW)的开销:一个DW用于组帧,三个DW用做报头,以及一个DW专用于循环冗余校验(CRC)。该开销的呈现不考虑事务所包含的数据有效载荷。(PCIe是外围部件互连快速的简称,其是许多计算机系统使用的高速串行总线标准。)
例如,如果读请求为32字节(32B),那么对应的完成包含八个双字(DW)(32字节)的数据,结果效率为61.5%(8个DW比上13个DW)。因此,在x16第三代PCIe链路中,使用32B的请求大小,可以取得每秒9.84千兆字节(GB/s)的可用数据带宽,而不是16GB/s。如果请求大小是64B,则带宽效率增加到76.2%。如果请求大小增加到256B,则效率增加到93%。
许多带宽敏感型应用,比如图形和高性能计算(HPC)联网,具有小的请求大小。由于以上讨论的协议开销,这必然限制了可达到的带宽量。一个解决方案是提供过量带宽和/或频率水平,这从成本以及功率的角度来说是昂贵的。
因此,对于致力于克服现有技术的缺陷的方案有持续的需要。
附图说明
当结合附图时,通过参考下面的详细描述,本文件的前述各方面以及许多伴随的优点将变得更易于领会以及变得更好理解,除非另有说明,否则附图中相同的附图标记表示不同视图的相同部分。
图1是根据一些实施例的完成组合装置的简化框图,以压缩部分为特征;
图2是根据一些实施例的完成组合装置的简化框图,以解压缩部分为特征;
图3是根据一些实施例的在PCIe标准下发生的不公告(non-posted)和公告操作的简化框图;
图4是根据一些实施例的以事务和它们的完成为特征的框图,以展示通过组合完成所获得的效率,如图1和图2的完成组合装置所执行的;
图5A-5C是根据一些实施例的示例PCIe拓扑的简化图,用于展示图1和图2的完成组合装置的两种可能的实现;
图6是根据一些实施例的在PCIe下的逻辑层的简化图,用于展示图1和图2的完成组合装置的两种可能布置;
图7是根据一些实施例的以由图1的完成组合装置的压缩部分所执行的操作为特征的流程图;以及
图8是根据一些实施例的以由图2的完成组合装置的解压缩部分所执行的操作为特征的流程图;以及
图9是根据一些实施例的片上系统的高层框图,其可以支持图1和图2的完成组合装置。
具体实施方式
根据这里描述的实施例,公开一种装置和方法,其中,接合打算供单个目标(请求者)使用的不相关的完成操作以改善可达到的数据带宽。在传输期间,完成操作被收集以及压缩为单个分组并沿着链路传输。在链路的接收端,单个分组被解压缩,并且之前不相关的分组在被请求者接收之前返回到它们的初始状态。在PCIe实现的情况下,该方法可被实施在根复合体、端点和/或交换机中,但是除了PCIe还可以应用于其它协议。
在下面的详细描述中,参考附图,其通过示意的方式显示了特定的实施例,其中可以实践这里描述的主题。然而,需要知晓的是,本领域技术人员一旦读了该公开内容,其它实施例将变得显而易见。因此,下面的描述不被解释为限制的意思,因为主题的范围由权利要求书定义。
图1和2是根据一些实施例的完成组合装置的简化框图。完成组合装置可以是基于处理器的系统、片上系统、服务器系统或任意的其它基于处理器的系统的变型的一部分。下面,在本公开中举例说明一些示例系统。现在,在描述装置100时,操作环境仅仅被称为“系统”。
完成组合装置具有两个不同的功能:组合分组以更有效地通过系统传输;以及在一些接收点处对组合的分组进行解组装,从而将分组恢复为它们的原始形态。因此,装置100被描述为两部分:压缩装置100A和解压缩装置100B(统称为,“完成组合装置100”)。在压缩侧100A,其在一些实施例中发生在链路的发送器部分,该装置包括收集引擎30和组合引擎40;然而,在解压缩侧100B,其在一些实施例中发生在链路的接收器部分,该装置包括报头去除引擎110、匹配引擎120和报头增加引擎130。尽管图1和图2的操作被称为“压缩”和“解压缩”,但操作还可以被认为是组合和解组合、组装和解组装、结合和解结合、接合和解接合,等等。这里所使用的术语“压缩”和“解压缩”意在覆盖广泛的含义,不意味着暗示除了这里所公开和示意的操作之外的操作。
虽然这两部分100A和100B看起来相互不同,但是除非100A和100B两部分都呈现,否则它们所在的系统是不受益的。因此,压缩装置100A和解压缩装置100B可以被认为是整个装置100的两个部分而不是分离的实体。在另一方面,压缩装置100A可以位于发送器上,而解压缩装置100B位于分离的接收器上。在这样的配置下,这里所描述的“系统”意味着包含发送器和接收器二者。
在压缩侧100A,装置连接到某一类型的存储器缓冲器,比如先进先出(FIFO)50。FIFO50存储已在系统某处被处理过的分组20A、20B、……、20N(统称为“分组20”)。每一分组20包括报头60和有效载荷70。报头60进一步包括至少一个请求者标识符(RID)22和完成状态字段26,以及报头的剩余部分28,其内容对于装置100的操作是不重要的。
在系统的通常操作期间,分组20从FIFO流入分组处理实体。然而,在一些实施例中,当装置100存在于系统中时,分组流由收集引擎30监视。在一些实施例中,收集引擎30观察从FIFO流入分组处理的分组20,并基于每一分组的报头特性,将一些分组从流中移除以供进一步处理。
在一些实施例中,完成组合装置100参与完成操作。完成操作是遵守不公告操作的那些操作。图3是显示了在PCIe标准下发生的一些不公告操作以及公告操作的简化框图。
首先,不公告读事务可以包括存储器读(MRd)、I/O读(IORd)或配置读(CfgRd)。代理A随着代理A所请求的代理B的地址一起发布MRd、IORd或CfgRd命令。代理B发送具有所期望的数据(CplD)的完成命令,除非事务不成功,在该情况下代理B发送错误完成命令(Cpl)。不公告读事务因此发生在代理A和B之间。
不公告写事务可以包括I/O写(IOWr)或配置写(CfgWr)命令。和不公告读操作一样,完成操作(Cpl)是发布实体所期望的。因此,代理A随着待进行写入的代理B的地址一起发布IOWr或CfgWr操作。这是发生在代理A和B之间的不公告写事务的例子。
最后,公告写事务或存储器写(MWr)操作可以发生在代理A和B之间。在该情况下,代理A随着待进行写入的代理B的地址一起发布WMr。然而,与不公告操作相反,代理A不期望来自代理B的完成操作。替代地,代理A假定操作是成功的。
完成组合装置100仅关心不公告事务和它们对应的完成。所有不公告事务的一个特性是事务的请求者(例如,图3中的代理A)被识别为在每一分组的报头60的RID22中(图1)。因此,在一些实施例中,在监视从FIFO50到分组处理的分组20的流的同时,收集引擎30能够识别每一分组的请求者。
在一些实施例中,除了知道分组20的请求者,完成组合装置100还监视完成状态字段26。完成状态字段26公告完成组合装置100被发起的事务是否成功。在一些实施例中,除了成功外,完成状态字段26还指示不同的失败状态,是否发生了重试,是否应该尝试重试,等等。事务可能不成功的原因有很多。一个例子是尝试来自无效存储器地址的读操作。在一些实施例中,完成组合装置100不执行不成功的不公告事务的完成组合。
图1中还示出了最大有效载荷大小24。对于每一链路,最大有效载荷大小24是静态定义的实体,其在让通常的事务在链路上相互通信的两个设备之间流动之前进行软件编程。软件读取为每一设备定义的、在一些实施例中从配置寄存器获得的最大有效载荷大小,并将两个数字中较小的一个编程为用于那个链路的最大有效载荷大小。因此,在一些实施例中,在完成组合能够发生之前,为那个链路获得最大有效载荷大小24。
因此,在一些实施例中,在转移分组20用于进一步处理之前,完成组合装置100的收集引擎30监视三个字段22、24和26。在图1中,每一分组20的三个字段22、24和26用颜色编码,以示出收集引擎30的处理。满足标准的分组20被从路径提取出来,然后发送到组合引擎40。在一些示例中,前两个字段是红色和绿色的分组20被收集引擎30作为目标以从分组处理的规则流中转移。
在组合引擎40处,完成组合装置100现在具有共享了常见特性的分组20的集合:它们都打算供同一请求者使用并且它们是成功的完成分组。在一些实施例中,基于新的分组大小,组合引擎40从分组的每一个集合中提取报头60并计算新的报头45。新的分组80现在将准备返回分组处理的规则流。
在一些实施例中,解压缩100B被设计为将分组20在被请求者接收之前恢复为它们的初始配置。在一些实施例中,在解压缩100B处,完成组合的分组80由报头45中预定的位来识别出。在其它实施例中,通过将完成组合的分组80的大小与未完成请求队列150的内容进行比较,来识别完成组合的分组80,如下面所进一步解释的。报头去除引擎110接收新的分组80并移除报头45,从而仅剩下无报头的分组140。
在图2中,显示无报头分组140具有五部分:A、B、C、D和E。虽然这些部分看起来彼此相似,但是它们不必尺寸相同。因此,作为一种可能性,分组140可以是256字节的分组,其中A部分是32字节,B部分是64字节,C部分是128字节、D部分是16字节,E部分是16字节。
在解压缩侧100B,完成组合装置具有未完成请求队列150供其处理,其中存储了请求者的所有的不公告请求。未完成请求队列150帮助请求者保持对所进行的不公告请求的跟踪。因为构成了组合的无报头分组140的分组A、B、C、D和E可能不按照发送顺序存储,所以未完成请求队列150促进了从无报头分组140中正确提取分组。而且,在一些实施例中,当压缩的分组80流过链路时,未完成请求队列150帮助解压缩侧100B识别压缩的分组80。
如图2所示,匹配引擎120基于未完成请求队列150将无报头分组140的各部分相关联,根据大小进行匹配,并且报头增加引擎130将新的报头160增加到每一个匹配的分组上,得到分组170A、170B、170C等(统称为“分组170”)。有意地,在一些实施例中,分组170实质上与原始分组20相似。
完成组合装置100可以独立地实施在链路的每一方向。例如,装置100可以仅实施用于出站完成(例如,从根复合体到端点的完成),仅用于入站完成,或者用于出站和入站完成两者。
在一些实施例中,完成组合装置100可以使得完成事务的完成者将去往请求者的多个完成组合起来。相似地,中间部件(比如交换机)可以将去往请求者的多个完成组合起来。通过完成者或是通过中间交换机,通过遵守一些规则可以实施装置100。
例如,在一些实施例中,去往同一请求者的多个32B或64B完成(如由相同总线、设备、功能所确定的)可以被组合成256B完成有效载荷,只要对于链路上的每一设备而言最大有效载荷大小24是256B或更大。在一些实施例中,这样的组合大大地改善了分组效率。
图4根据一些实施例可视地展示了完成组合装置100的动机。图4显示了多个小的完成如何被组合到PCIe中的同一请求者,从而形成一个聚合的完成。事务T1由13个DW组成,通常作为32B完成(C1)被传输。事务T2由21个DW组成,通常作为64B事务(C2)被传输。事务T3、T4和T5也是13个DW,产生32B完成(C4、C5和C6)。与事务T2一样,事务T6是21个DW的事务,将产生64B完成(C6)。
这些事务和它们的完成示出在图4的左侧。对于每个完成,显示在完成的左边的DW总数包括5个DW的开销。因此,对于第一事务T1,虽然事务本身占用8个DW(32B),但具有额外的5个DW的开销,DW的总数是13。在图4的左侧,该开销被增加到每一完成操作。
聚合完成90示出在图4的右侧。聚合完成90类似地具有5个DW的开销,即,一个字节来指示事务分组的开始(STP),两个字节用于序列号(以及保留位RSVD,如果需要的话),三个DW用于报头,一个DW用于事务循环冗余校验(CRC),以及一个字节用于指示聚合完成的结束。
尽管有开销,但是聚合完成90使用了比单独的完成事务更少的字节,69DW比94DW。在该例子中,利用聚合完成90带来了效率的增益。
在一些实施例中,利用完成组合装置100,如果执行组合的实体和事务的请求者两者都支持,那么完成组合被实现。如果两端都支持该特征,则这可以通过软件考虑公开的能力以及启用完成组合装置100来使能。完成组合装置100还可以通过设备在硬件中交换卖家定义的消息而被使能。如果所有的完成是对相同的请求者(例如相同的总线、设备、功能)并且如果它们具有连续的标记,那么一个方法是使用连续的标记字段用于请求和组合成功的完成。请求者通过查看长度字段而知道正在完成哪个标记。
替代方法允许将去往同一请求者的任一成功的完成进行组合,而不是增加每一个完成的标记字段。如果在系统中请求被乱序服务,这将允许完成组合。这可以通过使用一些预留位位置或一些不太重要的位字段来完成。例如,在PCIe的情况下,用于请求者ID的位与BCM字段可以用于额外的标记以得到额外的28位。在任一方法中,由于事务格式保持不改变,所以提议的完成组合100可以通过旧有交换机使用。完成组合装置100还可以用于任意其他报头压缩方案,比如没有发送完整报头的一个方案。
图5A-5C是示例PCIe系统拓扑200A、200B和200C的简化框图。系统200A显示为不具有完成组合装置100,而系统200B和200C显示了使用完成组合装置100的两个不同的实施例。在系统200A中,根复合体230是将CPU210和存储器220连接到被连接的I/O设备的层级的根。根复合体230支持连接到PCIe端点的一个或多个PCI快速端口。PCIe端口260A-260G(统称为“PCIe端口260”)连接PCIe端点240A-240E(统称为“PCIe端点240”),以及交换机250和PCIe-PCI桥280。PCIe拓扑可以简单为单个的端点,或可以如图5A所示包括连接多个端点的交换机。PCIe桥280提供PCI快速光纤和PCI/PCI-X层级之间的连接。
完成组合装置100可以位于PCIe系统拓扑200中的几个不同位置之一中。例如,装置100可以在交换机中、在根复合体中或在端点之一中。而且,装置100可以位于事务层或链路层。本领域普通技术人员中的系统设计者会认识许多不同的应用用于完成组合装置100。
图5B和5C以放置在根复合体230和PCIe端点240D中的完成组合装置100为特征。在图5B中,压缩部分100A在根复合体230中,而解压缩部分100B在PCIe端点240D中。因此,从根复合体230流向PCIe端点240D的事务在进入链路之前会被压缩,然后在离开链路后被解压缩,在该例子中链路由这样的路径组成:其离开PCIe端口260G且进入交换机250,然后经由PCIe端口260E离开交换机250,然后进入PCIe端口240D。因此系统200B展示了单向完成组合,或出站完成组合。在一些实施例中,交换机250不必知道完成组合操作,因为经过交换机的分组遵守系统200B的要求,即,如上所描述的,分组不超过最大有效载荷大小24。
图5C中的系统200C与图5B中的系统200B稍有不同。这次,压缩部分100A和解压缩部分100B被发现在根复合体230和PCIe端点240D二者中。因此,从根复合体230流向PCIe端点240D的事务将被压缩,将通过交换机250,以及将在PCIe端点240D中被接收,然后将被解压缩。同样,从PCIe端点240D流出的事务将被压缩,将通过交换机250,以及在根复合体230被接收,然后将被解压缩。系统200C因此展示了双向的完成组合或出站和入站完成组合。
图6是PCIe下的逻辑层300的简化图。架构被分为三个不同的层:事务层320、数据链路层340和物理层360。PCI快速使用分组在不同部件之间传递信息。分组在事务320和数据链路层340中形成以携带从发送部件到接收部件的信息。当流过这些层时,分组通过额外信息得到扩展从而促进层之间的传输。在接收端,过程是相反的,分组从它们的物理层呈现转变为数据链路层呈现,最终成为能够被接收设备的事务层处理的原始事务层分组(TLP)。
在图6中,根据一些实施例,压缩侧完成组合100A(图1)发生于PCIe下的事务层320。发送侧完成组合逻辑考虑完成报头,将下一个报头从FIFO50向前推进,并检查下一事务是否能够被组合,如上所述。重复该过程直到满足组合条件。然后发送侧开始传输组合后的完成分组。
在接收侧,接收器解开完成并将它们作为单个的完成传递到接收队列。可选地,可以在其它部分完成该功能,比如在事务层队列之后。
图6中的图示显示了发生在事务层的完成组合100。然而,完成组合还可以发生在链路层。如图5B、5C和6所示,完成组合100是高度灵活的,且对于大量不同的链路条件是有用的,其中链路流量的优化是被期望的。
图7和8是根据一些实施例的示出了完成组合装置100所采用的步骤的流程图,图7显示了压缩侧100A,图8显示了解压缩侧100B。这些操作可以在事务层执行,如图6所示,或者在链路层。而且,事务可以在分组处理的开始时执行,无论在交换机、集线器还是端点中。
在执行完成操作中,装置100A初始化用于管理FIFO(图1中的FIFO50或图6中的FIFO330)或其它事务存储队列的监视的特定变量。在一些实施例中,存储队列是预定大小的循环存储结构。值N用于跟踪在FIFO中的监视发生在哪里。一旦FIFO中的最后条目被观察到,监视返回FIFO的顶部开始。N可以被初始化为0,但是N可以是小于FIFO的大小的任意值。因此,对于256大小的FIFO,N可以是从0到255的任意值。出于简化的目的,N被初始化为0(框402)。
有效载荷大小P也可以初始化为0。回想到压缩分组的大小不能超过最大有效载荷大小(MPS)24,因此在一些实施例中,压缩操作100A随着满足标准的新分组被积聚而跟踪该值。第三变量CE是组合条目的简写,其是正在组合的分组的实际数目。因此,CE是组成成组分组的分组的数目,P是成组分组的大小。第四变量“组合开始CS”,表示成组的分组的开始位置。CS被初始化为N(框404)。
因此压缩装置100A监视出站事务完成队列条目N(框406)。当在位置N没有发现完成事务(框408)时,对传输管线是否为空做出查询(框414)。如果传输管线不是空的,那么向管线发送组合分组是完全没有意义的,过程重新开始(框406),直到在位置N发现完成事务(框408)。相反,如果传输管线是空的因此可用于接收事务,然后,如果没有组合条目(框416),那么没有任何东西发送到传输管线。因此,过程重新开始(框406)。
相反,如果至少有一个完成条目,那么对是否有至少两个完成条目做出查询(框418)。如果是,那么完成组合操作被调度,开始于位于完成开始点的条目(框420)。变量N被更新以包括完成开始点加完成条目点,减一(由于计数是基于零的),该过程再一次开始(框406)。
否则,没有至少两个完成条目,对位于位置N的条目是否有效做出查询(框424)。如果是,则为条目N调度完成以便离开(框426),N被更新为下一完成队列条目(框428)。否则,位于位置N的条目是无效的(框424)。在任一情况下,重复过程(框406)。
返回到完成事务查询(框408),相反,如果在位置N存在完成事务,回想起在一组分组将被压缩之前必须满足三个标准:普通请求者,完成被认为是成功的,以及成组分组的大小不超过最大有效载荷大小24(图1)。相应的,当满足三个标准时(框410),这意味着在队列中有适当的完成事务,变量N、CE和P被更新,前两个变量N和CE是递增的,而有效载荷大小P被更新以包括最近识别出的完成事务的大小。
当不满足三个条件时,执行以上描述的操作,其中完成条目的数目超过一(框418)。
图8示出了根据一些实施例的压缩装置100的解压缩部分100B所采用的步骤。组合完成分组80被接收(框502),其中报头45指示分组的请求者(框504)。然后移除报头45(框506),识别分组部分大小(框508)。如上所述,分组各部分(图2中的A-E)可以有不同的大小。这些大小与未完成请求队列150相比较,其中未完成请求队列150指示由请求者发起的所有未决不公告事务(框510)。队列150条目匹配到分组部分大小,一旦做出匹配则被匹配的条目将从队列移除(框512)。如果需要,则修改未完成请求队列150的最后条目以反映部分完成(框514)。为匹配的分组创建报头(框516),附到分组上(框518),并且新的分组170被发送到下游用于进一步处理(框520)。这些最后的操作继续,直到未完成请求队列为空或者接收到的分组140被处理(框522)。
现在参见图9,其显示了根据一些实施例的片上系统(SoC)的高水平框图。SoC600包括各种部件,所有的部件可以集成在单个半导体芯片上以高速且低耗地提供各种处理能力,假定相对小数量的不动产。
SoC600包括多个核心650A-650N(统称为“核心650”)。在各种实施例中,核心650可以是相对简单的有序核心,或更复杂的无序核心。或者有序和无序核心的组合可以出现在单个SoC中。如所见,核心650可以经由一致性互连670互连,一致性互连670进一步耦合高速缓存存储器660,比如,例如共享的最后一级高速缓存(LLC)。虽然本公开的范围不限于此,但在一个实施例中,根据快速通道互连(QPI)TM规范来设计一致性互连670。(QPITM是加利福尼亚圣克拉拉的英特尔公司的产品)。
进一步如图9所示,一致性互连670可以经由桥680与结构750通信,其中结构750可以是集成的片上系统结构(IOSF)。一致性互连670可以进一步经由集成存储器控制器(IMC)690与片外存储器(未示出)通信,进一步通过桥730与结构750通信。
进一步如图9所示,各种部件可以耦合到结构750,包括内容处理模块(CPM)710,其能够用于执行各种操作,比如安全处理、加密功能等。而且,显示处理器720可以是媒体处理管线的一部分,其为相关联的显示器(未示出)渲染视频。
结构750可以进一步耦合到IP代理760。虽然在图9的实施例中为了便于示意仅显示了单个代理,但可以理解的是在不同的实施例中多个这样的代理是可能的。另外,为了使能与其它片上设备的通信,结构750可以进一步与PCIeTM控制器770以及通用串行总线(USB)控制器780通信,这二者都可以根据这些协议与各种设备通信。
最后,图9的SoC600以桥790为特征,其可以用于与诸如开放核心协议(OCP)或ARM高级微控制器总线架构(AMBA)协议的其它协议的额外部件通信。
尽管图7中显示了单个芯片SoC实现,但实施例可以进一步实施在多个芯片经由非IOSF接口相互通信的系统中。而且,本公开的范围不限制为图9所示的特定部件,因为额外的或不同的部件可以出现在不同的实施例中。完成组合装置100在SoC600中可以是可操作的,以便优化其中的部件之间的传输。
如上述图5B和5C所示,完成组合装置100可以是PCIe链路的一部分,但是不限于此。可视地,两个实体之间的任意链路都可以是完成组合装置100的候选。因此,USB控制器780(图9)可以包括完成组合组合装置100用于下行USB链路。或者,操作在QPI标准之下的一致性互连670可以以完成组合装置100为特征,从而优化互连上设备之间的传输。总线上代理之间的传输可以包括链路。完成组合装置100可以是单向的(图5B)或双向的(图5C)。根据系统要求、成本考虑和其它因素,普通技术人员的系统设计者将认出多个不同的实施体制。
完成组合装置100的优点是改善了链路的带宽利用率。表1展示了用于来自PCIe同一请求者的多个请求的完成组合的好处。越小请求的完成组合带来越大的影响,越多的组合有效载荷带来越大的效率改善。
表1使用方法100的效率改善
尽管只通过有限数目的实施例对本申请进行了描述,本领域技术人员将会明白其各种修改和变型。附加的权利要求书意图覆盖所有这些修改和变型从而落入本发明的真实精神和范围内。
Claims (24)
1.一种用于处理分组的装置,包括:
收集引擎,其布置在两端链路的一端处,所述收集引擎用于收集将被传输的多个完成分组,每个完成分组用于提供识别请求者的对不公告事务的响应,并且所述每个完成分组包括报头,所述收集引擎被配置为仅收集具有包括以下内容的报头的完成分组:
预定请求者标识符;以及
指示成功的完成状态;以及
组合引擎,用于:
将所述收集引擎待收集的所述多个完成分组进行组合以形成最终的完成分组;以及
将新的报头附到所述最终的完成分组以形成新的分组。
2.如权利要求1所述的装置,所述收集引擎进一步用于:
获得所述收集引擎待收集的完成分组的有效载荷大小;
将所述有效载荷大小与所述完成引擎待收集的多个其它完成分组的第二有效载荷大小相加,从而生成结果大小;以及
如果所述结果大小超过所述链路的最大有效载荷大小,则不向所述组合引擎发送所述收集引擎待收集的完成分组。
3.如权利要求1所述的装置,进一步包括:
布置在所述两端链路的一端处的队列,所述收集引擎从所述队列收集完成分组。
4.如权利要求1所述的装置,进一步包括:
报头去除引擎,其布置在所述两端链路的第二端处,所述报头去除引擎用于:
从所述两端链路收集新的分组;以及
从所述新的分组移除新的报头,产生无报头完成分组,所述无报头完成分组包括多个分组部分。
5.如权利要求4所述的装置,进一步包括:
匹配引擎,其布置在所述两端链路的所述第二端处,所述匹配引擎用于接收所述无报头完成分组;以及
未完成请求队列,包括所述请求者做出的未完成不公告事务的登记;
其中所述匹配引擎:
将所述多个分组部分之一与所述未完成不公告事务之一进行匹配,产生匹配的部分;以及
将来自所述未完成请求队列的所述未完成不公告事务之一标记为匹配的。
6.如权利要求5所述的装置,进一步包括:
报头增加引擎,用于:
向所述多个分组部分之一增加新的报头,产生恢复的分组;以及
将所恢复的分组传输给所述请求者。
7.如权利要求1所述的装置,所述两端链路根据高速串行总线标准来操作。
8.如权利要求7所述的装置,其中所述高速串行总线标准将根据外围部件互连快速(PCIe)标准来操作。
9.如权利要求7所述的装置,其中所述高速串行总线标准将根据通用串行总线标准来操作。
10.如权利要求1所述的装置,其中所述两端链路将根据快速通道互连(QPI)TM标准来操作。
11.一种用于处理分组的系统,包括:
根复合体,其耦合到中央处理器单元和存储器;
交换机,其将所述根复合体耦合到多个端点,其中在所述根复合体和所述多个端点的一个端点之间形成传输链路;
压缩装置,其布置在所述根复合体中,所述压缩装置用于:
截获打算供所述端点使用的多个完成事务分组,将响应先前通过所述传输链路传输的不公告事务来提供完成事务;
将所述多个完成事务分组组合成新的完成事务分组,新的完成分组包括不超过所述传输链路的最大有效载荷大小的大小;以及
将所述新的完成分组通过所述传输链路传输给所述端点,
其中,仅截获具有包括以下内容的报头的完成事务分组:
预定请求者标识符;以及
指示成功的完成状态。
12.如权利要求11所述的系统,进一步包括:
解压缩装置,其布置在所述端点中,所述解压缩装置用于:
截获所述新的完成分组;
将所述压缩装置将要增加到所述新的完成分组的报头移除;以及
恢复所述多个完成事务分组。
13.如权利要求12所述的系统,进一步包括:
第二压缩装置,其布置在所述端点中,所述第二压缩装置用于:
截获打算供所述根复合体使用的第二多个完成事务分组;
将所述第二多个完成事务分组组合成第二新的完成事务分组,第二新的完成分组包括不超过所述传输链路的最大有效载荷大小的第二大小;以及
将所述第二新的完成分组通过所述传输链路传输给所述根复合体。
14.如权利要求13所述的系统,进一步包括:
第二解压缩装置,其布置在所述根复合体中,所述第二解压缩装置用于:
截获所述第二新的完成分组;
将所述第二压缩装置增加到所述第二新的完成分组的第二报头移除;以及
恢复所述第二多个完成事务分组。
15.如权利要求11所述的系统,所述端点是所述请求者。
16.如权利要求13所述的系统,所述根复合体是所述请求者。
17.一种用于处理分组的方法,包括:
在通过基于处理器的系统的两端链路进行传输之前,收集完成分组,所述完成分组是对请求者传输的不公告事务的响应;
其中,仅收集具有包括以下内容的完成分组的报头的所述完成分组:
预定请求者标识符;以及
指示成功的完成状态;
在所述两端链路的第一端处,将所收集的完成分组与第二完成分组组合从而形成组合的完成分组,所述第二完成分组也将响应于所述请求者传输的不公告事务而被提供;
将报头增加到所述组合的完成分组以产生新的完成分组;以及
通过所述两端链路传输所述新的完成分组;
其中,所述新的完成分组将在所述两端链路的第二端处,在被所述请求者接收之前被解组装为所述完成分组和所述第二完成分组。
18.如权利要求17所述的方法,进一步包括:
从所述完成分组移除第二报头;
从所述第二完成分组移除第三报头;
其中,所述第二报头和所述第三报头将在所述完成分组与所述第二完成分组组合之前被移除。
19.如权利要求18所述的方法,进一步包括:
确认所述完成分组和所述第二完成分组将是成功的完成操作。
20.如权利要求19所述的方法,进一步包括:
通过查看每一完成分组的报头中的预定字段,确认所述完成分组和所述第二完成分组将是成功的完成操作。
21.如权利要求17所述的方法,进一步包括:
在将所述完成分组与所述第二完成分组组合之前,确认所述完成分组的大小和所述第二完成分组的第二大小之和没有超过所述两端链路的预定最大有效载荷大小。
22.一种用于处理分组的方法,包括:
在通过基于处理器的系统的两端链路进行传输之前,由完成者收集完成分组,所述完成分组响应于由请求者传输且将被所述完成者接收的不公告事务而被提供;
其中,仅收集具有包括以下内容的完成分组的报头的所述完成分组:
预定请求者标识符;以及
指示成功的完成状态;
由所述完成者将所收集的完成分组与第二完成分组组合以形成组合的完成分组,所述第二完成分组也响应于由所述请求者传输的不公告事务而被提供;
由所述完成者向所述组合的完成分组增加报头,以产生新的完成分组;以及
由所述完成者通过所述两端链路传输所述新的完成分组;
其中所述新的完成分组将在所述两端链路的第二端处被所述请求者解组装为所述完成分组和所述第二完成分组。
23.如权利要求22所述的方法,进一步包括:
由所述完成者从所述完成分组移除报头;
由所述完成者从所述第二完成分组移除第二报头;
其中,所述报头和所述第二报头将在所述完成分组与所述第二完成分组组合之前被移除。
24.如权利要求22所述的方法,进一步包括:
通过查看每一完成分组的报头中的预定字段,由所述完成者确认所述完成分组和所述第二完成分组是成功的完成操作;
在将所述完成分组与所述第二完成分组组合之前,由所述完成者确认所述完成分组的大小和所述第二完成分组的第二大小之和没有超过所述两端链路的预定最大有效载荷大小。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/843,611 | 2013-03-15 | ||
US13/843,611 US8935453B2 (en) | 2013-03-15 | 2013-03-15 | Completion combining to improve effective link bandwidth by disposing at end of two-end link a matching engine for outstanding non-posted transactions |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104050144A CN104050144A (zh) | 2014-09-17 |
CN104050144B true CN104050144B (zh) | 2017-07-21 |
Family
ID=50241188
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410213367.1A Active CN104050144B (zh) | 2013-03-15 | 2014-03-14 | 改善有效链路带宽的完成组合 |
Country Status (3)
Country | Link |
---|---|
US (2) | US8935453B2 (zh) |
EP (1) | EP2782020B1 (zh) |
CN (1) | CN104050144B (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20170032502A (ko) | 2015-09-14 | 2017-03-23 | 삼성전자주식회사 | 스토리지 장치 및 그것의 인터럽트 발생 방법 |
US20170126845A1 (en) * | 2015-10-29 | 2017-05-04 | VTX Holdings (Singapore) Pte. Ltd. | Network communication system |
US9900260B2 (en) | 2015-12-10 | 2018-02-20 | Arm Limited | Efficient support for variable width data channels in an interconnect network |
US10157133B2 (en) | 2015-12-10 | 2018-12-18 | Arm Limited | Snoop filter for cache coherency in a data processing system |
US9990292B2 (en) | 2016-06-29 | 2018-06-05 | Arm Limited | Progressive fine to coarse grain snoop filter |
US9825730B1 (en) | 2016-09-26 | 2017-11-21 | Dell Products, Lp | System and method for optimizing link performance with lanes operating at different speeds |
US10169273B2 (en) * | 2017-01-11 | 2019-01-01 | Qualcomm Incorporated | Forced compression of single I2C writes |
US10042766B1 (en) | 2017-02-02 | 2018-08-07 | Arm Limited | Data processing apparatus with snoop request address alignment and snoop response time alignment |
US10467154B2 (en) | 2017-02-10 | 2019-11-05 | Qualcomm Incorporated | Multi-port multi-sideband-GPIO consolidation technique over a multi-drop serial bus |
CN108363673A (zh) * | 2018-02-28 | 2018-08-03 | 郑州云海信息技术有限公司 | 设置pcie热插拔设备传输负载的方法、装置及设备 |
US10866917B2 (en) * | 2018-12-03 | 2020-12-15 | Ati Technologies Ulc | Inter device data exchange via external bus by utilizing communication port |
US11593281B2 (en) * | 2019-05-08 | 2023-02-28 | Hewlett Packard Enterprise Development Lp | Device supporting ordered and unordered transaction classes |
CN113485950A (zh) * | 2021-06-22 | 2021-10-08 | 上海天数智芯半导体有限公司 | 一种合并发送PCIe存储器写请求的系统及方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1104141A3 (en) * | 1999-11-29 | 2004-01-21 | Lucent Technologies Inc. | System for generating composite packets |
US6721813B2 (en) * | 2001-01-30 | 2004-04-13 | Advanced Micro Devices, Inc. | Computer system implementing a system and method for tracking the progress of posted write transactions |
US7468976B2 (en) * | 2002-06-25 | 2008-12-23 | Xocyst Transfer Ag L.L.C. | Efficiency improvement for shared communications networks |
US7953074B2 (en) * | 2003-01-21 | 2011-05-31 | Emulex Design And Manufacturing Corporation | Apparatus and method for port polarity initialization in a shared I/O device |
US8174969B1 (en) * | 2009-11-24 | 2012-05-08 | Integrated Device Technology, Inc | Congestion management for a packet switch |
US8539134B2 (en) * | 2010-02-15 | 2013-09-17 | International Business Machines Corporation | PCI express multiplier device |
-
2013
- 2013-03-15 US US13/843,611 patent/US8935453B2/en not_active Expired - Fee Related
-
2014
- 2014-03-11 EP EP14158735.2A patent/EP2782020B1/en active Active
- 2014-03-14 CN CN201410213367.1A patent/CN104050144B/zh active Active
- 2014-12-09 US US14/564,988 patent/US9317466B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US9317466B2 (en) | 2016-04-19 |
EP2782020A2 (en) | 2014-09-24 |
US20150095544A1 (en) | 2015-04-02 |
EP2782020B1 (en) | 2018-10-03 |
US8935453B2 (en) | 2015-01-13 |
US20140281052A1 (en) | 2014-09-18 |
CN104050144A (zh) | 2014-09-17 |
EP2782020A3 (en) | 2014-12-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104050144B (zh) | 改善有效链路带宽的完成组合 | |
US8516165B2 (en) | System and method for encoding packet header to enable higher bandwidth efficiency across bus links | |
CN1608255B (zh) | 使用包括扩展类型/扩展长度字段的分组头部的计算机系统中的代理之间的通信事务类型 | |
US11061850B2 (en) | Multiple transaction data flow control unit for high-speed interconnect | |
US7702827B2 (en) | System and method for a credit based flow device that utilizes PCI express packets having modified headers wherein ID fields includes non-ID data | |
JP5274730B2 (ja) | PCIeアーキテクチャ中でのI/O拡張要求および応答のルーティング | |
US7705850B1 (en) | Computer system having increased PCIe bandwidth | |
US7984252B2 (en) | Storage controllers with dynamic WWN storage modules and methods for managing data and connections between a host and a storage device | |
US20090003335A1 (en) | Device, System and Method of Fragmentation of PCI Express Packets | |
WO2003058470A1 (en) | Communicating message request transaction types between agents in a computer system using multiple message groups | |
CN102185833B (zh) | 一种基于fpga的fc i/o并行处理方法 | |
CN112836453B (zh) | Sas控制器帧缓冲区结构设计方法 | |
US8799550B2 (en) | System and method for increased efficiency PCI express transaction | |
US8675683B2 (en) | Implementing end-to-end credit management for enhanced large packet reassembly | |
JP2014002545A (ja) | データ転送装置、及びデータ転送方法 | |
KR20160077110A (ko) | 입력 출력 데이터 정렬 | |
US20070028017A1 (en) | Method and Apparatus for Generating Unique Identification Numbers for PCI Express Transactions with Substantially Increased Performance | |
US20080263248A1 (en) | Multi-drop extension for a communication protocol | |
US9753876B1 (en) | Processing of inbound back-to-back completions in a communication system | |
US20060005061A1 (en) | Data protection system | |
CN108289117B (zh) | 一种基于fpga的多方接入系统及处理方法 | |
US9201599B2 (en) | System and method for transmitting data in storage controllers | |
CN106027349B (zh) | 一种pci-e总线接口传输卡及基于该传输卡的数据传输方法 | |
JP2013196593A (ja) | データ処理装置、データ処理方法及びプログラム | |
US9268725B2 (en) | Data transferring apparatus and data transferring method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant |