一种模拟多核通信的方法、装置和计算机可读存储介质与流程

文档序号:17397612发布日期:2019-04-13 00:56阅读:162来源:国知局
一种模拟多核通信的方法、装置和计算机可读存储介质与流程

本发明涉及计算机仿真技术领域,特别是涉及一种模拟多核通信的方法、装置和计算机可读存储介质。



背景技术:

仿真环境可以对固态硬盘(solidstatedrives,ssd)的各性能指标进行仿真模拟,根据仿真模拟的结果,可以快速检验固态硬盘的各性能是否达到指标要求。

但是针对于固态硬盘(solidstatedrives,ssd)内部模块之间的通信机制而言,其使用的是进程间通信(inter-processcommunication,ipc)交互机制。而ipc消息网络是处理器对处理器和处理器对硬件的通信,属于硬件层面上设置的机制,而仿真环境是运行在windows上面,看不到硬件上面的实现,从而无法在仿真环境中直接使用。

可见,如何实现对固态硬盘通信机制的仿真模拟,是本领域技术人员亟待解决的问题。



技术实现要素:

本发明实施例的目的是提供一种模拟多核通信的方法、装置和计算机可读存储介质,可以实现对固态硬盘通信机制的仿真模拟,从而实现对固件算法的测试。

为解决上述技术问题,本发明实施例提供一种模拟多核通信的方法,包括:

预先对每个内核建立相应的数据结构;其中,每个数据结构有其对应的至少一个输入端和至少一个输出端;

记录每个所述数据结构中输入端和输出端的映射关系;

当第一数据结构的第一输入端接收到ipc消息时,则依据所述映射关系,确定出与所述第一输入端相对应的第一输出端,并将所述ipc消息传输至所述第一输出端;

依据所述ipc消息携带的访问地址,将所述ipc消息通过所述第一输出端传输至第二数据结构的目标输入端,以实现多核之间的通信。

可选的,在所述将所述ipc消息传输至所述第一输出端之后还包括:

将所述第一输入端中用于存储所述ipc消息的目标队列的存储状态设置为无效;

相应的,在所述依据所述ipc消息携带的访问地址,将所述ipc消息通过所述第一输出端传输至第二数据结构的目标输入端之后还包括:

将所述目标队列的存储状态调整为有效。

可选的,所述将所述目标队列的存储状态调整为有效包括:

在接收到所述第二数据结构的目标输出端反馈的处理完成的响应消息后,则将所述目标队列的存储状态调整为有效。

可选的,在所述依据所述ipc消息携带的访问地址,将所述ipc消息通过所述第一输出端传输至第二数据结构的目标输入端之前还包括:

对所述第一数据结构建立线程锁;

相应的,在所述依据所述ipc消息携带的访问地址,将所述ipc消息通过所述第一输出端传输至第二数据结构的目标输入端之后还包括:

释放所述线程锁。

本发明实施例还提供了一种模拟多核通信的装置,包括建立单元、记录单元、确定单元和传输单元;

所述建立单元,用于预先对每个内核建立相应的数据结构;其中,每个数据结构有其对应的至少一个输入端和至少一个输出端;

所述记录单元,用于记录每个所述数据结构中输入端和输出端的映射关系;

所述确定单元,用于当第一数据结构的第一输入端接收到ipc消息时,则依据所述映射关系,确定出与所述第一输入端相对应的第一输出端,并将所述ipc消息传输至所述第一输出端;

所述传输单元,用于依据所述ipc消息携带的访问地址,将所述ipc消息通过所述第一输出端传输至第二数据结构的目标输入端,以实现多核之间的通信。

可选的,还包括设置单元;

所述设置单元,用于在所述将所述ipc消息传输至所述第一输出端之后,将所述第一输入端中用于存储所述ipc消息的目标队列的存储状态设置为无效;

相应的,所述设置单元还用于在所述依据所述ipc消息携带的访问地址,将所述ipc消息通过所述第一输出端传输至第二数据结构的目标输入端之后,将所述目标队列的存储状态调整为有效。

可选的,所述设置单元具体用于在接收到所述第二数据结构的目标输出端反馈的处理完成的响应消息后,则将所述目标队列的存储状态调整为有效。

可选的,还包括锁定单元和释放单元;

所述锁定单元,用于在所述依据所述ipc消息携带的访问地址,将所述ipc消息通过所述第一输出端传输至第二数据结构的目标输入端之前,对所述第一数据结构建立线程锁;

相应的,所述释放单元,用于在所述依据所述ipc消息携带的访问地址,将所述ipc消息通过所述第一输出端传输至第二数据结构的目标输入端之后,释放所述线程锁。

本发明实施例还提供了一种模拟多核通信的装置,包括:

存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序以实现如上述模拟多核通信的方法的步骤。

本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述模拟多核通信的方法的步骤。

