一种仿真系统的制作方法

文档序号:34070183发布日期:2023-05-06 17:45阅读:70来源:国知局

本技术涉及仿真领域,具体涉及一种仿真系统。


背景技术:

1、如图1所示,现有方案在进行nvme设备仿真时,通常是使用kvm进行cpu单元的仿真,构建可执行环境(可执行环境一般包括可以执行指令的cpu,内存,cache,总线设备),qemu进行外设仿真,在host os的基础上,创建虚拟化环境,运行guest os,需要使用仿真nvme设备的用户程序和nvme驱动运行在guest os中,nvme控制器模拟器运行在host os的qemu进程中。

2、但是对于guest os的nvme驱动来说,nvme控制器模拟器是一种模拟设备。而真实的nvme设备包括pcie-ep接口,带有处理器、内存、cache、总线的nvme控制器,存储介质以及内存,该控制器用于提供一个用来执行nvme控制器内部固件程序的可执行环境。对于nvme控制器芯片内部的固件程序在进行仿真测试时,由于nvme控制器模拟器内部没有提供能够支持nvme设备控制器固件运行需要的独立软件可执行环境,是无法做到对控制器固件进行仿真调试验证。


技术实现思路

1、有鉴于此,为了克服上述问题的至少一个方面,本技术实施例提出一种仿真系统,所述仿真系统用于nvme设备仿真,包括:

2、虚拟主机;

3、控制器仿真模型,包括用于运行待仿真的固件的可执行单元和若干个功能单元,所述可执行单元包括中断管理模块、软件引擎模块、总线仿真模块、缓存仿真模块以及内存仿真模块,其中,所述总线仿真模块用于实现所述可执行单元与每一个所述功能单元的互联;

4、消息转发模块,用于连接所述虚拟主机与所述控制器仿真模型。

5、其中,所述控制器仿真模型还用于基于所述待仿真的固件对所述虚拟主机发送的消息进行处理以对所述待仿真的固件进行仿真。

6、在一些实施例中,消息转发模块包括代理模块和接入模块;

7、所述代理模块用于封装所述虚拟主机发送的消息并发送到所述接入模块,以及接收并解析所述接入模块发送的消息后发送到所述虚拟主机;

8、所述接入模块用于接收并解析所述代理模块发送的消息后发送到所述控制器仿真模型,以及封装所述控制器仿真模型的发送的消息并发送到所述代理模块。

9、在一些实施例中,所述代理模块和所述虚拟主机运行在第一进程。

10、在一些实施例中,所述接入模块和所述控制器仿真模型运行在第二进程。

11、在一些实施例中,所述仿真系统还包括:

12、存储介质仿真模型,包括属性获取操作接口、设置操作接口、读取操作接口、写入操作接口。

13、在一些实施例中,所述属性获取操作接口和所述设置操作接口供所述待仿真的固件调用,所述读取操作接口和写入操作接口供所述控制器仿真模型做数据读写使用。

14、在一些实施例中,所述功能单元包括pcie接口单元、nvme核心单元、存储介质单元以及调测跟踪单元,所述pcie接口单元、所述nvme核心单元、所述存储介质单元、所述调测跟踪单元和所述可执行单元之间互联;

15、其中,所述pcie接口单元与所述消息转发模块连接,用于模拟pcie总线、模拟读写pcie配置空间、传输总线数据以及处理消息信号中断或扩展的消息信号中断;

16、所述nvme核心单元用于处理配置寄存器的读写、将管理命令转发给所述可执行单元、处理io命令、处理门铃、搬移dma数据;

17、所述存储介质单元还与所述存储介质仿真模型连接,用于向所述核心单元提供控制管理接口和io数据接口以对所述存储介质仿真模型进行访问;

18、所述调测跟踪单元为所述pcie接口单元、所述nvme核心单元、所述存储介质单元和所述可执行单元提供打印和日志控制管理和输出功能。

19、在一些实施例中,所述中断管理模块用于提供中断功能;

20、所述软件引擎模块提供所述运行环境并执行所述待仿真的固件;

21、所述总线仿真模块用于实现所述pcie接口单元、所述nvme核心单元、所述存储介质单元、所述调测跟踪单元和所述可执行单元之间的互联;

22、所述缓存仿真模块用于向所述软件引擎模块提供缓存功能;

23、所述内存仿真模块用于向所述软件引擎模块提供内存功能。

