SoC构造中的高效对等通信支持的制作方法

文档序号:7994111阅读:205来源:国知局
SoC构造中的高效对等通信支持的制作方法
【专利摘要】用于互连构造中的高效对等通信支持的方法及装置。实现与代理相关联的网络接口以便按一方式促进代理之间的对等事务,该方式确保数据访问与每个代理的最近更新相对应。这是部分地通过当源自代理的写入事务之间的目的地改变时使用从该代理发送的非记入式“虚写入”实现的。虚写入确保与之前的写入相对应的数据在后续写入和读取事务之前到达其目的地,因此对对等事务进行排序,而不要求使用集中化事务排序实体。
【专利说明】SoC构造中的高效对等通信支持发明领域
[0001]本发明的领域总体上涉及计算机系统中的通信,并且更具体地但是不排他地涉及用于SoC构造中的增强对等通信的技术。
[0002]背景信息
[0003]计算机系统通常使用一个或多个互连来促进系统组件之间(诸如处理器和存储器之间)的通信。互连和/或扩展接口还可用于支持内置和添加设备,诸如10(输入/输出)设备和扩展卡等等。许多年来,在引入了个人计算机之后,主要的互连形式是平行总线。平行总线结构用于内部数据传送和扩展总线,诸如ISA(工业标准架构)、MCA(微通道架构)、EISA(扩展工业标准架构)以及VESA局部总线。在20世纪90年代早期,英特尔公司引入了 PCI (外围组件互连)计算机总线。PCI不仅通过增加总线速度而且通过引入使用共享地址和数据线的自动配置和基于事务的数据传送改进了早期的总线技术。
[0004]随着时间推进,计算机处理器时钟速率以比平行总线时钟速率更快的步伐增加。结果是,计算机工作负载经常受限于互连瓶颈而不是处理器速度。尽管平行总线支持每个周期传送大量的数据(例如,PC1-χ下的32或甚至64位),但其时钟速率受限于定时偏移考虑因素,导致了对于最大总线速度的实践限制。为了克服这个问题,开发了高速串行互连。早期串行互连的示例包括串行ATA、USB (通用串行总线)、火线、以及Rapid1 (快速10)。广泛使用的另一种标准串行互连是PCI Express(PCIe),其在2004年在PCIel.0标准下引入。
[0005]近来,统称为“片上系统”(SoC)的架构在计算机行业中变得流行。不是在分立组件之间具有外部互连,SoC采用促进各种嵌入式组件(诸如处理器内核以及其他IP (知识产权)块)之间的通信的内部互连。这些IP块通常经由一个或多个互连架构连接,所述互连架构诸如为互连网格(例如,纵横型互连),也称为互连构造,或简单地“构造(fabric)”,并且这些IP块与使用由互连所实现的可应用通信协议来管理IP内核组件之间的通信的代理相关联。
[0006]设计SoC的通信构造会是非常有挑战性的。随着SoC上的IP块的数量继续增加,互连构造上的流量拥塞量也增加。然而,随着更多的IP块和相关联的代理被集成到SoC上,基于总线或基于层级树的构造遇到了严重的连线拥塞和时序闭合的问题,这限制了这些互连架构的可扩展性。结果是,SoC的片上通信构造现在从总线和层级树构造结构移动到更复杂的互连构造,诸如片上网络(NoC)、混合架构等等,原因在于这些更复杂的互连构造的可扩展性、可模块化性以及易于设计重新使用。
[0007]附图简要说明
[0008]当结合附图时,前述诸方面和本发明的许多伴随优势将变得更加容易认识到,正如通过参照以下详细说明更好地理解到的那样,其中,贯穿各种视图,类似的参考标号指代类似的部件,除非另外指明。
[0009]图1是说明在耦合到互连的三个代理之间发送的一系列消息的示意框图;
[0010]图2是说明连接到互连的多个代理的示意框图,其中,每个代理与促进事务排序以便确保数据访问不过时的网络接口相关联;
[0011]图3是网络接口的一个实施例的示意框图;
[0012]图4是说明根据一个实施例的由网络接口执行的逻辑和操作的流程图;
[0013]图5a_5f是用于说明使用虚写入以便确保一系列事务的适当事务排序的走查示例的示意框图;以及
[0014]图6是采用片上网络的示例性片上系统的示意框图。
[0015]详细说明
[0016]在此描述了用于SoC构造中的高效对等(peer-to-peer)通信支持的方法及装置的实施例。在以下说明中,列出了许多特定细节以便提供本发明实施例的透彻理解。然而,本领域普通技术人员将认识到可在没有这些特定细节中的一个或多个或者具有其他方法、组件、材料等等的情况实践本发明。在其他情况下,未详细地示出或描述公知的结构、材料、或操作以便避免混淆本发明的方面。
[0017]贯穿本说明书对“一个实施例”或“实施例”的参考是指在此结合该实施例所述的特定特征、结构或特性包括在本发明的至少一个实施例中。因此,贯穿本说明书,短语“在一个实施例中”或“在实施例中”在各种地方的出现并非必须全部指代相同的实施例。而且,特定特征、结构或特性可在一个或多个实施例中以任意适当的方式组合。
[0018]对等通信支持是SoC构造设计中的重要特征。对等通信的重要挑战是要求确保正确的排序。图1展示排序要求的示例。在本示例中,代理(agent) A首先向代理B发布写入(步骤I)。然后,代理A向代理C发送标志以便表明其已经写入数据(步骤2)。当代理C接收到该标志时,其向代理B发布读取(步骤3)。要求是代理C需要获得由代理A写入的最近的数据。然而,如果未被正确地设计,由代理C发布的读取可能比由代理A写入的数据更早到达代理B。结果是,代理C可能读取过时数据而不是最近的数据。
[0019]在当前英特尔? SoC平台中,对等通信排序由支持PC1-e排序的总线和层级树构造支持。然而,当互连结构从总线和层级树发展到更复杂的构造架构时,对等支持变成重要的挑战,因为无法在这些先进的构造架构中确保排序。一种解决方案是在互连构造中使用集中化排序以便确保维护正确的排序。然而,这种方法增加了通信时间并且集中化排序点会变成瓶颈,因为在行进到达其目的地之前,每个请求必须被首先发送到排序点。设计者还可针对对等通信使用非记入式写入而不是记入式(posted)写入。然而,非记入式写入方法为对等事务增加了显著的通信延迟,因为其要求在发送下一请求之前确认每个发布的写入,因此非记入式写入不能满足这种系统中的性能要求。
[0020]鉴于前述和其他性能考虑,现在提出了一种支持互连构造中的直接对等通信而不需要集中化排序点的低开销设计。图2说明采用互连构造202作为通信构造的SoC平台200的示例。在本架构中,每个代理204通过网络接口(NI) 206连接到互连构造。NI对来自不同队列的请求进行仲裁并且将获胜请求打包(如果适用的话)并且将该数据包发送到互联构造202。然后,互连构造将该数据包路由到其目的地(即,另一个代理),并且目的地NI将该消息解包并且将该消息传递到目的地代理。总体而言,互连构造202可以是任意构造架构,诸如传统总线、层级树、或更复杂的构造,诸如片上网络(NoC)、混合架构等等。而且,这种技术对要求构造中的对等排序支持的任意互连构造有效。
[0021]图3说明根据一个实施例的NI206的进一步的细节。在代理处发起的出站请求被缓冲到出站队列300,其中仲裁器302对发送出这些请求的顺序进行仲裁。响应于仲裁器302从队列300选择请求,该请求在框304被打包并且被发送到构造上。入站请求包括从构造接收的并且目的地是该代理的数据包。这些数据包首先在框306被解包,其中相应的请求数据被缓冲在入站队列308中。然后,仲裁器310用于对将排队的请求转发到该代理的顺序进行仲裁。注意,图3中所说明的NI206仅仅是支持对等事务的NI的一个示例,因为还可实现其他NI配置。
[0022]对于对等通信而言,如果从不同的来源代理发送的两条消息的目的地是同一个目的地代理并且要求排序,则要求首先发送的消息应当首先到达目的地。然而,在构造内部,因为来自不同来源代理的对等消息可采取到达同一目的地的不同路线,非常可能的是在某个点,目的地为同一目的地代理的一对消息将从它们被注入到构造中的时间起以不同的顺序到达目的地。结果是,无法保证对等排序。
[0023]关键考虑因素是记入式写入事务排序。为了确保正确的对等记入式写入事务排序,实现一种机制,其确保源自同一来源代理并且去向不同目的地代理的记入式写入按顺序到达其对应的目的地。使用以上在图1中说明的示例,代理A首先写入代理B(第一记入式写入)。然后,代理A写入代理C,表明其已经写入代理B(另一个记入式写入)。如果在代理C接收到来自代理A的消息的时刻,源自代理A的记入式写入已经到达代理B,那么当代理C向代理B发送读取时,确保了读取最新的数据。结果是,可确保排序是正确的。
[0024]为了实现这一点,在一个实施例中,在每个NI206中实现“写入目的地寄存器”(WDR)312,如图3所示。这个WDR寄存器用于记录从其附接的代理发布的最近的记入式写入请求的目的地ID。对于具有N个代理的系统而言,WDR寄存器大小仅仅是1gN个比特。
[0025]对于从代理发布的每个记入式写入事务而言,代理的NI首先检查这个写入的目的地代理以及记录在其WDR中的先前(即,最近)记入式写入目的地。
[0026](a)如果先前的记入式写入和当前的记入式写入是去往同一目的地代理,NI直接将写入请求发送到构造。在图4的流程图中说明了用于这种情况的这种逻辑,其中,对决策框400和402的对应的答案是是和否,致使流程前进到其中将请求发送到构造的框406。然后,构造将写入请求路由到该请求中所标识的目的地代理。在这种情况中,不需要更新WDR,因为目的地代理和先前的记入式写入的目的地代理是相同的。
[0027](b)如果NI检测到先前的记入式写入和当前的记入式写入是去往不同的代理,决策框402的答案是否,并且NI将首先发送“虚(dummy)写入”,诸如将返回从目的地NI到WDR所记录的先前目的地代理的确认的非记入式写入或其他类型的事务,如框404所示。这种“虚写入”用于首先将所有先前的记入式写入推送到其目的地。然后,NI等待来自先前的目的地代理的对这种“虚写入”的确认。在接收到确认之后,确保了所有先前的记入式写入已经被推送到目的地。然后,NI向构造上发布记入式写入。NI还更新其WDR以便识别新的目的地。因为从这个代理发送的所有写入已经按顺序到达其目的地,确保了去往这个目的地的任意后续读取请求将访问最近的数据更新。
[0028]对于读取事务而言,NI总是直接通过构造将请求发送到目的地(不要求虚事务)。在图4中将这种情况描绘为从来自决策框400的否结果开始进行到在框406中发送请求的流程。
[0029]走查示例
[0030]图5a_5f说明描绘了对等排序方案如何工作从而确保正确的请求排序的走查(walk-through)示例。在每个所说明的附图中,多个代理204通过网格NoC构造500互连,如图5a所示。每个代理204操作地耦合到包括WDR312的NI206。通过操作地耦合到对应的NF206的一组路由器502促进NoC构造中的路由。在图5a_5f,每个WDR312展示了与来自其相应的NI的最近的写入目的地相对应的目的地ID。
[0031]在本示例中,代理C希望从代理B读取数据。然而,该数据当前正由代理A写入代理B,所以需要一种确保代理C不接收来自代理B的过时数据的机制。这是通过使用以上所讨论的虚写入技术实现的,如进一步在以下细节中所描述的。
[0032]步骤1:代理A向代理B发布多个写入
[0033](i)对于由代理A发布的写入而言,NI首先检查WDR。在本示例中,在发布第一写入的时刻,WDR是“代理D”,但是写入请求的目的地是“代理B”,所以NI首先向代理D发送“虚写入”(如图5b中的操作I所示)。
[0034](ii)当代理D接收到该“虚写入”时,其向代理A发布“确认”(图5b中的操作2)。
[0035](iii)当接收到该确认时,代理A处的NI将其WDR改变到“代理B”并且将写入发送到代理B (图5c中的操作3)。
[0036](iv)对于去往代理B的随后的写入请求而言,因为目的地和WDR是相同的(代理B) ,NI直接向代理B发送随后的写入。
[0037]步骤2:代理A向代理C发送标志
[0038](i)代理A处的NI首先检查WDR。WDR是“代理B”,但是写入请求的目的地是“代理C”,所以NI首先向代理B发送“虚写入”(从而向代理B推送数据,如图5d中的操作I所示)
[0039](ii)当代理B接收到该“虚写入”时,其向代理A发布“确认”(图5d中的操作2)
[0040](iii)当接收到该确认时,代理A处的NI将其WDR改变到“代理C”并且将写入标志发送到代理C (图5e中的操作3)。
[0041]步骤3:代理C向代理B发布读取
[0042]对于读取请求而言,NI总是直接将其发送到目的地节点。在这种情况下,代理C直接将所有读取请求发送到代理B(如图5f所示)。因为代理B中的数据已经是最新的,由代理C读取的数据是正确的。
[0043]前述内容说明了各种代理和相关联组件所执行的一系列操作的一个示例,以便按一方式促进数据事务,该方式确保每个数据请求导致向请求者返回最近的数据。尽管在2D网格构造中描述了该示例,将理解的是类似的方法可用于确保其他类型的互连构造(还包括采用总线、层级、混合等等的互连结构)中的正确的排序操作。
[0044]在前述走查示例中,SoC配置被描绘为使得每个NI连接到一个代理。还可为同时连接到多个代理的NI实现在此公开的原理和教导。在这种情况下,NI可使得所有底层代理共享一个WDR,或每个代理有一个WDR。前者更简单但是可能在某些情况下生成不必要的虚写入,而后者更高效但是用略多的逻辑来实现。这两种方法确保了对等通信的正确排序并且具有非常低的硬件开销。
[0045]采用NoC的示例性SoC配置
[0046]在图6中展示了包括具有示例性配置的SoC602的系统600,可在该示例性配置下实现在此描述的实施例的多个方面。SoC602包括片上网络(NoC) 604,该片上网络包括2D网格互连构造,该2D网格互连构造具有邻近每个纵横交点的路由器606且包括多个互连链路608。多个IP块(block) 610耦合到对应的路由器606,形成了 IP块的2D阵列。尽管在图6中说明了 16个IP块,这仅仅是示意性的,因为IP块的数量可从更少的IP块数量到更多的数量变化,诸如但不限于8个、24个、32个、48个、64个等等,以及中间的数字。
[0047]每个IP块包括代理612和网络接口 614。这些IP块例示SoC中常用的各种类型的IP块,诸如处理器内核、硬件加速器(例如,视频解码器、图形、成像等等)、存储器相关的组件(例如,存储器控制器)、以及I/o接口(例如,PCIe, QPI等等)。在所说明的实施例中,一对存储器控制器616和618被描绘为耦合到对应的存储器块620和622 (被描绘为DIMM(双列直插式存储模块))并且耦合到NoC604中的对应的路由器。还描绘了系统接口624,其例示SoC602和未示出的其他系统组件之间的一个或多个接口。如本领域普通技术人员将认识到的,实际的SoC将包括附加组件,其未予示出以便不混淆图6中所展示的NoC方面。
[0048]在进一步的细节中,典型的处理器内核IP块可包括:耦合到或包括有一级或多级的高速缓存存储器(例如,L1/L2高速缓存)的处理器内核。高速缓存进而可采用用于促进与系统中的其他高速缓存和存储器代理的一致存储器事务的代理。可采用该代理用于其他目的,诸如非一致存储器事务或其他通信目。而且,尽管在图6中代理被描绘为单个块,给定的IP块可具有与其相关联的多个代理。
[0049]除了用于促进以上所讨论的事务排序和相关的操作的逻辑之外,每个网络接口将包括预备(provis1n)用于与应用互连构造进行对接。例如,互连构造可包括串行多通道互连结构,诸如英特尔的快速通路互连? (QPI)或英特尔的KEIZER技术互连⑩(KTI)、开放内核协议互连、其他类型的标准化或专用互连、以及未来的互连技术和协议。此外,NoC的配置可包块其他类型的互连构造配置,诸如但不限于环形和3D网格互连(例如,可在具有以3D阵列配置的IP块的未来三维SoC中采用的互连构造)。
[0050]本发明的所说明实施例的以上描述,包括在摘要中描述的内容,不旨在是排他性的或者将本发明限制为所公开的精确形式。尽管在此为了示意性的目的描述了本发明的特定实施例和示例,在本发明的范围内,各种等效修改是可能的,正如本领域普通技术人员将认识到的那样。
[0051]可根据以上细节描述对本发明做出这些修改。在以下权利要求中所使用的术语不应被解释为将本发明限制到在说明书和附图中公开的特定实施例。而是,本发明的范围应完全由随附权利要求书来确定,应当根据已确立的权利要求解释原则对其进行解释。
【权利要求】
1.一种方法,包括: 促进耦合到互连构造的代理之间的对等写入和读取事务;以及 使用基于对端的设施来对所述写入和读取事务进行排序,从而确保读取事务访问最近的数据。
2.如权利要求1所述的方法,进一步包括: 对于在代理处发起的写入事务,存储与所述写入事务的目的地相对应的目的地标识符(ID); 确定与在所述代理处发起的当前写入事务相对应的目的地ID是否不同于与在所述代理处发起的紧邻前一写入事务相对应的目的地ID ;以及,如果所述两个目的地ID不同, 在将所述当前写入事务发送到所述互连构造上以便被路由到其目的地之前,从所述代理向所述互连构造上发送虚写入以便被路由到之前的目的地。
3.如权利要求2所述的方法,其中,所述虚写入包括非记入式写入。
4.如权利要求2所述的方法,进一步包括在将所述当前写入事务发送到其目的地之前,等待接收所述虚写入的确认。
5.如权利要求2所述的方法,进一步包括实现多个网络接口,以便在所述代理和所述互连构造之间提供接口,每个网络接口与至少一个代理相关联,其中,网络接口被配置成用于存储与所述网络接口相关联的每个代理的最近写入事务的目的地ID,并且当从同一代理发起的顺序的写入事务具有不同的目的地ID时生成虚写入。
6.如权利要求5所述的方法,其中,所述多个网络接口被实现为使得每个网络接口与对应的代理相关联。
7.如权利要求2所述的方法,进一步包括向至少一个其他代理发送写入通知,表明与所述当前写入事务相对应的目的地可用于数据访问。
8.如权利要求1所述的方法,其中,所述互连构造包括二维网格互连。
9.如权利要求1所述的方法,其中,在片上系统(SoC)上实现所述代理和互连构造。
10.一种装置,包括: 互连构造; 多个代理;以及 多个网络接口,每个网络接口操作性地耦合在至少一个代理和所述互连构造之间并且包括用于按一方式促进所述多个代理之间的对等通信的逻辑,该方式确保对等代理之间的数据事务被排序为使得每个数据事务所访问的数据包括所述数据的最近更新。
11.如权利要求10所述的装置,其中,所述互连构造包括片上网络。
12.如权利要求10所述的装置,其中,网络接口包括用于促进以下操作的逻辑: 存储与在耦合至所述网络接口的代理处发起的第一写入事务的目的地相对应的目的地 标识符(ID); 确定与在耦合至所述网络接口的所述代理处发起的第二写入事务相对应的目的地ID是否不同于与所述第一写入事务相对应的目的地ID ;以及如果所述两个目的地ID不同, 在将所述第二写入事务发送到所述互连构造上以便被路由到其目的地的之前,从所述网络接口向所述互连构造上发送虚写入以便被路由到所述第一写入事务的目的地。
13.如权利要求10所述的装置,其中,所述装置包括片上系统(SoC)。
14.如权利要求10所述的装置,其中,所述装置包括耦合在每个代理和所述互连构造之间的对应的网络接口。
15.如权利要求10所述的装置,其中,网络接口包括: 出站队列; 出站仲裁器; 打包器块; 解包器块; 入站队列; 入站仲裁器; 入站队列;以及 寄存器,被配置成用于存储与最近的写入事务相对应的目的地标识符(ID)。
16.—种片上系统(SoC),包括: 多个知识产权(IP)块,每个块具有至少一个代理以及网络接口 ; 互连构造,包括通过所述网络接口耦合到所述多个IP块的多个路由器; 其中,所述网络接口包括用于按一方式促进所述代理之间的对等通信的逻辑,该方式确保对等代理之间的数据事务被排序为使得每个事务所访问的数据包括所述数据的最近拷贝。
17.如权利要求16所述的SoC,其中,所述互连构造是二维网格互连、多个环形互连、或三维互连。
18.如权利要求16所述的SoC,其中,所述互连构造和所述多个路由器包括片上网络。
19.如权利要求16所述的SoC,其中,所述IP块的至少已部分包括处理器内核块,所述处理器内核块包括处理器内核和一级或多级高速缓存。
20.如权利要求16所述的SoC,其中,所述网络接口包括用于执行以下操作的逻辑: 存储与在耦合至所述网络接口的代理处发起的第一写入事务的目的地相对应的目的地标识符(ID); 确定与在耦合至所述网络接口耦合的所述代理处发起的第二写入事务相对应的目的地ID是否不同于与所述第一写入事务相对应的目的地ID ;以及如果所述两个目的地ID不同, 在将所述第二写入事务发送到所述互连构造上以便被路由到其目的地的之前,从所述网络接口向所述互连构造上发送虚写入以便被路由到所述第一写入事务的目的地。
【文档编号】H04L12/28GK104081722SQ201280066986
【公开日】2014年10月1日 申请日期:2012年1月13日 优先权日:2012年1月13日
【发明者】B·李, L·赵, R·艾耶, R·G·伊利卡尔 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1