发明内容
本发明实施例的目的在于提供一种存储芯片模型测试方法、装置、通信设备及存储介质,具体技术方案如下:
在本发明实施的第一方面,首先提供了一种存储芯片模型测试方法,所述方法包括:
响应于主机发起的非易失性内存主机控制器接口规范命令,调取预先设置的第一适配模块中的第一封装接口向服务器请求共享内存中的目标文件描述符,其中,所述第一适配模块封装有基于所述服务器创建的所述共享内存对应的第一封装接口,所述非易失性内存主机控制器接口规范命令携带目标测试数据;
将所述目标测试数据写入所述目标文件描述符指向的所述共享内存中的目标地址空间;
通过套接字线程将所述非易失性内存主机控制器接口规范命令发送至盘侧芯片模型,以使盘侧芯片模型根据所述非易失性内存主机控制器接口规范命令从所述共享内存中的目标地址空间读取所述目标测试数据。
可选地,所述响应于主机发起的非易失性内存主机控制器接口规范命令,调取预先设置的第一适配模块中的第一封装接口向服务器请求共享内存中的目标文件描述符包括:
响应于主机发起的非易失性内存主机控制器接口规范命令,所述主机存储芯片中的内核模型获取所述非易失性内存主机控制器接口规范命令,并将所述非易失性内存主机控制器接口规范命令发送至所述主机存储芯片中的高速串行计算机扩展总线标准发送模型;
所述主机存储芯片中的高速串行计算机扩展总线标准发送模型调取预先设置的第一适配模块中的第一封装接口向服务器请求共享内存中的目标文件描述符。
可选地,在所述将所述目标测试数据写入所述目标文件描述符指向的所述共享内存中的目标地址空间的步骤之后,所述通过套接字线程将所述非易失性内存主机控制器接口规范命令发送至盘侧芯片模型的步骤之前,所述方法包括:
所述主机存储芯片中的高速串行计算机扩展总线标准发送模型将所述非易失性内存主机控制器接口规范命令对应的第一地址转换为第二地址。
可选地,所述主机存储芯片中的高速串行计算机扩展总线标准发送模型将所述非易失性内存主机控制器接口规范命令对应的第一地址转换为第二地址包括:
所述主机存储芯片中的高速串行计算机扩展总线标准发送模型将所述非易失性内存主机控制器接口规范命令对应的第一内核模型可访问总线地址转换成高速串行计算机扩展总线标准可访问地址。
可选地,所述通过套接字线程将所述非易失性内存主机控制器接口规范命令发送至盘侧芯片模型包括:
在检测到所述非易失性内存主机控制器接口规范命令对应的第一地址转换为第二地址完成的情况下,调用套接字接口将所述非易失性内存主机控制器接口规范命令写入套接字缓冲区,以作为套接字线程;
通过所述套接字线程将所述非易失性内存主机控制器接口规范命令发送至盘侧芯片模型。
可选地,所述目标文件描述符为访问虚拟内存对应的文件描述符。
可选地,在所述响应于主机发起的非易失性内存主机控制器接口规范命令,调取预先设置的第一适配模块中的第一封装接口向服务器请求共享内存中的目标文件描述符的步骤之前,所述方法包括:
所述主机存储芯片中的高速串行计算机扩展总线标准发送模型申请映射描述符,并将所述映射描述符传递至预设软件仿真平台中的第一适配模块;
在所述第一适配模块中增加第一封装接口,以使服务器和所述第一适配模块创建共享内存,并通过所述第一封装接口和所述服务器的所述共享内存进行映射,所述服务器向所述高速串行计算机扩展总线标准发送模型暴露所述共享内存的第一封装接口。
可选地,在所述通过套接字线程将所述非易失性内存主机控制器接口规范命令发送至盘侧芯片模型的步骤之后,所述方法包括:
通过套接字线程通知所述盘侧芯片模型所述目标测试数据写入所述共享内存。
在本发明实施的第二方面,还提供了另一种存储芯片模型测试方法,应用于基于预设软件仿真平台构建的盘侧芯片模型,所述方法包括:
通过套接字线程获取所述非易失性内存主机控制器接口规范命令;
根据所述非易失性内存主机控制器接口规范命令从所述共享内存中的目标地址空间读取所述目标测试数据;
其中,所述非易失性内存主机控制器接口规范命令携带目标测试数据,所述目标测试数据存储于目标文件描述符指向的所述共享内存中的目标地址空间,所述目标文件描述符是主机存储芯片模型响应于主机发起的非易失性内存主机控制器接口规范命令,调取预先设置的第一适配模块中的第一封装接口向服务器请求生成的,所述第一适配模块封装有基于所述服务器创建的所述共享内存对应的第一封装接口。
可选地,在所述通过套接字线程获取所述非易失性内存主机控制器接口规范命令的步骤之后,所述方法包括:
所述盘侧芯片模型中的高速串行计算机扩展总线标准接收模型将所述非易失性内存主机控制器接口规范命令对应的第二地址转换为第一地址。
可选地,所述盘侧芯片模型中的高速串行计算机扩展总线标准接收模型将所述非易失性内存主机控制器接口规范命令对应的第二地址转换为第一地址包括:
所述盘侧芯片模型中的高速串行计算机扩展总线标准接收模型将所述非易失性内存主机控制器接口规范命令对应的高速串行计算机扩展总线标准可访问地址转换成第二内核模型可访问总线地址。
可选地,在所述盘侧芯片模型中的高速串行计算机扩展总线标准接收模型将所述非易失性内存主机控制器接口规范命令对应的第二地址转换为第一地址的步骤之后,所述方法包括:
盘侧芯片模型中的内核模型对所述非易失性内存主机控制器接口规范命令进行解析处理。
可选地,所述盘侧芯片模型中的内核模型对所述非易失性内存主机控制器接口规范命令进行解析处理包括:
盘侧芯片模型中的内核模型识别所述非易失性内存主机控制器接口规范命令;
申请与所述主机存储芯片模型相同的目标文件描述符。
可选地,所述根据所述非易失性内存主机控制器接口规范命令从所述共享内存中的目标地址空间读取所述目标测试数据包括:
从所述目标文件描述符指向的所述共享内存中的目标地址空间读取所述目标测试数据。
在本发明实施的第三方面,还提供了一种存储芯片模型测试方法***,所述***包括:
基于预设软件仿真平台构建的主机存储芯片模型和基于预设软件仿真平台构建的盘侧芯片模型;
所述主机存储芯片模型用于响应于主机发起的非易失性内存主机控制器接口规范命令,调取预先设置的第一适配模块中的第一封装接口向服务器请求共享内存中的目标文件描述符,其中,所述第一适配模块封装有基于所述服务器创建的所述共享内存对应的第一封装接口,所述非易失性内存主机控制器接口规范命令携带目标测试数据;将所述目标测试数据写入所述目标文件描述符指向的所述共享内存中的目标地址空间;通过套接字线程将所述非易失性内存主机控制器接口规范命令发送至盘侧芯片模型;
所述盘侧芯片模型用于根据所述非易失性内存主机控制器接口规范命令从所述共享内存中的目标地址空间读取所述目标测试数据。
可选地,所述主机存储芯片模型包括:第一内核模型、第一存储模型、高速串行计算机扩展总线标准发送模型以及第一适配模块;所述盘侧芯片模型包括:第二内核模型、第二存储模型、高速串行计算机扩展总线标准接收模型以及第二适配模块;
其中,所述第一内核模型、所述第一存储模型以及所述高速串行计算机扩展总线标准发送模型之间通过通用净核数据包进行总线路由以及数据访问;
所述第二内核模型、所述第二存储模型以及所述高速串行计算机扩展总线标准接收模型之间通过所述通用净核数据包进行总线路由以及数据访问。
在本发明实施的第四方面,还提供了一种存储芯片模型测试方法装置,所述装置包括:
请求模块,用于响应于主机发起的非易失性内存主机控制器接口规范命令,调取预先设置的第一适配模块中的第一封装接口向服务器请求共享内存中的目标文件描述符,其中,所述第一适配模块封装有基于所述服务器创建的所述共享内存对应的第一封装接口,所述非易失性内存主机控制器接口规范命令携带目标测试数据;
写入模块,用于将所述目标测试数据写入所述目标文件描述符指向的所述共享内存中的目标地址空间;
发送读取模块,用于通过套接字线程将所述非易失性内存主机控制器接口规范命令发送至盘侧芯片模型,以使盘侧芯片模型根据所述非易失性内存主机控制器接口规范命令从所述共享内存中的目标地址空间读取所述目标测试数据。
在本发明实施的第五方面,还提供了一种存储芯片模型测试方法装置,所述装置包括:
获取模块,用于通过套接字线程获取所述非易失性内存主机控制器接口规范命令;
读取模块,用于根据所述非易失性内存主机控制器接口规范命令从所述共享内存中的目标地址空间读取所述目标测试数据;
其中,所述非易失性内存主机控制器接口规范命令携带目标测试数据,所述目标测试数据存储于目标文件描述符指向的所述共享内存中的目标地址空间,所述目标文件描述符是主机存储芯片模型响应于主机发起的非易失性内存主机控制器接口规范命令,调取预先设置的第一适配模块中的第一封装接口向服务器请求生成的,所述第一适配模块封装有基于所述服务器创建的所述共享内存对应的第一封装接口。
在本发明实施的第六方面,还提供了一种通信设备,包括:收发机、存储器、处理器及存储在所述存储器上并可在所述处理器上运行的程序;
所述处理器,用于读取存储器中的程序实现如第一方面或者第二方面任一所述的存储芯片模型测试方法。
在本发明实施的第六方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机实现如第一方面或者第二方面任一所述的存储芯片模型测试方法。
本发明实施例提供的存储芯片模型测试方法,应用于基于预设软件仿真平台构建的主机存储芯片模型,通过响应于主机发起的非易失性内存主机控制器接口规范命令,调取预先设置的第一适配模块中的第一封装接口向服务器请求共享内存中的目标文件描述符,其中,所述第一适配模块封装有基于所述服务器创建的所述共享内存对应的第一封装接口,所述非易失性内存主机控制器接口规范命令携带目标测试数据;将所述目标测试数据写入所述目标文件描述符指向的所述共享内存中的目标地址空间;通过套接字线程将所述非易失性内存主机控制器接口规范命令发送至盘侧芯片模型,以使盘侧芯片模型根据所述非易失性内存主机控制器接口规范命令从所述共享内存中的目标地址空间读取所述目标测试数据。本发明实施例中,通过建立了预设软件仿真平台的第一适配模块作为软仿平台的适配层,通过第一适配模块可以直接访问预设软件仿真平台所运行的服务器的虚拟内存映射出的共享内存,利用套接字socket线程发送NVMe的ADMIN/IO命令,利用服务器共享内存传输NVMe命令所携带的大块目标测试数据,发送端主机存储芯片模型侧只需要一次地址访问就可以把NVMe命令所携带的大块数据写入虚拟PCIe链路,接收端也只需要一次地址访问就可以读取ADMIN/IO命令所携带的大块目标测试数据,提高芯片模型中虚拟PCIe链路数据传输效率。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的各实施方式进行详细的阐述。然而,本领域的普通技术人员可以理解,在本发明各实施方式中,为了使读者更好地理解本申请而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本申请所要求保护的技术方案。以下各个实施例的划分是为了描述方便,不应对本发明的具体实现方式构成任何限定,各个实施例在不矛盾的前提下可以相互结合相互引用。
需要说明的是,如图10所示,芯片建模的软件架构层次,即NVMe over PCIe存储芯片的建模包括内核模型、总线模型、存储模型、PCIe模型和一系列加速器模型等,NVMe命令由控制命令、IO命令以及命令所携带的数据组成。在完成存储芯片的模型建立后,需要对芯片模型进行功能和性能测试,最主要的就是测试NVMe命令在芯片模型上的收发情况,测试压力也集中体现在PCIe模型上。
因此,在本申请实施例中,提出一种存储芯片模型测试方案,应用在QEMU软件仿真平台上,QEMU软仿平台是一套开源模拟处理器的软件平台,提供芯片模型运行的虚拟环境,并提供完整的指令仿真以及调测环境。
本申请可以适用于芯片模型中需要经过PCIe链路收发数据的测试场景,芯片测试需要两个芯片进行交互测试,因此,本申请实施例中包括基于QEMU软件仿真平台构建的主机存储芯片模型以及基于QEMU软件仿真平台构建的盘侧芯片模型。
参照图1,示出了本发明实施例提供的存储芯片模型测试方法的步骤流程图一,所述方法可以包括:
步骤101,响应于主机发起的非易失性内存主机控制器接口规范命令,调取预先设置的第一适配模块中的第一封装接口向服务器请求共享内存中的目标文件描述符,其中,所述第一适配模块封装有基于所述服务器创建的所述共享内存对应的第一封装接口,所述非易失性内存主机控制器接口规范命令携带目标测试数据;
其中,所述目标文件描述符为访问虚拟内存对应的文件描述符。
需要说明的是,非易失性内存主机控制器接口规范(Non-Volatile Memoryexpress,NVMe)是一种定义在主机与非易失性内存的子***通信的寄存器级别的接口。
其中,在本申请实施例中,NVMe命令包括ADMIN/IO命令,ADMIN/IO命令是NVMe协议约定的控制命令和输入输出命令。
在本申请实施例中,应用于基于QEMU软件仿真平台构建的主机存储芯片模型,主机存储芯片模型是由System C实现芯片架构的外设模型,比如存储模型、总线模型、定时器模型等,通过TLM2.0进行总线路由以及数据访问,其中,TLM2.0即为通用净核数据包,QEMU软件仿真平台即为本申请中的预设软件仿真平台。
其中,主机存储芯片模型作为发送端,因此,设置PCIe-RC模型,其中,PCIe-RC模型本质上是PCIe模型,需要配置成RC模式,作为数据发送端,并且,PCIe-RC模型可将内核可访问的总线地址转换成PCIe域可访问的地址。
其中,第一适配模块即为QEMU软仿平台适配模块,QEMU软仿平台不能直接操作服务器的虚拟内存,因此,通过第一适配模块芯片模型可以访问服务器的虚拟内存,第一适配模块封装服务器虚拟内存的适配接口,该接口即为第一封装接口,可以屏蔽服务器的差异。
其中,虚拟内存是一种内存扩展方法,利用外部存储部件如硬盘,实现内存与外存的交换分区,交换分区作为***的扩展内存,可提升***内存的总容量,但是与物理内存相比速度降低,共享内存映射是一种允许不同进程或线程访问相同内存区域的技术,而内存映射是实现这种共享的具体方法之一,内存映射通常是通过将一个文件或其他资源映射到一个进程的地址空间实现的,这样,当多个进程映射同一个文件或资源时,它们实际上在访问相同的内存区域,从而实现了内存共享。
因此,在本申请实施例中,共享内存是基于服务器的虚拟内存映射创建的,通过建立服务器的共享内存以及QEMU软仿平台适配模块可以实现主机存储芯片可以在共享内存中写入读取,另一侧的盘侧芯片也可以在共享内存中写入读取。
其中,示例性的,服务器可以是x86服务器,在本申请实施例中,对此并不进行限制。
进一步地,所述响应于主机发起的非易失性内存主机控制器接口规范命令,调取预先设置的第一适配模块中的第一封装接口向服务器请求共享内存中的目标文件描述符包括:
响应于主机发起的非易失性内存主机控制器接口规范命令,所述主机存储芯片中的内核模型获取所述非易失性内存主机控制器接口规范命令,并将所述非易失性内存主机控制器接口规范命令发送至所述主机存储芯片中的高速串行计算机扩展总线标准发送模型;
所述主机存储芯片中的高速串行计算机扩展总线标准发送模型调取预先设置的第一适配模块中的第一封装接口向服务器请求共享内存中的目标文件描述符。
因此,在本申请实施例中,NVME进行一次IO写数据,即是一种存储芯片模型测试过程,具体的,主机发起NVMe的ADMIN/IO命令后,首先由存储芯片内核取该命令至PCIe-RC模型,PCIe-RC模型收到该命令后,调取QEMU适配层接口向服务器申请该进程所能访问的虚拟内存文件描述符fd,即响应于主机发起的非易失性内存主机控制器接口规范命令,调取预先设置的第一适配模块中的第一封装接口向服务器请求共享内存中的目标文件描述符。
步骤102,将所述目标测试数据写入所述目标文件描述符指向的所述共享内存中的目标地址空间;
需要说明的是,在本申请实施例中,在申请到所能访问的虚拟内存中的目标文件描述符fd之后,将ADMIN/IO命令携带的数据写入目标文件描述符fd指向的共享内存中的目标地址空间。
步骤103,通过套接字线程将所述非易失性内存主机控制器接口规范命令发送至盘侧芯片模型,以使盘侧芯片模型根据所述非易失性内存主机控制器接口规范命令从所述共享内存中的目标地址空间读取所述目标测试数据。
需要说明的是,在本申请实施例中,在将ADMIN/IO命令携带的数据写入目标文件描述符fd指向的共享内存中的目标地址空间的时候,PCIe-RC模型还会根据NVMe指令通过套接字线程将ADMIN/IO命令写入socket的缓冲区发送到盘侧芯片模型。
进一步地,在步骤101之前,需要进行仿真软件平台适配模块的建立,在所述响应于主机发起的非易失性内存主机控制器接口规范命令,调取预先设置的第一适配模块中的第一封装接口向服务器请求共享内存中的目标文件描述符的步骤之前,所述方法包括:
所述主机存储芯片中的高速串行计算机扩展总线标准发送模型申请映射描述符,并将所述映射描述符传递至预设软件仿真平台中的第一适配模块;
在所述第一适配模块中增加第一封装接口,以使服务器和所述第一适配模块创建共享内存,并通过所述第一封装接口和所述服务器的所述共享内存进行映射,所述服务器向所述高速串行计算机扩展总线标准发送模型暴露所述共享内存的第一封装接口。
需要说明的是,如图11所示,图11是本发明实施例提供的一种软仿平台适配模块工作原理示意图,在本申请实施例中,QEMU作为PCIe模型访问虚拟内存的软仿平台,当PCIe模型访问虚拟内存之前,需要先申请内存共享的映射描述符fd,并把描述符fd传递给QEMU软仿平台,进而在QEMU软仿平台增加非亲缘关系进程共享的文件映射接口,以便和x86服务器的虚拟内存进行映射,同时向PCIe模块暴露虚拟内存的访问接口完成数据写入或者读出,即表示完成了QEMU平台的适配工作。
本发明实施例提供的存储芯片模型测试方法,应用于基于预设软件仿真平台构建的主机存储芯片模型,通过响应于主机发起的非易失性内存主机控制器接口规范命令,调取预先设置的第一适配模块中的第一封装接口向服务器请求共享内存中的目标文件描述符,其中,所述第一适配模块封装有基于所述服务器创建的所述共享内存对应的第一封装接口,所述非易失性内存主机控制器接口规范命令携带目标测试数据;将所述目标测试数据写入所述目标文件描述符指向的所述共享内存中的目标地址空间;通过套接字线程将所述非易失性内存主机控制器接口规范命令发送至盘侧芯片模型,以使盘侧芯片模型根据所述非易失性内存主机控制器接口规范命令从所述共享内存中的目标地址空间读取所述目标测试数据。本发明实施例中,通过建立了预设软件仿真平台的第一适配模块作为软仿平台的适配层,通过第一适配模块可以直接访问预设软件仿真平台所运行的服务器的虚拟内存映射出的共享内存,利用套接字socket线程发送NVMe的ADMIN/IO命令,利用服务器共享内存传输NVMe命令所携带的大块目标测试数据,发送端主机存储芯片模型侧只需要一次地址访问就可以把NVMe命令所携带的大块数据写入虚拟PCIe链路,接收端也只需要一次地址访问就可以读取ADMIN/IO命令所携带的大块目标测试数据,提高芯片模型中虚拟PCIe链路数据传输效率。
参照图2,示出了本发明实施例提供的存储芯片模型测试方法的步骤流程图二,所述方法可以包括:
步骤201,响应于主机发起的非易失性内存主机控制器接口规范命令,调取预先设置的第一适配模块中的第一封装接口向服务器请求共享内存中的目标文件描述符,其中,所述第一适配模块封装有基于所述服务器创建的所述共享内存对应的第一封装接口,所述非易失性内存主机控制器接口规范命令携带目标测试数据;
步骤202,将所述目标测试数据写入所述目标文件描述符指向的所述共享内存中的目标地址空间;
需要说明的是,上述步骤201-202参照前序论述,在此不再赘述。
步骤203,所述主机存储芯片中的高速串行计算机扩展总线标准发送模型将所述非易失性内存主机控制器接口规范命令对应的第一地址转换为第二地址。
进一步地,所述主机存储芯片中的高速串行计算机扩展总线标准发送模型将所述非易失性内存主机控制器接口规范命令对应的第一地址转换为第二地址包括:
所述主机存储芯片中的高速串行计算机扩展总线标准发送模型将所述非易失性内存主机控制器接口规范命令对应的第一内核模型可访问总线地址转换成PCIe可访问地址。
需要说明的是,在进行之后,需要进行地址转换,即将所述非易失性内存主机控制器接口规范命令对应的第一地址转换为第二地址。
具体的,把ADMIN/IO命令存储域地址转成PCIe域地址,即将所述非易失性内存主机控制器接口规范命令对应的第一内核模型可访问总线地址转换成PCIe可访问地址,转换成盘侧芯片模型中的PCIe模型可以识别的地址,这样才可以保证盘侧芯片模型在共享内存中读取目标测试数据的时候是可以识别的地址。
步骤204,通过套接字线程将所述非易失性内存主机控制器接口规范命令发送至盘侧芯片模型,以使盘侧芯片模型根据所述非易失性内存主机控制器接口规范命令从所述共享内存中的目标地址空间读取所述目标测试数据。
进一步地,所述通过套接字线程将所述非易失性内存主机控制器接口规范命令发送至盘侧芯片模型包括:
在检测到所述非易失性内存主机控制器接口规范命令对应的第一地址转换为第二地址完成的情况下,调用套接字接口将所述非易失性内存主机控制器接口规范命令写入套接字缓冲区,以作为套接字线程;
通过所述套接字线程将所述非易失性内存主机控制器接口规范命令发送至盘侧芯片模型。
需要说明的是,在本申请实施例中,在完成地址转换后调取socket接口将ADMIN/IO命令写入socket的缓冲区发送到盘侧芯片模型。
其中,socket即为套接字,是运行在System C线程里,用于芯片间的简单数据交互,在本申请实施例中可以用于NVMe的ADMIN/IO命令的传输,文件描述符fd的数据交互。
进一步地,在步骤204之后,即在所述通过套接字线程将所述非易失性内存主机控制器接口规范命令发送至盘侧芯片模型的步骤之后,所述方法包括:
通过套接字线程通知所述盘侧芯片模型所述目标测试数据写入所述共享内存。
需要说明的是,在本申请实施例中,可以通过套接字线程通知所述盘侧芯片模型所述目标测试数据写入所述共享内存。
具体的,socket握手后,通过socket进行主机存储芯片模型和盘侧芯片模型之间的数据交互。
本发明实施例提供的存储芯片模型测试方法,应用于基于预设软件仿真平台构建的主机存储芯片模型,通过响应于主机发起的非易失性内存主机控制器接口规范命令,调取预先设置的第一适配模块中的第一封装接口向服务器请求共享内存中的目标文件描述符,其中,所述第一适配模块封装有基于所述服务器创建的所述共享内存对应的第一封装接口,所述非易失性内存主机控制器接口规范命令携带目标测试数据;将所述目标测试数据写入所述目标文件描述符指向的所述共享内存中的目标地址空间;通过套接字线程将所述非易失性内存主机控制器接口规范命令发送至盘侧芯片模型,以使盘侧芯片模型根据所述非易失性内存主机控制器接口规范命令从所述共享内存中的目标地址空间读取所述目标测试数据。本发明实施例中,通过建立了预设软件仿真平台的第一适配模块作为软仿平台的适配层,通过第一适配模块可以直接访问预设软件仿真平台所运行的服务器的虚拟内存映射出的共享内存,利用套接字socket线程发送NVMe的ADMIN/IO命令,利用服务器共享内存传输NVMe命令所携带的大块目标测试数据,发送端主机存储芯片模型侧只需要一次地址访问就可以把NVMe命令所携带的大块数据写入虚拟PCIe链路,接收端也只需要一次地址访问就可以读取ADMIN/IO命令所携带的大块目标测试数据,提高芯片模型中虚拟PCIe链路数据传输效率。
另外,本申请实施例可以极大限度模拟PCIe模型的高速传输特性,模拟真实PCIe硬件的数据传输包,不用切块传输,降低了芯片模型的整体降速比,有效的验证了PCIe模型的NVMe命令传输场景,为复杂场景下芯片测试提供高数据吞吐能力测试提供参考依据,加速存储芯片的全链路开发。
参照图3,示出了本发明实施例提供的存储芯片模型测试方法的步骤流程图三,所述方法可以包括:
步骤301,通过套接字线程获取所述非易失性内存主机控制器接口规范命令;
步骤302,根据所述非易失性内存主机控制器接口规范命令从所述共享内存中的目标地址空间读取所述目标测试数据;
其中,所述非易失性内存主机控制器接口规范命令携带目标测试数据,所述目标测试数据存储于目标文件描述符指向的所述共享内存中的目标地址空间,所述目标文件描述符是主机存储芯片模型响应于主机发起的非易失性内存主机控制器接口规范命令,调取预先设置的第一适配模块中的第一封装接口向服务器请求生成的,所述第一适配模块封装有基于所述服务器创建的所述共享内存对应的第一封装接口,所述非易失性内存主机控制器接口规范命令携带目标测试数据。
需要说明的是,在本申请实施例中,应用于基于QEMU软件仿真平台构建的盘侧芯片模型。
盘侧芯片模型即为主机存储芯片模型的对端芯片模型,当盘侧芯片模型通过套接字线程接收到socket数据中携带的NVMe命令之后,根据NVMe命令从共享内存中的目标地址空间读取目标测试数据。
另外,在本申请实施例中,NVMe命令包括ADMIN/IO命令,ADMIN/IO命令是NVMe协议约定的控制命令和输入输出命令。
在本申请实施例中,应用于基于QEMU软件仿真平台构建的盘侧芯片模型,盘侧芯片模型是由System C实现芯片架构的外设模型,比如存储模型、总线模型、定时器模型等,通过TLM2.0进行总线路由以及数据访问。
其中,盘侧芯片模型作为接收端,因此,设置PCIe-EP模型,其中,PCIe-EP模型本质上是PCIe模型,需要配置成EP模式,作为数据接收端。可将PCIe域可访问的地址转换成内核可访问的总线地址。
其中,盘侧芯片模型中也存在适配模块,可以称为第二适配模块,也是QEMU软仿平台适配模块。
其中,虚拟内存是一种内存扩展方法,利用外部存储部件如硬盘,实现内存与外存的交换分区,交换分区作为***的扩展内存,可提升***内存的总容量,但是与物理内存相比速度降低,共享内存映射是一种允许不同进程或线程访问相同内存区域的技术,而内存映射是实现这种共享的具体方法之一,内存映射通常是通过将一个文件或其他资源映射到一个进程的地址空间实现的,这样,当多个进程映射同一个文件或资源时,它们实际上在访问相同的内存区域,从而实现了内存共享。
因此,在本申请实施例中,共享内存是基于服务器的虚拟内存映射创建的,通过建立服务器的共享内存以及QEMU软仿平台适配模块可以实现主机存储芯片可以在共享内存中写入读取,另一侧的盘侧芯片也可以在共享内存中写入读取。
其中,示例性的,服务器可以是x86服务器,在本申请实施例中,对此并不进行限制。
本发明实施例中,通过建立了预设软件仿真平台的第一适配模块作为软仿平台的适配层,通过第一适配模块可以直接访问预设软件仿真平台所运行的服务器的虚拟内存映射出的共享内存,利用套接字socket线程发送NVMe的ADMIN/IO命令,利用服务器共享内存传输NVMe命令所携带的大块目标测试数据,发送端主机存储芯片模型侧只需要一次地址访问就可以把NVMe命令所携带的大块数据写入虚拟PCIe链路,接收端也只需要一次地址访问就可以读取ADMIN/IO命令所携带的大块目标测试数据,提高芯片模型中虚拟PCIe链路数据传输效率。
参照图4,示出了本发明实施例提供的存储芯片模型测试方法的步骤流程图四,所述方法可以包括:
步骤401,通过套接字线程获取所述非易失性内存主机控制器接口规范命令;
需要说明的是,在本申请实施例中,上述步骤参照前序论述,在此不再阐述。
步骤402,所述盘侧芯片模型中的高速串行计算机扩展总线标准接收模型将所述非易失性内存主机控制器接口规范命令对应的第二地址转换为第一地址;
进一步地,所述盘侧芯片模型中的高速串行计算机扩展总线标准接收模型将所述非易失性内存主机控制器接口规范命令对应的第二地址转换为第一地址包括:
所述盘侧芯片模型中的高速串行计算机扩展总线标准接收模型将所述非易失性内存主机控制器接口规范命令对应的PCIe可访问地址转换成第二内核模型可访问总线地址。
步骤403,盘侧芯片模型中的内核模型对所述非易失性内存主机控制器接口规范命令进行解析处理。
进一步地,所述盘侧芯片模型中的内核模型对所述非易失性内存主机控制器接口规范命令进行解析处理包括:
盘侧芯片模型中的内核模型识别所述非易失性内存主机控制器接口规范命令;申请与所述主机存储芯片模型相同的目标文件描述符。
步骤404,根据所述非易失性内存主机控制器接口规范命令从所述共享内存中的目标地址空间读取所述目标测试数据。
进一步地,所述根据所述非易失性内存主机控制器接口规范命令从所述共享内存中的目标地址空间读取所述目标测试数据包括:
从所述目标文件描述符指向的所述共享内存中的目标地址空间读取所述目标测试数据。
需要说明的是,在本申请实施例中,上述步骤402-404中,在步骤402接收到主机存储芯片发送的非易失性内存主机控制器接口规范命令之后,首先NMVe命令的地址会落到PCIe-EP模型的窗口内,由PCIe-EP模型对该NMVe命令地址进行地址转化,即将第二地址转换为第一地址,将PCIe域地址到存储域地址的转换,再由盘侧芯片模型中的内核模型取该NMVe命令进行解析处理,当解析后识别到是NVMe的ADMIN/IO命令后,先申请与发送端(即主机存储芯片模型)相同的虚拟内存文件描述符,即目标文件描述符fd,然后从fd指向的所述共享内存中的目标地址空间一次性取出大块NVMe数据,最后进行数据落盘,完成全部流程。
其中,所述非易失性内存主机控制器接口规范命令携带目标测试数据,所述目标测试数据存储于目标文件描述符指向的所述共享内存中的目标地址空间,所述目标文件描述符是主机存储芯片模型响应于主机发起的非易失性内存主机控制器接口规范命令,调取预先设置的第一适配模块中的第一封装接口向服务器请求生成的,所述第一适配模块封装有基于所述服务器创建的所述共享内存对应的第一封装接口,所述非易失性内存主机控制器接口规范命令携带目标测试数据。
本发明实施例中,通过建立了预设软件仿真平台的第一适配模块作为软仿平台的适配层,通过第一适配模块可以直接访问预设软件仿真平台所运行的服务器的虚拟内存映射出的共享内存,利用套接字socket线程发送NVMe的ADMIN/IO命令,利用服务器共享内存传输NVMe命令所携带的大块目标测试数据,发送端主机存储芯片模型侧只需要一次地址访问就可以把NVMe命令所携带的大块数据写入虚拟PCIe链路,接收端也只需要一次地址访问就可以读取ADMIN/IO命令所携带的大块目标测试数据,提高芯片模型中虚拟PCIe链路数据传输效率。
另外,本申请实施例可以极大限度模拟PCIe模型的高速传输特性,模拟真实PCIe硬件的数据传输包,不用切块传输,降低了芯片模型的整体降速比,有效的验证了PCIe模型的NVMe命令传输场景,为复杂场景下芯片测试提供高数据吞吐能力测试提供参考依据,加速存储芯片的全链路开发。
参照图5,示出了本发明实施例提供的一种存储芯片模型测试***,所述存储芯片模型测试***包括:基于预设软件仿真平台构建的主机存储芯片模型和基于预设软件仿真平台构建的盘侧芯片模型;
所述主机存储芯片模型用于响应于主机发起的非易失性内存主机控制器接口规范命令,调取预先设置的第一适配模块中的第一封装接口向服务器请求共享内存中的目标文件描述符,其中,所述第一适配模块封装有基于所述服务器创建的所述共享内存对应的第一封装接口,所述非易失性内存主机控制器接口规范命令携带目标测试数据;将所述目标测试数据写入所述目标文件描述符指向的所述共享内存中的目标地址空间;通过套接字线程将所述非易失性内存主机控制器接口规范命令发送至盘侧芯片模型;
所述盘侧芯片模型用于根据所述非易失性内存主机控制器接口规范命令从所述共享内存中的目标地址空间读取所述目标测试数据。
具体的,所述主机存储芯片模型包括:第一内核模型、第一存储模型、高速串行计算机扩展总线标准发送模型以及第一适配模块;所述盘侧芯片模型包括:第二内核模型、第二存储模型、高速串行计算机扩展总线标准接收模型以及第二适配模块;
其中,所述第一内核模型、所述第一存储模型以及所述高速串行计算机扩展总线标准发送模型之间通过TLM2.0进行总线路由以及数据访问;
所述第二内核模型、所述第二存储模型以及所述高速串行计算机扩展总线标准接收模型之间通过TLM2.0进行总线路由以及数据访问。
具体的,如图6所示,图6是一种基于NVMe over PCIe命令数据的芯片模型测试流程,从主机存储芯片模型开始作为发送端,盘侧芯片模型作为接收端,实现NVMe命令下发到目标测试数据的落盘的整个流程。
参照图7,示出了本发明实施例提供的一种存储芯片模型测试装置的结构示意图,所述装置可以包括:
请求模块701,用于响应于主机发起的非易失性内存主机控制器接口规范命令,调取预先设置的第一适配模块中的第一封装接口向服务器请求共享内存中的目标文件描述符,其中,所述第一适配模块封装有基于所述服务器创建的所述共享内存对应的第一封装接口,所述非易失性内存主机控制器接口规范命令携带目标测试数据;
写入模块702,用于将所述目标测试数据写入所述目标文件描述符指向的所述共享内存中的目标地址空间;
发送读取模块703,用于通过套接字线程将所述非易失性内存主机控制器接口规范命令发送至盘侧芯片模型,以使盘侧芯片模型根据所述非易失性内存主机控制器接口规范命令从所述共享内存中的目标地址空间读取所述目标测试数据。
本发明实施例提供的存储芯片模型测试装置,应用于基于预设软件仿真平台构建的主机存储芯片模型,通过响应于主机发起的非易失性内存主机控制器接口规范命令,调取预先设置的第一适配模块中的第一封装接口向服务器请求共享内存中的目标文件描述符,其中,所述第一适配模块封装有基于所述服务器创建的所述共享内存对应的第一封装接口,所述非易失性内存主机控制器接口规范命令携带目标测试数据;将所述目标测试数据写入所述目标文件描述符指向的所述共享内存中的目标地址空间;通过套接字线程将所述非易失性内存主机控制器接口规范命令发送至盘侧芯片模型,以使盘侧芯片模型根据所述非易失性内存主机控制器接口规范命令从所述共享内存中的目标地址空间读取所述目标测试数据。本发明实施例中,通过建立了预设软件仿真平台的第一适配模块作为软仿平台的适配层,通过第一适配模块可以直接访问预设软件仿真平台所运行的服务器的虚拟内存映射出的共享内存,利用套接字socket线程发送NVMe的ADMIN/IO命令,利用服务器共享内存传输NVMe命令所携带的大块目标测试数据,发送端主机存储芯片模型侧只需要一次地址访问就可以把NVMe命令所携带的大块数据写入虚拟PCIe链路,接收端也只需要一次地址访问就可以读取ADMIN/IO命令所携带的大块目标测试数据,提高芯片模型中虚拟PCIe链路数据传输效率。
参照图8,示出了本发明实施例提供的另一种存储芯片模型测试装置的结构示意图,所述装置可以包括:
获取模块801,用于通过套接字线程获取所述非易失性内存主机控制器接口规范命令;
读取模块802,用于根据所述非易失性内存主机控制器接口规范命令从所述共享内存中的目标地址空间读取所述目标测试数据;
其中,所述非易失性内存主机控制器接口规范命令携带目标测试数据,所述目标测试数据存储于目标文件描述符指向的所述共享内存中的目标地址空间,所述目标文件描述符是主机存储芯片模型响应于主机发起的非易失性内存主机控制器接口规范命令,调取预先设置的第一适配模块中的第一封装接口向服务器请求生成的,所述第一适配模块封装有基于所述服务器创建的所述共享内存对应的第一封装接口,所述非易失性内存主机控制器接口规范命令携带目标测试数据。
本发明实施例中,通过建立了预设软件仿真平台的第一适配模块作为软仿平台的适配层,通过第一适配模块可以直接访问预设软件仿真平台所运行的服务器的虚拟内存映射出的共享内存,利用套接字socket线程发送NVMe的ADMIN/IO命令,利用服务器共享内存传输NVMe命令所携带的大块目标测试数据,发送端主机存储芯片模型侧只需要一次地址访问就可以把NVMe命令所携带的大块数据写入虚拟PCIe链路,接收端也只需要一次地址访问就可以读取ADMIN/IO命令所携带的大块目标测试数据,提高芯片模型中虚拟PCIe链路数据传输效率。
本发明实施例还提供了一种通信设备,如图9所示,包括处理器901、通信接口902、存储器903和通信总线904,其中,处理器901,通信接口902,存储器903通过通信总线904完成相互间的通信,
存储器903,用于存放计算机程序;
处理器901,用于执行存储器903上所存放的程序时,可以实现如下步骤:
响应于主机发起的非易失性内存主机控制器接口规范命令,调取预先设置的第一适配模块中的第一封装接口向服务器请求共享内存中的目标文件描述符,其中,所述第一适配模块封装有基于所述服务器创建的所述共享内存对应的第一封装接口,所述非易失性内存主机控制器接口规范命令携带目标测试数据;
将所述目标测试数据写入所述目标文件描述符指向的所述共享内存中的目标地址空间;
通过套接字线程将所述非易失性内存主机控制器接口规范命令发送至盘侧芯片模型,以使盘侧芯片模型根据所述非易失性内存主机控制器接口规范命令从所述共享内存中的目标地址空间读取所述目标测试数据;
或者,
通过套接字线程获取所述非易失性内存主机控制器接口规范命令;
根据所述非易失性内存主机控制器接口规范命令从所述共享内存中的目标地址空间读取所述目标测试数据;
其中,所述非易失性内存主机控制器接口规范命令携带目标测试数据,所述目标测试数据存储于目标文件描述符指向的所述共享内存中的目标地址空间,所述目标文件描述符是主机存储芯片模型响应于主机发起的非易失性内存主机控制器接口规范命令,调取预先设置的第一适配模块中的第一封装接口向服务器请求生成的,所述第一适配模块封装有基于所述服务器创建的所述共享内存对应的第一封装接口,所述非易失性内存主机控制器接口规范命令携带目标测试数据。
其中,存储器和处理器采用总线方式连接,总线可以包括任意数量的互联的总线和桥,总线将一个或多个处理器和存储器的各种电路连接在一起。总线还可以将诸如***设备、稳压器和功率管理电路等之类的各种其他电路连接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口在总线和收发机之间提供接口。收发机可以是一个元件,也可以是多个元件,比如多个接收器和发送器,提供用于在传输介质上与各种其他装置通信的单元。经处理器处理的数据可以有线介质进行传输或者通过天线在无线介质上进行传输,进一步,天线还接收数据并将数据传送给处理器。处理器负责管理总线和通常的处理,还可以提供各种功能,包括定时,***接口,电压调节、电源管理以及其他控制功能。而存储器可以被用于存储处理器在执行操作时所使用的数据。
上述终端提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,简称PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,简称EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述终端与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,简称RAM),也可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的存储芯片模型测试方法。
在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的存储芯片模型测试方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk (SSD))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于***实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。