片上网络配置方法和装置、以及存储介质与流程

文档序号:33048880发布日期:2023-01-24 22:58阅读:34来源:国知局
片上网络配置方法和装置、以及存储介质与流程

1.本公开涉及集成电路技术领域,具体地,涉及一种对片上网络进行配置的片上网络配置方法,应用了该方法的片上网络配置装置,以及还涉及一种存储介质。


背景技术:

2.片上网络(network on chip,即noc)主要负责系统中不同组件之间的信息交互,因此,noc是现代多核处理器芯片中必不可少的部分。在多核处理器芯片中,由于所有组件间的数据交互都需要经过noc,因此,noc一般都是系统中最为繁忙的部分,其性能(包括带宽、延时等)会对系统的整体性能产生重要影响。同时,因为noc中的走线比较多,所以其网络拓扑既要考虑到性能需求,又要满足后端设计能力。
3.为了能设计出符合需求的noc,往往需要搭建不同的noc拓扑,所以需要进行大量的前期测试。现有的noc配置方法都只能针对特定的网络拓扑进行配置,比如mesh拓扑、ring拓扑、butterfly拓扑、crossbar拓扑等。但是,如果需要的网络拓扑不是特定的网络拓扑,则现有的noc配置方法就难以满足需求。并且现有的noc配置方法不够灵活,难以支持具有非固定路径的网络拓扑。
4.因此,期望提供一种灵活、简洁、通用性强且易于实施的noc配置方法,其不仅能够支持特定的noc拓扑,还能够支持复杂、不规则的noc拓扑,由此,能够适用于对各种noc拓扑进行配置。


技术实现要素:

