CN102761473B - 部件模型间通信的模拟及路由方法、并行事务级模拟*** - Google Patents
部件模型间通信的模拟及路由方法、并行事务级模拟*** Download PDFInfo
- Publication number
- CN102761473B CN102761473B CN201110110822.1A CN201110110822A CN102761473B CN 102761473 B CN102761473 B CN 102761473B CN 201110110822 A CN201110110822 A CN 201110110822A CN 102761473 B CN102761473 B CN 102761473B
- Authority
- CN
- China
- Prior art keywords
- communication
- partial model
- port
- annexation
- matrix
- 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
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Computer And Data Communications (AREA)
Abstract
一种建立部件模型间通信的模拟方法,包括:将所述部件模型以矩阵形式分布,确定所述矩阵的维数;根据所述部件模型的类型,将所述矩阵分成子矩阵,基于所述矩阵的维数及所述子矩阵在所述矩阵中的位置生成分布表达式;基于所述部件模型在所述矩阵中的位置坐标和待模拟的部件模型间的连接关系生成连接关系表达式;检查所述分布表达式和连接关系表达式的逻辑是否正确,若正确则基于所述连接关系表达式,生成并行事务级模拟***的描述文件。本发明公开的技术方案提高了并行事务级模拟***的开发效率,降低了维护部件模型和并行事务级模拟***的开销。
Description
技术领域
本发明涉及硬件***中并行事务级模拟仿真技术,尤其是一种建立部件模型间通信的模拟方法、路由方法、通信模块、部件模型及并行事务级模拟***。
背景技术
在大规模硬件***设计中,并行事务级模拟仿真的方法是一项重要的技术手段。并行事务级模拟通常采用设计包含***级模拟器的并行事务级模拟***来模拟目标***。其中***级模拟器中的部件模型模拟目标***中的功能部件。
由于大规模硬件***的模拟具有其特殊性,比如硬件***规模巨大,硬件***的结构复杂,功能部件种类繁多,功能部件之间的连接关系复杂,因此***级模拟器的开发时间较长,开销较大。在并行事务级模拟***的设计过程中,通常期望设计开发的***级模拟器能够具有长期价值,部件模型及***级模拟器可以重复使用。但是由于部件模型既要实现逻辑功能又要实现通信功能,不同的***中,部件模型的逻辑功能和通信功能不尽相同,这导致部件模型的可重用性较差,相应的***级模拟器的重用性也较差。另外,***级模拟器通常用于目标***的验证,由于在设计过程中目标硬件***的结构经常变化繁多,相应的***级模拟器也要变化,从而部件模型的设计也会发生变化,同理部件模型的变化也会牵动***级模拟器的变化。两者的变化是相互的,进行修改时,两者也互相牵制。
目前的并行事务级建模方法无法保证***级模拟器和部件模型的设计过程分离,也就是并行事务级模拟***的设计与部件模型的设计两者无法分离,导致两者的设计过程无法独立。其中任意一者的修改必然导致另一者的修改,这使得并行事务级模拟***的开发效率较低,且后期的修改和维护难度较大,开发成本也较高。
2009年公开发表在《ANALYSIS,ARCHITECTURES AND MODELLINGOF EMBEDDED SYSTEMS,IFIP Advances in Information and CommunicationTechnology》上的论文《Efficient Parallel Transaction Level Simulation byExploiting Temporal Decoupling》(作者:Rauf Salimi Khaligh and MartinRadetzki,Volume 310/2009,pp.149-158,2009)公开了一个并行事务级模拟平台,该平台基于OSCI的SystemC模拟器实现,其主要目的是通过挖掘事务级模拟中的时间解耦性质来获取并行模拟的效率提升。然而,由于该方法基于标准的事务级模拟器SystemC实现,其运行开销和灵活性较差,且该方法没有考虑如何为***级模型的建模提供有效的支持。
但是如何降低部件模型和并行事务级模拟***之间的耦合度,提高并行事务级模拟***的开发效率,降低对部件模型和并行事务级模拟***维护的开销,成为目前亟待解决的问题之一。
发明内容
本发明解决的问题是降低部件模型和并行事务级模拟***之间的耦合度,提高并行事务级模拟***的开发效率,降低对部件模型和并行事务级模拟***维护的开销。
为解决上述问题,本发明提供了一种建立部件模型间通信的模拟方法,包括:
将所述部件模型以矩阵形式分布,确定所述矩阵的维数;
根据所述部件模型的类型,将所述矩阵分成子矩阵,基于所述矩阵的维数及所述子矩阵在所述矩阵中的位置生成分布表达式,所述分布表达式描述所述部件模型在所述矩阵中的位置坐标;
基于所述部件模型在所述矩阵中的位置坐标和待模拟的部件模型间的连接关系生成连接关系表达式,所述连接关系表达式描述所述部件模型之间的连接关系;
检查所述分布表达式和连接关系表达式的逻辑是否正确,若正确则基于所述分布表达式和连接关系表达式,生成并行事务级模拟***的描述文件,所述描述文件包含所述部件模型的位置坐标及连接关系,所述连接关系以源端部件模型的名称和位置坐标,目的端部件模型的名称和位置坐标表示,所述位置坐标为所述部件模型的标识;
所述分布表达式的逻辑正确是指所述部件模型的位置坐标与部件模型一一对应;所述连接关系表达式的逻辑正确是指所述连接关系表达式中包括每个部件模型的连接关系,且所述部件模型没有冗余的连接关系。
可选的,所述基于所述矩阵的维数及所述子矩阵在所述矩阵中的位置生成分布表达式包括:基于所述矩阵的维数及所述子矩阵在所述矩阵中的位置,确定预先建立的分布公式中的参数,得到所述分布表达式,所述分布公式为:
<xm,yn>,xm,yn=(i,j,+,-,×,÷,k),i∈[0,N],j∈[0,N],k∈N,m∈N,n∈N
其中<xm,yn>表示所述部件模型在所述矩阵中的位置坐标,xm表示横坐标,yn表示纵坐标,xm是i的函数,i基于所述矩阵的维数确定取值范围;yn是j的函数,j基于所述矩阵的维数确定取值范围,k表示常数,基于所述子矩阵在所述矩阵中的位置确定,N表示整数。
可选的,基于所述分布公式生成二维矩阵的分布公式为:
<xg,yh>,xg=a·i+b,yh=c·j+d,i=[0,A-1],j=[0,B1],a∈N,b∈N,c∈N,d∈N,g∈N,h∈N
所述二维矩阵的维数包括所述二维矩阵的行数和所述二维矩阵的列数,其中A表示所述二维矩阵的列数,B表示所述二维矩阵的行数;a为i的系数,c为j的系数,b,d为常数,a,b,c,d基于i和j的取值范围以及所述子矩阵在所述矩阵中的位置确定,N为整数。
可选的,所述基于所述部件模型在所述矩阵中的位置坐标和待模拟的部件模型间的连接关系生成连接关系表达式包括:基于所述部件模型在所述矩阵中的位置坐标、所述子矩阵在所述矩阵中的位置和待模拟的部件模型间的连接关系确定预先建立的连接关系公式中参数,得到所述连接关系表达式,所述连接关系公式为:
i∈[0,N],j∈[0,N],
n∈N,l∈N,p∈N,v∈N,u∈N
<xl,yp>和<xv,yu>表示具有连接关系的两个部件模型的位置坐标,n表示常数,N表示自然数。
可选的,在检查所述分布表达式和连接关系表达式的逻辑是否正确前,还包括:检查所述分布表达式和连接关系表达式是否符合预设的语法信息;所述语法信息包括所述分布公式和连接关系公式的拼写要求和运算法则。
可选的,所述建立部件模型间通信的模拟方法还包括:若所述分布表达式和连接关系表达式不符合所述语法信息和/或逻辑错误,则反馈出错信息。
可选的,所述部件模型的类型包括:处理器类型、内存类型、路由器类型。
可选的,所述矩阵为二维格栅、二维环网或三维格栅。
一种部件模型间通信的路由方法,包括:
利用所述的模拟方法生成并行事务级模拟***的描述文件;
获取通信源端的名称,所述通信源端为待建立通信连接的源端部件模型;
在所述并行事务级模拟***的描述文件中查找与所述通信源端对应的通信目的端的名称,所述通信目的端为与待建立通信连接的源端对应的目的端部件模型;
记录通信端口信息,所述通信端口信息包括所述通信源端的名称和位置坐标,通信目的端的名称和位置坐标;
基于所述通信端口信息为所述通信源端和通信目的端建立通信端口并配置通信通道。
可选的,所述描述文件还包括所述部件模型的类型,所述部件模型的类型为所述通信源端的类型,所述部件模型的类型包括:处理器类型、内存类型、路由器类型。
可选的,部件模型间通信的路由方法还包括在所述描述文件中查找与所述通信源端的类型相对应的部件模型的类型;所述通信端口信息还包括所述通信源端的类型。
一种通信模块,包括端口路由器、端口队列管理模块和通信控制器;
所述端口路由器,用以获取利用所述的模拟方法生成的并行事务级模拟***的描述文件,且获取通信源端的名称,所述通信源端为待建立通信连接的源端部件模型;还用以在所述描述文件中查找与所述通信源端对应的通信目的端的名称,所述通信目的端为与待建立通信连接的源端对应的目的端部件模型;还用以记录通信端口信息,所述通信端口信息包括所述通信源端的名称和位置坐标,通信目的端的名称和位置坐标;
所述通信控制器,用以获取事件包,所述事件包包括事件内容和发送该事件包的通信源端的端口的名称;
所述端口队列管理模块,用以从所述端口路由器获取与所述通信源端对应的通信端口信息,并基于所述通信端口信息建立通信端口;
所述通信端口包括:
端口配置模块,用以获取所述通信端口信息,且基于所述通信端口信息为通信源端和对应的通信目的端配置通信通道;
消息发送模块,用以从所述通信控制器获取所述事件包,将所述通信端口信息加入所述事件内容形成消息且通过所述通信通道发送所述消息。
可选的,所述通信控制器,还用以接收由通信源端发出的消息。
可选的,所述端口队列管理模块,还用以解析所述通信控制器接收的消息,获取该消息的事件内容和接收该消息的通信目的端的端口的名称。
可选的,所述通信端口还包括:消息处理模块,用以接收并处理所述端口队列管理模块解析获取的事件内容,并发送处理结果。
一种包括所述的通信模块的部件模型。
可选的,还包括部件逻辑,用于发出事件包或接收事件内容的处理结果。
一种包括如上所述的部件模型的并行事务级模拟***。
可选的,所述并行事务级模拟***还包括并行宿主机网络,用以实现部件模型间的消息传送。
与现有技术相比,本发明具有以下优点:
将所述部件模型以矩阵的形式分布,并根据部件模型的类型将该矩阵分成子矩阵,基于所述矩阵的维数及所述子矩阵在所述矩阵中的位置生成分布表达式,所述分布表达式描述了所述部件模型在所述矩阵中的位置坐标;基于所述部件模型在所述矩阵中的位置坐标和待模拟的部件模型间的连接关系生成连接关系表达式。基于所述分布表达式和连接关系表达式,生成并行事务级模拟***的描述文件。所述描述文件包含了所述部件模型的连接关系及其位置坐标。
所述描述文件模拟了部件模型之间的连接关系,通过所述描述文件建立部件模型之间的通信连接。这不仅简化了并行事务级模拟***的开发步骤,而且提高了并行事务级模拟***的开发效率。
若并行事务级模拟***发生变化,导致部件模型的分布方式或连接发生变化,可以根据更改后的分布方式或采用新的连接关系公式,重新计算所述部件模型的新的分布方式和连接关系,得到新的描述文件。这不会重新修改或设计整个并行事务级模拟***,仅需要重新计算或者更换连接关系公式得到新的描述文件,就可以实现整个并行事务级模拟***的设计。
由于单独修改或维护部件模型,不会影响并行事务级模拟***的运行;单独修改或维护并行事务级模拟***,也不会影响部件模型的运行,因此这较大的简化了对部件模型和并行事务级模拟***的修改和维护的工作。另外,重新计算或者更换连接关系公式得到新的描述文件,也降低了对部件模型和并行事务级模拟***维护的开销。
附图说明
图1是本发明提供的建立部件模型间通信的模拟方法的一种实施方式的流程图;
图2是本发明提供的分布表达式和连接关系表达式逻辑检查的一种实施方式的示意图;
图3是本发明提供的部件模型的分布方式的矩阵结构图示意图;
图4是本发明提供的部件模型间通信的路由方法的一种实施方式的流程图;
图5是本发明提供的拓扑结构描述文件的结构列表;
图6是本发明提供的通信端口的路由方法的一种实施方式的流程图;
图7是本发明提供的端口路由器的一种实施方式的结构图;
图8是本发明提供的通信端口的消息发送方法的一种实施方式的流程图;
图9是本发明提供的通信端口的消息接收方法的一种实施方式的流程图;
图10是本发明提供的通信端口的一种实施方式的结构图;
图11是本发明提供的通信模块的一种实施方式的结构图;
图12是本发明提供的消息的发出流向图;
图13是本发明提供的消息的接收流向图;
图14是本发明提供的部件模型的一种实施方式的结构图;
图15是本发明提供的并行事务级模拟***的一种实施方式的结构图;
图16是本发明提供的并行事务级模拟***中部件模型的通信连接示意图;
图17是本发明提供的事件包的一种实施方式的结构图;
图18是本发明提供的消息的一种实施方式的结构图。
具体实施方式
为使本发明的上述目的、特征和优点能够更为明显易懂,下面结合附图对本发明的具体实施方式做详细的说明。
由于在已有的并行事务级建模方法中,没有给部件模型的可重用提供足够的支撑,导致部件级模型的建模者需要关心***级模型的设计,另一方面***级模型的建模者也需要关心部件级模型的内部实现,因此部件模型和并行事务级模拟***的耦合程度较高,两者的设计和修改无法独立完成。这将导致并行事务级模拟***的开发效率较低,且对其进行维护和修改的开销也较大。
图1是本发明提供的建立部件模型间通信的模拟方法的一种实施方式的流程图,包括:
S11,将所述部件模型以矩阵形式分布,确定所述矩阵的维数;
S12,根据所述部件模型的类型,将所述矩阵分成子矩阵,基于所述矩阵的维数及所述子矩阵在所述矩阵中的位置生成分布表达式;
S13,基于所述部件模型在所述矩阵中的位置坐标和待模拟的部件模型间的连接关系生成连接关系表达式;
S14,检查所述分布表达式和连接关系表达式的逻辑是否正确;
S15,基于所述分布表达式和连接关系表达式,生成并行事务级模拟***的描述文件。
图2是本发明提供的分布表达式和连接关系表达式逻辑检查的一种实施方式的流程图,包括:
S31,检查所述连接关系表达式是否包括每个部件模型的连接关系;
S32,检查所述连接关系表达式是否包括所述部件模型的冗余的连接关系;
S33,检查所述分布表达式中位置坐标与部件模型是否一一对应。
下面结合图1和图2详细说明所述建立部件模型间通信的模拟方法。首先参看图1:
S11中,将所述部件模型以矩阵形式分布,一般是将所述部件模型以二维格栅、二维环网或三维格栅的形式分布,且相同类型的部件模型多放在临近的区域。对于二维矩阵来讲,所述矩阵的维数包括矩阵的行数和列数。
S12中,根据所述部件模型的类型,将所述矩阵分成子矩阵,一般是指将相同类型的部件模型划分在一个子矩阵中。所述子矩阵在所述矩阵中的位置一般是指所述子矩阵包含的行和列对应原始的矩阵中的哪些行和列。例如,在分成子矩阵后,子矩阵的第一列对应原始的矩阵中的第三列。
部件模型以矩阵形式分布,其在矩阵中的位置坐标以矩阵的列和行分别表示其横坐标和纵坐标,且位置坐标为该部件模型的标识。
S13中,以位置坐标代表该部件模型,基于所述部件模型在所述矩阵中的位置坐标和待模拟的部件模型间的连接关系生成连接关系表达式。例如,部件模型A的位置坐标为<xl,yp>,部件模型B的位置坐标为<xv,yu>,若两者之间具有连接关系,其连接关系表达式可以写成
S13中,若所述分布表达式和连接关系表达式的逻辑都正确,则生成S14中的描述文件。所述分布表达式的逻辑正确是指所述部件模型的位置坐标与部件模型一一对应;所述连接关系表达式的逻辑正确是指所述连接关系表达式中包括每个部件模型的连接关系,且所述部件模型没有冗余的连接关系。
参看图2,其中S31中,检查所述连接关系表达式是否包括每个部件模型的连接关系是指,所述连接关系表达式包含每一个部件模型的连接关系,也就是说,检查是否出现漏接的情况,是否有某个部件模型的连接关系没有包含在所述连接关系表达式中。在并行事务级模拟***中,不存在孤立的部件模型,也就是说,部件模型和其他部件模型之间至少具有一个连接关系。S31中,包括是否存在孤立的部件模型的检查,出现孤立的部件模型属于逻辑错误。另外,若部件模型A具有三个连接关系,但所述连接关系表达式中只包含了两个连接关系,这也属于漏接的情况,也属于逻辑错误。
检查所述连接关系表达式是否包括所述部件模型的冗余的连接关系是指,检查所述部件模型是否具有多余的连接关系,例如,部件模型A同部件模型B有连接关系,但是通过对连接关系表达式的逻辑检查,得到了这两个部件模型之间连接关系出现了两次,这两次中显然有一次是冗余的,属于逻辑错误。
检查所述分布表达式中位置坐标与部件模型是否一一对应,是指一个位置坐标只能唯一对应一个部件模型,并且一个部件模型也只有唯一一个位置坐标与其对应,位置坐标是部件模型的标识。若出现一个位置坐标对应多个部件模型,或者一个部件模型具有多个位置坐标都属于逻辑错误。
在上述逻辑检查中,出现任意一种或几种逻辑错误,则所述分布表达式或连接关系表达式的逻辑就是错误的,无法生成描述文件。
S14中,若所述分布表达式和连接关系表达式的逻辑都正确,则生成描述文件。所述描述文件包含所述部件模型的位置坐标以及连接关系,所述连接关系以源端部件模型的名称和位置坐标,目的端部件模型的名称和位置坐标表示。由于位置坐标与部件模型是一一对应的,因此所述位置坐标可以作为所述部件模型的标识。
所述部件模型形成的矩阵根据类型分成子矩阵,因此所述描述文件中还包括所述部件模型的类型。所述部件模型的类型除了包括:处理器类型、内存类型、路由器类型外,还可以包括硬件类型、外存类型、交换机类型等。
所述建立部件模型间通信的模拟方法,还包括在检查所述分布表达式和连接关系表达式的逻辑是否正确前,检查所述分布表达式和连接关系表达式是否符合预设的语法信息;所述语法信息包括所述分布公式和连接关系公式的拼写要求和运算法则。
还包括,若所述分布表达式和连接关系表达式不符合所述语法信息、逻辑错误中一种或几种,则反馈出错信息。所述出错信息包括:出错的原因和出错的位置,具体的:
所述出错的原因包括:所述分布表达式或连接关系表达式的拼写错误、不符合所述运算法则中的一种或几种,所述出错的位置包括:拼写错误的位置或不符合所述运算法则的位置。例如,部件模型的名称拼写错误,参数名称拼写错误,乘法运算写成加法运算等。
所述出错的原因还包括:若所述连接关系表达式缺失所述部件模型的连接关系、包含所述部件模型的冗余的连接关系、所述分布表达式中部件模型的位置坐标对应多个部件模型和一个部件模型对应多个位置坐标中的一种或几种。反馈所述出错的信息包括:反馈缺失所述连接关系的部件模型的名称、反馈具有冗余的连接关系的部件模型的名称。若所述分布表达式中一个位置坐标对应多个部件模型,反馈出错的信息包括:反馈该位置坐标对应的多个部件模型的名称,反馈具有多个位置坐标的部件模型的名称。
所述矩阵一般是二维格栅、二维环网和/或三维格栅。二维格栅、二维环网和/或三维格栅的分布公式和连接关系公式的表示方式具有一定的相似性,将这些公式以公式***的形式表示,建立成标准表达式库,这样在使用时可直接套用公式。
所述标准表达式库包括待确定参数的分布公式和连接关系公式,使用时基于所述矩阵的维数及所述子矩阵在所述矩阵中的位置,确定预先建立的分布公式中的参数,得到所述分布表达式;基于所述部件模型在所述矩阵中的位置坐标、所述子矩阵在所述矩阵中的位置和待模拟的部件模型间的连接关系确定预先建立的连接关系公式中参数,得到所述连接关系表达式。
所述分布公式为:
<xm,yn>,xm,yn=(i,j,+,-,×,÷,k),i∈[0,N],j∈[0,N],k∈N,m∈N,n∈N
其中<xm,yn>表示所述部件模型在所述矩阵中的位置坐标,xm表示横坐标,yn表示纵坐标,xm是i的函数,i基于所述矩阵的维数确定取值范围;yn是j的函数,j基于所述矩阵的维数确定取值范围,k表示常数,基于所述子矩阵在所述矩阵中的位置确定,N表示整数。
二维矩阵的分布公式为:
<xg,yh>,xg=a·i+b,yh=c·j+d,i=[0,A-1],j=[0,B-1],a∈N,b∈N,c∈N,d∈N,g∈N,h∈N
所述二维矩阵的维数包括所述二维矩阵的行数和所述二维矩阵的列数,其中A表示所述二维矩阵的列数,B表示所述二维矩阵的行数;a为i的系数,c为j的系数,b,d为常数,a,b,c,d基于i和j的取值范围以及所述子矩阵在所述矩阵中的位置确定,N为整数。
所述连接关系公式为:
i∈[0,N],j∈[0,N],
n∈N,l∈N,p∈N,v∈N,u∈N
<xl,yp>和<xv,yu>表示具有连接关系的两个部件模型的位置坐标,n表示常数,N表示自然数。
并行事务级建模的目标就是最大程度地实现部件模型和并行事务级模拟***的分离,解耦合两者的设计过程或建模过程。部件模型建模时,无需关心并行事务级模拟***的结构;而并行事务级模拟***建模时,可以直接利用已有的部件模型,通过结构描述文件建立部件模型间的连接关系。
在并行事务级建模中,如果对部件模型进行合理设计,可以使得其具有可重用特性,简单地说,就是该部件模型不包含***级模型的信息,在外部看来就是一个接收输入信号,返回输出信号的“黑盒子”。基于这种“黑盒子”,***级建模的过程就只需要描述这些“黑盒子”的连接即可。
图3是本发明提供的部件模型的分布方式的矩阵结构图示意图,下面结合图1、图2和图3详细说明。
图3所示的是一个5×5的二维格栅的初始矩阵,其中有两类部件模型:sample_m1和sample_m2,sample_m1表示处理器,sample_m2表示内存。根据部件模型的类型不同,可以将该初始矩阵分成几个子矩阵块:N1,N2和N3。其中N1形成一个3×3的矩阵,矩阵块N2形成一个2×3的矩阵,矩阵N3分别形成一个5×2的矩阵。
预先建立的标准表达式库包括:
二维矩阵的分布公式为:
<xg,yh>,xg=a·i+b,yh=c·j+d,i=[0,A-1],j=[0,B-1],a∈N,b∈N,c∈N,d∈N,g∈N,h∈N
所述二维矩阵的维数包括所述二维矩阵的行数和所述二维矩阵的列数,其中A表示所述二维矩阵的列数,B表示所述二维矩阵的行数;a为i的系数,c为j的系数,b,d为常数,a,b,c,d基于i和j的取值范围以及所述子矩阵在所述矩阵中的位置确定,N为整数。
二维矩阵分布的部件模型的连接关系公式为:
i∈[0,N],j∈[0,N],
n∈N,l∈N,p∈N,v∈N,u∈N
<xl,yp>和<xv,yu>表示具有连接关系的两个部件模型的位置坐标,n表示常数,N表示自然数。
上述两个公式的语法信息包括:
运算法则包括:
1,首先由ltr和dig构造变量(var),按照var的规则(字母开头,后面跟任意多个字母或者数字符),可以构造出两个变量a1,a2。
2,由dig构造数字(num),按照Num的规则(数字符开头,后面跟任意多个数字符),可以构造数字10。
3,由公式(fom)的定义(数字、变量、或数字变量之间按照oper的组合),可以得到公式:a1+a2-10。
如图3所示的三个子矩阵:N1,N2和N3,以子矩阵N1为例具体说明,为描述方便,此处位置坐标中的横坐标和纵坐标以没有脚标的<x,y>表示。
由于子矩阵N1是3×3的,在初始的矩阵的左上角,包含的三行和三列的数据对应初始矩阵的三行和三列。横坐标x可以取0到2之间的三个值,同样的,纵坐标y可以取0到2之间的三个值,且x的三种取值和y的三种取值可以任意组合,形成3×3矩阵中的所有位置。因此,子矩阵N1的分布表达式可以写为:
<x,y>,x=i,y=j,i=[0,2],j=[0,2]。
同理子矩阵N2的维数2×3,在初始矩阵的左下角,对应初始矩阵第四行和第五行的前两列。子矩阵N2的分布表达式为:
<u,v>,u=i,v=j,i=[0,2],j=[3,4]。
子矩阵N3的维数5×2,在初始矩阵的右侧,对应初始矩阵的五行的后两列。子矩阵N3的分布表达式为:
<m,n>,m=i,n=j,i=[3,4],j=[0,4]。
以子矩阵N1位于第三列的三个部件模型(位置坐标分别为(2,0),(2,1),(2,2)),同子矩阵N3位于第四列的三个部件模型(位置坐标分别为(3,0),(3,1),(3,2))之间的连接关系为例说明连接关系表达式。
若子矩阵N1中第三列第一个与子矩阵N3中第一列第一个具有连接关系,子矩阵N1中第三列第二个与子矩阵N3中第一列第二个具有连接关系,子矩阵N1中第三列第三个与子矩阵N3中第一列第三个具有连接关系。子矩阵N1在初始矩阵的左侧,子矩阵N1的第三列是初始矩阵的第三列,子矩阵N3在初始矩阵的右侧,子矩阵N3的第一列是初始矩阵的第四列。其连接关系表达式为:
所述连接公式中,v和n的取值范围是一致的,因此可以用相同的参数i表示。
所述连接关系表达式中,数字“2”和数字“3”的部分是以预定的语法信息表示的。例如,dig::=0|3|,num::=dig*,那么num表示数字“3”,DIG::=0|2|,NUM::=DIG*,NUM表示数字“2”,那么上述连接关系表达式变成:
其中,NUM和num为按照预设的语法信息定义的数字类型的参数。
按照预设的语法信息,检查分布表达式和连接关系表达式的语法是否正确,包括:参数名称的拼写是否正确,运算法则是否正确。例如:num由一位或多位dig构成,而dig是一位***数字,如3是正确的num,因为其由一位dig构成,而3b是非法的num,因为其不全由dig构成,则会反馈如下错误信息:
Error:Line:6,3b is wrong.
表示第6行的num拼写出错。
检查分布表达式和连接关系表达式的逻辑,包括:
检查所述连接关系表达式是否包括每个部件模型的连接关系;
检查所述连接关系表达式是否包括所述部件模型的冗余的连接关系;
检查所述分布表达式中位置坐标与部件模型是否一一对应。
例如,部件模型A的连接关系未包含的连接关系表达式中,则会反馈如下错误信息:
Erro:model A is miss。
表示缺失了部件模型A的连接关系。
若所述分布表达式和连接关系表达式的语法信息正确且逻辑正确,则生成描述文件。所述描述文件包括所述部件模型的位置坐标及连接关系,所述连接关系以源端部件模型的名称和位置坐标,目的端部件模型的名称和位置坐标表示。所述位置坐标与部件模型是一一对应的,因此所述位置坐标为所述部件模型的标识,以所述位置坐标代表与其对应的部件模型。
部件模型A和部件模型B之间的连接关系,可以以文字描述的形式表现,例如,【部件模型A:源端部件模型的标识<2,1>,部件模型B:目的端部件模型的标识<3,1>】,这表示部件模型A与部件模型B之间具有连接关系,A为源端部件模型的名称,其标识为<2,1>,B为目的端部件模型的名称,其标识为<3,1>;也可以以程序代码,图形符号等形式表现,例如,代码形式的:R(modleA<2,1>,modleB<3,1>),R表示部件模型modleA和部件模型modleB之间具有连接关系,modleA为源端部件模型的名称,其位置坐标(标识)为<2,1>,modleB为目的端部件模型的名称,其位置坐标(标识)为<3,1>。
部件模型之间的连接关系可以分类,一般有两种:单向连接和双向连接关系。例如,部件模型A和部件模型B之间是单向连接关系,表示部件模型A向部件模型B单向发送消息或事件内容,或者部件模型B向部件模型A单向发送消息或事件内容;部件模型A和部件模型B之间是双向连接关系,表示部件模型A向部件模型B发送消息或事件内容,并且部件模型B也向部件模型A发送消息或事件内容。
部件模型之间的连接关系的数目和连接关系的类型也可以加入所述描述文件中。例如,R(modleA<2,1>,modleB<3,1>)表示modleA和modleB之间是双向连接关系,S(modleA<2,1>,modleB<3,1>)表示modleA向modleB的单向连接关系。R(modleA<2,1>,modleB<3,1>),R(modleA<2,1>,modleC<4,1>),R(modleA<2,1>,modleD<5,1>),表示modleA分别与modleB、modleC、modleD分别具有双向连接关系,且modleA具有3个连接关系。modleA分别与modleB、modleC、modleD分别具有双向连接关系,且modleA具有3个连接关系也会保存在描述文件中。
由于不同的并行事务级模型实现方法不同,本设计不限定部件模型的表示方法。所述描述文件适用于各种***与部件模型松耦合的并行事务级建模方法。生成的描述文件可以时针对具体模拟器的***模型描述代码,也可以是txt、word等文本文件。
图4是本发明提供的部件模型间通信的路由方法的一种实施方式的流程图,包括:
S21,生成并行事务级模拟***的描述文件;
S22,获取通信源端的名称,所述通信源端为待建立通信连接的源端部件模型;
S23,在所述并行事务级模拟***的描述文件中查找与所述通信源端对应的通信目的端的名称,所述通信目的端为与待建立通信连接的源端对应的目的端部件模型;
S24,记录通信端口信息,所述通信端口信息包括所述通信源端的名称和位置坐标,通信目的端的名称和位置坐标;
S25,基于所述通信端口信息为所述通信源端和通信目的端建立通信端口并配置通信通道。
在实际的并行事务级模拟***的建模或设计过程中,部件模型的结构很复杂,所述部件模型包含通信模块,还包含部件逻辑,用以实现逻辑功能。
所述通信模块包含端口路由器(也称路由器)、通信控制器和端口队列管理模块等,端口队列管理模块通常用于根据通信端口信息建立通信端口。端口路由器包括路由信息管理模块,所述路由信息管理模块包括路由表缓存模块,查询模块等。通信端口包括端口配置模块、消息发送模块、消息处理模块等。
端口队列管理模块从查询模块中获得本部件模型的端口数目,并依次获得每个端口的通信端口信息。部件模型间的连接关系一般有三种:通信端口一般可以分为三种类型:只发送消息的通信端口、只接收消息或事件内容的通信端口,既发送又接收消息或事件内容的通信端口。通信端口的类型和数目一般情况下由该部件模型的连接关系的类型和决定。例如,部件模型A与部件模型B、部件模型C、部件模型D分别具有双向连接关系,那么部件模型A具有三个通信端口,且该通信端口为既发送又接收消息或事件内容的通信端口。若部件模型A向部件模型B单向发送消息,则部件模型A具有一个只发送消息的通信端口,且部件模型B具有一个只接收消息或事件内容的通信端口。
一个通信端口具有一条通信端口信息,也就是说,通信端口信息的数目和通信端口的数目是一致的。端口队列管理模块获得每一条新的通信端口信息之后,将在通信模块中创建一个新的通信端口,用数字或字母命名该通信端口,并将相应的通信端口信息填入端口信息管理模块。
部件模型的连接关系的类型、数目一般也会包含在描述文件中,另外通信端口的名称一般默认为数字或字母,在生成描述文件时,会自动排序包含在描述文件中。
图5至图18是本发明实施例中提供的描述文件的详细应用方法,所述描述文件也称为拓扑结构描述文件,本实施例中,部件模型的通信模块根据通信端口信息建立通信端口,相应地,描述文件中还包括部件模型的端口信息(如名称、标识等),通信端口信息还包括通信源端的端口信息和通信目的端的端口信息。下面结合图5至图18详细说明。
图5是本发明实施例提供的拓扑结构描述文件的结构列表,拓扑结构描述文件的结构如图5所示。拓扑结构描述文件以部件模型为主要单位,描述了每个部件模型的基本信息,以及该部件模型的端口的连接关系。为了防止冲突,拓扑结构描述文件要求部件模型的标识为全局唯一,部件模型的端口的名称在该部件模型中唯一。由于部件模型的标识为全局唯一,端口的名称只需要保证部件模型内唯一,对该端口进行拓扑结构描述时就不会发生错误。
部件模型一般为消息的发送端或接收端,因此部件模型可作为通信源端或通信目的端。为描述方便,若无特殊注明,以下内容中以部件模型即表示通信源端或通信目的端。
该拓扑结构描述文件描述的是部件模型间的连接关系,且具体指出了一个部件模型的端口与其他部件模型的端口之间的连接关系。
如图5所示,表示一个并行事务级模拟***中包含的全部部件模型的端口的连接关系。该拓扑结构描述文件中包含若干个部件模型的端口的连接关系,每个部件模型包含两部分内容,一是模块信息M1,二是通道信息M2。模块信息M1中,包括部件模型的名称、标识、类型和通道数目,类型一般是指处理器、内存、硬盘等,通道数目为该部件模型与其他部件模型之间的通信通道的数目。通道信息M2中分条记录了每个端口的信息,每条记录记载一个端口的端口信息,包括与该端口有连接关系的部件模型的标识、名称,与该部件模型的哪个端口有连接关系,这个端口的名称、类型、延迟时间。端口的名称一般默认为***数字或字母,并按照数字或字母的顺序排序。端口类型一般包括发送类型、接收类型和发送兼接收类型。延迟时间是指该端口发送一次消息需要多长时间。
例如,部件模型A具有4个端口,4个端口的名称分别为a、b、c、d,且部件模型A与其他部件模型之间具有4个通信通道。部件模型A的模块信息包括,部件模型的名称为A、标识为<2,1>、类型为处理器和通道数目为4。通道信息包括4条记录,每条记录记载一个端口的信息,若端口a用以发出消息,与部件模型B(标识为<3,1>)的端口f具有通信连接,则端口a的记录包括:源端的标识<2,1>,目的端的标识为<3,1>,源端的端口名称为a,目的端的端口名称为f,通道类型为发送类型,延迟时间为0.04s。
拓扑结构描述文件一般根据待模拟的并行事务级模拟***的通信连接,建立源端与目的端的连接关系。建立连接关系时,所述源端的端口的类型为发送类型,则与其对应的目的端的端口的类型只能是为接收类型或接收兼发送类型,并且同一个部件模型既可以是源端也可以是目的端。
根据待模拟的并行事务级模拟***的各部件模型之间的连接关系,在所述拓扑结构描述文件中模拟部件模型之间的连接关系,部件模型获取所述拓扑结构描述文件后,依据其中的内容,建立部件模型之间的连接关系,则实现了并行事务级模拟***的建模。
图6是本发明提供的通信端口的路由方法的一种实施方式的流程图,包括:
S101,获取拓扑结构描述文件,所述拓扑结构描述文件包括源端的标识、目的端的标识、源端的端口的名称和目的端的端口的名称;
S102,获取通信源端的端口的名称,所述通信源端为待建立通信连接的源端,所述通信源端的端口为待建立通信连接的源端的端口;
S103,在所述拓扑结构描述文件中查找与所述通信源端的端口对应的通信目的端的端口的名称及通信目的端的标识;
S104,记录通信端口信息,所述通信端口信息包括所述通信源端的标识,通信源端的端口的名称、通信目的端的标识,通信目的端的端口的名称;
S105,基于所述通信端口信息为所述通信源端和通信目的端建立通信端口并配置通信通道。
步骤S101的拓扑结构描述文件可以利用图1所示的建立部件模型间通信的模拟方法生成,所述源端为消息的发出端或者说是发出消息的部件模型,所述源端的端口用以发出所述消息;所述目的端为所述消息的接收端或者说是接收消息的部件模型,所述目的端的端口用以接收所述消息,即源端和目的端具有连接关系。由于消息的发送与接收是循环往复的,因此消息发送的源端,下一次也可以是消息接收的目的端,换句话说,源端和目的端可以根据消息的流向发生变化。在并行事务级模拟***中,部件模型通常是通信源端或通信目的端。
所述通信源端为待建立通信连接的源端,也就是并行事务级模拟***中的部件模型。部件模型设计完成之后,建立部件模型之间的通信连接,再配置并行宿主机网络,并行事务级模拟***才算完成。为防止在建立通信连接的过程中,出现漏接的情况,设计完成的部件模型,在建立通信连接时,将该部件模型看做是待建立通信连接的源端。
所述通信目的端的端口为与所述待建立通信连接的源端的端口对应的目的端的端口,所述通信目的端为与待建立通信连接的源端对应的目的端。消息在整个***中是通过端口流动的,建立通信连接时,需要确定消息的通信源端和通信目的端,确保两者是对应的,然后确定通信源端的哪个端口与通信目的端的哪个端口对应,保证消息在对应的端口中流动。
基于所述通信端口信息为所述通信源端和通信目的端建立通信端口并配置通信通道后,为通信源端建立的通信端口即对应通信端口信息中通信源端的端口,为通信目的端建立的通信端口即对应通信目的端的端口。消息通过通信源端的通信端口、配置的通信通道发送到通信目的端,通信目的端的通信端口接收解析后的消息(对消息的解析将在后续进行详细说明)。
一般情况下,发送类型的端口与接收类型或接收兼发送类型的端口对应;接收类型的端口与发送类型或接收兼发送类型的端口对应;发送兼接收类型的端口,若发送消息,则与发送类型的端口相同,若接收消息,则与接收类型的端口相同。
拓扑结构描述文件中包括该部件模型的模块信息和通道信息,其中模块信息包含该部件模型的名称、标识、类型和通道数目,通道数目为该部件模型与其他部件模型之间的通信通道的数目。通道信息中分条记录了每个端口的信息,包括与该端口有连接关系的部件模型的标识、名称,与该部件模型的哪个端口有连接关系,这个端口的名称、类型、延迟时间。
S104中,记录通信端口信息,可以根据实际情况将这些信息有选择的记录下来,通常情况下通信端口信息只记录常用的端口的信息,这样可以节约存储空间。
所述通信通道是用来传送消息的,通信通道一般通过并行宿主机网络实现。
图7是本发明提供的端口路由器的一种实施方式的结构图,下面结合图1、图2和图7详细说明。
端口路由器A1的结构如图7所示,主要有两部分组成:路由信息管理模块A11和查询模块A12。
路由信息管理模块A11,包括路由表缓存模块A112,用以获取拓扑结构描述文件,所述拓扑结构描述文件包括源端的标识、目的端的标识、源端的端口的名称和目的端的端口的名称;还用于获取通信源端的端口的名称,所述通信源端为待建立通信连接的源端,所述通信源端的端口为待建立通信连接的源端的端口;还用以记录通信端口信息,所述通信端口信息包括所述通信源端的标识,通信源端的端口的名称、通信目的端的标识,通信目的端的端口的名称。
查询模块A12,用以在所述拓扑结构描述文件中查找与所述通信源端的端口对应的通信目的端的端口的名称及通信目的端的标识,所述通信目的端的端口为与所述待建立通信连接的源端的端口对应的目的端的端口,所述通信目的端为与待建立通信连接的源端对应的目的端。
查询模块A12一般提供两个接口:一个接口用以查询通信目的端的标识、通信目的端的端口的名称;另一个接口用以查询通信源端的标识,通信源端的端口的名称。
若所述拓扑结构描述文件还包括所述源端的名称、类型和通信通道的数目;所述源端的端口的类型和延迟时间;所述源端的端口的类型包括:接收类型、发送类型和接收兼发送类型,则查询模块A12,还用以在所述拓扑结构描述文件中查找所述源端的端口的类型和延迟时间;并将所述源端的端口的类型和延迟时间加入通信端口信息中。
路由表缓存模块A112获取拓扑结构描述文件后,将该文件保存成一张路由器缓存表,存入路由表缓存模块A112中,路由器缓存表的内容和拓扑结构描述文件相同。路由器缓存表的结构为按行组织的连接关系队列,一条连接关系描述一对端口的连接,包含:“源端的标识”,“目的端的标识”,“源端的端口的名称”,“目的端的端口的名称”,“类型”,“延迟时间”六个字段。
路由表缓存模块A112主要具有以下优点,当待模拟的并行事务级模拟***巨大时,在部件模型或者其他模拟器中保存巨大的***的连接关系是需要大量内存的,因此,为了降低内存开销,路由表缓存模块A112将只保存部分常用的路由信息。所述路由信息大都是指通信端口信息,也就是说,路由表缓存模块A112从拓扑结构描述文件中,将常用的端口或者部件模型的通信端口信息保存在路由器缓存表中,这样节约了存储空间。
路由信息管理模块A11还包括更新模块A111,当需要查找的路由信息在路由表缓存中时,将直接获得信息;若查找的路由信息不在路由表缓存中,路由表缓存模块A112则需要重新读取拓扑结构描述文件,获取相应的路由信息,更新模块A111依据新的拓扑结构描述文件,并替换掉之前路由表缓存模块A112中的保存的旧的路由器缓存表。
也就是说,更新模块A111对路由器缓存表进行更新和维护。若查询模块A12在路由器缓存表中,查找不到通信源端的端口的通信端口信息,则路由表缓存模块A112重新获取拓扑结构描述文件,获取相应的信息,更新模块A111将新的信息保存入旧的路由器缓存表中,形成新的路由器缓存表。也就是说,更新模块A111根据新的拓扑结构描述文件,对应更新旧的路由器缓存表,并保存形成新的路由器缓存表。
图8是本发明提供的通信端口的消息发送方法的一种实施方式的流程图,包括:
S201,从所述端口路由器读取与所述通信源端的端口对应的通信端口信息,并基于所述通信端口信息为通信源端和对应的通信目的端建立通信端口并配置通信通道;
S202,获取事件包,所述事件包包括事件内容和发送该事件包的通信源端的端口的名称;
S203,将所述通信端口信息加入所述事件内容形成消息;
S204,通过所述通信通道发出所述消息。
由于消息的发送量一般较大,因此所述消息发送方法还包括根据发送消息的时间,建立消息的发送缓存队列,这防止消息在同一时间内涌入,加大通信端口的工作负荷,造成当机或者消息堵塞的情况。消息通过通信通道发出至通信目的端,通信通道一般通过并行宿主机网络实现。
所述事件包由部件逻辑发出,这是为了更好的划分部件逻辑的功能。部件逻辑用来发送事件包或者接收事件内容的处理结果,也就是说所述部件逻辑用以完成除对外联系之外的逻辑功能。通信端口用于接收事件内容、事件包或发送事件包、消息或处理结果。将部件逻辑与通信端口的工作区分开,防止两者功能交叉,混为一谈,提高部件模型的重用性。
图9是本发明提供的通信端口的消息接收方法的一种实施方式的流程图,包括:
S301,通过与所述通信源端对应的通信通道接收所述消息;
S302,解析所述消息,获取事件内容和接收该消息的通信目的端的端口的名称。
通信目的端接收的消息是通过图9所示的通信端口的消息发送方法发出的,并根据接收所述事件内容的时间顺序,建立所述事件内容的接收缓存队列。由于事件内容包含在消息中,因此所述事件内容的接收缓存队列一般按照接收包含该事件内容的消息的时间顺序建立,因此也称为消息接收缓存队列。
通信目的端接收所述消息后,对其解析,得到具体的通信端口信息,进行后续的工作。解析所述消息时,按照接收缓存队列的排列顺序,逐一解析所述消息。
后续的工作包括,处理所述事件内容,并反馈处理结果,所述处理结果反馈至通信目的端的部件逻辑。处理所述消息时,根据需要还可以获取所述消息的通信源端的标识、通信源端的端口的名称和通信目的端的标识。
图10是本发明提供的通信端口A2的一种实施方式的结构图,包括:
端口配置模块A21,用以从端口路由器获取与所述通信源端的端口对应的通信端口信息,且基于所述通信端口信息为通信源端和对应的通信目的端配置通信通道;
消息发送模块A22,用以获取事件包,所述事件包包括事件内容和发送该事件包的通信源端的端口的名称,将所述通信端口信息加入所述事件内容形成消息且发送所述消息。
通信端口A2还包括:
消息处理模块A23,用以获取并处理其他通信端口发送的消息中的事件内容,将处理结果反馈至部件逻辑A4;
消息发送缓存模块A24,用以根据发送的消息的时间顺序,建立所述消息的发送缓存队列;
消息接收缓存模块A25,用以根据接收的消息中事件内容的时间顺序,建立所述事件内容的接收缓存队列;
端口信息管理模块A26,用以保存与所述通信源端的端口对应的通信端口信息。
通信端口的结构如图6所示。通信端口A2中包括端口配置模块A21、消息发送模块A22和消息接收缓存模块A25,消息发送缓存模块A24,消息处理模块A23,端口信息管理模块A26。
其中端口配置模块A21获取与所述通信源端的端口对应的通信端口信息,并基于所述通信端口信息为通信源端和对应的通信目的端配置通信通道。端口配置模块A21获取通信端口信息后,就要将所述通信通道配置完成,以保证消息发送或接收的顺利进行。
消息发送模块A22和消息处理模块A23用于控制消息的发送、接收和处理,端口信息管理模块A26用于记录本端口的连接信息、通信端口信息等,本端口的连接信息包括该端口与哪些端口存在连接关系,与哪些通信目的端存在连接关系等。通信端口信息包括本端口的名称,目的端的端口的名称,端口的类型(发送类型,接收类型,发送兼接收类型)。
通信端口还可以只用于接收和处理消息,这种通信端口包括消息处理模块,用以获取所述事件内容;所述消息处理模块还用以处理所述事件内容,并反馈处理结果至通信目的端的部件逻辑。这种只用于接收和处理消息的通信端口,还包括:消息接收缓存模块,用以根据获取所述事件内容的时间顺序,建立所述事件内容的接收缓存队列。
通信端口根据其功能可以分为三种:只发送消息的通信端口、只接收消息的通信端口,既发送又接收消息的通信端口。既发送又接收消息的通信端口与通信端口A2的结构相同或相近;只接收消息的通信端口,一般仅包含的消息处理模块和消息接收缓存模块或与上述两种模块功能相同或类似的模块;只发送消息的通信端口一般包含端口配置模块,消息发送模块,消息发送缓存模块和端口信息管理模块。
图11是本发明提供的通信模块的一种实施方式的结构图(图中省略了通信端口A2的具体结构),包括:端口路由器A1、端口队列管理模块A32和通信控制器A31;
通信控制器A31,用以获取事件包,所述事件包包括事件内容和发送该事件包的通信源端的端口的名称;
端口队列管理模块A32,用以从端口路由器A1获取与所述通信源端的端口对应的通信端口信息,并基于所述通信端口信息建立通信端口A2;
通信端口A2包括:
端口配置模块,用以从端口路由器A1获取所述通信端口信息,且基于所述通信端口信息为通信源端和对应的通信目的端配置通信通道;
消息发送模块,用以从所述通信控制器获取所述事件包,将所述通信端口信息加入所述事件内容形成消息且通过所述通信通道发送所述消息。
通信模块A3一般用来接收或发出消息,因此通信控制器A31还用以接收由通信源端的端口发出的消息,该消息包括发送该消息的通信源端的端口的通信端口信息和事件内容。也就是说通信控制器A31用来接收其他部件模型发出的消息。
若通信控制器A31还用以接收消息,则端口队列管理模块A32,还用以解析所述通信控制器接收的消息,获取该消息的事件内容和接收该消息的通信目的端的端口的名称。
通信端口A2还包括消息处理模块,用以接收并处理所述端口队列管理模块解析获取的事件内容,并反馈处理结果至通信目的端的部件逻辑;消息发送缓存模块,用以根据发送所述消息的时间顺序,建立所述消息的发送缓存队列;消息接收缓存模块,用以根据接收的消息的事件内容的时间顺序,建立所述事件内容的接收缓存队列;端口信息管理模块,用以保存所述通信端口的端口信息。
消息发送缓存模块和消息接收缓存模块还可以根据消息或事件内容的优先级、消息的容量等建立缓存队列。
端口队列管理模块A32,还用以监控通信端口A2,在通信端口A2空闲时,控制该通信端口接收所述事件内容或发送所述消息。由端口队列管理模块A32监控通信端口A2,在空闲的时候控制该通信端口接收所述事件内容或发送所述消息,这是为了防止消息堵塞,进一步的,按照缓存队列的顺序控制该通信端口接收所述事件内容或发送所述消息。
图12是本发明提供的消息的发出流向图,图13是本发明提供的消息的接收流向图。下面结合图8、图9、图10、图11、图12和图13详细说明。
并行事务级模拟***启动后,通信模块A3将进行自动配置。首先端口路由器A1将读取拓扑结构描述文件,将读取到的拓扑结构描述文件保存在路由表缓存模块A112中,形成路由缓存表。接着查询模块A12在路由缓存表中查找与所述通信源端的端口对应的通信目的端的端口的名称及通信目的端的标识。
通信模块A3将自己所属的部件模型作为通信源端,从端口路由器A1获取与所述通信源端的端口对应的通信端口信息,且基于所述通信端口信息建立通信端口并为通信源端和对应的通信目的端配置通信通道。具体来讲,端口队列管理模块A32,通过端口路由器A1中的查询模块A12进行查询,得到通信模块A3需要的通信端口信息,并基于所述通信端口信息建立通信端口A2。通信端口信息包括目的端的标识,目的端的端口的名称,以及该端口的类型是单一的发送、接收、还是收发两用端口。通信端口信息将保存在每一个通信端口的端口信息管理模块A26中。端口队列管理模块A32获取通信端口信息,从中确定需要建立几个通信端口。
端口配置模块A21从通信端口信息中找到通信源端的标识和通信目的端的标识,配置两者之间的通信通道。当部件逻辑A4需要发送消息时,需要通过通信通道,将消息从通信源端发送至通信目的端。通信通道一般是依靠并行宿主机网络实现的,通过通信通道发送消息,也可以看成是通过并行宿主机网络发送消息。
消息发送过程如图12所示,部件逻辑A4通过通信端口A2向外发送消息时,只需要指明使用哪一个通信端口即可,无需给出该端口在***中的连接情况。如图12所示,部件逻辑A4所发出的事件包只包含“发送端口的名称”和“事件内容”两个最基本内容,“发送端口的名称”也就是通信源端的通信端口的名称。当事件包进入通信模块A3,首先将由通信控制器A31进行消息处理,通信控制器A31解析消息,获得“发送端口的名称”和“事件内容”。端口队列管理模块A32取得相应通信端口的控制后,将解析之后的事件包暂存在消息发送缓存模块A24中。取得相应通信端口的控制是指,监控该端口是否空闲,在该端口空闲时,控制该端口发送消息。消息发送模块A22在对外的通信通道空闲时,从消息发送缓存模块A24中取出一个事件包,依据“发送端口的名称”加入相应端口的通信端口信息形成消息。一般情况下,为事件包增加“通信源端的标识”,“通信源端的端口的名称”,“通信目的端的标识”,“通信目的端的端口的名称”四个字段,基于这四个字段的内容,消息可以在并行宿主机网络A61上进行发送。
消息的接收过程如图13所示,当由通信源端发送的消息由并行宿主机网络A61到达作为通信目的端的部件模型之后,将首先传递给通信控制器A31,由通信控制器A31解析收到的消息。此时消息包括发送该消息的通信源端的端口的通信端口信息和事件内容,具体地包括“通信源端的标识”,“通信源端的端口的名称”,“通信目的端的标识”,“通信目的端的端口的名称”,以及“事件内容”五个部分。根据“通信目的端的端口的名称”,端口队列管理模块A32将消息包精简为只有“接收端口的名称”和“事件内容”两部分,并取得相应接收端口的控制权,也就是监控该端口,在该端口空闲时,控制该端口接收。其中“接收端口的名称”也就是“通信目的端的通信端口的名称”。精简后的消息将传递给通信端口A2的消息接收缓存模块A25,在该端口空闲时,传递给消息处理模块A23进行处理,处理结果将传递至部件逻辑A4。
图14是本发明提供的部件模型的一种实施方式的结构图,图15是本发明提供的并行事务级模拟***的一种实施方式的结构图。下面结合图14和图15详细说明。
图14是本发明提供的部件模型的一种实施方式的结构图,部件模型A62包括:通信模块A3和部件逻辑A4。部件逻辑A4,用于发出事件包或接收处理结果。
图11是本发明提供的并行事务级模拟***的一种实施方式的结构图,并行事务级模拟***A6包括部件模型A62和并行宿主机网络A61。
各部件模型A62独立地模拟并行事务级模拟***A6中的一部分,并通过并行宿主机网络A61进行消息的传输。当部件模型A62之间需要进行交互时,将通过并行宿主机网络A61转发消息。在模拟并行事务级模拟***A6时,两个部件模型A62之间通过消息实现交互,消息中包含事件内容或事件包。事件包是用户自定义结构的数据包。在该数据包中,用户将抽象实现硬件模块之间以时序为粒度的事件内容。
消息交互的过程通常与部件模型A62采用的交互协议无关,通常不涉及具体的总线时序等细节,也就是说,部件逻辑A4发出或接收处理结果,通信模块A3负责将事件包包装成消息通过其通信端口A2发出。部件逻辑A4不关心消息是由谁发出的,只关心发出了什么消息,接收了什么处理结果。相应的,通信模块A3不关心发送或接收了什么消息,只关心谁发送的,发送给谁。这将部件模型A62分成了两部分,部件逻辑A4负责发送事件包或接收处理结果,通信模块A3负责发送或接收消息。设计部件模型A62时,不再纠结于并行事务级模拟***需要何种通信连接,部件模型之间的连接关系如何设计,设计并行事务级模拟***时,也不再纠结于部件模型之间的连接关系如何设计才能满足并行事务级模拟***的通信连接。这些连接关系或通信连接预置在拓扑结构描述文件中,只需获取该文件,按照该文件的内容进行通信通道的配置,就可以满足并行事务级模拟***的通信连接的需求,且也实现了部件模型之间的连接关系。
这不仅降低部件模型和并行事务级模拟***之间的耦合度,而且提高并行事务级模拟***的开发效率。若部件模型之间的连接关系或并行事务级模拟***的通信连接发生变化时,只需要修改拓扑结构描述文件中相应的内容,然后对路由缓存表和通信端口信息进行更新,就可以完成部件模型之间的连接关系或并行事务级模拟***的通信连接的修改。这降低对部件模型和并行事务级模拟***维护的开销,不再需要重新设计部件模型或并行事务级模拟***,增强了部件模型的可重用性,减少资源浪费,节约了成本。
图16是本发明提供的并行事务级模拟***中部件模型的通信连接示意图。图12描述在并行事务级模拟***中两个并行运行的部件模型A62之间的通信关系,此处略去了与其他结构。并行事务级模拟的通信模块A3的结构及其在并行事务级模拟***中的应用环境如图16所示,通信模块A3主要包括:通信端口A2,通信控制器A31,端口队列模块A32,端口路由器A1。端口路由器A1获取外部的拓扑结构描述文件。
通信端口A2通过端口队列模块A32与端口路由器A1连接,可以通过端口队列模块A32获取端口路由器A1中的信息。
如图16所示,两个部件模型之间交互通过通信模块A3进行,部件逻辑A4需要进行外部通信时,将首先把事件包传递给通信模块A3,由通信模块A3负责将事件包封装成消息并转发;同样,在接收消息时,收到的消息将首先由通信模块A3负责处理,再传递给部件逻辑A4。在这种设计下,部件逻辑A4同外部的交互将完全依赖通信模块A3进行,可以在不考虑外部条件的情形下,独立地实现部件模型A62的内部逻辑,这种设计有效地提高了部件模型的开发效率。
每个部件模型A62可以分为两个部分,一部分是不涉及对外交互的部件逻辑A4,另一部分是负责同外部交互的通信模块A3。图16是本发明提供的事件包的一种实施方式的结构图,图17是本发明提供的消息的一种实施方式的结构图。
图17中所示的事件包B1,包括发送端口的名称B11和事件内容B10,发送端口的名称B11也就是通信源端的端口的名称。事件包B1由部件逻辑A4发出。图18中所示的消息B2,包括事件内容B10,通信源端的标识B12,通信源端的端口的名称B11′,通信目的端的标识B13,通信目的端的端口的名称B14。其中通信源端的端口的名称B11′与图17中发送端口的名称B11相同。消息B2是由通信模块A3接收事件包B1后,加入端口信息形成的,最终由通信端口发出。
综上所述,本发明实施例公开的技术方案,提高并行事务级模拟***的开发效率,降低对部件模型和并行事务级模拟***维护的开销。
本发明虽然已以较佳实施例公开如上,但其并不是用来限定本发明,任何本领域技术人员在不脱离本发明的精神和范围内,都可以利用上述揭示的方法和技术内容对本发明技术方案做出可能的变动和修改,因此,凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化及修饰,均属于本发明技术方案的保护范围。
Claims (20)
1.一种建立部件模型间通信的模拟方法,其特征在于,包括:
将所述部件模型以矩阵形式分布,确定所述矩阵的维数;
根据所述部件模型的类型,将所述矩阵分成子矩阵,基于所述矩阵的维数及所述子矩阵在所述矩阵中的位置生成分布表达式,所述分布表达式描述所述部件模型在所述矩阵中的位置坐标;
基于所述部件模型在所述矩阵中的位置坐标和待模拟的部件模型间的连接关系生成连接关系表达式,所述连接关系表达式描述所述部件模型之间的连接关系;
检查所述分布表达式和连接关系表达式的逻辑是否正确,若正确则基于所述分布表达式和连接关系表达式,生成并行事务级模拟***的描述文件,所述描述文件包含所述部件模型的位置坐标及连接关系,所述连接关系以源端部件模型的名称和位置坐标,目的端部件模型的名称和位置坐标表示;
所述分布表达式的逻辑正确是指所述部件模型的位置坐标与部件模型一一对应;所述连接关系表达式的逻辑正确是指所述连接关系表达式中包括每个部件模型的连接关系,且所述部件模型没有冗余的连接关系。
2.如权利要求1所述的建立部件模型间通信的模拟方法,其特征在于,所述基于所述矩阵的维数及所述子矩阵在所述矩阵中的位置生成分布表达式包括:基于所述矩阵的维数及所述子矩阵在所述矩阵中的位置,确定预先建立的分布公式中的参数,得到所述分布表达式,所述分布公式为:
<xm,yn>,xm,yn=(i,j,+,-,×,÷,k),i∈[0,N],j∈[0,N],k∈N,m∈N,n∈N
其中<xm,yn>表示所述部件模型在所述矩阵中的位置坐标,xm表示横坐标,yn表示纵坐标,xm是i的函数,i基于所述矩阵的维数确定取值范围;yn是j的函数,j基于所述矩阵的维数确定取值范围,k表示常数,基于所述子矩阵在所述矩阵中的位置确定,N表示大于等于0的整数。
3.如权利要求2所述的建立部件模型间通信的模拟方法,其特征在于,基于所述分布公式生成二维矩阵的分布公式为:
<xg,yh>,xg=a·i+b,yh=c·j+d,i=[0,A-1],j=[0,B-1],a∈N,b∈N,c∈N,d∈N,g∈N,h∈N
所述二维矩阵的维数包括所述二维矩阵的行数和所述二维矩阵的列数,其中A表示所述二维矩阵的列数,B表示所述二维矩阵的行数;a为i的系数,c为j的系数,b,d为常数,a,b,c,d基于i和j的取值范围以及所述子矩阵在所述矩阵中的位置确定,N为大于等于0的整数。
4.如权利要求1所述的建立部件模型间通信的模拟方法,其特征在于,所述基于所述部件模型在所述矩阵中的位置坐标和待模拟的部件模型间的连接关系生成连接关系表达式包括:基于所述部件模型在所述矩阵中的位置坐标、所述子矩阵在所述矩阵中的位置和待模拟的部件模型间的连接关系确定预先建立的连接关系公式中参数,得到所述连接关系表达式,所述连接关系公式为:
n∈N,l∈N,p∈N,v∈N,u∈N
<xl,yp>和<xv,yu>表示具有连接关系的两个部件模型的位置坐标,n表示常数,N表示大于等于0的整数。
5.如权利要求1所述的建立部件模型间通信的模拟方法,其特征在于,在检查所述分布表达式和连接关系表达式的逻辑是否正确前,还包括:检查所述分布表达式和连接关系表达式是否符合预设的语法信息;所述语法信息包括所述分布公式和连接关系公式的拼写要求和运算法则。
6.如权利要求5所述的建立部件模型间通信的模拟方法,其特征在于,还包括:若所述分布表达式和连接关系表达式不符合所述语法信息和/或逻辑错误,则反馈出错信息。
7.如权利要求1所述的建立部件模型间通信的模拟方法,其特征在于,所述部件模型的类型包括:处理器类型、内存类型、路由器类型。
8.如权利要求1-7任一项所述的建立部件模型间通信的模拟方法,其特征在于,所述矩阵为二维格栅或二维环网。
9.如权利要求1、5-7任一项所述的建立部件模型间通信的模拟方法,其特征在于,所述矩阵为三维格栅。
10.一种部件模型间通信的路由方法,其特征在于,包括:
利用权利要求1至9任一项所述的模拟方法生成并行事务级模拟***的描述文件;
获取通信源端的名称,所述通信源端为待建立通信连接的源端部件模型;
在所述并行事务级模拟***的描述文件中查找与所述通信源端对应的通信目的端的名称,所述通信目的端为与待建立通信连接的源端对应的目的端部件模型;
记录通信端口信息,所述通信端口信息包括所述通信源端的名称和位置坐标,通信目的端的名称和位置坐标;
基于所述通信端口信息为所述通信源端和通信目的端建立通信端口并配置通信通道。
11.如权利要求10所述的部件模型间通信的路由方法,其特征在于,所述描述文件还包括所述部件模型的类型,所述部件模型的类型为所述通信源端的类型,所述部件模型的类型包括:处理器类型、内存类型、路由器类型。
12.如权利要求11所述的部件模型间通信的路由方法,其特征在于,还包括在所述描述文件中查找与所述通信源端的类型相对应的部件模型的类型;所述通信端口信息还包括所述通信源端的类型。
13.一种通信模块,其特征在于,包括端口路由器、端口队列管理模块和通信控制器;
所述端口路由器,用以获取利用权利要求1至9任一项所述的模拟方法生成的并行事务级模拟***的描述文件,且获取通信源端的名称,所述通信源端为待建立通信连接的源端部件模型;还用以在所述描述文件中查找与所述通信源端对应的通信目的端的名称,所述通信目的端为与待建立通信连接的源端对应的目的端部件模型;还用以记录通信端口信息,所述通信端口信息包括所述通信源端的名称和位置坐标,通信目的端的名称和位置坐标;
所述通信控制器,用以获取事件包,所述事件包包括事件内容和发送该事件包的通信源端的端口的名称;
所述端口队列管理模块,用以从所述端口路由器获取与所述通信源端对应的通信端口信息,并基于所述通信端口信息建立通信端口;
所述通信端口包括:
端口配置模块,用以获取所述通信端口信息,且基于所述通信端口信息为通信源端和对应的通信目的端配置通信通道;
消息发送模块,用以从所述通信控制器获取所述事件包,将所述通信端口信息加入所述事件内容形成消息且通过所述通信通道发送所述消息。
14.如权利要求13所述的通信模块,其特征在于,所述通信控制器,还用以接收由通信源端发出的消息。
15.如权利要求14所述的通信模块,其特征在于,所述端口队列管理模块,还用以解析所述通信控制器接收的消息,获取该消息的事件内容和接收该消息的通信目的端的端口的名称。
16.如权利要求15所述的通信模块,其特征在于,所述通信端口还包括:消息处理模块,用以接收并处理所述端口队列管理模块解析获取的事件内容,并发送处理结果。
17.一种包括权利要求13-16任一项所述的通信模块的部件模型。
18.如权利要求17所述的部件模型,其特征在于,还包括部件逻辑,用于发出事件包或接收事件内容的处理结果。
19.一种包括权利要求17或18所述的部件模型的并行事务级模拟***。
20.如权利要求19所述的并行事务级模拟***,其特征在于,还包括并行宿主机网络,用以实现部件模型间的消息传送。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110110822.1A CN102761473B (zh) | 2011-04-29 | 2011-04-29 | 部件模型间通信的模拟及路由方法、并行事务级模拟*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110110822.1A CN102761473B (zh) | 2011-04-29 | 2011-04-29 | 部件模型间通信的模拟及路由方法、并行事务级模拟*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102761473A CN102761473A (zh) | 2012-10-31 |
CN102761473B true CN102761473B (zh) | 2015-01-14 |
Family
ID=47055799
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110110822.1A Active CN102761473B (zh) | 2011-04-29 | 2011-04-29 | 部件模型间通信的模拟及路由方法、并行事务级模拟*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102761473B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2876512A1 (de) * | 2013-11-25 | 2015-05-27 | dSPACE digital signal processing and control engineering GmbH | Verfahren zur automatischen Verbindung von Komponenten eines Modells eines technischen Systems |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1879110A (zh) * | 2003-11-10 | 2006-12-13 | 罗伯特.博世有限公司 | 模拟***以及用于模拟和验证控制***的计算机实施的方法 |
CN102354123A (zh) * | 2011-07-18 | 2012-02-15 | 北京航空航天大学 | 一种跨平台可扩展的卫星动态仿真测试*** |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000259636A (ja) * | 1999-03-05 | 2000-09-22 | Hitachi Ltd | グラフ構造検査システム |
JP2009282669A (ja) * | 2008-05-21 | 2009-12-03 | Nec Corp | 回路比較装置及び回路比較方法並びにプログラム |
-
2011
- 2011-04-29 CN CN201110110822.1A patent/CN102761473B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1879110A (zh) * | 2003-11-10 | 2006-12-13 | 罗伯特.博世有限公司 | 模拟***以及用于模拟和验证控制***的计算机实施的方法 |
CN102354123A (zh) * | 2011-07-18 | 2012-02-15 | 北京航空航天大学 | 一种跨平台可扩展的卫星动态仿真测试*** |
Non-Patent Citations (2)
Title |
---|
《面向用户的并行计算***可用性建模研究》;郑方、郑霄、李宏亮等;《计算机研究与发展》;20080219 * |
张昆、钱磊、李宏亮等.《VCPPS:一种面向并行Verilog模拟的代码分割器》.《计算机工程与科学》.2009, * |
Also Published As
Publication number | Publication date |
---|---|
CN102761473A (zh) | 2012-10-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105608088B (zh) | 一种基于配置文件的数据库自动创建与数据动态记录方法 | |
CN103178996B (zh) | 分布式包交换芯片模型验证***及验证方法 | |
US9110884B2 (en) | Message publishing and subscribing method and apparatus | |
CN110413690A (zh) | 数据库的数据同步方法、服务器、电子设备、存储介质 | |
CN105553851A (zh) | 基于sdn的网络处理器微码和流表实现装置及方法 | |
CN102981882B (zh) | 解析方法和装置 | |
US20220083498A1 (en) | Data transmission method and device for network on chip and electronic apparatus | |
Li et al. | Wide-area spark streaming: Automated routing and batch sizing | |
CN109858285B (zh) | 区块链数据的处理方法、装置、设备和介质 | |
CN102402616B (zh) | 一种数据库集群的实现方法和*** | |
CN106708764A (zh) | 一种机载航电***通用io处理*** | |
JP2014502756A (ja) | ツリー構造に基づくマスデータストレージの装置および方法 | |
WO2022193183A1 (zh) | 片上网络的仿真模型生成方法、装置、电子设备及计算机可读存储介质 | |
CN102761473B (zh) | 部件模型间通信的模拟及路由方法、并行事务级模拟*** | |
CN102855278B (zh) | 一种仿真方法和*** | |
CN107968722B (zh) | 一种接口控制文件到afdx网络设备配置文件的转换方法 | |
CN102761472B (zh) | 通信端口及其路由方法、通信模块及并行事务级模拟*** | |
CN104090895B (zh) | 获取基数的方法、装置、服务器及*** | |
CN101834876B (zh) | 基于蓝牙、数据库与udp协议的分布式半物理仿真***及其数据汇总和分发的方法 | |
CN110517369B (zh) | 基于思维导图的故障树构建方法和*** | |
CN102722592B (zh) | 通用数字信息录取装置及方法 | |
CN108055077B (zh) | 针对应用的光纤总线网络的验证装置及光纤总线网络 | |
CN114372051A (zh) | 一种数据处理***、基于区块链的数据处理方法及设备 | |
CN110264130B (zh) | 数据中心存储介质仓储***及数据中心存储介质检索方法 | |
CN103152224B (zh) | 一种实时动态监控模拟网络的方法及*** |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |