适用于多核处理器片上和片间扩展的路由及接口装置 【技术领域】
本发明涉及多核处理器的扩展技术领域,尤其是一种适用于多核处理器片上和片间扩展的路由及接口装置。
背景技术
随着大规模集成电路的不断发展以及各种高端应用对系统性能要求的不断提高,仅仅依靠单一内核处理器的性能已经显得力不从心,于是多核处理器的发展越来越为人们所关注。随着工艺水平的不断提高,处理器技术已经逐渐向拥有更多内核的处理器结构上发展。
然而随着系统中处理器数量的不断增长,现在普遍采用的总线结构将无法满足系统内部的通信要求,取而代之的是一种NOC(片上网络)技术。NOC技术是在一个基于路由结构的网络上进行包交换来支持片上核之间的通信。由于处理器的应用环境不是唯一和固定的,处理器除了要和片上其他处理器核通信外,还需要和外部各种设备通信,因此要求多核处理器的结构具有很强的可扩展的能力。另一方面,信息传输的可靠性也是决定通信效率高低的重要因素,而这些信息的传递都是由NOC的路由装置完成的。
目前常用的NOC路由装置为传统的具有5个双向端口路由器,5个端口分别是东、南、西、北和本地接口。前四个端口分别和四个方向相邻的路由器相接,本地端口和本地的处理器接口相连。5个端口使用相同的信号定义。通常所采用的路由方法是把需要传输的数据打包,加上头尾信息以后分成若干flit(逻辑微片)发送出去,再由路由装置按照一定的路由策略对逻辑微片进行传输。
传统的路由装置只负责数据包的传递,而不管数据的格式和类型。但是通常情况下,片上处理器核之间的数据包传递协议和芯片与芯片间的数据包传递协议往往是不同的,为了满足这不同的数据协议就要求片上的处理器节点在设计时依照协议要求进行设计。一旦传输协议有所不同,那就意味着需要重新设计处理器节点以满足应用,从而带来大量的额外工作。另一方面,传统的片上网络中的数据打包只是简单的对数据进行分段,并加上头尾信息后便发送出去,一旦传输过程中发生错误,接收端也无从得知,影响了传输的可靠性。因此需要探索一种新的传输方法和装置来克服传统路由中的这些缺点,从而达到能高可靠的、便于应用于多核处理器片上和片间扩展的路由及接口装置。
【发明内容】
(一)要解决的技术问题
有鉴于此,本发明主要解决了现有NOC中路由结构可靠性低,不易于多核处理器片上和片间以统一的方法进行扩展的问题,提出了一种可靠的适用于多核处理器片上和片间扩展的路由及接口装置,该装置主要1个到两个本地网络接口单元、一个或多个可以配置的片间网络接口(NI)单元和一个可以和各个方向连通的路由器组成,在内部增加了循环冗余(CRC)检测机制。
(二)技术方案
为达到上述目的,本发明采用的技术方案如下:
一种适用于多核处理器片上和片间扩展的路由及接口装置,该装置包括:
路由器,用于对接收的逻辑微片数据进行路由计算、交换和转发,该路由器具有:多个路由器接口,用于与其他片上路由器直接相连接;
1或2个本地网络接口,用于隔离片上网络与片内处理单元,进行数据类型地转换,并连接路由器与片内处理单元;
1或多个片间网络接口,其数目根据片间扩展所需要的最大传输通道数确定;用于对片外数据和路由网络数据进行转换,并通过高速串化/解串(SerDes)模块与片外的第三方芯片相连接,或者与同类型的片外网络芯片上的片间网络接口对接,从而实现片间网络扩展。
上述方案中,当本地节点有数据要送出,则数据经过本地网络接口打包后送至路由器,再通过路由器的多个路由器接口中的某一个路由器接口发送到片上网络或者片间网络;当片上网络上若干个方向上有数据要送到本地节点上,则数据通过路由器送到本地网络接口,再由本地网络接口进行解析拆包后送到本地片内处理单元。
上述方案中,所述路由器包括多个输入通道、多个虚拟通道、多个仲裁单元、一个交叉开关、多个输出通道、一个分配单元、一个路由计算单元、一个路由器状态寄存器与控制器和一个信用量计算单元;其中,
路由器通过多个输入通道接收到逻辑微片数据,将接收的逻辑微片数据存放在不同的虚拟通道内,每个输入通道被分配若干个虚拟通道,用于提高网络效率;
路由计算单元使用某种路由算法对虚拟通道里的逻辑微片数据进行路由计算,并通知路由器状态寄存器与控制器控制路由器里逻辑微片数据的转发;
仲裁单元控制与每个输入通道对应的若干虚拟通道的输出,该输出与交叉开关相连接;
交叉开关根据分配单元确定的某种分配算法交换输入的逻辑微片数据,最后通过多个输出通道输出;
信用量计算单元根据路由器状态寄存器与控制器的信息,输出信用量数据,并把输入信用量数据处理信息提供给路由状态寄存器与控制器;
路由器状态寄存器与控制器接收信用量计算单元的信息和路由计算单元的信息,控制仲裁单元与分配单元的行为。
上述方案中,所述本地网络接口是本地节点数据类型与片上网络传输数据类型转换的一个桥梁,由输入通道和输出通道构成,输出通道用于将片上处理器传来的传输层数据根据一定的协议和规则进行分割,转化成片上网络传输所用的逻辑微片数据输出到网络;输入通道用于将片上网络传输所用的逻辑微片数据按照一样的规则转化成本地节点数据类型。
上述方案中,所述本地网络接口包括:
配置及状态寄存器,用于存放控制信息、协议解析信息和中断信息;
输入队列单元,用于进行数据缓冲和不同时钟域的隔离;
输入及输出数据包双端口存储单元,用于储存需要进行传送的一个完整数据包的数据信息;
输入及输出状态机和控制逻辑单元,用于解析协议和接收到逻辑微片类型;
输入及输出检错校验单元,用于对输出的数据进行加扰,以及对接收的数据进行循环冗余检测校验;以及
总线控制单元,用于完成总线控制。
上述方案中,输入通道由输入队列单元、输入数据包双端口存储器单元、输入检错校验单元、输入状态机和控制逻辑单元、配置及状态寄存器,以及总线控制单元构成,从片上网络输入进来的逻辑微片经过通道选择输出到虚通道的数据队列,队列给输入状态机和控制逻辑输出空满的信号,读写输入信号由输入状态机和控制逻辑输出,控制队列的数据输入输出,并输出给输入数据存储器;输入数据存储器是异步的,用来缓存数据包并隔离不同的时钟域,存储过程由输入状态机和控制逻辑的输出控制,输入存储器并把自身的状态输出给输入状态机和控制逻辑,同时存储器还能输出给输入检错校验单元数据,进行循环冗余的校验;当校验完毕后,输入检错校验会输出状态信号给输入状态机和控制逻辑,以通知校验正确或者数据包有错;输入状态机和控制逻辑,接收各个模块的状态信号并控制各个模块传输数据,当有校验完成信号时,将通过和总线控制单元完成总线控制,若接收是控制信号或操作应答信号,则启动中断信号int_n使得处理器读取数据并操作;如果是大块数据,接收完毕后通知总线控制单元启动DMA传输数据;输入状态机和控制逻辑同时会根据输入队列的状态向本地网络接口单元外部输出信用量信号给外接的路由单元。
上述方案中,所述输出通道由总线控制单元、输出数据包存储器、输出检错单元、输出状态机和控制逻辑,以及配置及状态寄存器构成;输出状态机和控制逻辑收到总线控制单元的输入,当有数据传输的命令时,若本地网络接口目前空闲,则可以接收数据,输出状态机控制逻辑按照配置及状态寄存器中输入的协议信息和状态信息对数据进行打包,产生内部控制信号输出给数据包存储器,控制存储器读入数据,输入端发起传输命令的控制器能够继续发送传输,输出状态机和控制逻辑还根据各个模块输入的状态以及由外接的路由单元所输入的信用量信号控制存储器控制器发送允许读命令,另外输出状态机和控制逻辑将存储器输入给自身的数据和输出检测校验单元输入的数据经过位合并转化为逻辑微片向外接片上路由器发送,同时发送数据的有效位给外接片上路由器;存储器同时具有对校验单元的输出,并向输出状态机输出状态,用来缓存数据包和时钟域隔离,存储器输出的数据将会输出给输出状态机和控制逻辑;存储器数据同时输出给输出检测校验单元加扰后将加扰数据缓存至存储器单元并输出给输出状态机空转逻辑,并向状态机和控制逻辑输出状态。
上述方案中,所述片间网络接口由输入通道和输出通道构成,输出通道将片外传来的传输层数据根据一定的协议和规则进行分割,转化成片上网络传输所用的逻辑微片数据输出到网络;输入通道将片上网络传输所用的逻辑微片数据按照一样的规则转化成片外的数据类型。
上述方案中,所述片间网络接口的内部结构与本地网络接口基本相同,其输出通道将串化解串模块传来的数据根据一定的协议和规则进行分割,转化成片上网络传输所用的逻辑微片结构数据输出到网络;输入通道则相反,是将片上网络传输所用的逻辑微片结构数据按照一样的规则转化成一定的片外的数据类型;片间网络接口与本地网络接口的区别是本地网络接口的总线控制单元变成外部第三方转换接口单元,该转换接口单元是可配置的;如果片外连接的是同类的带片间网络接口单元的芯片,则通过配置在输出端不进行输入和输出检错校验,直接将数据包在输出端送高速串化解串模块发送,而在输入端对高速串化解串模块输入的数据组成数据包;如果片外连接的是第三方芯片,则通过配置在输出端使用输出检错单元进行数据校验,并将其转换为第三方芯片的协议数据,经输出端送高速串化解串模块发送,在输入端将高速串化解串模块输入的第三方芯片的协议数据转换为片上网络的数据包;因此,片间网络接口单元的功能结构能够根据片外连接芯片的不同类型配置成兼容第三方芯片接口的传送模式或配置成兼容同类芯片接口的传送模式。片间网络接口单元的可配置结构,简化了芯片间的互连扩展。同时由于同类芯片间的互连扩展协议采用相同协议的路由交换方式,提高了数据传送的效率。
(三)有益效果
从上述方案可以看出,本发明具有以下有益效果:
1、本发明提供了适用于多核处理器片上和片间扩展的路由及接口装置,该装置主要由1到2个本地网络接口单元、一个或多个可以配置的片间网络接口接口单元和一个可以和各个方向联通的路由器构成,对于不同的接口或协议类型,只需要对片间网络接口单元进行配置即可实现连接,易于多核处理器片上和片间以统一的方法进行扩展。
2、本发明中,由于片上和片间网络接口单元内部还增加了循环冗余(CRC)检测和校验单元,可以实现对收发数据进行校验检测,提高了基于路由传输数据的可靠性。
3、利用本发明,当和第三方芯片相连接,路由转发的数据在片间网络接口单元自动转换成第三方芯片所能支持的数据包和协议,提高本装置的兼容性和易扩展性;同时当和同类的包含本装置的芯片相连时,采用相同协议的路由交换方式,且路由转发的数据在片间网络接口单元不需要进行CRC校验,从而提高了数据传送的效率。
【附图说明】
图1是本发明提供的适用于多核处理器片上和片间扩展的路由及接口装置的结构示意图;
图2是本发明中路由器结构框图,用于对微片进行路由和交换;
图3是本发明中路由及接口装置所采用的包结构和类型;
图4是本发明中本地网络接口的结构框图,把逻辑微片数据转化为本地可用的数据并把本地的数据转化为逻辑微片;
图5是本发明中片间网络接口单元的结构框图,把网络微片数据转化为片外可用的数据并把片外的数据转化为网络微片;
图6是本发明中路由及接口装置节点在二维平面上进行网格拓扑片内扩展的一种实施例;
图7是本发明中路由及接口装置在片间扩展的一种实施例;
图8是本发明中带网络接口接口的路由及接口装置在三维空间扩展应用中和本地处理器相连形成的节点结构;
图9是基于图8中所述的节点在三维平面上进行立体mesh拓扑扩展的一种实施例。
【具体实施方式】
本发明主要包括两个部分:一部分是一种带有自定义网络接口(NI)单元的路由装置,该装置在传统的路由基础上增加了若干个网络接口单元,通过对网络接口单元的配置和定义使得本发明的路由装置可以方便的实现多核处理器片上和片间的扩展,使得处理器核的设计和对内对外的接口设计相对独立开,降低了开发难度。另外一部分是在路由协议层引入校验逻辑微片(check flit),在数据打包算法中增加了一些校验信息,即在本路由装置中增加了循环冗余(CRC)校验单元来检测传输的正确性,循环冗余校验码(CRC)是一种系统缩短循环码,广泛应用于帧校验。它是利用除法及余数的原理来作错误侦测的。实际应用时,发送装置计算出循环冗余值并随数据一同发送给接收装置,接收装置对收到的数据重新计算循环冗余并与收到的循环冗余相比较,若两个循环冗余值不同,则说明数据通讯出现错误。
本路由及接口装置引入校验逻辑微片和循环冗余校验码检测机制后,使得基于路由传输的可靠性得到提高,从而解决了目前片上网络(NoC)数据传送不可靠的问题。
为了不混淆本发明,本发明叙述中将不对传统路由所采用的一些通用名词和概念做过多解释,这些概念包括但不限于以下内容:虚通道、网格(mesh)拓扑结构、数据包(packet)。本领域技术人员将能明白。
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。
图1是本发明提供的适用于多核处理器片上和片间扩展的路由及接口装置的结构示意图,每个路由器有多个和其他路由器直接相连的接口,还具有1到2个本地网络接口,该本地网络接口用来隔离片上网络和片内处理单元,并进行数据类型的转换,路由器经由本地网络接口后与片内处理单元相连,该片内处理单元可以是片上处理器但不限于这一种,它同样也可以是其他类型的处理单元,根据该片内处理单元的不同,本地网络接口的配置寄存器内容也不同。如果本地节点有数据要送出,数据经过本地网络接口打包后送至路由器,再通过路由器的若干个接口中的某一个接口发送到网络上;同样的当网络上若干个方向上有数据要送到本地节点上,则数据通过路由器送到本地网络接口,再由本地网络接口进行解析拆包后送到本地片内处理单元(例如片上处理器)。同时当路由器与片外进行通信的时候,可以通过片间网络接口进行片间的互连,片间网络接口的作用主要是对片外数据和路由网络数据进行转换,用于对片外数据和路由网络数据进行转换,并通过高速串化/解串(SerDes)模块与片外的第三方芯片相连接,或者与同类的片外网络芯片上的外部网络接口对接,从而实现片间网络扩展。
图2是本发明中路由器结构框图,路由器主要用来对接收到的逻辑微片数据进行路由计算和交换并转发。路由器的输入都是逻辑微片形式的数据,可以是网络接口输出给路由器的逻辑微片数据,也可以是其它路由器向该路由器发送的逻辑微片数据。接收的数据可以存放在不同的虚拟通道内,每个输入通道允许分配若干个虚拟通道,用来提高网络效率。同时路由计算单元使用某种路由算法对虚拟通道里的微片进行路由计算并通知路由器状态寄存器与控制器控制路由器里逻辑微片数据的转发。仲裁单元控制每个通道的虚拟通道的输出,这些输出与交叉开关相连。交叉开关根据分配单元确定的某种分配算法交换输入的逻辑微片数据,最后输出给路由器的输出。信用量(Credit)计算单元根据路由器状态寄存器与控制器的信息,输出信用量数据,并把输入信用量数据处理信息提供给路由状态寄存器与控制器。路由器状态寄存器与控制器接收信用量计算单元的信息和路由计算单元的信息,控制仲裁单元与分配单元的行为,是路由器中主要的状态控制单元。
图3为本发明路由装置所采用的包(packet)结构和微片(flit)类型,包的类型主要分为2类:请求包和响应包。请求包和响应包主要在传输层上用来传输从终端发出的数据处理的请求和响应。请求包和响应包可以被分解成flit(微片)传输,又分为头微片(head flit)、体微片(body flit)、尾微片(tail flit)和校验微片(check flit)。分别用来告诉路由装置一串数据的头和尾的位置以及这些数据需要送达的目的地址。校验微片用来对数据进行循环冗余检测完成后的比对,从而确定本次数据包传送是否正确。
图4是本发明中本地网络接口的结构框图。本地网络接口单元是本地节点数据类型和片上网络传输数据类型转换的一个桥梁,它主要由2个通道组成,即输入和输出通道。其主要功能是输出通道把片上处理器传来的传输层数据根据一定的协议和规则进行分割,转化成片上网络传输所用的逻辑微片结构数据输出到网络;输入通道则相反,是把片上网络传输所用的逻辑微片结构数据按照一样的规则转化成本地节点数据类型。为了提高传输的可靠性,本发明的路由装置中加入了循环冗余检测机制,因此在本地网络接口单元中有一个检错校验单元,用来对输出的数据做加扰及对接收的数据做校验。本地网络接口单元主要包括输入和输出两大部分。
参照图4,本地网络接口单元各个功能模块的作用如下:配置及状态寄存器用来存放一些控制信息、协议解析信息和中断信息等。该寄存器中的内容可以根据协议的不同或用户需要的不同自行进行定义和配置。输入队列单元用来做数据缓冲和不同时钟域的隔离,数据包双端口存储单元储存需要进行传送的一个完整数据包的数据信息。传输状态机和控制逻辑单元用来解析协议和接收到逻辑微片类型。检错校验单元进行拆包以后的数据循环冗余检测。总线控制单元接口单元完成总线控制等。
参照图4,本地网络接口单元的输入部分主要包括以下几个模块:输入队列单元,输入数据包存储器,输入检错单元,输入状态机和控制逻辑,配置及状态寄存器以及总线控制单元等。从片上网络输入进来的逻辑微片经过通道选择输出到虚通道的数据队列,队列给输入状态机和控制逻辑输出空满的信号,读写输入信号由输入状态机和控制逻辑输出,控制队列的数据输入输出,并输出给输入数据存储器。输入数据存储器可以是异步的,用来缓存数据包并隔离不同的时钟域,存储过程由输入状态机和控制逻辑的输出控制,输入存储器并把自身的状态输出给输入状态机和控制逻辑,同时存储器还能输出给输入检错校验单元数据,进行诸如循环冗余的校验。当校验完毕后,输入检错校验会输出状态信号给输入状态机和控制逻辑,以通知校验正确或者数据包有错。输入状态机和控制逻辑,接收各个模块的状态信号并控制各个模块传输数据,当有校验完成信号时,会通过和总线控制单元完成总线控制,比如若接收是控制信号或操作应答信号,则启动中断信号int_n使得处理器读取数据并操作;如果是大块数据,接收完毕后通知总线控制单元启动DMA传输数据。输入状态机和控制逻辑同时会根据输入队列的状态向本地网络接口单元外部输出信用量信号给外接的路由单元。配置及状态寄存器和输入与输出状态机和控制逻辑有连接,主要用来存放一些控制信息、协议解析信息和中断信息等,该寄存器中的内容可以根据协议的不同或用户需要的不同自行进行定义和配置。总线控制单元接收输入数据存储器的数据输入,并向输入状态机和控制逻辑输出状态,和片内的处理单元相连。
参照图4,本地网络接口单元的输出部分主要由总线控制单元,输出数据包存储器,输出检错单元,输出状态机和控制逻辑以及配置及状态寄存器等模块构成。输出状态机和控制逻辑收到总线控制单元的输入,当有数据传输的命令时,若本地网络接口目前空闲,则可以接收数据,输出状态机控制逻辑按照配置及状态寄存器中的输入的协议信息和状态信息对数据进行打包,产生内部控制信号输出给数据包存储器,控制存储器读入数据,输入端发起传输命令的控制器能够继续发送传输,输出状态机和控制逻辑还根据各个模块输入的状态以及由外接的路由单元所输入的信用量信号控制存储器控制器发送允许读命令,另外输出状态机和控制逻辑还能把存储器输入给自身的数据和输出检测校验单元输入的数据经过位合并转化为逻辑微片向外接片上路由器发送,同时发送数据的有效位给外接片上路由器。存储器同时具有对校验单元的输出,并向输出状态机输出状态,用来缓存数据包和时钟域隔离,存储器输出的数据将会输出给输出状态机和控制逻辑,。存储器数据同时输出给输出检测校验单元加扰后将加扰数据缓存至存储器单元并输出给输出状态机空转逻辑,并向状态机和控制逻辑输出状态。
图5是本发明中片间网络接口单元的结构框图。它的内部结构和本地网络接口单元类似(或者说基本相同),其主要功能是输出通道把串化解串模块传来的数据根据一定的协议和规则进行分割,转化成片上网络传输所用的逻辑微片结构数据输出到网络;输入通道则相反,是把片上网络传输所用的逻辑微片结构数据按照一样的规则转化成一定的片外的数据类型。片间网络接口单元的结构和本地网络接口单元类似,但和本地网络接口单元的区别是本地网络接口的总线控制单元变成外部第三方转换接口单元,该转换接口单元是可配置的。如果片外连接的是同类的带片间网络接口单元的芯片,则通过配置在输出端不进行输入和输出检错校验,直接将数据包在输出端送高速串化解串模块发送,而在输入端对高速串化解串模块输入的数据组成数据包;如果片外连接的是第三方芯片,则通过配置在输出端使用输出检错单元进行数据校验,并将其转换为第三方芯片的协议数据,经输出端送高速串化解串模块发送,在输入端将高速串化解串模块输入的第三方芯片的协议数据转换为片上网络的数据包。因此,片间网络接口单元的功能结构可以根据片外连接芯片的不同类型配置成兼容第三方芯片接口的传送模式或配置成兼容同类芯片接口的传送模式。片间网络接口单元的可配置结构,简化了芯片间的互连扩展。同时由于同类芯片间的互连扩展协议采用相同协议的路由交换方式,提高了数据传送的效率。
图6为本发明中路由及接口装置节点在二维平面上进行网格拓扑片内扩展的一种实施例。在这种结构中,逻辑微片数据可以通过各个节点中的路由器进行二维平面上东南西北4个方向的传输,并在片内进行扩展。
图7为本发明中路由及接口装置在片间扩展的一种实施例。在这种结构中片间网络接口单元可以通过高速串化/解串(Serdes)等模块与片外的第三方芯片相连,也可以通过高速串化/解串(Serdes)等模块与片外的另一块NoC芯片中的片间网络接口单元相连。通过片间扩展,提高了NoC芯片扩展的灵活性和通用性。
图8为本发明的另外一种路由装置,该装置适合在三维立体扩展中进行应用。主要包括一个路由器和两个网络接口单元。整个路由装置有8个端口,除了具有二维平面扩展的东、南、西、北4个端口外,还增加了三维立体的上、下方向端口。另外还有2本地接口,每个本地接口都经由一个网络接口单元和节点单元相连,同样的,这个单元可以是片上处理器单元或片间通信接口但不限于这两种,根据该单元的不同,网络接口的配置寄存器内容不同。如果某一个本地端口或者两个本地端口有数据要送出,数据经过各自网络接口打包后送至路由器,再通过路由器的东、西、南、北、上和下6个端口中的某一个或2个发送到网络上;同样的当网络上6个方向上的某个或某2个方向上有数据要送到本地节点上,则数据通过路由器送到相应的网络接口单元,再由网络接口进行解析拆包后送到本地片上处理器或接口。
图9为基于图8中所述的节点在三维平面上进行立体网格拓扑扩展的一种实施例,在这种结构中,逻辑微片数据可以通过各个节点中的路由器进行三维平面上东、南、西、北、上和下6个方向的传输。这样的结构使得网络可以进行立体的扩展,集成电路工艺的不断发展已经使得立体布线成为可能,因此这样的立体扩展方式可以大大的提高集成度。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。