在网络上模拟PCIe总线制造技术

技术编号:23470525 阅读:18 留言:0更新日期:2020-03-06 12:39
提供了在网络上模拟PCIe总线。提供的模拟PCIe总线的方法,包括:响应于访问PCIe设备的PCIe寄存器,主机在网络上发送第一命令包;PCIe设备的模拟器从网络上接收第一命令包,访问模拟的PCIe寄存器空间,并在网络上向主机发送第一应答包以指示PCIe寄存器的访问结果。

Simulate PCIe bus on the network

【技术实现步骤摘要】
在网络上模拟PCIe总线
本申请涉及电子设备模拟器,具体地,涉及通过网络系统模拟PCIe总线的电子设备。
技术介绍
PCIE(PeripheralComponentInterconnectExpress,PCIe,高速外围组件互联)总线是诸如计算机的电子系统的重要组成部分。多种电子设备通过PCIe总线耦合到CPU。耦合到PCIe总线的电子设备也称为PCIe设备,例如,显卡、网卡、存储设备等。NVMe(NVMExpress,高速非易失存储)协议允许将高性能固态硬盘耦合到PCIe设备。电子设备中运行固件。开发过程早期,借助例如软件实现或软件与硬件结合实现的模拟器为固件提供运行环境,以利于在硬件尚未完成阶段的固件的早期开发与调试。模拟器模拟的电子设备同主机的驱动程序或应用程序交互。以NVMe存储设备为例,主机生成NVMe协议命令并提供给模拟器模拟的NVMe存储设备,模拟器中运行的固件处理NVMe协议命令,并给出响应。
技术实现思路
需要模拟电子设备所使用的PCIe总线的行为,以提供更好的电子设备模拟器。电子设备的模拟器通常需要占用大量资源(内存、CPU等),难以在单一服务器上运行多个模拟器实例。电子设备的模拟器通常是用户态程序,而主机中运行的电子设备的驱动程序往往是内核态程序,主机使用电子设备时,用户态程序访问驱动程序,经历了进程间通信过程,希望模拟器也提供对进程间通信行为的模拟。以及模拟PCIe总线,除了要模拟PCIe总线的寄存器与存储器空间,还要模拟诸如中断的总线行为。为满足上述目的,通过网络模拟PCIe总线,使得一个或多个模拟器实例运行在网络中的各个服务器上,而所模拟的电子设备所耦合的主机也耦合到网络,并通过网络访问各个模拟器。根据本申请的第一方面,提供了根据本申请第一方面的第一模拟PCIe总线的方法,包括:响应于访问PCIe设备的PCIe寄存器,主机在网络上发送第一命令包;PCIe设备的模拟器从网络上接收第一命令包,访问模拟的PCIe寄存器空间,并在网络上向主机发送第一应答包以指示PCIe寄存器的访问结果。根据本申请第一方面的第一模拟PCIe总线的方法,提供了根据本申请第一方面的第二模拟PCIe总线的方法,其中所述PCIe设备是NVMe设备;所述方法还包括:响应于向所述NVMe设备发送NVMe命令,主机在网络上发送第二命令包;NVMe设备的模拟器从网络上接收第二命令包,并生成第三命令包发送给主机,所述第三命令包指示在主机和PCIe设备之间发起DMA传输。根据本申请第一方面的第二模拟PCIe总线的方法,提供了根据本申请第一方面的第三模拟PCIe总线的方法,其中NVMe设备的模拟器向NVMe设备的模拟器运行的固件指示收到了第二命令包,根据固件生成的DMA命令生成第三命令包。根据本申请第一方面的第二或第三模拟PCIe总线的方法,提供了根据本申请第一方面的第四模拟PCIe总线的方法,还包括:响应于收到第三命令包,主机根据第三命令包指定的地址从主机的存储器的获取数据并封装在一个或多个数据包中,在网络上发送所述一个或多个数据包。根据本申请第一方面的第四模拟PCIe总线的方法,提供了根据本申请第一方面的第五模拟PCIe总线的方法,还包括:响应于收到所述一个或多个数据包,NVMe设备的模拟器生成第四命令包发送给主机,所述第四命令包用于模拟PCIe总线的中断。根据本申请第一方面的第四或第五模拟PCIe总线的方法,提供了根据本申请第一方面的第六模拟PCIe总线的方法,还包括:响应于接收所述一个或多个数据包,NVMe设备的模拟器还更新模拟的PCIe寄存器空间。根据本申请第一方面的第四模拟PCIe总线的方法,提供了根据本申请第一方面的第七模拟PCIe总线的方法,还包括:响应于在网络上发送了所述一个或多个数据包,主机还生成并在网络上发送第五命令包,第五命令包用于访问模拟的PCIe寄存器空间(CQ)。根据本申请第一方面的第七模拟PCIe总线的方法,提供了根据本申请第一方面的第八模拟PCIe总线的方法,还包括:响应于在网络上收到NVMe设备的模拟器提供的对第五命令包的应答包,主机从主机存储器获取所述NVMe命令的处理结果。根据本申请第一方面的第二或第三模拟PCIe总线的方法,提供了根据本申请第一方面的第九模拟PCIe总线的方法,还包括:响应于发出第三命令包,NVMe设备的模拟器根据第三命令包指定的地址从NVMe设备的存储器获取数据并封装在一个或多个数据包中,在网络上向主机发送所述一个或多个数据包。根据本申请第一方面的第九模拟PCIe总线的方法,提供了根据本申请第一方面的第十模拟PCIe总线的方法,还包括:响应于发送了所述一个或多个数据包,NVMe设备的模拟器还更新模拟的PCIe寄存器空间。根据本申请第一方面的第九或第十模拟PCIe总线的方法,提供了根据本申请第一方面的第十一模拟PCIe总线的方法,还包括:NVMe设备的模拟器生成六命令包发送给主机,所述第六命令包用于模拟PCIe总线的中断。根据本申请第一方面的第十一模拟PCIe总线的方法,提供了根据本申请第一方面的第十二模拟PCIe总线的方法,还包括:响应于收到第六命令包,主机还生成并在网络上发送第七命令包,第七命令包用于访问模拟的PCIe寄存器空间(CQ)。根据本申请第一方面的第十二模拟PCIe总线的方法,提供了根据本申请第一方面的第十三模拟PCIe总线的方法,还包括:PCIe设备的模拟器从网络上接收第七命令包,访问模拟的PCIe寄存器空间,并在网络上向主机发送第二应答包以指示PCIe寄存器的访问结果。根据本申请第一方面的第一至第十三模拟PCIe总线的方法,提供了根据本申请第一方面的第十四模拟PCIe总线的方法,其中根据TCP/IP协议传输命令包、应答包和/或数据包。根据本申请的第二方面,提供了根据本申请第二方面的第一PCIe总线模拟系统,包括主机与一个或多个服务器;所述主机包括寄存器访问单元、DMA响应单元、数据传输单元与中断响应单元;所述服务器包括寄存器访问单元、DMA请求单元、数据传输单元与中断请求单元;其中所述主机的寄存器访问单元与所属服务器的寄存器访问单元间存在TCP连接;所述主机的响应单元与所述服务器的DMA请求单元间存在TCP连接;所述主机的数据传输单元与所述服务器的数据传输单元间存在TCP连接;所述主机的中断响应单元与所述服务器的中断请求单元间存在TCP连接。根据本申请第二方面的第一PCIe总线模拟系统,提供了根据本申请第二方面的第二PCIe总线模拟系统,其中所述一个或多个服务器包括PCIe设备模拟器用于模拟PCIe设备。根据本申请第二方面的第一或第二PCIe总线模拟系统,,提供了根据本申请第二方面的第三PCIe总线模拟系统,其中所述主机的寄存器访问单元,根据主机对PCIe设备的PCIe寄存器的访问请求,生成第一命令包,并发送给所述服务器的寄存器访问单元。根据本申请第二方面的第一至第三PCIe总线模拟系统之一,提供了根据本申本文档来自技高网...

【技术保护点】
1.一种模拟PCIe总线的方法,包括:/n响应于访问PCIe设备的PCIe寄存器,主机在网络上发送第一命令包;/nPCIe设备的模拟器从网络上接收第一命令包,访问模拟的PCIe寄存器空间,并在网络上向主机发送第一应答包以指示PCIe寄存器的访问结果。/n

【技术特征摘要】
20180828 CN 20181099055491.一种模拟PCIe总线的方法,包括:
响应于访问PCIe设备的PCIe寄存器,主机在网络上发送第一命令包;
PCIe设备的模拟器从网络上接收第一命令包,访问模拟的PCIe寄存器空间,并在网络上向主机发送第一应答包以指示PCIe寄存器的访问结果。


2.根据权利要求1所述的方法,其中所述PCIe设备是NVMe设备;所述方法还包括:
响应于向所述NVMe设备发送NVMe命令,主机在网络上发送第二命令包;
NVMe设备的模拟器从网络上接收第二命令包,并生成第三命令包发送给主机,所述第三命令包指示在主机和PCIe设备之间发起DMA传输。


3.根据权利要求2所述的方法,其中
NVMe设备的模拟器向NVMe设备的模拟器运行的固件指示收到了第二命令包,根据固件生成的DMA命令生成第三命令包。


4.根据权利要求2或3之一所述的方法,还包括:
响应于收到第三命令包,主机根据第三命令包指定的地址从主机的存储器的获取数据并封装在一个或多个数据包中,在网络上发送所述一个或多个数据包。


5.根据权利要求4所述的方法,还包括:
响应于收到所述一个或多个数据包,NVMe设备的模拟器生成第四命令包发送给主机,所述第四命令包用于模拟PCIe总线的中断。


6.根据权利要求4或5所述的方法,还包括:
响应于接收所述一个或多个数据包,NVMe设备的模拟器还更新模拟的PCIe寄存器空间。


7.根据权利要求4所述的方法,还包括:
响应于在网络上发送了所述一个或多个数据包,主机还...

【专利技术属性】
技术研发人员:贾舒谢进伟程雪
申请(专利权)人:上海天王星智能科技有限公司
类型:发明
国别省市:上海;31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1