WO2022133656A1 - 一种数据处理装置、方法及相关设备 - Google Patents

一种数据处理装置、方法及相关设备 Download PDF

Info

Publication number
WO2022133656A1
WO2022133656A1 PCT/CN2020/138049 CN2020138049W WO2022133656A1 WO 2022133656 A1 WO2022133656 A1 WO 2022133656A1 CN 2020138049 W CN2020138049 W CN 2020138049W WO 2022133656 A1 WO2022133656 A1 WO 2022133656A1
Authority
WO
WIPO (PCT)
Prior art keywords
address
instruction
storage
data
processor
Prior art date
Application number
PCT/CN2020/138049
Other languages
English (en)
French (fr)
Inventor
程传宁
程中武
戴季武
Original Assignee
华为技术有限公司
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by 华为技术有限公司 filed Critical 华为技术有限公司
Priority to PCT/CN2020/138049 priority Critical patent/WO2022133656A1/zh
Priority to EP20966237.8A priority patent/EP4254207A4/en
Priority to CN202080107786.0A priority patent/CN116601616A/zh
Publication of WO2022133656A1 publication Critical patent/WO2022133656A1/zh
Priority to US18/338,055 priority patent/US20230342086A1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0284Multiple user address space allocation, e.g. using different base addresses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/109Address translation for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17306Intercommunication techniques
    • G06F15/17331Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/206Memory mapped I/O
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management

Definitions

  • the target MMIO address is the source operand address;
  • the first operation instruction is a read operation instruction; and the method further includes: receiving, through the storage controller, the first operation instruction.
  • the data sent by the second device; the data is the data corresponding to the first storage address read by the second device based on the first operation instruction; through the storage controller, the data is written into the destination operand address, and send the first message to the processor;
  • the destination operand address is one of M second storage addresses in the storage space of the first device; M is greater than or equal to 1 Integer; the first message is used to indicate that the first instruction has been successfully executed.
  • FIG. 7 is a schematic diagram of an instruction format provided by an embodiment of the present application.
  • step S11 the CPU writes the instruction into the memory (for example, into the DRAM connected to the on-chip bus in FIG. 2 a ), which may be specifically written into a submission queue (SQ) in the memory.
  • FIG. 2b is a schematic flowchart of another asynchronous DMA data transmission.
  • step S11 further reference may be made to FIG. 2b. As shown in FIG. 2b, when the CPU processes the data transmission task a1, the corresponding instructions of the data transmission task a1 may be written into the memory first .
  • the steps often take 4us, or 5us or even more time ( Specifically, it can be seen in Fig. 2b or Fig. 2c that the CPU side context switching and the rectangle related to the interrupt handler are obviously shorter in length). Therefore, the embodiment of the present application can only occupy a very small amount of time of the processor in the process of data transmission, and does not require the processor to perform, for example, the above-mentioned writing instructions to the memory, grabbing locks, knocking the doorbell to DMA, and processing interrupts, etc.
  • the complicated and time-consuming work further reduces the occupation of the processor by the data transmission task, thereby greatly improving the overall work efficiency of the computer.
  • the storage space in XL-Flash can be mapped into the client's MMIO address space.
  • the N storage addresses in the XL-Flash storage space correspond one-to-one with the N MMIO addresses in the MMIO address space.
  • N is an integer greater than or equal to 1. It can be understood that the MMIO address does not actually store data, but only a mapping corresponding to the storage address in the XL-Flash storage space. Its mapping relationship can be shown in Table 1 below:
  • the secondary data transfer task is synchronous DMA transfer.
  • the memory management unit can identify, based on the physical address, that the current data transfer task is a synchronous DMA transfer, so as to directly send the data packet to the synchronous DMA controller.
  • the data packet may eventually be written to the physical address.
  • the embodiment of the present application is significantly different from the aforementioned asynchronous DMA scheme.
  • the processor core needs to first write the instruction into the queue of the memory, and then notify the DMA controller to obtain it from the memory. method of the corresponding command.
  • a corresponding timeout detection mechanism may also be set in some embodiments of the present application.
  • the external device for example, the XL-Flash shown in FIG. 6
  • the synchronous DMA controller can send the read operation command to the XL-Flash again.
  • the storage controller may send a second message to the corresponding processor core at this time.
  • Step S1102 through the storage controller, receive the first instruction, and determine the first storage address corresponding to the target MMIO address; send a first operation instruction to the second device; wherein the first operation instruction and The first instruction corresponds, and the first operation instruction includes the first storage address.
  • the method further includes:

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Bus Control (AREA)

Abstract

本申请实施例公开了一种数据处理装置、方法及相关设备,其中,所述装置应用于第一设备,所述装置包括处理器、存储控制器;其中,第二设备的存储空间被映射到第一设备的内存映射输入/输出MMIO地址空间中,第一设备的MMIO地址空间中的N个MMIO地址与第二设备的存储空间中的N个第一存储地址一一对应;处理器,用于向存储控制器发送第一指令,第一指令包括目标MMIO地址;存储控制器,用于接收第一指令,并确定目标MMIO地址对应的第一存储地址;向第二设备发送第一操作指令;其中,第一操作指令与第一指令对应,且所述第一操作指令包括所述第一存储地址。采用本申请实施例,可以提升设备之间的数据传输速率。

Description

