背景技术
硅上系统在复杂性方面呈现出不断增长的趋势,因为对实现新的特征和改进现有功能有不断增长的需要。这可通过增加部件可集成到集成电路中的部件的密度来实现。与此同时电路工作的时钟速度也趋于增加。与部件的增加的密度相结合的较高时钟速度已经减少了在相同的时钟域内能够同时操作的区域。这就产生了对模块化处理方法的需要。根据这样一种处理方法,处理系统包括多个相对独立的、复杂的模块。在传统的处理系统中,系统模块通常借助总线彼此进行通信。然而随着模块数量的增加,这种通信方式由于下面的原因而不再是实用的。一方面太大数量的模块形成太高的总线负载。另一方面,总线形成了一个通信瓶颈,因为它只允许一个设备向总线发送数据。通信网络形成了一个克服这些缺点的有效方式。
芯片上网络(NoC)作为对高复杂芯片中的互连问题的解决方案近来已经引起了极大注意。原因是双重的。首先,NoC解决了新的深亚微技术中的电子问题,因为它们构造和管理全局布线。与此同时它们共享线路,从而降低了它们的数量并增加了它们的利用率。NoC也可以是能量高效和可靠的并且与总线相比是可扩展的。其次,NoC还可以从通信去耦计算,这在管理十亿晶体管(billion-transistor)芯片的设计中是必须的。NoC实现了这种去耦,因为它们传统上是使用协议栈进行设计的,所述协议栈提供了明确定义的从服务实现方式分离通信服务应用的接口。
然而,当设计芯片上系统时使用用于进行芯片上通信的网络,增加了必须考虑的新问题的数量。这是因为,与通信模块是直接相连的现有的芯片上互连(例如,总线、开关、或点对点布线)相比,在NoC中,模块是通过网络节点远程通信的。结果,互连仲裁从集中式变为分布式,并且由知识产权块(IP)或网络来处理类似混乱的事务、较高的等待时间、和端对端流控制的问题。
这些主题的大多数在局域网和广域网(计算机网络)领域中一直是研究的对象并且作为并行机器互连网络的互连。二者都是与芯片上网络系统非常相关的,并且这些领域中的许多结果也可应用在芯片上。然而,NoC的前提是不同于芯片外网络,并且因此,必须对大多数网络设计选择进行再评估。芯片上网络具有不同的性质(例如,紧密的链路同步)和约束(例如,较高的存储器成本),它们都导致不同的设计选择,并最终影响网络服务。
NoC与芯片外网络的不同之处主要在于它们的约束和同步。典型地,芯片上的资源限制比芯片外更严厉。存储(即,存储器)和计算资源相对更加昂贵,然而芯片上点对点链路的数量要比芯片外多。存储器是昂贵的,因为通常用途的芯片上存储器,例如RAM占用了较大的区域。将存储器分布在相对小尺寸的网络部件中的情况更糟糕,因为存储器中的架空区域将变成主要的。
对于芯片上网络,与芯片外网络相比,计算也是以非常高的成本进行的。芯片外网络接口一般包含专用处理器,用于实现直到网络层甚或更高层的协议栈,以从通信处理中减轻主处理器的负担。在网络接口中包括专用处理器在芯片上是行不通的,因为网络接口将变得与将连接至网络的I P可比或大于将连接至网络的IP。此外,在IP本身上运行协议栈也可能是行不通的,因为通常这些IP只具有一项专用的功能,并且不具有运行网络协议栈的能力。
芯片上用于连接网络部件的线路和管脚的数量比芯片外大一个数量级。如果除了NoC通信外,它们不大规模的用于其它目的,则它们允许广泛的点对点互连(例如,300位链路)。这在芯片外是不可能的,其中它的链路相对较窄:8-16位。
芯片上布线相对于芯片外也相对较短,从而允许比芯片外紧密得多的同步。这允许减小路由器中的缓冲器空间,因为能够以较小的粒度进行通信。在当前的半导体技术中,线路是快速和可靠的,这允许更简单的连接层协议(例如,不需要纠错,或重新传输)。这也对存储器和计算资源的缺乏进行了补偿。
可靠通信:紧密的芯片上资源约束的结果为网络部件(即,路由器和网络接口)必须是非常简单以最小化计算和存储器需求。幸运的是,芯片上布线提供了可靠的通信介质,其能帮助避免芯片外网络为了提供可靠通信所引起的相当大的开销。数据完整性可以非常低的成本提供在数据链路层中。然而,数据丢失还取决于网络架构,因为在大多数计算机网络中,当在网络中发生了拥塞,则数据被简单地丢弃。
死锁:计算机网络拓扑学一般具有不规则(可能是动态的)结构,其能引入缓冲循环。死锁也能够被避免,例如通过在拓扑或路由中引入约束。胖树(fat-tree)拓扑已经被考虑用于NoC,其中通过在缓冲器溢出的情况下很快恢复网络中的数据包而避免死锁。基于区块的用于系统设计的处理方案使用网状或环状网络拓扑,其中可使用例如转向模型(turn-model)路由算法来避免死锁。死锁主要是由缓冲器中的循环引起的。为了避免死锁,路由必须是不受循环约束,因为在获取可靠性通信方面它具有较低的成本。死锁的第二个原因是事务的原子链。其原因是虽然模块被锁定了,但可用原子事务链之外的事务填满存储事务的队列,从而阻断了对链中事务的访问以到达锁定模块。如果必须实现原子事务链(以与允许该过程的处理器兼容,例如MIPS),则网络节点应该能够对原子链中的事务进行过滤。
数据排序:在网络中,由于在网络节点中进行的重新排序,从数据源发送至目的地的数据在沿着不同的路由或在丢弃之后重新传输之后到达时可能是无序的。对于芯片外网络,无序数据传输是典型的。然而,对于没有数据丢弃的NoC来说,可迫使数据在数据源和目的地(确定性的路由)沿着相同的路径,而没有重新排序。该有序数据传输需要较少的缓冲器空间,并且不再需要重新排序模块。
网络流量控制和缓冲策略:网络流量控制和缓冲策略对网络中存储器的利用率具有直接的影响。蠕虫洞路由在路由器中(每个队列)只需要一个闪存(flit buffer),然而存储转发和虚拟直通路由至少需要容纳一个数据包的缓冲器空间。因此,在芯片上,蠕虫洞路由可优于虚拟直通或存储转发路由。类似的,输入排队对于虚拟输出排队或输出排队缓冲策略二者之一可以是较低的存储器成本,因为它具有较少的队列。专用(较低成本)FIFO存储器结构也能够使虚拟直通路由或虚拟输出排队的芯片上应用获得较好的性能。然而,同时使用虚拟直通路由和虚拟输出排队仍然是成本太高。
时间相关保证:芯片外网络典型地使用数据包交换并提供尽力服务。可在每个网络节点处发生连接,从而很难提供等待时间保证。仍然可使用基于速率交换或基于最终期限的数据包交换的方案来提供吞吐量保证,但是具有较高的缓冲成本。提供这样的时间相关保证的可替换方案是使用时分多路存取(TDMA)电路,其中每个电路专用于一个网络连接。电路以相对低的存储器和计算成本提供保证。当网络架构允许尽力通信使用任何留下的得到保证的带宽时,网络资源利用率就提高了。
当与例如总线或开关的直接互连相比较时,引入作为芯片上互连的网络根本上改变了通信。这是因为网络的多跳性质,其中通信模块不是直接连接的,而是被一个或多个网络节点分开的。这与普遍流行的现有互连(即,总线)正好相反,在现有互连中模块是直接连接的。该变化的蕴含在于仲裁(其必须从集中式变化至分布式)中,并且在于通信属性(例如,排序或流量控制)中。
下面将概述NoC和总线的差别。我们主要将总线称作直接互连,因为目前它们是最常使用的芯片上互连。多数总线特性还支持其他直接互连(例如,开关)。多级总线是总线和NoC之间的混合。为了我们的目的,根据电桥的功能性,多级总线既象单总线又象NoC。总线的程序设计模型典型的由加载和存储操作构成,这些操作被实现为一系列的简单总线事务。总线接口典型具有用于命令、地址、写数据和读数据的专用线路组。总线由多个IP共享。因此,在使用它之前,IP必须经历一个仲裁阶段,其中它们请求访问总线,以及块直到将总线授予它们。
总线事务涉及请求和可能的响应。发出请求的模块被称作主机,服务请求的那些模块称作从属机。如果对于请求-响应对存在单一的仲裁,则称作总线是非分割的。在该情况下,即使该过程花费较长的时间,总线保持分配给事务的主机直到响应被传输。可选择地,在分开的总线中,当请求允许从不同的主机初始化交易之后,总线被释放。然而,必须对响应执行新的仲裁使得从属机能够访问总线。
对于分割的和非分割的总线,通信方都是对事务的状况进行直接和立刻的访问。相反,网络事务是一种从源头处的输出缓冲器至目的地处的输入缓冲器的单向传送,其用于在目的地处产生某些操作,它的出现在源头处是不可视的。网络事务的效果是仅通过附加的事务才能够观察到。请求-响应型操作仍然是可能的,但需要至少两个不同的网络事务。因此,NoC中的总线类事务本质上将是分割事务。
事务排序:传统地,在总线上所有事务都被排序(参看外围VCI,AMBA,或CoreConnect PLB和OPB)。其成本可以很低,因为通信方之间的直接链路的互连不会重新排序数据。然而,在分割式总线中,当从属机以不同的速度响应时,在单主机上进行事务的全部排序可能仍然会引起性能损失。为了解决该问题,近来对总线协议的扩展允许在连接线路上执行事务。在连接线路内进行事务的排序仍然是保留的,但在线路之间没有排序约束(例如,OCP或基本VCI)。一些总线协议允许在它们的高级模式(例如,高级VCI)中进行每条连接的无序响应,但请求和响应会以与发送时相同的顺序到达目的地。
在NoC中,排序变得较弱。由于网络的分布性质和全局排序所需的集中式仲裁请求之间的冲突,只能够以非常高的成本提供全局排序。甚至源头-目的地之间的局部排序也可能是昂贵的。如果数据是通过多个路由传输的,则它们达到时可以是无序的。在这种情况下,为了仍然获得有序传送,数据必须标注序列号并且在发送之前在目的地处重新排序。通信网络包括多个部分连接的节点。来自一个模块的消息被一个节点改道至一个或多个其它节点。为此,所述消息包进一步括表示网络内的寻址模块的位置的第一信息。所述消息可进一步包括表示模块内的特定位置的第二信息,例如存储器或寄存器地址。第二信息可激活寻址模块中的一个特定响应。
事务的原子链:事务的原子链是由在单一从属机上所排他地执行的由单个主机初始化的事务序列。即,当所述链中的第一事务要求了它时,拒绝其它主机访问那个从属机。该机制可广泛的用于实现主机模块之间的同步机制(例如,信号机)。在总线上,可容易地实现原子操作,因为中央判优器将(a)锁定由请求原子链的主机专用的总线,或(b)知道未获得对锁定的从属机的访问。在前者的情况下,锁定资源的时间较短,因为当主机已经有权访问总线时,它能够快速执行链中的所有事务(对于链中随后的事务不需要仲裁延迟)。因此,可在短时间内再次开启锁定的从属机和总线。该处理方案可用于AMBA和CoreConnect。在后者的情况下,总线未被锁定,并且仍然能够由其他模块使用,然而是以从属机的较长锁定时间为代价的。该处理方案可用于VCI和OCP。
在仲裁是分布式的NoC中,主机不知道从属机被锁定。因此,用于锁定的从属机的事务仍可被初始化,尽管所述所定的从属机不能接受它们。因此,为了防止死锁,原子链中的这些其他事务必须能够绕过它们而被服务。此外,锁定模块的时间大大长于NoC的情况,因为每次事务需要较高的等待时间。
介质仲裁:总线和NoC之间的一个重要差别在于介质仲裁方案。在总线中,主机模块请求访问互连,并且判优器立即准许对整个互连进行访问。仲裁是集中式的,因为只有一个判优器部件,并且作为所有请求以及互连的状态是全局的,因而对于判优器是可见的。此外,当给出准许时,从源头到目的地的完整路径被独占地保留。在非分割总线中,当初始化事务时,发生一次仲裁。结果,准许总线进行请求和响应。在分割总线中,请求和响应被分开地仲裁。
在NoC中仲裁也是必需的,因为它是共享的互连。然而,与总线相反,仲裁是分布式的,因为它将在每个路由器中执行,并且仅基于本地信息。通信资源(链路、缓冲器)的仲裁随着请求或响应的发展被逐渐增加地执行。
目的地名称和路由:对于总线,在互连上广播命令、地址和数据。它们到达每个目的地,其中一个基于广播的地址启动,并执行请求的命令。这是可能的,因为所有模块都被直接连接至相同的总线。在NoC中,不能向所有目的地广播信息,因为必须将它拷贝至所有路由器和网络接口。这将使网络充满数据。最好在源头对地址进行解码以找出到达目的地模块的路由。因此事务地址将具有两个部分:(a)目的地识别符,和(b)目的地的内部地址。
等待时间:事务等待时间是由两个因素引起的:(a)对总线的访问时间,其是直到总线被准许的时间,和(b)由互连引入的用于传送数据的等待时间。对于仲裁是集中式的总线来说,访问时间与连接至总线的主机数量成比例。传送等待时间本身典型地是恒定的并且相对较快,因为模块是直接链路的。然而,传送速度受总线速度的限制,总线速度相对较低。
在NoC中,在每个路由器处为后面的链路执行仲裁。每个路由器的访问时间较小。端到端访问时间和传输时间与主机和从属机之间的跳数成比例增加。然而,网络链路是单向的和点对点的,并且因此能够以比总线高的频率运行,由此降低了等待时间。根据预期的等待时间,使用总线或网络是连接至互连的模块数量(其影响访问时间)、互连的速度和网络拓扑之间的平衡。
数据格式:在多数现代总线接口中,数据格式是通过用于事务类型、地址、写数据、读数据、和确认/错误(例如,VCI,OCP,AMBA,或CoreConnect)的分开的布线组定义的。这用于管道事务。例如,与发送读取事务的地址并发地可发送先前的写事务的数据且能够接收更早的读取事务的数据。此外,具有专用的布线组简化了事务解码;不需要在通过一组公共布线上发送的不同种类的数据之间进行选择的机制。在网络内部,通常在不同种类的数据之间不存在差别。数据被统一对待,并从一个路由器传送给另一个路由器。这可被实现以最小化路由器中的控制开销和缓冲。如果对于上述组中的每一个将使用单独的布线,则将需要分开的路由、调度和排队,从而增加了路由器的成本。
另外,在协议栈中的每个层处的网络中,必须与数据一起提供控制信息(例如,数据包类型、网络地址或数据包大小)。该控制信息被组织为数据周围的包封。即,首先发送标题,其后发送实际数据(有效载荷),接着可能是尾记录。可对相同的数据提供多个这样的包封,每个包封对于网络协议栈中的每个层承载有相应的控制信息。
缓冲和流量控制:主机的缓冲数据(输出缓冲)被用于总线和NoC,以从通信去耦计算。然而,对于NoC,也需要输出缓冲来整理数据,其包括:(a)(任选地)将输出数据分割成由网络传输的较小的数据包,和(b)将网络的控制信息加在数据周围(数据包标题)。为了避免输出缓冲器溢出,主机一定不会开始产生比当前可用空间多的事务。类似于输出缓冲,输入缓冲也可用于从通信去耦计算。在NoC中,也需要输入缓冲来整理数据。
另外,用于输入缓冲器的流量控制对于总线和NoC是不同的。对于总线,源头和目的地被直接链接,并且因此目的地可直接向不能接受数据的源头发信号。甚至该信息对于判优器也是可用的,使得不将总线准许给用于试图写满整个缓冲器的事务。
然而,在NoC中,事务的目的地不能直接向其输入缓冲器是满的源头发送信号。因此,在目的地的缓冲器被填满之后,可能从多个源头启动至目的地的事务。如果输入缓冲器是满的,则另外进来的事务不会被接受,并存储在网络中。然而,该处理方案可容易地导致网络拥塞,因为数据最后可沿路被存储给源头,从而阻止了其间的链接。
为了避免输入缓冲器溢出,可与端对端的流量控制一起使用连接。在主机和一个或多个从属机之间建立的连接处,缓冲器空间被分配在从属机的网络接口处,并且主机的网络结构被指定为用于反映从属机处的缓冲数量的信用。当主机具有足够的用于目的地(多个)从属机的信用时,主机可只发送数据。当从属机消耗数据时,它们将信用准许给主机。
具体实施方式
下面的实施例涉及芯片上的系统,即相同芯片上的多个模块通过某种互连彼此通信。互连被具体化为芯片上的网络NOC。芯片上的网络可包括网络中的布线、总线、时分多路复用、交换机和/或路由器。在所述网络的传输层,模块之间的通信是在连接上执行的。连接被看作是第一模块和至少一个第二模块之间的一组通道,每个通道都具有一组连接属性。对于第一模块和单独第二模块之间的连接,所述连接包括两个通道,即一个是从第一模块到第二模块,也就是请求通道,第二个是从第二模块至第一模块,也就是响应通道。请求通道被保留用于从第一至第二模块传送数据和信息,而响应通道被保留用于从第二至第一模块发送数据和信息。然而,如果所述连接包括一个第一模块和N个第二模块,则提供有2*N个通道。连接属性可包括排序(数据按顺序传输)、流量控制(保留远程缓冲器用于连接,并且只有在保证空间对于产生的数据是可用时才允许数据发生器发送数据)、吞吐量(保证吞吐量下限)、等待时间(保证等待时间的上限)、丢失率(数据的丢弃)、传送终止、事务完成、数据正确性、优先权或数据递送。
图1表示根据第一实施例的芯片上的系统。该系统包括一主机模块M、两个从属模块S1、S2。每个模块分别通过网络接口NI连接至网络N。网络接口NI被用作主机和从属模块M、S1、S2与网络N之间的接口。网络接口NI被配置用于管理各个模块和网络N的通信,使得模块能够执行它们专有的操作而不必处理同所述网络或其他模块的通信。网络接口NI可在网络上彼此之间发送类似读rd和写wr的请求。
图2表示根据第二实施例的芯片上的系统。该系统包括两个模块,即起始器I和目标T、路由器网络RN以及所述模块和路由器网络RN之间的两个网络接口ANIP,PNIP。网络接口提供两个网络接口端口NIP(一个请求端口和一个响应端口),通过这两个端口所述模块与路由器网络RN通信或通过路由器网络RN与其它模块通信。网络接口具有一个或多个连接模块的端口。可利用两种不同类型的端口,即被连接至主机的主动网络接口接口ANIP和被连接至从属机的被动网络接口端口PNIP。起始器模块I和目标模块T之间的通信是基于请求-响应事务进行的,其中主机,即起始器模块I通过设置可能具有某些数据或要求的连接属性的请求来初始事务。通过主动网络接口端口ANIP、网络RN和被动网络接口端口PNIP将请求REQ递送给从属机,即目标模块T。通过目标模块T执行请求并且如果需要或受到请求,返回作为响应RESP的数据。该响应RESP可包括主机或起始器模块I的数据和/或确认。
图1和2中所述的模块可以是所谓的知识产权块IP(计算元件、存储器或者可内部包含互连模块的子系统),其在所述网络接口NI处与网络相互作用。NI提供了NI端口NIP,通过它可访问通信服务。NI可具有连接一个或多个IP的若干个NIP。类似地,IP可连接至一个以上的NI和NIP。
在连接上的网络接口在网络上执行通信。引入连接以说明和识别具有不同属性的通信,例如保证输出量、有限制的等待时间和抖动,排序递送或流量控制。例如,为了区别和独立地保证1Mbs和25Mbs的通信,可使用两个连接。利用可能具有不同性质的多个连接来连接两个NIP。如此处所定义的连接类似于OCP和VCI的线程和连接的概念。其中在OCP和VCI中,连接只被用于缓和事务排序,我们只从排序性质归纳包括在其间的缓冲和流量控制、保证的吞吐量和每个连接的受限制等待时间的结构。
图3表示根据第三实施例的芯片上的系统。第三实施例的系统是基于根据第二实施例的系统并且另外包括通信管理器CM和资源管理器RM。这里,通信管理器CM和资源管理器RM被布置在路由器网络RN中,但它们也可布置在一个或一些网络接口NI中。
如果起始器模块I需要从/至目标模块T读或写数据,则发出与目标模块T进行连接的请求REQ。该请求REQ被发送给与所述起始器I关联的网络接口的主动网络接口端口ANIP的请求端口。该请求可包含关于至少一个目标模块的标识,即目标ID的信息,以及关于起始器模块I和目标模块T之间的连接属性的信息。两个模块之间的连接属性可取决于方向,即请求通道的属性可不同于响应通道的属性。
当从主动网络接口端口ANIP接收到请求REQ之后,通信管理器CM从资源管理器RM请求两个模块之间具有一组属性的连接,也就是当请求建立连接时,将请求连接属性,例如吞吐量、流量控制。资源管理器RM分配所需的资源并且询问这种基于这些资源的连接是否是可能的。所述属性要求实现所述资源(例如,吞吐量需要时隙保留,流量控制需要缓冲)。因此,需要某些属性的连接被开启或者不依赖于这些资源的可用性。连接属性的可用性相当于网络为在连接建立请求中识别的连接属性满足或提供资源的能力。可以两种方式来执行资源的分配,第一,资源管理器RM可包含具有通道和连接的所有不同属性的条目的属性表。可选择地,可提供一个包含所有不同网络属性的中央属性表,即所述表可以是中央的或分布的。
在询问可用的连接属性之后,资源管理器RM保留可用的连接,即所需的资源,并且对通信管理器CM做出响应,哪个连接是可用的,即它的连接属性或其需要的资源对于期望的通道是可用的。可选择地,通信管理器CM可接受具有可用属性的连接,但另一方面如果它的可用的属性或其资源不是可接受的,则通信管理器CM也可以拒绝提供的连接。如果通信管理器CM拒绝提供的连接,则它向起始器模块I发送一个错误信息(即,通过ANIP)并请求资源模块RM释放所述保留的连接。否则,资源管理器RM设立连接属性,并在所述起始器和目标模块之间接受的属性建立连接。在所述两个模块I、T执行了由起始器模块请求的事务之后,通信管理器CM向所述资源管理器RM发出请求以重设连接或连接属性。
根据本发明实施例的连接在使用之前必须按照期望的属性被首先创建或建立。这可在网络中产生资源预定(例如,缓冲器空间,或每时间单元所使用的链接的百分比)。如果请求的资源不可用,则网络RN将拒绝请求。在使用之后,关闭连接,这将导致释放由那个连接占用的资源。
为了更灵活地配置连接,并且因此获得每连接更好的资源分配,可独立地配置连接的输出部分和返回部分。例如,可在主机和从属机处的NIP中分配不同数量的缓冲空间,或者可为请求和响应保留不同的带宽。
用于输出和返回部分的不同属性的应用的例子如下所述。在某些情况下保障吞吐量连接可超量预定资源。例如,当ANIP打开保障吞吐量读取连接时,它必须为读命令消息和读数据消息预定时隙。二者之比可以非常大(例如,1∶100),这将导致较大数量的时隙或带宽,其对于读命令消息是浪费的。
为了解决该问题,连接的请求和响应部分的连接属性可独立地配置用于吞吐量、等待时间和抖动的全部。因此,连接的请求部分的连接属性可能是最尽力的,而响应的连接属性可具有保障吞吐量(或者反之亦然)。对于上述的例子,我们能使用最尽力的读消息,和保障吞吐量读数据消息。在该情况下不能提供全局保证,但是整体吞吐量比仅使用最尽力通信量的情况更高和更稳定。
在其上对大块数据执行只读命令的连接可被看作是另一个例子。在这种情况下,如果执行流量控制,与从属机S、T相关的网络接口PNIP将需要较小的缓冲器,而与主机M,I相关联的网络接口ANIP将需要较大的缓冲器。在一可选择实施例中,需要保障吞吐量。典型地,通过从时隙表预定固定大小的时隙来提供保障吞吐量,其中带宽值与每个时隙相关联,从而如果分配了更多的时隙,则带宽值被加起来。在这样一个方案中,将有能够分配的最小带宽。因此,只对读取命令分配带宽将是带宽的无效应用,因为读命令将只使用一小部分带宽。返回数据响应将或许使用足够的带宽以证明低速预定是正确的。为了防止这样一种无效带宽使用,将连接的请求部分建立为最尽力(也就是没有吞吐量保证)和只用于响应部分的保障吞吐量。因此,只为合理负载的网络提供整体保证,这样一种连接将仍能执行良好。对于具有低负载的网络,该解决方案可能更快,因为能够更快速地传送最尽力的数据(例如,不需要等待分配的带宽时隙)。
根据请求的服务,处理连接的时间(即,创建、关闭、修改服务)可是短的(例如,创建/关闭未排序的、丢失的、最尽力的连接)或重要的(例如,创建/关闭组播的保障吞吐量连接)。因此,假定当应用请求变化时很少创建、关闭或修改连接,与例如重新配置点相符。
使用事务在连接上发生通信,其包括请求和可能的响应。请求对操作编码(例如,读、写、刷新、测试和设置、空操赘令)并且可能承载输出数据(例如,用于写命令)。响应返回数据作为命令(例如,读)的结果和/或确认。连接至少包括两个NIP。在连接上进行的事务总是在一个且一个NIP上开始,称作连接的主动NIP(ANIP)。连接的所有其它NIP称作被动NIP(PNIP)。
在连接上一次可能有多个有效事务,但比分割总线更普遍。即,可在连接的ANIP处开始事务,而较早事务的响应是悬而未决的。如果连接具有多个从属机,则可朝不同的从属机起始多个事务。也可在对于请求和响应在单个主机-从属机对之间管道式输送事务。原则上,如果从属机允许进行管道式输送,则也可在从属机内管道式输送事务。
可从下列消息来构成事务:
-由ANIP发送命令消息(CMD),并且其描述了在连接至PNIP的从属机处执行的动作。读、写、测试和设置、以及刷新是命令的例子。命令是事务中必须做的仅有的消息。对于只允许不带有参数的单一命令(例如,固定大小的缺少地址的写命令)的NIP,我们假定命令消息仍然存在,即使它是暗示的(例如,由IP不明确发送的)。
-按照要求执行数据的命令(例如,写、组播和测试并设置)由ANIP发送输出数据消息(OUTDATA)。
-作为产生数据的事务执行(例如,写和测试设置)的结果,由PNIP发送返回数据消息(RETDATA)。
-完成确认消息(RETSTAT)是任选的消息,当完成了一项命令时由PNIP返回该消息。可发信号通知一个成功的完成或一个错误。对于包括RETDATA和RETSTAT的事务,为了效率可将两个消息结合在一个消息中。然而,概念上,它们都存在:RETSTAT用于发信号通知数据的出现或错误,RETDATA用于承载数据。在基于总线的接口中,RETDATA和RETSTAT典型地作为两个单独的信号存在。
包括事务的消息被分割成输出消息,即CMD和OUTDATA,和响应消息,即RETDATA、RETSTAT。在事务内,CMD在所有其它消息之前,如果出现RETDATA,则它在RETSTAT之前。这些规则适用于主机和ANIP之间,以及PNIP和从属机之间。
连接可被分类如下:
-简单连接为一个ANIP和一个PNIP之间的连接。
-小范围广播连接为一个ANIP和一个或多个PNIP之间的连接,其中ANIP起始的每个事务确切的都是由一个PNIP执行的。小范围广播连接的例子,其中ANIP在映射到两个存储器模块的地址空间上执行事务。根据事务地址,仅在这两个存储器的一个且一个上执行事务。
-组播连接是一个ANIP和一个或多个PNIP之间的连接,其中发送的消息被复制并且每个PNIP接收那些消息的一个拷贝。在组播连接中,当前不允许消息返回消息,它们产生的通信量较大(即,每个目的地一个响应)。它还可增加了ANIP的复杂性,因为来自PNIP的个别响应必须合并成ANIP的单一响应。这要求缓冲器空间和/或附加计算合并自身。
能够为连接配置的连接属性如下:保障的消息完整性,保障的事务完成,各种事务排序,保障吞吐量,有限制的等待时间和抖动,和连接流量控制。
数据完整性意味着在传输期间消息的内容未发生变化(意外或非意外)。我们假定数据完整性在我们的网络中的较低层处即在链路层处已经解决了,因为在当前的芯片上技术中,可在链路中未破坏地传输数据。因此,我们的网络接口总是保证在目的地处未破坏地传输消息。
当由从属机执行了没有响应的事务(例如,公布式写入)时,将它说成是完成的。因为没有响应消息发送给主机,所以不能给出关于事务完成情况的保证。
当从ANIP接收RETSTAT消息时,带有响应的事务(例如确认的写入)被说成是完成的。回想一下当接收数据作为响应(RETDATA)时,RETSTAT(可能是暗示的)也被接收以证实数据。事务可被成功的执行,在该情况下成功的RETSTAT被返回,在从属机处的执行中失败,然后返回执行错误RETSTAT,或者在没有流量控制的连接中由于缓冲器溢出而失败,然后它报告溢出错误。我们假定当从属机接受请求响应的CMD时,从属机总是产生响应。
在网络中,路由器并不丢弃数据,因此,在NI处总是保证递送消息。对于具有流量控制的连接,NI也不会丢弃数据。因此,在这种情况下自动保证了对IP的消息递送以及事务完成。
然而,如果没有流量控制,则一旦缓冲器溢出可能会在网络接口处丢弃消息。CMD,OUTDATA和RETDATA的全部在NI处都可能会丢弃。为了保证事务完成,不允许丢弃RETSTAT。因此,在ANIP中,必须提供足够的缓冲器空间以容纳用于所有未完成的事务的RETSTAT消息。这可通过限制未完成事务的数量来实施。
现在说明在单一连接内的不同事务之间的排序请求。在不同的连接上,在传输层处并未定义事务的排序。
在连接中存在若干个点,其中可观察事务的顺序:(a)主机模块M、I将CMD消息呈现给ANIP的顺序,(B)通过PNIP将CMD递送给从属模块T、S的顺序,(C)从属模块T,S将响应呈现给PNIP的顺序,(D)由ANIP将响应递送给主机的顺序。注意不是所有的(B)、(C)和(D)都出现。此外,不存在关于从属机执行事务的顺序的假设;只有响应的顺序能被观察到。由从属机执行事务的顺序被看作是系统判决,而不是互连协议的一部分。
在ANIP和PNIP处,允许交错属于相同连接上的不同事务的输出消息。例如,可发布两个写命令,并且只在它们的数据之后发布。如果OUTDATA消息的顺序不同于CMD消息的顺序,则必须引入事务识别符以使OUTDATA与它们相应的CMD相关联。
可如下通过PNIP将输出消息递送给从属机(参见b):
-未排序,不对在PNIP处的不同事务的输出消息的递送施加排序。
-局部排序,其中必须按照发送它们的顺序递送事务(a),但在PNIP上不施加顺序。通过排序的数据传输或通过在PNIP重排输出消息来提供输出消息的局部排序递送。
-全局排序,其中必须按照发送它们的顺序跨越连接的所有PNIP来递送事务。对事务的输出部分进行全局排序的递送需要代价高的同步机制。
当按照与向从属机(b)递送CMD相同的顺序返回RETDATA和RETSTAT消息时,可通过从属机按照排列顺序向PNIP(c)递送事务响应消息,或者相反,按照未排列的顺序递送。当未对响应进行排序时,必须有识别响应所属的事务的机制。这通常是使用附属于消息的用于事务识别的标签(类似于VCI中的标签)来实现的。
可如下的通过ANIP将响应消息递送给主机(参见d):
-未排序,其对响应递送不施加顺序。而且此处,必须使用标签来将响应与其相应的CMD相关联。
-局部排序,其中必须按照主机将原始CMD呈现给ANIP的顺序来递送单个从属机的事务的RETDATA和RETSTAT消息。注意不需要对相同连接内的不同从属机向事务施加排序。
-全局排序,其中按照与原始CMD相同的顺序将连接中的所有响应递送给主机。当事务在连接上进行管道式递送时,响应的全局排序递送需要在ANIP重新排序。
上述排序之间的所有3*2*3=18种组合都是可能的。其中,我们定义和提供下面两种。无序连接为在事务的任何部分中假设都没有采取排序的连接。结果,必须对响应进行标注以便识别它们属于哪个事务。执行无序连接具有低成本,然而它们可能难于使用,并且引入了标记开销。
无序连接被定义为用于对从PNIP至从属机的输出消息、PNIP处的有序响应进行局部排序和用于在ANIP处对响应进行全局排序的连接。我们为输出部分选择局部排序,因为全局排序成本太高,并且很少使用。选择对响应进行排序以允许不进行标注的简单编程模型。在ANIP处进行全局排序可能是中等成本的,因为所有排序在ANIP中都是局部进行的。用户可以高的等待时间为代价,使用非管道式传输的确认的事务通过在PNIP处对输出和消息返回消息进行全局排序来模仿连接。
在网络中,可以按时分多次访问(TDMA)的方式为连接预定吞吐量,其中关于固定的时间帧将带宽分割成固定大小的时隙。当时隙被预订时,可保证带宽以及等待时间和抖动的限度。它们都是按照时隙的倍数进行定义的。
如早先所述的,网络保证将消息递送给NI。从NIP之一发送的消息在另一NIP处不是立即可见的,因为网络具有多跳性质。因此,网络上的握手只允许一次传输一条消息。这限制了连接上的吞吐量并且增加了事务的等待时间。为了解决该问题,并获得更好的网络利用率,消息必须以管道式传输。在该情况下,如果数据不是以与它到达时相同的速率在PNIP处消耗的,则要么必须引入流量控制以使发生器慢下来,要么由于用户NI处的缓冲器空间有限而可丢失数据。
可在连接的等级上引入端对端流量控制,其需要与连接相关联的缓冲器空间。端对端流量控制确保只有在NIP目的地缓冲器中存在足够的空间来容纳它们时才在网络上发送消息。
端对端流量是任选的(即,将在开启连接时进行请求)并且能够独立地对输出和返回路径进行配置。当没有提供流量控制时,消息在缓冲器溢出时丢弃。多策略丢弃消息是可能的,就如在芯片外网络中那样,可能的情形包括:(a)丢弃最旧的消息(牛奶策略),或者(b)丢弃最新的消息(红酒策略)。
流量控制的一个例子是基于信用的流量控制。信用与接收器NI处的空缓冲器空间相关联。发送者的信用随着数据的发送而降低。当PNIP向从属机递送数据时,给予发送者信用。当发送者的信用不足以发送一些数据,则发送器处的NI停止发送。
为了说明连接上的不同服务的需要,下面说明通信量的一些例子。视频处理流典型地要求无丢失的、具有保障吞吐量的有序视频流,但可能允许破坏的样本。这种流的一个连接将需要必须的吞吐量、有序的事务和流量控制。如果由主机产生视频流,则只需要写事务。在这样一种情况下,按照流量控制的连接,也不需要要求事务完整,因为消息绝不会被丢弃,并且写命令和其数据总是在目的地处进行递送的。数据完整性总是由我们的网络提供,即使它在该情况下是不需要的。
另一个例子是高速缓冲存储器更新,其要求未破坏的、无丢失的、低等待时间的数据传输,而排序和保证吞吐量不那么重要。在这样一种情况下,连接将不需要任何时间相关的保证,因为低等待时间,即使是优选的,也不是关键性的。甚至可通过最尽力的连接来获得低等待时间。连接将也需要流量控制和保障事务完成来确保无丢弃的事务。然而,不需要排序,因为对于高速缓冲存储器更新是不重要的,并且允许无序事务可减少响应时间。
定义一组从网络细节提炼的NoC服务。使用IP设计中的这些服务来去耦计算和通信。请求响应事务模型用于接近现有的芯片上互连协议。这使得当前IP向NoC的迁移变得容易。为了充分利用NoC性能,例如高带宽和事务并发,提供了连接定向通信。可按照不同的性质独立地配置连接。这些性质包括事务完成、各种事务排序、带宽下限、等待时间和抖动上限、以及流量控制。
提供这种网络芯片上NoC服务是基于服务的系统设计的前提,其可独立于NoC实现过程之外产生应用,使设计更加健壮,并且能够产生独立于架构的服务质量的策略。
在其它情形下,有不同类型的流量控制(例如,你绝不想丢失写命令,但不介意丢失读数据)。如果一个模块可进行读和写命令,则重要的是写事务总是成功(例如,当对中断的控制器写入时),但读事务并不重要,因为它们能进行重试,所以读事务的CMD不会丢弃并且从不执行读取,或者在执行了读取之后丢弃RETDATA。另一个例子是如果你知道要是它们被递送,写总是成功的,则请求流量控制的连接。在那样的情况下不需要确认。在没有流量控制的情况下,确认是必需的,从而使主机复杂化并引起另外的通信量。
在根据本发明的集成电路中,是否丢弃消息的判决不是对每个事务判决而是针对作为整体的连接的输出和返回部分进行。例如,可保证具有格式读+地址(或写+地址+数据)的所有输出消息是无丢失的,而对于所有返回消息(是否读数据、写确认)可丢弃数据包。
可按如下打开连接:
connid=open(
nofc/fc,
输出无序/局部/全局,
输出缓冲器大小,
返回无序/局部/全局,
返回缓冲器大小);
即,所有输出消息都具有一定的属性,并且所有返回消息具有一定的属性。其中fc表示流量控制,nofc表示没有流量控制。
NoC中的死锁的一个可选择解决方案是维护独立的虚拟网络(具有单独的缓冲器)用于请求和响应,所述方案考虑了连接至网络的模块是主机(初始请求和接收响应)或从属机(接收请求并发回响应)。
根据本发明的一个实施例,用于在包括多个模块的集成电路中交换消息的方法请求在两个模块之间具有特定属性的连接,判断具有所述属性的在所述两个模块之间的所述请求的连接是否是可能的,响应具有可利用的属性的所述连接,在所述两个模块之间建立具有所述属性的连接,并在所述两个模块之间执行事务。因此,可用连接可被接受,并且可重设所述连接的属性。
根据本发明的进一个实施例,网络具有第一模式,其中在得到保证的时间间隔内传输消息,和第二模式,其中根据可利用的资源尽可能快地传输消息,其中输出事务为读消息,请求第二模块向第一模块发送数据,其中返回事务为在该请求时由第二模块产生的数据,并且其中按照第二模式来传输输出事务,而按照第一模式传输返回事务。对于确认写事务,写命令和用于主机的输出数据使用得到保障吞吐量,并且最尽力使用来自从属机的确认。除了时间相关保证外,在上面的例子中,关于缓冲也存在区别。对于数据消息,潜在地存在分配有比用于命令和确认更多的缓冲。因此,对于读事务,用于返回部分的缓冲器将大于用于输出部分的缓冲器。对于确认的写缓冲器,输出部分较大,而用于确认的写缓冲器较小。
根据再一个实施例,能够为不同的通道分配不同的带宽。然而,也存在限制。时隙表被使用,其在时间窗中包括多个时隙。带宽被预订用于将这些时隙分配给连接。例如,如果使用了对于1μs的时间帧具有100个时隙的表,则每个时隙被分配1μs的1/100=10ns。如果网络每链路提供1Gb/s,则每时隙的带宽将是1Gbs的1/100=10Mb/s。因此,只能分配多倍的10Mb/s用于保障的吞吐业务量。对于产生长脉冲串的读命令,分配最小的带宽10Mb/s都可能是多的,因为它只使用10Mb/s的一小部分。然而,是由最尽力通信量而不是由其它保障吞吐量通信量来使用带宽。结果,不是所有需要保证的通信量都适合时隙表。一个可选择方案是使用更多的时隙,但这将增加路由器成本。因此,最尽力命令可以是较好的解决方案。
根据本发明的又一个实施例,在主机和两个从属机之间提供了连接,其中从主机至从属机对不同的通道指定了不同的属性。这些从属机之一是快速存储器,另一个是低速存储器。对连接主机和快速存储器的通道指定较高的吞吐量。
如上所述,NoC对于现有的芯片外网络和现有的芯片上互连具有不同的属性。结果,现有的协议和服务接口不能直接适用于NoC,而是必须考虑NoC的特征。例如,类似TCP/IP的协议设想网络是有丢失的,并且包括显著的复杂性以提供可靠的通信。因此,在NoC中是不适当的,其中我们假定在较低的级别中已经解决了数据传输可靠性。另一方面,现有的芯片上协议例如VCI、OCP、AMBA或CoreConnect也不能直接应用。例如,它们假定数据进行有序传输:如果从相同的主机起始两个请求,则它们将按照相同的顺序到达目的地。这不自动适用于NoC。在NoC接口中还需要特殊注意事务的原子链和端对端流量控制。
定义网络服务时的目的如下。首先,应尽可能地从网络内部提炼服务。这是处理从通信去耦计算的挑战的关键因素,其允许彼此独立地设计IP(计算部分)和互连(通信部分)。因此,服务被定位在OSI接口模型中的传输层处,其是独立于网络实现的第一层。其次,NoC接口应尽可能的接近总线接口。那么就可以没有破坏地引入NoC:通过较小的变化,可继续使用现有的IP、方法论和工具。结果,可类似于分割总线的接口使用请求-响应接口。第三,所述接口延伸了传统的总线接口以完全使用NoC的能力。例如,基于连接的通信不但缓和了排序约束(关于总线),而且能够实现新的通信属性,例如基于信用的端对端流量控制,或保障吞吐量。可对每个连接独立的设置所有这些属性。
应该注意上述的实施例仅仅是示意说明,而非限制本发明,在不脱离后附权利要求的范围的情况下,本领域技术人员将能够设计出许多可选择实施例。在权利要求中,置于括号中的任何附图标记不应构成限制权利要求。单词“包括”并不排除出现权利要求所列举之外的其他元素或步骤。要素前面的单词“一”并不排除出现多个这样的要素。在列举了若干个装置的设备权利要求中,这些装置中的若干个可由一个和相同项的硬件来实施。在相互不同的从属权利要求中叙述的某些措施——这样的纯粹事实并不表示不能有利的使用这些措施的结合。
此外,权利要求中的任何附图标记都不应构成限制权利要求的范围。