5.根据本公开的第一个方面,提供了一种片上网络配置方法,其包括:从配置文件中获取待配置片上网络中各元素的配置信息,其中,所述配置信息包括所述各元素的拓扑类型,所述拓扑类型包括:仅具有一个输出端口的主元素、仅具有一个输入端口的从元素、仅具有一个输出端口和一个输入端口的单端元素、以及所具有的输入端口和输出端口两者中至少一者的数量大于1的多端元素;基于所述各元素的拓扑类型,确定所述各元素的每一个输出端口的输出传输路径和/或每一个输入端口的输入传输路径,其中,所述输出传输路径终止于一个从元素,所述输入传输路径起始于一个主元素;基于所确定的输出传输路径和/或输入传输路径,确定所述待配置片上网络中各元素之间的连接关系。
6.根据本公开的一些示例性实施例,所述配置信息还包括所述待配置片上网络中各元素的本地编号和器件类型,以及与所述器件类型对应的配置参数信息,并且其中,元素的拓扑类型和器件类型的组合被确定为所述元素的元素类型。
7.根据本公开的一些示例性实施例,各元素的本地编号是对各元素的非连续的初始编号进行映射而得到的,其中,各元素中具有相同的元素类型的元素的本地编号是连续的。
8.根据本公开的一些示例性实施例,所述片上网络配置方法还包括:将所述元素的元素类型和本地编号共同编码为所述元素的全局编号。
9.根据本公开的一些示例性实施例,所述将所述元素的元素类型和本地编号共同编
码为所述元素的全局编号包括:基于所述待配置片上网络中各元素的元素类型总数获得类型比特位数,其中,所述类型比特位数是用于表示所述元素类型总数所需比特位的最小数量;将所述本地编号向左移位所述类型比特位数个比特位,然后再与元素类型编号相加,以生成所述全局编号,其中,所述元素类型编号是基于所述元素类型总数分配给各元素类型的连续的编号。
10.根据本公开的一些示例性实施例,所述从配置文件中获取待配置片上网络中各元素的配置信息包括:从所述配置文件读取一行;确定所述一行描述的待配置元素没有重复出现过;对所述待配置元素的输入端口列表进行解析;对所述待配置元素的输出端口列表进行解析;将各输入端口和各输出端口的端口信息保存到所述待配置元素的元素信息中;保存所述待配置元素的配置参数信息。
11.根据本公开的一些示例性实施例,所述对所述待配置元素的输入端口列表进行解析包括:将与所述输入端口列表中的被解析输入端口相连的元素的全局编号保存到所述被解析输入端口的端口信息的节点编号中;当与所述被解析输入端口相连的元素是主元素时,将所述被解析输入端口的端口信息的节点编号保存到所述被解析输入端口的端口信息的编号队列中,将所述被解析输入端口的端口信息的发现标志置为真,以及将所述待配置元素的元素信息中的输入发现计数加1;当与所述被解析输入端口相连的元素既不是主元素也不是从元素时,将所述被解析输入端口的端口信息的发现标志置为假;将所述被解析输入端口的端口信息保存到所述待配置元素的元素信息的输入队列中。
12.根据本公开的一些示例性实施例,还包括:当与所述被解析输入端口相连的元素是从元素时,终止对所述待配置元素的输入端口列表进行解析并且提示所述配置文件存在错误。
13.根据本公开的一些示例性实施例,所述对所述待配置元素的输出端口列表进行解析包括:将与所述输出端口列表中的被解析输出端口相连的元素的全局编号保存到所述被解析输出端口的端口信息的节点编号中;当与所述被解析输出端口相连的元素是从元素时,将所述被解析输出端口的端口信息的节点编号保存到所述被解析输出端口的端口信息的编号队列中,将所述被解析输出端口的端口信息的发现标志置为真,以及将所述待配置元素的元素信息中的输出发现计数加一;当与所述被解析输出端口相连的元素既不是从元素也不是主元素时,将所述被解析输出端口的端口信息的发现标志置为假;将所述被解析输出端口的端口信息保存到所述待配置元素的元素信息的输出队列中。
14.根据本公开的一些示例性实施例,所述片上网络配置方法还包括:当与所述被解析输出端口相连的元素是主元素时,终止对所述待配置元素的输出端口列表进行解析并且提示所述配置文件存在错误。
15.根据本公开的一些示例性实施例,所述基于所述各元素的拓扑类型,确定所述各元素的每一个输出端口的输出传输路径和/或每一个输入端口的输入传输路径包括:当所述待配置元素的配置参数信息不包括额外配置的路径表时,遍历所述待配置片上网络中的各元素,计算得到所述待配置元素的每一个输出端口的输出传输路径以及每一个输入端口的输入传输路径;当所述待配置元素的配置参数信息包括额外配置的路径表时,根据所述路径表确定所述待配置元素的每一个输出端口的输出传输路径以及每一个输入端口的输入传输路径。
16.根据本公开的一些示例性实施例,所述当所述待配置元素的配置参数信息不包括额外配置的路径表时,遍历所述待配置片上网络中的各元素,计算得到所述待配置元素的每一个输出端口的输出传输路径以及每一个输入端口的输入传输路径包括:确定对所述待配置片上网络中的各元素进行遍历的次数小于遍历次数阈值;遍历每一个元素的元素信息的输入队列,计算得到每一个输入端口的输入传输路径;遍历每一个元素的元素信息的输出队列,计算得到每一个输出端口的输出传输路径。
17.根据本公开的一些示例性实施例,所述遍历每一个元素的元素信息的输入队列,计算得到每一个输入端口的输入传输路径包括:当被遍历元素的输入队列中的当前输入端口的端口信息的输入发现标志为假时,获得所述当前输入端口的端口信息的节点编号,并根据所述当前输入端口的端口信息的节点编号查询相连元素的元素信息的输入队列和输入发现计数;当相连元素的元素信息的输入发现计数等于输入队列的大小时,将相连元素的所有输入端口的端口信息的编号队列中的元素的全局编号保存到所述当前输入端口的端口信息的编号队列中,将所述被遍历元素的元素信息的输入发现计数加1,并且将所述当前输入端口的端口信息的发现标志置为真。
18.根据本公开的一些示例性实施例,所述遍历每一个元素的元素信息的输出队列,计算得到每一个输入端口的输入传输路径包括:当被遍历元素的输出队列中的当前输出端口的端口信息的发现标志为假时,获得所述当前输出端口的端口信息的节点编号,并根据所述当前输出端口的端口信息的节点编号查询相连元素的元素信息的输出队列和输出发现计数;当相连元素的元素信息的输出发现计数等于输出队列的大小时,将相连元素的所有输出端口的端口信息的编号队列中的元素的全局编号保存到所述当前输出端口的端口信息的编号队列中,将所述被遍历元素的元素信息的输出发现计数加1,并且将所述当前输出端口的端口信息的发现标志置为真。
19.根据本公开的一些示例性实施例,所述基于所确定的输出传输路径和/或输入传输路径,确定所述待配置片上网络中各元素之间的连接关系还包括:根据所述配置参数信息对所述各元素进行实例化,以获得具有对应的元素类型的各实例化元素,其中,各元素的本地编号被分别作为对应的实例化元素的编号。
20.根据本公开的一些示例性实施例,所述基于所确定的输出传输路径和/或输入传输路径,确定所述待配置片上网络中各元素之间的连接关系还包括:根据所述输出传输路径和/或所述输入传输路径,在各实例化元素的端口之间建立绑定关系,以确定所述待配置片上网络中各元素之间的网络连接关系。
21.根据本公开的一些示例性实施例,所述根据所述输出传输路径和所述输入传输路径,在各实例化元素的端口之间建立绑定关系包括:在两个非多端元素的实例化元素的端口之间建立绑定关系;在一个多端元素的实例化元素与一个非多端元素的实例化元素的端口之间建立绑定关系;在两个多端元素的实例化元素的端口之间建立绑定关系。
22.根据本公开的一些示例性实施例,所述在一个多端元素的实例化元素与一个非多端元素的实例化元素的端口之间建立绑定关系包括:根据所述一个多端元素的实例化元素的每一个输出端口的输出传输路径以及每一个输入端口的输入传输路径,建立与所述一个非多端元素的实例化元素的对应端口之间的绑定关系。
23.根据本公开的一些示例性实施例,所述在两个多端元素的实例化元素的端口之间
建立绑定关系包括:当第一实例化多端元素的一个端口的传输路径中包括第二实例化多端元素的全局编号时,记录所述第一实例化多端元素的全局编号、所述一个端口的端口编号、所述第二实例化多端元素的全局编号;当所述第二实例化多端元素的另一个端口的传输路径包括所述第一实例化多端元素的全局编号时,获取所述一个端口的端口编号,从而在所述一个端口与所述另一个端口之间建立绑定关系。
24.根据本公开的第二个方面,提供了一种片上网络配置装置,其包括:配置文件解析模块,其被配置成:从配置文件中获取待配置片上网络中各元素的配置信息,其中,所述配置信息包括所述各元素的拓扑类型,所述拓扑类型包括:仅具有一个输出端口的主元素、仅具有一个输入端口的从元素、仅具有一个输出端口和一个输入端口的单端元素、以及所具有的输入端口和输出端口两者中至少一者的数量大于1的多端元素;传输路径确定模块,其被配置成:基于所述各元素的拓扑类型,确定所述各元素的每一个输出端口的输出传输路径和/或每一个输入端口的输入传输路径,其中,所述输出传输路径终止于一个从元素,所述输入传输路径起始于一个主元素;连接关系确定模块,其被配置成:基于所确定的输出传输路径和/或输入传输路径,确定所述待配置片上网络中各元素之间的网络连接关系。
25.根据本公开的一些示例性实施例,所述配置信息还包括所述待配置片上网络中各元素的本地编号和器件类型,以及与所述器件类型对应的配置参数信息,元素的拓扑类型和器件类型的组合被确定为所述元素的元素类型,并且其中所述连接关系确定模块包括:元素实例化子模块,其被配置成:根据所述配置参数信息对所述各元素进行实例化,以获得具有对应的元素类型的各实例化元素;端口绑定子模块,其被配置成:根据所述输出传输路径和所述输入传输路径,在所述各实例化元素的端口之间建立绑定关系,以确定所述待配置片上网络中各元素之间的网络连接关系。
26.根据本公开的第二个方面,提供了一种存储介质,所述存储介质存储有可执行指令,其中,所述可执行指令被执行时,执行根据本公开的第一个方面及其各示例性实施例所述的片上网络配置方法。
27.根据本公开的片上网络配置方法至少具有下述有益的技术效果:配置文件中的每一行以一个元素为中心进行描述,配置格式简洁,不易出错或遗漏;支持固定路径和非固定路径的网络拓扑,因此,适用于任何类型的网络拓扑,尤其是对复杂、不规则拓扑也可以很好地支持;易于实施。因此,利用根据本公开的片上网络配置方法能够快速地搭建出不同的网络拓扑,方便进行大量的前期测试,使得能够针对不同系统获得性能最优的片上网络。
附图说明
28.下面将结合附图对本公开的具体实施例进行详细的描述,以便能够对本公开的更多细节、特征和优点具有更加充分的认识和理解;在附图中:图1以流程图的形式示意性地示出了根据本公开的一些示例性实施例的一种noc配置方法;图2根据本公开的一些示例性实施例,进一步示出了图1所示的noc配置方法的一些细节;图3根据本公开的一些示例性实施例,示意性地示出了可用于图2所示的方法中对输入端口列表进行解析的一种解析流程;
图4根据本公开的一些示例性实施例,进一步示出了图2所示的配置方法的一些细节;图5根据本公开的一些示例性实施例,示意性地示出了可用于图2所示的方法中对输出端口列表进行解析的一种解析流程;图6根据本公开的一些示例性实施例,进一步示出了图2所示的配置方法的一些细节;图7以框图的形式示意性地示出了根据本公开的一些示例性实施例的一种noc的局部连接;图8根据本公开的一些示例性实施例,进一步示出了图1所示的配置方法的一些细节;图9根据本公开的一些示例性实施例,示意性地示出了图8所示的配置方法的一些细节;图10根据本公开的一些示例性实施例,示意性地示出了可用于图9所示方法中以遍历方式确定各元素的路径表的一种计算流程;图11根据本公开的一些示例性实施例,进一步示出了图9所示的配置方法的一些细节;图12根据本公开的一些示例性实施例,进一步示出了图9所示的配置方法的一些细节;图13根据本公开的一些示例性实施例,进一步示出了图1所示的配置方法的一些细节;图14根据本公开的一些示例性实施例,进一步示出了图13所示的配置方法的一些细节;图15根据本公开的一些示例性实施例,进一步示出了图14所示的配置方法的一些细节;图16以框图的形式示意性地示出了根据本公开的一些示例性实施例的noc配置装置的结构;以及图17根据本公开的一些示例性实施例,进一步示出了图16所示的noc配置装置的一些细节。
29.应理解的是,附图中显示的内容都仅仅是示意性的,因此,其不必按照比例进行绘制。此外,在全部附图中,相同或相似的特征由相同或相似的附图标记指示。
具体实施方式
30.下文中的描述提供了本公开的各示例性实施例的具体细节,以使本领域的技术人员能够充分理解以及实施根据本公开的各示例性实施例描述的技术方案。
31.首先,对本公开下文中针对各示例性实施例的描述中涉及的部分术语进行说明,以使本领域技术人员能够更好地理解本发明。
32.片上网络:在本公开中,该术语是指一种应用于片上系统(system on chip,即soc)的(尤其是针对多核片上系统的)、采用了数据路由和分组交换技术的片上通信架构。相比传统的共享总线的通信架构,noc从体系结构上解决了soc总线结构由于地址空间有限
导致的可扩展性差、分时通讯引起的通讯效率低下、以及全局时钟同步引起的功耗和面积等问题,因而noc成为多核技术的重要组成部分。
33.元素:在本公开中,该术语是指构成noc的网络拓扑中的一个节点的网络部件,其具有至少一个输入端口和/或至少一个输出端口。在本公开中,noc的元素可以具有相应的拓扑类型和器件类型。因此,noc中的一个元素可以根据对应于器件类型的配置参数信息被实例化成noc中用到的相应的器件,包括但不限于,显示器件、路由器、芯片内核、移位器、存储器、位宽转换器、延时器、多路复用器、多路解复用器,等等。
34.参见图1,其以流程图的形式示意性地示出了根据本公开的一些示例性实施例的一种noc配置方法。如图1所示,noc配置方法100包括步骤110、120和130。
35.在步骤110,从配置文件中获取待配置片上网络中各元素的配置信息,其中,所述配置信息包括所述各元素的拓扑类型,所述拓扑类型包括:仅具有一个输出端口的主元素、仅具有一个输入端口的从元素、仅具有一个输出端口和一个输入端口的单端元素、以及所具有的输入端口和输出端口两者中至少一者的数量大于1的多端元素。
36.配置文件是预先生成的,例如,可以是用户根据所需的网络拓扑而编写的。在配置文件中,根据设计的noc拓扑,可以对待配置noc中的每一个元素所需的配置信息进行描述。例如,元素的配置信息可以包括其拓扑类型。在本公开中,元素的拓扑类型指示了一个元素在noc的网络拓扑中的节点类型。根据本公开,可以按照元素的输入端口和输入端口的数量来确定该元素的拓扑类型,具体而言,可以根据元素的输入端口和输入端口的数量将该元素确定为主元素、从元素、单端元素和多端元素中的一种。主元素只有一个输出端口,作为非限制性示例,主元素在noc的实际架构中可以是芯片内核等。从元素只具有一个输入端口,作为非限制性示例,从元素在noc的实际架构中可以是存储器等,例如,双倍数据速率存储器(即ddr存储器)。单端元素只具有一个输入端口和一个输出端口,因此,在noc的网络拓扑中,单端元素是信息传输路径中的中间元素。作为非限制性示例,单端元素在noc的实际架构中可以是位宽转换器、延时器等。多端元素具有的输出端口和输入端口两者中至少一者的数量大于1,因此,在noc的网络拓扑中,多端元素也是信息传输路径中的中间元素。作为非限制性示例,多端元素在noc的实际架构中可以是路由器、多路复用器、多路解复用器等。此外,由于多端元素可能包括多条路径选择需求,因此,在配置文件中可以为多端元素增加一个是否需要额外配置路径表的参数,并设置有缺省值。如果需要,则可以按照额外配置的路径表来配置该多端元素,如果不需要,则可以通过计算得到该多端元素的路径表。
37.应理解的是,在本公开中,术语“输入端口”和“输出端口”是针对noc中一种信息的传输来对各元素的端口进行的区分。具体而言,在noc中存在两种信息,一种是请求信息,其由主元素产生,一种是响应信息,其由从元素在接收到请求信息后作为响应而产生。在针对请求信息的传输方向进行考虑时,各元素中输出请求信息的端口是输出端口,各元素中接收请求信息的端口则是输入端口。在这种情况下,主元素仅具有一个输出端口,从元素仅具有一个输入端口,单端元素仅具有一个输出端口和一个输入端口,多端元素具有的输入端口和输出端口两者中至少一者的数量大于1。类似地,在针对响应信息的传输方向进行考虑时,各元素中输出响应信息的端口是输出端口,各元素中接收响应信息的端口则是输入端口。在这种情形中,发送响应信息的从元素可以被视为主元素,并且其仅具有一个输入端口,接收响应信息的主元素可以被视为从元素,并且其仅具有一个输出端口,单端元素依然
仅具有一个输出端口和一个输入端口,多端元素仍然是所具有的输入端口和输出端口两者中至少一者的数量大于1。
38.在noc的网络拓扑中,一个请求信息对应一个响应信息:请求信息从主元素产生,可以直接到达从元素,或者可以经过中间元素到达从元素;从元素收到请求信息后,会产生响应信息,然后该响应信息可以直接返回主元素,或者经过中间元素返回给主元素。因此,请求信息的传输方向和响应信息的传输方向成镜像关系,或者说,响应信息的传输方向和请求信息的传输方向互为反方向。在本公开中,如没有特别说明的情况下,均认为请求信息的传输方向和响应信息的传输方向成镜像关系。因此,本公开的各示例性实施例中,虽然配置文件中描述的各元素的连接关系是根据请求信息的传输方向来描述的,但应理解的是,根据响应信息的传输方向来描述也是可以的。此外,如果出现请求信息的传输方向和响应信息的传输方向是非镜像关系,那么则需要针对请求信息的传输方向和响应信息的传输方向分别确定元素的输出端口和输入端口,分别确定该元素的拓扑类型并相应地进行描述,并随后分别进行解析和端口绑定。在本公开下面对各示例性实施例的描述中,各元素的输出端口和输入端口,以及相应的拓扑类型都是针对请求信息的传输方向来定义的。然而,应理解的是,当针对响应信息的传输方向而重新定义各元素的输出端口和输出端口以及相应的拓扑类型时,本公开描述的技术方案同样是成立的。
39.在本公开的一些示例性实施例中,元素的配置信息还包括所述待配置片上网络中各元素的本地编号和器件类型,以及与所述器件类型对应的配置参数信息,并且其中,元素的拓扑类型和器件类型的组合被确定为所述元素的元素类型。
40.在本公开中,元素的器件类型指示了一个元素在noc的实际架构中所对应的器件的类型。配置参数是该元素要实例化对应的器件时,所需要的与该类器件对应的各项参数。由此,在配置文件中,根据设计的noc拓扑,对待配置noc中的每一个元素的元素类型、连接关系、配置参数进行了描述。作为非限制性示例,配置文件的每一行可以包括一个元素的信息(例如,该元素的元素类型,以及该元素的输入端口的连接关系和/或输出端口的连接关系)和配置参数信息,并且每一行的基本格式可以是:本元素的元素类型及编号:[本元素的输入端口的相连元素的元素类型及编号]:[本元素的输出端口的相连元素的元素类型及编号]:[本元素的参数列表]。对于同一种类型的元素,其参数列表应当一致。
[0041]
上述基本格式中,如果本元素的输入侧有多个相连元素,则每一个相连元素之间可用逗号隔开,类似地,如果本元素的输出侧有多个相连元素,则每一个相连元素之间也可用逗号隔开。应理解的是,上述基本格式中,“:”、“[”和“]”都是作为标记符,以便在解析的时候方便进行解析,任何其他合适的标记符也是可能的,本公开对此不作限制。应理解的是,在本公开中,术语“相连元素”或“相连的元素”是指两个元素的对应的端口彼此直接连接,不存在任何居间的元素。此外,在一些示例性实施例中,配置参数信息中还可以设置某些参数的缺省值(或默认值),以便当参数列表中没有此参数的配置时,可以使用缺省值来进行配置。还应理解的是,配置文件也可以采用任何合适的格式来描述一个元素的相关信息,例如以多个行来描述一个元素的相关信息。本公开对于配置文件描述元素的相关信息的具体格式不作限制。
[0042]
noc中出现的每一种元素类型均可以采用相应的字符来进行标识。作为非限制性示例,如果一个元素的器件类型是gpu且拓扑类型为主元素,那么可以将该元素的元素类型
标识为g-m,其中,g表示其器件类型为gpu,m表示其拓扑类型为主元素。又例如,如果一个元素的器件类型是显示器件且拓扑类型为主元素,那么可以将该元素的元素类型标识为d-m,其中,d表示其器件类型为显示器件,m表示其拓扑类型为主元素。类似地,如果一个元素的器件类型是存储器且拓扑类型为从元素,那么可以将该元素的元素类型标识为s-s,其中,前一个s表示其器件类型为存储器,后一个s表示其拓扑类型为从元素。再例如,如果一个元素的器件类型是位宽转换器且拓扑类型为单端元素,那么可以将该元素的元素类型标识为c-sp,其中,c表示其器件类型为位宽转换器,sp表示其拓扑类型为单端元素。此外,如果一个元素的器件类型是路由器且拓扑类型为多端元素,那么可以将该元素的元素类型标识为r-mp,其中,r表示其器件类型为路由器,mp表示其拓扑类型为多端元素。
[0043]
在noc中,同一元素类型的元素可能会存在多个,因此,需要对相同元素类型的多个元素进行编号以便区分,该编号被称为元素的本地编号。在相同的元素类型下,元素的本地编号不能重复出现,并且可以是以1依次递增的。当然,不同元素类型之间,元素的本地编号是可以重复出现的。在本公开的一些示例性实施例中,同一元素类型的元素的编号也可以不需要以1依次递增,而是只需要编号不重复出现便可。这样的编号可以被称为元素的初始编号。在采用元素的初始编号的情况下,为了方便在后续环节中的处理,可以设置一个映射关系表,以便将各元素的初始编号一一映射到以1依次递增的本地编号序列上。
[0044]
在根据本公开的noc配置方法中,使用[元素类型
·
本地编号]的组合体作为每个元素的唯一标识,因此,该组合体可以被称作该元素的全局标识。为了方便进行配置,在配置文件中还可以给每一种元素类型定义一个编号。作为非限制性示例,元素类型的编号可以从0开始,然后以1依次递增,编号之间不能有空缺。由此,基于元素类型的编号和元素的本地编号,可以对两者进行编码,以便将该元素的全局标识编码为对应的全局编号。
[0045]
作为非限制性示例,可以按照下述方式生成元素的全局编码:ele_type_bit_num = ceil (log2(total_element_type_number)),global_id = (local_id 《《 ele_type_bit_num ) + element_type;其中,total_element_type_number是noc中各元素的元素类型总数,ele_type_bit_num是类型比特位数,其是表示该元素类型总数所需的比特位的最小数量,local_id是元素的本地编号,global_id是元素的全局编号,element_type是元素类型编号。根据上述方式,基于noc中的元素类型总数total_element_type_number获得类型比特位数ele_type_bit_num,然后将本地编号local_id向左移位类型比特位数ele_type_bit_num个比特位,将移位后的值与元素类型编号element_type相加,所得的和就是该元素的全局编号global_id。由此可见,一个元素的全局编号global_id实质上包含该元素的元素类型和本地编号两者的信息。换言之,当获得一个元素的全局编号时,可以基于该全局编号解析得到该元素的元素类型和本地编号。
[0046]
参见图2并结合参见图1,其根据本公开的一些示例性实施例,进一步示出了图1所示的noc配置方法100中步骤110的细节。如图2所示,noc配置方法100中的步骤110可以进一步包括步骤110-1、110-2、110-3、110-4、110-5和110-6:在步骤110-1,从所述配置文件读取一行;在步骤110-2,确定所述一行描述的待配置元素没有重复出现过;在步骤110-3,对所述待配置元素的输入端口列表进行解析;
在步骤110-4,对所述待配置元素的输出端口列表进行解析;在步骤110-5,将所述输入端口和所述输出端口的端口信息保存到所述待配置元素的元素信息中;在步骤110-6,保存所述待配置元素的配置参数信息。
[0047]
如前面已经说明的,配置文件的每一行描述了一个元素的元素信息和配置参数信息。因此,步骤110-1中,从配置文件中读取一行实际上就是从配置文件中获取对一个待配置元素进行配置所需的相关信息。步骤110-2中,通过检查所获得的待配置元素的初始编号或者本地编号是否已经重复出现过,可以确定待配置元素有没有重复出现过。如果待配置元素的初始编号或者本地编号重复出现过,那么就能判定该待配置元素重复出现,由此,可以发出错误代码以结束配置方法,以及还可以提示用户该配置文件存在错误。
[0048]
在根据本公开的noc配置方法100中,为了便于对待配置元素的信息进行解析和保存,定义了以下两种数据结构体:1)端口信息pin_info,其包括:用于保存相连元素的全局编号的节点编号node_id、待配置元素的端口编号self_pin_id、发现标志find_flg、以及编号队列id_queue,其中,发现标志find_flg的初始值设为假,编号队列id_queue中保存该端口的传输路径中所有元素的全局编号,其中,该传输路径如果是输出传输路径,则其终止于一个从元素,该传输路径如果是输入传输路径,则其开始于一个主元素;2)元素信息noc_element,其包括:输入队列input_queue、输出队列output_queue、待配置元素类型的参数列表parameter_list、输入发现计数input_find_cnt、以及输出发现计数output_find_cnt,其中,输入队列input_queue中保存的是待配置元素的各输入端口的端口信息pin_info,输出队列output_queue中保存的是待配置元素的各输出端口的端口信息pin_info。
[0049]
需要说明的是,在下文中为了便于进行描述,采用“数据结构.结构内信息”的格式来表示各数据结构中包括的信息。例如,对于端口信息而言,当需要表示端口信息中的发现标志时,可以将其表示为pin_info.find_flg。类似地,数据结构内的其他信息也可以采用这样的格式进行描述。
[0050]
参见图3并结合参见图2,其根据本公开的一些示例性实施例,示意性地示出了一种可用于图2所示的方法中的步骤110-3的解析流程。如图3所示,对输入端口列表的解析流程200从框201开始,并行进到框202;在框202处,将临时端口编号temp_pin_id的初始值赋为0,并行进到框203;在框203处判断待配置元素的输入端口列表是否已经全部解析完毕,如果已经全部解析完毕,则跳转到框213,结束该解析流程,如果没有全部解析完毕,则继续行进到框204;在框204处,根据临时端口编号temp_pin_id和从配置文件获得的元素信息对被解析输入端口的端口信息赋值,具体地,可以将临时端口编号temp_pin_id的值赋给被解析输入端口的端口信息的端口编号pin_info.self_pin_id,并且将从配置文件获得的相连元素的全局编码赋给被解析输入端口的端口信息的节点编号pin_info.node_id,并行进到框205;在框205处判断相连元素是否为主元素,如果相连元素是主元素,则行进到框206;在框206处,将被解析输入端口的端口信息的发现标志pin_info.find_flg置为真,并且将被解析输入端口的端口信息的节点编号pin_info.node_id保存到被解析输入端口的端口信息的编号队列pin_info.id_queue中,并行进到框207;在框207处,将待配置元素的元素信
息的输入发现计数noc_element.input_find_cnt加1,并行进到框208;在框208处,将被解析输入端口的端口信息pin_info保存到待配置元素的输入队列noc_element.input_queue中,并行进到框209;在框209处,将临时端口编号temp_pin_id的值加1,并且跳转到框203处重新进行判断;此外,在框205处,如果相连元素不是主元素,则跳转到框210;在框210处判断相连元素是否为从元素;如果相连元素是从元素,则行进到框212,生成第1错误代码error_code_1,然后跳转到框213,结束该解析流程;如果相连元素不是从元素,则行进到框211;在框211处将被解析输入端口的端口信息的发现标志pin_info.find_flg置为假,然后行进到框208,之后继续进行框208、209的操作。
[0051]
通过图3所示的对输入端口列表的解析流程200,能够为配置文件中每一行描述的待配置元素的每一个输入端口解析出一个相连元素,并确定该相连元素为主元素(此时,端口信息的发现标志pin_info.find_flg的值被置为真)或者为中间元素(此时,端口信息的发现标志pin_info.find_flg的值被置为假)。如果与一个输入端口相连的元素是中间元素,那么后续还需要确定该输入端口的输入传输路径,这将在下文中详细描述。
[0052]
此外,在图3所示的框212处,描述了关于配置文件的第一错误代码error_code_1,该错误代码提示了下述配置文件错误:从元素出现在了某个元素的输入列表中。在本公开中,配置文件是用户提供的,因此,解析过程中需要检查配置文件中描述的配置是否满足一定的约束条件,如果不满足,需要及时终止解析,并返回对应的错误代码以提示用户。作为非限制性示例,针对图1所示的noc配置方法100所用的配置文件,定义了下述类型的错误代码:第0错误代码(error_code_0):配置文件错误,存在出现了重复的初始编号的行;第1错误代码(error_code_1):配置文件错误,从元素出现在了某个元素的输入列表中;第2错误代码(error_code_2):配置文件错误,主元素出现在了某个元素的输出列表中;第3错误代码(error_code_3):配置文件错误,路径表的计算过程超出了遍历次数阈值;格式错误代码(format_error):配置文件的格式错误,比如出现了一些重要的标识符错误;参数错误代码(parameters_error):配置文件行的元素参数列表错误,比如某种元素必须配置某个参数,但配置文件的该行中却没有。
[0053]
参见图4并结合参见图2和图3,其根据本公开的一些示例性实施例,进一步示出了图2所示方法中步骤110-3的细节。如图4所示,步骤110-3可以进一步包括步骤110-3a、110-3b、110-3c和110-3d:在步骤110-3a,将与所述输入端口列表中的被解析输入端口相连的元素的全局编号保存到所述被解析输入端口的端口信息的节点编号中;在步骤110-3b,当与所述被解析输入端口相连的元素是主元素时,将所述被解析输入端口的端口信息的节点编号保存到所述被解析输入端口的端口信息的编号队列中,将所述被解析输入端口的端口信息的发现标志置为真,以及将所述被配置元素的元素信息中的输入发现计数加1;
在步骤110-3c,当与所述被解析输入端口相连的元素既不是主元素也不是从元素时,将所述被解析输入端口的端口信息的发现标志置为假;在步骤110-3d,将所述被解析输入端口的端口信息保存到所述待配置元素的元素信息的输入队列中。
[0054]
参见图5并结合参见图2,其根据本公开的一些示例性实施例,示意性地示出了一种可用于图2所示的方法中的步骤110-4的解析流程。如图5所示,对输出端口列表的解析流程300从框301开始,并行进到框302;在框302处,将临时端口编号temp_pin_id的初始值赋为0,并行进到框303;在框303处判断待配置元素的输出端口列表是否已经全部解析完毕,如果已经全部解析完毕,则跳转到框313,结束该解析流程,如果没有全部解析完毕,则继续行进到框304;在框304处,根据临时端口编号temp_pin_id和从配置文件获得的元素信息对被解析输出端口的端口信息赋值,具体地,可以将临时端口编号temp_pin_id的值赋给被解析输出端口的端口信息的端口编号pin_info.self_pin_id,并且将从配置文件获得的相连元素的全局编码赋给被解析输出端口的端口信息的节点编号pin_info.node_id,并行进到框305;在框305处判断相连元素是否为从元素,如果相连元素是从元素,则行进到框306;在框306处,将被解析输出端口的端口信息的发现标志pin_info.find_flg置为真,并且将被解析输出端口的端口信息的节点编号pin_info.node_id保存到被解析输出端口的端口信息的编号队列pin_info.id_queue中,并行进到框307;在框307处,将待配置元素的元素信息的输出发现计数noc_element.output_find_cnt加1,并行进到框308;在框308处,将被解析输出端口的端口信息pin_info保存到待配置元素的输出队列noc_element.output_queue中,并行进到框309;在框309处,将临时端口编号temp_pin_id的值加1,并且跳转到框303处重新进行判断;此外,在框305处,如果相连元素不是从元素,则跳转到框310;在框310处判断相连元素是否为主元素;如果相连元素是主元素,则行进到框312,生成第2错误代码error_code_2,然后跳转到框313,结束该解析流程;如果相连元素不是主元素,则行进到框311;在框311处将被解析输出端口的端口信息的发现标志pin_info.find_flg置为假,然后行进到框308,之后继续进行框308、309的操作。
[0055]
通过图5所示的对输出端口列表的解析流程300,能够为配置文件中每一行描述的待配置元素的每一个输出端口解析出一个相连元素,并确定该相连元素为从元素(端口信息的发现标志pin_info.find_flg为真)或者为中间元素(端口信息的发现标志pin_info.find_flg为假)。如果与一个输出端口相连的元素是中间元素,那么后续还需要确定该输出端口的输出传输路径,这将在下文中详细描述。
[0056]
参见图6并结合参见图2和图5,其根据本公开的一些示例性实施例,进一步示出了图2所示方法中步骤110-4的细节。如图6所示,步骤110-4可以进一步包括步骤110-4a、110-4b、110-4c和110-4d:在步骤110-4a,将与所述输出端口列表中的被解析输出端口相连的元素的全局编号保存到所述被解析输出端口的端口信息的节点编号中;在步骤110-4b,当与所述被解析输出端口相连的元素是从元素时,将所述被解析输出端口的端口信息的节点编号保存到所述被解析输出端口的端口信息的编号队列中,将所述被解析输出端口的端口信息的发现标志设为真,以及将所述待配置元素的元素信息中的输出发现计数加一;
在步骤110-4c,当与所述被解析输出端口相连的元素既不是从元素也不是主元素时,将所述被解析输出端口的端口信息的发现标志设为假;在步骤110-4d,将所述被解析输出端口的端口信息保存到所述待配置元素的元素信息的输出队列中。
[0057]
返回参考图1,在noc配置方法100的步骤110中,作为非限制性示例,可以采用元素映射表来存储输入端口和输出端口的端口信息,该元素映射表的键(即key)是元素的全局编号,其值(value)是对应的元素信息。此外,还可以采用多个映射表来分别存储不同元素类型的配置参数信息,其中,这些映射表的键同样可以是元素的全局编号,值为该元素类型特有的参数集合或参数列表。
[0058]
参见图7,其以框图的形式示意性地示出了根据本公开的一些示例性实施例的一种noc的局部连接,该局部连接可以图1至图6的方法进行描述和解析。如图7所示,该局部连接包括6个器件,即:gpu内核gpu0和gpu1,路由器router0、router1和router2,以及存储器storage0。利用前文描述的[元素类型
·
本地编号]的组合体,上述各器件作为该noc的局部连接中的元素的唯一标识分别为:g-m0、g-m1、r-mp0、r-mp1、r-mp2以s-s0。由此可见,gpu内核gpu0和gpu1是主元素,存储器storage0是从元素,路由器router0、router1和router2是多端元素。利用前文描述的生成全局编号的方法,可以生成元素g-m0、g-m1、r-mp0、r-mp1、r-mp2以s-s0各自的全局编号。具体而言,对于图7所示的noc的局部连接,元素类型总数total_element_type_number的值为3。因为表示3种元素类型所需的比特位的最小数量为2,因此,类型比特位数ele_type_bit_num的值为2。此外,设定元素类型g-m的元素类型编号element_type的值为0,元素类型r-mp的元素类型编号element_type的值为1,元素类型s-s的元素类型编号element_type的值为2。利用前文描述的公式global_id = (local_id 《《 ele_type_bit_num ) + element_type,可以得到该局部连接中的元素g-m0、g-m1的全局编号分别为0和4,元素r-mp0、r-mp1、r-mp2的全局编号分别为1、5和9,元素s-s的全局编号为2。
[0059]
作为非限制性示例,针对路由器router1,配置文件可以在一行中将其描述为:r-mp1:[g-m0, g-m1, r-mp0]:[s-s0, r-mp2],其中,[g-m0, g-m1, r-mp0]描述了元素r-mp1的各输入端口的相连元素的元素信息和本地编号,[s-s0, r-mp2]描述了元素r-mp1的各输出端口的相连元素的元素信息和本地编号。
[0060]
在对元素r-mp1的输入端口列表和输出端口列表分别进行解析后,元素r-mp1的元素信息的输入队列noc_element.input_queue中具有下述三个输入端口的端口信息:pin_info0:self_pin_id的值为0,node_id的值为相连的元素g-m0的全局编号0,find_flg的值为真,id_queue中保存node_id的值(即,元素g-m0的全局编号0);pin_info1:self_pin_id的值为1,node_id的值为相连的元素g-m1的全局编号4,find_flg的值为真,id_queue中保存node_id的值(即,元素g-m1的全局编号4);pin_info2:self_pin_id的值为2,node_id的值为相连的元素r-mp0的全局编号1,find_flg的值为假。
[0061]
元素r-mp1的元素信息的输出队列noc_element.output_queue中具有下述两个输出端口的端口信息:pin_info0:self_pin_id的值为0,node_id的值为相连的元素s-s0的全局编号2,
find_flg的值为真,id_queue中保存node_id的值(即,元素s-s0的全局编号2);pin_info1:self_pin_id的值为1,node_id的值为相连的元素r-mp2的全局编号9,find_flg的值为假。
[0062]
因此,元素r-mp1的输入发现计数input_find_cnt的值为2,元素r-mp1的输出发现计数output_find_cnt的值为1。
[0063]
继续参见图1,在其所示的noc配置方法100的步骤120中,确定所述各元素的每一个输出端口的输出传输路径和/或以及每一个输入端口的输入传输路径,其中,所述输出传输路径终止于一个从元素,所述输入传输路径起始于一个主元素。
[0064]
如前面已经描述,在对待配置noc的各个元素的各个端口进行解析后可以发现,并非每一个元素的每一个端口都与主元素或者从元素相连,而是一些端口连接到诸如单端元素或多端元素这样的中间元素。因此,对于解析后确定的连接到中间元素的端口,需要确定其传输路径,具体而言,确定输出端口的输出传输路径以及输入端口的输入传输路径,其中,输出传输路径终止于一个从元素,输入传输路径起始于一个主元素。
[0065]
图8根据本公开的一些示例性实施例,进一步示出了图1所示的noc配置方法100的步骤120的细节。如图8所示,noc配置方法100的步骤120可以进一步包括步骤120-1、120-2和120-3:在步骤120-1,查找所述待配置片上网络中各元素的配置参数信息,以确定是否包括额外配置的路径表;在步骤120-2,当所述待配置元素的配置参数信息不包括额外配置的路径表时,遍历所述待配置片上网络中的各元素,计算得到所述待配置元素的每一个输出端口的输出传输路径以及每一个输入端口的输入传输路径;在步骤120-3,当所述待配置元素的配置参数信息包括额外配置的路径表时,根据所述路径表确定所述待配置元素的每一个输出端口的输出传输路径以及每一个输入端口的输入传输路径。
[0066]
在步骤120-3中,对于待配置元素,可以从配置文件中得到的配置参数信息中查找额外配置的路径表,然后直接进行配置即可;同时,根据配置的路径表计算其他没有配置路径表的元素的传输路径,以得到待配置元素的各输入端口的输入传输路径上的所有元素的全局编号(这些全局编号被存入对应输入端口的端口信息的编号队列中,并且该端口信息的发现标志被置为真),并且还得到待配置元素的各输出端口的输出传输路径上的所有元素的全局编号(类似地,这些全局编号被存入对应的输出端口的端口信息的编号队列中,并且该端口信息的发现标志被置为真),以及将待配置元素的输入发现计数和输出发现计数分别赋值为其输入端口的端口数和输出端口的端口数。
[0067]
在步骤120-2中,对于待配置元素,则需要通过遍历待配置noc的所有元素进行计算,得到每个元素的各输入端口的输入传输路径上的所有元素的全局编号,以及每个元素的各输出端口的输出传输路径上的所有元素的全局编号,从而确定所述待配置元素的每一个输出端口的输出传输路径以及每一个输入端口的输入传输路径。取决于拓扑的复杂性,该计算过程可能需要重复多次,但绝不会无限次在重复。因此,为了及时发现配置文件中的配置错误,可以设置一个遍历次数阈值。如果已经重复计算的次数达到了遍历次数阈值,则说明配置文件存在错误,应终止确定传输路径的过程并提示用户。
[0068]
参见图9并结合参见图8,其根据本公开的一些示例性实施例,示意性地示出了图8所示的方法中的步骤120-2的一些细节。如图9所示,图8所示的方法的步骤120-2可以进一步包括步骤120-2a、120-2b和120-2c:在步骤120-2a,确定对所述待配置片上网络中的各元素进行遍历的次数小于遍历次数阈值;在步骤120-2b,遍历每一个元素的元素信息的输入队列,以计算得到每一个输入端口的输入传输路径;在步骤120-2c,遍历每一个元素的元素信息的输出队列,以计算得到每一个输出端口的输出传输路径。
[0069]
参见图10,其根据本公开的一些示例性实施例,示意性地示出了可用于图9所示方法中以遍历方式确定各元素的路径表的计算流程。如图10所示,计算流程400从框401开始,并行进到框402;在框402处,将遍历计数traverse_level_cnt赋值为0,并行进到框403;在框403处,判断各元素的元素信息的输入发现计数input_find_cnt和输出发现计数output_find_cnt是否分别与各元素的输入端口的端口数和输出端口的端口数一致,如果一致,则行进到框419,如果不一致则行进到框404;在框419处,由于各元素的元素信息的输入发现计数input_find_cnt和输出发现计数output_find_cnt分别与各元素的输入端口的端口数和输出端口的端口数一致,所以根据所有输入端口和输出端口的端口信息pin_info,得到路径表,并行进到框421结束该计算流程;在框404处,由于各元素的元素信息的输入发现计数input_find_cnt和输出发现计数output_find_cnt分别与各元素的输入端口的端口数和输出端口的端口数不一致,所以需要进行遍历,因此将遍历计数traverse_level_cnt加1,并行进到框405;在框405处,判断遍历计数traverse_level_cnt是否大于或等于遍历计数阈值traverse_threshold,如果是,则行进到框420,如果否,则行进到框406;在框420处,生成第3错误代码error_code_3,并行进到框421结束该计算流程;在框406处,判断是否已经遍历所有元素,如果是,则返回到框403,如果否,则行进到框407;在框407处,判断对于进行遍历的一个元素,是否已经遍历了该元素的输入队列input_queue,如果否,则行进到框408,如果是,则行进到框413;在框408处,判断该元素的输入队列input_queue中的一个端口信息的发现标志pin_info.find_flg是否为假,如果否,则返回到框407,如果是,则行进到框409;在框409处,基于标志pin_info.find_flg为假的该端口的端口信息的节点编号pin_info.node_id,查询相连元素的元素信息的输入队列node_id.input_queue和输入发现计数node_id.input_find_cnt,并行进到框410;在框410处,判断相连元素的元素信息的输入队列node_id.input_queue的大小是否等于其输入发现计数node_id.input_find_cnt,如果否,则返回到框407,如果是,则行进到框411;在框411处,将该相连元素的所有输入端口的端口信息的编号队列中的元素的全局编号保存到进行遍历的元素的该端口信息的编号队列pin_info.id_queue中,并行进到框412;在框412处,将进行遍历的元素的输入发现计数noc_element.input_find_cnt加1,并且将该端口信息的发现标志pin_info.find_flg置为真;在框413处,判断该元素的输出队列output_queue中的一个端口信息的发现标志pin_info.find_flg是否为假,如果是,则返回到框406,如果否,则行进到框414;在框414处,判断该元素的输出队列output_queue中的一个端口信息的发现标志pin_info.find_flg是否为假,如果否,则返回到框413,如果是,则行进到框415;在框415处,基
于标志pin_info.find_flg为假的该端口的端口信息的节点编号pin_info.node_id,查询相连元素的元素信息的输出队列node_id.output_queue和输出发现计数node_id.output_find_cnt,并行进到框416;在框416处,判断相连元素的元素信息的输出队列node_id.output_queue的大小是否等于其输出发现计数node_id.output_find_cnt,如果否,则返回到框413,如果是,则行进到框417;在框417处,将该相连元素的所有输出端口的端口信息的编号队列中的元素的全局编号保存到进行遍历的元素的该端口信息的编号队列pin_info.id_queue中,并行进到框418;在框418处,将进行遍历的元素的输出发现计数noc_element.output_find_cnt加1,并且将该端口信息的发现标志pin_info.find_flg置为真。
[0070]
利用图10所示的计算流程400,能够以遍历的方式对待配置noc中每一个元素计算得到其对应的路径表,从而能够确定每一个元素的每一个端口的传输路径。由此,根据本公开的noc配置方法适用于各种noc拓扑,对复杂、不规则拓扑也可以支持。
[0071]
参见图11并结合参见图9和图10,其根据本公开的一些示例性实施例,进一步示出了图9所示的方法中的步骤120-2b的一些细节。如图11所示,图9所示的方法中的步骤120-2b可以进一步包括步骤120-2b-1、120-2b-2和120-2b-3:在步骤120-2b-1,当被遍历元素的输入队列中的当前输入端口的端口信息的输入发现标志为假时,获得所述当前输入端口的端口信息的节点编号,并根据所述当前输入端口的端口信息的节点编号查询相连元素的元素信息的输入队列和输入发现计数;在步骤120-2b-2,当相连元素的元素信息的输入发现计数等于输入队列的大小时,将相连元素的所有输入端口的端口信息的编号队列中的元素的全局编号保存到所述当前输入端口的端口信息的编号队列中;在步骤120-2b-3,将所述被遍历元素的元素信息的输入发现计数加1,并且将所述当前输入端口的端口信息的发现标志置为真。
[0072]
图11所示的方法对应于图10所示的计算流程中框418沿所有判断为“是”的路线直到框412的分支。因此,图11的方式实际上描述了如何根据相连元素的信息确定被遍历元素的输入端口的传输路径。
[0073]
参见图12并结合参见图9和图10,其根据本公开的一些示例性实施例,进一步示出了图9所示的方法中的步骤120-2c的一些细节。如图11所示,图9所示的方法中的步骤120-2b可以进一步包括步骤120-2c-1、120-2c-2和120-2c-3:在步骤120-2c-1,当被遍历元素的输出队列中的当前输出端口的端口信息的发现标志为假时,获得所述当前输出端口的端口信息的节点编号,并根据所述当前输出端口的端口信息的节点编号查询相连元素的元素信息的输出队列和输出发现计数;在步骤120-2c-2,当相连元素的元素信息的输出发现计数等于相连元素的元素信息的输出队列的大小时,将相连元素的所有输出端口的端口信息的编号队列中的元素的全局编号保存到所述当前输出端口的端口信息的编号队列中;在步骤120-2c-3,将所述被遍历元素的元素信息的输出发现计数加1,并且将所述当前输出端口的端口信息的发现标志置为真。
[0074]
图12所示的方法对应于图10所示的计算流程中框414沿所有判断为“是”的路线直到框418的分支。因此,图12的方法实际上描述了如何根据相连元素的信息确定被遍历元素的输出端口的传输路径。
[0075]
通过图9、图10、图11、图12所示的示例,根据本公开的noc配置方法不仅适用于固定路径的网络拓扑,也适用于非固定路径的网络拓扑,由此,能够适用于各种noc拓扑,尤其是对复杂、不规则拓扑能够很好地加以支持。
[0076]
返回参见图1,在其所示的noc配置方法100的步骤130中,基于所确定的输出传输路径和/或输入传输路径,确定所述待配置片上网络中各元素之间的连接关系。
[0077]
参见图13,其根据本公开的一些示例性实施例,进一步示出了图1所示的方法中的步骤130的一些细节。如图13所示,图1所示的方法中的步骤130可以进一步包括步骤131和132:在步骤131,根据所述配置参数信息对所述各元素进行实例化,以获得具有对应的元素类型的各实例化元素,其中,各元素的本地编号被分别作为对应的实例化元素的编号;在步骤132,根据所述输出传输路径和/或所述输入传输路径,在各实例化元素的端口之间建立绑定关系,以确定所述待配置片上网络中各元素之间的网络连接关系。
[0078]
待配置noc中各元素的配置参数信息在前面已经被解析和保存,因此,在进行元素的实例化时,只需要读取已保存的配置参数并且对相应类型的元素进行赋值便可。作为非限制性示例,在进行元素的实例化时,可以将各元素的元素本地编号分别对应地作为各实例化元素的编号。应理解的是,各实例化元素具有对应的器件类型,因此,构成了待配置noc网络中的对应的器件,例如但不限于,gpu、路由器、存储器、位宽转换器、延时器、多路复用器、多路解复用器,等等。
[0079]
而根据所述输出传输路径和/或所述输入传输路径,在各实例化元素的端口之间建立绑定关系,实质上就是在信息的传输路径的意义上,建立起各实例化元素的端口之间的连接关系,使得待配置noc中每一个“请求”信息(由主元素产生)和每一个“响应”信息(由从元素产生)具有确定的传输路径(由各中间元素构成),由此,每一个主元素产生的请求信息能够经由特定的传输路径传输到对应的从元素,并且从元素产生的对应的响应信息能够经由相同的传输路径返回给该主元素。通过在所述各实例化元素的端口之间建立起绑定关系,从而完成对该noc的配置。应理解的是,一般情况下,沿着响应信息方向的传输路径相对于沿着请求信息方向的传输路径而言,是一个镜像的传输路径,也就是说,请求信息方向和响应信息方向都成镜像关系。因此,本公开在不特别说明情况下,认为请求信息方向和响应信息方向成镜像关系,因而配置文件中的连接关系也可以都按照请求信息方向来定义。然而,如果请求信息方向和响应信息方向是非镜像关系,则需要针对请求信息方向和响应信息方向单独使用各自的配置、并分别进行解析和端口绑定。当然,无论是沿着响应信息方向还是沿着请求信息方向,根据本公开的noc配置方法都是适用的。
[0080]
应理解的是,由于端口绑定只需要做一次,然而如果两个元素在配置文件中的关系是互为输入和输出关系,那么配置文件中针对两者的连接关系的描述会出现两次。例如,以图7中示出的局部连接为例,元素g-m1(对应于器件gpu1)和元素r-mp1(对应于器件router1)互为输入和输出关系,因此,在配置文件中,在对元素g-m1描述的一行中,元素r-mp1是与元素g-m1的输出端口相连的元素,而在对元素r-mp1描述的一行中,元素g-m1是与元素r-mp1的输入端口相连的元素,也就是说,在配置文件中针对元素g-m1和元素r-mp1之间的连接关系的描述出现了两次。所以,在进行绑定时需要确定一个规则,是从连接关系的输入端的元素进行绑定,还是从输出端的元素进行绑定。
[0081]
此外,如前面描述的,在待配置noc中各元素的拓扑类型包括主元素、从元素、单端元素和多端元素,因此,可能出现的元素类型连接关系如下所示:主元素

从元素;主元素

单端元素;主元素

多端元素;单端元素

从元素;单端元素

多端元素;单端元素

单端元素;多端元素

从元素;多端元素

多端元素;多端元素

单端元素。
[0082]
因此,元素的端口绑定可以被分为下述三类情形:1)两个非多端元素的实例化元素之间的绑定,包括:主元素

从元素、主元素

单端元素、单端元素

从元素、单端元素

单端元素;2)一个多端元素类型的实例化元素与一个非多端元素的实例化元素之间的绑定,包括:主元素

多端元素、单端元素

多端元素、多端元素

从元素、多端元素

单端元素;3)两个多端元素的实例化元素之间的绑定。
[0083]
参见图14,其根据本公开的一些示例性实施例,进一步示出了图13所示的方法中的步骤132的一些细节。如图14所示,图13所示的方法中的步骤132进一步包括步骤132-1、132-2和132-3:在步骤132-1,在两个非多端元素的实例化元素的端口之间建立绑定关系;在步骤132-2,在一个多端元素的实例化元素与一个非多端元素的实例化元素的端口之间建立绑定关系;在步骤132-3,在两个多端元素的实例化元素的端口之间建立绑定关系。
[0084]
步骤132-1中,可以任意选择按照输入端元素进行绑定,还是从输出端元素进行绑定。步骤132-2中,必须按照多端元素的实例化元素进行绑定。也就是说,必须根据多端元素的实例化元素的各个端口的端口信息去寻找相连元素的对应的端口,然后将两者进行绑定。具体而言,根据所述一个多端元素的实例化元素的每一个输出端口的输出传输路径以及每一个输入端口的输入传输路径,建立与所述一个非多端元素的实例化元素的对应端口之间的绑定关系。步骤132-3中,需要经过两次轮询,才能建立两者的绑定关系。具体而言,第一次轮询到该连接信息时,可以记录该连接信息,等第二次轮询到这个连接信息时,就能够得到两个多端元素的实例化元素的对应的两个端口的端口编号,然后就可以进行绑定。
[0085]
参见图15,其根据本公开的一些示例性实施例,进一步示出了图14所示的方法中的步骤132-3的一些细节。如图15所示,图14所示的方法中的步骤132-3进一步包括步骤132-3a和132-3b:在步骤132-3a,当第一实例化多端元素的一个端口的传输路径中包括第二实例化多端元素的全局编号时,记录所述第一实例化多端元素的全局编号、所述一个端口的端口编号、所述第二实例化多端元素的全局编号;在步骤132-3b,当所述第二实例化多端元素的另一个端口的传输路径包括所述第
一实例化多端元素的全局编号时,获取所述另一个端口的端口编号,并且在所述一个端口与所述另一个端口之间建立绑定关系。
[0086]
与相关技术相比,根据本公开的各示例性实施例的noc配置方法至少具有下述优点:配置文件中的每一行为一个元素的连接关系信息和配置参数信息,配置格式简洁,不易出错;支持固定路径和非固定路径的网络拓扑,因此能够根据需要设计任何类型的网络拓扑,尤其是对复杂、不规则拓扑也可以很好地支持;方法易于实施。
[0087]
参见图16,其以框图的形式,示意性地示出了根据本公开的一些示例性实施例的noc配置装置的结构。如图16所示,noc配置装置500包括:配置文件解析模块510、传输路径确定模块520和连接关系确定模块530。
[0088]
配置文件解析模块510被配置成:从配置文件中获取待配置片上网络中各元素的配置信息,其中,所述配置信息包括所述各元素的拓扑类型,所述拓扑类型包括:仅具有一个输出端口的主元素、仅具有一个输入端口的从元素、仅具有一个输出端口和一个输入端口的单端元素、以及所具有的输入端口和输出端口两者中至少一者的数量大于1的多端元素。传输路径确定模块520被配置成:基于所述各元素的拓扑类型,确定所述各元素的每一个输出端口的输出传输路径和/或每一个输入端口的输入传输路径,其中,所述输出传输路径终止于一个从元素,所述输入传输路径起始于一个主元素。连接关系确定模块530被配置成:基于所确定的输出传输路径和/或输入传输路径,确定所述待配置片上网络中各元素之间的网络连接关系。
[0089]
参见图17,其根据本公开的一些示例性实施例,以框图的形式示意性地示出了图16中所示的noc配置装置的细节。如图17所示,图16中所示的noc配置装置500中的连接关系确定模块530包括元素实例化模块530-1和端口绑定模块530-2。配置文件解析模块510获得的各元素的配置信息还包括待配置片上网络中各元素的本地编号和器件类型,以及与所述器件类型对应的配置参数信息,其中,元素的拓扑类型和器件类型的组合被确定为所述元素的元素类型。元素实例化模块530-1被配置成:根据所述配置参数信息对所述各元素进行实例化,以获得具有对应的元素类型的各实例化元素。端口绑定模块530-2被配置成:根据所述输出传输路径和所述输入传输路径,在所述各实例化元素的端口之间建立绑定关系。应理解的是,noc配置装置500的上述各个模块的功能对应于前述noc配置方法中的各步骤,故在此不再赘述。
[0090]
上面关于图16和图17描述的各个模块均可以在软件、硬件或在结合软件和/或固件的硬件中实现。例如,这些模块可以被实现为计算机可执行代码/指令,该计算机可执行代码/指令被配置为在一个或多个处理器中执行并存储在计算机可读存储介质中。替换地,这些模块可以被实现为硬件逻辑/电路,例如包括但不限于,微控制器、微处理器、数字信号处理器(dsp)等)、存储器、一个或多个通信接口、和/或其他电路中的一个或多个部件),等等。
[0091]
此外,根据本公开的各示例性实施例的noc配置方法可以使用可由计算设备访问的任何形式的计算机可读存储介质来实施,例如但不限于,以存储有计算机可执行指令的计算机可读存储介质的形式,其中,计算机可执行指令当在处理器上执行时,使该处理器执行根据本公开的预处理方法和加速方法。计算机可读存储介质可以包括通过用于存储信息的任何方法或技术实施的易失性和非易失性、可移除和不可移除存储介质,信息诸如是计
算机可读指令、数据结构、程序模块或者其他数据。计算机可读存储介质可以包括而不限于ram、rom、eeprom、闪存或其他存储器技术,cd-rom、数字通用盘(dvd)、或其他光学存储装置,磁盒、磁带、磁盘存储装置或其他磁性存储设备,或者可以被用来存储信息以供计算设备访问的任何其他存储介质。
[0092]
本公开中使用的术语仅用于描述本公开中的实施例,并不意图限制本公开。如本文中使用的,单数形式“一个”、“一”和“该”旨在也包括复数形式,除非上下文清楚地另有指示。还要理解的是,术语“包括”和“包含”当在本公开中使用时,是指所述及的特征的存在,但不排除一,个或多个其他特征的存在或者添加一个或多个其他特征。如本文中使用的,术语“和/或”包括相关联的列出项目中的一个或多个的任意和全部组合。将理解的是,尽管术语“第一”、“第二”、“第三”等在本文中可以用来描述各种特征,但是这些特征不应当由这些术语限制。这些术语仅用来将一个特征与另一个特征相区分。
[0093]
除非另有定义,本公开中使用的所有术语(包括技术术语和科学术语)具有与本公开所属领域的普通技术人员所通常理解的相同含义。还要理解的是,诸如那些在通常使用的字典中定义的之类的术语应当被解释为具有与其在相关领域和/或本说明书上下文中的含义相一致的含义,并且将不在理想化或过于正式的意义上进行解释,除非本公开中明确地如此定义。
[0094]
在本说明书的描述中,术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点被包含于本公开的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
[0095]
应理解的是,在流程图中表示或在此以其他方式描述的方法的各个步骤仅仅示例性的,并不意味着所图示或描述的方法的步骤必须按照所示或所述的步骤执行。相反,在流程图中表示或在此以其他方式描述的方法的各个步骤可以按照与本公开中不同的顺序被执行,或者可以同时被执行。此外,根据需要,在流程图中表示或在此以其他方式描述的方法还可以包括其他附加的步骤。
[0096]
尽管已经结合一些示例性实施例详细地描述了本公开,但是其不旨在被限制于在本文中所阐述的特定形式。相反,本公开的范围仅由所附权利要求来限定。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1