一种数据处理装置、方法及相关设备 技术领域
本申请涉及计算机技术领域,尤其涉及一种数据处理装置、方法及相关设备。
背景技术
随着互联网延伸到社会的各个方面,计算机所需处理的数据量成倍增加。但是,在计算机调度外部数据参与实际计算的过程中往往会大量占用中央处理器(central processing unit/processor,CPU),这极大程度上降低了CPU参与实际计算的能力。针对此情况,业界提出了直接存储器访问(direct memory access,DMA)以解决计算机系统中的数据搬移问题。DMA是现代计算机系统的一个重要的特征。在现代计算机中,硬件子系统可以通过DMA直接访问内存中的数据,而不用通过CPU参与完成数据的搬移。CPU只需在数据传输的开始和结束阶段进行相应的处理,而在传输过程中CPU可以执行其他的任务。如此,在大部分时间里,CPU和输入输出都处于并行操作的状态,从而使得整个计算机系统的效率大大提高。
随着DMA外设逐渐增多,越来越多的设备支持DMA直接访问。由此,目前很多外设的输入/输出(input/output,I/O)访问延迟逐渐降低。比如2020年的国际固态电路年度会议(international solid-state circuits conference,ISSCC)上,铠侠半导体提出XL-Flash(闪存),其传输延迟可以降低到4us。另外,远程直接存储器访问(remote direct memory access,RDMA)设备对于远端数据的传输延迟也只有1.2us。这种数据传输延迟降低,促使了DMA整体传输延迟的降低。
DMA中最常见的方案为异步DMA方案,异步DMA方案的主要流程包含DMA请求,DMA响应,DMA传输和DMA中断。其中,DMA请求和DMA中断等步骤都需要CPU与DMA进行交互。在之前的低速I/O时代,CPU交互延迟不是导致DMA延迟的主要原因,但是在高速I/O时代,I/O存取延迟逐渐降低,而DMA与CPU交互的延迟在DMA延迟中的占比逐渐提升,成为限制DMA传输速率主要原因之一。
因此,如何提升设备之间的数据传输速率是亟待解决的问题。
发明内容
本申请实施例提供一种数据处理装置、方法及相关设备,可以提升设备之间的数据传输速率。
第一方面,本申请实施例提供了一种数据处理装置,所述装置应用于第一设备,所述装置包括处理器、存储控制器;其中,第二设备的存储空间被映射到所述第一设备的内存映射输入/输出MMIO地址空间中,所述第一设备的MMIO地址空间中的N个MMIO地址与所述第二设备的存储空间中的N个第一存储地址一一对应;所述处理器,用于向所述存储控制器发送第一指令,所述第一指令包括目标MMIO地址;所述目标MMIO地址为所述N个MMIO地址中的一个;N为大于或者等于1的整数;所述存储控制器,用于接收所述第一指令,并确定所述目标MMIO地址对应的第一存储地址;向所述第二设备发送第一操 作指令;其中,所述第一操作指令与所述第一指令对应,且所述第一操作指令包括所述第一存储地址。
在本申请实施例中,可以事先通过内存输入/输出映射(memory-mapped input/output,MMIO)技术,将其他设备(如第二设备)的存储空间映射到本地端设备(如第一设备)的MMIO地址空间。如此一来,本地端设备的处理器便可以通过与读/写内存一样的指令直接访问其他设备。本申请实施例可以基于该MMIO映射,通过处理器直接向本地端设备中的存储控制器(例如为DMA控制器或者RDMA控制器)发送指令,该指令中可以包括其他设备存储空间内的任意存储地址被映射后的MMIO地址。该存储控制器在接收到该指令后可以根据映射关系,确定该MMIO地址对应的存储地址。然后,存储控制器可以基于该确定的存储地址向对应的其他设备发送操作指令,以使得其他设备基于该操作指令(例如读/写操作指令)读取该存储地址内的数据或者将数据写入该存储地址,等等。如此,实现了通过处理器直接下发指令至存储控制器,并由存储控制器完成本地端设备与其他设备(例如为硬盘、磁盘和光盘等等外部存储器)之间的数据传输。然而,现有技术中,在多个设备之间进行数据传输时,处理器只能向本地端设备中的内存下发指令,具体需要处理器先向内存中写入相应的指令,然后处理器再通知存储控制器从内存中获取相应的指令并执行,最终存储控制器在指令执行完成后产生中断报给处理器,从而造成处理器与存储控制器之间的交互延迟较长,存储控制器的数据传输速率受到限制,进而导致设备之间的数据传输速率较低,并且仍旧大量占用处理器的方案而言。相比于现有技术,本申请实施例中指令的下发无需经过内存,处理器可以基于该MMIO映射直接向存储控制器发送指令,使得存储控制器可以直接访问其他设备存储空间中的相应地址,以高效地完成设备之间大批量数据的快速传输,大大提高了设备之间的数据传输速率,并且降低数据传输任务对处理器的占用,进一步提高了计算机整体的工作效率。
在一种可能的实现方式中,所述目标MMIO地址为所述第一指令中的源操作数地址或者目的操作数地址。
在本申请实施例中,可以理解的是,指令一般可以包括源操作数地址和目的操作数地址。相应的,该MMIO地址可以为其中的源操作数地址或者目的操作数地址。若该MMIO地址为源操作数地址,则该指令可以为从其他设备中读取数据并写入本地端设备的存储空间中。若该MMIO地址为目的操作数地址,则该指令可以为将本地端设备的数据写入其他设备的存储空间中。从而可以通过处理器向存储控制器发送的相应指令,实现本地端设备与其他设备(例如可以为与本地端设备连接的外部设备,比如磁盘、硬盘、光盘和网卡等等,还例如可以为与本地端设备网络连接的远程设备,比如云端服务器等等)之间互相的数据传输。并且,由于处理器直接向存储控制器发送指令,大大降低了处理器与存储控制器之间的交互延迟,从而可以大大提升设备之间的数据传输速率。
在一种可能的实现方式中,所述目标MMIO地址为所述源操作数地址;所述第一操作指令为读操作指令;所述存储控制器,还用于接收所述第二设备发送的数据;所述数据为所述第二设备基于所述第一操作指令读取的所述第一存储地址对应的数据;所述存储控制器,还用于将所述数据写入所述目的操作数地址,并向所述处理器发送第一消息;所述目的操作数地址为所述第一设备的存储空间中的M个第二存储地址中的一个;M为大于或者 等于1的整数;所述第一消息用于指示所述第一指令已执行成功。
在本申请实施例中,若本地端设备需要将其他设备中的数据写入自身的存储地址,则本地端设备的处理器可以向本地端设备的存储控制器发送指令,该指令的源操作数地址可以为其他设备内的存储地址对应的MMIO地址,该指令的目的操作数地址可以为本地端设备内的存储地址。存储控制器可以根据该MMIO地址对应的其他设备内的存储地址,生成相应的读操作指令,并将该读操作指令发送至其他设备,以使得其他设备基于该读操作指令读取其存储地址对应的数据,并将该数据发送至本地端设备的存储控制器。然后,存储控制器可以将该数据写入该指令对应的本地端设备的存储地址中,从而快速、高效地完成其他设备到本地端设备的数据传输,大大提高了对其他设备内数据的读取速率。此外,存储控制器在完成该指令后,也即完成将其他设备内读取的数据写入本地端设备的存储地址后,可以向处理器发送相应的消息,以指示当前指令已执行成功。后续,处理器可以基于该消息,执行下一条指令(例如执行下一次数据传输,或者执行其他的数据处理任务等等),从而提高整体的数据处理效率。
在一种可能的实现方式中,所述存储控制器,还用于若在预设的时间范围内未接收到所述第二设备发送的所述数据,则在预设的次数范围内向所述第二设备重新发送至少一次所述第一操作指令;所述存储控制器,还用于若在重新发送至少一次所述第一操作指令后未接收到所述第二设备发送的所述数据,则向所述处理器发送第二消息,所述第二消息用于指示所述第一指令已执行失败。
在本申请实施例中,还可以通过设置超时检测机制,若本地端设备想要读取其他设备内的数据,但其他设备在接收到相应的读操作指令后迟迟未反馈相应的数据至本地端设备时,存储控制器可以再次向该其他设备发送读操作指令。进一步的,若多次重复发送该读操作指令后,其他设备仍然没有反馈相应的数据,则此时存储控制器可以向处理器发送消息,以指示当前指令已执行失败,后续处理器可以基于该消息执行下一条指令,而不长时间消耗在一次数据传输中,进而提高数据传输的整体效率。
在一种可能的实现方式中,所述处理器,还用于在接收到所述第一消息或者所述第二消息的情况下,执行下一条指令。
在本申请实施例中,如上所述,若当前数据传输的指令执行成功,或者长时间未执行成功的情况下,存储控制器均可以向处理器发送相应的消息,以指示当前指令已执行成功或者已执行失败。进而处理器可以基于该消息,执行下一条指令(例如执行下一次数据传输,或者执行其他的数据处理任务等等),从而提高整体的数据处理效率。在一些可能的实施例中,若该处理器接收到的是执行失败的消息,该处理器还可以进一步检查其他设备的状况以及网络状况等等,从而保证后续数据传输任务的有效进行。
在一种可能的实现方式中,所述目标MMIO地址为所述目的操作数地址;所述第一操作指令为写操作指令;所述存储控制器,还用于读取所述源操作数地址对应的数据,并将所述数据发送至第二设备;所述源操作数地址为所述第一设备的存储空间中的M个第二存储地址中的一个;M为大于或者等于1的整数;所述存储控制器,还用于接收所述第二设备发送的响应消息,并基于所述响应消息向所述处理器发送第一消息;所述响应消息为所述第二设备基于所述第一操作指令将所述数据写入所述第一存储地址后发送的消息;所述 第一消息用于指示所述第一指令已执行成功。
在本申请实施例中,若本地端设备需要将其自身存储的数据写入其他设备中,则本地端设备的处理器可以向本地端设备的存储控制器发送指令,该指令的目的操作数地址可以为其他设备内的存储地址对应的MMIO地址,该指令的源操作数地址可以为本地端设备内的存储地址。存储控制器可以根据该指令读取本地端设备内相应的数据,并将该数据发送至其他设备。与此同时,存储控制器还可以根据该MMIO地址对应的其他设备内的存储地址,生成相应的写操作指令,并将该写操作指令发送至其他设备,以使得其他设备基于该写操作指令将本地端设备内读取的数据写入该存储地址,从而快速、高效地完成本地端设备到其他设备的数据传输,大大提高了将数据写入其他设备的速率。此外,其他设备在完成该写操作指令后,可以向本地端设备的存储控制器发送相应的响应消息,进一步的,存储控制器在接收到该响应消息后,可以向处理器发送相应的消息,以指示当前指令已执行成功。后续,处理器可以基于该消息,执行下一条指令(例如执行下一次数据传输,或者执行其他的数据处理任务等等),从而可以提高整体的数据处理效率。
在一种可能的实现方式中,所述存储控制器,还用于若在预设的时间范围内未接收到所述第二设备发送的所述响应消息,则在预设的次数范围内向所述第二设备重新发送至少一次所述第一操作指令;所述存储控制器,还用于若在重新发送至少一次所述第一操作指令后未接收到所述第二设备发送的所述响应消息,则向所述处理器发送第二消息;所述第二消息用于指示所述第一指令已执行失败。
在本申请实施例中,还可以通过设置超时检测机制,若本地端设备想要将自身的数据写入其他设备中,但其他设备迟迟未反馈响应消息时(也即其他设备未顺利将接收到的本地端设备的数据写入其相应的存储地址中),存储控制器可以再次向该其他设备发送对应的写操作指令。进一步的,若多次重复发送该写操作指令后,其他设备仍然没有反馈,则此时存储控制器可以向处理器发送消息,以指示当前指令已执行失败,后续处理器可以基于该消息执行下一条指令,而不长时间消耗在一次数据传输中,进而可以提高数据传输的整体效率。
在一种可能的实现方式中,所述处理器,还用于在接收到所述第一消息或者所述第二消息的情况下,执行下一条指令。
在本申请实施例中,如上所述,若当前数据传输的指令执行成功,或者长时间未执行成功的情况下,均可以向处理器发送相应的消息,以指示当前指令已执行成功或者已执行失败。进而处理器可以基于该消息,执行下一条指令(例如执行下一次数据传输,或者执行其他的数据处理任务等等),从而提高整体的数据处理效率。在一些可能的实施例中,若该处理器接收到的是执行失败的消息,该处理器还可以进一步检查其他设备的状况以及网络状况等等,从而保证后续数据传输任务的有效进行。
在一种可能的实现方式中,所述第二设备为与所述第一设备通过网络连接的远程设备;所述存储控制器为远程直接存储器访问RDMA控制器;所述存储控制器,具体用于通过所述网络连接向所述第二设备发送所述第一操作指令。
在本申请实施例中,在一些可能的实施方式中,本地端设备可以与通过网络连接的远程设备之间进行数据传输,其中,远程设备例如可以为云端的服务器或者本地端设备内的 相关应用的后台服务器等等。相应的,在上述一些可能的实施方式中,存储控制器可以为RDMA控制器(具体可以为synchronize(同步)RDMA控制器),RDMA控制器可以直接接收处理器发送的指令,确定该指令中的MMIO地址所对应的远程设备内的存储地址,然后可以通过该网络连接向该远程设备发送操作指令,已读取该存储地址内的数据,或者将数据写入该存储地址,等等。如上所述,在该过程中,由于无需处理器事先将指令写入内存,然后再通知存储控制器从内存中读取指令,以执行相应的指令,从而大大降低了处理器与存储控制器之间的交互延迟,继而进一步提高了本地端设备与远程设备之间的数据传输速率。
在一种可能的实现方式中,所述第二设备为与所述第一设备通过总线连接的外部设备;所述存储控制器为直接存储器访问DMA控制器;所述存储控制器,具体用于通过所述总线连接向所述第二设备发送所述第一操作指令。
在本申请实施例中,在一些可能的实施方式中,本地端设备可以与通过总线连接(例如为高速串行计算机扩展总线标准(peripheral component interconnect express,PCIE))的外部设备之间进行数据传输,其中,该外部设备例如可以为硬盘、磁盘、U盘和光盘等等。相应的,在上述一些可能的实施方式中,存储控制器可以为DMA控制器(具体可以为synchronize(同步)DMA控制器),DMA控制器可以直接接收处理器发送的指令,确定该指令中的MMIO地址所对应的外部设备内的存储地址,然后可以通过该总线连接向该外部设备发送操作指令,已读取该存储地址内的数据,或者将数据写入该存储地址,等等。如上所述,在该过程中,由于无需处理器事先将指令写入内存,然后再通知存储控制器从内存中读取指令,以执行相应的指令,从而大大降低了处理器与存储控制器之间的交互延迟,继而进一步提高了本地端设备与其外部设备之间的数据传输速率。
在一种可能的实现方式中,多个设备的存储空间被映射到所述第一设备的MMIO地址空间中;所述第二设备为所述多个设备中的一个;所述存储控制器,还用于根据所述目标MMIO地址和映射关系,确定所述第一指令对应的所述第二设备。
在本申请实施例中,可以将多个远程设备或者外部设备的存储空间均映射到本地端设备的MMIO地址空间中,从而提升本地端设备与各个设备之间的数据传输速率。并且,基于各个设备的存储地址与MMIO地址之间的映射关系,可以通过存储控制器(例如为上述的DMA控制器或者RDMA控制器)确定本次访问的MMIO地址对应的设备,从而向该设备发送对应的操作指令以访问其中与该MMIO地址对应的存储地址,由此保证数据传输的准确性和高效性。
在一种可能的实现方式中,所述装置还包括内存管理单元;所述处理器,具体用于向所述内存管理单元发送第一数据包,所述第一数据包包括所述第一指令,所述第一数据包携带有虚拟地址;所述内存管理单元,用于接收所述第一数据包,并确定所述虚拟地址对应的物理地址,所述物理地址为所述MMIO地址空间内的一个MMIO地址,所述物理地址用于指示所述第一数据包为发送至所述存储控制器的数据包;所述内存管理单元,还用于根据所述物理地址,向所述存储控制器发送所述第一数据包;所述存储控制器,具体用于接收所述第一数据包,获取所述第一数据包内的所述第一指令。
在本申请实施例中,处理器可以以数据包的形式下发指令至存储控制器。具体地,处 理器可以先将包含指令的数据包发送给内存管理单元,内存管理单元在接收到该数据包后,可以先将该数据包携带的虚拟地址映射成相应的物理地址,该物理地址可以为该MMIO地址空间内被预先标记的与该存储控制器对应的一个MMIO地址。然后,该内存管理单元可以基于该物理地址确定将该数据包直接发送给存储控制器。如此,实现了处理器直接下发指令至存储控制器,对比现有技术中,需要处理器先将指令写入内存,然后再通知存储控制器从内存中获取指令等的方案而言,本申请实施例减少了处理器的工作,相应的减少了存储控制器获取指令的成本,从而大大提高了数据传输的整体速率。
第二方面,本申请实施例提供了一种数据处理方法,所述方法应用于第一设备,所述第一设备包括处理器、存储控制器;其中,第二设备的存储空间被映射到所述第一设备的内存映射输入/输出MMIO地址空间中,所述第一设备的MMIO地址空间中的N个MMIO地址与所述第二设备的存储空间中的N个第一存储地址一一对应;所述方法包括:通过所述处理器,向所述存储控制器发送第一指令,所述第一指令包括目标MMIO地址;所述目标MMIO地址为所述N个MMIO地址中的一个;N为大于或者等于1的整数;通过所述存储控制器,接收所述第一指令,并确定所述目标MMIO地址对应的第一存储地址;向所述第二设备发送第一操作指令;其中,所述第一操作指令与所述第一指令对应,且所述第一操作指令包括所述第一存储地址。
在一种可能的实现方式中,所述目标MMIO地址为所述第一指令中的源操作数地址或者目的操作数地址。
在一种可能的实现方式中,所述目标MMIO地址为所述源操作数地址;所述第一操作指令为读操作指令;所述方法还包括:通过所述存储控制器,接收所述第二设备发送的数据;所述数据为所述第二设备基于所述第一操作指令读取的所述第一存储地址对应的数据;通过所述存储控制器,将所述数据写入所述目的操作数地址,并向所述处理器发送第一消息;所述目的操作数地址为所述第一设备的存储空间中的M个第二存储地址中的一个;M为大于或者等于1的整数;所述第一消息用于指示所述第一指令已执行成功。
在一种可能的实现方式中,所述方法还包括:若在预设的时间范围内未通过所述存储控制器接收到所述第二设备发送的所述数据,则通过所述存储控制器在预设的次数范围内向所述第二设备重新发送至少一次所述第一操作指令;若在通过所述存储控制器重新发送至少一次所述第一操作指令后未接收到所述第二设备发送的所述数据,则通过所述存储控制器向所述处理器发送第二消息,所述第二消息用于指示所述第一指令已执行失败。
在一种可能的实现方式中,所述方法还包括:通过所述处理器,在接收到所述第一消息或者所述第二消息的情况下,执行下一条指令。
在一种可能的实现方式中,所述目标MMIO地址为所述目的操作数地址;所述第一操作指令为写操作指令;所述方法还包括:通过所述存储控制器,读取所述源操作数地址对应的数据,并将所述数据发送至第二设备;所述源操作数地址为所述第一设备的存储空间中的M个第二存储地址中的一个;M为大于或者等于1的整数;通过所述存储控制器,接收所述第二设备发送的响应消息,并基于所述响应消息向所述处理器发送第一消息;所述响应消息为所述第二设备基于所述第一操作指令将所述数据写入所述第一存储地址后发送 的消息;所述第一消息用于指示所述第一指令已执行成功。
在一种可能的实现方式中,所述方法还包括:若在预设的时间范围内未通过所述存储控制器接收到所述第二设备发送的所述响应消息,则通过所述存储控制器在预设的次数范围内向所述第二设备重新发送至少一次所述第一操作指令;若在通过所述存储控制器重新发送至少一次所述第一操作指令后未接收到所述第二设备发送的所述响应消息,则通过所述存储控制器向所述处理器发送第二消息;所述第二消息用于指示所述第一指令已执行失败。
在一种可能的实现方式中,所述方法还包括:通过所述处理器,在接收到所述第一消息或者所述第二消息的情况下,执行下一条指令。
在一种可能的实现方式中,所述第二设备为与所述第一设备通过网络连接的远程设备;所述存储控制器为远程直接存储器访问RDMA控制器;所述向所述第二设备发送第一操作指令,包括:通过所述存储控制器和所述网络连接向所述第二设备发送所述第一操作指令。
在一种可能的实现方式中,所述第二设备为与所述第一设备通过总线连接的外部设备;所述存储控制器为直接存储器访问DMA控制器;所述向所述第二设备发送第一操作指令,包括:通过所述存储控制器和所述总线连接向所述第二设备发送所述第一操作指令。
在一种可能的实现方式中,多个设备的存储空间被映射到所述第一设备的MMIO地址空间中;所述第二设备为所述多个设备中的一个;所述方法还包括:通过所述存储控制器,根据所述目标MMIO地址和映射关系,确定所述第一指令对应的所述第二设备。
在一种可能的实现方式中,所述第一设备还包括内存管理单元;所述通过所述处理器,向所述存储控制器发送第一指令,包括:通过所述处理器,向所述内存管理单元发送第一数据包,所述第一数据包包括所述第一指令,所述第一数据包携带有虚拟地址;通过所述内存管理单元,接收所述第一数据包,并确定所述虚拟地址对应的物理地址,所述物理地址为所述MMIO地址空间内的一个MMIO地址,所述物理地址用于指示所述第一数据包为发送至所述存储控制器的数据包;通过所述内存管理单元,根据所述物理地址,向所述存储控制器发送所述第一数据包;所述通过所述存储控制器,接收所述第一指令,包括:通过所述存储控制器,接收所述第一数据包,获取所述第一数据包内的所述第一指令。
第三方面,本申请提供一种计算机设备,该计算机设备包括上述第一方面中任意一项所述的数据处理装置,用于实现上述第二方面中任意一项所述的数据处理方法流程。该计算机设备还可以包括存储器,存储器用于与处理器耦合,其保存终端必要的程序指令和数据。该终端还可以包括通信接口,用于该终端与其它设备或通信网络通信。
第四方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,该计算机程序被处理器执行时实现上述第二方面中任意一项所述的数据处理方法流程。
第五方面,本申请实施例提供了一种计算机程序,该计算机程序包括指令,当该计算机程序被计算机执行时,使得计算机可以执行上述第二方面中任意一项所述的数据处理方法流程。
第六方面,本本申请实施例提供了一种芯片系统,该芯片系统包括上述第一方面中任 意一项所述的数据处理装置,用于实现上述第二方面中任意一项所述的数据处理方法流程所涉及的功能。在一种可能的设计中,所述芯片系统还包括存储器,所述存储器,用于保存应用处理方法必要的程序指令和数据。该芯片系统,可以由芯片构成,也可以包含芯片和其他分立器件。
附图说明
图1为一种DMA/RDMA的系统架构示意图。
图2a为一种异步DMA数据传输的流程示意图。
图2b为另一种异步DMA数据传输的流程示意图。
图2c为又一种异步DMA数据传输的流程示意图。
图3为本申请实施例提供的一种数据处理装置的结构示意图。
图4a为本申请实施例提供的一种系统架构示意图。
图4b为本申请实施例提供的另一种数据处理装置的结构示意图。
图4c为本申请实施例提供的一种同步DMA数据传输的流程示意图。
图5a为本申请实施例提供的另一种系统架构示意图。
图5b为本申请实施例提供的又一种数据处理装置的结构示意图。
图5c为本申请实施例提供的另一种同步DMA数据传输的流程示意图。
图6为本申请实施例提供的一种数据处理方法的整体步骤示意图。
图7为本申请实施例提供的一种指令格式示意图。
图8为本申请实施例提供的另一种数据处理方法的整体步骤示意图。
图9为本申请实施例提供的又一种数据处理方法的整体步骤示意图。
图10为本申请实施例提供的又一种数据处理方法的整体步骤示意图。
图11为本申请实施例提供的一种数据处理方法的流程示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例进行描述。
本申请的说明书和权利要求书及所述附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
在本说明书中使用的术语“部件”、“模块”、“系统”等用于表示计算机相关的实体、硬件、固件、硬件和软件的组合、软件、或执行中的软件。例如,部件可以是但不限于,在处理器上运行的进程、处理器、对象、可执行文件、执行线程、程序和/或计算机。通过图示, 在计算设备上运行的应用和计算设备都可以是部件。一个或多个部件可驻留在进程和/或执行线程中,部件可位于一个计算机上和/或分布在2个或更多个计算机之间。此外,这些部件可从在上面存储有各种数据结构的各种计算机可读介质执行。部件可例如根据具有一个或多个数据分组(例如来自与本地系统、分布式系统和/或网络间的另一部件交互的二个部件的数据,例如通过信号与其它系统交互的互联网)的信号通过本地和/或远程进程来通信。
首先,对本申请中的部分用语进行解释说明,以便于本领域技术人员理解。
(1)内存映射输入/输出(memory-mapped input/output,MMIO),是外设部件互连标准(peripheral component interconnect,PCI)规范的一部分,I/O设备被放置在内存空间而不是I/O空间。从处理器的角度看,内存映射I/O后系统设备访问起来和内存一样。如此,访问基本输入输出系统(basic input output system,BIOS)和PCI设备等就可以使用读写内存一样的汇编指令完成,简化了程序设计的难度和接口的复杂性。
(2)外部设备,简称"外设",是指连在计算机主机以外的硬件设备。对数据和信息起着传输、转送和存储的作用,是计算机系统中的重要组成部分。由于外部设备种类繁多,有的设备兼有多种功能,到目前为止,很难对外部设备作出准确的分类。按照功能的不同,大致可以分为输入设备、显示设备、打印设备、外部存储器和网络设备五大类,具体比如可以包括硬盘、磁盘、磁带、光盘、U盘和网卡,等等。
(3)缺页故障(page fault),大多数使用虚拟存储器的系统都使用一种称为分页(paging)的技术,其中,虚拟地址空间划分成称为页(page)的单位,而相应的物理地址空间也被划分成称为页框(frame)的单位。页和页框的大小必须相同,页可以被映射到对应的页框。由于虚拟地址空间远远大于物理地址空间,因此并非每一个虚拟地址空间中的页都可以被映射到物理地址空间中对应的页框。如此,在程序执行过程中,若一条指令使用到的虚拟地址属于没有被映射的页,则内存管理单元(memory management unit,MMU)可以通知CPU发生一个缺页故障(page fault)。在这种情况下操作系统必须处理这个缺页故障,它必须从现有的页框中找到至少一个当前很少被使用的页框并把该页框内的数据写入外围存储器(该动作也被称之为页复制(page copy))中,例如上述的硬盘、磁盘等外设中,随后把需要引用的页映射到刚才释放的页框中(该动作也被称之为修改映射关系),最后重新执行该指令。
(4)直接存储器访问(direct memory access,DMA),是现今计算机系统的一个重要特征。DMA允许不同速度的硬件装置进行数据传输,而不需要依赖于CPU的大量中断负载。较为典型的,例如,通过DMA移动一个外部内存的区块到芯片内部更快的内存区,该传输动作本身是由DMA控制器来实行和完成,从而并没有让处理器工作拖延,反而处理器可以被重新排程去处理其他的工作。其中,一个完整的DMA传输过程可以经过DMA请求、DMA响应、DMA传输和DMA中断4个步骤。
DMA主要应用于以下两个方面。第一个方面,DMA可以应用于一些高速的I/O设备(其中,I/O设备一般可以分为字符设备(character device)(比如,键盘和显示器为一体的字符终端、打印机、扫描仪和鼠标等)、块设备(block device)(或者称之为外部存储器,比如上述的磁盘、磁带和光盘等)和网络通信设备(比如网卡、调制解调器等),此外,所有 的储存器也可以算是I/O设备,比如硬盘、软盘、光盘等。这些高速的I/O设备传输字节或字的速度非常快。对于这类高速的I/O设备,如果用输入输出指令或采用中断的方法来传输字节信息,会大量占用CPU的时间,同时也容易造成数据的丢失。而DMA方式能使I/O设备直接和存储器进行成批数据的快速传送。第二个方面,DMA可以应用于需要进行高速大批量数据传送的系统中,以提高数据的吞吐量。例如,DMA在磁盘存取、图像处理、高速数据采集系统、同步通信中的收/发信号等方面应用甚广。
(5)远程直接存储器访问(remote direct memory access,RDMA),是为了解决网络传输中服务器端数据处理的延迟而产生的。RDMA通过网络把资料直接传入计算机的存储区,将数据从一个系统快速移动到远程系统存储器中,而不对操作系统造成任何影响,这样就不需要用到多少计算机的处理功能,也即不会大量占用CPU。它消除了外部存储器复制和上下文切换的开销,因而能解放内存带宽和CPU周期用于改进应用系统性能。
请参阅图1,图1为一种DMA/RDMA的系统架构示意图。如图1所示,该计算机系统可以包括处理器,内存管理单元MMU,片上总线,动态随机存取存储器(dynamic random access memory,DRAM),设备内存管理单元(device_MMU),多个DMA控制器,多个RDMA控制器,以及与该多个DMA控制器和多个RDMA控制器分别连接的设备(device)。其中,片上总线可以与DRAM连接。其中,如图1所示,该处理器可以包括多个处理器核(core),每个处理器核都可以单独执行相应的任务。如图1所示,在该计算机系统中,可以通过DMA或者RDMA与设备(device)进行数据传输,例如可以通过DMA或者RDMA将该计算机系统的DRAM内的数据写入设备中,还可以通过DMA或者RDMA将设备中的数据写入该计算机系统的DRAM内,等等。如上所述,通过DMA/RDMA访问设备和传输数据无需处理器参与,处理器在该过程中可以执行其他的任务,从而使得计算机系统的效率大大提高,等等,此处不再进行赘述。
可以理解的是,上述涉及DMA/RDMA的计算机系统架构只是本申请实施例提供的一些示例性的实施方式,本申请实施例中的计算机系统架构,以及相应的处理器架构等包括但不仅限于以上实现方式。
为了便于理解本申请实施例,进一步分析并提出本申请所具体要解决的技术问题。在现有技术中,关于通过DMA提高数据传输效率,包括多种技术方案,以下示例性的列举如下常用的一种方案。
请参阅图2a,图2a为一种异步DMA数据传输的流程示意图。如图2a所示,以本地端设备(例如为电脑)向外部设备(例如图2a中的存储器(memory),比如具体可以为与电脑连接的硬盘和磁盘等)中写入数据为例,该异步DMA数据传输的过程可以包括如下步骤:
步骤S11,CPU将指令写入内存(例如为写入图2a中与片上总线连接的DRAM),具体可以为写入内存中的提交队列(submission queue,SQ)中。请一并参阅图2b,图2b为另一种异步DMA数据传输的流程示意图。步骤S11可以进一步参考图2b,如图2b所示,CPU在处理数据传输任务a 1时,可以先将该数据传输任务a 1相应的指令写入内存。
步骤S12,CPU向DMA的门铃(doorbell,DB)中写入数据,以通知DMA去内存的SQ队列中获取待执行的指令。步骤S12可以进一步参考图2b,如图2b所示,CPU在将该数据传输任务a 1相应的指令写入内存后,可以敲门铃至DMA,以通知DMA去内存中读取指令。需要说明的是,CPU在执行完这个过程之后,也即CPU在通知到DMA去SQ队列获取待执行的指令后,CPU将不再参与DMA后期的数据传输任务,此时CPU可以去执行其他任务,如此可以提高计算机整体的工作效率。
步骤S13,DMA基于CPU的通知,去内存的SQ队列中读取待执行的指令。步骤S13可以进一步参考图2b,如图2b所示,DMA基于CPU的敲门铃动作,去内存中读取数据传输任务a 1相应的数据。
步骤S14,DMA根据指令的内容执行相应的数据传输任务。如图2a所示,DMA可以直接通过片上总线访问本地端设备中的内存(例如为图2a中的DRAM),并读取其中与该指令对应的数据,然后DMA可以将该数据写入到外部设备中。可选地,该指令的执行可以为针对大批量数据的多次写入,等等。步骤S14可以进一步参考图2b,此处不再进行赘述。
步骤S15,DMA在指令执行完成后,向内存中的完成队列(completion queue,CQ)写入执行结果,并更新CQ的tail(尾)指针。
步骤S16,DMA产生中断报给CPU。步骤S16可以进一步参考图2b,此处不再进行赘述。
步骤S17,CPU通过读取指定通道CQ中的执行结果,更新SQ的Head(头)指针。可选地,步骤S17可以进一步参考图2b,如图2b所示,在累积了多个传输任务执行完成后(例如图2b所示,在数据传输任务a 1和a 2执行完成后),DMA可以产生中断上报至CPU,CPU在接收到该中断后,立即终止当前正在处理的工作,并保存当前工作相应的数据,然后再对上述数据传输任务a 1和a 2进行收尾处理,例如上述的读取指定通道CQ中的执行结果,并更新SQ的Head(头)指针,等等。至此,数据传输任务a 1和a 2才算完整的执行完成。
如上所述,在实际的数据传输(也即图2b中DMA侧所示的矩形a 1和a 2)开始前,CPU需要先将指令写入内存的队列中,然后再通过敲门铃的方式通知DMA从内存的队列中获取相应的指令。在实际的数据传输过程中,由DMA全权掌控数据的读取和写入,此时CPU可以去执行其他的任务。而在实际的数据传输结束后,DMA需要产生中断报给CPU,CPU在接收到中断后,需要立即停止当前正在执行的任务,而去内存中读取该指令的执行结果,等等,从而完成一次完整的异步DMA数据传输。
该方案的缺点:
如上所述,该方案中CPU并不是直接发送指令至DMA,而是先将指令写入内存的队列中,然后再通过敲门铃的方式通知DMA从内存的队列中获取相应的指令。如此一来就会涉及写DMA指令到内存,敲门铃到DMA等等复杂的过程。此外,请一并参阅图2c,图2c为又一种异步DMA数据传输的流程示意图。如图2c所示,当CPU需要同时处理多个用户(例如图2c中的用户a和用户b等,该用户a和用户b等可以为虚拟用户)的数据 传输任务时,例如图2c中的数据传输任务a 2和b 1,在写完指令进行敲门铃的过程中,双方会涉及到抢锁,只有抢锁成功的一方才能敲门铃至DMA。如图2c所示,数据传输任务a 2抢锁成功,先敲门铃至DMA,而数据传输任务b 1抢锁失败,则只能等对方敲门铃完成后,才能接着抢锁再敲门铃至DMA。显然,如图2c所示,抢锁会消耗较多的时间,原本若数据传输任务a 2和b 1同时将指令写入内存,则可以同时进行敲门铃和数据传输,但是由于抢锁机制的存在,抢锁失败的一方只能停止动作,等待对方敲门铃完成,如此一来,大大占用了CPU的时间,降低了数据传输的整体速率。在一些场景中,抢锁时间可能会接近3us,甚至更多。另外,在DMA完成数据搬移后,需要通过中断通知CPU,这其中的CPU中断开销(也即图2c所示的上下文切换以及中断处理程序所需消耗的时间)可能达到us量级。如此,相比于高速I/O设备几个us的传输延迟而言,DMA与CPU的交互延迟在DMA总延迟中占到了50%,甚至更高,这极大程度上限制了DMA的传输速率,无法满足现今对大批量数据快速搬移的需求。
此外,上述异步DMA方案不支持对网络节点中其他设备(例如为与本地端设备通过网络连接的远程设备)的直接访问。往往需要通过一系列指令才能访问网络节点中其他设备,并与之完成数据传输。
综上,上述异步DMA方案虽然可以有效提升设备之间数据的传输速率,并减少对CPU的占用,提高整体的工作效率。但是,由于该异步DMA方案中CPU与DMA之间存在较多的交互,且交互延迟较高,极大的限制了DMA整体的数据传输速率。如此,在DMA已经实际可以进行快速的数据传输的情况下,该数据传输前以及数据传输后存在的与CPU之间较长时间的交互延迟,使得DMA整体的数据传输速率始终无法进一步得到提升,从而无法满足在高速I/O时代对大批量数据进行快速搬移的需求。
因此,为了解决当前数据传输技术中不满足实际业务需求的问题,本申请实施例实际要解决的技术问题包括如下方面:
一方面,就本地端设备以及与其连接的外部设备之间的数据传输问题:基于同步DMA的思想,通过MMIO地址映射,CPU直接向DMA发送指令,从而减少DMA与CPU之间的交互延迟,提升本地端设备与外部设备之间的数据传输速率。
另一方面,相应的,就本地端设备以及与其连接的远程设备(例如可以与本地端设备通过网络连接的服务器等等)之间的数据传输问题:基于同步RDMA的思想,通过MMIO地址映射,CPU直接向RDMA发送指令,从而减少RDMA与CPU之间的交互延迟,提升本地端设备与远程设备之间的数据传输速率。
请参阅图3,图3为本申请实施例提供的一种数据处理装置的结构示意图。该数据处理装置10可以位于任意一个电子设备中,该电子设备例如可以智能穿戴设备、智能手机、平板电脑、笔记本电脑、台式电脑、服务器、个人数字助理、智能车载或智能家电等各类设备,等等,本申请实施例对此不作具体限定。该数据处理装置10具体可以是芯片或芯片组或搭载有芯片或者芯片组的电路板。该芯片或芯片组或搭载有芯片或芯片组的电路板可在必要的软件驱动下工作,等等,本申请实施例对此不作具体限定。此外,需要说明的是, 本申请实施例可应用于任何多条指令并行处理的芯片,设备或者装置,并且不限于其实现模式是硬件还是软件。
如图3所示,该数据处理装置10可以包括处理器101和存储控制器102。在设备之间进行数据传输的场景中,该数据处理装置10可以应用于本地端设备,例如上述的智能手机、平板电脑、笔记本电脑、台式电脑和服务器等电子设备。例如,当本地端设备在执行某一程序时,出现缺页故障,双倍数据率同步动态随机存取存储器(double data rate synchronous dynamic random access memory,DDR SDRAM)页面不够,需要将本地端设备内存中相应页框内的数据搬移至外部设备或者远程设备的情况下,则可以通过该数据处理装置10与外部设备(例如与该本地端设备通过总线(比如PCIE总线)连接的外部存储器,比如硬盘、磁盘、光盘和U盘,等等)或者远程设备(例如与该本地端设备通过网络连接的云端服务器,等等)之间进行快速、高效地数据传输。具体地,可以事先将外部设备或者远程设备的存储空间映射到本地端设备的MMIO地址空间,其中,外部设备或者远程设备的存储空间内的一个或者多个存储地址与该MMIO地址空间内的一个或者多个MMIO地址一一对应。然后,当存在数据传输需求时,本地端设备中的处理器101可以发送指令至存储控制器102,该指令中可以包括相应的MMIO地址。存储控制器102可以基于映射关系,确定与该MMIO地址对应的外部设备或者远程设备存储空间内实际的存储地址,进而基于该存储地址访问外部设备或者远程设备中相应的数据,从而快速、高效地完成本地端设备与外部设备或者远程设备之间的数据传输,等等。
下面,就本地端设备与其外部设备和远程设备之间进行数据传输这两种情况,对本申请涉及的一种数据处理装置以及相关的数据处理方法进行详细阐述。
在一种可能的实施方式中,以本地端设备与外部设备之间进行数据传输为例。请参阅图4a,图4a为本申请实施例提供的一种系统架构示意图。如图4a所示,该系统架构中可以包括第一设备100a和多个第二设备,具体可以包括第二设备200a、200b和200c。如图4a所示,该第一设备100a可以为本地端设备,具体可以为服务器、台式电脑、笔记本电脑、平板电脑、智能手机等设备,也可以为一个电脑主机,等等,本申请实施例对此不作具体限定。第二设备200a、200b和200c可以为该第一设备100a的外部设备,例如可以为图4a所示的XL-Flash(闪存)、高速存储卡(memory card)等高速存储设备,以及图4a所示的磁盘等外部存储器,还可以为网卡、硬盘、加速器和网络控制器等设备。第一设备100a可以通过总线与第二设备200a、200b和200c建立连接,具体可以通过PCIE总线,还可以通过PCI总线等等,本申请实施例对此不作具体限定。如上所述,第二设备200a、200b和200c的存储空间可以被映射到第一设备100a的MMIO地址空间。基于该MMIO地址映射,第一设备100a可以通过下发指令,并通过该总线连接直接访问第二设备200a、200b和200c内相应的存储地址,以读取第二设备200a、200b和200c内的数据或者将第一设备100a内的数据写入第二设备200a、200b和200c内相应的存储地址,等等,从而完成第一设备100a与第二设备200a、200b和200c之间的数据传输。
基于上述图4a所示的系统架构,本申请还提供了一种数据处理装置。请参阅图4b,图4b为本申请实施例提供的另一种数据处理装置的结构示意图。如图4b所示,该数据处理 装置20可以包括处理器101、内存管理单元103和DMA控制器104。其中,该数据处理装置20可以应用于上述图4a所示的第一设备100a中。其中,如图4b所示,处理器101可以包括多个处理器核,具体可以包括图4b所示的处理器核1011和处理器核1012等,其中,每个处理器核都可以单独执行相应的任务,并且每个处理器核都可以包括相应的指令调度单元和通用运算单元(图4b中未示出)等等,其中,指令调度单元可以用于完成指令的调度和分发,通用运算单元可以执行相应的计算任务,等等,此处不再进行详述。其中,该DMA控制器104也即可以为上述图3中的存储控制器102。如上所述,外部设备(第二设备200a、200b和200c)的存储空间可以被映射到本地端设备(第一设备100a)的MMIO地址空间中,其中,外部设备存储空间中的一个或者多个存储地址与该MMIO地址空间中相应的一个或者多个存储地址一一对应。由此,在有数据传输需求时,以上述的第一设备100a和第二设备200a为例,第一设备100a内的数据处理装置20中的任意一个处理器核可以向DMA控制器104发送指令,该指令中包括本次数据传输任务对应的第二设备200a被映射后的MMIO地址。DMA控制器104在接收到该指令后,可以基于映射关系确定该指令中的MMIO地址所对应的第二设备200a存储空间内实际的存储地址,然后,DMA控制器104可以基于该确定的存储地址,通过PCIE总线连接直接向第二设备200a发送相应的操作指令。第二设备200a在接收到该操作指令后,可以基于该操作指令,访问该操作指令包括的存储地址,然后读取该存储地址所对应的数据并通过PCIE总线连接发送至第一设备100a,或者将接收到的第一设备100a发送的数据写入该存储地址,等等。
请一并参见图4b,可选地,该数据处理装置20的处理器101中的任意一个处理器核在向DMA控制器104发送用于进行数据传输的指令时,具体可以通过数据包的形式将该指令发送至DMA控制器104,该数据包中可以包括上述相应的指令。可选地,以图4b中的处理器核1011为例,处理器核1011可以先将该包含指令的数据包发送至内存管理单元103,该数据包携带有相应的虚拟地址,内存管理单元103在接收到该数据包后,可以先将该数据包需要发往的虚拟地址映射成相应的物理地址。需要说明的是,该物理地址可以为MMIO地址空间内的一个MMIO地址,例如可以为外部设备(例如上述的第二设备200a)的存储空间映射到MMIO地址空间内的一个MMIO地址。该物理地址可以为事先标记或者划分的与该DMA控制器104相关联的地址,用于指示该数据包为直接发送至DMA控制器104的数据包,也即可以为指示本次数据传输任务为同步DMA传输。然后,内存管理单元103可以基于该物理地址,直接将该数据包发送至DMA控制器104。DMA控制器104在接收到该数据包后,可以获取其中的指令,并确定该指令中MMIO地址对应的外部设备存储空间内实际的存储地址,从而进行后续的数据传输,等等,此处不再进行赘述。由此,对比前述异步DMA数据传输中,处理器只能先将指令写入内存,然后再经历抢锁,最终通知DMA控制器去内存中获取相应的指令并执行的方案而言,本申请实施例中指令的下发无需经过内存,更加便捷、耗时短。综上,基于处理器101直接下发指令给DMA控制器104,从而可以快速、高效地实现本地端设备与外部设备之间的数据传输,大大减少了处理器与DMA之间的交互延迟,以及DMA获取指令的成本。
需要说明的是,本申请实施例中的DMA控制器104在上述进行数据传输的过程中,处理器101中相应的处理器核1011可以处于阻塞状态,阻塞状态下处理器核1011无法执 行其他的工作任务。也即处理器每发送一条指令,同步DMA控制器就实时执行一条指令,当该指令执行完成后同步DMA控制器可以立即发送响应消息通知处理器核1011,处理器核1011可以立即解除该阻塞状态,从而去执行其他任务。可以理解的是,对比前述涉及到队列的异步DMA方案,本申请实施例采取的是同步DMA方案,则相较于异步DMA方案中使用到的一般DMA控制器(或者称之为(normal)标准DMA控制器),本申请实施例中的DMA控制器104可以为同步DMA控制器。
请一并参阅图4c,图4c为本申请实施例提供的一种同步DMA数据传输的流程示意图。图4c中以将本地端设备中的数据写入外部设备(例如图4c中的存储器)为例。如图4c所示,例如,用户a的数据传输任务a 3和a 4由上述图4b中的处理器核1011执行,用户b的传输任务b 2由上述图4b中的处理器核1012执行。则如图4c所示,处理器核1011在DMA执行数据传输任务a3的过程中处于阻塞状态,DMA在完成将本地端设备的数据写入外部设备后可以立即向处理器和1011发送响应消息,处理器和1011可以基于该响应消息,确定当前指令已执行完成,继而可以去处理其他任务。传输任务b 2以及相应的处理器核1012同理,此处不再进行赘述。
进一步的,如图4c所示,由于在数据传输任务中处理器没有执行其他任务,因此,本申请不涉及前述异步DMA方案中的中断处理。如此,对比前述异步DMA方案中,DMA在指令执行完成后需要产生中断报给处理器,然后处理器再基于该中断,立即停止当前正在执行的其他工作,转而从内存中读取该指令的执行结果等等,以使得DMA完成一次完整的数据传输,从而导致处理器需要消耗大量的时间处理中断,在多个任务之间来回切换的方案而言,本申请实施例可以大大减少与外部设备进行数据传输时对处理器的占用,并进一步减少处理器与DMA之间的交互延迟,极大程度地提升本地端设备与外部设备之间数据传输的整体速率。
需要说明的是,相较于DMA如今已经能够实现的快速数据传输(一般情况下DMA参与的数据传输(或者称之为数据搬移),例如数据写入和数据读取等实际的数据传输过程往往仅需消耗2us,或者1us甚至更少的时间,具体可见图4c、图2b或者图2c中DMA侧的矩形,其长度明显较短),异步DMA方案中涉及的抢锁、处理器写入指令至内存、处理器敲门铃至DMA以通知DMA去内存中获取相应的指令,以及后续指令执行完成后DMA产生中断报给处理器等等步骤往往需要消耗4us,或者5us甚至更多的时间(具体可见图2b或者图2c中CPU侧上下文切换和中断处理程序相关的矩形,其长度明显较短)。由此,本申请实施例可以仅仅在数据传输的过程中占用处理器极少的时间,而不需要处理器做例如上述写指令至内存、抢锁、敲门铃至DMA,以及处理中断等等繁杂且占时较长的工作,从而进一步减少了数据传输任务对处理器的占用,进而大大提高了计算机的整体工作效率。具体请参阅图4c与图2b或者图2c之间,显然,图2b或者图2c中对处理器的占用时间(请见图2b或者图2c中CPU侧的矩形)明显长于图4c中对处理器的占用时间(请见图4c中CPU侧的矩形),此处不再进行赘述。
可以理解的是,上述涉及的系统架构,以及数据处理装置的结构只是本申请实施例提供的一些示例性的实施方式,本申请实施例中的系统架构,以及数据处理装置结构包括但不仅限于以上实现方式。在一些可能的实施方式中,该数据处理装置中还可以同时包括下 述图5b所示的RDMA控制器105,等等,本申请实施例对此不作具体限定。
在一种可能的实施方式中,以本地端设备与远程设备之间进行数据传输为例。请参阅图5a,图5a为本申请实施例提供的另一种系统架构示意图。如图5a所示,该系统架构中可以包括第一设备100b和多个第二设备,具体可以包括第二设备200d、200e和200f。如图5a所示,该第一设备100b可以为本地端设备,具体可以为服务器、台式电脑、笔记本电脑、平板电脑、智能手机等设备,可以为一个服务器,也可以为由多个服务器构成的服务器集群或者一个云计算服务中心,等等,本申请实施例对此不作具体限定。第二设备200d、200e和200f可以为该第一设备100b的远程设备,例如可以为服务器、台式电脑、笔记本电脑、平板电脑、智能手机等设备,可以为一个服务器,也可以为由多个服务器构成的服务器集群或者一个云计算服务中心,等等,本申请实施例对此不作具体限定。在一些可能的实施例中,该第一设备100b可以作为客户端,该第二设备200d、200e和200f可以作为其服务端。其中,如图5a所示,第一设备100b可以通过无线网络(例如无线保真(wireless-fidelity,WiFi)、蓝牙和移动网络等等)的方式与第二设备200d、200e和200f之间建立通信连接。如上所述,第二设备200d、200e和200f的存储空间可以被映射到第一设备100b的MMIO地址空间。基于该MMIO地址映射,第一设备100b可以通过下发指令,并通过该网络连接直接访问第二设备200d、200e和200f内相应的存储地址,以读取第二设备200d、200e和200f内的数据或者将第一设备100b内的数据写入第二设备200d、200e和200f内相应的存储地址,等等,从而完成第一设备100b与第二设备200d、200e和200f之间的数据传输。
基于上述图5a所示的系统架构,本申请还提供了一种数据处理装置。请参阅图5b,图5b为本申请实施例提供的又一种数据处理装置的结构示意图。如图5b所示,该数据处理装置30可以包括处理器101、内存管理单元103和RDMA控制器105。其中,该数据处理装置30可以应用于上述图5a所示的第一设备100b中。其中,如图5b所示,处理器101可以包括多个处理器核,具体可以包括图5b所示的处理器核1011和处理器核1012等,其中,每个处理器核都可以单独执行相应的任务,此处不再进行赘述,具体可参考上述图4b实施例中的相应描述。该RDMA控制器105也即可以为上述图3中的存储控制器102。如上所述,远程设备(第二设备200d、200e和200f)的存储空间可以被映射到本地端设备(第一设备100b)的MMIO地址空间中,其中,远程设备存储空间中的一个或者多个存储地址与该MMIO地址空间中相应的一个或者多个存储地址一一对应。由此,在有数据传输需求时,以上述的第一设备100b和第二设备200d为例,第一设备100b内的数据处理装置30中的任意一个处理器核可以向RDMA控制器105发送指令,该指令中包括本次数据传输任务对应的第二设备200d被映射后的MMIO地址。RDMA控制器105在接收到该指令后,可以基于映射关系确定该指令中的MMIO地址所对应的第二设备200a存储空间内实际的存储地址,然后,RDMA控制器105可以基于该确定的存储地址,通过网络连接直接向第二设备200a发送相应的操作指令。第二设备200a在接收到该操作指令后,可以基于该操作指令,访问该操作指令中包括的存储地址,然后读取该存储地址所对应的数据并通过网络连接发送至第一设备100b,或者将通过网络接收到的第一设备100b发送的数据写入该 存储地址,等等。可选地,该第二设备200d中也可以设置有相应的RDMA控制器,第二设备200d可以通过其中的RDMA控制器接收数据处理装置30内的RDMA控制器105发送的操作指令,并通过该其中的RDMA控制器基于该操作指令包括的存储地址进行相应的数据读取或者写入操作,等等。
请一并参见图5b,可选地,该数据处理装置30的处理器101中的任意一个处理器核在向RDMA控制器105发送用于进行数据传输的指令时,具体可以通过数据包的形式将该指令发送至RDMA控制器105,该数据包中可以包括上述相应的指令。可选地,以图5b中的处理器核1011为例,处理器核1011可以先将该包含指令的数据包发送至内存管理单元103,该数据包携带有相应的虚拟地址,内存管理单元103在接收到该数据包后,可以先将该数据包携带的虚拟地址映射成相应的物理地址。需要说明的是,该物理地址可以为MMIO地址空间内的一个MMIO地址,例如可以为远程设备(例如上述的第二设备200d)的存储空间映射到MMIO地址空间内的一个MMIO地址。该物理地址可以为事先标记或者划分的与该RDMA控制器105相关联的地址,用于指示该数据包为直接发送至RDMA控制器105的数据包,也即可以为指示本次数据传输任务为同步RDMA传输。然后,内存管理单元103可以基于该物理地址,直接将该数据包发送至RDMA控制器105。RDMA控制器105在接收到该数据包后,可以获取其中的指令,并确定该指令中MMIO地址对应的远程设备存储空间内实际的存储地址,从而进行后续的数据传输,等等,此处不再进行赘述。综上,本申请实施例可以基于处理器101直接下发指令给RDMA控制器105,从而可以快速、高效地实现本地端设备与远程设备之间的数据传输,大大减少了处理器与RDMA之间的交互延迟等。
需要说明的是,本申请实施例中的RDMA控制器105在上述进行数据传输的过程中,处理器101中相应的处理器核1011可以处于阻塞状态,此处不再进行赘述。可选地,此部分可以参考上述图4c对应实施例的描述,或者请参阅图5c,图5c为本申请实施例提供的另一种同步DMA数据传输的流程示意图。图5c中以将本地端设备中的数据写入远程设备为例(具体可以为写入远程设备的内存中,比如云端服务器的内存中,或者写入相应的存储器中)。显然,相应的,在本地端设备与远程设备之间进行数据传输的场景中,本申请实施例采取的是同步RDMA方案,则相较于与前述异步DMA方案相似的现有的异步RDMA方案中可能使用到的一般RDMA控制器(或者称之为标准RDMA控制器),本申请实施例中的该RDMA控制器105可以为同步RDMA控制器。如此,参考上述图4b中对同步DMA方案的相关描述,本申请实施例可以大大减少与远程设备进行数据传输时对处理器的占用,并进一步减少处理器与RDMA之间的交互延迟,极大程度地提升本地端设备与远程设备之间数据传输的整体速率。
相应的,参考上述图4b中描述的同步DMA方案,相较于RDMA如今已经能够实现的快速数据传输(一般情况下RDMA参与的数据传输,例如数据写入和数据读取等实际的数据传输过程往往仅需消耗2us,或者1us甚至更少的时间,具体可见图5c中DMA侧的矩形,其长度明显较短),异步RDMA方案中涉及的抢锁、处理器写入指令至内存、处理器敲门铃至RDMA以通知RDMA去内存中获取相应的指令,以及后续指令执行完成后RDMA产生中断报给处理器等等步骤往往需要消耗4us,或者5us甚至更多的时间。由此, 本申请实施例可以仅仅在数据传输的过程中占用处理器极少的时间(具体可见图5c中CPU侧的矩形,其长度明显较短),而不需要处理器做例如上述写指令至内存,敲门铃至RDMA,以及处理中断等等繁杂且占时较长的工作,从而进一步减少了数据传输任务对处理器的占用,进而大大提高了计算机的整体工作效率。
可以理解的是,上述涉及的系统架构,以及数据处理装置的结构只是本申请实施例提供的一些示例性的实施方式,本申请实施例中的系统架构,以及数据处理装置结构包括但不仅限于以上实现方式。在一些可能的实施方式中,该数据处理装置中还可以同时包括上述图4b所示的DMA控制器104,等等,本申请实施例对此不作具体限定。
基于上述图4a所述的系统架构,上述图4b所述的数据处理装置,以及上述图4c所述的同步DMA数据传输的流程,下面以数据流向为外部设备至本地端设备,也即以将外部设备中的数据写入本地端设备为例,对本申请实施例提供的一种数据处理装置以及相应的数据处理方法进行进一步的详细阐述。
请参阅图6,图6为本申请实施例提供的一种数据处理方法的整体步骤示意图。如图6所示,其中的client(客户端)可以为上述图4a中的第一设备100a,也即为本地端设备,其中的XL-Flash(闪存)可以为该客户端的外部设备,例如上述图4a中的第二设备200a、200b和200c等等。如图6所示,该客户端中可以包括上述图4b所示的数据处理装置20,具体可以包括一个或多个core(处理器核)、内存管理单元MMU和syn(同步)DMA控制器,等等。其中,客户端可以通过总线(例如为图6所示的PCIE总线)与XL-Flash建立连接。
如上所述,XL-Flash中的存储空间可以被映射到客户端的MMIO地址空间中。其中,XL-Flash存储空间中的N个存储地址与该MMIO地址空间中的N个MMIO地址一一对应。N为大于或者等于1的整数。可以理解的是,MMIO地址中实际不存储数据,只是XL-Flash存储空间中的存储地址所对应的一个映射。其映射关系可以如下表1所示:
表1
客户端的MMIO地址空间 XL-Flash的存储空间
MMIO地址A 存储地址A’
MMIO地址B 存储地址B’
MMIO地址C 存储地址C’
MMIO地址D 存储地址D’
…… ……
如上表1所示,XL-Flash中实际存储有相应数据的存储地址A’可以被映射成本地端设备的MMIO地址空间中的MMIO地址A;XL-Flash中实际存储有相应数据的存储地址B’可以被映射成本地端设备的MMIO地址空间中的MMIO地址B;XL-Flash中实际存储有相应数据的存储地址C’可以被映射成本地端设备的MMIO地址空间中的MMIO地址C; XL-Flash中实际存储有相应数据的存储地址D’可以被映射成本地端设备的MMIO地址空间中的MMIO地址D,等等,此处不再进行赘述。该表1可以存储在客户端本地,或者还可以同时存储在XL-Flash本地,等等,本申请实施例对此不作具体限定。
可选地,如图6所示,例如当客户端中内存存在空余空间,需要将外部设备(例如该XL-Flash)中的数据搬移至客户端中时,也即当该客户端需要读取XL-Flash中的数据,并将该数据写入客户端中时,客户端中的处理器核(或者为处理器)可以先向其内存管理单元发送相应的数据包(例如图6中的“data(数据包)={数据长度,源操作数地址,目的操作数地址}”)。其中,如图6所示,该数据包内包含有相应的用于与XL-Flash进行数据传输的指令。请参阅图7,图7为本申请实施例提供的一种指令格式示意图。如图7所示,该数据包中的指令可以包括len(数据长度)、src_addr(源操作数地址)和dst_addr(目的操作数地址)。可以理解的是,由于图6所示的数据传输为将XL-Flash中的数据写入客户端中,则该指令中的源操作数地址即为XL-Flash存储空间中的实际存储地址被映射后的MMIO地址(例如为上述表1中的MMIO地址A、MMIO地址B、MMIO地址C或者MMIO地址D,等等)。相应的,该指令中的目的操作数地址即为该客户端的存储空间中的某一存储地址。
可选地,如图6所示,一个数据包在被处理器核发送时往往可以携带有相应的虚拟地址(virtual address,VA)。如图6所示,内存管理单元在接收到该数据包后,可以将该虚拟地址映射成实际的物理地址(physical address,PA)。其中,该物理地址可以为MMIO地址空间内的一个MMIO地址,例如可以为该XL-Flash存储空间中的某一存储地址被映射后的MMIO地址。可选地,该物理地址可以为事先标记或者划分的与该同步DMA控制器相关联的地址,用于指示该数据包为直接发送至该同步DMA控制器的数据包,也即可以为指示本次数据传输任务为同步DMA传输。内存管理单元可以基于该物理地址,识别本次数据传输任务为同步DMA传输,从而直接将该数据包发送至同步DMA控制器。可选地,该数据包最终可以被写入该物理地址。显然,如上所述,本申请实施例与前述异步DMA方案有着显著的区别,前述异步DMA方案中,处理器核需要先将指令写入内存的队列中,然后再通知DMA控制器去内存中获取相应指令的方法。然而,本申请实施例中,处理器核可以通过向相应的MMIO地址中写入包含指令的数据包的方式,直接向同步DMA控制器下发指令,从而大大提高了指令下发的效率,并且极大程度上减少了数据处理任务对处理器的占用,大大减少了同步DMA控制器获取指令的成本以及处理器与同步DMA控制器之间的交互延迟,从而进一步提升了DMA数据传输的整体速率以及计算机整体的工作效率,等等。
可选地,同步DMA控制器在接收到该数据包后,可以解析其中的指令,并根据上述表1所示的映射关系,确定该指令中的MMIO地址(也即源操作数地址)所对应的XL-Flash存储空间中实际的存储地址。可选地,同步DMA控制器还可以基于该确定的存储地址生成相应的读操作指令,该读操作指令中可以包括该存储地址,然后,同步DMA控制器可以将该读操作指令通过PCIE总线连接发送至XL-Flash。XL-Flash可以基于该读操作指令,读取该存储地址对应的数据。
例如,若该指令内的源操作数地址为上述表1中的MMIO地址A,则该同步DMA控 制器可以根据上述表1所示的映射关系,确定该指令对应的数据传输对象为该XL-Flash,还可以进一步确定该MMIO地址A对应的XL-Flash存储空间内的存储地址A’。然后,同步DMA控制器可以基于该存储地址A’,生成与该指令对应的读操作指令,并通过如图6所示的PCIE总线连接将该读操作指令发送至XL-Flash。XL-Flash在接收到该读操作指令后,可以基于该读操作指令包括的该存储地址A’,读取该存储地址A’对应的数据。如此,即可以通过该确定的存储地址A’以及该PCIE总线连接直接访问XL-Flash,快速、高效地读取到对应的数据。
进一步的,XL-Flash可以将该读取到的数据通过该PCIE总线连接发送至客户端中的同步DMA控制器。如图6所示,该同步DMA控制器在接收到XL-Flash反馈的数据后,可以将该数据写入该指令中的目的操作数地址(例如图6中所示的“local_pa(本地端物理地址)wr data[](写数据)”)。
可选地,若除了图6所示的XL-Flash外,该客户端还连接有多个外部设备(比如相应的硬盘、磁盘、U盘和网卡等等),且该多个外部设备的存储空间均被映射到该客户端的MMIO地址空间,则同步DMA控制器还可以根据该MMIO地址以及映射关系,确定该MMIO地址对应的外部设备(例如为图6所示的XL-Flash),具体可以为确定与该外部设备传输的必要信息,然后将该读操作指令通过PCIE总线连接发送至对应的外部设备,从而保证数据传输的准确性和高效性。
可选地,当该同步DMA控制器接收到XL-Flash发送的基于该读操作指令读取到的数据,并将该数据成功写入该目的操作数地址后,同步DMA控制器还可以向处理器核发送第一消息,该第一消息可以用于指示该指令已执行成功。然后处理器核可以基于该第一消息,执行下一条指令(例如执行下一次数据传输,或者执行其他的数据处理任务等等),从而提高整体的数据处理效率。
可选地,考虑到将外部设备的数据搬移到本地端设备中时可能存在失败的情况,在本申请的一些实施例中还可以设置相应的超时检测机制。可选地,若外部设备(例如为图6所示的XL-Flash)在接收到相应的读操作指令后,在预设的时间范围内迟迟未反馈相应的数据至客户端中的同步DMA控制器,则同步DMA控制器可以再次向该XL-Flash发送读操作指令。进一步的,若在预设的次数范围内,多次重复发送该读操作指令后,XL-Flash仍然没有反馈相应的数据,则此时存储控制器可以向相应的处理器核发送第二消息。其中,该第二消息可以用于指示当前指令已执行失败,后续处理器可以基于该第二消息执行下一条指令。可选地,若同步DMA控制器在预设的时间范围内未接收到XL-Flash反馈的数据,则该同步DMA控制器也可以直接向处理器核发送该第二消息,而不进行读操作指令的重复发送,等等,本申请实施例对此不作具体限定。如此,可以使得同步DMA控制器以及处理器核不长时间消耗在一次数据传输中,进而提高数据传输的整体效率。可选地,若处理器核接收到的是指示指令已执行失败的第二消息,则还可以进一步对当前XL-Flash的设备状况,以及PCIE总线的连接情况等进行检查,并解决其中出现的问题等,进而可以保证后续数据传输任务的有效进行,等等。
基于上述图4a所述的系统架构,上述图4b所述的数据处理装置,以及上述图4c所述 的同步DMA数据传输的流程,下面以数据流向为本地端设备至外部设备,也即以将本地端设备中的数据写入外部设备为例,对本申请实施例提供的一种数据处理装置以及相应的数据处理方法进行进一步的详细阐述。
请参阅图8,图8为本申请实施例提供的另一种数据处理方法的整体步骤示意图。具体地,图8中的各部分可以参考上述图6实施例中的相应描述,此处不再进行赘述。可以理解的是,由于图8所示的数据传输为将客户端中的数据写入XL-Flash中,则该指令中的源操作数地址即为客户端的存储空间中的某一存储地址。相应的,该指令中的目的操作数地址即为XL-Flash存储空间中的实际存储地址被映射后的MMIO地址(例如为上述表1中的MMIO地址A、MMIO地址B、MMIO地址C或者MMIO地址D,等等)。
具体地,图8中的指令下发过程可以参考上述图6对应实施例中的相应描述,此处不再进行赘述。
可选地,同步DMA控制器在接收到该指令后,可以根据该指令中的源操作数地址读取客户端内相应的数据(例如图8中的“local_pa(本地端物理地址)rd data[](读数据)”),并且可以通过该PCIE总线连接将该数据发送至XL-Flash,相应的,XL-Flash接收该数据。可选地,同步DMA控制器在接收到该指令后,可以根据上述表1所示的映射关系,确定该指令中的MMIO地址(也即目的操作数地址)所对应的XL-Flash存储空间中实际的存储地址。可选地,同步DMA控制器还可以基于该确定的存储地址生成相应的写操作指令,该写操作指令中可以包括该存储地址,然后,同步DMA控制器可以将该写操作指令通过PCIE总线连接发送至XL-Flash。XL-Flash可以基于该写操作指令,将客户端发送的数据写入该存储地址。
例如,若该指令内的目的操作数地址为上述表1中的MMIO地址B,则该同步DMB控制器可以根据上述表1所示的映射关系,确定该指令对应的数据传输对象为该XL-Flash,还可以进一步确定该MMIO地址B对应的XL-Flash存储空间内的存储地址B’。然后,同步DMB控制器可以基于该存储地址B’,生成与该指令对应的写操作指令,并通过如图8所示的PCIE总线连接将该写操作指令发送至XL-Flash。XL-Flash在接收到该写操作指令后,可以基于该写操作指令包括的该存储地址B’,将客户端中的数据写入该存储地址B’。如此,即可以通过该确定的存储地址B’以及该PCIE总线连接直接访问XL-Flash,快速、高效地将客户端的数据写入其中。
关于图8的其他描述可以参考上述图6对应实施例的描述,此处不再进行赘述。
可选地,XL-Flash在将客户端发送的数据成功写入对应的存储地址后,可以通过该PCIE总线连接向客户端中的同步DMA控制器发送响应消息,同步DMA控制器可以基于该响应消息确认XL-Flash已完成数据写入。继而,该同步DMA控制器可以向处理器核发送第一消息,该第一消息可以用于指示当前指令以执行成功。处理器核可以基于该第一消息,执行下一条指令,从而提高整体的数据处理效率。
可选地,与上述图6中实施例相应的,考虑到将本地端设备的数据搬移到外部设备中时可能存在失败的情况,在本申请的一些实施例中还可以设置相应的超时检测机制。可选地,若外部设备(例如为图6所示的XL-Flash)在接收到相应的写操作指令后,在预设的时间范围内迟迟未反馈响应消息(也即可以认为该外部设备迟迟未将客户端中的数据成功 写入该外部设备中相应的存储地址),则同步DMA控制器可以再次向该XL-Flash发送写操作指令。进一步的,若在预设的次数范围内,多次重复发送该写操作指令后,XL-Flash仍然没有反馈响应消息,则此时存储控制器可以向相应的处理器核发送第二消息。其中,该第二消息可以用于指示当前指令已执行失败,后续处理器可以基于该第二消息执行下一条指令。可选地,若同步DMA控制器在预设的时间范围内未接收到XL-Flash的响应消息,则该同步DMA控制器也可以直接向处理器核发送该第二消息,而不进行写操作指令的重复发送,等等,本申请实施例对此不作具体限定。此处不再进行赘述。
基于上述图5a所述的系统架构,上述图5b所述的数据处理装置,以及上述图5c所述的同步RDMA数据传输的流程,下面以数据流向为远程设备至本地端设备,也即以将远程设备中的数据写入本地端设备为例,对本申请实施例提供的一种数据处理装置以及相应的数据处理方法进行进一步的详细阐述。
请参阅图9,图9为本申请实施例提供的又一种数据处理方法的整体步骤示意图。如图9所示,其中的client(客户端)可以为上述图5a中的第一设备100b,也即为本地端设备,其中的server(服务端)可以为该客户端的远程设备,例如上述图5a中的第二设备200d、200e和200f等等。如图9所示,该客户端中可以包括上述图5b所示的数据处理装置30,具体可以包括一个或多个core(处理器核)、内存管理单元MMU和syn(同步)DMA控制器,等等。如图9所示,客户端可以通过网络(例如为WIFI、移动网络和蓝牙等)与服务端建立连接。其中,服务端中可以包括normal(标准)RDMA和DRAM。
如上所述,服务端中的存储空间可以被映射到客户端的MMIO地址空间中。其中,服务端存储空间中的M个存储地址与该MMIO地址空间中的M个MMIO地址一一对应。M为大于或者等于1的整数。可以理解的是,MMIO地址中实际不存储数据,只是服务端存储空间中的存储地址所对应的一个映射。其映射关系可以如下表2所示:
表2
客户端的MMIO地址空间 服务端的存储空间
MMIO地址H 存储地址H’
MMIO地址I 存储地址I’
MMIO地址J 存储地址J’
MMIO地址K 存储地址K’
…… ……
如上表2所示,服务端中实际存储有相应数据的存储地址H’可以被映射成本地端设备的MMIO地址空间中的MMIO地址H;服务端中实际存储有相应数据的存储地址I’可以被映射成本地端设备的MMIO地址空间中的MMIO地址I;服务端中实际存储有相应数据的存储地址J’可以被映射成本地端设备的MMIO地址空间中的MMIO地址J;服务端中实际存储有相应数据的存储地址K’可以被映射成本地端设备的MMIO地址空间中的MMIO地 址K,等等,此处不再进行赘述。该表2可以存储在客户端本地,或者还可以同时存储在服务端本地,等等,本申请实施例对此不作具体限定。
可选地,如图9所示,客户端中的同步RDMA控制器接收到该数据包后,可以解析其中的指令,并根据上述表2所示的映射关系,确定该指令中的MMIO地址(也即源操作数地址)所对应的服务端存储空间中实际的存储地址。可选地,同步RDMA控制器还可以基于该确定的存储地址生成相应的读操作指令,该读操作指令中可以包括该存储地址,然后,同步RDMA控制器可以将该读操作指令通过网络连接发送至服务端。服务端可以基于该读操作指令,读取该存储地址对应的数据。
例如,若该指令内的源操作数地址为上述表2中的MMIO地址H,则该同步RDMA控制器可以根据上述表2所示的映射关系,确定该指令对应的数据传输对象为该服务端,还可以进一步确定该MMIO地址H对应的服务端存储空间内的存储地址H’。然后,同步RDMA控制器可以基于该存储地址H’,生成与该指令对应的读操作指令,并通过如图9所示的网络连接将该读操作指令发送至服务端中的标准DRAM控制器。如图9所示,服务端中的标准DRAM控制器在接收到该读操作指令后,可以基于该读操作指令包括的该存储地址H’,访问服务端中的DRAM,并读取该存储地址H’对应的数据。如此,即可以通过该确定的存储地址H’以及该网络连接直接访问服务端中的DRAM,快速、高效地读取到对应的数据。
进一步的,服务端中的标准DRAM控制器还可以将该读取到的数据通过该网络连接发送至客户端中的同步RDMA控制器。如图9所示,该同步RDMA控制器在接收到服务端反馈的数据后,可以将该数据写入该指令中的目的操作数地址(例如图9中所示的“local_pa(本地端物理地址)wr data[](写数据)”)。
可选地,与上述图6实施例相对应的,若除了图9所示的服务端外,该客户端还连接有多个远程设备(比如云服务中心内的多个服务器等),且该多个远程设备的存储空间均被映射到该客户端的MMIO地址空间中,则同步RDMA控制器还可以根据该MMIO地址,以及映射关系,确定该MMIO地址对应的远程设备(例如为图9所示的服务端),具体可以为确定与该远程设备传输的必要信息等,然后将该读操作指令通过网络连接发送至对应的远程设备,具体可以发送至对应的远程设备中的标准RDMA控制器,从而保证数据传输的准确性和高效性。
可选地,当该同步RDMA控制器接收到服务端发送的基于该读操作指令读取到的数据,并将该数据成功写入该目的操作数地址后,同步RDMA控制器还可以向处理器核发送第一消息,该第一消息可以用于指示该指令已执行成功。然后处理器核可以基于该第一消息,执行下一条指令(例如执行下一次数据传输,或者执行其他的数据处理任务等等),从而提高整体的数据处理效率。
可选地,与上述图6实施例相对应的,考虑到将远程设备的数据搬移到本地端设备中时可能存在失败的情况,在本申请的一些实施例中还可以设置相应的超时检测机制。可选地,若服务端在接收到相应的读操作指令后,在预设的时间范围内迟迟未反馈相应的数据至客户端中的同步RDMA控制器,则同步RDMA控制器可以再次向该服务端发送读操作指令。进一步的,若在预设的次数范围内,多次重复发送该读操作指令后,服务端仍然没 有反馈相应的数据,则此时存储控制器可以向相应的处理器核发送第二消息。其中,该第二消息可以用于指示当前指令已执行失败,后续处理器可以基于该第二消息执行下一条指令。可选地,可以参考上述图6对应实施例中的描述,此处不再进行赘述。如此,可以使得同步RDMA控制器以及处理器核不长时间消耗在一次数据传输中,进而提高数据传输的整体效率。可选地,若处理器核接收到的是指示指令已执行失败的第二消息,则还可以进一步对当前服务端的设备状况,以及网络连接情况等进行检查,并解决其中出现的问题等,进而可以保证后续数据传输任务的有效进行,等等。
可选地,图9中其他的相应描述可以参考上述图6对应实施例中的描述,此处不再进行赘述。
基于上述图5a所述的系统架构,上述图5b所述的数据处理装置,以及上述图5c所述的同步RDMA数据传输的流程,下面以数据流向为本地端设备至远程设备,也即以将本地端设备中的数据写入远程设备为例,对本申请实施例提供的一种数据处理装置以及相应的数据处理方法进行进一步的详细阐述。
请参阅图10,图10为本申请实施例提供的又一种数据处理方法的整体步骤示意图。图9中各部分的描述可以参考上述图9对应实施例中的描述,此处不再进行赘述。
可选地,如图9所示,客户端中的同步RDMA控制器在接收到该数据包后,可以解析其中的指令,根据该指令的源操作数地址读取客户端中相应的数据,并通过网络连接将该数据发送至服务端,具体可以发送至该服务端中的标准RDMA控制器。可选地,同步RDMA控制器可以根据上述表2所示的映射关系,确定该指令中的MMIO地址(也即目的操作数地址)所对应的服务端存储空间中实际的存储地址。可选地,同步RDMA控制器还可以基于该确定的存储地址生成相应的写操作指令,该写操作指令中可以包括该存储地址,然后,同步RDMA控制器可以将该写操作指令通过网络连接发送至服务端中的标准RDMA控制器。服务端中的标准RDMA控制器可以基于该写操作指令,将客户端中的数据写入服务端中相应的存储地址。从而实现快速、高效的将本地端设备中的数据写入远程设备中。
具体地,图10中的相应描述可以参考上述图7以及图9对应实施例中的描述,此处不再进行赘述。
综上,一方面,本申请实施例可以通过处理器直接向DMA或者RDMA发送指令,减少了数据传输前处理器与DMA或者RDMA的交互延迟,提升了DMA或者RDMA整体的数据传速率。并且,本申请实施例在DMA或者RDMA进行数据传输过程中,处理器处于阻塞状态,无法执行其他任务,因此只需在DMA或者RDMA指令执行完成后通过消息指示处理器当前指令已完成,则处理器可以立即解除该阻塞状态,去处理其他任务,或者向DMA或者RDMA发送下一条用于数据传输的指令,等等,从而避免了原本DMA或者RDMA指令执行完成后需要产生中断给处理器,处理器再处理中断所需消耗的大量时间。如此,本申请实施例又进一步减少了数据传输后处理器与DMA或者RDMA的交互延迟,从而进一步提升了DMA或者RDMA整体的数据传速率。
另一方面,本申请实施例仅仅在DMA或者RDMA数据传输的过程中占用处理器极少 的时间,而不需要处理器做例如前述写指令至内存,敲门铃至DMA或者RDMA,以及处理中断等等繁杂且占时较长的工作,从而进一步减少了数据传输任务对处理器的占用,进而大大提高了计算机的整体工作效率。
需要说明的是,本申请实施例旨在提供一种同步DMA/RDMA装置,以实现同步DMA/RDMA数据传输,提升设备之间的数据传输速率,本申请实施例可以应用于任何可能的数据传输场景,不仅仅限于上述的缺页故障等应用场景,以及本地端设备与外部设备或者远程设备之间进行数据传输的应用场景。还可以应用于其他的场景中,例如可以应用于需要在存储器(memory)和存储器之间进行大块数据搬移的场景中,等等,本申请实施例对此不作具体限定。
请参阅图11,图11为本申请实施例提供的一种数据处理方法的流程示意图,该数据处理方法应用于第一设备,所述第一设备包括处理器、存储控制器;其中,第二设备的存储空间被映射到所述第一设备的内存映射输入/输出MMIO地址空间中,所述第一设备的MMIO地址空间中的N个MMIO地址与所述第二设备的存储空间中的N个第一存储地址一一对应。且该数据处理方法适用于上述图3、图4b和图5b中的任意一种数据处理装置以及包含所述数据处理装置的设备(如手机、电脑、服务器等)。如图11所示,该方法可以包括以下步骤S1101-步骤S1102。
步骤S1101,通过处理器,向存储控制器发送第一指令,所述第一指令包括目标MMIO地址;所述目标MMIO地址为所述N个MMIO地址中的一个;N为大于或者等于1的整数。
步骤S1102,通过存储控制器,接收所述第一指令,并确定所述目标MMIO地址对应的第一存储地址;向所述第二设备发送第一操作指令;其中,所述第一操作指令与所述第一指令对应,且所述第一操作指令包括所述第一存储地址。
在一种可能的实现方式中,所述目标MMIO地址为所述第一指令中的源操作数地址或者目的操作数地址。
在一种可能的实现方式中,所述目标MMIO地址为所述源操作数地址;所述第一操作指令为读操作指令;所述方法还包括:
通过所述存储控制器,接收所述第二设备发送的数据;所述数据为所述第二设备基于所述第一操作指令读取的所述第一存储地址对应的数据;
通过所述存储控制器,将所述数据写入所述目的操作数地址,并向所述处理器发送第一消息;所述目的操作数地址为所述第一设备的存储空间中的M个第二存储地址中的一个;M为大于或者等于1的整数;所述第一消息用于指示所述第一指令已执行成功。
在一种可能的实现方式中,所述方法还包括:
若在预设的时间范围内未通过所述存储控制器接收到所述第二设备发送的所述数据,则通过所述存储控制器在预设的次数范围内向所述第二设备重新发送至少一次所述第一操作指令;
若在通过所述存储控制器重新发送至少一次所述第一操作指令后未接收到所述第二设 备发送的所述数据,则通过所述存储控制器向所述处理器发送第二消息,所述第二消息用于指示所述第一指令已执行失败。
在一种可能的实现方式中,所述方法还包括:通过所述处理器,在接收到所述第一消息或者所述第二消息的情况下,执行下一条指令。
在一种可能的实现方式中,所述目标MMIO地址为所述目的操作数地址;所述第一操作指令为写操作指令;所述方法还包括:
通过所述存储控制器,读取所述源操作数地址对应的数据,并将所述数据发送至第二设备;所述源操作数地址为所述第一设备的存储空间中的M个第二存储地址中的一个;M为大于或者等于1的整数;
通过所述存储控制器,接收所述第二设备发送的响应消息,并基于所述响应消息向所述处理器发送第一消息;所述响应消息为所述第二设备基于所述第一操作指令将所述数据写入所述第一存储地址后发送的消息;所述第一消息用于指示所述第一指令已执行成功。
在一种可能的实现方式中,所述方法还包括:
若在预设的时间范围内未通过所述存储控制器接收到所述第二设备发送的所述响应消息,则通过所述存储控制器在预设的次数范围内向所述第二设备重新发送至少一次所述第一操作指令;
若在通过所述存储控制器重新发送至少一次所述第一操作指令后未接收到所述第二设备发送的所述响应消息,则通过所述存储控制器向所述处理器发送第二消息;所述第二消息用于指示所述第一指令已执行失败。
在一种可能的实现方式中,所述方法还包括:
通过所述处理器,在接收到所述第一消息或者所述第二消息的情况下,执行下一条指令。
在一种可能的实现方式中,所述第二设备为与所述第一设备通过网络连接的远程设备;所述存储控制器为远程直接存储器访问RDMA控制器;所述向所述第二设备发送第一操作指令,包括:
通过所述存储控制器和所述网络连接向所述第二设备发送所述第一操作指令。
在一种可能的实现方式中,所述第二设备为与所述第一设备通过总线连接的外部设备;所述存储控制器为直接存储器访问DMA控制器;所述向所述第二设备发送第一操作指令,包括:
通过所述存储控制器和所述总线连接向所述第二设备发送所述第一操作指令。
在一种可能的实现方式中,多个设备的存储空间被映射到所述第一设备的MMIO地址空间中;所述第二设备为所述多个设备中的一个;所述方法还包括:
通过所述存储控制器,根据所述目标MMIO地址和映射关系,确定所述第一指令对应的所述第二设备。
在一种可能的实现方式中,所述第一设备还包括内存管理单元;所述通过所述处理器,向所述存储控制器发送第一指令,包括:
通过所述处理器,向所述内存管理单元发送第一数据包,所述第一数据包包括所述第一指令,所述第一数据包携带有虚拟地址;
通过所述内存管理单元,接收所述第一数据包,并确定所述虚拟地址对应的物理地址,所述物理地址为所述MMIO地址空间内的一个MMIO地址,所述物理地址用于指示所述第一数据包为发送至所述存储控制器的数据包;
通过所述内存管理单元,根据所述物理地址,向所述存储控制器发送所述第一数据包;
所述通过所述存储控制器,接收所述第一指令,包括:
通过所述存储控制器,接收所述第一数据包,获取所述第一数据包内的所述第一指令。
需要说明的是,本申请实施例中所描述的处理方法的具体流程,可参见上述图1-图10中所述的发明实施例中的相关描述,此处不再赘述。
本申请实施例还提供一种计算机可读存储介质,其中,该计算机可读存储介质可存储有程序,该程序被处理器执行时,使得所述处理器可以执行上述方法实施例中记载的任意一种的部分或全部步骤。
本申请实施例还提供一种计算机程序,该计算机程序包括指令,当该计算机程序被多核处理器执行时,使得所述处理器可以执行上述方法实施例中记载的任意一种的部分或全部步骤。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可能可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如上述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
上述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可 以为个人计算机、服务器或者网络设备等,具体可以是计算机设备中的处理器)执行本申请各个实施例上述方法的全部或部分步骤。其中,而前述的存储介质可包括:U盘、移动硬盘、磁碟、光盘、只读存储器(Read-Only Memory,缩写:ROM)或者随机存取存储器(Random Access Memory,缩写:RAM)等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

