路由装置及片上网络的路由设备的制作方法

    专利2022-07-07  146


    本公开涉及片上系统
    技术领域
    ,尤其涉及一种路由装置及片上网络的路由设备。
    背景技术
    :随着集成电路的发展,单个芯片上的计算单元不断增加,基于传统式总线的结构已经成为了芯片速度的瓶颈。因此借鉴计算机网络的思想,提出了片上网络(networkonchip,noc)的概念。对于多核系统,片上网络可以显著提高通信的性能。根据物理链路的不同组成方式,片上网络可以有多种拓扑结构。在二维结构中,二维网络(2-dimensionmesh,2dmesh)是一种较为常用的结构,如图1所示,主要有结构简单、可扩展性好、实现和分析较容易等优点。相关技术中,片上网络中的路由设备按照多个路由包的接收顺序对多个路由包进行处理。然而实际使用中部分路由包可能对延时要求交严格,部分路由包则对延时要求较低。技术实现要素:有鉴于此,本公开提出了一种路由装置,所述装置包括:解包模块,用于在通过第一输出通道传输第一路由包的过程中,获取接收的第二路由包的传输请求信息,所述传输请求信息包括所述第二路由包的输出通道及优先级;仲裁模块,电连接于所述解包模块,用于当根据所述传输请求信息确定所述第二路由包请求的输出通道为所述第一输出通道、且所述第二路由包的优先级大于所述第一路由包的优先级时,中断所述第一路由包的传输,并输出第一开关控制信号;传输模块,电连接所述仲裁模块,用于根据所述第一开关控制信号连接所述第二路由包的输入通道及所述第一输出通道,以通过所述第一输出通道传输所述第二路由包。在一种可能的实施方式中,所述装置还包括:存储模块,电连接于所述解包模块、所述仲裁模块,用于存储所述第一路由包的头包信息及所述第二路由包的头包信息,所述头包信息包括优先级及路由信息。在一种可能的实施方式中,所述装置还包括:计数模块,电连接于所述解包模块、所述传输模块;所述解包模块还用于,将所述第二路由包的第一数据包序号写入所述计数模块作为计数值,所述第一数据包序号为所述第二路由包的数据包总个数;所述计数模块用于,当所述传输模块通过所述第一输出通道每完成一次所述第二路由包的数据转发时,将所述计数模块的计数值减一。在一种可能的实施方式中,所述仲裁模块还用于在中断所述第一路由包的传输时,输出第一打包指令,所述装置还包括:打包模块,电连接于所述仲裁模块及所述计数模块,用于在接收到所述第一打包指令的情况下,获取计数模块中与所述第一路由包对应的计数值作为第二数据包序号,并生成所述第一路由包的伪尾包,其中,所述伪尾包中的第二数据包序号为第一数据包序号与所述第一路由包中已传输的数据包个数之间的差值,所述第一数据包序号为所述第二路由包的数据包总个数,所述伪尾包用于指示中断对所述第一路由包的传输;所述传输模块还用于通过所述第一输出通道发送所述第一路由包的伪尾包,以中断所述第一路由包的传输;所述存储模块电连接于所述打包模块,还用于存储所述第一路由包的伪尾包。在一种可能的实施方式中,所述仲裁模块还用于在中断所述第一路由包的传输时,输出第二打包指令,其中,所述打包模块还用于,在接收到所述第二打包指令的情况下,获取所述存储模块中所述第一路由包的头包信息,以生成所述第一路由包的伪头包,其中,所述伪头包中的第一数据包序号为所述第一路由包的伪尾包中的第二数据包序号;所述存储模块还用于存储所述第一路由包的伪头包。在一种可能的实施方式中,所述仲裁模块还用于,在确定所述第二路由包的数据传输结束的情况下,控制所述传输模块断开所述第二路由包的输入通道与所述第一输出通道的连接;所述解包模块还用于,从所述存储模块获取所述第一路由包的伪头包的传输请求信息;所述仲裁模块还用于,根据所述第一路由包的伪头包的传输请求信息控制所述传输模块连接所述第一路由包的输入通道与所述第一输出通道,以继续通过所述第一输出通道传输所述第一路由包中尚未传输的数据。在一种可能的实施方式中,所述通过所述第一输出通道传输所述第二路由包的数据,包括:通过所述第一输出通道传输所述第二路由包的数据包和尾包,其中,所述数据包包括所述第二路由包的数据,所述尾包用于指示结束对所述第二路由包的传输,其中,所述尾包包括所述路由包类型和第二数据包序号,所述第二数据包序号用于指示所述第二路由包中尚未传输的数据包个数。在一种可能的实施方式中,所述装置还包括:统计模块,用于根据接收到的所述第二路由包中的数据包的个数与序号差值的大小关系,确定所述第二路由包是否存在丢包情况,其中,所述序号差值为第一数据包序号与所述第二数据包序号之间的差值,所述第一数据包序号为所述第二路由包的数据包总个数。在一种可能的实施方式中,所述传输模块包括开关单元,所述开关单元用于根据开关控制信号连接输入通道及输出通道,以传输路由包;所述存储模块包括寄存器单元及缓存单元,所述寄存器单元用于存储路由包的头包信息,所述缓存单元用于缓存输入通道上的路由包、路由包的伪尾包、伪头包;所述计数模块包括多个计数器,多个计数器与多个输出通道一一对应。在一种可能的实施方式中,所述解包模块还用于接收所述第二路由包的头包,获取所述头包包括所述第二路由包的优先级和路由信息,其中,所述路由信息包括路由包类型、目的端地址、第一数据包序号、起始存储地址、数据包地址存储方式和校验位中的至少一种;其中,所述路由包类型用于指示所述第二路由包的类型,所述目的端地址为所述第二路由包的接收端的绝对地址或者相对地址,所述第一数据包序号用于指示所述第二路由包中待传输的数据包总个数,所述起始存储地址为所述第二路由包中的数据包在所述接收端内存中存储的起始地址,所述数据包地址存储方式用于指示所述第二路由包中的数据包在所述接收端内存中的存储方式,所述校验位用于指示所述头包中的数据是否正确。根据本公开的另一方面,提供了一种片上网络的路由设备,所述路由设备包括所述的路由装置,其中,所述路由设备为所述片上网络的任意一个节点中的路由设备,所述节点包括处理器核。本公开实施例通过提供一种路由装置,在通过第一输出通道传输第一路由包的数据的过程中,接收第二路由包的传输请求信息;当第二路由包请求的输出通道为第一输出通道且第二路由包的优先级大于第一路由包的优先级;通过第一输出通道传输第二路由包的数据;通过构建一种具有优先级顺序的路由协议,保证优先级较高的路由包可以获得较低的路由延时,比如当一组路由包因为路径繁忙而将要被阻塞时,如果该路由包的优先级比输出通道上正在传输的路由包的优先级高,则中断优先级较低的路由包的传输,转而开始传输该优先级高的路由包,保证了片上网络的路由设备进行路由控制的合理性和路由传输效率。根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。附图说明包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。图1示出了相关技术中的二维网络的结构图。图2示出了根据本公开一实施方式的路由装置的框图。图3示出了根据本公开一实施方式的路由装置的示意图。图4示出了根据本公开一实施例的路由装置的示意图。图5、图6、图7示出了根据本公开一实施例的路由装置传输路由包的示意图。具体实施方式以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。相关技术中,片上网络中的路由设备按照多个路由包的接收顺序对多个路由包进行处理。目前的路由协议对路由包不做优先级上的区分,所有路由包优先级相同。然而实际使用中部分路由包可能对延时要求较严格,部分路由包则对延时要求较低。因此建立一种带有优先级顺序的高效路由协议就是非常必要的。本公开实施例提供一种路由装置,保证优先级较高的路由包可以获得较低的路由延时,比如当一组路由包因为路径繁忙而将要被阻塞时,如果该路由包的优先级比输出通道上正在传输的路由包的优先级高,则中断优先级较低的路由包的传输,转而开始传输该优先级高的路由包,保证了片上网络的路由设备进行路由控制的合理性和路由传输效率。请参阅图2,图2示出了根据本公开一实施方式的路由装置的框图。如图2所示,所述装置包括:解包模块10,用于在通过第一输出通道传输第一路由包的过程中,获取接收的第二路由包的传输请求信息,所述传输请求信息包括所述第二路由包的输出通道及优先级;仲裁模块20,电连接于所述解包模块10,用于当根据所述传输请求信息确定所述第二路由包请求的输出通道为所述第一输出通道、且所述第二路由包的优先级大于所述第一路由包的优先级时,中断所述第一路由包的传输,并输出第一开关控制信号;传输模块30,电连接所述仲裁模块20,用于根据所述第一开关控制信号连接所述第二路由包的输入通道及所述第一输出通道,以通过所述第一输出通道传输所述第二路由包。本公开实施例的路由装置,在通过第一输出通道传输第一路由包的数据的过程中,接收第二路由包的传输请求信息;当第二路由包请求的输出通道为第一输出通道且第二路由包的优先级大于第一路由包的优先级;通过第一输出通道传输第二路由包的数据;通过构建一种具有优先级顺序的路由协议,保证优先级较高的路由包可以获得较低的路由延时,比如当一组路由包因为路径繁忙而将要被阻塞时,如果该路由包的优先级比输出通道上正在传输的路由包的优先级高,则中断优先级较低的路由包的传输,转而开始传输该优先级高的路由包,保证了片上网络的路由设备进行路由控制的合理性和路由传输效率。在一种可能的实施方式中,本公开实施例的解包模块、仲裁模块可以通过专用硬件电路实现,也可以通过通用硬件电路结合可执行逻辑实现,例如,解包模块、仲裁模块可以通过中央处理器cpu、微处理器mcu、图形处理器gpu、数字信号处理器dsp、可编程门阵列fpga等实现,对此本公开实施例不做限定。在一个示例中,所述路由装置可以为片上网络中的路由设备,路由设备为片上网络的任意一个节点中的路由设备,节点包括处理器核。其中,片上网络包括多个节点(如图1所示),每个节点中包括路由设备。根据物理链路的不同组成方式,片上网络可以有多种拓扑结构。本公开实施例仅以片上网络的拓扑结构为2dmesh为例进行说明。路由设备也称为路由器,是连接两个或多个网络的硬件设备,在网络间起网关的作用,是读取每一个数据包中的地址并进行传送的专用智能性的网络设备。请参阅图3,图3示出了根据本公开一实施方式的路由装置的示意图。在一个示例中,路由装置(路由器、路由设备)可以包括多个输入通道(如输入通道w、输入通道n、输入通道e、输入通道s、本地输入通道、)、多个输出通道(例如输出通道w、输出通道n、输出通道e、输出通道s、本地输出通道),路由装置可以建立输入通道与输出通道的连接,以将路由包进行传输。下面对路由包的格式进行示例性介绍。相关技术中,一般是将包含路由地址信息的包头信息与数据进行打包后发送,每次发送的数据包中都包含包头信息,导致路由传输效率较低。即目前的路由传输中每个数据包都由包头和数据两部分组成,然而一般情况下,同一个路由器发出的数据包中大部分的路由信息都是一样的,因此可以将路由信息的传输减少到一次。本公开实施例提供的一次路由过程包括头包、数据包和尾包的传输,即先发送一个头包,该头包包括路由地址信息;然后发送数据包,数据包中不再包含路由地址信息,即减少数据包中的路由地址信息;最后传输一个尾包,尾包用于指示该路由过程的所有数据包已经发送完成,完成本次路由的数据传输。每组路由包的头包中还需要标明该路由包的优先级,以便对不同优先级的路由包分别处理。一个完整的路由过程为传输一组路由包的过程,该组路由包包含头包、数据包和尾包,其中数据包为一个或者多个数据包。在一种可能的实现方式中,头包的头包信息包括路由包的优先级、路由包类型、目的端地址、第一数据包序号、起始存储地址、数据包地址存储方式和校验位中的至少一种信息。示意性的,头包所包含的信息如表一所示。表一ptdstrankaddrrc其中,p为路由包的优先级。路由包的优先级用于指示该路由包的传输顺序。优先级与传输顺序呈正相关关系,即优先级越高,传输顺序也靠前。t为路由包类型,比如,路由包类型包括数据配置包、普通数据包、查询包中的一种。本公开实施例对路由包类型的划分方式不加以限定。dst为目的端地址,即为该路由包的接收端的绝对地址或者相对地址。针对多维结构,比如包含一个芯片阵列,每个芯片又包含若干个核的阵列,则目的端地址为多维结构。rank为第一数据包序号,用于指示路由包中待传输的数据包总个数。addr为起始存储地址,即为路由包中的数据包在接收端内存中存储的起始地址。r为数据包地址存储方式,用于指示路由包中的数据包在接收端内存中的存储方式。通常一个路由过程中不同数据包在接收端内存中按地址连续存储,但也可能有一定规律。示意性的,数据包地址存储方式用于指示在接收端内存中每存储预设数量的数据包,将路由地址跳转预设量后继续存储。比如,预设数量为5,即每接收并存储5个数据包,路由地址跳转一定量后继续存储,该信息可为实际的路由应用保留灵活性。c为校验位,用于指示头包中的数据是否正确。可选地,校验位为第一数值时用于指示头包中的数据正确,校验位为除第一数值外的其他数值时用于指示头包中的数据错误。本公开实施例对第一数值的具体取值不加以限定。在一种可能的实现方式中,路由包中的多个数据包均不包含路由地址信息。每个数据包包括数据,还可以包括校验位。示意性的,数据包所包含的信息如表二所示。表二datac其中,data为数据,c为校验位,用于指示数据包中的数据是否正确。在一种可能的实现方式中,尾包用于指示结束对路由包的传输。尾包中包括路由包类型和第二数据包序号,第二数据包序号用于指示路由包中尚未传输的数据包个数,方便接收端进行数据完整性校验。尾包中还可以包括校验位,用于指示尾包中的数据是否正确。可选地,校验位为第二数值时用于指示数据包中的数据正确,校验位为除第二数值外的其他数值时用于指示数据包中的数据错误。本公开实施例对第二数值的具体取值不加以限定。示意性的,尾包所包含的信息如表三所示。表三trankc其中,t为路由包类型,一组路由包中的头包和尾包的路由包类型是相同的。rank为第二数据包序号,用于指示路由包中尚未传输的数据包个数。一般情况下第二数据包序号为零。c为校验位,用于指尾包中的数据是否正确。可选地,校验位为第三数值时用于指示尾包中的数据正确,校验位为除第三数值外的其他数值时用于指示尾包中的数据错误。本公开实施例对第三数值的具体取值不加以限定。综上所述,本公开实施例的路由装置传输的路由包包括头包、数据包、尾包,通过将头包、数据包、尾包分开传输,使得数据包中不再包含路由地址信息,减少了数据包中的路由地址信息,提高传递提高效率;同时,本公开实施例的路由装置基于以上方式传输路由包,还可以支持路由数据传输的中断和续传,进一步保证了路由传输效果。即基于上述的头包 数据包 尾包的路由协议,在一般情况下,一个路由过程应该是由发送端依次发送头包、数据包、尾包,然后结束该组路由包的数据传输,接收端通过校验接收到的数据包的个数是否等于头包中的第一数据包序号与尾包中的第二数据包序号的差值来判断。需要说明的是,本公开实施例中的发送端为发送端路由设备的简称,接收端为接收端路由设备的简称。请参阅图4,图4示出了根据本公开一实施例的路由装置的示意图。在一种可能的实施方式中,如图4所示,所述装置还可以包括:存储模块40,电连接于所述解包模块10、所述仲裁模块20,用于存储所述第一路由包的头包信息及所述第二路由包的头包信息,所述头包信息包括优先级及路由信息。在一个示例中,存储器模块40可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(staticrandomaccessmemory,sram),电可擦除可编程只读存储器(electricallyerasableprogrammableread-onlymemory,eeprom),可擦除可编程只读存储器(erasableprogrammablereadonlymemory,eprom),可编程只读存储器(programmableread-onlymemory,prom),只读存储器(readonlymemory,rom),磁存储器,快闪存储器,磁盘或光盘。相应地,存储器20还可以包括存储器控制器,以提供处理器10对存储器20的访问。在一个示例中,如图4所示,存储模块40可以包括寄存器单元410及缓存单元420。在一个示例中,寄存器单元410可以包括多组寄存器,寄存器单元410可以用于存储路由包的头包信息,所述头包可以包括路由包的优先级和路由信息。在一个示例中,所述路由信息可以包括路由包类型、目的端地址、第一数据包序号、起始存储地址、数据包地址存储方式和校验位中的至少一种。在一个示例中,所述路由包类型用于指示所述第二路由包的类型,所述目的端地址为所述第二路由包的接收端的绝对地址或者相对地址,所述第一数据包序号用于指示所述第二路由包中待传输的数据包总个数,所述起始存储地址为所述第二路由包中的数据包在所述接收端内存中存储的起始地址,所述数据包地址存储方式用于指示所述第二路由包中的数据包在所述接收端内存中的存储方式,所述校验位用于指示所述头包中的数据是否正确。在一个示例中,解包模块10可以对路由包进行解包处理,获取路由包(例如第二路由包)的头包信息,示例性的,解包模块10可以通过xy维序路由等路由算法对路由包进行解包。在获得路由包的头包信息的情况下,解包模块10可以将该路由包的头包信息存储在寄存器单元410中。在一个示例中,缓存单元420可以作为输入通道接收的路由包的缓冲带,缓存单元420可以被设置为先入先出fifo模式(当然,也可以设置为后入先出lifo模式,对此,本公开实施例不做限定),以缓冲各个输入通道上的路由包,本公开实施例对于每个输入通道,都设置有一个输入缓冲fifo,假设路由装置共有五个输入fifo,每个输入通道的缓存大小可以设置为路由包长度的整倍数,在一个示例中,可以将路由器每个fifo设置为3个路由包大小,以兼顾路由器的性能和代价。在一个示例中,解包模块可以通过轮询的方式查询缓存单元的每个输入通道fifo中是否有路由包,如果有路由包,则提取路由包中的标志位,判断该路由包是属于头包、数据包还是尾包。如果该路由包属于头包或尾包,则解包模块将该路由包复制一份,进行解包。如果是头包,则解包模块根据路由算法(如xy维序路由等)确定该路由包的输出方向(输出通道),然后将路由包的输出方向以及优先级信息发送给仲裁模块。如果是尾包,则将该路由输出通道对应的寄存器值清空,同时发送对应的输出通道给仲裁模块,便于关闭该路由过程。在一个示例中,仲裁模块接收到解包模块的信息,如果仲裁模块接收到的是路由输出方向和路由优先级信息,则表示有一个路由包的头包申请某个输出通道且其优先级为对应值。此时,仲裁模块首先判断申请的输出通道是否占用,如果没有占用,则控制传输模块建立该路由包的输入通道及申请的输出通道的连接,以直接传输该路由包。每当仲裁模块向传输模块发送信息,确定将对应的输入通道和输出通道连接起来的时候,解包模块也会得到此信息,解包模块可以将该路由头包的全部信息写入该输出通道对应的寄存器中。在一种可能的实施方式中,如图4所示,所述装置还可以包括:计数模块50,电连接于所述解包模块10、所述传输模块30。所述解包模块10还可以用于,将所述第二路由包的第一数据包序号写入所述计数模块作为计数值,所述第一数据包序号为所述第二路由包的数据包总个数;所述计数模块可以用于,当所述传输模块30通过所述第一输出通道每完成一次所述第二路由包的数据转发时,将所述计数模块的计数值减一。通过以上装置,本公开实施例可以实现对路由包的传输计数。在一个示例中,计数模块50可以包括多个计数器(例如5个),每个计数器与输出通道一一对应,当仲裁模块20发送指令控制传输模块30传输路由包时,解包模块30可以将路由包要传输的数据包的总数写入对应的计数器中,以使得计数器对当前路由包还未传输的数据包进行计数,例如,若当前处理的是路由包的头包,则未传输的数据包为路由包待传输的数据包的总数;此后,每传输一个路由包的数据包,计数器即从当前计数值减一;若当前处理的是路由包的尾包,则标识路由包的所有数据包均传输完毕,计数器的计数值为0。在一种可能的实施方式中,所述仲裁模块20还可以用于在中断所述第一路由包的传输时,输出第一打包指令。在一种可能的实施方式中,如图4所示,所述装置还可以包括:打包模块60,电连接于所述仲裁模块20及所述计数模块50(及存储模块40),用于在接收到所述第一打包指令的情况下,获取计数模块50中与所述第一路由包对应的计数值作为第二数据包序号,并生成所述第一路由包的伪尾包,其中,所述伪尾包中的第二数据包序号为第一数据包序号与所述第一路由包中已传输的数据包个数之间的差值,所述第一数据包序号为所述第二路由包的数据包总个数,所述伪尾包用于指示中断对所述第一路由包的传输;在一种可能的实施方式中,所述传输模块30还可以用于通过所述第一输出通道发送所述第一路由包的伪尾包,以中断所述第一路由包的传输;在一种可能的实施方式中,所述存储模块40还可以用于存储所述第一路由包的伪尾包。在一种可能的实施方式中,所述传输模块30可以包括开关单元310,所述开关单元310可以用于根据开关控制信号连接输入通道及输出通道,以传输路由包。在一个示例中,开关单元310可以包括交叉开关、单刀多掷开关、多刀多掷开关等。在一个示例中,当发送该伪尾包时,仲裁模块20可以控制传输模块30切断所述第一路由包的输入通道与第一输出通道的连接,并且,解包模块10可以控制停止接收第一路由包的数据包。在一个示例中,当原路径上的各个路由装置接收到第一路由包的伪尾包的情况下,各个路由装置的仲裁模块20均可以控制传输模块30切断所述第一路由包的输入通道与第一输出通道的连接。在一种可能的实施方式中,所述仲裁模块20还可以用于在中断所述第一路由包的传输时,输出第二打包指令。在一种可能的实施方式中,所述打包模块60还用于,在接收到所述第二打包指令的情况下,获取所述存储模块40(寄存器单元)中所述第一路由包的头包信息,以生成所述第一路由包的伪头包,其中,所述伪头包中的第一数据包序号为所述第一路由包的伪尾包中的第二数据包序号;在一种可能的实施方式中,所述存储模块40还用于存储所述第一路由包的伪头包。在一个示例中,打包模块60可以将存储模块40中获取的第一路由包的头包信息中的第一数据包序号替换为计数模块50中的计数值,也即第一数据包的伪尾包的第二数据包序号,其余信息保持不变。在一种可能的实施方式中,本公开实施例的打包模块可以通过专用硬件电路实现,也可以通过通用硬件电路结合可执行逻辑实现,例如,解包模块、仲裁模块可以通过中央处理器cpu、微处理器mcu、图形处理器gpu、数字信号处理器dsp、可编程门阵列fpga等实现,对此本公开实施例不做限定。在一个示例中,第一路由包的伪头包可以存储在第一路由包对应的缓存fifo的最前列,以在第二路由包完成传输时,使得解包模块10获取第一路由包的伪头包触发第一路由包的继续传输。本公开实施例所述的中断第一路由包的传输,包括将第一路由包的路由过程分为两个路由过程,分别为:第一路由包头包 所述伪尾包的路由过程、所述伪头包 第一路由包头包的路由过程。在一种可能的实施方式中,所述仲裁模块20还可以用于,在确定所述第二路由包的数据传输结束的情况下,控制所述传输模块断开所述第二路由包的输入通道与所述第一输出通道的连接。在一种可能的实施方式中,所述通过所述第一输出通道传输所述第二路由包的数据,可以包括:通过所述第一输出通道传输所述第二路由包的数据包和尾包,其中,所述数据包包括所述第二路由包的数据,所述尾包用于指示结束对所述第二路由包的传输,其中,所述尾包包括所述路由包类型和第二数据包序号,所述第二数据包序号用于指示所述第二路由包中尚未传输的数据包个数。在一个示例中,当传输第二路由包的路径建立完成时,第二路由包的输入通道与第一输出通道建立了连接,第二路由包的数据包及尾包可以通过第一输出通道传输到下一跳路由节点。在一种可能的实施方式中,如图4所示,所述装置还可以包括:统计模块70,用于根据接收到的所述第二路由包中的数据包的个数与序号差值的大小关系,确定所述第二路由包是否存在丢包情况,其中,所述序号差值为第一数据包序号与所述第二数据包序号之间的差值,所述第一数据包序号为所述第二路由包的数据包总个数。在一个示例中,当路由装置接收到第二路由包的尾包时,可以结束第二路由包的路由传输过程。路由装置结束对第二路由包的传输后,统计模块70可以根据接收到的第二路由包中的数据包的个数与序号差值的大小关系,确定第二路由包是否存在丢包情况,序号差值为第一数据包序号与第二数据包序号之间的差值。即若接收到的第二路由包中的数据包的个数等于序号差值,表示第二路由包不存在丢包情况;若接收到的第二路由包中的数据包的个数不等于序号差值时,表示第二路由包存在丢包情况,则产生可供控制器处理的错误信号。其中,提供给路由设备或控制器的序号差值为第一数据包序号与第二数据包序号之间的差值。在一种可能的实施方式中,本公开实施例的统计模块可以通过专用硬件电路实现,也可以通过通用硬件电路结合可执行逻辑实现,例如,解包模块、仲裁模块可以通过中央处理器cpu、微处理器mcu、图形处理器gpu、数字信号处理器dsp、可编程门阵列fpga等实现,对此本公开实施例不做限定。在一种可能的实施方式中,所述解包模块10还可以用于,从所述存储模块获取所述第一路由包的伪头包的传输请求信息;在一种可能的实施方式中,所述仲裁模块20还可以用于,根据所述第一路由包的伪头包的传输请求信息控制所述传输模块连接所述第一路由包的输入通道与所述第一输出通道,以继续通过所述第一输出通道传输所述第一路由包中尚未传输的数据。在一个示例中,在第二路由包的数据传输结束后,路由装置继续传输第一路由包中尚未传输的数据。在第二路由包的数据传输结束后,路由装置根据缓存的第一路由包的伪头包,继续传输第一路由包中尚未传输的数据包和尾包。下面结合具体的示例对所述路由装置进行示例性介绍。请参阅图5、图6、图7,图5、图6、图7示出了根据本公开一实施例的路由装置传输路由包的示意图。在一个示例中,如图5所示,假设在第一路由包k1的传输路径中包括路由装置a、路由装置b、路由装置c,以路由装置b为例,假如在路由路径的路由装置b出现了高优先级路由包(来自路由装置d的第二路由包k2)将要打断低优先级路由包的情况,路由装置b正在通过输出通道e(第一输出通道)传输优先级为“1”的第一路由包k1。假设,某一时刻路由装置b的路由设备收到了s方向输入的第二路由包k2,解包模块提取第二路由包k2中的标志位,判断第二路由包k2为头包(头包、数据包、尾包具有不同的标识信息),对第二路由包k2进行复制,对复制的第二路由包k2进行解包,确定第二路由包k2的输出方向(输出通道e)及优先级,并将第二路由包k2的输出方向以及优先级信息发送给仲裁模块,此时,仲裁模块从存储模块中获取第一路由包k1的头包信息中优先级,当仲裁模块确定第二路由包k2将要申请输出通道e且第二路由包k2的优先级(假设为2)高于路由包k1的优先级(假设为1),此时开始中断操作,发出中断指令,路由包k1输入fifo停止接收新的输入路由包,待路由包k1对应的fifo中的路由包全部传输结束之后,路由装置b可以根据计数模块中计数值确定第一路由包k1已经传输的数据包个数,生成一个伪尾包,并发送该伪尾包,提前结束该第一路由包k1的数据传输。同时根据之前保存的第一路由包k1的头包,从存储模块中获取第一路由包k1的头包信息,重新为该优先级较低的第一路由包k1生成一个伪头包,并存放在路由包k1的缓存队列的队首首,然后仲裁模块输出控制指令控制传输模块中的开关单元断开第一路由包括k1的输入通道w与输出通道e的连接,中断低优先级的第一路由包k1的数据的传输(如图6所示),将路由包k2的输入通道(s)与该输出通道连接起来,开始传输优先级较高的第二路由包k2的数据。在一个示例中,当解包模块根据标志位的标识判断要传输第二路由包的尾包时,可以清空对应的寄存器的值(清除第二路由包的头包信息),此时计数器的计数值为0,表示第二路由包k2的数据包全部传输完毕,解包模块对第二路由包k2的尾包解包后,将输出通道发送到仲裁模块,在这种情况下,由于仲裁模块仅收到了第二路由包k2的通道信息,仲裁模块判断当前传输的是第一路由包k2的尾包,其数据包完成传输,生成开关控制指令,控制传输模块将第二路由包k2的输入通道s与输出通道e之间的连接断开,如图7所示,即,当优先级较高的第二路由包k2的数据传输结束后,继续刚才被中断的第一路由包k1的路由过程,即对剩余的尚未传输的第一路由包k1的数据进行传输。综上所述,本公开实施例提供了一种路由装置,在一方面,添加了路由包的优先级顺序,保证高优先级的路由包更优先通过阻塞节点。在另一方面,提出了路由包中断和续传的协议,理论上保证高优先级的路由包可以打断低优先级的路由包。在另一方面,提出头包 数据包 尾包的路由协议,支持上述具有优先级顺序的路由协议和中断、续传的特点,提高了路由传输的效率。本公开实施例的路由装置可以实现对路由包按优先级传输,提高配置灵活性,保证高优先级路由优先传输。可以显著提高noc网络中的路由效率,减少不必要的包头信息。本公开可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本公开的各个方面的计算机可读程序指令。计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、静态随机存取存储器(sram)、便携式压缩盘只读存储器(cd-rom)、数字多功能盘(dvd)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(isa)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如smalltalk、c 等,以及常规的过程式编程语言—诸如“c”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(fpga)或可编程逻辑阵列(pla),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。这里参照根据本公开实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本
    技术领域
    的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本
    技术领域
    的其它普通技术人员能理解本文披露的各实施例。当前第1页1 2 3 
    技术特征:

    1.一种路由装置,其特征在于,所述装置包括:

    解包模块,用于在通过第一输出通道传输第一路由包的过程中,获取接收的第二路由包的传输请求信息,所述传输请求信息包括所述第二路由包的输出通道及优先级;

    仲裁模块,电连接于所述解包模块,用于当根据所述传输请求信息确定所述第二路由包请求的输出通道为所述第一输出通道、且所述第二路由包的优先级大于所述第一路由包的优先级时,中断所述第一路由包的传输,并输出第一开关控制信号;

    传输模块,电连接所述仲裁模块,用于根据所述第一开关控制信号连接所述第二路由包的输入通道及所述第一输出通道,以通过所述第一输出通道传输所述第二路由包。

    2.根据权利要求1所述的装置,其特征在于,所述装置还包括:

    存储模块,电连接于所述解包模块、所述仲裁模块,用于存储所述第一路由包的头包信息及所述第二路由包的头包信息,所述头包信息包括优先级及路由信息。

    3.根据权利要求2所述的装置,其特征在于,所述装置还包括:

    计数模块,电连接于所述解包模块、所述传输模块;

    所述解包模块还用于,将所述第二路由包的第一数据包序号写入所述计数模块作为计数值,所述第一数据包序号为所述第二路由包的数据包总个数;

    所述计数模块用于,当所述传输模块通过所述第一输出通道每完成一次所述第二路由包的数据转发时,将所述计数模块的计数值减一。

    4.根据权利要求2或3所述的装置,其特征在于,所述仲裁模块还用于在中断所述第一路由包的传输时,输出第一打包指令,所述装置还包括:

    打包模块,电连接于所述仲裁模块及所述计数模块,用于在接收到所述第一打包指令的情况下,获取计数模块中与所述第一路由包对应的计数值作为第二数据包序号,并生成所述第一路由包的伪尾包,其中,所述伪尾包中的第二数据包序号为第一数据包序号与所述第一路由包中已传输的数据包个数之间的差值,所述第一数据包序号为所述第二路由包的数据包总个数,所述伪尾包用于指示中断对所述第一路由包的传输;

    所述传输模块还用于通过所述第一输出通道发送所述第一路由包的伪尾包,以中断所述第一路由包的传输;

    所述存储模块电连接于所述打包模块,还用于存储所述第一路由包的伪尾包。

    5.根据权利要求4所述的装置,其特征在于,所述仲裁模块还用于在中断所述第一路由包的传输时,输出第二打包指令,其中,

    所述打包模块还用于,在接收到所述第二打包指令的情况下,获取所述存储模块中所述第一路由包的头包信息,以生成所述第一路由包的伪头包,其中,所述伪头包中的第一数据包序号为所述第一路由包的伪尾包中的第二数据包序号;

    所述存储模块还用于存储所述第一路由包的伪头包。

    6.根据权利要求5所述的装置,其特征在于,

    所述仲裁模块还用于,在确定所述第二路由包的数据传输结束的情况下,控制所述传输模块断开所述第二路由包的输入通道与所述第一输出通道的连接;

    所述解包模块还用于,从所述存储模块获取所述第一路由包的伪头包的传输请求信息;

    所述仲裁模块还用于,根据所述第一路由包的伪头包的传输请求信息控制所述传输模块连接所述第一路由包的输入通道与所述第一输出通道,以继续通过所述第一输出通道传输所述第一路由包中尚未传输的数据。

    7.根据权利要求1所述的装置,其特征在于,所述通过所述第一输出通道传输所述第二路由包的数据,包括:

    通过所述第一输出通道传输所述第二路由包的数据包和尾包,

    其中,所述数据包包括所述第二路由包的数据,所述尾包用于指示结束对所述第二路由包的传输,

    其中,所述尾包包括所述路由包类型和第二数据包序号,所述第二数据包序号用于指示所述第二路由包中尚未传输的数据包个数。

    8.根据权利要求7所述的装置,其特征在于,所述装置还包括:

    统计模块,用于根据接收到的所述第二路由包中的数据包的个数与序号差值的大小关系,确定所述第二路由包是否存在丢包情况,

    其中,所述序号差值为第一数据包序号与所述第二数据包序号之间的差值,所述第一数据包序号为所述第二路由包的数据包总个数。

    9.根据权利要求3所述的装置,其特征在于,

    所述传输模块包括开关单元,所述开关单元用于根据开关控制信号连接输入通道及输出通道,以传输路由包;

    所述存储模块包括寄存器单元及缓存单元,所述寄存器单元用于存储路由包的头包信息,所述缓存单元用于缓存输入通道上的路由包、路由包的伪尾包、伪头包;

    所述计数模块包括多个计数器,多个计数器与多个输出通道一一对应。

    10.根据权利要求1所述的装置,其特征在于,所述解包模块还用于接收所述第二路由包的头包,获取所述头包包括所述第二路由包的优先级和路由信息,

    其中,所述路由信息包括路由包类型、目的端地址、第一数据包序号、起始存储地址、数据包地址存储方式和校验位中的至少一种;

    其中,所述路由包类型用于指示所述第二路由包的类型,所述目的端地址为所述第二路由包的接收端的绝对地址或者相对地址,所述第一数据包序号用于指示所述第二路由包中待传输的数据包总个数,所述起始存储地址为所述第二路由包中的数据包在所述接收端内存中存储的起始地址,所述数据包地址存储方式用于指示所述第二路由包中的数据包在所述接收端内存中的存储方式,所述校验位用于指示所述头包中的数据是否正确。

    11.一种片上网络的路由设备,其特征在于,所述路由设备包括如权利要求1-10任一项所述的路由装置,

    其中,所述路由设备为所述片上网络的任意一个节点中的路由设备,所述节点包括处理器核。

    技术总结
    本公开涉及路由装置及片上网络的路由设备,所述装置包括:解包模块,用于在通过第一输出通道传输第一路由包的过程中,获取接收的第二路由包的传输请求信息;仲裁模块,用于当根据传输请求信息确定第二路由包请求的输出通道为第一输出通道、且第二路由包的优先级大于第一路由包的优先级时,中断所述第一路由包的传输,并输出第一开关控制信号;传输模块,用于根据所述第一开关控制信号连接所述第二路由包的输入通道及所述第一输出通道,以通过所述第一输出通道传输所述第二路由包。本公开实施例的装置通过中断优先级较低的路由包的传输,转而开始传输该优先级高的路由包,保证了片上网络的路由设备进行路由控制的合理性和路由传输效率。

    技术研发人员:马骋;裴京;宋晨航;鲁明胜
    受保护的技术使用者:清华大学
    技术研发日:2020.11.30
    技术公布日:2021.03.12

    转载请注明原文地址:https://wp.8miu.com/read-8345.html

    最新回复(0)