由上述技术方案可以看出,预先对每个内核建立相应的数据结构;其中,每个数据结构有其对应的至少一个输入端和至少一个输出端;记录每个数据结构中输入端和输出端的映射关系;依据该映射关系,可以实现每个内核内部的信息传输,当第一数据结构的第一输入端接收到ipc消息时,根据记录的映射关系,便可以确定出与第一输入端相对应的第一输出端,此时可以将ipc消息传输至所述第一输出端;依据ipc消息携带的访问地址,可以将ipc消息通过第一输出端传输至第二数据结构的目标输入端,以实现多核之间的通信。在该技术方案中,通过对每个内核建立数据结构,来模拟ipc消息机制的原理,使得ipc消息机制得以在仿真平台上实现模拟,即实现对固态硬盘通信机制的仿真模拟,从而便于对固件算法进行测试。

附图说明

为了更清楚地说明本发明实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的一种模拟多核通信的方法的流程图;

图2为本发明实施例提供的一种模拟多核通信的装置的结构示意图;

图3为本发明实施例提供的一种模拟多核通信的装置的硬件结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下,所获得的所有其他实施例,都属于本发明保护范围。

为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。

接下来,详细介绍本发明实施例所提供的一种模拟多核通信的方法。图1为本发明实施例提供的一种模拟多核通信的方法的流程图,该方法包括:

s101:预先对每个内核建立相应的数据结构。

在本发明实施例中,为了实现对固态硬盘通信机制的仿真模拟,可以对通信机制所需的函数功能进行封装,以构建数据结构。

在每个数据结构中可以包括有至少一个输入端(inbound)和至少一个输出端(outbound)。

其中,inbound和outbound的个数可以依据通信机制所涉及的功能类型确定。

s102:记录每个数据结构中输入端和输出端的映射关系。

每个inbound有其对应的信息队列(messagebuffer),该信息队列可以用于存储数据信息。

其中,每个inbound对应的信息队列的个数可以依据实际需求进行设定,在此不做限定,例如,可以为每个inbound设置8个信息队列。

同理,对于outbound也可以设置其对应的信息队列,每个outbound所对应的信息队列的个数可以和每个inbound对应的信息队列的个数相同。

在本发明实施例中,管理人员可以根据仿真模拟通信机制所涉及的具体项目,确定出每个内核中inbound和outbound的映射关系,并将该映射关系预先输入至仿真平台。仿真平台记录每个数据结构中输入端和输出端的映射关系,在后续需要实现多核之间的通信时,可以根据该映射关系调用相对应的端口。

s103:当第一数据结构的第一输入端接收到ipc消息时,则依据映射关系,确定出与第一输入端相对应的第一输出端,并将ipc消息传输至第一输出端。

不同内核间的数据结构可以管理不同类型的数据信息,在实际应用中,当需要仿真多核之间的通信时,可以向某个内核发送访问另一个内核的ipc消息,从而模拟这两个内核间的通信。

为了便于区分不同内核的数据结构,在本发明实施例中,可以将接收到ipc消息的数据结构称作第一数据结构,相应的,将用于处理该ipc消息的数据结构称作第二数据结构。

第一数据结构中用于接收ipc消息的输入端称作第一输入端,第一输出端即为与第一输入端具有映射关系的输出端。

s104:依据ipc消息携带的访问地址,将ipc消息通过第一输出端传输至第二数据结构的目标输入端,以实现多核之间的通信。

在本发明实施例中,每个信息队列都有其对应的访问地址,访问地址的具体形式可以采用cpuid+qid+messagebuffer_index表示。

仿真模拟多个内核间通信时,为了区分这多个内核,会为每个内核设置编号,cpuid即为内核的编号。

每个内核都其对应的数据结构,在该数据结构中包括inbound端口号和outbound端口号,每个端口号可以对应多个信息队列。其中,qid用于表示端口号,message_buffer_index用于表示这多个信息队列中的第几个信息队列。

根据ipc消息携带的访问地址即cpuid+qid+messagebuffer_index,可以唯一确定出该条ipc消息所需访问的信息队列。

需要说明的是,上述介绍中是以第一数据队列和第二数据队列之间的通信过程展开的介绍,在实际应用中,可以参照第一数据队列和第二数据队列之间的通信方式,实现多个内核之间的相互通信。

由上述技术方案可以看出,预先对每个内核建立相应的数据结构;其中,每个数据结构有其对应的至少一个输入端和至少一个输出端;记录每个数据结构中输入端和输出端的映射关系;依据该映射关系,可以实现每个内核内部的信息传输,当第一数据结构的第一输入端接收到ipc消息时,根据记录的映射关系,便可以确定出与第一输入端相对应的第一输出端,此时可以将ipc消息传输至所述第一输出端;依据ipc消息携带的访问地址,可以将ipc消息通过第一输出端传输至第二数据结构的目标输入端,以实现多核之间的通信。在该技术方案中,通过对每个内核建立数据结构,来模拟ipc消息机制的原理,使得ipc消息机制得以在仿真平台上实现模拟,即实现对固态硬盘通信机制的仿真模拟,从而便于对固件算法进行测试。