Claims (26)

  1. 一种数据处理装置,其特征在于,所述装置应用于第一设备,所述装置包括处理器、存储控制器;其中,第二设备的存储空间被映射到所述第一设备的内存映射输入/输出MMIO地址空间中,所述第一设备的MMIO地址空间中的N个MMIO地址与所述第二设备的存储空间中的N个第一存储地址一一对应;
    所述处理器,用于向所述存储控制器发送第一指令,所述第一指令包括目标MMIO地址;所述目标MMIO地址为所述N个MMIO地址中的一个;N为大于或者等于1的整数;
    所述存储控制器,用于接收所述第一指令,并确定所述目标MMIO地址对应的第一存储地址;向所述第二设备发送第一操作指令;其中,所述第一操作指令与所述第一指令对应,且所述第一操作指令包括所述第一存储地址。
  2. 根据权利要求1所述的装置,其特征在于,所述目标MMIO地址为所述第一指令中的源操作数地址或者目的操作数地址。
  3. 根据权利要求2所述的装置,其特征在于,所述目标MMIO地址为所述源操作数地址;所述第一操作指令为读操作指令;
    所述存储控制器,还用于接收所述第二设备发送的数据;所述数据为所述第二设备基于所述第一操作指令读取的所述第一存储地址对应的数据;
    所述存储控制器,还用于将所述数据写入所述目的操作数地址,并向所述处理器发送第一消息;所述目的操作数地址为所述第一设备的存储空间中的M个第二存储地址中的一个;M为大于或者等于1的整数;所述第一消息用于指示所述第一指令已执行成功。
  4. 根据权利要求3所述的装置,其特征在于,
    所述存储控制器,还用于若在预设的时间范围内未接收到所述第二设备发送的所述数据,则在预设的次数范围内向所述第二设备重新发送至少一次所述第一操作指令;
    所述存储控制器,还用于若在重新发送至少一次所述第一操作指令后未接收到所述第二设备发送的所述数据,则向所述处理器发送第二消息,所述第二消息用于指示所述第一指令已执行失败。
  5. 根据权利要求4所述的装置,其特征在于,
    所述处理器,还用于在接收到所述第一消息或者所述第二消息的情况下,执行下一条指令。
  6. 根据权利要求2所述的装置,其特征在于,所述目标MMIO地址为所述目的操作数地址;所述第一操作指令为写操作指令;
    所述存储控制器,还用于读取所述源操作数地址对应的数据,并将所述数据发送至第二设备;所述源操作数地址为所述第一设备的存储空间中的M个第二存储地址中的一个; M为大于或者等于1的整数;
    所述存储控制器,还用于接收所述第二设备发送的响应消息,并基于所述响应消息向所述处理器发送第一消息;所述响应消息为所述第二设备基于所述第一操作指令将所述数据写入所述第一存储地址后发送的消息;所述第一消息用于指示所述第一指令已执行成功。
  7. 根据权利要求6所述的装置,其特征在于,
    所述存储控制器,还用于若在预设的时间范围内未接收到所述第二设备发送的所述响应消息,则在预设的次数范围内向所述第二设备重新发送至少一次所述第一操作指令;
    所述存储控制器,还用于若在重新发送至少一次所述第一操作指令后未接收到所述第二设备发送的所述响应消息,则向所述处理器发送第二消息;所述第二消息用于指示所述第一指令已执行失败。
  8. 根据权利要求7所述的装置,其特征在于,
    所述处理器,还用于在接收到所述第一消息或者所述第二消息的情况下,执行下一条指令。
  9. 根据权利要求1-8任意一项所述的装置,其特征在于,所述第二设备为与所述第一设备通过网络连接的远程设备;所述存储控制器为远程直接存储器访问RDMA控制器;
    所述存储控制器,具体用于通过所述网络连接向所述第二设备发送所述第一操作指令。
  10. 根据权利要求1-8任意一项所述的装置,其特征在于,所述第二设备为与所述第一设备通过总线连接的外部设备;所述存储控制器为直接存储器访问DMA控制器;
    所述存储控制器,具体用于通过所述总线连接向所述第二设备发送所述第一操作指令。
  11. 根据权利要求1-10任意一项所述的装置,其特征在于,多个设备的存储空间被映射到所述第一设备的MMIO地址空间中;所述第二设备为所述多个设备中的一个;
    所述存储控制器,还用于根据所述目标MMIO地址和映射关系,确定所述第一指令对应的所述第二设备。
  12. 根据权利要求1-11任意一项所述的装置,其特征在于,所述装置还包括内存管理单元;
    所述处理器,具体用于向所述内存管理单元发送第一数据包,所述第一数据包包括所述第一指令,所述第一数据包携带有虚拟地址;
    所述内存管理单元,用于接收所述第一数据包,并确定所述虚拟地址对应的物理地址,所述物理地址为所述MMIO地址空间内的一个MMIO地址,所述物理地址用于指示所述第一数据包为发送至所述存储控制器的数据包;
    所述内存管理单元,还用于根据所述物理地址,向所述存储控制器发送所述第一数据包;
    所述存储控制器,具体用于接收所述第一数据包,获取所述第一数据包内的所述第一指令。
  13. 一种数据处理方法,其特征在于,所述方法应用于第一设备,所述第一设备包括处理器、存储控制器;其中,第二设备的存储空间被映射到所述第一设备的内存映射输入/输出MMIO地址空间中,所述第一设备的MMIO地址空间中的N个MMIO地址与所述第二设备的存储空间中的N个第一存储地址一一对应;所述方法包括:
    通过所述处理器,向所述存储控制器发送第一指令,所述第一指令包括目标MMIO地址;所述目标MMIO地址为所述N个MMIO地址中的一个;N为大于或者等于1的整数;
    通过所述存储控制器,接收所述第一指令,并确定所述目标MMIO地址对应的第一存储地址;向所述第二设备发送第一操作指令;其中,所述第一操作指令与所述第一指令对应,且所述第一操作指令包括所述第一存储地址。
  14. 根据权利要求13所述的方法,其特征在于,所述目标MMIO地址为所述第一指令中的源操作数地址或者目的操作数地址。
  15. 根据权利要求14所述的方法,其特征在于,所述目标MMIO地址为所述源操作数地址;所述第一操作指令为读操作指令;所述方法还包括:
    通过所述存储控制器,接收所述第二设备发送的数据;所述数据为所述第二设备基于所述第一操作指令读取的所述第一存储地址对应的数据;
    通过所述存储控制器,将所述数据写入所述目的操作数地址,并向所述处理器发送第一消息;所述目的操作数地址为所述第一设备的存储空间中的M个第二存储地址中的一个;M为大于或者等于1的整数;所述第一消息用于指示所述第一指令已执行成功。
  16. 根据权利要求15所述的方法,其特征在于,所述方法还包括:
    若在预设的时间范围内未通过所述存储控制器接收到所述第二设备发送的所述数据,则通过所述存储控制器在预设的次数范围内向所述第二设备重新发送至少一次所述第一操作指令;
    若在通过所述存储控制器重新发送至少一次所述第一操作指令后未接收到所述第二设备发送的所述数据,则通过所述存储控制器向所述处理器发送第二消息,所述第二消息用于指示所述第一指令已执行失败。
  17. 根据权利要求16所述的方法,其特征在于,所述方法还包括:
    通过所述处理器,在接收到所述第一消息或者所述第二消息的情况下,执行下一条指令。
  18. 根据权利要求14所述的方法,其特征在于,所述目标MMIO地址为所述目的操作数地址;所述第一操作指令为写操作指令;所述方法还包括:
    通过所述存储控制器,读取所述源操作数地址对应的数据,并将所述数据发送至第二设备;所述源操作数地址为所述第一设备的存储空间中的M个第二存储地址中的一个;M为大于或者等于1的整数;
    通过所述存储控制器,接收所述第二设备发送的响应消息,并基于所述响应消息向所述处理器发送第一消息;所述响应消息为所述第二设备基于所述第一操作指令将所述数据写入所述第一存储地址后发送的消息;所述第一消息用于指示所述第一指令已执行成功。
  19. 根据权利要求18所述的方法,其特征在于,所述方法还包括:
    若在预设的时间范围内未通过所述存储控制器接收到所述第二设备发送的所述响应消息,则通过所述存储控制器在预设的次数范围内向所述第二设备重新发送至少一次所述第一操作指令;
    若在通过所述存储控制器重新发送至少一次所述第一操作指令后未接收到所述第二设备发送的所述响应消息,则通过所述存储控制器向所述处理器发送第二消息;所述第二消息用于指示所述第一指令已执行失败。
  20. 根据权利要求19所述的方法,其特征在于,所述方法还包括:
    通过所述处理器,在接收到所述第一消息或者所述第二消息的情况下,执行下一条指令。
  21. 根据权利要求13-20任意一项所述的方法,其特征在于,所述第二设备为与所述第一设备通过网络连接的远程设备;所述存储控制器为远程直接存储器访问RDMA控制器;所述向所述第二设备发送第一操作指令,包括:
    通过所述存储控制器和所述网络连接向所述第二设备发送所述第一操作指令。
  22. 根据权利要求13-20任意一项所述的方法,其特征在于,所述第二设备为与所述第一设备通过总线连接的外部设备;所述存储控制器为直接存储器访问DMA控制器;所述向所述第二设备发送第一操作指令,包括:
    通过所述存储控制器和所述总线连接向所述第二设备发送所述第一操作指令。
  23. 根据权利要求13-22任意一项所述的方法,其特征在于,多个设备的存储空间被映射到所述第一设备的MMIO地址空间中;所述第二设备为所述多个设备中的一个;所述方法还包括:
    通过所述存储控制器,根据所述目标MMIO地址和映射关系,确定所述第一指令对应的所述第二设备。
  24. 根据权利要求13-23任意一项所述的方法,其特征在于,所述第一设备还包括内存管理单元;所述通过所述处理器,向所述存储控制器发送第一指令,包括:
    通过所述处理器,向所述内存管理单元发送第一数据包,所述第一数据包包括所述第 一指令,所述第一数据包携带有虚拟地址;
    通过所述内存管理单元,接收所述第一数据包,并确定所述虚拟地址对应的物理地址,所述物理地址为所述MMIO地址空间内的一个MMIO地址,所述物理地址用于指示所述第一数据包为发送至所述存储控制器的数据包;
    通过所述内存管理单元,根据所述物理地址,向所述存储控制器发送所述第一数据包;
    所述通过所述存储控制器,接收所述第一指令,包括:
    通过所述存储控制器,接收所述第一数据包,获取所述第一数据包内的所述第一指令。
  25. 一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,该计算机程序被处理器执行时实现上述权利要求12-22中任意一项所述的方法。
  26. 一种计算机程序,其特征在于,所述计算机可读程序包括指令,当所述计算机程序被处理器执行时,使得所述处理器执行如上述权利要求12-22中任意一项所述的方法。