24、在一些实施例中,所述软件引擎模块用于接收所述管理命令,将所述管理命令保存到基于所述待仿真的固件配置的缓存位置并触发中断以通知所述待仿真的固件处理。

25、在一些实施例中,所述待仿真的固件收到所述中断后,读取并处理所述缓存位置中的管理命令,其中所述管理命令包括创建或删除用于数据输入输出的递交队列的命令、创建或删除用于数据输入输出的完成队列的命令、获取命名空间信息的命令、获取特性的命令、设置特性的命令。

26、在一些实施例中,所述pcie接口单元、所述nvme核心单元、所述存储介质单元、所述调测跟踪单元分别向所述总线仿真模块注册发起方接口的套接字和目标方接口的套接字,以实现各个单元之间的互联访问。

27、在一些实施例中,所述pcie接口单元还包括pcie接口模块和pcie寄存器模块。

28、在一些实施例中,所述pcie接口模块用于模拟pcie总线的模拟和传输总线数据,以将所述虚拟主机发送的消息传递给所述nvme核心单元以及将所述nvme核心单元发送的消息传递给所述虚拟主机。

29、在一些实施例中,所述pcie寄存器模块用于模拟读写pcie配置空间、保存所述虚拟主机对消息信号中断或扩展的消息信号中断的配置信息。

30、在一些实施例中,所述nvme核心单元包括nvme寄存器模块、用于管理的递交队列模块、用于管理的完成队列模块、用于数据输入输出的递交队列模块、用于数据输入输出的完成队列模块、存储模块、门铃触发模块、中断触发模块、dma数据传输模块。

31、在一些实施例中,所述nvme寄存器模块用于处理nvme配置寄存器的读写。

32、在一些实施例中,所述门铃触发模块用于接收来自所述主机的门铃操作,并根据所述门铃操作对应的队列,通知用于管理的递交队列模块或用于数据输入输出的递交队列模块进行处理。

33、在一些实施例中,所述用于管理的递交队列模块用于将管理的递交队列的入口对应的管理命令封装为总线级事务请求并发送给所述可执行单元处理;

34、所述用于管理的完成队列模块用于将所述可执行单元对所述管理的递交队列的入口对应的管理命令的处理结果放入用于管理的完成队列的入口,并调用所述中断触发模块通知所述虚拟主机。

35、在一些实施例中,所述dma数据传输模块用于根据所述门铃触发模块进行数据搬移或将所述用于管理的完成队列的入口的处理结果搬移到所述虚拟主机。

36、在一些实施例中,所述用于数据输入输出的递交队列模块用于处理用于数据输入输出的递交队列的入口对应的io命令;

37、所述用于数据输入输出的完成队列模块用于处理用于数据输入输出的递交队列的入口对应的io命令的处理结果,并放入用于数据输入输出的完成队列的入口,并调用所述中断触发模块通知所述虚拟主机;

38、所述存储模块用于创建存储空间,并基于所述io命令向所述存储空间写入数据和/或从所述存储空间读取数据。

39、在一些实施例中,所述存储介质单元包括存储介质模型框架模块,存储介质控制模块和存储介质i/o模块。

40、在一些实施例中,所述存储介质模型框架模块提供控制管理接口和io数据接口以对所述存储介质仿真模型进行访问;

41、所述存储介质控制模块用于提供存储介质控制信息;

42、所述存储介质i/o模块用于提供存储介质数据io操作。

43、在一些实施例中,所述调测跟踪单元包括寄存器操作模块,打印和日志控制模块以及单元测试管理模块。

44、在一些实施例中,所述寄存器操作模块对所述可执行单元、所述pcie接口单元、nvme核心单元、存储介质单元以及调测跟踪单元中的寄存器发起读写访问;

45、所述打印和日志控制模块用于提供打印控制和日志控制;

46、所述单元测试模块用于提供所述可执行单元、所述pcie接口单元、nvme核心单元、存储介质单元以及调测跟踪单元的测试入口,并用于处理单元测试命令。

47、本技术具有以下有益技术效果之一:本技术提出的方案在控制器仿真模型中设置用于运行待仿真的固件的可执行单元,可执行单元包括中断管理模块、软件引擎模块、总线仿真模块、缓存仿真模块以及内存仿真模块,其中,总线仿真模块用于实现可执行单元与每一个功能单元的互联。这样通过可执行单元提供能够支持nvme设备控制器固件运行需要的独立软件可执行环境,从而能够独立设计开发调测控制器内部固件。

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