CN110865960B - 在网络上模拟PCIe总线 - Google Patents
在网络上模拟PCIe总线 Download PDFInfo
- Publication number
- CN110865960B CN110865960B CN201811076187.8A CN201811076187A CN110865960B CN 110865960 B CN110865960 B CN 110865960B CN 201811076187 A CN201811076187 A CN 201811076187A CN 110865960 B CN110865960 B CN 110865960B
- Authority
- CN
- China
- Prior art keywords
- pcie
- host
- unit
- network
- response
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
提供了在网络上模拟PCIe总线。提供的模拟PCIe总线的方法,包括:响应于访问PCIe设备的PCIe寄存器,主机在网络上发送第一命令包;PCIe设备的模拟器从网络上接收第一命令包,访问模拟的PCIe寄存器空间,并在网络上向主机发送第一应答包以指示PCIe寄存器的访问结果。
Description
技术领域
本申请涉及电子设备模拟器,具体地,涉及通过网络***模拟PCIe总线的电子设备。
背景技术
PCIE(Peripheral Component Interconnect Express,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总线模拟***之一,提供了根据本申请第二方面的第四PCIe总线模拟***,其中所述服务器的寄存器访问单元将用于所述第一命令包的第一应答包发送给所述主机的寄存器访问单元。
根据本申请第二方面的第二至第四PCIe总线模拟***之一,提供了根据本申请第二方面的第五PCIe总线模拟***,其中所述服务器的DMA请求单元,生成第二命令包,并发送给所述服务器的DMA响应单元。
根据本申请第二方面的第五PCIe总线模拟***,提供了根据本申请第二方面的第六PCIe总线模拟***,其中所述DMA响应单元,指示所述主机的数据传输单元根据第二命令包将所述主机的存储器的数据通过一个或多个数据包发送给所述服务器的数据传输单元。
根据本申请第二方面的第五或第六PCIe总线模拟***,提供了根据本申请第二方面的第七PCIe总线模拟***,其中响应于将第二命令包发送给所述服务器的DMA响应单元,所述服务器的数据传输单元还将所述服务器的存储器的数据通过一个或多个数据包发送给所述主机的数据传输单元。
根据本申请第二方面的第一至第七PCIe总线模拟***之一,提供了根据本申请第二方面的第八PCIe总线模拟***,其中所述服务器的中断请求单元,生成第三命令包,并发送给所述主机的中断响应单元,其中所述第三命令包用于模拟PCIe总线的中断。
根据本申请第三方面,提供了根据本申请第三方面的第一模拟PCIe总线的装置,包括:命令包发送装置,用于为访问模拟的PCIe设备的PCIe寄存器,在网络上发送第一命令包;应答包发送装置,用于根据从网络上接收的第一命令包,访问模拟的PCIe设备的PCIe寄存器空间,并在网络上发送第一应答包以指示PCIe寄存器的访问结果。
根据本申请第四方面,提供了根据本申请第四方面的第一PCIe总线模拟软件,包括运行在主机的第一软件与运行在一个或多个服务器的第二软件;运行第一软件使得所述主机包括寄存器访问单元、DMA响应单元、数据传输单元与中断响应单元;运行第二软件使得包括寄存器访问单元、DMA请求单元、数据传输单元与中断请求单元;其中所述主机的寄存器访问单元与所属服务器的寄存器访问单元间存在TCP连接;所述主机的响应单元与所述服务器的DMA请求单元间存在TCP连接;所述主机的数据传输单元与所述服务器的数据传输单元间存在TCP连接;所述主机的中断响应单元与所述服务器的中断请求单元间存在TCP连接。。
附图说明
当连同附图阅读时,通过参考后面对示出性的实施例的详细描述,将最佳地理解本发明以及优选的使用模式和其进一步的目的和优点,其中附图包括:
图1是根据本申请实施例的电子设备的模拟器***的示意图;
图2展示根据本申请实施例的电子设备的模拟器***的框图;
图3是根据本申请实施例的电子设备的模拟器***的PCIe寄存器访问的示意图;
图4是根据本申请实施例的电子设备的模拟器***的DMA传输的示意图;以及
图5是根据本申请又一实施例的电子设备的模拟器***的框图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本申请的限制。
图1是根据本申请实施例的电子设备的模拟器***的示意图。
主机110以及一个或多个服务器(120、122、124与126)通过网络耦合到一起。服务器上运行模拟器来模拟通过PCIe总线耦合到主机110的电子设备(PCIe设备)。主机110运行应用程序,应用程序访问或使用所模拟的电子设备。下文中,以NVMe协议存储设备为例进行描述,服务器上运行模拟器模拟存储设备。
主机110与服务器(120、122、124与126)通过例如TCP/IP协议通信,来模拟主机与PCIe设备基于PCIe总线的通信行为。在其他例子中,主机与服务器(120、122、124与126)通过以太网、光纤通道(Fiber Channel)等网络协议通信。
将运行模拟器的信息处理设备称为服务器(120、122、124与126),因为模拟器需要大量的计算资源,以及在诸如TCP/IP的网络通信模型中,在服务器上运行网络通信的服务器端,而在主机110上运行网络通信的客户端。从而在服务器(120、122、124与126)运行的模拟器初始化完成并开始监听网络端口后,主机110的应用程序或驱动程序才可访问被模拟的电子设备,以进一步准确地模拟电子设备上电或启动后等待固件加载而暂不响应主机的访问的行为。
根据本申请的实施例,模拟PCIe总线的三种行为:寄存器访问、DMA数据传输与总线中断。
图2展示根据本申请实施例的电子设备的模拟器***的框图。
电子设备的模拟器***包括主机210与服务器220。服务器220运行模拟器来模拟通过PCIe总线耦合到主机的电子设备。
主机210包括软件实现的寄存器访问单元212、DMA响应单元214、数据传输单元216与中断响应单元218,而服务器220包括软件实现的寄存器访问单元222、DMA请求单元224、数据传输单元226与中断请求单元228。
主机210的寄存器访问单元212与服务器220的寄存器访问单元222通过例如TCP/IP协议进行网络通信。主机210的DMA响应单元214与服务器210的DMA请求单元224通过网络协议进行通信。主机210的数据传输单元216与服务器220的数据传输单元226通过网络协议通信。主机210的中断响应单元218与服务器220的中断请求单元通过网络协议通信。
主机210的寄存器访问单元212、DMA响应单元214、数据传输单元216与中断响应单元218,与服务器220的寄存器访问单元222、DMA请求单元224、数据传输单元226与中断请求单元228,协同提供对PCIe总线的模拟。
也参看图2,寄存器访问单元212与寄存器访问单元222之间是双向通信,寄存器访问单元212主动向寄存器访问单元222发起数据传输,寄存器访问单元222也主动向寄存器访问单元212发起数据传输。DMA请求单元224与DMA响应单元214之间是单向通信,仅DMA请求单元214主动向DMA响应单元214发起数据传输,DMA响应单元214不会主动向DMA请求单元214发起数据传输,以模拟PCIe设备向所耦合的主机发起DMA传输请求。数据传输单元216与数据传输单元226之间是双向通信。中断请求单元228与中断响应单元218之间是单向通信,仅中断请求单元228向中断响应单元218发起数据传输,以模拟PCIe设备向所耦合的主机提供的中断。
作为举例,由主机210与服务器220之间单一的TCP/IP连接来承载各单元之间的数据传输。依然作为举例,主机210与服务器220的对应单元分别建立TCP/IP连接来各自进行数据传输。
根据本申请的实施例,主机210与服务器220的各单元以命令与应答的方式通信,在例如TCP/IP的网络协议上定义命令与应答的包格式。定义命令包、应答包与数据包,来承载各单元之间的用于模拟PCIe总线的通信。作为举例,命令包括多个字段,例如,操作码、寄存器地址、长度与数据等字段。操作码指示当前命令的含义,例如,寄存器读命令、DMA请求命令、中断请求命令等。寄存器地址字段,指示命令要访问的PCIe总线协议定义的PCIe设备的寄存器的地址。长度字段指示当前命令的数据字段的长度。数据字段携带当前命令的数据,例如寄存器写命令要写入的内容,中断请求的中断向量等。
应答包包括多个字段,例如操作码、状态与数据等字段。操作码字段指示当前应答的含义,例如,对寄存器读命令的应答、对DMA请求命令的应答等。状态字段指示当前应答的状态,例如,寄存器读命令处理成功。数据字段指示当前应答的结果,例如,寄存器读命令所读出的数据。可选地,应答包也包括长度字段指示数据字段的长度。
数据包用于承载例如DMA传输的数据。
图3是根据本申请实施例的电子设备的模拟器***的PCIe寄存器访问的示意图。
PCIe总线协议定义了PCIe寄存器。PCIe设备提供寄存器,主机通过PCIe总线访问PCIe设备提供的寄存器。
主机310的寄存器访问单元312与服务器320的寄存器访问单元322协同模拟通过PCIe总线对PCIe设备的寄存器的访问。
以NVMe存储设备为例,模拟器提供PCIe寄存器空间326与NVMe控制器寄存器空间328。PCIe寄存器空间326与NVMe控制器寄存器空间328是例如服务器320的由寄存器访问单元322所管理的内存空间,分别记录根据PCIe总线协议定义的PCIe寄存器与NVMe协议定义的NVMe控制器寄存器。主机310根据PCIe协议对这些寄存器的访问请求,被捕获并通过寄存器访问单元312生成在网络上传输的命令包发送给寄存器访问单元322。命令包中指示了要访问的寄存器的地址与访问类型(读/写等)。寄存器访问单元322响应于接收到命令包,从命令包提取寄存器地址,根据寄存器地址识别要访问PCIe寄存器还是NVMe控制器寄存器,并相应地访问PCIe寄存器空间326或NVM控制器寄存器空间328。可选地,寄存器访问单元322还识别寄存器的访问权限,根据访问权限允许或阻止对寄存器或其指定比特的访问。
一些例子中,寄存器访问单元322根据收到命令包向模拟器中运行的固件给出指示,由固件来处理寄存器访问命令。例如,寄存器访问单元322将命令包提供给固件。以寄存器读命令为为例,固件访问PCIe寄存器空间326获取寄存器读命令的结果,并将结果提供给寄存器访问单元322,寄存器访问单元322再生成应当包,并将应答包提供给寄存器访问单元312。
在又一些例子中,主机310对PCIe设备的部分寄存器(包括PCIe寄存器和/或NVMe控制寄存器)的访问,由寄存器访问单元322直接处理。寄存器访问单元322响应于指示寄存器访问的命令包,根据命令包指示的寄存器地址识别出自身能处理该寄存器访问请求,则通过PCIe寄存器空间326或控制器寄存器空间328实施寄存器访问,并将寄存器访问结果生成应答包发送给寄存器访问单元312。以及寄存器访问单元322将自身无法处理的寄存器访问请求交由固件处理。
在一些情况下,PCIe设备的固件运行中,会更新寄存器PCIe寄存器。NVMe设备的固件运行中,会更新PCIe寄存器和/或NVMe控制器寄存器。作为举例,固件对PCIe寄存器和/或NVMe控制器寄存器的更新,被记录在PCIe寄存器空间326和/或控制器寄存器空间328,从而主机访问PCIe寄存器空间326和/或控制器寄存器空间328所对应的寄存器时,将感知到寄存器被更新后的值。
图4是根据本申请实施例的电子设备的模拟器***的DMA传输的示意图。
PCIe总线协议定义了DMA传输。通过DMA传输,在主机存储器空间与PCIe设备的存储器空间之间传输数据。DMA传输由PCIe设备发起。以NVMe存储设备为例,主机向NVMe存储设备的控制器寄存器空间的门铃寄存器写入命令指示,NVMe存储设备通过DMA传输从主机将NVMe命令搬移到存储设备的存储器空间。以及NVMe存储设备执行获取的NVMe命令,并将NVMe命令要写入的数据从主机的存储器空间搬移到存储设备的存储器空间,或者将NVMe命令要读出的数据从存储设备的存储器空间搬移到主机的存储器空间。
以NVMe存储设备为例,响应于寄存器访问单元322(也参看图3)(或模拟器的固件)更新了门铃寄存器,固件向DMA请求单元424提供例如DMA命令,DMA命令指示了DMA传输的信息,例如源地址、目的地址、数据长度和/或数据传输方向(主机到PCIe设备,或PCIe设备到主机)。DMA请求单元424根据DMA命令生成命令包并发送给DMA响应单元414。可选地,DMA响应单元414向DMA请求单元424发送应答包以指示接收了命令包。接下来,DMA响应单元414指示数据传输单元416同数据传输单元426进行数据传输,来响应DMA命令所指示的数据传输。例如,DMA命令指示从主机存储空间417的指定地址传输指定长度数据到服务器420的存储空间427的指定地址。数据传输单元416从存储空间417的指定地址获取数据,通过网络以数据包形式发送给数据传输单元426。数据传输单元426将从数据包接收的数据存储在存储空间427。可选地,数据传输单元416向数据传输单元426发送命令包以指示随后进行的DMA传输的目的地址与数据长度,并在得到数据传输单元426的应答包后,通过一个或多个数据包向数据传输单元426提供DMA命令所指示的数据。
作为又一个例子,固件识别出NVMe命令指示读命令,从存储设备读取数据到主机410。固件向DMA请求单元424提供例如DMA命令。DMA请求单元424根据DMA命令生成命令包并发送给DMA响应单元414。DMA响应单元414向DMA请求单元424提供应答包以指示做好了接收DMA传输的请求。接下来,数据传输单元426根据DMA命令,从存储空间427的指定地址获取数据,通过网络以数据包形式发送给数据传输单元416。数据传输单元416将从数据包接收的数据存储在存储空间417。可选地,数据传输单元426向数据传输单元416发送命令包以指示随后进行的DMA传输的目的地址与数据长度,并在得到数据传输单元416的应答包后,通过一个或多个数据包向数据传输单元416提供DMA命令所指示的数据。
作为又一个例子,固件识别出NVMe命令指示读命令,从存储设备读取数据到主机410。固件向DMA请求单元424提供例如DMA命令。DMA请求单元424根据DMA命令生成命令包并发送给DMA响应单元414。响应于收到DMA命令,DMA响应单元414根据DMA命令指示数据传输单元416接收来自数据传输单元426的数据包,并根据由DMA命令所指示目的地址将接收的数据包存储在存储空间417。
根据本申请的又一实施例,在网络上模拟PCIe总线的中断行为。
作为举例,NVMe存储设备在处理了一条或多条NVMe命令后,向主机提供中断。响应于接收中断,主机的中断处理程序访问NVMe存储设备的控制器寄存器中的NVMe命令队列以获取NVMe命令处理结果。
例如,模拟器中的运行的固件响应于一条或多条NVMe命令被处理完成,指示中断请求单元228(也参看图2)向中断响应单元218发送命令包,命令包指示了中断信息。中断处理单元218响应于命令包指示了中断信息,调用对应的中断处理程序来处理中断请求。作为举例,中断响应单元218还模拟中断屏蔽,以决定是否响应中断以及响应中断的时机。依然作为举例,响应于从中断响应单元218收到指示中断的命令包,还指示寄存器访问单元212向寄存器访问单元222发送命令包以访问NVMe设备的控制器寄存器空间,以从NVMe命令的完成队列获取NVMe命令的执行结果。
图5是根据本申请又一实施例的电子设备的模拟器***的框图。
图5展示的模拟器***中,主机510与多个服务器(520、522……524)通过网络耦合。多个服务器(520、522……524)的每个运行根据本申请实施例的PCIe设备的模拟器。多个服务器(520、522……524)的每个运行网络服务端(521、523……525),例如,根据TCP/IP协议的网络服务端。完成初始化的网络服务器等待来自网络的接入请求。网络服务端(521、523……525)包括例如根据本申请实施例的寄存器访问单元、DMA请求单元、数据传输单元与中断请求单元(也参看图2-图4)。
主机510运行一个或多个网络客户端(511、513……515),例如,根据TCP/IP协议的网络客户端。每个网络客户端与网络服务端之一建立连接,并通过访问模拟的PCIe设备的PCIe寄存器空间完成对PCIe设备的加载。网络客户端包括例如根据本申请实施例的寄存器访问单元、DMA响应单元、数据传输单元与中断响应单元(也参看图2-图4)。作为举例,主机510的PCIe设备驱动程序被耦合到网络客户端。在PCIe设备的驱动程序被加载前,网络客户端已获得对应的网络服务端的相关信息(网络地址、端口号等)。PCIe设备的驱动程序加载PCIe设备的请求,被网络客户端的寄存器访问单元转换为命令包发送给网络客户端的寄存器访问单元。网络客户端的寄存器访问单元还将网络服务端提供的PCIe寄存器访问结果提供给主机的PCIe设备的驱动程序,从而PCIe设备驱动程序将网络服务端识别为遵循PCIe总线协议的PCIe设备。
可选地,对于NVMe存储设备,运行在主机510的驱动程序生成NVMe命令,并访问NVMe存储设备的NVMe控制器寄存器以告知NVMe存储设备有NVMe命令产生。网络客户端的寄存器访问单元生成命令包以指示网络服务端的寄存器访问单元处理命令包指示的控制器寄存器访问请求。接下来,服务器上的模拟器所运行的固件处理NVMe命令,并通过网络服务端与主机的510的网络客户端交互,以完成对NVMe命令的处理。
可选地,各网络客户端(511、513……515)具有相同的网络地址与不同的端口号。
依然可选地,根据本申请实施例的模拟器***运行期间,网络客户端与对应的网络服务端建立并保持长连接。
虽然当前申请参考的示例被描述,其只是为了解释的目的而不是对本申请的限制,对实施方式的改变,增加和/或删除可以被做出而不脱离本发明的范围。
这些实施方式所涉及的、从上面描述和相关联的附图中呈现的教导获益的领域中的技术人员将认识到这里记载的本发明的很多修改和其他实施方式。因此,应该理解,本发明不限于公开的具体实施方式,旨在将修改和其他实施方式包括在所附权利要求书的范围内。尽管在这里采用了特定的术语,但是仅在一般意义和描述意义上使用它们并且不是为了限制的目的而使用。
Claims (10)
1.一种模拟PCIe总线的方法,包括:
响应于访问PCIe设备的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所述的方法,还包括:
响应于在网络上发送了所述一个或多个数据包,主机还生成并在网络上发送第五命令包,第五命令包用于访问模拟的PCIe寄存器空间(CQ)。
8.一种PCIe总线模拟***,包括主机与一个或多个服务器;
所述主机包括寄存器访问单元、DMA响应单元、数据传输单元与中断响应单元;
所述服务器包括寄存器访问单元、DMA请求单元、数据传输单元与中断请求单元;其中,服务器运行模拟器来模拟通过PCIe总线耦合到主机的PCIe设备;
所述主机的寄存器访问单元与所属服务器的寄存器访问单元间存在TCP连接,以模拟PCIe设备与所耦合的主机之间的寄存器访问行为;
所述主机的响应单元与所述服务器的DMA请求单元间存在TCP连接,以模拟PCIe设备向所耦合的主机发起DMA传输请求;
所述主机的数据传输单元与所述服务器的数据传输单元间存在TCP连接,以模拟PCIe设备与所耦合的主机之间的数据传输行为;
所述主机的中断响应单元与所述服务器的中断请求单元间存在TCP连接,以模拟PCIe设备向所耦合的主机提供的中断。
9.一种模拟PCIe总线的装置,包括:
命令包发送装置,用于为访问模拟的PCIe设备的PCIe寄存器,在网络上发送第一命令包,其中,模拟的PCIe设备为PCIe设备的模拟器,所述模拟器运行于服务器上,用于模拟通过PCIe总线耦合到主机的PCIe设备;
应答包发送装置,用于根据从网络上接收的第一命令包,访问模拟的PCIe设备的PCIe寄存器空间,并在网络上发送第一应答包以指示PCIe寄存器的访问结果。
10.一种PCIe总线模拟***,包括运行在主机的第一软件与运行在一个或多个服务器的第二软件;
运行第一软件使得所述主机包括寄存器访问单元、DMA响应单元、数据传输单元与中断响应单元;
运行第二软件使得包括寄存器访问单元、DMA请求单元、数据传输单元与中断请求单元;其中,服务器运行模拟器来模拟通过PCIe总线耦合到主机的PCIe设备,主机和PCIe设备之间通过TCP/IP协议通信,来模拟主机与电子设备基于PCIe总线的通信行为;
所述主机的寄存器访问单元与所属服务器的寄存器访问单元间存在TCP连接,以模拟PCIe设备与所耦合的主机之间的寄存器访问行为;
所述主机的响应单元与所述服务器的DMA请求单元间存在TCP连接,以模拟PCIe设备与所耦合的主机之间的数据传输行为;
所述主机的数据传输单元与所述服务器的数据传输单元间存在TCP连接,以模拟PCIe设备与所耦合的主机之间的数据传输行为;
所述主机的中断响应单元与所述服务器的中断请求单元间存在TCP连接,以模拟PCIe设备向所耦合的主机提供的中断。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810990554 | 2018-08-28 | ||
CN2018109905549 | 2018-08-28 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110865960A CN110865960A (zh) | 2020-03-06 |
CN110865960B true CN110865960B (zh) | 2022-07-22 |
Family
ID=69651608
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811076187.8A Active CN110865960B (zh) | 2018-08-28 | 2018-09-14 | 在网络上模拟PCIe总线 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110865960B (zh) |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7929565B2 (en) * | 2007-12-12 | 2011-04-19 | Dell Products L.P. | Ethernet switching of PCI express packets |
KR101283244B1 (ko) * | 2011-08-03 | 2013-07-11 | 엘지이노텍 주식회사 | 무선 이더넷을 위한 네트워크 접속 장치 및 시스템 |
CN102495778B (zh) * | 2011-12-13 | 2014-10-22 | 曙光信息产业(北京)有限公司 | 一种测试单包正则匹配逻辑的***和方法 |
JP2014063497A (ja) * | 2012-09-21 | 2014-04-10 | Plx Technology Inc | 論理装置の機能を有するpciエクスプレススイッチ |
AT511988A3 (de) * | 2012-10-17 | 2013-11-15 | Avl List Gmbh | Restbus-Simulation eines FlexRay Kommunikationsnetzwerkes |
CN106126454B9 (zh) * | 2013-05-20 | 2019-08-30 | 华为技术有限公司 | 一种计算机***、高速***组件互联端点设备的访问方法和装置 |
CN105320628B (zh) * | 2015-11-06 | 2018-11-06 | 中国科学院计算技术研究所 | 使能单根i/o设备多根共享的适配装置、***及方法 |
CN106980582B (zh) * | 2016-01-18 | 2022-05-13 | 中兴通讯股份有限公司 | 数据处理方法和装置 |
US10289560B2 (en) * | 2016-03-10 | 2019-05-14 | Toshiba Memory Corporation | Switch module and storage system |
-
2018
- 2018-09-14 CN CN201811076187.8A patent/CN110865960B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN110865960A (zh) | 2020-03-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20070005867A1 (en) | Virtual peripheral device interface and protocol for use in peripheral device redirection communication | |
US10509758B1 (en) | Emulated switch with hot-plugging | |
US10409632B2 (en) | Emulation of hardware components based on interrupt design | |
CN113312143B (zh) | 云计算***、命令处理方法及虚拟化仿真装置 | |
US9348771B1 (en) | Cloud-based instrument driver system | |
CN114253740A (zh) | 基于Linux内核的协议栈数据传输方法及装置 | |
CN112039722B (zh) | 一种mqtt协议仿真方法及仿真设备 | |
US9418181B2 (en) | Simulated input/output devices | |
WO2022143714A1 (zh) | 服务器***、虚拟机创建方法及装置 | |
CN117407123B (zh) | 基于多***隔离的usb设备虚拟共享*** | |
JP7321839B2 (ja) | ハードウェア抽象化ソフトウェアレイヤを使用するシステムのための汎用仮想化プラットフォーム | |
KR20150128256A (ko) | 실제 스마트기기의 디바이스에서 발생하는 이벤트에 따라 응용프로그램을 실행하는 가상 안드로이드 장치를 구비한 서버 시스템 | |
CN113657069B (zh) | 片上***soc仿真验证方法、装置、验证服务器及存储介质 | |
US20140156252A1 (en) | Hybrid platform-dependent simulation interface | |
CN112764981B (zh) | 一种协同测试***及方法 | |
US20160026602A1 (en) | Method and System for Communication of Device Information | |
CN110865960B (zh) | 在网络上模拟PCIe总线 | |
CN108733602A (zh) | 数据处理 | |
CN109271231B (zh) | 测试物理硬件装置的方法和仿真物理硬件装置的*** | |
US7447618B2 (en) | Method and system for ASIC simulation | |
Ribiere | Emulation of obsolete hardware in open source virtualization software | |
JP6965943B2 (ja) | 構成管理装置、構成管理システム、構成管理方法、および、構成管理プログラム | |
US10581636B1 (en) | Network tunneling for virtual machines across a wide-area network | |
US10599588B1 (en) | Interconnection of peripheral devices on different electronic devices | |
CN114397999B (zh) | 基于非易失内存接口-远程处理消息传递的通信方法、装置及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20200611 Address after: 200120 Shanghai, Nanhui, new towns around the Lake Road West, No. two, building C, Applicant after: Shanghai Yixin Industry Co.,Ltd. Address before: 201203 Room 303, block C, Changtai Plaza, Lane 2889, Jinke Road, Pudong New Area, Shanghai Applicant before: Shanghai Uranus Intelligent Technology Co.,Ltd. |
|
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |