CN104320341B - 路由自适应异步2D‑Torus片上网络系统及其设计方法 - Google Patents
路由自适应异步2D‑Torus片上网络系统及其设计方法 Download PDFInfo
- Publication number
- CN104320341B CN104320341B CN201410571169.2A CN201410571169A CN104320341B CN 104320341 B CN104320341 B CN 104320341B CN 201410571169 A CN201410571169 A CN 201410571169A CN 104320341 B CN104320341 B CN 104320341B
- Authority
- CN
- China
- Prior art keywords
- data
- asynchronous
- node
- port
- module
- 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
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
一种路由自适应异步2D‑Torus片上网络及其设计方法,多个异步路由节点按照2D‑Torus拓扑结构和异步握手通信机制构建片上网络;每个异步路由节点具有东向、西向、南向、北向和本地端口共五个端口,每一端口均包括输入端、数据接收模块、数据解码模块、路由计算模块、交叉开关模块、数据仲裁模块、数据编码模块、数据发送模块和输出端;该方法包括:设计异步路由节点具有的各个端口的接口行为,并对异步路由节点内部的数据流向进行描述;对异步片上网络中传输数据的数据结构进行设计;利用异步有限状态机的方法设计端口中的模块;完成各个模块的硬件编程;构建异步路由节点;构建N×N的异步2D‑Torus片上网络。
Description
技术领域
本发明属于异步电路设计领域,具体涉及一种路由自适应异步2D-Torus(二维环状)片上网络及其设计方法。
背景技术
随着集成电路技术的飞速发展,系统规模越来越大,时钟频率越来越高。传统总线时钟和功耗方面的问题越来越难以解决。片上网络(Network on Chip,NoC)可以很好的解决这些问题,已逐渐成为片上多核的标准通信架构。目前大多数片上网络采用同步通信机制,网络节点间的通信采用单一时钟驱动。只有少量片上网络采用异步通信机制,网络节点间的通信由局部握手协议控制。对异步片上网络的研究相对落后于同步片上网络,主要是由于异步电路设计较为复杂,且缺少成熟的工具支持,不过仍然是集成电路设计里的一个重要的研究方向。将异步电路设计方法应用于大规模集成电路中会给现阶段的电路设计解决很多问题,尤其是功耗和电磁兼容性方面会有显著的提高。
目前,异步片上网络的拓扑结构主要利用最典型的2D-Mesh(二维网格)结构,该结构简单,易于实现,扩展性强。但是大规模电路中,节点比较多,这样节点间距离比较大,占用面积也比较大,功耗相对较高。
另外,由于异步电路设计较为复杂,因此传统的异步片上网络采用的都是确定性路由算法。确定性路由算法是一种静态路由算法,每个路由节点与其他路由节点间的通信在最初就是确定的,源地址和目的地址间只存在一条数据通道。确定性路由算法具有路由固定,响应迅速的特点,在低拥塞的片上网络环境中具有较优的性能。但是该类算法具有被动性和盲目性,只能通过预先对数据包进行分流传输,无法实时的根据拥塞状态,动态调整路由方向。因此,当网络发生拥塞时,可能会出现路由资源的浪费,而且会降低数据传输的效率,最终将导致路由性能的迅速下降。
发明内容
针对现有技术中存在的不足,本发明提供一种路由自适应异步2D-Torus片上网络及其设计方法。
本发明的技术方案:
一种路由自适应异步2D-Torus片上网络,包括:多个异步路由节点、挂载在不同的异步路由节点上的多种IP核;所述多个异步路由节点按照2D-Torus拓扑结构和异步握手通信机制构建片上网络;
所述异步路由节点具有东向、西向、南向、北向和本地端口共五个端口,其中本地端口 挂载所需的IP核,用于对从异步路由节点接收的数据进行相应的处理;东向、西向、南向、北向端口作为与相邻异步路由节点的连接端口,接收上游异步路由节点的数据帧,同时经过路由计算与数据仲裁,确定合适的输出方向端口,并通过该输出方向端口将数据传递给下游异步路由节点;
所述东向、西向、南向、北向和本地端口中每一端口,包括输入端、数据接收模块、数据解码模块、路由计算模块、交叉开关模块、数据仲裁模块、数据编码模块、数据发送模块和输出端;
上游异步路由节点某端口的数据帧从当前异步路由节点某相应端口的输入端进来后,依次经过数据接收模块、数据解码模块、路由计算模块、交叉开关模块、数据仲裁模块、数据编码模块和数据发送模块,从当前异步路由节点该端口的输出端输出至下游异步路由节点的某相应端口;
所述数据接收模块,用于从输入端接收数据并传送至数据解码模块;
所述数据解码模块,用于对从数据接收模块接收的数据进行解码,并把解码后的数据发送至路由计算模块;
所述路由计算模块,用于利用基于阻塞感知的异步电路自适应路由算法,确定从数据解码模块接收的解码后的数据要发送的输出方向端口;
所述交叉开关模块,用于将解码后的数据发送到路由计算模块确定的端口的数据仲裁模块;
所述数据仲裁模块,用于接收除本端口以外的其他端口的交叉开关模块发送来的数据;对所接收的数据进行优先级仲裁;按照仲裁的优先级顺序,将数据发送至数据编码模块;
所述数据编码模块,用于接收数据仲裁模块发送的数据,并对接收的数据进行编码,将编码后的数据发送至数据发送模块;
所述数据发送模块,用于将从数据编码模块接收的数据发送至输出端。
所述的路由自适应异步2D-Torus片上网络的设计方法,采用异步电路设计方法学对该片上网络进行设计,包括如下步骤:
一、利用Petri网异步电路图形表示法设计异步路由节点具有的各个端口的接口行为,并对异步路由节点内部的数据流向进行描述;
二、对异步片上网络中传输数据的数据结构进行设计;
三、利用异步有限状态机的方法设计端口中的模块,得到异步有限状态机的状态转换图;所述端口中的模块,包括:数据接收模块、数据解码模块、路由计算模块、交叉开关模块、数据仲裁模块、数据编码模块和数据发送模块;
四、根据异步有限状态机的状态转换图,利用System Verilog语言完成各个模块的硬件编程;
五、利用步骤四完成的各个模块构建异步路由节点;
六、利用N×N个异步路由节点按照2D-Torus拓扑结构和异步握手通信机制构建N×N的异步2D-Torus片上网络;
所述的路由计算模块利用基于阻塞感知的异步电路自适应路由算法,确定从数据解码模块接收的解码后的数据要发送的输出方向端口,所述基于阻塞感知的异步电路自适应路由算法的原理为:不再被动的执行路由策略,而是通过对路由环境中阻塞信息的监控,结合“最短路径策略”,动态的调整下一跳的路由节点,尽可能规避阻塞严重或出现故障的路由节点,减小路由延迟,即在当前异步路由节点进行路由计算前,检测路由方向上的局部阻塞信号,优先选择状态为空闲的异步路由节点。
由于本异步片上网络采用的是2D-Torus拓扑结构,因此在路由过程中,有可能会出现等距离的情况,即目旳节点分别从北向和南向距离当前节点的长度相同,或者目的节点分别从东向和西向距离当前节点的长度相同。基于阻塞感知的异步电路自适应路由算法中,等距离情况下,优先判断为东/北方向的路径,即,目的节点分别从东向和西向距离当前节点的长度相同时,优先判断为东向输出路径,目的节点分别从北向和南向距离当前节点的长度相同时,优先判断为北向输出路径。
基于阻塞感知的异步电路自适应路由算法如下:
设定源节点为S(x_s,y_s),目的节点为D(x_dst,y_dst),当前节点为C(x,y)。路由开始时,当前节点即为源节点,即C(x,y)=S(x_s,y_s);同时每个异步路由节点具有8个方位,分别为东、南、西、北、东北、东南、西北和西南;同时设定该异步2D-Torus片上网络的(0,0)节点位于该片上网络的左下角。采用full信号作为传输方向的局部阻塞信号,该信号为0时代表路由节点某一路由方向不阻塞,为1时代表路由节点的某一路由方向阻塞;所述full信号,包括:full_e信号、full_w信号、full_s信号和full_n信号;所述full_e信号代表东向输出路径的阻塞状态,所述full_w信号代表西向输出路径的阻塞状态,full_s信号代表南向输出路径的阻塞状态,full_n信号代表北向输出路径的阻塞状态;对于所述的N×N的异步2D-Torus片上网络,则有:
A如果目的节点在当前节点的东、南、西、北四个方向,则不需要对数据输出路径的阻塞情况进行判断,包括如下几种情况:
(1)若y_dst=y,x_dst=x,即目的节点为当前节点,则当前节点将数据发送到该当前节点本地端口的IP核;
(2)若y_dst=y,且是否x_dst=(x-i)mod(N),其中i=1,2,…,t,t为整数,且是,即目的节点在当前节点的西向,则当前节点将数据发送到西向端口进行输出,否,即目的节 点在当前节点的东向,则当前节点将数据发送到东向端口进行输出;
(3)若x_dst=x,且是否y_dst=(y-i)mod(N),其中i=1,2,…,t,t为整数,且是,即目的节点在当前节点的南向,则当前节点将数据发送到南向端口进行输出;否,即目的节点在当前节点的北向,则当前节点将数据发送到北向端口进行输出;
B如果目的节点在当前节点的东北、东南、西北和西南四个方向,则需要对数据输出路径的阻塞情况进行判断,且以P代表东、西两个方向之一,以Q代表南、北两个方向之一,包括如下几种情况:1)若当前节点的P、Q两个方向的数据输出路径均为无阻塞,则结合该当前节点上一时刻路由的输出情况,采取轮转策略,决定下一跳路由节点,例如,若上一次数据帧输出方向为P,则此次选择Q方向输出,若上一次数据帧的输出方向为Q,则此次选择P方向输出;采用轮转策略的优势为:一方面,避免短时间内网络中某一维方向上数据包持续传输造成网络阻塞;另一方面,多向传输可充分利用网络中大量的路由节点,尽可能均衡网络负载,避免某些节点因持续作为热点造成路由链路的阻塞,起到了对数据包的分流作用。2)若当前节点的P、Q两个方向均存在阻塞,此时无法进行数据帧传输,数据保存在当前路由节点的缓存中并等待,直至网络阻塞情况发生变化;3)若当前节点的P、Q两个方向中任一方向出现阻塞,当前路由节点立即可以通过阻塞信号得到反馈,进而调整数据帧原来的路由方向,选择畅通的路径进行路由,可有效的规避故障节点,降低了数据包路由延迟的时间,提高了异步片上网络的整体吞吐量。具体包括如下几种情况:
a.若y_dst=(y-i)mod(N),x_dst=(x-i)mod(N),其中i=1,2,…,t,t为整数,且则目的节点在当前节点的西南向,此时,当前节点的路由计算模块需判断西向和南向输出路径的阻塞情况,若西向阻塞即full_w=1,而南向不阻塞即full_s=0,则当前节点将数据发送到南向端口进行输出;否则,当前节点将数据发送到西向端口进行输出;
b.若y_dst=(y-i)mod(N),x_dst=(x+j)mod(N),其中i=1,2,…,t,t为整数,且j=1,2,…,k,且N为奇数时,N为偶数时,则目的节点在当前节点的东南向,此时,当前节点的路由计算模块需判断东向和南向输出路径的阻塞情况,若东向阻塞即full_e=1而南向不阻塞即full_s=0,则当前节点将数据发送到南向端口进行输出;否则,当前节点将数据发送到东向端口进行输出;
c.若y_dst=(y+j)mod(N),x_dst=(x-i)mod(N),其中i=1,2,…,t,t为整数,且j=1,2,…,k,且N为奇数时,N为偶数时,则目的节点在当前节点的西北向,此时,当前节点的路由计算模块需判断西向和北向输出路径的阻塞情况,若西向阻塞即full_w=1而北向不阻塞即full_n=0,则当前节点将数据发送到北向端口进行输出;否则,当 前节点将数据发送到西向端口进行输出;
d.若y_dst=(y+j)mod(N),x_dst=(x+j)mod(N),其中j=1,2,…,k,且N为奇数时,N为偶数时,则目的节点在当前节点的东北向,此时,当前节点的路由计算模块需判断东向和北向输出路径的阻塞情况,若东向阻塞即full_e=1而北向不阻塞即full_n=0,则当前节点将数据发送到北向端口进行输出;否则,当前节点将数据发送到东向端口进行输出;
有益效果:本发明的路由自适应异步2D-Torus片上网络,与同步片上网络相比具有很多优势:异步电路无时钟偏斜、模块化程度高、系统集成复杂度较低、动态功耗低、电磁兼容性强、网络接口统一等。且相较于传统的异步片上网络,本发明的异步2D-Torus片上网络采用2D-Torus拓扑结构和基于阻塞感知的异步电路自适应路由算法,2D-Torus拓扑结构是在2D-Mesh拓扑结构的基础上进行改进的一种网络拓扑结构,该结构把2D-Mesh结构的首尾相连,这样的改进比较于2D-Mesh拓扑结构,片上网络直径会减少很多,而且异步路由节点平均距离减少,因而从理论上功耗降低。此外,采用基于阻塞感知的异步电路自适应路由算法,使数据通道的选择能够根据阻塞情况自主调整,从而提高数据的传输效率。且基于阻塞感知的自适应路由算法具备的较高自适应性可以让数据尽可能节省时间地传输到目的地址。
附图说明
图1为本发明一种实施方式的路由自适应异步2D-Torus片上网络结构示意图;
图2为本发明一种实施方式的异步路由节点内部结构示意图;
图3为本发明一种实施方式的路由自适应异步2D-Torus片上网络的设计方法流程图;
图4为本发明一种实施方式的异步路由节点内部数据Petri网图;
图5为本发明一种实施方式的异步路由节点内部数据接收模块的异步有限状态机示意图;
图6为本发明一种实施方式的异步路由节点内部数据解码模块的异步有限状态机示意图;
图7为本发明一种实施方式的异步路由节点内部路由计算模块的异步有限状态机示意图;
图8为本发明一种实施方式的异步路由节点内部交叉开关模块的异步有限状态机示意图;
图9为本发明一种实施方式的异步路由节点内部数据仲裁模块的异步有限状态机示意图;
图10为本发明一种实施方式的异步路由节点内部数据编码模块的异步有限状态机示意图;
图11为本发明一种实施方式的异步路由节点内部数据发送模块的异步有限状态机示意图;
图12为本发明一种实施方式的异步路由节点内部数据接收模块的硬件模块封装图;
图13为本发明一种实施方式的异步路由节点内部数据解码模块的硬件模块封装图;
图14为本发明一种实施方式的异步路由节点内部路由计算模块的硬件模块封装图;
图15为本发明一种实施方式的异步路由节点内部交叉开关模块的硬件模块封装图;
图16为本发明一种实施方式的异步路由节点内部数据仲裁模块的硬件模块封装图;
图17为本一种具体实施方式的异步路由节点内部数据编码模块的硬件模块封装图;
图18为本一种具体实施方式的异步路由节点内部数据发送模块的硬件模块封装图。
具体实施方式
下面结合附图对本发明的具体实施做详细说明。
本实施方式的路由自适应异步2D-Torus片上网络采用的4×4的结构,如图1所示,其包括:16个异步路由节点和16个IP核,其中16个异步路由节点,按照2D-Torus拓扑结构、采用异步握手通信机制,构成4×4的异步2D-Torus片上网络,在每个异步路由节点上挂载1个IP核;所述异步路由节点,用于根据数据中携带的信息,将数据从相应的输出端口发送到邻节点,直至当前异步路由节点即为目的地址异步路由节点;
本实施方式的异步路由节点,如图2所示,异步路由节点具有东向、西向、南向、北向和本地端口共五个端口,其中本地端口挂载所需的IP核,用于对从异步路由节点接收的数据进行相应的处理;东向、西向、南向、北向端口作为与相邻异步路由节点的连接端口,接收上游异步路由节点的数据帧,同时经过路由计算与数据仲裁,确定合适的输出方向端口,将数据传递给下游异步路由节点;
其中东向、西向、南向、北向和本地端口中每一端口,均包括输入端、数据接收模块、数据解码模块、路由计算模块、交叉开关模块、数据仲裁模块、数据编码模块、数据发送模块和输出端;
本实施方式的数据接收模块,从其所在的异步路由节点的输入端接收数据并传送至数据解码模块;
本实施方式的数据解码模块,采用海明码解码方法对从数据接收模块接收的数据进行解码,并把解码后的数据发送至路由计算模块;
本实施方式的路由计算模块,利用基于阻塞感知的异步电路自适应路由算法,确定从数 据解码模块接收的解码后的数据要发送的输出方向端口;
本实施方式的交叉开关模块,用于将解码后的数据发送到路由计算模块确定的端口的数据仲裁模块;
本实施方式的数据仲裁模块,用于接收除本端口以外的其他端口的交叉开关模块发送来的数据;对所接收的数据进行数据发送优先级仲裁;按照仲裁的数据发送优先级顺序,将数据发送至数据编码模块;本实施方式的数据仲裁模块采用的是轮询优先级仲裁方法对所接收的数据进行优先级仲裁,即在本实施方式的异步片上网络复位时会对异步路由节点中的每个端口预先设定一个优先级,比如:本实施方式中设定的优先级顺序从高到低依次为北向、南向、西向、东向端口。复位后如果有多个端口请求传输数据,那么先按照复位的优先级进行端口选择。但是,数据发送之后,已经发送过数据的端口,其优先级会变成最低。例如:复位后南向端口请求发送数据并且获胜,数据传输完成后,各端口的优先级顺序从高到低依次会变成:北向、西向、东向、南向端口。以此类推,所有方向的端口都有均等的机会进行数据传输。
本实施方式的数据编码模块,接收数据仲裁模块发送的数据,并对接收的数据采用海明码编码方法进行编码,将编码后的数据发送至数据发送模块;
本实施方式的数据发送模块,用于将从数据编码模块接收的数据发送至输出端。
本实施方式的路由自适应异步2D-Torus片上网络设计方法,采用异步电路设计方法学对异步2D-Torus片上网络进行设计实现,如图3所示,包括如下步骤:
一、利用Petri网异步电路图形表示法设计异步路由节点具有的各个端口的接口行为,并对异步路由节点内部的数据流向进行描述;对异步路由节点内部各个模块的接口行为进行Petri网建模,如图4所示。分别用Nport、Eport、Sport、Wport和Oport代表每个异步路由节点的北向、东向、南向、西向和本地端口;从异步路由节点输入端port_in进来的数据依次经过数据接收模块receiver、海明码解码模块ham_decode、路由计算模块analysis、交叉开关模块split、数据仲裁模块arbiter、海明码编码模块ham_encode和数据发送模块send后从该异步路由节点输出端port_out输出。本实施方式中异步路由节点中每个端口的各个模块、输入端和输出端,以端口名+模块名/输入端名/输出端名进行命名,例如西向端口的数据接收模块命名为Wreceiver,本地端口的输出端命名为Oport_out。
本实施方式以西向端口和本地端口的通信为例,利用Petri网异步电路图形表示法对异步路由节点内部的数据流向进行描述。初始状态时,西向端口的输入端Wport_in准备好接收外部来的数据,节点内没有数据进行传输,西向端口中模块Wreceiver、Wham_decode、Wanalysis和Wsplit的变迁的前置集的库所都没有大于或等于1的标识;若Wport_in变迁使能有效,则从节点外部接收数据到Wport_in的后置库所中,这时Wreceiver的前置集的库 所中有标识1,Wreceiver使能有效,将前置集中的数据传输到后置集,依次进行下去,直至Wsplit变迁使能有效时,将数据发送到本地端口的数据仲裁模块Oarbiter,再经过Oham_encode、Osend变迁发送到本地端口的输出端Oport_out。
二、对异步片上网络中传输数据的数据结构进行设计;
数据在异步片上网络传输的过程中,需要携带目的地址信息,以便异步路由节点的路由计算模块analysis进行路由计算;同时为了方便目的节点向源节点返回数据,数据中同时需要携带数据源节点的地址信息。因此异步片上网络中传输数据的数据结构如表1所示。数据长度为16位,有效数据为低八位[7:0],数据源地址信息为高四位[15:12],数据目的地址信息为[11:8]。路由节点中的路由计算模块analysis根据本地地址和数据目的地址间的关系来判断数据传输的端口。
表1异步片上网络中传输数据的数据结构
数据位 | 15:12 | 11:8 | 7:0 |
表示信息 | 数据源地址信息 | 目的地址信息 | 有效信息位 |
同时,为了方便片上网络的异步路由节点本地端口挂载的IP核与异步路由节点间的通信,在片上网络异步路由节点内部进行海明码编解码封装。经过海明码编码,在异步路由节点间传输的数据位宽为21位。
三、利用异步有限状态机的方法设计端口中的模块,得到异步有限状态机的状态转换图;
本实施方式利用异步有限状态机所设计的数据接收模块Receiver,其状态转换图如图5所示,该异步有限状态机包含以下四个状态:
准备状态R_S0:复位reset后状态机进入此状态,等待数据请求信号req的来临。当数据请求信号req有效,即req从低电平变为高电平后,将返回上游异步路由节点的回应信号ack置为有效,即ack置为高电平,状态机转向数据接收状态R_S1;
数据接收状态R_S1:将数据缓存到数据接收模块receiver中,等待上游异步路由节点的数据请求信号req置为无效,即req置为低电平。若上游异步路由节点的数据请求信号req从高电平变为低电平,将返回上游异步路由节点的回应信号ack置为无效,即ack置为低电平,状态机转向数据发送状态R_S2。
数据发送状态R_S2:若数据解码模块的回应信号ack_b为低电平(一般都为低电平,不过为了保证数据发送的正确性,需要进行判断),将接收来的数据发送到相应的数据解码模块,同时将向数据解码模块输出的请求信号req_b置为高电平,状态机转向结束状态R_S3。
结束状态R_S3:等待数据解码模块的回应信号ack_b有效,若检测到回应信号ack_b从低电平变为高电平,将向数据解码模块输出的请求信号req_b置为低电平,本模块的数据发送端的数据清零,状态机转向R_S0状态。
本实施方式利用异步有限状态机所设计的数据解码模块ham_decode,其状态转换图如图6所示,该异步有限状态机包含以下六个状态:
准备状态Hd_S0:复位后状态机进入此状态,等待从数据接收模块发送的数据请求信号req的来临。当数据请求信号req有效,即req从低电平变为高电平后,将返回到数据接收模块的回应信号ack置为有效,即ack置为高电平,状态机转向数据接收状态Hd_S1;
数据接收状态Hd_S1:将数据缓存到数据解码模块ham_decode中,等待从数据接收模块发送的数据请求信号req置为无效,即req置为低电平。若该数据请求信号req从高电平变为低电平,将返回到数据接收模块的回应信号ack置为无效,即ack置为低电平,状态机转向数据检错状态Hd_S2
数据检错状态Hd_S2:将接收来的数据根据校验位和相应位的关系进行数据检错,将相应的数据进行锁存。为保证数据检错的正常进行,将保持Hd_S2状态至检错工作的完成,检错工作的时间取决于检错电路的最长路径长度,需要根据具体的电路设定Hd_S2的保持时间为t_s2。Hd_S2的持续时间达到t_s2(状态图中表示为cnt_t1从低电平变为高电平)后,状态机转向数据纠错状态Hd_S3。
数据纠错状态Hd_S3:若传输的数据存在传输错误,将进行数据纠错工作。为保证数据纠错的正常进行,将保持Hd_S3状态至纠错工作的完成,纠错工作的时间取决于纠错电路的最长路径长度,需要根据具体的电路设定Hd_S3的保持时间t_s3。Hd_S3持续时间达到t_s3(状态图中表示为cnt_t2从低电平变为高电平)后,状态机转向数据发送状态Hd_S4。
数据发送状态Hd_S4:将纠错后的数据采用海明码解码方法进行解码,并发送到后端的路由计算模块。将保持Hd_S4状态至海明码解码的完成,海明码解码工作的时间取决于海明码解码电路的最长路径长度,需要根据具体的电路设定Hd_S4的保持时间t_s4。Hd_S4持续时间达到t_s4(状态图中表示为cnt_t3从低电平变为高电平)后,若路由计算模块的回应信号ack_b为低电平,将解码后的数据发送到后端的路由计算模块,同时将向路由计算模块发送的数据请求信号req_b置为高电平,状态机转向结束状态Hd_S5。
结束状态Hd_S5:等待后端路由计算模块的回应信号ack_b有效,若检测到该回应信号ack_b为高电平,将向路由计算模块发送的数据请求信号req_b置为低电平,本模块的数据发送端的数据清零,状态机回到Hd_S0状态。
本实施方式利用异步有限状态机所设计的路由计算模块analysis,其状态转换图如图7所示,该异步有限状态机包含七个状态:
准备状态A_S0:复位后状态机进入此状态,等待由数据解码模块发送的数据请求信号req的来临。当该请求信号req有效,即req从低电平变为高电平后,将返回到数据解码模块的 回应信号ack置为有效,即ack置为高电平,状态机转向数据接收状态A_S1;
数据接收状态A_S1:将数据缓存到路由计算模块analysis中,等待从数据解码模块发送的数据请求信号req置为无效,即req置为低电平。若该数据请求信号req从高电平变为低电平,将返回到数据解码模块的回应信号ack置为无效,即ack置为低电平,状态机转向信息存储状态A_S2。
信息存储状态A_S2:将从数据解码模块接收的数据中携带的目的地址信息、节点当前各个端口的数据传输状态、邻节点阻塞状态等信息进行锁存。为保证数据存储的正常进行,将保持A_S2状态至存储工作的完成,存储工作的时间取决于计算电路的最长路径长度,需要根据具体的电路设定A_S2保持的时间t_s2。A_S2保持时间达到t_s2(状态图中表示为cnt_t1由低电平变为高电平)后,状态机转向位移信息计算状态A_S3。
位移信息计算状态A_S3:根据A_S2状态中存储的地址信息计算数据传输的目的节点与当前节点间的位移信息。为保证信息计算的正常进行,将保持A_S3状态至信息计算的完成,信息计算工作的时间取决于计算电路的最长路径长度,需要根据具体的电路进行设定A_S3保持的时间t_s3。A_S3保持时间达到t_s3(状态图中表示为cnt_t2由低电平变为高电平)后,状态机转向路由计算状态A_S4。
路由计算状态A_S4:根据路由位移信息、当前节点相应输出通道的状态和邻节点的阻塞信息,使用基于阻塞感知的异步电路自适应路由算法进行路由计算。为保证路由计算的正常进行,将保持A_S4状态至路由计算工作的完成,路由计算工作的时间取决于计算电路的最长路径长度,需要根据具体的电路进行设定A_S4保持的时间t_s4。A_S4保持时间达到t_s4(状态图中表示为cnt_t3由低电平变为高电平)后,状态机转向数据发送状态A_S5。
本实施方式的4×4的异步2D-Torus片上网络中路由计算模块采用的基于阻塞感知的异步电路自适应路由算法的执行过程如下:
A如果目的节点在当前节点的东、南、西、北、四个方向,则不需要对数据输出路径的阻塞情况进行判断,包括如下几种情况:
(1)若y_dst=y,x_dst=x,即目的节点为当前节点,则当前节点将数据发送到该当前节点本地端口的IP核;
(2)若y_dst=y,且是否x_dst=(x-1)mod(4),是,即目的节点在当前节点的西向,则当前节点将数据发送到西向端口进行输出,否,即目的节点在当前节点的东向,则当前节点将数据发送到东向端口进行输出;
(3)若x_dst=x,且是否y_dst=(y-1)mod(4),是,即目的节点在当前节点的南向,则当前 节点将数据发送到南向端口进行输出;否,即目的节点在当前节点的北向,则当前节点将数据发送到北向端口进行输出;
B如果目的节点在当前节点的东北、东南、西北和西南四个方向,则需要对数据输出路径的阻塞情况进行判断,以东南方向路由为例,包括如下几种情况:1)若当前节点的东向、南向两个方向的数据输出路径均为无阻塞,则结合该当前节点上一时刻路由的输出情况,采取轮转策略,决定下一跳路由节点,例如,若上一次数据帧输出方向为东向,则此次选择南向输出,若上一次数据帧的输出方向为南向,则此次选择东向输出;2)若当前节点的东向、南向两个方向均存在阻塞,此时无法进行数据帧传输,数据保存在当前路由节点的缓存中并等待,直至网络阻塞情况发生变化;3)若当前节点的东向、南向两个方向中任一方向出现阻塞,当前路由节点立即可以通过阻塞信号得到反馈,进而调整数据帧原来的路由方向,选择畅通的路径进行路由,具体包括如下几种情况:
a.若y_dst=(y-1)mod(4),x_dst=(x-1)mod(4),则目的节点在当前节点的西南向,此时,当前节点的路由计算模块需判断西向和南向输出路径的阻塞情况,若西向阻塞即,full_w=1,而南向不阻塞即full_s=0,则当前节点将数据发送到南向端口进行输出;否则,当前节点将数据发送到西向端口进行输出;
b.若y_dst=(y-1)mod(4),x_dst=(x+i)mod(4),其中,i=1,2,则目的节点在当前节点的东南向,此时,当前节点的路由计算模块需判断东向和南向输出路径的阻塞情况,若东向阻塞即full_e=1而南向不阻塞即full_s=0,则当前节点将数据发送到南向端口进行输出;否则,当前节点将数据发送到东向端口进行输出;
c.若y_dst=(y+i)mod(4),x_dst=(x-1)mod(4),其中,i=1,2,则目的节点在当前节点的西北向,此时,当前节点的路由计算模块需判断西向和北向输出路径的阻塞情况,若西向阻塞即full_w=1而北向不阻塞即full_n=0,则当前节点将数据发送到北向端口进行输出;否则,当前节点将数据发送到西向端口进行输出;
d.若y_dst=(y+i)mod(4),x_dst=(x+i)mod(4),其中i=1,2,则目的节点在当前节点的东北向,此时,当前节点的路由计算模块需判断东向和北向输出路径的阻塞情况,若东向阻塞即full_e=1而北向不阻塞即full_n=0,则当前节点将数据发送到北向端口进行输出;否则,当前节点将数据发送到东向端口进行输出;
数据发送状态A_S5:若交叉开关模块的数据回应信号ack_data和控制信息回应信号ack_ctrl都为低电平,将路由计算后的有效数据和控制信息同时发送到交叉开关模块,同时 将向交叉开关模块发送的数据请求信号req_data和控制信息请求信号req_ctrl置为高电平,状态机转向结束状态A_S6。
结束状态A_S6:等待交叉开关模块的数据回应信号ack_data和控制信息回应信号ack_ctrl都有效,若检测到该回应信号都为高电平,将向交叉开关模块发送的数据请求信号req_data和控制信息请求信号req_ctrl都置为低电平,本模块发送端的数据清零,状态机回到状态A_S0。
本实施方式利用异步有限状态机所设计的交叉开关模块spilt,其状态转换图如图8,该异步有限状态机包含五个状态:
准备状态S_S0:复位后状态机进入此状态,等待由路由计算模块发送的数据请求信号req_data和控制信息请求信号req_ctrl的来临。从路由计算模块发送的数据请求信号req_data和控制信息请求信号req_ctrl都有效,即数据请求信号req_data和控制信息请求信号req_ctrl都为高电平后,将返回路由计算模块的控制信息回应信号ack_ctrl和数据回应信号ack_data都置为高电平,状态机转向数据接收状态S_S1。
数据接收状态S_S1:将数据缓存到交叉开关模块中,等待从路由计算模块发送的控制信息请求信号req_ctrl和数据请求信号req_data都置为无效,即都置为低电平。若前端控制信息请求信号req_ctrl和数据请求信号req_data都变为低电平,则将相应的回应信号ack_ctrl和ack_data都置为低电平,状态机转向信息锁存状态S_S2。
信息锁存状态S_S2:将根据接收来的控制信息中的控制信号提取出来,经过一段延迟时间t_s2(状态图中表示为cnt_t1由低电平变为高电平),状态机转向数据分配状态S_S3。
数据分配状态S_S3:根据提取出来的控制信息判断数据需要发送的端口,经过一段延迟时间t_s3(状态图中表示为cnt_t2由低电平变为高电平),如果相应端口的数据仲裁模块的回应信号trans_ack置为低电平,则将向数据仲裁模块发送的数据请求信号trans_req置为高电平并发送数据,状态机转向结束状态S_S4。
结束状态S_S4:等待后端的数据仲裁模块的回应信号trans_ack有效,若检测到该回应信号置为高电平,将向数据仲裁模块发送的请求信号trans_req置为低电平,本模块数据发送端的数据清零,状态机转回状态S_S0。
本实施方式利用异步有限状态机所设计的数据仲裁模块arbiter,其状态转换图如图9所示,该异步有限状态机包含五个状态:
准备状态Ar_S0:复位后状态机进入此状态,等待除本端口外其余四个端口的数据请求信号req_i0,req_i1,req_i2,req_i3的来临。若其余四个端口中任一一个请求信号有效或多个请求信号有效(即为高电平),进行仲裁判断计算,状态机转向数据接收状态Ar_S1。
数据接收状态Ar_S1:将数据缓存到本模块中,根据仲裁胜出信息,经过一段延迟时间(状态图中表示为cnt_t1由低电平变为高电平),向胜出的端口返回回应信号winner_ack,即winner_ack置为高电平。经过一段延迟时间,状态机转向接收结束状态Ar_S2。
接收结束状态Ar_S2:等待胜出端口的请求信号winner_req无效。该请求信号winner_req为低电平后,将返回至胜出端口的回应信号winner_ack置为低电平,状态机转向数据发送状态Ar_S3。
数据发送状态Ar_S3:如果检测到数据编码模块发送的回应信号ack_b为低电平,将数据和请求信号发送到数据编码模块,同时将向数据编码模块发送的数据请求信号req_b置为高电平,状态机转向结束状态Ar_S4。
结束状态Ar_S4:等待数据编码模块的回应信号ack_b有效,若检测到该回应信号为高电平,则将向数据编码模块发送的请求信号req_b置为低电平,数据发送端的数据清零,并将优先级刷新,状态机转回Ar_S0状态。
本实施方式利用异步有限状态机所设计的数据编码模块ham_encode,其状态转换图如图10所示,该异步有限状态机包含四个状态:
准备状态He_S0:复位后状态机进入此状态,等待从数据仲裁模块发送的数据请求信号req的来临,当该请求信号req有效(即为高电平)后,将返回到数据仲裁模块的回应信号ack置为高电平,状态机转向数据接收状态He_S1。
数据接收状态He_S1:将数据缓存到本模块中,等待从数据仲裁模块发送的数据请求信号req置为低电平,若该请求信号为低电平,将返回到数据仲裁模块的回应信号ack置为低电平,状态机转向数据编码传输状态He_S2。
数据编码传输状态He_S2:将接收来的数据进行海明码编码,为保证编码工作的完成,需要经过一段延迟t_s2,具体时间需要由编码电路的最长路径决定,当达到延迟时间t_s2(状态图中表示为cnt_t1由低电平变为高电平)后,若数据发送模块返回的回应信号ack_b为低电平,将编码后的数据发送到本模块的数据发送端输出,同时将向数据发送模块发送的请求信号req_b置为高电平,状态机转向结束状态He_S3。
结束状态He_S3:等待数据发送模块的回应信号ack_b有效,若检测到该回应信号ack_b为高电平,将向数据发送模块发送的数据请求信号req_b置为低电平,数据发送端的数据清零,状态机转向状态He_S0。
本实施方式利用异步有限状态机所设计的数据发送模块send,其状态转换图如图11,异步有限状态机包含四个状态:
准备状态Se_S0:复位后状态机进入此状态,等待从数据编码模块发送的数据请求信号 req的来临。当该请求信号req变为高电平后,将返回到数据编码模块的回应信号ack置为高电平,状态机转向数据接收状态Se_S1。
数据接收状态Se_S1:将数据缓存到本模块中,等待从数据编码模块发送的数据请求信号req置为低电平。若该请求信号置为低电平,则将返回到数据编码模块的回应信号ack置为低电平,状态机转向数据发送状态Se_S2。
数据发送状态Se_S2:若后端模块的回应信号ack_b为低电平,将接收来的数据发送到本模块的数据发送端输出,同时将向后端模块发送的请求信号req_b置为高电平,状态机转向结束状态Se_S3。
结束状态Se_S3:等待后端模块的回应信号ack_b,若检测到该回应信号为高电平,将向后端模块的发送的请求信号req_b置为低电平,本模块的数据发送端的数据清零,状态机转向状态Se_S0。
四、根据异步有限状态机的状态转换图,利用System Verilog语言完成各个模块的硬件编程,得到异步路由节点中各个模块的硬件封装图如下:
数据接收模块receiver的硬件封装图如图12所示,数据接收模块receiver的引脚req、ack、data_i接收异步路由节点输入端port_in进来的请求信号、回应信号和数据;引脚reset接收异步片上网络的全局复位信号;引脚ack_b、req_b和data_o分别连接到当前数据接收模块对应的数据解码模块的引脚ack、req和data_i;引脚fe的值代表数据接收模块的状态,即是否能够接收数据,该引脚连接到路由计算模块的引脚Nife、Sife、Eife、Wife之一,例如北向端口数据接收模块的fe引脚连接到本地端口路由计算模块的引脚Nife。
数据解码模块ham_decode的硬件封装图如图13所示,数据解码模块的引脚req、ack、data_i分别连接到相应的数据接收模块的引脚req_b、ack_b和data_o;引脚reset接收异步片上网络的全局复位信号;数据解码模块的引脚ack_b、req_b、data_o分别连接到当前数据解码模块对应的路由计算模块analysis的引脚ack、req、data_i。
路由计算模块analysis硬件封装图如图14所示,路由计算模块的引脚req、ack、data_i分别连接到相应的数据解码模块中的引脚req_b、ack_b和data_o;引脚reset接收异步片上网络的全局复位信号;引脚Nife、Sife、Eife、Wife连接到除本端口外其余四个方向端口的数据接收模块的引脚fe,该值代表异步路由节点内部输入方向上的阻塞情况;引脚Nsfe、Ssfe、Esfe、Wsfe、Osfe接收各方向端口的交叉开关模块split的状态信号,即连接到各方向端口的交叉开关模块split的fe引脚,判断是否能够通过交叉开关模块传递数据;引脚OpEfe、OpWfe、OpSfe和OpNfe的值分别代表异步路由节点东、西、南、北四个输出方向上的阻塞情况,即决定了full_e信号、full_w信号、full_s信号和full_n信号的值。根据要传输方向上的数据仲裁模块、数据编码模块和数据发送模块的状态值,即相应模块的引脚fe 的值,决定要输出方向的阻塞情况,即决定引脚OpEfe、OpWfe、OpSfe和OpNfe的值;引脚ack_ctrl、ack_data、ctrl_req_b、data_req_b、ctrl_o、data_o接口分别连接到当前路由计算模块对应的交叉开关模块Split的引脚ack_ctrl、ack_data、req_ctrl、req_data、ctrl_i、data_i。
交叉开关模块split硬件封装图如图15所示,交叉开关模块的引脚ack_ctrl、ack_data、req_ctrl、req_data、ctrl_i、data_i分别连接到相应的路由计算模块的引脚ack_ctrl、ack_data、ctrl_req_b、data_req_b、ctrl_o、data_o;引脚reset接收异步片上网络的全局复位信号;引脚fe表示交叉开关模块当前的状态,即交叉开关模块是否能够接收数据,该引脚根据所处异步路由节点中的哪个端口,决定连接到路由计算模块相应的引脚Nsfe、Ssfe、Esfe、Wsfe、Osfe之一,例如某异步路由节点北向端口的交叉开关模块的fe引脚,连接到该异步路由节点所有端口的路由计算模块的Nsfe引脚;引脚ack_b_o1、ack_b_o2、ack_b_o3、ack_b_o4、req_o1、req_o2、req_o3、req_o4、data_o1、data_o2、data_o3、data_o4连接到当前交叉开关模块除本端口外其余四个方向的数据仲裁模块的相应引脚,例如,对于某个异步路由节点本地端口的交叉开关模块,引脚ack_b_o1连接到该异步路由节点东向端口的数据仲裁模块的ack_i0,引脚ack_b_o2连接到该异步路由节点西向端口的数据仲裁模块的ack_i0,引脚ack_b_o3连接到该异步路由节点南向端口的数据仲裁模块的ack_i0,引脚ack_b_o4连接到该异步路由节点北向端口的数据仲裁模块的ack_i0,引脚req_o1连接到该异步路由节点东向端口的数据仲裁模块的req_i0,引脚req_o2连接到该异步路由节点西向端口的数据仲裁模块的req_i0,引脚req_o3连接到该异步路由节点南向端口的数据仲裁模块的req_i0,引脚req_o4连接到该异步路由节点北向端口的数据仲裁模块的req_i0,引脚data_o1连接到该异步路由节点东向端口的数据仲裁模块的data_i0,引脚data_o2连接到该异步路由节点西向端口的数据仲裁模块的data_i0,引脚data_o3连接到该异步路由节点南向端口的数据仲裁模块的data_i0,引脚data_o4连接到该异步路由节点北向端口的数据仲裁模块的data_i0。
数据仲裁模块Arbiter硬件封装图如图16所示。数据仲裁模块的引脚reset接收异步片上网络的全局复位信号;引脚req_i0、req_i1、req_i2、req_i3、ack_i0、ack_i1、ack_i2、ack_i3、data_i0、data_i1、data_i2和data_i3对应连接除本端口外其余四个端口的交叉开关模块的相应引脚,例如某个异步路由节点本地端口的数据仲裁模块的引脚req_i0连接到该异步路由节点东向端口的交叉开关模块的引脚req_o1,引脚req_i1连接到该异步路由节点西向端口的交叉开关模块的引脚req_o1,引脚req_i2连接到该异步路由节点南向端口的交叉开关模块的引脚req_o1,引脚req_i3连接到该异步路由节点北向端口的交叉开关模块的引脚req_o1,引脚ack_i0连接到该异步路由节点东向端口的交叉开关模块的引脚ack_b_o1,引脚ack_i1连接到该异步路由节点西向端口的交叉开关模块的引脚ack_b_o1,引脚ack_i2连接到该异步路由节点南向端口的交叉开关模块的引脚ack_b_o1,引脚ack_i3连接到该异步路由节点北向端口的交叉开关模块的引脚ack_b_o1,引脚data_i0连接到该异步路由节点东向端口的交叉开关模块的引脚data_o1,引脚data_i1连接到该异步路由节点西向端口的交叉开关模块的data_o1,引脚data_i2连接到该异步路由节点南向端口的交叉开关模块的引脚data_o1,引脚data_i3连接到该异步路由节点北向端口的交叉开关模块的引脚data_o1;数据仲裁模块的引脚ack_b、req_b、data_o分别连接当前数据仲裁模块对应的数据编码模块的引脚ack、req、data_i;引脚fe的值代表当前数据仲裁模块的状态,与数据编码模块的引脚fe的值和数据发送模块的引脚fe的值共同决定某一路由输出方向的阻塞情况,即决定路由计算模块对应的引脚OpNfe、OpSfe、OpEfe、OpWfe之一的值。
数据编码模块ham_encode硬件封装图如图17所示,数据编码模块的引脚req、ack、data_i分别连接相应的数据仲裁模块的引脚req_b、ack_b、data_o;数据编码模块的引脚ack_b、req_b、data_o分别连接当前数据编码模块对应的数据发送模块的引脚ack、req、data_i。引脚fe的值代表当前数据编码模块的状态,与数据仲裁模块的引脚fe的值和数据发送模块的引脚fe的值共同决定某一路由输出方向的阻塞情况,即决定路由计算模块对应的引脚OpNfe、OpSfe、OpEfe、OpWfe之一的值。
数据发送模块Send硬件封装图如图18所示,数据发送模块的引脚req、ack、data_i分别连接对应的数据编码模块的引脚req_b、ack_b、data_o;数据发送模块的引脚ack_b、req_b、data_o分别连接下游异步路由节点的数据接收模块的引脚ack、req、data_i。引脚fe的值代表当前数据发送模块的状态,与数据仲裁模块的引脚fe的值和数据编码模块的引脚fe的值共同决定某一路由输出方向的阻塞情况,即决定路由计算模块对应的引脚OpNfe、OpSfe、OpEfe、OpWfe之一的值。
五、利用步骤四完成的各个模块构建异步路由节点;
将上述模块按顺序连接即可构成所述的异步路由节点。
六、利用16个异步路由节点按照2D-Torus拓扑结构和异步握手通信机制构建4×4的片上网络;
如图1所示,16个异步路由节点按照矩阵顺序进行节点的编址,如左下角的异步路由节点的坐标为(0,0),其挂载的IP核编号为0,而右上角的异步路由节点的坐标为(3,3),其挂载的IP核编号为15。
接下来,本实施方式对步骤六构建的异步2D-Torus片上网络进行通信性能测试,在本实施方式中,以异步路由节点(0,0)、(3,0)、(0,3)和(3,3)为源节点,向作为目的节点的异步路由节点(1,1)、(2,1)、(1,2)和(2,2)发送数据。在该四个目的节点的本地端口均挂载4×4的异步乘法器。目的节点的乘法器接收到经过解码的数据,提取乘数和被乘数,进行计算。 运算完成后,分别把计算结果返回给源节点。本实施方式分别进行了多向通信测试,多节点并行传输通信测试,及目的节点对挂载的IP核进行访问调用的测试。测试结果表明,设计的4×4异步2D-Torus片上网络具有多方向通信的功能、对目的节点的挂载的IP核进行访问调用的功能以及多节点并行传输通信的功能。
Claims (2)
1.一种路由自适应异步2D-Torus片上网络系统,包括:多个异步路由节点、挂载在不同的异步路由节点上的多种IP核;其特征在于:所述多个异步路由节点按照2D-Torus拓扑结构和异步握手通信机制构建该异步2D-Torus片上网络;
所述异步路由节点具有东向、西向、南向、北向和本地端口共五个端口,其中本地端口挂载所需的IP核,用于对从异步路由节点接收的数据进行相应的处理;东向、西向、南向、北向端口作为与相邻异步路由节点的连接端口,接收上游异步路由节点的数据帧,同时经过路由计算与数据仲裁,确定合适的输出方向端口,通过该端口将数据传递给下游异步路由节点;
所述东向、西向、南向、北向和本地端口中每一端口,均包括输入端、数据接收模块、数据解码模块、路由计算模块、交叉开关模块、数据仲裁模块、数据编码模块、数据发送模块和输出端;
上游异步路由节点某端口的数据帧从当前异步路由节点某相应端口的输入端进来后,依次经过数据接收模块、数据解码模块、路由计算模块、交叉开关模块、数据仲裁模块、数据编码模块和数据发送模块,从当前异步路由节点该端口的输出端输出至下游异步路由节点的某相应端口;
所述数据接收模块,用于从端口的输入端接收数据,并将该数据传送至数据解码模块;
所述数据解码模块,用于接收数据接收模块传送的数据并对该数据进行解码,并把解码后的数据发送至路由计算模块;
所述路由计算模块,用于利用基于阻塞感知的异步电路自适应路由算法,确定从数据解码模块接收的解码后的数据要发送的输出方向端口;
所述交叉开关模块,用于将解码后的数据发送到路由计算模块确定的端口的数据仲裁模块;
所述数据仲裁模块,用于接收除本端口以外的其他端口的交叉开关模块发送来的数据;对所接收的数据进行数据发送优先级仲裁;按照仲裁的数据发送优先级顺序,将数据发送至数据编码模块;
所述数据编码模块,用于接收数据仲裁模块发送的数据,并对接收的数据进行编码,将编码后的数据发送至数据发送模块;
所述数据发送模块,用于将从数据编码模块接收的数据发送至输出端;
所述的路由计算模块利用基于阻塞感知的异步电路自适应路由算法,确定从数据解码模块接收的解码后的数据要发送的输出方向端口,基于阻塞感知的异步电路自适应路由算法如下:
设定源节点为S(x_s,y_s),目的节点为D(x_dst,y_dst),当前节点为C(x,y);路由开始时,当前节点即为源节点,即C(x,y)=S(x_s,y_s);同时每个异步路由节点具有8个方位,分别为东、南、西、北、东北、东南、西北和西南;同时设定该异步2D-Torus片上网络的(0,0)节点位于该片上网络的左下角;采用full信号作为传输方向的局部阻塞信号,该信号为0时代表路由节点某一路由方向不阻塞,为1时代表路由节点的某一路由方向阻塞;所述full信号,包括:full_e信号、full_w信号、full_s信号和full_n信号;所述full_e信号代表东向输出路径的阻塞状态,所述full_w信号代表西向输出路径的阻塞状态,full_s信号代表南向输出路径的阻塞状态,full_n信号代表北向输出路径的阻塞状态;所述的异步2D-Torus片上网络的网络规模为N×N,对于所述的N×N的异步2D-Torus片上网络,则有:
A如果目的节点在当前节点的东、南、西、北四个方向,则不需要对数据输出路径的阻塞情况进行判断,包括如下几种情况:
(1)若y_dst=y,x_dst=x,即目的节点为当前节点,则当前节点将数据发送到该当前节点本地端口的IP核;
(2)若y_dst=y,且是否x_dst=(x-i)mod(N),其中i=1,2,…,t,t为整数,且是,即目的节点在当前节点的西向,则当前节点将数据发送到西向端口进行输出,否,即目的节点在当前节点的东向,则当前节点将数据发送到东向端口进行输出;
(3)若x_dst=x,且是否y_dst=(y-i)mod(N),是,即目的节点在当前节点的南向,则当前节点将数据发送到南向端口进行输出;否,即目的节点在当前节点的北向,则当前节点将数据发送到北向端口进行输出;
B如果目的节点在当前节点的东北、东南、西北和西南四个方向,则需要对数据输出路径的阻塞情况进行判断,且以P代表东、西两个方向之一,以Q代表南、北两个方向之一,包括如下几种情况:1)若当前节点的P、Q两个方向的数据输出路径均为无阻塞,则结合该当前节点上一时刻路由的输出情况,采取轮转策略,决定下一跳路由节点,即,若上一次数据帧输出方向为P,则此次选择Q方向输出,若上一次数据帧的输出方向为Q,则此次选择P方向输出;2)若当前节点的P、Q两个方向均存在阻塞,此时无法进行数据帧传输,数据保存在当前路由节点的缓存中并等待,直至网络阻塞情况发生变化;3)若当前节点的P、Q两个方向中任一方向出现阻塞,当前路由节点立即可以通过阻塞信号得到反馈,进而调整数据帧原来的路由方向,选择畅通的路径进行路由,具体包括如下几种情况:
a.若y_dst=(y-i)mod(N),x_dst=(x-i)mod(N),则目的节点在当前节点的西南向,此时,当前节点的路由计算模块需判断西向和南向输出路径的阻塞情况,若西向阻塞即,full_w=1,而南向不阻塞即full_s=0,则当前节点将数据发送到南向端口进行输出;否则,当前节点将数据发送到西向端口进行输出;
b.若y_dst=(y-i)mod(N),x_dst=(x+j)mod(N),其中j=1,2,…,k,j为整数,且N为奇数时,N为偶数时,则目的节点在当前节点的东南向,此时,当前节点的路由计算模块需判断东向和南向输出路径的阻塞情况,若东向阻塞即full_e=1而南向不阻塞即full_s=0,则当前节点将数据发送到南向端口进行输出;否则,当前节点将数据发送到东向端口进行输出;
c.若y_dst=(y+j)mod(N),x_dst=(x-i)mod(N),则目的节点在当前节点的西北向,此时,当前节点的路由计算模块需判断西向和北向输出路径的阻塞情况,若西向阻塞即full_w=1,而北向不阻塞即full_n=0,则当前节点将数据发送到北向端口进行输出;否则,当前节点将数据发送到西向端口进行输出;
d.若y_dst=(y+j)mod(N),x_dst=(x+j)mod(N),则目的节点在当前节点的东北向,此时,当前节点的路由计算模块需判断东向和北向输出路径的阻塞情况,若东向阻塞即full_e=1,而北向不阻塞即full_n=0,则当前节点将数据发送到北向端口进行输出;否则,当前节点将数据发送到东向端口进行输出。
2.权利要求1所述的路由自适应异步2D-Torus片上网络系统的设计方法,采用异步电路设计方法学对该片上网络进行设计,其特征在于:包括如下步骤:
一、利用Petri网异步电路图形表示法设计异步路由节点具有的各个端口的接口行为,并对异步路由节点内部的数据流向进行描述;
二、对该异步片上网络中传输数据的数据结构进行设计;
三、利用异步有限状态机的方法设计端口中的模块,得到异步有限状态机的状态转换图;所述端口中的模块,包括:数据接收模块、数据解码模块、路由计算模块、交叉开关模块、数据仲裁模块、数据编码模块和数据发送模块;
四、根据异步有限状态机的状态转换图,利用System Verilog语言完成各个模块的硬件编程;
五、利用步骤四完成的各个模块构建异步路由节点;
六、利用N×N个异步路由节点按照2D-Torus拓扑结构和异步握手通信机制构建N×N的路由自适应异步2D-Torus片上网络及其设计方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410571169.2A CN104320341B (zh) | 2014-10-23 | 2014-10-23 | 路由自适应异步2D‑Torus片上网络系统及其设计方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410571169.2A CN104320341B (zh) | 2014-10-23 | 2014-10-23 | 路由自适应异步2D‑Torus片上网络系统及其设计方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104320341A CN104320341A (zh) | 2015-01-28 |
CN104320341B true CN104320341B (zh) | 2017-05-24 |
Family
ID=52375515
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410571169.2A Active CN104320341B (zh) | 2014-10-23 | 2014-10-23 | 路由自适应异步2D‑Torus片上网络系统及其设计方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104320341B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109302357B (zh) * | 2018-08-03 | 2020-05-22 | 西安交通大学 | 一种面向深度学习可重构处理器的片上互联结构 |
CN108696329B (zh) * | 2018-08-27 | 2019-07-12 | 电子科技大学 | 基于二维Torus架构的大规模光网络拓扑设计方法 |
US11469919B2 (en) | 2020-09-17 | 2022-10-11 | Analog Devices International Unlimited Company | Bidirectional communication circuit and a method for operating a bidirectional communication circuit |
CN113783806B (zh) * | 2021-08-31 | 2023-10-17 | 上海新氦类脑智能科技有限公司 | 分流器路由跳转方法、装置、介质、设备及其应用的多核系统 |
CN113946541B (zh) * | 2021-10-15 | 2023-09-08 | 南京大学 | 一种具有轮询仲裁和地址编码更新简化功能的异步路由器 |
CN114536322B (zh) * | 2021-12-22 | 2023-12-29 | 安徽省配天机器人集团有限公司 | 机器人控制柜以及机器人系统 |
CN114584507B (zh) * | 2022-02-23 | 2023-07-04 | 中山大学 | 基于类脑处理器的数据处理方法、路由器及网络系统 |
CN114915594B (zh) * | 2022-07-14 | 2022-09-30 | 中科声龙科技发展(北京)有限公司 | 均衡路由的方法、网络互连系统、交叉开关装置及芯片 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101778049A (zh) * | 2010-03-04 | 2010-07-14 | 南京大学 | 包-电路交换片上路由器及其传输方法 |
CN102387077A (zh) * | 2011-10-19 | 2012-03-21 | 西安电子科技大学 | 具有容错功能的热量均衡片上网络路径选择方法 |
CN102685017A (zh) * | 2012-06-07 | 2012-09-19 | 桂林电子科技大学 | 一种基于fpga的片上网络路由器 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7002975B2 (en) * | 2000-08-11 | 2006-02-21 | Texas Instruments Incorporated | Multiprocessor network node failure detection and recovery |
FR2883116B1 (fr) * | 2005-03-08 | 2007-04-13 | Commissariat Energie Atomique | Architecture de communication globalement asynchrone pour systeme sur puce. |
-
2014
- 2014-10-23 CN CN201410571169.2A patent/CN104320341B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101778049A (zh) * | 2010-03-04 | 2010-07-14 | 南京大学 | 包-电路交换片上路由器及其传输方法 |
CN102387077A (zh) * | 2011-10-19 | 2012-03-21 | 西安电子科技大学 | 具有容错功能的热量均衡片上网络路径选择方法 |
CN102685017A (zh) * | 2012-06-07 | 2012-09-19 | 桂林电子科技大学 | 一种基于fpga的片上网络路由器 |
Non-Patent Citations (4)
Title |
---|
Centralized Adaptive Routing for NoCs;Manevich R, Cidon I, Kolodny A, et al;《IEEE Computer Architecture Letters》;20100228;第9卷(第2期);全文 * |
基于Petri网的异步电路设计研究;谢晔;《中国优秀硕士学位论文全文数据库 信息科技辑》;20081015(第10期);第1页第1.1.1节,第3页-第4页第1.1.2节,第38页-第39页第3.2.1节,第44页-第45页第3.3.1节 * |
基于冗余传输的片上网络软错误的容错方法研究;宋向明;《中国优秀硕士学位论文全文数据库 信息科技辑》;20120715(第7期);第19-20页第2.6节 * |
片上网络(NoC)的路由算法研究;杨进国;《中国优秀硕士学位论文全文数据库 信息科技辑》;20130215(第2期);第3页第1.2.1节,第5页-第10页第2章,第11页-第12页第3.1.1节,第32页-第33页第4.5.1节 * |
Also Published As
Publication number | Publication date |
---|---|
CN104320341A (zh) | 2015-01-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104320341B (zh) | 路由自适应异步2D‑Torus片上网络系统及其设计方法 | |
Zhang et al. | Comparison research between xy and odd-even routing algorithm of a 2-dimension 3x3 mesh topology network-on-chip | |
Navaridas et al. | Understanding the interconnection network of SpiNNaker | |
CN102685017A (zh) | 一种基于fpga的片上网络路由器 | |
CN104579951B (zh) | 片上网络中新颖的故障与拥塞模型下的容错方法 | |
Koibuchi et al. | Descending layers routing: A deadlock-free deterministic routing using virtual channels in system area networks with irregular topologies | |
Miura et al. | An adaptive routing of the 2-D torus network based on turn model | |
Wang et al. | An adaptive partition-based multicast routing scheme for mesh-based networks-on-chip | |
CN105844014B (zh) | 基于芯片设计流程和应用设计流程的片上网络编码优化方法 | |
Wu et al. | A methodology for cognitive NoC design | |
CN102693213B (zh) | 应用于片上网络的系统级传输延时模型的建立方法 | |
Escudero-Sahuquillo et al. | OBQA: Smart and cost-efficient queue scheme for Head-of-Line blocking elimination in fat-trees | |
Yadav et al. | CCTorus: A new torus topology for interconnection networks | |
Touati et al. | FACARS: A novel fully adaptive congestion aware routing scheme for network on chip | |
Yang et al. | An improved mesh topology and its routing algorithm for NoC | |
CN110198268A (zh) | 高维度Torus网络架构及自适应路由方法 | |
Lee et al. | Design of a feasible on-chip interconnection network for a chip multiprocessor (cmp) | |
Lei et al. | Vertical-mesh-conscious-dynamic routing algorithm for 3D NoCs | |
Somisetty et al. | Congestion aware negative first routing with fair arbitration for network on chip | |
Ingle et al. | Mesh topology of NoC architecture using source routing algorithm | |
Somisetty et al. | Regional Congestion Aware Odd Even Routing with Fair Arbitration for Network on Chip | |
CN104065572A (zh) | 一种智能抄表系统无线网络路由算法 | |
CN114448870B (zh) | 路由器延时模型、搭建方法及基于其的片上网络路由算法 | |
Zhu et al. | A low latency and high efficient three-dimension Network-on-Chip based on hierarchical structure | |
Rezaei-Ravari et al. | Dynamic clustering-based routing scheme for 2D-mesh networks-on-chip |
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 | ||
GR01 | Patent grant |