PCT/CN2020/138049 2020-12-21 2020-12-21 一种数据处理装置、方法及相关设备 WO2022133656A1 (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
PCT/CN2020/138049 WO2022133656A1 (zh) 2020-12-21 2020-12-21 一种数据处理装置、方法及相关设备
EP20966237.8A EP4254207A4 (en) 2020-12-21 2020-12-21 DATA PROCESSING DEVICE AND METHOD AND ASSOCIATED DEVICE
CN202080107786.0A CN116601616A (zh) 2020-12-21 2020-12-21 一种数据处理装置、方法及相关设备
US18/338,055 US20230342086A1 (en) 2020-12-21 2023-06-20 Data processing apparatus and method, and related device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2020/138049 WO2022133656A1 (zh) 2020-12-21 2020-12-21 一种数据处理装置、方法及相关设备

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US18/338,055 Continuation US20230342086A1 (en) 2020-12-21 2023-06-20 Data processing apparatus and method, and related device

Publications (1)

Publication Number Publication Date
WO2022133656A1 true WO2022133656A1 (zh) 2022-06-30

Family

ID=82156918

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2020/138049 WO2022133656A1 (zh) 2020-12-21 2020-12-21 一种数据处理装置、方法及相关设备

Country Status (4)

Country Link
US (1) US20230342086A1 (zh)
EP (1) EP4254207A4 (zh)
CN (1) CN116601616A (zh)
WO (1) WO2022133656A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU225527U1 (ru) * 2024-01-11 2024-04-23 Общество с ограниченной ответственностью "Уралэнергосервис" Устройство межпроцессорного обмена данными с использованием общей оперативной памяти

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116804915B (zh) * 2023-08-28 2023-12-15 腾讯科技(深圳)有限公司 基于存储器的数据交互方法、处理器、设备以及介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050114623A1 (en) * 2003-11-25 2005-05-26 International Business Machines Corporation Memory mapped input/output emulation
CN101243421A (zh) * 2005-08-19 2008-08-13 国际商业机器公司 在处理器与外部设备之间传送指令和数据的系统和方法
CN103946828A (zh) * 2013-10-29 2014-07-23 华为技术有限公司 数据处理系统和数据处理的方法
US20190243571A1 (en) * 2019-04-12 2019-08-08 Intel Corporation Apparatus, system and method for offloading data transfer operations between source and destination storage devices to a hardware accelerator

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9015446B2 (en) * 2008-12-10 2015-04-21 Nvidia Corporation Chipset support for non-uniform memory access among heterogeneous processing units

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050114623A1 (en) * 2003-11-25 2005-05-26 International Business Machines Corporation Memory mapped input/output emulation
CN101243421A (zh) * 2005-08-19 2008-08-13 国际商业机器公司 在处理器与外部设备之间传送指令和数据的系统和方法
CN103946828A (zh) * 2013-10-29 2014-07-23 华为技术有限公司 数据处理系统和数据处理的方法
US20190243571A1 (en) * 2019-04-12 2019-08-08 Intel Corporation Apparatus, system and method for offloading data transfer operations between source and destination storage devices to a hardware accelerator

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See also references of EP4254207A4 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU225527U1 (ru) * 2024-01-11 2024-04-23 Общество с ограниченной ответственностью "Уралэнергосервис" Устройство межпроцессорного обмена данными с использованием общей оперативной памяти

Also Published As

Publication number Publication date
EP4254207A4 (en) 2024-01-10
CN116601616A (zh) 2023-08-15
EP4254207A1 (en) 2023-10-04
US20230342086A1 (en) 2023-10-26

Similar Documents

Publication Publication Date Title
WO2020001459A1 (zh) 数据处理方法、远程直接访存网卡和设备
WO2018076793A1 (zh) 一种NVMe数据读写方法及NVMe设备
US8949498B2 (en) Interrupt handling in a virtual machine environment
US8131814B1 (en) Dynamic pinning remote direct memory access
WO2023185035A1 (zh) 内存直接访问架构、系统、方法、电子设备和介质
US20110004732A1 (en) DMA in Distributed Shared Memory System
US20070041383A1 (en) Third party node initiated remote direct memory access
WO2021000717A1 (zh) 一种io处理的方法和装置
TW508522B (en) System input/output interface design for scaling
WO2020087927A1 (zh) 一种内存数据迁移的方法及装置
US11741039B2 (en) Peripheral component interconnect express device and method of operating the same
WO2019153702A1 (zh) 一种中断处理方法、装置及服务器
US10229084B2 (en) Synchronous input / output hardware acknowledgement of write completions
WO2023093418A1 (zh) 数据迁移方法、装置及电子设备
CN115934625B (zh) 一种用于远程直接内存访问的敲门铃方法、设备及介质
CN111209123A (zh) 一种本地存储io协议栈数据交互方法和装置
US20230342086A1 (en) Data processing apparatus and method, and related device
JP2002503847A (ja) 2次バスからのメッセージング・ユニットへのアクセス
WO2021213209A1 (zh) 数据处理方法及装置、异构系统
WO2022032990A1 (zh) 一种命令信息传输方法、系统、装置及可读存储介质
US10133691B2 (en) Synchronous input/output (I/O) cache line padding
US20060242258A1 (en) File sharing system, file sharing program, management server and client terminal
WO2023186143A1 (zh) 一种数据处理方法、主机及相关设备
WO2023104194A1 (zh) 一种业务处理方法及装置
CN114697194B (zh) 阻塞式事件通知方法及装置

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 20966237

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 202080107786.0

Country of ref document: CN

ENP Entry into the national phase

Ref document number: 2020966237

Country of ref document: EP

Effective date: 20230627

NENP Non-entry into the national phase

Ref country code: DE