每个数据结构中数据的处理方式类似,以第一数据结构为例,在实际应用中,第一数据结构的第一输出端可能需要同时处理不同的ipc消息,此时第一输出端中各信息队列会被占用,为了实现信息队列的有序管理,在本发明实施例中,可以在将ipc消息传输至第一输出端之后,将第一输入端中用于存储ipc消息的目标队列的存储状态设置为无效。

当目标队列中记录有一个ipc消息时,此时再向该目标队列中记录新的ipc消息,会造成消息处理的混乱。通过将目标队列的存储状态设置为无效,可以防止该目标队列中写入新的ipc消息,实现了ipc消息的有序管理。

相应的,在依据ipc消息携带的访问地址,将ipc消息通过第一输出端传输至第二数据结构的目标输入端之后,该目标队列被释放,此时则可以将目标队列的存储状态调整为有效,以便于该目标队列可以继续为其它ipc消息提供服务。

在具体实现中,可以在依据ipc消息携带的访问地址,将ipc消息通过第一输出端传输至第二数据结构的目标输入端之后,直接将目标队列的存储状态调整为有效,也可以在接收到第二数据结构的目标输出端反馈的处理完成的响应消息后,再将目标队列的存储状态调整为有效,对此不做限定。

在本发明实施例中,通过对目标队列的存储状态进行动态的调整,有效的保证了消息的有序处理,从而保证了仿真模拟的正确性和可靠性。

在仿真平台上,每个内核相当于每个线程,当出现多个线程同时访问共享内存资源时,往往会产生混乱,因此,在本发明实施例中,在依据ipc消息携带的访问地址,将ipc消息通过第一输出端传输至第二数据结构的目标输入端之前,可以对第一数据结构建立线程锁。

相应的,在依据ipc消息携带的访问地址,将ipc消息通过第一输出端传输至第二数据结构的目标输入端之后,则可以释放该线程锁。

通过设置线程锁,可以有效避免不同内核间同时访问共享内存资源时产生混乱,降低了线程间的相互影响。

图2为本发明实施例提供的一种模拟多核通信的装置的结构示意图,包括建立单元21、记录单元22、确定单元23和传输单元24;

建立单元21,用于预先对每个内核建立相应的数据结构;其中,每个数据结构有其对应的至少一个输入端和至少一个输出端;

记录单元22,用于记录每个数据结构中输入端和输出端的映射关系;

确定单元23,用于当第一数据结构的第一输入端接收到ipc消息时,则依据映射关系,确定出与第一输入端相对应的第一输出端,并将ipc消息传输至第一输出端;

传输单元24,用于依据ipc消息携带的访问地址,将ipc消息通过第一输出端传输至第二数据结构的目标输入端,以实现多核之间的通信。

可选的,还包括设置单元;

设置单元,用于在将ipc消息传输至第一输出端之后,将第一输入端中用于存储ipc消息的目标队列的存储状态设置为无效;

相应的,设置单元还用于在依据ipc消息携带的访问地址,将ipc消息通过第一输出端传输至第二数据结构的目标输入端之后,将目标队列的存储状态调整为有效。

可选的,设置单元具体用于在接收到第二数据结构的目标输出端反馈的处理完成的响应消息后,则将目标队列的存储状态调整为有效。

可选的,还包括锁定单元和释放单元;

锁定单元,用于在依据ipc消息携带的访问地址,将ipc消息通过第一输出端传输至第二数据结构的目标输入端之前,对第一数据结构建立线程锁;

相应的,释放单元,用于在依据ipc消息携带的访问地址,将ipc消息通过第一输出端传输至第二数据结构的目标输入端之后,释放线程锁。

图2所对应实施例中特征的说明可以参见图1所对应实施例的相关说明,这里不再一一赘述。

由上述技术方案可以看出,预先对每个内核建立相应的数据结构;其中,每个数据结构有其对应的至少一个输入端和至少一个输出端;记录每个数据结构中输入端和输出端的映射关系;依据该映射关系,可以实现每个内核内部的信息传输,当第一数据结构的第一输入端接收到ipc消息时,根据记录的映射关系,便可以确定出与第一输入端相对应的第一输出端,此时可以将ipc消息传输至所述第一输出端;依据ipc消息携带的访问地址,可以将ipc消息通过第一输出端传输至第二数据结构的目标输入端,以实现多核之间的通信。在该技术方案中,通过对每个内核建立数据结构,来模拟ipc消息机制的原理,使得ipc消息机制得以在仿真平台上实现模拟,即实现对固态硬盘通信机制的仿真模拟,从而便于对固件算法进行测试。

图3为本发明实施例提供的一种模拟多核通信的装置30的硬件结构示意图,包括:

存储器31,用于存储计算机程序;

处理器32,用于执行计算机程序以实现如上述模拟多核通信的方法的步骤。

本发明实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上述模拟多核通信的方法的步骤。

以上对本发明实施例所提供的一种模拟多核通信的方法、装置和计算机可读存储介质进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1