CN115587054A - 数据传输系统和数据传输方法 - Google Patents
数据传输系统和数据传输方法 Download PDFInfo
- Publication number
- CN115587054A CN115587054A CN202110763279.9A CN202110763279A CN115587054A CN 115587054 A CN115587054 A CN 115587054A CN 202110763279 A CN202110763279 A CN 202110763279A CN 115587054 A CN115587054 A CN 115587054A
- Authority
- CN
- China
- Prior art keywords
- address
- space
- data
- target
- bus
- 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.)
- Pending
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/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
-
- A—HUMAN NECESSITIES
- A61—MEDICAL OR VETERINARY SCIENCE; HYGIENE
- A61B—DIAGNOSIS; SURGERY; IDENTIFICATION
- A61B8/00—Diagnosis using ultrasonic, sonic or infrasonic waves
- A61B8/56—Details of data transmission or power supply
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
Landscapes
- Engineering & Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Pathology (AREA)
- Medical Informatics (AREA)
- General Physics & Mathematics (AREA)
- Biophysics (AREA)
- Nuclear Medicine, Radiotherapy & Molecular Imaging (AREA)
- General Engineering & Computer Science (AREA)
- Radiology & Medical Imaging (AREA)
- Biomedical Technology (AREA)
- Heart & Thoracic Surgery (AREA)
- Computer Networks & Wireless Communication (AREA)
- Molecular Biology (AREA)
- Surgery (AREA)
- Animal Behavior & Ethology (AREA)
- General Health & Medical Sciences (AREA)
- Public Health (AREA)
- Veterinary Medicine (AREA)
- Bus Control (AREA)
Abstract
本申请涉及一种数据传输系统和数据传输方法,该数据传输系统包括:第一设备和第二设备,第一设备与第二设备通过总线连接;第一设备在待访问总线地址空间的地址中存储或者读取目标数据;其中,该待访问总线地址空间的地址在物理存储空间中映射为目标物理存储地址;物理存储空间为第二设备的存储器上的存储空间;第二设备根据虚拟空间的地址与目标物理存储地址的映射关系,通过应用程序访问虚拟空间的地址,在目标物理存储地址中读取或者存储目标数据。该数据传输系统可以提高了数据传输过程的安全性和提高第一设备和第二设备之间的数据传输效率。
Description
技术领域
本申请涉及数据传输技术领域,特别是涉及一种数据传输系统和数据传输方法。
背景技术
随着医疗技术的不断提高,越来越多的医疗设备在各大医院得到了普及。
以超声设备为例,超声设备分为超声数据采集设备和超声图像成像设备,在应用时,需要超声数据采集设备和超声图像成像设备之间通过数据交互实现其功能。通过超声数据采集设备进行数据采集时,其采集的是诊疗对象的诊断数据,该诊断数据属于诊疗对象的个人隐私数据,保证其安全性至关重要。且超声数据采集设备采集到诊断数据后,需将采集的诊断数据发送到超声图像成像设备端成像,以方便医生根据所成的图像进行结果诊断,但若是超声数据采集设备与超声图像成像设备之间进行数据传输时所用时间较长,将会使得诊疗效率下降。
因此,亟需提高超声数据采集设备和超声图像成像设备之间数据传输的安全性和效率。
发明内容
基于此,有必要针对上述技术问题,提供一种数据传输系统和数据传输方法,能够提高超声数据采集设备和超声图像成像设备之间数据传输的安全性和效率。
第一方面,本申请提供一种数据传输系统,该数据传输系统包括:第一设备和第二设备,第一设备与第二设备通过总线连接;
第一设备,用于在待访问总线地址空间的地址中存储或者读取目标数据;待访问总线地址空间的地址在物理存储空间中映射为目标物理存储地址;物理存储空间为第二设备的存储器上的存储空间;
第二设备,用于根据虚拟空间的地址与目标物理存储地址的映射关系,通过应用程序访问虚拟空间的地址,在目标物理存储地址中读取或者存储目标数据。
在其中一个实施例中,若第一设备在待访问总线地址空间的地址中存储目标数据,则第二设备通过应用程序访问虚拟空间的地址,在目标物理存储地址中读取目标数据;
若第一设备在待访问总线地址空间的地址中读取目标数据,则第二设备通过应用程序访问虚拟空间的地址,在目标物理存储地址中存储目标数据。
在其中一个实施例中,第二设备包括IOMMU和MMU;
第二设备,用于通过IOMMU,将待访问总线地址空间的地址在物理存储空间中映射到目标物理存储地址;通过MMU,将虚拟空间的地址映射到目标物理存储地址。
在其中一个实施例中,第一设备与第二设备之间通过DMA进行数据传输;
第一设备,用于在发起目标数据的DMA传输请求后,将目标数据写入待访问总线地址空间,并通过DMA将目标数据写入目标物理存储地址中,写入完成后向第二设备发送中断信号;
第二设备,用于根据中断信号,通过应用程序访问虚拟空间的地址读取或者存储目标数据。
在其中一个实施例中,第二设备包括用户空间和内核空间;用户空间包括VFIO驱动框架;
第二设备,通过内核空间与第一设备进行数据直接交互,通过VFIO驱动框架在用户空间实现第一设备的驱动程序。
在其中一个实施例中,总线为PCIe总线,待访问总线地址空间为PCIe总线地址空间中的Bar空间。
在其中一个实施例中,虚拟空间和总线地址空间均为环形空间。
在其中一个实施例中,虚拟空间的地址和总线地址空间的地址分别都是连续的。
在其中一个实施例中,虚拟空间的地址映射在物理存储空间中的目标物理存储地址不连续。
第二方面,一种数据传输方法,其特征在于,该方法包括:
通过第一设备在待访问总线地址空间的地址中存储或者读取目标数据;
将待访问总线地址空间的地址在物理存储空间中映射为目标物理存储地址;物理存储空间为第二设备的存储器上的存储空间;第二设备与第一设备通过总线连接;
根据虚拟空间的地址与目标物理存储地址的映射关系,通过第二设备的应用程序访问虚拟空间的地址,以在目标物理存储地址中读取或者存储目标数据。
本申请实施例提供的一种数据传输系统和数据传输方法,该数据传输系统包括:第一设备和第二设备,第一设备与第二设备通过总线连接;第一设备在待访问总线地址空间的地址中存储或者读取目标数据;其中,该待访问总线地址空间的地址在物理存储空间中映射为目标物理存储地址;物理存储空间为第二设备的存储器上的存储空间;第二设备根据虚拟空间的地址与目标物理存储地址的映射关系,通过应用程序访问虚拟空间的地址,在目标物理存储地址中读取或者存储目标数据。该数据传输系统中,由于待访问总线地址空间和虚拟空间地址均与目标物理存储地址存在映射关系,使得待访问总线地址空间和虚拟空间地址可以指向同一段目标物理存储空间,这样当第一设备和第二设备进行数据传输时,第二设备通过App访问虚拟空间实现在目标物理存储空间中进行数据存储或读取,第一设备通过总线地址空间实现在目标物理存储空间中进行数据存储或读取,而虚拟空间和总线地址空间均为安全的地址,如此,两个设备均是通过安全地址访问到同一物理存储地址进行数据存储或读取,从而提高了数据传输过程的安全性。且虚拟空间和总线地址空间都是设备直接可以访问到的空间,即无需进行数据的拷贝就可以实现访问目标物理存储空间,实现了目标数据无拷贝传输,大大提高了第一设备和第二设备之间的数据传输效率。
附图说明
图1为一个实施例中提供的数据传输系统结构示意图;
图2为一个实施例中提供的映射到目标物理存储地址的示意图;
图3为另一个实施例中提供的映射到目标物理存储地址的示意图;
图4为一个实施例中提供的第一设备和第二设备框架层面示意图;
图5为一个实施例中虚拟空间和待访问总线地址空间数据传输示意图;
图6为一个实施例中提供的数据传输方法流程示意图;
图7为一个实施例中提供的数据传输装置内部结构示意图;
图8为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
可以理解,本申请中为部件所编序号本身,例如“第一”、“第二”等,仅用于区分所描述的对象,不具有任何顺序或技术含义。而本申请所说“连接”、“联接”,如无特别说明,均包括直接和间接连接(联接)。在本申请的描述中,需要理解的是,方位词例如“上”、“下”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本申请和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本申请的限制。在本申请中,除非另有明确的规定和限定,第一特征在第二特征“上”或“下”可以是第一和第二特征直接接触,或第一和第二特征通过中间媒介间接接触。本申请中,并不以名称的差异来作为区分元件的方式,而是以元件在功能上的差异来作为区分原则。
接下来,将结合附图,对本申请实施例提供的数据传输系统进行详细说明。
如图1所示,本申请提供一种数据传输系统,该数据传输系统包括:第一设备100和第二设备200,第一设备100与第二设备200通过总线连接;第一设备100,用于在待访问总线地址空间的地址中存储或者读取目标数据;待访问总线地址空间的地址在物理存储空间中映射为目标物理存储地址;物理存储空间为第二设备200的存储器上的存储空间;第二设备200,用于根据虚拟空间的地址与目标物理存储地址的映射关系,通过应用程序访问虚拟空间的地址,在目标物理存储地址中读取或者存储目标数据。
实际应用时,第一设备100和第二设备200之间需要进行数据传输,且两者之间通过总线连接,以通过总线进行数据传输。
可选地,第一设备100为超声数据采集设备;第二设备200为超声数据成像设备。即以超声数据采集设备和超声数据成像设备之间传输的数据为超声数据为例,超声数据采集设备(第一设备100)采集的超声数据主要是以采集设备中的超声传感器检测超声波信号作为超声数据。超声数据成像设备(第二设备200)则是生成该超声数据对应的超声图像,并显示该超声图像。例如,以B超机为例,B超机的探头指的就是超声数据的采集设备,也就是第一设备100,而B超机的电脑(PC端)为超声数据的成像设备,与就是第二设备200;当通过B超机的探头在身体的某个部位采集超声数据时,在B超机的电脑显示界面上可以看到生成的B超图像。
可选地,该总线为高速串行计算机扩展总线标准(Peripheral ComponentInterconnect express,PCIe)。第一设备100与第二设备200通过PCIe总线连接。
仍以第一设备100为超声数据采集设备,第二设备200为超声数据成像设备为例,因实际应用在传输超声数据时,对超声数据采集设备的硬件设备和声数据成像设备之间的传输带宽要求较高,而PCIe因包括更高的最大系统总线吞吐量、更低的I/O引脚数量和更小的物理尺寸、更好的总线设备性能缩放、可减少延迟、且PCIe设备和PCIe总线直接相连,使缓存和数据更接近CPU可以除了传统存储协议的开销等优势,所以超声数据采集设备和超声数据成像设备在传输超声数据时可以PCIe进行数据的传输,以满足两者之间的带宽要求。
具体地,第一设备100和第二设备200之间进行数据传输时,第一设备100用于在待访问总线地址空间的地址中存储或者读取目标数据;待访问总线地址空间的地址在物理存储空间中映射为目标物理存储地址;物理存储空间为第二设备200的存储器上的存储空间。而第二设备200用于根据虚拟空间的地址与目标物理存储地址的映射关系,通过应用程序访问虚拟空间的地址,在目标物理存储地址中读取或者存储目标数据。
其中,目标数据为第一设备100和第二设备200之间当前正在进行传输的数据,例如,该目标数据是超声数据采集设备向超声成像设备传输其采集的超声数据;或者,该目标数据是超声成像设备向超声数据采集设备发射的声波数据;或者,该目标数据还可以是超声成像设备向超声数据采集设备发送的配置数据等等,本申请实施例对目标数据的类型不作限定,以实际情况下需要传输的数据为准。
在一个实施例中,若总线为PCIe总线,则待访问总线地址空间为PCIe总线地址空间中的Bar空间。其中,基地址寄存器(base address register,Bar)是外设部件互连标准(Peripheral Component Interconnect,PCI)配置空间中从0x10到0x24的6个寄存器,用来定义PCI需要的配置空间大小以及配置PCI设备占用的地址空间。通过BAR可以指定设备想要映射到主存储器的内存,其是属于PCIe总线定义的地址,可以保证第一设备100在待访问总线地址空间的地址中存储或者读取目标数据时的安全性。
预先设置待访问总线地址空间的地址在第二设备200的物理存储空间中映射为目标物理存储地址。其中,第二设备200的物理存储空间是第二设备200的存储器上的存储空间。前面提及第二设备200可以是超声数据成像设备,对于任一种数据的成像设备来说,其均是包括有存储器(DRAM)的,通过该存储器可以保存成像设备进程运行时的程序和数据。例如,电脑的内存条,该内存条的内存空间就是电脑的物理地址空间。然后在第二设备200的存储器中预先申请一段内存空间,该内存空间指的就是本实施例中的物理存储空间。
基于该第二设备200的物理存储空间,将待访问总线地址空间与该物理存储空间中的目标物理存储地址设置映射关系,这样,第一设备100在待访问总线地址空间的地址中存储或者读取目标数据,就相当于,第一设备100在第二设备200的物理存储空间中的目标物理存储地址中存储或者读取目标数据。
虚拟空间为在第二设备200的用户空间中映射或者说是划分出的一段空间,这里对第二设备200的用户空间进行介绍,因第二设备是成像设备,其一般都是计算机设备,因此,从框架层面上来说,其可以分为两层:底层和上层;其中,底层为内核空间,在该内核空间中第二设备200与第一设备100进行直接的数据交互;而上层为用户空间,用户空间为用户可以直接访问的空间,而在该用户空间中预先映射或者划分出一段虚拟的空间就是上述虚拟空间。
将该虚拟空间与上述目标物理存储地址也建立映射关系,使得通过访问该虚拟空间也可以访问到上述目标物理存储地址。
虚拟空间是在第二设备200的用户空间中建立的,所以访问该虚拟空间是可以通过用户空间的应用程序(Application,App)实现。
具体地,第二设备200是成像设备,其是存在显示界面的,属于人机交互设备,这样可方便用户根据第一设备100传输的数据在第二设备200上进行图像处理相关操作。因此,第二设备200上包括用于图像处理的App,用户可通过该App进入成像界面。这样,第二设备200就可以根据虚拟空间的地址与目标物理存储地址的映射关系,通过App访问该虚拟空间的地址,从而实现是在目标物理存储地址中读取或者存储目标数据。
也就说,因为预先根据第一设备100的待访问总线地址空间的地址,在第二设备200的物理存储空间中映射了目标物理存储地址,又在第二设备200的用户空间中建立了与该目标物理存储地址存在映射关系的虚拟空间,而第二设备200的用户空间中的APP可以使得用户访问到虚拟空间,这样,对于用户通过第二设备200的APP访问虚拟空间,和第一设备100访问待访问总线地址空间来说,两者都是直接访问到目标物理存储地址。
例如,如图2所示,图2中,vaddr表示虚拟空间的地址,iova表示PCIe总线地址空间的地址,paddr表示的是目标物理存储地址,即图2中所示的阴影背景部分,DRAM表示的是第二设备200中的存储器,所以从图2中可以看出目标物理存储地址paddr是第二设备200中的存储器DRAM中的一部分地址,而第一设备100的待访问总线地址空间iova和第二设备200的用户空间中虚拟空间地址vaddr,均与目标物理存储地址paddr存在映射关系,如此,可实现第二设备200的App访问的虚拟空间和第一设备100访问的PCIe总线地址空间指向了同一段物理存储空间。
本申请实施例中,通过提供一种数据传输系统,该数据传输系统包括:第一设备和第二设备,第一设备与第二设备通过总线连接;第一设备在待访问总线地址空间的地址中存储或者读取目标数据;其中,该待访问总线地址空间的地址在物理存储空间中映射为目标物理存储地址;物理存储空间为第二设备的存储器上的存储空间;第二设备根据虚拟空间的地址与目标物理存储地址的映射关系,通过应用程序访问虚拟空间的地址,在目标物理存储地址中读取或者存储目标数据。该数据传输系统中,由于待访问总线地址空间和虚拟空间地址均与目标物理存储地址存在映射关系,使得待访问总线地址空间和虚拟空间地址可以指向同一段目标物理存储空间,这样当第一设备和第二设备进行数据传输时,第二设备通过App访问虚拟空间实现在目标物理存储空间中进行数据存储或读取,第一设备通过总线地址空间实现在目标物理存储空间中进行数据存储或读取,而虚拟空间和总线地址空间均为安全的地址,如此,两个设备均是通过安全地址访问到同一物理存储地址进行数据存储或读取,从而提高了数据传输过程的安全性。且虚拟空间和总线地址空间都是设备直接可以访问到的空间,即无需进行数据的拷贝就可以实现访问目标物理存储空间,实现了目标数据无拷贝传输,大大提高了第一设备和第二设备之间的数据传输效率。
在上述实施例中,第一设备100和第二设备200之间进行数据传输既可以是第一设备100作为发送端,第二设备200作为接收端;也可以是第一设备100作为接收端,第二设备200作为发送端。则可选地,在一个实施例中,若第一设备100在待访问总线地址空间的地址中存储目标数据,则第二设备200通过应用程序访问虚拟空间的地址,在目标物理存储地址中读取目标数据;若第一设备100在待访问总线地址空间的地址中读取目标数据,则第二设备200通过应用程序访问虚拟空间的地址,在目标物理存储地址中存储目标数据。
仍以第一设备100是超声数据采集设备,第二设备200是超声成像设备为例:
若超声数据采集设备需要将采集的超声数据传输给超声成像设备,则是第一设备100为发送端,第二设备200为接收端,也即第一设备100通过待访问总线地址空间的地址在目标物理存储地址中存储目标数据(采集的超声数据),第二设备200通过APP访问虚拟空间的地址以在目标物理存储地址中读取该目标数据。
但若超声成像设备需要对超声数据采集设备发射的声波数据,或者,超声成像设备需要向超声数据采集设备发送配置数据,则第一设备100为接收端,第二设备200为发送端,也即第二设备200通过应用程序访问虚拟空间的地址以在目标物理存储地址中存储目标数据(声波数据或者配置数据),第一设备100通过待访问总线地址空间的地址在目标物理存储地址中读取该目标数据。
因此,本实施例中,第一设备100和第二设备200是存储目标数据还是读取目标数据,是取决于目标数据是什么数据的,若目标数据是第一设备100发送给第二设备200,则第一设备100是存储目标数据,第二设备200是读取第一设备100存储的目标数据;若目标数据是第二设备200发送给第一设备100,则第一设备100是读取第二设备200存储目标数据,第二设备200是存储目标数据。当然这只是针对一方获取另一方数据的场景,但在实际应用中的一些场景中,第一设备100也可以读取自己存储的目标数据,同样,第二设备200也可以读取自己存储的目标数据,本申请实施例对此不作限定。
前面提及从框架层面来说,第二设备200可分为内核空间和用户空间,一个实施例中,用户空间包括VFIO驱动框架,第二设备200通过内核空间与第一设备100进行数据直接交互,通过VFIO驱动框架在用户空间实现第一设备的驱动程序。
VFIO(Virtual Function IO)是一个可以安全的把设备I/O、中断、直接存储器访问(Direct Memory Access,DMA)等暴露到用户空间,在用户空间完成设备驱动的框架。VFIO具有低开销的用户空间直接设备访问、虚拟机设备分配、高性能应用等优势,使得采用VFIO可以获得更高的I/O性能。
对于第一设备100的PCIe驱动的开发来说,其若是在第二设备200的内核空间开发,这样驱动和操作系统在一个空间的(操作系统也处于内核空间),使得驱动的开发存在较大的开发难度大、调试困难以及系统调用开销大等问题。基于此,本申请实施例采用VFIO驱动框架,通过VFIO驱动框架在第二设备200的用户空间实现第一设备的驱动程序,而是通过内核空间与第一设备100进行数据直接交互,这样,不再需要在第二设备200的内核空间进行繁琐的驱动开发,也不需要将数据在内核空间和用户空间进行拷贝,而是在用户空间实现第一设备100的驱动开发,在内核空间实现与第一设备100的数据交互,第二设备200的内核空间和用户空间之间实现了数据的零拷贝,大大提高了第二设备200的的数据处理效率,例如,第二设备200是超声数据成像设备,则会大大提高超声数据成像设备成像的帧频(即数量)。
结合上述数据传输过程,则第一设备100将采集的数据写入上述为PCIe总线地址空间的Bar空间中,一个数据包写完后,会发起一个中断,位于用户空间的驱动程序会先接收到该中断,而该驱动程序与第二设备200的APP处于同一层,即都处于用户空间,则APP也可快速接收到该中断,这样用户通过该APP访问虚拟地址就可以读取到第一设备100写入的数据,如此就完成了第一设备100到第二设备200之间的数据传输,且该数据传输过程没有数据的拷贝,实际上第一设备100写入上述为PCIe总线地址空间的Bar空间中和第二设备200通过APP访问虚拟空间,都是在访问第二设备200存储器中的目标物理存储地址,这样,数据传输过程的无拷贝数据,大大提高了第二设备200处理数据的效率。
一个实施例中,第二设备200包括IOMMU和MMU;第二设备200用于通过IOMMU,将待访问总线地址空间的地址在物理存储空间中映射到目标物理存储地址;通过MMU将虚拟空间的地址映射到目标物理存储地址。
本申请实施例中,是将第一设备100的驱动程序在第二设备200的用户空间完成,而目标物理存储地址是置于第二设备200的内核空间中,为了保证用户空间和内核空间之间数据交互的安全性和交互效率,需要将上述用户通过上述APP访问的虚拟空间和第一设备100访问的待访问总线地址空间,均与内核空间的目标物理存储地址建立映射关系。
基于此,如图3所示,本申请实施例采用输入/输出存储器管理单元(I/O memorymanagement unit,IOMMU)和内存管理单元(Memory Manage Unit,MMU)来实现上述映射关系。具体地,图3中,App为第二设备的用户空间的应用程序,vaddr表示虚拟空间的地址,iova表示PCIe总线地址空间的地址,paddr表示的是目标物理存储地址,即图3中所示的阴影背景部分,DRAM表示的是第二设备200中的存储器,目标物理存储地址paddr是第二设备200中的存储器DRAM中的一部分地址。即图3中所示,通过MMU将虚拟空间和目标物理存储地址之间进行映射,然后通过IOMMU将第一设备100要访问的待访问总线地址空间的地址和目标物理存储地址进行映射。
这样,通过建立虚拟空间地址和待访问总线地址空间的地址分别与第二设备200内核空间的目标物理存储地址之间的映射关系,使得设备可以通过虚拟空间地址和待访问总线地址空间的地址安全地访问到数据,从而提高了数据传输过程的安全性。且因设备只需访问虚拟空间地址和待访问总线地址空间的地址,就可实现访问到目标物理存储地址中的数据,这样,无需进行数据的拷贝,避免了bounce buffer(弹性缓存区)的问题,从而大大提高了第一设备和第二设备之间的数据传输效率。
实际应用时,很多设备之间所传输的数据量通常都比较大,直接存储器访问(Direct Memory Access,DMA)在计算机中允许不同速度的硬件装置来交互,且不需要依赖于中央处理器(Central Processing Unit,CPU)的大量中断负载,所以为了减轻CPU的开销,通常会利用DMA进行数据的传输。
那么在一个实施例中,以第一设备100与第二设备200之间通过DMA进行数据传输为例;第一设备100用于在发起目标数据的DMA传输请求后,将目标数据写入待访问总线地址空间,并通过DMA将目标数据写入目标物理存储地址中,写入完成后向第二设备200发送中断信号;第二设备200用于根据中断信号,通过应用程序访问虚拟空间的地址读取或者存储目标数据。
为了进行DMA传输,通常要在第二设备200中分配一块物理连续的内存空间作为DMA缓冲区供第一设备100访问。该DMA缓冲区即为上述第二设备200存储器中分配的目标物理存储地址。
如图4所示,第一设备100和第二设备200之间通过DMA进行数据传输,且目标物理存储地址(图4中未示意)和DMA处于第二设备的内核空间中。
可选地,目标物理存储地址不连续的。即虚拟空间的地址和待访问总线地址空间两者映射在第二设备200的存储器物理存储空间中的目标物理存储地址不连续。
一般针对单次DMA传输数据量较大的情况,第二设备200要为其分配一块很大的物理连续的内存空间作为目标物理存储地址,但由于第二设备200内存本身的碎片化,通常在第二设备200中申请很大的连续物理内存是很困难的,甚至会申请失败,因此,本申请实施例中,在第一设备100进行DMA传输过程中,采用了scatter-gather list(链表式的内存空间)的方式来实现在第二设备200的存储器物理存储空间中申请目标物理存储地址。
具体地,在第二设备200的存储器中分配的目标物理存储地址时,分配的目标物理存储地址不要求其物理地址全部是连续,可以是用一个链表将很多碎片化的物理地址链接起来,其中,每个小的碎片化物理地址连续即可,以方便第一设备100和用户访问。例如,可参见上述图2或图3中的paddr,每一个阴影部分的paddr表示一个小的碎片化物理地址,多个paddr表示的小的碎片化物理地址以链表式连接起来共同构成目标物理存储地址。当然可以理解的是,若实际应用中,第二设备200中的内存是足够的,分配的目标物理存储地址也可以是全部连续的,本申请实施例对此不作限定。
但需要注意的是,虽然目标物理存储地址是不连续的,但一种实施例中,虚拟空间的地址和待访问总线地址空间的地址分别都是连续的,这样使得第一设备100方便快速地访问待访问总线地址空间和用户通过APP方便快速地访问到虚拟空间。
基于该分配的目标物理存储地址,结合第一设备100和第二设备200之间的数据传输,就是第一设备100在发起目标数据的DMA传输请求后,将目标数据写入待访问总线地址空间,并通过DMA将目标数据写入目标物理存储地址中,写入完成后向第二设备200发送中断信号;第二设备200根据中断信号,通过应用程序访问虚拟空间的地址读取或者存储目标数据。
第一设备100和第二设备200之间的数据传输分为数据发送和接收,实际应用中,数据发送和数据接收流程相同,所以以第二设备200接收第一设备100传输的数据为例,对整个传输过程进行说明。
具体地,第一设备100采集到目标数据之后,需要向DMA控制器发起目标数据的DMA传输请求,第一设备100将目标数据写入待访问总线地址空间,并请求DMA控制器将目标数据写入目标物理存储地址中。DMA控制器在传输完一小块物理连续的物理地址后,暂时先不发起中断,而是根据目标物理存储地址的链表来传输下一块物理上连续的地址,直到所有数据传输完毕后,即表示一个数据包写完,之后,DMA控制器发起一个中断。对于第二设备200来说,App和驱动程序都在第二设备200的用户空间中,驱动程序会先接收到中断信号,因为本申请实施例使用了VFIO,VFIO使得该中断可以安全的暴露在用户空间,所以驱动程序接收到中断后,App也可以安全接收到该中断,然后第二设备200就可以通过App从虚拟空间地址访问目标物理存储地址,以读取刚写入的目标数据。因虚拟空间地址和待访问总线地址空间均与该目标物理存储地址存在映射关系,所以该数据传输过程实际上都是在访问第二设备100存储器中的目标物理存储地址,整个数据传输过程无需进行数据拷贝,大大提高了第二设备200的数据处理效率。
而且,DMA控制器在传输完一小块物理连续地址后,不用发起中断,而是根据链表来传输下一块物理上连续地址中的数据,直到所有数据传输完毕后发起一次中断,这样,相对于每传输完一段物理地址就发起一次中断来说,大大减少了中断的次数,提高了数据传输的效率。
本实施例中,第二设备200中申请的目标物理存储地址其对应的物理存储地址可以是不连续的,可以是由多个碎片化物理地址构成,不要求物理空间的连续,从而支持scatter-gather DMA,使得数据传输效率高,而且在数据传输过程中,第一设备100也只能访问映射的内存区域、安全性更高。
在上述数据传输的过程中,为了实现传输数据的连续有序传输,在一个实施例中,上述虚拟空间和待访问总线地址空间均为环形空间。可选地,虚拟空间和总线地址空间均为循环缓冲器结构。可选地,虚拟空间为环形队列循环缓冲器;总线地址空间为先进先出缓冲器。
在第二设备100的用户空间App中将虚拟空间设计为环形空间;在第一设备100上将待访问总线地址空间也设计为环形空间。将虚拟空间和待访问总线地址空间均设计为环形空间是为了两者都具有可以循环连接的特性。则可选地,虚拟空间和待访问总线地址空间均为循环缓冲器结构。例如,虚拟空间为环形队列ring buffer,待访问总线地址空间为先进先出(First Input First Output,FIFO)存储器。可以理解的是,虚拟空间和待访问总线地址空间两者既可以都是环形,也可以都是FIFO,或者,还可以是虚拟空间为FIFO存储器,待访问总线地址空间为环形队列ring buffer。本申请实施例对此不作限定。
下面结合第一设备100与第二设备200之间的数据传输进行说明。
如图5所示,以第二设备200上的TX ring buffer对应第一设备100上的TX FIFO,第二设备200上的RX ring buffer对应第一设备100上的RX FIFO为例说明实现DMA的读写;其中,TX ring buffer表示数据发送过程的第二设备200中的虚拟空间,TX FIFO表示数据发送过程的第一设备100的待访问总线地址空间;而RX ring buffer表示数据接收过程的第二设备200的虚拟空间,RX FIFO表示数据接收过程的第一设备100的待访问总线地址空间。
图5中将数据发送过程和数据接收过程均进行示意,但因数据发送过程和数据接收过程的原理相同,本申请中以数据接收过程为例进行说明,第一设备100发起DMA传输,将一定量的目标数据写入RX FIFO,然后RX FIFO中的写入地址偏移,地址偏移就是将地址写入指向RX FIFO后面空的地址中,方便记录下下次写数据的位置,每传输完成后发起一个中断。因本申请实施例采用VFIO驱动将该中断安全地暴露到了第二设备200的用户空间,而驱动和App均处于用户空间,所以第二设备200上的App可安全快速地接收到中断,并在接收到该中断后,读取目标数据,虚拟空间RX ring buffer中的地址也进行偏移,以记录下RXring buffer中的数据传输的位置,如此往复传输,当RX FIFO空间容纳不下一次DMA传输的数据量时,从头开始写数据,前面已经写过的直接覆盖,RX ring buffer的操作同样如此。
本申请实施例中,将虚拟空间和待访问总线地址空间设计成环形队列,可使得目标数据从第一设备100到第二设备200的连续有序的传输,从而实现第一设备100到第二设备200之间的高效、安全、有序的数据传输方法。
基于上述各实施例的说明,下面结合超声设备场景,以第一设备100是超声数据采集设备,第二设备200是超声数据成像设备,待访问总线地址空间为PCIe总线地址空间中的Bar空间为例,提供一个实施例,该实施例包括:
超声数据采集设备和超声数据成像设备之间通过PCIe总线连接;超声数据成像设备一般为PC,分两层,底层为内核空间,在内核空间中与超声数据采集设备进行直接的数据交互;上层为用户空间,VFIO驱动框架位于此用户空间。并在超声数据成像设备的主存储器中申请了一段内存空间作为目标物理存储地址,超声数据采集设备访问PCIe总线地址空间中的Bar空间,通过DMA(DMA设置在超声数据成像设备的内核空间)访问目标物理存储地址(Bar空间的基址与该目标物理存储地址存在映射关系),而超声数据成像设备的用户空间的应用程序App通过映射的虚拟空间地址访问此目标物理存储地址,这样应用程序App访问的虚拟空间和超声数据采集设备访问的PCIe总线地址空间中的Bar空间指向了同一段物理存储空间,整个过程无需拷贝,一方面避免了bounce buffer,另一方面也不要求物理空间的连续,从而支持scatter-gather DMA,数据传输效率高,而且数据采集设备也只能访问映射的内存区域、安全性更高;从而实现了超声数据采集设备和超声数据成像设备之间的高效数据传输。且由于在用户空间映射了虚拟空间,通过虚拟空间的地址访问实际的目标物理存储地址,所以在用户空间层面,App程序完全屏蔽了底层的目标物理存储地址,从而实现了用户空间驱动VFIO,开发维护简单。
另外,基于上述实施例提供的数据传输系统,本申请实施例还提供一种数据传输方法,如图6所示,该实施例包括以下步骤:
S101,通过第一设备在待访问总线地址空间的地址中存储或者读取目标数据。
S102,将待访问总线地址空间的地址在物理存储空间中映射为目标物理存储地址;物理存储空间为第二设备的存储器上的存储空间;第二设备与第一设备通过总线连接。
S103,根据虚拟空间的地址与目标物理存储地址的映射关系,通过第二设备的应用程序访问虚拟空间的地址,以在目标物理存储地址中读取或者存储目标数据。
本实施例提供的数据传输方法中各步骤,其实现原理和技术效果与前面数据传输系统中各实施例的原理的实施过程相似,在此不再赘述。本实施例中各步骤的实现方式只是一种举例,对各实现方式不作限定,各步骤的顺序在实际应用中可进行调整,只要可以实现各步骤的目的即可。
应该理解的是,虽然上述流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,上述流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图7所示,提供了一种数据传输装置,该装置包括:第一操作模块10、处理模块11和第二操作模块12,其中:
第一操作模块10,用于通过第一设备在待访问总线地址空间的地址中存储或者读取目标数据;
处理模块11,用于将待访问总线地址空间的地址在物理存储空间中映射为目标物理存储地址;物理存储空间为第二设备的存储器上的存储空间;第二设备与第一设备通过总线连接;
第二操作模块12,用于根据虚拟空间的地址与目标物理存储地址的映射关系,通过第二设备的应用程序访问虚拟空间的地址,以在目标物理存储地址中读取或者存储目标数据。
关于数据传输装置的具体限定可以参见上文中对于数据传输系统的限定,在此不再赘述。该数据传输装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以以硬件形式内嵌于或独立于电子设备中的处理器中,也可以以软件形式存储于电子设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图8所示。该计算机设备包括通过系统总线连接的处理器、存储器、通信接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过WIFI、运营商网络、NFC(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现一种数据传输方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图8中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,本申请实施例还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:
通过第一设备在待访问总线地址空间的地址中存储或者读取目标数据;
将待访问总线地址空间的地址在物理存储空间中映射为目标物理存储地址;物理存储空间为第二设备的存储器上的存储空间;第二设备与第一设备通过总线连接;
根据虚拟空间的地址与目标物理存储地址的映射关系,通过第二设备的应用程序访问虚拟空间的地址,以在目标物理存储地址中读取或者存储目标数据。
本实施例提供的一种计算机设备,其实现原理和技术效果与上述方法实施例类似,在此不再赘述。
在一个实施例中,本申请实施例还提供一种存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以下步骤:
通过第一设备在待访问总线地址空间的地址中存储或者读取目标数据;
将待访问总线地址空间的地址在物理存储空间中映射为目标物理存储地址;物理存储空间为第二设备的存储器上的存储空间;第二设备与第一设备通过总线连接;
根据虚拟空间的地址与目标物理存储地址的映射关系,通过第二设备的应用程序访问虚拟空间的地址,以在目标物理存储地址中读取或者存储目标数据。
本实施例提供的一种存储介质,其实现原理和技术效果与上述方法实施例类似,在此不再赘述。
在一个实施例中,本申请实施例还提供一种计算机程序产品,包括计算机程序/指令,该计算机程序/指令被处理器执行时实现以下步骤:
通过第一设备在待访问总线地址空间的地址中存储或者读取目标数据;
将待访问总线地址空间的地址在物理存储空间中映射为目标物理存储地址;物理存储空间为第二设备的存储器上的存储空间;第二设备与第一设备通过总线连接;
根据虚拟空间的地址与目标物理存储地址的映射关系,通过第二设备的应用程序访问虚拟空间的地址,以在目标物理存储地址中读取或者存储目标数据。
本实施例提供的一种计算机程序产品,其实现原理和技术效果与上述方法实施例类似,在此不再赘述。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请实施例所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-Only Memory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种数据传输系统,其特征在于,所述系统包括:第一设备和第二设备,所述第一设备与所述第二设备通过总线连接;
所述第一设备,用于在待访问总线地址空间的地址中存储或者读取目标数据;所述待访问总线地址空间的地址在物理存储空间中映射为目标物理存储地址;所述物理存储空间为所述第二设备的存储器上的存储空间;
所述第二设备,用于根据虚拟空间的地址与所述目标物理存储地址的映射关系,通过应用程序访问所述虚拟空间的地址,在所述目标物理存储地址中读取或者存储所述目标数据。
2.根据权利要求1所述的数据传输系统,其特征在于,若所述第一设备在所述待访问总线地址空间的地址中存储所述目标数据,则所述第二设备通过应用程序访问所述虚拟空间的地址,在所述目标物理存储地址中读取所述目标数据;
若所述第一设备在所述待访问总线地址空间的地址中读取所述目标数据,则所述第二设备通过应用程序访问所述虚拟空间的地址,在所述目标物理存储地址中存储所述目标数据。
3.根据权利要求1或2所述的数据传输系统,其特征在于,所述第二设备包括IOMMU和MMU;
所述第二设备,用于通过所述IOMMU,将所述待访问总线地址空间的地址在物理存储空间中映射到所述目标物理存储地址;通过所述MMU,将所述虚拟空间的地址映射到所述目标物理存储地址。
4.根据权利要求1或2所述的数据传输系统,其特征在于,所述第一设备与所述第二设备之间通过DMA进行数据传输;
所述第一设备,用于在发起所述目标数据的DMA传输请求后,将所述目标数据写入所述待访问总线地址空间,并通过所述DMA将所述目标数据写入所述目标物理存储地址中,写入完成后向所述第二设备发送中断信号;
所述第二设备,用于根据所述中断信号,通过所述应用程序访问所述虚拟空间的地址读取或者存储所述目标数据。
5.根据权利要求1所述的数据传输系统,其特征在于,所述第二设备包括用户空间和内核空间;所述用户空间包括VFIO驱动框架;
所述第二设备,通过所述内核空间与所述第一设备进行数据直接交互,通过所述VFIO驱动框架在所述用户空间实现所述第一设备的驱动程序。
6.根据权利要求1或2所述的数据传输系统,其特征在于,所述总线为PCIe总线,所述待访问总线地址空间为所述PCIe总线地址空间中的Bar空间。
7.根据权利要求1或2所述的数据传输系统,其特征在于,所述虚拟空间和所述待访问总线地址空间均为环形空间。
8.根据权利要求1或2所述的数据传输系统,其特征在于,所述虚拟空间的地址和所述待访问总线地址空间的地址分别都是连续的。
9.根据权利要求1或2所述的数据传输系统,其特征在于,所述虚拟空间的地址和所述待访问总线地址空间的地址,映射在所述物理存储空间中的所述目标物理存储地址不连续。
10.一种数据传输方法,其特征在于,所述方法包括:
通过第一设备在待访问总线地址空间的地址中存储或者读取目标数据;
将所述待访问总线地址空间的地址在物理存储空间中映射为目标物理存储地址;所述物理存储空间为第二设备的存储器上的存储空间;所述第二设备与所述第一设备通过总线连接;
根据虚拟空间的地址与所述目标物理存储地址的映射关系,通过所述第二设备的应用程序访问所述虚拟空间的地址,以在所述目标物理存储地址中读取或者存储所述目标数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110763279.9A CN115587054A (zh) | 2021-07-06 | 2021-07-06 | 数据传输系统和数据传输方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110763279.9A CN115587054A (zh) | 2021-07-06 | 2021-07-06 | 数据传输系统和数据传输方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115587054A true CN115587054A (zh) | 2023-01-10 |
Family
ID=84771667
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110763279.9A Pending CN115587054A (zh) | 2021-07-06 | 2021-07-06 | 数据传输系统和数据传输方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115587054A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117472796A (zh) * | 2023-12-06 | 2024-01-30 | 摩尔线程智能科技(北京)有限责任公司 | 总线模块的数据处理方法、装置、电子设备和存储介质 |
CN117743220A (zh) * | 2023-12-28 | 2024-03-22 | 摩尔线程智能科技(成都)有限责任公司 | 数据传输方法及装置、电子设备和存储介质 |
-
2021
- 2021-07-06 CN CN202110763279.9A patent/CN115587054A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117472796A (zh) * | 2023-12-06 | 2024-01-30 | 摩尔线程智能科技(北京)有限责任公司 | 总线模块的数据处理方法、装置、电子设备和存储介质 |
CN117743220A (zh) * | 2023-12-28 | 2024-03-22 | 摩尔线程智能科技(成都)有限责任公司 | 数据传输方法及装置、电子设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10552935B2 (en) | Direct communication between GPU and FPGA components | |
JP7252789B2 (ja) | Ssdに対するfpgaベースのアクセラレーションモジュール及びシステムとその動作方法 | |
WO2022156370A1 (zh) | 一种基于fpga的dma设备及dma数据搬移方法 | |
CN107967225B (zh) | 数据传输方法、装置、计算机可读存储介质和终端设备 | |
EP2763045B1 (en) | Method and apparatus for allocating memory space with write-combine attribute | |
TW201905714A (zh) | 以輔助處理器記憶體進行儲存裝置的直接輸入輸出操作的計算系統操作方法、計算系統、車輛及電腦可讀媒體 | |
CN115587054A (zh) | 数据传输系统和数据传输方法 | |
AU2013226133B2 (en) | Using storage controller bus interfaces to secure data transfer between storage devices and hosts | |
US20180300230A1 (en) | Computing device, data transfer method between coprocessor and non-volatile memory, and computer-readable recording medium | |
US11899612B2 (en) | Online upgrading method and system for multi-core embedded system | |
CN109977037B (zh) | 一种dma数据传输方法及系统 | |
WO2015180598A1 (zh) | 对存储设备的访问信息处理方法和装置、系统 | |
JP2021515318A (ja) | NVMeベースのデータ読み取り方法、装置及びシステム | |
CN112214158A (zh) | 主机输出输入命令的执行装置及方法及计算机可读取存储介质 | |
US9875199B2 (en) | Data transfer control apparatus | |
JP4696199B2 (ja) | 転送ディスクリプタ用メモリを備えるusbホストコントローラ | |
US9436395B2 (en) | Mechanisms to save user/kernel copy for cross device communications | |
CN114817965A (zh) | 基于多算法ip核实现msi中断处理的高速加解密系统及方法 | |
US20140149528A1 (en) | Mpi communication of gpu buffers | |
US20150134855A1 (en) | Decoupling Host and Device Address Maps for a Peripheral Component Interconnect Express Controller | |
US9128924B2 (en) | Method and apparatus for wireless broadband systems direct data transfer | |
US20160314086A1 (en) | Secure digital host controller virtualization | |
US20220335109A1 (en) | On-demand paging support for confidential computing | |
JP3251903B2 (ja) | プロセッサ・データをバースト転送する方法及びコンピュータ・システム | |
US10977201B1 (en) | Per IO direct memory access redirection |
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 |