CN116401900B - 一种软件仿真多***间通信的方法和装置 - Google Patents
一种软件仿真多***间通信的方法和装置 Download PDFInfo
- Publication number
- CN116401900B CN116401900B CN202310681321.1A CN202310681321A CN116401900B CN 116401900 B CN116401900 B CN 116401900B CN 202310681321 A CN202310681321 A CN 202310681321A CN 116401900 B CN116401900 B CN 116401900B
- Authority
- CN
- China
- Prior art keywords
- memory
- software
- upper computer
- lower computer
- address
- 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
- 238000000034 method Methods 0.000 title claims abstract description 31
- 238000004891 communication Methods 0.000 title claims abstract description 26
- 230000015654 memory Effects 0.000 claims abstract description 147
- 230000006399 behavior Effects 0.000 claims description 13
- 238000006243 chemical reaction Methods 0.000 claims description 9
- 238000013507 mapping Methods 0.000 claims description 6
- 230000002093 peripheral effect Effects 0.000 claims description 2
- 238000004088 simulation Methods 0.000 abstract description 14
- 230000010354 integration Effects 0.000 abstract description 7
- 238000010586 diagram Methods 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 101150071434 BAR1 gene Proteins 0.000 description 3
- 101100378536 Ovis aries ADRB1 gene Proteins 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000007812 deficiency Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/20—Design optimisation, verification or simulation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种软件仿真多***间通信的方法和装置,属于无线通信技术领域。宿主机上运行下位机软件,虚拟机上运行上位机***,虚拟机内部配置运行软件模拟PCIE设备,在上位机***中运行用于发现和驱动软件模拟PCIE设备的PCIE设备驱动程序;将预分配的宿主机的共享内存作为上位机运行内存;下位机软件通过共享内存完成对上位机运行内存的访问操作;上位机***对于共享下位机内存的访问及上位机***与下位机软件之间的中断通知均经过软件模拟PCIE设备参与完成。本发明解决了不同***间的中断通知、内存共享的问题,做到与真实***内部软件设计无缝结合,大幅降低了软件集成难度与工作量,提高了软硬件集成效率和仿真相似度。
Description
技术领域
本发明涉及一种多***间的通信仿真方法,属于无线通信技术领域。
背景技术
在通信领域常用的硬件平台中,通常使用IPC配合PCI/PCIe总线作为实现多***间硬件级通信的基本结构。
它们的功能主要包括:
一、使用IPC完成不同***间的中断相互通知(不同的中断号代表不同的含义,软件层面将其用作消息编号)。
二、通知者将通知内容写入本地运行内存SRAM或DDR,被通知者通过PCI/PCIe总线寻址对方的运行内存SRAM或DDR,读取对方写入的数据(软件层面将其作为消息内容)。
通过使用这套机制,可以实现不同***间事件的通知、数据同步等业务行为。目前软件领域有一种称为vhost-user的基于linux的开源库。vhost-user主要用于用户空间两个进程之间的通信,其采用共享内存作为数据面的承载,采用socket作为控制面的承载。Vhost-user在设计之初其目的在于支撑云端网络应用的运行,最典型的使用场景是配合使用dpdk开发的快速转发后端,为前端的云应用提供更加高效的网络报文转发性能。vhost-user开源库并不适合用于仿真这种基于硬件的***间通信机制,主要体现在如下几个方面的局限性:
1.基于vhost-user开发的前端接口在控制面是linux***中一种类型为virtio的网络接口,在数据面是基于vring API数据交互方式。此种接口类型通常用于开发专用应用程序,并不适用于常见的网络应用程序,如ping、iperf等。而电信产品的仿真***中需要广泛支持此类应用程序。
2.数据平面采用vring API方式封装了底层的共享内存机制,此种机制虽不复杂,但无法做到与原***的数据面底层无缝衔接。需要较大的工作量完成移植工作,并且破坏了原***结构,大幅降低了仿真相似度。
通信领域的产品研发,通常硬件研发进度要晚于软件开发的进度,因此需要一种软件仿真手段,在硬件就位前最大限度仿真出硬件行为,用于验证软件逻辑的正确性,提高软硬件集成效率。
发明内容
本发明所要解决的技术问题是克服现有技术的缺陷,提供一种软件仿真多***间通信的方法和装置。
为解决上述技术问题,本发明采用的技术方案如下:
一种软件仿真多***间通信的方法,
宿主机上运行下位机软件,虚拟机上运行上位机***,虚拟机内部配置运行软件模拟PCIE设备,在上位机***中运行有PCIE设备驱动程序,用于发现和驱动软件模拟PCIE设备;
将预分配的宿主机的共享内存作为上位机运行内存;
软件模拟PCIE设备支持PCIE设备的中断以及PCIE地址寻址,至少包括一基地址寄存器,基地址寄存器映射IPC中断寄存器空间及共享下位机内存;
下位机软件通过所述共享内存完成对上位机运行内存任意位置的访问操作;
上位机***对于共享下位机内存的访问及上位机***与下位机软件之间的中断通知均经过软件模拟PCIE设备参与完成。
进一步地,基地址寄存器的实际内存空间是由软件模拟PCIE设备自身在宿主机上以共享内存方式申请得到。
进一步地,PCIE设备驱动程序通过内存重映射的方式将共享内存的首地址映射为上位机的虚拟地址供上位机***访问。
进一步地,由上位机***发起的访问共享下位机内存的步骤为:
11)上位机***携带PCIE设备内存虚拟地址及操作数value发起读写访问共享下位机内存;
12)软件模拟PCIE设备中的PCIE地址转换单元将上位机***携带的内存虚拟地址转换为以共享下位机内存为对象的地址偏移量及操作数的方式进行读写;根据上位机***对PCIE设备读写访问目标的数据类型,PCIE地址转换单元对共享下位机内存执行对应的字节长度的读写访问操作;
13)下位机软件采用共享内存标准读写访问方式对共享下位机内存进行读写访问。
进一步地,由下位机发起的访问共享下位机内存的步骤为:下位机软件采用共享内存标准读写访问方式对共享下位机内存进行读写访问。
进一步地,由下位机软件发起的访问上位机运行内存的步骤为:
31)上位机***直接在上位机运行内存的物理地址处写入数据;
32)上位机***将物理地址的值,写入到上位机内部PCIE设备内存虚拟地址的特定地址;
33)软件模拟PCIE设备将该特定地址进行转换,转换为共享下位机内存的特定地址偏移量,并将物理地址的值,写入到共享下位机内存的特定地址偏移量中;
34)下位机软件直接通过访问共享下位机内存的特定地址偏移量,获取到物理地址的值;
35)下位机软件通过采用共享内存标准访问方式获取上位机运行内存的虚拟机基地址,将读取到的物理地址转换为虚拟地址后,使用虚拟地址读取上位机***写入的数据。
进一步地,由上位机***发起的上位机运行内存访问的步骤为:上位机***直接在上位机运行内存的物理地址处写入数据。
进一步地,由上位机***发起的中断通知下位机软件的步骤为:软件模拟PCIE设备监听上位机***对IPC中断寄存器的写入行为,如检测到写入,则将相应的写入位转换成一个预定义消息,通过socket渠道发送给下位机软件。
进一步地,由下位机软件发起的中断通知上位机***的步骤为:软件模拟PCIE设备在socket渠道接收到一个由下位机软件发来的预定义消息,将其解析为对应的中断信号,并发起一次PCIE中断通知上位机***。
一种软件仿真多***间通信的装置,包括:
运行在虚拟机上的上位机***,将预分配的宿主机的共享内存作为上位机运行内存;在上位机***中运行有PCIE设备驱动程序;
配置运行在虚拟机内部的软件模拟PCIE设备,由PCIE设备驱动程序发现和驱动;软件模拟PCIE设备支持PCIE设备的中断以及PCIE地址寻址,至少包括一基地址寄存器,基地址寄存器映射IPC中断寄存器空间及共享下位机内存;
运行在宿主机上的下位机软件,下位机软件通过所述共享内存完成对上位机运行内存任意位置的访问操作;
上位机***对于共享下位机内存的访问及上位机***与下位机软件之间的中断通知均经过软件模拟PCIE设备参与完成。
本发明所达到的有益效果:
本发明充分考虑了仿真环境搭建的工程可实现性、仿真程度、仿真***的性能损耗、开发工作量等多方面因素,提出了一种以套接字配合共享内存及基于虚拟机的定制化软件模拟PCIE设备的方式来搭建仿真环境,使用套接字来传递控制消息,使用一块共享内存模拟SRAM及IPC寄存器的行为(SRAM在被仿真***中用作下位机的运行内存),使用另一块共享内存用于模拟DDR的行为(被仿真***中用作上位机的运行内存),使用基于虚拟机的软件模拟PCIE设备用于仿真原***中PCIE总线控制器的行为(被仿真***中用于实现上位机***与下位机软件之间的相互寻址),完美解决了不同***间的中断通知、内存共享的问题,同时在接口层面能够做到与真实***内部软件设计无缝结合,大幅降低了软件集成难度与工作量,提高了软硬件集成效率和仿真相似度。本发明的方法尤其非常适合于无线通信等领域的上下位机硬件互联模型的软件仿真,用于在硬件缺乏的情况下,实现仿真多***间的中断通知与数据通信。
附图说明
图1是本方法的软件整体框架示意图;
图2是上位机***访问下位机软件内存示意图;
图3是下位机软件访问上位机运行内存示意图;
图4是上位机***发起的中断通知下位机软件示意图;
图5是下位机软件发起的中断通知上位机***示意图。
具体实施方式
下面结合附图对本发明作进一步描述。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。
实施例1
本实施例公开了本发明的一种软件仿真多***间通信的装置其中一种实施例,该装置及其内部的***、模块、软件等有时可以为实体结构,采用硬件实现,有时也可以为虚拟结构,采用软件实现,有时可以为实体结构与虚拟结构相结合,采用硬件与软件结合实现。该装置包括:
运行在虚拟机上的上位机***,将预分配的宿主机的共享内存作为上位机运行内存;在上位机***中运行有PCIE设备驱动程序;
配置运行在虚拟机内部的软件模拟PCIE设备,由PCIE设备驱动程序发现和驱动;软件模拟PCIE设备支持PCIE设备的中断以及PCIE地址寻址,至少包括一基地址寄存器,基地址寄存器映射IPC中断寄存器空间及共享下位机内存;
运行在宿主机上的下位机软件,下位机软件通过所述共享内存完成对上位机运行内存任意位置的访问操作;
上位机***对于共享下位机内存的访问及上位机***与下位机软件之间的中断通知均经过软件模拟PCIE设备参与完成。
本装置的框架主要由三个部分组成,上位机***(含以共享内存方式配置的运行内存)、软件模拟PCIE设备和下位机软件(含以共享内存方式配置的运行内存)。软件整个框架如图1所示。
该***软件结构说明如下:
1、上位机***。上位机***是运行在虚拟机上的复杂嵌入式***(一般为linux或其他各类变种,如Openwrt、Android等),是该仿真环境的主要组成部分。通过虚拟机启动参数,将预先分配好的宿主机的共享内存作为上位机***的运行内存(简称“上位机运行内存”)。这样在宿主机中运行的其他程序(如作为一个普通应用程序而仿真执行的下位机***)就可以通过共享内存直接读写的方式访问到上位机运行内存中的任意运行期数据。与之相反,由上位机主动发起的访问下位机的运行内存(简称“共享下位机内存”)或其他设备内存(如IPC设备寄存器)动作需要由PCIE设备驱动程序配合软件模拟PCIE设备共同完成。其中,PCIE设备驱动程序运行在上位机***中,它用于发现和驱动软件模拟PCIE设备,并配合上位机***完成对下位机运行内存或其他设备内存的访问操作。从上位机视角看,该软件模拟PCIE设备是一个真实且完整的***设备。它同时支持PCIE设备的中断以及PCIE地址寻址。
2、软件模拟PCIE设备。软件模拟PCIE设备是作为虚拟机内部组件配置和运行的,它主要负责完成上位机针对共享下位机内存的访问及上位机与下位机之间的中断通知。
A)内存访问。虚拟机在启动时完成软件模拟PCIE设备的创建及资源的分配,并在上位机***启动后供上位机***进行发现和驱动。该PCIE设备主要有两个基地址寄存器,它们分为BAR0、BAR1。其中BAR0在本方法中无实际功能。BAR1的主要功能是映射IPC中断寄存器空间及共享下位机内存,实现上位机与下位机间的IPC通信。BAR1这个基地址寄存器所代表的实际内存空间是由软件模拟PCIE设备自身在宿主机上以共享内存方式申请得到的。上位机PCIE设备驱动程序通过内存重映射的方式将这块共享内存的首地址映射为上位机的虚拟地址供上位机访问。通过映射后的虚地址,上位机的业务程序组件既可以完成对下位机IPC寄存器及共享下位机内存的访问操作(在仿真环境下其他运行内存与上位机运行无关,因此无访问的必要)。
B)中断通知。上位机***与下位机***之间的中断通知也是通过软件模拟PCIE设备来辅助完成的。其中,下行的中断通知(由上位机发起,由下位机接收)的具体过程是软件模拟PCIE设备监听上位机对IPC中断寄存器的写入行为,如检测到一次写入,则将相应的写入bit进行分析后将其转换成一个预定义的消息经过socket渠道发送给下位机。上行的中断通知(由下位机发起,由上位机接收)的具体过程是软件模拟PCIE设备在socket渠道接收到一个由下位机软件发来的预定义消息,然后相应的处理逻辑会将其解释为一个特定的中断号,并发起一次PCIE中断通知给上位机***。
3、下位机软件。下位机软件为运行在宿主机上的仿真程序。下位机软件的运行内存空间大致分为三部分:一,程序代码及内部使用的数据结构。此部分内存即为仿真程序启动时宿主机为其分配的动态内存空间。二,需要由上位机***写入的部分内存空间。这部分内存空间即为软件模拟PCIE设备中创建的共享下位机内存。由于其在创建时为共享内存形态,因此可供作为下位机的仿真程序直接访问。三,需要由下位机频繁写入的上位机内存空间。由于上位机在启动时既将预先分配的共享内存作为其运行内存使用,因此下位机可以通过该共享内存完成对上位机运行内存任意位置的访问操作。
本发明以套接字配合共享内存及基于虚拟机的定制化软件模拟PCIE设备的方式来搭建仿真环境,使用套接字来传递控制消息,使用一块共享内存模拟SRAM及IPC寄存器的行为(SRAM在被仿真***中用作下位机的运行内存),使用另一块共享内存用于模拟DDR的行为(被仿真***中用作上位机的运行内存),使用基于虚拟机的软件模拟PCIE设备用于仿真原***中PCIE总线控制器的行为(被仿真***中用于实现上位机***与下位机软件之间的相互寻址),完美解决了不同***间的中断通知、内存共享的问题,在硬件缺乏的情况下,实现仿真多***间的中断通知与数据通信。同时在接口层面能够做到与真实***内部软件设计无缝结合,大幅降低了软件集成难度与工作量,提高了软硬件集成效率和仿真相似度。
实施例2
本实施例公开了本发明的一种软件仿真多***间通信的方法其中一种实施例,如图1所示。
宿主机上运行下位机软件,虚拟机上运行上位机***,虚拟机内部配置运行软件模拟PCIE设备,在上位机***中运行有PCIE设备驱动程序,用于发现和驱动软件模拟PCIE设备;
将预分配的宿主机的共享内存作为上位机运行内存;
软件模拟PCIE设备支持PCIE设备的中断以及PCIE地址寻址,至少包括一基地址寄存器,基地址寄存器映射IPC中断寄存器空间及共享下位机内存;
下位机软件通过所述共享内存完成对上位机运行内存任意位置的访问操作;
上位机***对于共享下位机内存的访问及上位机***与下位机软件之间的中断通知均经过软件模拟PCIE设备参与完成。
基地址寄存器的实际内存空间是由软件模拟PCIE设备自身在宿主机上以共享内存方式申请得到。
PCIE设备驱动程序通过内存重映射的方式将共享内存的首地址映射为上位机的虚拟地址供上位机***访问。
本方法主要的使用场景有如下6个:
1、由上位机***发起的访问共享下位机内存操作。如图2所示,共分为三个主要步骤:
11)由上位机***发起读写访问共享下位机内存操作,操作中携带PCIE设备内存虚拟地址及操作数(value,写操作包含此操作数,读操作无操作数)。
12)软件模拟PCIE设备发起共享下位机内存的访问。对共享下位机内存访问时,由软件模拟PCIE设备中的PCIE地址转换单元将上位机***发起的读写操作的内存虚拟地址转换为以共享下位机内存为对象的地址偏移量(本实施例中偏移量设为m)及操作数(本实施例中操作数设为n,读操作无操作数)的方式进行读写。根据上位机***对PCIE设备读写访问目标的数据类型,PCIE地址转换单元会对共享下位机内存分别执行单次1字节(字符)、2字节(短整型)、4字节(整型)和8字节(长整型)长度的读写访问操作。
13)下位机软件直接使用共享内存标准读写访问方式对共享下位机内存执行读写访问操作。
2、由下位机软件发起的自身共享内存访问操作。具体步骤为:下位机直接使用共享内存标准读写访问方式对共享下位机内存执行读写访问操作。
3、由下位机发起的访问上位机运行内存的操作。具体步骤为:
31)由上位机***发起的自身运行内存访问操作,虚拟机将预先分配好的宿主机的共享内存,以物理基地址0x40000000作为上位机***的运行内存,上位机***直接进行读写访问。如图3所示,上位机***在上位机运行内存的物理地址n处写入数据(本实施例中写入数据设为y)。
32)上位机***将物理地址n的值,写入到上位机***内部PCIE设备内存虚拟地址的特定地址。
33)软件模拟PCIE设备将该特定地址进行转换,转换为共享下位机内存的特定地址偏移量(本实施例中偏移量设为m),并将物理地址n的值,写入到共享下位机内存的特定地址偏移量中。
34)下位机软件直接通过访问共享下位机内存的特定地址偏移量,获取到物理地址n的值。
35)下位机软件通过使用共享内存标准访问方式获取上位机运行内存的虚拟基地址(如本实施例中为0xFF000000),通过如下公式将读取到的物理地址n转换为虚拟地址后(本实施例中转换后的虚拟地址设为N),使用虚拟地址N读取上位机***写入的数据(如本实施例中读取的上位机写入的数据为y):
虚拟地址=虚拟基地址+(物理地址-物理基地址),
即,N=0xFF000000+(n-0x40000000)。
4、由上位机***发起的自身运行内存访问操作,如上述步骤31)所述。由上位机***发起的自身运行内存访问操作,虚拟机将预先分配好的宿主机的共享内存,以物理基地址0x40000000作为上位机***的运行内存,上位机***直接进行读写访问。
由上位机***发起的中断通知下位机软件操作,如图4所示。软件模拟PCIE设备监听上位机***对IPC中断寄存器的写入行为,如检测到写入,则将相应的写入值转换成一个预定义消息,通过socket渠道发送给下位机软件。
具体步骤为:
51)上位机***将要发送的中断状态转为中断触发寄存器的值x,并使用经映射的上位机到下位机中断触发寄存器虚拟地址将该值写入到上位机到下位机中断触发寄存器。
52)软件模拟PCIE设备捕捉上位机***将值写入到上位机到下位机中断触发寄存器的行为,并将上位机到下位机中断触发寄存器虚拟地址转换为访问IPC寄存器中上位机到下位机中断触发寄存器的特定地址偏移量(本实施例中偏移量设为m),根据偏移量m获取共享内存中上位机到下位机中断触发寄存器地址。并将中断触发寄存器的值x写入到共享内存中上位机到下位机中断触发寄存器。
53)软件模拟PCIE设备监测到共享内存中上位机到下位机中断触发寄存器中存储的值x发生变化,将其中写入的值x转换为预定义消息,通过Socket渠道发送给下位机软件。下位机软件解析Socket接收的预定义消息后,将消息转化为中断状态,实现了上位机发起的中断通知下位机的过程,并完成相应业务。
6、由下位机发起的中断通知上位机***操作,如图5所示。软件模拟PCIE设备在socket渠道接收到一个由下位机软件发来的预定义消息,将其解析为对应的中断信号,并发起一次PCIE中断通知上位机***。
具体步骤为:
61)下位机软件将要发送的中断状态转换为中断寄存器的值y,直接通过共享内存的访问方式写入到下位机到上位机中断触发寄存器。
62)下位机软件将预定义消息通过Socket渠道发送给软件模拟PCIE设备,该消息中不包含中断状态。
63)软件模拟PCIE设备将Socket渠道接收到的预定义消息解析,并向上位机***发送对应的中断信号。
64)上位机***接收到来自软件模拟PICE设备发送的中断信号,直接读取到上位机***内部PCIE设备内存虚拟地址中的下位机到上位机中断触发寄存器。
65)软件模拟PCIE设备将中断寄存器虚拟地址转化为访问IPC寄存器中下位机到上位机中断触发寄存器的特定地址偏移量(本实施例中偏移量设为n)。将下位机到上位机中断触发寄存器的值y发送给上位机***。上位机***将读取到的值y转化为中断状态并完成相应的业务。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。
Claims (8)
1.一种软件仿真多***间通信的方法,其特征是,
宿主机上运行下位机软件,虚拟机上运行上位机***,虚拟机内部配置运行软件模拟PCIE设备,在上位机***中运行有PCIE设备驱动程序,用于发现和驱动软件模拟PCIE设备;
将预分配的宿主机的共享内存作为上位机运行内存;
软件模拟PCIE设备支持PCIE设备的中断以及PCIE地址寻址,至少包括一基地址寄存器,基地址寄存器映射IPC中断寄存器空间及共享下位机内存;
下位机软件通过所述共享内存完成对上位机运行内存任意位置的访问操作;
上位机***对于共享下位机内存的访问及上位机***与下位机软件之间的中断通知均经过软件模拟PCIE设备参与完成;
由上位机***发起的访问共享下位机内存的步骤为:
11)上位机***携带PCIE设备内存虚拟地址及操作数value发起读写访问共享下位机内存;
12)软件模拟PCIE设备中的PCIE地址转换单元将上位机***携带的内存虚拟地址转换为以共享下位机内存为对象的地址偏移量及操作数的方式进行读写;根据上位机***对PCIE设备读写访问目标的数据类型,PCIE地址转换单元对共享下位机内存执行对应的字节长度的读写访问操作;
13)下位机软件采用共享内存标准读写访问方式对共享下位机内存进行读写访问;
由下位机软件发起的访问上位机运行内存的步骤为:
31)上位机***直接在上位机运行内存的物理地址处写入数据;
32)上位机***将物理地址的值,写入到上位机内部PCIE设备内存虚拟地址的特定地址;
33)软件模拟PCIE设备将该特定地址进行转换,转换为共享下位机内存的特定地址偏移量,并将物理地址的值,写入到共享下位机内存的特定地址偏移量中;
34)下位机软件直接通过访问共享下位机内存的特定地址偏移量,获取到物理地址的值;
35)下位机软件通过采用共享内存标准访问方式获取上位机运行内存的虚拟基地址,将读取到的物理地址转换为虚拟地址后,使用虚拟地址读取上位机***写入的数据。
2.根据权利要求1所述的一种软件仿真多***间通信的方法,其特征是,基地址寄存器的实际内存空间是由软件模拟PCIE设备自身在宿主机上以共享内存方式申请得到。
3.根据权利要求1所述的一种软件仿真多***间通信的方法,其特征是,PCIE设备驱动程序通过内存重映射的方式将共享内存的首地址映射为上位机的虚拟地址供上位机***访问。
4.根据权利要求1所述的一种软件仿真多***间通信的方法,其特征是,
由下位机发起的访问共享下位机内存的步骤为:下位机软件采用共享内存标准读写访问方式对共享下位机内存进行读写访问。
5.根据权利要求1所述的一种软件仿真多***间通信的方法,其特征是,
由上位机***发起的上位机运行内存访问的步骤为:上位机***直接在上位机运行内存的物理地址处写入数据。
6.根据权利要求1所述的一种软件仿真多***间通信的方法,其特征是,
由上位机***发起的中断通知下位机软件的步骤为:软件模拟PCIE设备监听上位机***对IPC中断寄存器的写入行为,如检测到写入,则将相应的写入值转换成一个预定义消息,通过socket渠道发送给下位机软件。
7.根据权利要求1所述的一种软件仿真多***间通信的方法,其特征是,
由下位机软件发起的中断通知上位机***的步骤为:软件模拟PCIE设备在socket渠道接收到一个由下位机软件发来的预定义消息,将其解析为对应的中断信号,并发起一次PCIE中断通知上位机***。
8.一种软件仿真多***间通信的装置,其特征是,包括:
运行在虚拟机上的上位机***,将预分配的宿主机的共享内存作为上位机运行内存;在上位机***中运行有PCIE设备驱动程序;
配置运行在虚拟机内部的软件模拟PCIE设备,由PCIE设备驱动程序发现和驱动;软件模拟PCIE设备支持PCIE设备的中断以及PCIE地址寻址,至少包括一基地址寄存器,基地址寄存器映射IPC中断寄存器空间及共享下位机内存;
运行在宿主机上的下位机软件,下位机软件通过所述共享内存完成对上位机运行内存任意位置的访问操作;
上位机***对于共享下位机内存的访问及上位机***与下位机软件之间的中断通知均经过软件模拟PCIE设备参与完成;
上位机***对于共享下位机内存的访问步骤为:
上位机***携带PCIE设备内存虚拟地址及操作数value发起读写访问共享下位机内存;
软件模拟PCIE设备中的PCIE地址转换单元将上位机***携带的内存虚拟地址转换为以共享下位机内存为对象的地址偏移量及操作数的方式进行读写;根据上位机***对PCIE设备读写访问目标的数据类型,PCIE地址转换单元对共享下位机内存执行对应的字节长度的读写访问操作;
下位机软件采用共享内存标准读写访问方式对共享下位机内存进行读写访问;
由下位机软件发起的访问上位机运行内存的步骤为:
上位机***直接在上位机运行内存的物理地址处写入数据;
上位机***将物理地址的值,写入到上位机内部PCIE设备内存虚拟地址的特定地址;
软件模拟PCIE设备将该特定地址进行转换,转换为共享下位机内存的特定地址偏移量,并将物理地址的值,写入到共享下位机内存的特定地址偏移量中;
下位机软件直接通过访问共享下位机内存的特定地址偏移量,获取到物理地址的值;
下位机软件通过采用共享内存标准访问方式获取上位机运行内存的虚拟基地址,将读取到的物理地址转换为虚拟地址后,使用虚拟地址读取上位机***写入的数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310681321.1A CN116401900B (zh) | 2023-06-09 | 2023-06-09 | 一种软件仿真多***间通信的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310681321.1A CN116401900B (zh) | 2023-06-09 | 2023-06-09 | 一种软件仿真多***间通信的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116401900A CN116401900A (zh) | 2023-07-07 |
CN116401900B true CN116401900B (zh) | 2023-08-29 |
Family
ID=87016539
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310681321.1A Active CN116401900B (zh) | 2023-06-09 | 2023-06-09 | 一种软件仿真多***间通信的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116401900B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117411842B (zh) * | 2023-12-13 | 2024-02-27 | 苏州元脑智能科技有限公司 | 事件抑制方法、装置、设备、异构平台及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106874128A (zh) * | 2017-01-22 | 2017-06-20 | 广州华多网络科技有限公司 | 数据传输方法及装置 |
CN107346260A (zh) * | 2017-06-29 | 2017-11-14 | 郑州云海信息技术有限公司 | 一种数据传输方法、装置及*** |
CN113778611A (zh) * | 2021-07-06 | 2021-12-10 | 锐捷网络(苏州)有限公司 | 数据传输方法、装置、***及存储介质 |
-
2023
- 2023-06-09 CN CN202310681321.1A patent/CN116401900B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106874128A (zh) * | 2017-01-22 | 2017-06-20 | 广州华多网络科技有限公司 | 数据传输方法及装置 |
CN107346260A (zh) * | 2017-06-29 | 2017-11-14 | 郑州云海信息技术有限公司 | 一种数据传输方法、装置及*** |
CN113778611A (zh) * | 2021-07-06 | 2021-12-10 | 锐捷网络(苏州)有限公司 | 数据传输方法、装置、***及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN116401900A (zh) | 2023-07-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106874128B (zh) | 数据传输方法及装置 | |
JP5376496B2 (ja) | 仮想マシンデバイスの動的割り当て | |
US20070005867A1 (en) | Virtual peripheral device interface and protocol for use in peripheral device redirection communication | |
CN116401900B (zh) | 一种软件仿真多***间通信的方法和装置 | |
CN101739289B (zh) | 一种在Linux虚拟机中设置显示模式的方法及装置 | |
CN103282881A (zh) | 通过虚拟化直接共享智能设备 | |
CN104299466A (zh) | 一种基于云计算平台的远程硬件实验方法及*** | |
CN105786589A (zh) | 一种云渲染***、服务器及方法 | |
CN104636186A (zh) | 虚拟机内存管理方法、物理主机、pcie设备及其配置方法以及迁移管理设备 | |
WO2022032990A1 (zh) | 一种命令信息传输方法、***、装置及可读存储介质 | |
CN103885908A (zh) | 一种基于外部设备可访问寄存器的数据传输***及其方法 | |
CN117389694B (zh) | 基于virtio-blk技术提升虚拟存储IO性能的方法 | |
CN104503825A (zh) | 一种基于kvm混合式设备虚拟化方法 | |
CN112465689A (zh) | 基于可见显存交换区的gpu不可见显存管理方法及*** | |
CN113242175B (zh) | 一种基于spdk的存储网关及其实现方法 | |
CN107608806A (zh) | 一种虚拟机间快速访问传输数据的***及方法 | |
CN111443994A (zh) | 一种模拟智能卡驱动程序、信息交互***及其工作方法 | |
CN116611375A (zh) | 软硬件协同仿真平台及软硬件测试方法 | |
CN113626131A (zh) | 实现热迁移的方法、芯片、板卡和存储介质 | |
CN116360925A (zh) | 一种半虚拟化实现方法、装置、设备及介质 | |
CN114238183B (zh) | 实现Virtio设备的***、方法和介质 | |
CN104717175A (zh) | 虚拟桌面的处理方法和*** | |
CN103678244A (zh) | 一种不使用应用处理器的智能设备 | |
CN109933434B (zh) | 电子装置及扩展***设备的方法 | |
JP6965943B2 (ja) | 構成管理装置、構成管理システム、構成管理方法、および、構成管理プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |