一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种面向多芯粒组合芯片的片上网络仿真系统的制作方法

2022-12-10 20:49:11 来源:中国专利 TAG:


1.本发明属于多核/众核处理器的通信领域,尤其涉及一种面向多芯粒组合芯片的片上网络仿真系统。


背景技术:

2.随着深度学习的不断发展导致训练深度神经网络的计算需求增加,推进了人工智能专用芯片的研究。为了打破芯片性能的瓶颈,下一代智能芯片chiplet采用多芯粒的方式组合,片上网络作为多芯粒之间的通信的主要方式,对芯片性能有着极大的关联。为了芯片设计者能直观的评估chiplet的性能,需要片上网络模拟器对多芯粒之间的通信进行仿真。
3.由于多芯粒芯片chiplet的异构特性,传统的片上网络模拟器无法对其进行仿真,需要一种模拟器能仿真异构拓扑的片上网络。


技术实现要素:

4.本技术实施例的目的是为了提高多芯粒芯片设计初期探索的效率,针对现有技术的不足,提供一种面向多芯粒组合芯片的片上网络仿真系统。
5.根据本技术实施例的第一方面,提供一种面向多芯粒组合芯片的片上网络仿真系统,包括:片上网络生成单元,用于根据多芯粒组合芯片特征生成片上网络的抽象模型,包括芯片配置模块、拓扑抽象模块和路由器生成模块,所述芯片配置模块用于获取芯片描述信息并对所述芯片描述信息进行解析,所述拓扑抽象模块用于根据解析后的芯片描述信息生成片上网络的拓扑结构,所述路由器生成模块用于初始化路由器节点;数据路由仿真单元,用于对测试数据在片上网络的运行进行仿真并输出所述测试数据在所述片上网络的仿真时间、路由所需的总周期数以及由所述测试数据切分而成的每个数据包的平均延迟,包括参数配置模块、事件生成模块、事件队列模块和事件处理模块,所述参数配置模块用于获取仿真环境设置和测试数据,所述事件生成模块用于生成事件并加入到事件队列,所述事件队列模块用于维护事件队列,将事件按触发时间顺序排列,所述事件处理模块用于从所述事件队列模块中取出事件并执行。
6.进一步地,所述路由器生成模块对于网络拓扑中的任意路由器参数都能独立配置,以形成异构网络,从而模拟多芯粒间路由的网络拥塞。
7.进一步地,所述路由器参数包括输入端口数量,输出端口数量,虚拟通道数量,缓存大小。
8.进一步地,所述事件生成模块用于生成四种事件,分别为数据注入事件、路由器流水处理事件、数据传输事件、片上网络状态更新事件。
9.进一步地,所述数据注入事件由所述测试数据中的数据注入时间触发,根据仿真环境设置,将测试数据切分成数据包,载入起始地址的路由器输入缓存中。
10.进一步地,所述路由器流水处理事件用于模拟路由器的工作过程,所述工作过程
包括以五级流水线进行的五个阶段:路由计算阶段、虚拟通道分配阶段、交叉开关分配阶段、输出缓存分配阶段及输出冲突检测阶段。
11.进一步地,该五个阶段包括:第一阶段,所述路由计算阶段调用路由算法计算当前数据包的下一跳方向,即输出端口,并进入下一阶段,如果当前数据包已到达目的路由器,则计算数据包路由的周期数;第二阶段,所述虚拟通道分配阶段使数据包竞争当前端口缓存中空闲的虚拟通道,如果竞争到空闲虚拟通道,则进入下一阶段,否则等待;第三阶段,所述交叉开关分配阶段使数据包竞争当前交叉开关的空闲端口,如果竞争到空闲端口,则进入下一阶段,否则等待;第四阶段,所述输出缓存分配阶段使数据包竞争空闲缓存的位置,如果竞争到空闲缓存,则进入下一阶段,否则等待;第五阶段,所述输出冲突检测阶段对下一跳路由器的输入缓存进行检测,如果下一跳路由器的输入缓存有空闲,则生成数据传输事件,否则等待。
12.进一步地,所述路由算法包括:步骤一:根据当前地址和目的地址中的前两维芯粒坐标,判断数据包与目的地址是否在同一芯粒,如已在同一芯粒,进行步骤五;如不在同一芯粒,根据坐标判断目的芯粒相对于起始芯粒的相对方向,采用先横向移动到目的芯粒所在列,再纵向移动到目的芯粒所在行的策略,其中所述目的芯粒为所述目的地址所在芯粒;步骤二:进行跨芯粒路由时,数据包根据所述目的芯粒的方向先横向移动到当前芯粒的片间路由器,由当前片间路由器进入下一个芯粒的片间路由器;步骤三:数据包由芯粒的片间路由器进入芯粒的内部节点时,随机选择一个与片间路由器相连的节点进入;步骤四:重复步骤二继续横向移动,直到到达所述目的芯粒的所在列,进行纵向移动,直到到达所述目的芯粒;步骤五:在所述目的芯粒内部,横向移动至所述目的地址的所在列,再纵向移动至所述目的地址,根据步骤一至步骤五中移动的路径计算周期数。
13.进一步地,所述数据传输事件由数据包需要发送至下一跳时触发,将经过路由器流水处理事件的数据包发送到下一跳路由器。
14.进一步地,所述片上网络状态更新事件由各节点的路由器缓存变化触发,用于实时更新路由器的输入输出缓存状态。
15.本技术的实施例提供的技术方案可以包括以下有益效果:由上述实施例可知,本技术通过在每个芯粒加上片间路由器并与芯粒内部的片内路由器相连,形成异构双层拓扑网络,使之可以仿真不同芯粒间的处理单元交互。对多芯粒芯片设计提供了性能评估,有利于芯片设计初期的探索;可灵活配置多芯粒芯片的各项参数,对不同规模的多芯粒芯片进行仿真。
16.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本技术。
附图说明
17.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本技术的实施例,并与说明书一起用于解释本技术的原理。
18.图1是根据一示例性实施例示出的一种面向多芯粒组合芯片的片上网络仿真系统的示意图。
19.图2是根据一示例性实施例示出的多芯粒组合芯片的模型。
20.图3是根据一示例性实施例示出的路由器坐标表示图。
21.图4是根据一示例性实施例示出的路由器体系结构图。
22.图5是根据一示例性实施例示出的数据包路由图。
具体实施方式
23.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本技术相一致的所有实施方式。
24.在本技术使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本技术。在本技术和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
25.应当理解,尽管在本技术可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本技术范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在
……
时”或“当
……
时”或“响应于确定”。
26.本技术公开了一种面向多芯粒组合芯片的片上网络仿真系统的示意图,如图1所示,该系统可以包括片上网络生成单元和数据路由仿真单元,所述片上网络生成单元用于根据多芯粒组合芯片特征生成片上网络的抽象模型,包括芯片配置模块、拓扑抽象模块和路由器生成模块,所述芯片配置模块用于获取芯片描述信息并对所述芯片描述信息进行解析,所述拓扑抽象模块用于根据解析后的芯片描述信息生成片上网络的拓扑结构,所述路由器生成模块用于根据片上网络拓扑上的节点初始化路由器;所述数据路由仿真单元用于对测试数据在片上网络的运行进行仿真并输出所述测试数据在所述片上网络的仿真时间、路由所需的总周期数以及由所述测试数据切分而成的每个数据包的平均延迟,包括参数配置模块、事件生成模块、事件队列模块和事件处理模块,所述参数配置模块用于获取仿真环境设置和测试数据,所述事件生成模块用于生成事件并加入到事件队列,所述事件队列模块用于维护事件队列,将事件按触发时间顺序排列,所述事件处理模块用于从所述事件队列模块中取出事件并执行。
27.由上述实施例可知,本技术通过在每个芯粒加上片间路由器并与芯粒内部的片内路由器相连,形成异构双层拓扑网络,使之可以仿真不同芯粒间的处理单元交互。对多芯粒芯片设计提供了性能评估,有利于芯片设计初期的探索;可灵活配置多芯粒芯片的各项参数,对不同规模的多芯粒芯片进行仿真。
28.以下结合附图,通过一个较佳的实施例,对本发明进行详细说明。
29.1. 如图1所示,片上网络仿真系统由片上网络生成单元和数据路由仿真单元组成。其中片上网络生成单元生成片上网络模型,其中,该单元包含路由器生成模块和拓扑抽象模块;数据路由仿真单元将模拟数据包在片上网络的运行,其中,该单元包括参数配置模块,事件生成模块,事件队列模块,事件处理模块。
30.2. 如图1所示,由片上网络生成单元生成片上网络仿真模型,将芯片描述信息输入芯片配置模块,芯片配置模块对所述芯片描述信息进行解析并将解析内容发送到路由器生成模块和拓扑抽象模块;芯片描述信息包括每个芯粒内部处理单元的阵列大小和多芯粒阵列的大小,以及路由器的参数配置表,参数包括输入端口数量,输出端口数量,虚拟通道数量,缓存大小,流水线一拍所需周期数,解析内容则是把输入的芯片描述信息表经过程序处理后的结构化信息,方便后续各个模块调用。
31.2.1拓扑抽象模块将根据芯片描述生成片上网络的拓扑结构,如图2所示,在一实施例中,片上网络拓扑结构由4个芯粒组成,每个芯粒由16个处理单元组成,芯粒内部的网络通信由片内路由器负责,芯粒之间的通信由分布在芯粒东南西北的四个片间路由器负责,片间路由器除了对接其他芯粒的片间路由器,还与所处芯粒的边缘片内路由器通信。片上网络的各个节点用四维坐标表示,如图3所示,前两个坐标表示当前所处芯粒的位置,后两位坐标表示当前节点在芯粒内部的坐标,由于片间路由器无法用二维坐标表示芯粒内部的坐标,用-1标识两个方向的片间路由器。
32.2.2 路由器生成模块将根据片上网络拓扑上的节点初始化路由器,所述路由器生成模块对于网络拓扑中的任意路由器参数都可独立配置,形成异构网络,从而模拟多芯粒间路由的网络拥塞。所述路由器参数包括输入端口数量,输出端口数量,虚拟通道数量,缓存大小,流水线一拍所需周期数。路由器参数默认使用全局配置,也可创建单独的配置表对每一个路由器进行详细定制。
33.3.如图1所示,由数据路由仿真单元模拟数据包在片上网络运行,将仿真条件及测试数据输入参数配置模块,确定仿真环境后开始进行仿真。仿真以事件为单位推进整个过程,由一个优先队列来维护事件,事件生成模块根据当前环境产生新的事件加入队列,事件处理模块从事件队列取出一个事件执行。
34.3.1 参数配置模块用于获取仿真环境设置和测试数据,在具体实施中,将根据表1和表2形式的数据作为输入。
35.表1 仿真环境设置表表2 测试数据格式3.2 事件生成模块事件生成模块用于生成四种事件并加入到事件队列,上述四种事件分别为数据注入事件、路由器流水处理事件、数据传输事件、片上网络状态更新事件。
[0036] 3.2.1 数据注入事件由输入的测试数据中数据注入时间触发。
[0037]
3.2.2所述路由器流水处理事件用于模拟路由器的工作过程。
[0038]
3.2.3 数据传输事件由数据包需要发送至下一跳时触发。
[0039]
3.2.4 片上网络状态更新事件由各节点的路由器缓存变化触发。
[0040]
3.3 事件队列模块将维护事件生成模块产生的各种事件,每个事件都有一个触发时间的时间戳,将事件按触发时间顺序排列。
[0041]
3.4 事件处理模块将从事件队列中取出一个事件,根据不同的事件执行不同的函数。3.4.1 数据注入事件,根据仿真环境设置,将测试数据切分成数据包,载入起始地址的路由器输入缓存中。
[0042]
3.4.2 路由器流水处理事件,如图4所示,所述工作过程包括路由计算阶段、虚拟通道分配阶段、交叉开关分配阶段、输出缓存分配阶段及输出冲突检测阶段,这五个阶段以五级流水线进行。
[0043]
第一阶段,所述路由计算阶段调用路由算法计算当前数据包的下一跳方向,即输出端口,并进入下一阶段,如果当前数据包已到达目的路由器,则计算数据包路由的周期数;第二阶段,所述虚拟通道分配阶段使数据包竞争当前端口缓存中空闲的虚拟通道,如果竞争到空闲虚拟通道,则进入下一阶段,否则等待;第三阶段,所述交叉开关分配阶段使数据包竞争当前交叉开关的空闲端口,如果竞争到空闲端口,则进入下一阶段,否则等待;第四阶段,所述输出缓存分配阶段使数据包竞争空闲缓存的位置,如果竞争到空闲缓存,则进入下一阶段,否则等待;第五阶段,所述输出冲突检测阶段对下一跳路由器的输入缓存进行检测,如果下一跳路由器的输入缓存有空闲,则生成数据传输事件,否则等待;以上流水线处理在注入大量数据包时,能高效的模拟片上网络的拥塞状况。
[0044]
3.4.3 数据传输事件,将经过路由器流水处理事件的五级流水线的数据包发送到下一跳路由器。
[0045]
3.4.4 片上网络状态更新事件,用于实时更新路由器的输入输出缓存状态,这是因为路由器的输入输出缓存发生变化将影响数据包在各节点能否正确传输,需要此事件实时更新状态。
[0046]
需要说明的是,所述事件处理模块中涉及的事件设置有对应的函数,函数的设计为本领域的常规设计,此处不作赘述。
[0047]
4. 当事件队列为空时,则仿真结束,仿真系统最终给出仿真时间,测试数据在该片上网络模型路由所需的总周期数以及由测试数据切分而成的每个数据包的平均延迟。
[0048]
具体地,所述仿真时间为仿真系统实际运行的时间,数据包路由总周期数则为最后一个数据包到达时间和第一个数据包注入时间之差,每个数据包的平均延迟等于仿真总周期数除以数据包数量。
[0049]
具体地,所述路由器流水处理事件中的路由算法,可采用适配多芯粒的xy路由算法,步骤一:根据当前地址和目的地址中的前两维芯粒坐标,判断数据包与目的地址是否在同一芯粒,进行步骤五;如不在同一芯粒,根据坐标判断目的芯粒相对于起始芯粒的相对方向,采用先横向移动到目的芯粒所在列,再纵向移动到目的芯粒所在行的策略,其中所述目的芯粒为所述目的地址所在芯粒;
步骤二:进行跨芯粒路由时,数据包根据目的芯粒的方向先横向移动到当前芯粒的片间路由器,由当前片间路由器进入下一个芯粒的片间路由器;步骤三:数据包由芯粒的片间路由器进入芯粒的内部节点时,由于一个片间路由器连接着多个内部节点,因此采用随机选择算法,随机选择一个与片间路由器相连的节点进入;步骤四:重复步骤二继续横向移动,直到到达目的芯粒所在列,进行纵向移动,直到到达目的芯粒;步骤五:在所述目的芯粒内部,横向移动至所在列,再纵向移动至目的地址,根据数据包到达时间和数据包注入时间,两者相减得到数据包路由周期数。
[0050]
结合图4,展示一个五级流水线实施例。具体步骤如下:步骤一:输入端口2接收到一个来自上游节点的数据包,调用路由算法计算该数据包的下一跳方向需要从输出端口3发送。
[0051]
步骤二:查看输入端口2的输入缓存,检查三条虚拟通道的状态后得,虚拟通道1空闲,将数据包放入虚拟通道1中。
[0052]
步骤三:检查当前交叉开关的状态,当前数据包所处的交叉开关端口空闲,允许发送到输出端口3的交叉开关路径。
[0053]
步骤四:数据包经过交叉开关后,检查输出端口3的输出缓存状态,输出缓存有空闲,则将数据包放入。
[0054]
步骤五:数据包已到达输出端口3,准备发送,此时需要检查端口3对应的下游路由器是否有缓存来接受数据包,如有,则产生数据传输事件,等待对应事件来进行下一步。
[0055]
结合图5,展示一个实施例,图中以节点(0,0,2,2)为起始地址,节点(1,1,4,3)为目的地址,有向箭头为移动路径。具体步骤如下:步骤一:由节点坐标可知,起始地址和目的地址不在统一芯粒,要先移动到芯粒(1,0,x,x),再移动到目的芯粒(1,1,x,x);步骤二:先要横向移动到最右边的当前芯粒片间路由器(0,0,5,-1),再进入下一个芯粒的片间路由器(1,0,0,-1);步骤三:随机选择一个内部节点(1,0,1,3)进入当前芯粒内部;步骤四:重复以上步骤,到达目的芯粒内部节点(1,1,2,1);步骤五:在芯粒内部按照先横后纵到达目的节点(1,1,4,3)。每经过一个节点路由器需要经过五级流水线,消耗5个周期,芯粒内部路由器传输到下一跳消耗1个周期,片间路由器传输到下一跳消耗15个周期,以上过程经过了14个路由器,13次传输,其中4次为片间路由器传输,综上,14*5 (13-4)*1 4*15=139,即单个数据包不考虑网络拥塞情况路由需要139个周期。
[0056]
本领域技术人员在考虑说明书及实践这里公开的内容后,将容易想到本技术的其它实施方案。本技术旨在涵盖本技术的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本技术的一般性原理并包括本技术未公开的本技术领域中的公知常识或惯用技术手段。
[0057]
应当理解的是,本技术并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献