CN110737608B - 一种数据操作方法、装置及系统 - Google Patents

一种数据操作方法、装置及系统 Download PDF

Info

Publication number
CN110737608B
CN110737608B CN201810717888.9A CN201810717888A CN110737608B CN 110737608 B CN110737608 B CN 110737608B CN 201810717888 A CN201810717888 A CN 201810717888A CN 110737608 B CN110737608 B CN 110737608B
Authority
CN
China
Prior art keywords
memory
data
host
address field
data operation
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
Application number
CN201810717888.9A
Other languages
English (en)
Other versions
CN110737608A (zh
Inventor
蒋佳立
龙欣
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding Ltd
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 Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201810717888.9A priority Critical patent/CN110737608B/zh
Publication of CN110737608A publication Critical patent/CN110737608A/zh
Application granted granted Critical
Publication of CN110737608B publication Critical patent/CN110737608B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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
    • 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/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本申请实施例提供了一种数据操作方法、装置及系统,该方法包括:判断数据操作请求中携带的目标地址域是否属于设备端对应的虚拟内存地址域,该虚拟内存地址域与主机端内存的物理内存地址域具有预设映射关系;若是,则根据该预设映射关系,确定与该目标地址域对应的物理内存地址域;根据确定出的物理内存地址域,对主机端内存进行数据操作。通过预先确定与主机端内存中分配给设备端直接进行数据操作的物理内存地址域具有一定映射关系的虚拟内存地址域,当数据操作请求中携带的地址域属于该虚拟内存地址域时,通过地址域转换确定出对应的物理内存地址域,从而实现直接对主机端内存进行数据操作,提高了数据传输效率,降低了数据交换延时。

Description

一种数据操作方法、装置及系统
技术领域
本申请涉及计算机领域,尤其涉及一种数据操作方法、装置及系统。
背景技术
目前,随着计算机快速处理大数据的需求日益剧增,由于现场可编程门阵列(Field Programmable Gate Array,FPGA)介于专用芯片和通用芯片之间,具有一定的可编程性,可同时进行数据并行和任务并行计算,在处理特定应用时有更加明显的效率,并且现场可编程门阵列FPGA还具有明显的性能功耗比优势。同时,基于开放运算语言(OpenComputing Language,OpenCL),利用软件高级语言和模型编程,开发周期可大幅缩短,为FPGA的应用发展提供了更为广阔的平台。因此,通过使用OpenCL框架开发的现场可编程门阵列FPGA来实现加速业务的应用越来越广泛。
当前,相关技术中提供了一种数据操作方法,该方法主要包括:首先,主机端将待处理数据存储至自身的主机端内存中,FPGA通过PCIE控制器将该待处理数据拷贝至FPGA自身的设备端内存中;然后,FPGA中的OpenCL内核从该设备端内存中读取该待处理数据,并对该数据进行相应的处理,得到对应的数据处理结果,再将得到的数据处理结果存储至该设备端内存中;最后,主机端通过PCIE总线从FPGA的设备端内存中获取该数据处理结果并存储至自身的主机端内存中。
由此可知,无论是主机端向FPGA传输待处理数据,还是FPGA向主机端传输得到的数据处理结果,即主机端与FPGA进行数据交换的过程中均需要从FPGA自身的设备端内存中读取数据或写入数据,即将设备端内存作为主机端与FPGA之间数据传输的中介,这样存在数据传输效率低、数据交换延时的问题,不利于FPGA快速、高效地将数据处理结果反馈至主机端。
发明内容
本申请实施例的目的是提供一种数据操作方法、装置及系统,通过预先确定与主机端内存中分配给设备端直接进行数据操作的物理内存地址域具有一定映射关系的虚拟内存地址域,当数据操作请求中携带的地址域属于该虚拟内存地址域时,通过地址域转换确定出对应的物理内存地址域,从而实现直接对主机端内存进行数据操作,这样无需将设备端内存作为主机端与设备端之间数据传输的中介,提高了数据传输效率,降低了数据交换延时。
为解决上述技术问题,本申请实施例是这样实现的:
本申请实施例提供了一种数据操作方法,所述方法包括:
判断数据操作请求中携带的目标地址域是否属于设备端对应的虚拟内存地址域,其中,所述虚拟内存地址域与主机端内存的物理内存地址域具有预设映射关系;
若是,则根据所述预设映射关系,确定与所述目标地址域对应的所述物理内存地址域;
根据确定出的所述物理内存地址域,对所述主机端内存进行数据操作。
本申请实施例提供了一种数据操作方法,所述方法包括:
在用于提供设备端进行数据操作的主机端内存中,创建用于存储数据的内存对象;
声明所述内存对象属于虚拟内存地址域,其中,所述虚拟内存地址域与所述主机端内存的物理内存地址域具有预设映射关系;
响应所述设备端基于所述预设映射关系在所述主机端内存中的数据操作。
本申请实施例提供了一种数据操作装置,所述装置包括:
总线互联模块,用于判断数据操作请求中携带的目标地址域是否属于设备端对应的虚拟内存地址域,其中,所述虚拟内存地址域与主机端内存的物理内存地址域具有预设映射关系;
域转换模块,用于当所述目标地址域属于所述虚拟内存地址域时,根据所述预设映射关系,确定与所述目标地址域对应的所述物理内存地址域;
控制模块,用于根据确定出的所述物理内存地址域,对所述主机端内存进行数据操作。
本申请实施例提供了一种数据操作装置,所述装置包括:
内存对象创建模块,用于在用于提供设备端进行数据操作的主机端内存中,创建用于存储数据的内存对象;
内存对象声明模块,用于声明所述内存对象属于虚拟内存地址域,其中,所述虚拟内存地址域与所述主机端内存的物理内存地址域具有预设映射关系;
数据操作响应模块,用于响应所述设备端基于所述预设映射关系在所述主机端内存中的数据操作。
本申请实施例提供了一种数据操作设备,包括:处理器;以及
被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器:
判断数据操作请求中携带的目标地址域是否属于设备端对应的虚拟内存地址域,其中,所述虚拟内存地址域与主机端内存的物理内存地址域具有预设映射关系;
若是,则根据所述预设映射关系,确定与所述目标地址域对应的所述物理内存地址域;
根据确定出的所述物理内存地址域,对所述主机端内存进行数据操作。
本申请实施例提供了一种数据操作设备,包括:处理器;以及
被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器:
在用于提供设备端进行数据操作的主机端内存中,创建用于存储数据的内存对象;
声明所述内存对象属于虚拟内存地址域,其中,所述虚拟内存地址域与所述主机端内存的物理内存地址域具有预设映射关系;
响应所述设备端基于所述预设映射关系在所述主机端内存中的数据操作。
本申请实施例提供了一种存储介质,用于存储计算机可执行指令,所述可执行指令在被执行时实现以下流程:
判断数据操作请求中携带的目标地址域是否属于设备端对应的虚拟内存地址域,其中,所述虚拟内存地址域与主机端内存的物理内存地址域具有预设映射关系;
若是,则根据所述预设映射关系,确定与所述目标地址域对应的所述物理内存地址域;
根据确定出的所述物理内存地址域,对所述主机端内存进行数据操作。
本申请实施例提供了一种存储介质,用于存储计算机可执行指令,所述可执行指令在被执行时实现以下流程:
在用于提供设备端进行数据操作的主机端内存中,创建用于存储数据的内存对象;
声明所述内存对象属于虚拟内存地址域,其中,所述虚拟内存地址域与所述主机端内存的物理内存地址域具有预设映射关系;
响应所述设备端基于所述预设映射关系在所述主机端内存中的数据操作。
本申请实施例中的数据操作方法、装置及系统,判断数据操作请求中携带的目标地址域是否属于设备端对应的虚拟内存地址域,该虚拟内存地址域与主机端内存的物理内存地址域具有预设映射关系;若是,则根据该预设映射关系,确定与该目标地址域对应的物理内存地址域;根据确定出的物理内存地址域,对主机端内存进行数据操作。通过预先确定与主机端内存中分配给设备端直接进行数据操作的物理内存地址域具有一定映射关系的虚拟内存地址域,当数据操作请求中携带的地址域属于该虚拟内存地址域时,通过地址域转换确定出对应的物理内存地址域,从而实现直接对主机端内存进行数据操作,这样无需将设备端内存作为主机端与设备端之间数据传输的中介,提高了数据传输效率,降低了数据交换延时。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的应用于设备端的数据操作方法的流程示意图;
图2为本申请实施例提供的数据操作方法中主机端与设备端的信息交互示意图;
图3为本申请实施例提供的数据操作方法中设备端的各模块之间信息交互示意图;
图4为本申请实施例提供的数据操作方法中主机端与设备端之间数据传输的实现原理示意图;
图5为本申请实施例提供的应用于主机端的数据操作方法的流程示意图;
图6为本申请实施例提供的设置于设备端中的数据操作装置的模块组成示意图;
图7为本申请实施例提供的设置于主机端的数据操作装置的模块组成示意图;
图8为本申请实施例提供的数据操作系统的结构示意图;
图9为本申请实施例提供的数据操作设备的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
本申请实施例提供了一种数据操作方法、装置及系统,通过预先确定与主机端内存中分配给设备端直接进行数据操作的物理内存地址域具有一定映射关系的虚拟内存地址域,当数据操作请求中携带的地址域属于该虚拟内存地址域时,通过地址域转换确定出对应的物理内存地址域,从而实现直接对主机端内存进行数据操作,这样无需将设备端内存作为主机端与设备端之间数据传输的中介,提高了数据传输效率,降低了数据交换延时。
其中,针对数据操作方法的一个具体应用场景,由主机端和至少一个设备端可以构成异构计算系统,该主机端与至少一个设备端之间通信连接,该主机端可以是在异构计算系统中具有串行运算能力的处理器,采用多指令流单数据流(Multiple InstructionSingle Data,MISD)的数据运算方式,而该设备端可以是在异构计算系统中为主机端提供数据加速运算功能的设备,采用单指令流多数据流(Single Instruction Multiple Data,SIMD)的数据运算方式;并且,主机端内存是为主机端配置的物理内存,设备端内存是为设备端配置的物理内存,在具体实施时,上述设备端可以是基于OpenCL框架的现场可编程门阵列FPGA。
图1为本申请一实施例提供的数据操作方法的流程示意图,图1中的方法能够由基于OpenCL框架的设备端执行,其中,该设备端可以是具有并行运算能力的硬件、软件或硬件和软件的结合,例如,现场可编程门阵列FPGA、GPU等,如图1所示,该方法至少包括以下步骤:
S101,获取OpenCL内核的数据操作请求,其中,该数据操作请求中携带有目标地址域,具体的,可以通过设备端中的总线互联模块采集该数据操作请求;
S102,判断数据操作请求中的目标地址域是否属于设备端对应的虚拟内存地址域,其中,该虚拟内存地址域与主机端内存的物理内存地址域具有预设映射关系,该物理内存地址域为在主机端内存中分配出的用于提供设备端进行数据操作的内存的地址域;
具体的,上述数据操作请求可以是待处理数据的读取请求,也可以是针对待处理数据得到的处理结果数据的写入请求,设备端中的OpenCL内核开始工作后,基于预先写入的配置信息自动对设备端内存进行数据操作,此时,通过总线互联模块获取OpenCL内核的数据操作请求,总线互联模块在获取到该数据操作请求后,对该数据操作请求进行分析,确定该数据操作请求中携带的目标地址域是否属于设备端对应的虚拟内存地址域,如果确定结果为属于虚拟内存地址域,即OpenCL内核请求数据操作的是预先由主机端内存中的一部分物理内存映射得到的供设备端进行数据操作的虚拟内存,此时,需要将该数据操作请求路由到域转换模块。
若是,则执行S103,根据上述预设映射关系,确定与目标地址域对应的物理内存地址域;
具体的,设备端中的总线互联模块确定出目标地址域属于虚拟内存地址域后,将数据操作请求路由到域转换模块,域转换模块接收到该数据操作请求后,根据预先确定的虚拟内存地址域与主机端内存的物理内存地址域之间的映射关系,查找与该目标地址域对应的物理内存地址域,该查找出的物理内存地址域对应的主机端内存才是实际需要进行数据操作的内存,然后,将该查找出的物理内存地址域传输给数据操作控制器。
S104,根据确定出的物理内存地址域,对主机端内存进行数据操作;
具体的,基于确定出的物理内存地址域可以确定待处理数据对应的内存地址域,进而从主机端内存中读取该待处理数据,以便OpenCL内核按照预设数据处理要求对该待处理数据进行处理,并得到相应的处理结果数据;或者基于确定出的物理内存地址域可以确定处理结果数据对应的内存地址域,向主机端内存中写入针对待处理数据的处理结果数据,以便主机端直接从主机端内存中获取该处理结果数据。
本申请实施例中,通过预先确定与主机端内存中分配给设备端直接进行数据操作的物理内存地址域具有一定映射关系的虚拟内存地址域,OpenCL内核将设备端内存的地址域和该虚拟内存地址域同时作为可进行数据操作的地址域,OpenCL内核根据预先写入的配置信息开始工作时发出数据操作请求,当OpenCL内核需要进行数据操作的目标地址域属于该虚拟内存地址域时,先通过地址域转换确定对应的主机端内存的物理内存地址域,再基于确定出的物理内存地址域可以实现直接对主机端内存进行数据操作,这样无需将设备端内存作为主机端与设备端之间数据传输的中介,从而提高了数据传输效率,降低了数据交换延时。
进一步的,在处理OpenCL内核的数据操作请求之前,需要先进行内存地址域映射,基于此,在S102判断数据操作请求中的目标地址域是否属于设备端对应的虚拟内存地址域之前,还包括:
步骤一,获取从主机端内存中分配的用于提供设备端进行数据操作的物理内存地址域,具体的,主机端从自身的内存中分配一块预设内存大小的物理内存,并将该物理内存对应的地址域传输至设备端;
步骤二,根据设备端内存的地址范围,确定在该地址范围之外的虚拟内存地址域,具体的,由该地址范围确定设备端内存的起始地址和末尾地址,再基于该起始地址、末尾地址和用于提供设备端进行数据操作的物理内存的大小,确定虚拟内存地址域,该虚拟内存地址域的长度与用于提供设备端进行数据操作的物理内存地址域的长度相等;
步骤三,生成并存储获取到的物理内存地址域和确定出的虚拟内存地址域之间的预设映射关系,具体的,主机端内存中用于提供设备端进行数据操作的物理内存的起始地址对应于虚拟内存的起始地址,主机端内存中用于提供设备端进行数据操作的物理内存的末尾地址对应于虚拟内存的末尾地址,即建立获取到的物理内存地址域和确定出的虚拟内存地址域中各内存地址之间的对应关系。
具体的,上述步骤二根据设备端内存的地址范围,确定在该地址范围之外的虚拟内存地址域,具体包括:
确定设备端内存的地址范围的末尾地址,其中,该设备端内存的地址范围是指由为设备端配置的物理内存的起始地址到末尾地址;
根据确定出的设备端内存的末尾地址,生成与主机端内存中用于提供设备端进行数据操作的物理内存地址域长度相同的虚拟内存地址域,其中,该虚拟内存地址域的起始地址大于设备端内存的末尾地址。
进一步的,为了保证设备端可进行数据操作的设备端内存的地址域的连续性,不改变OpenCL内核的原有数据操作机制,很好地兼容OpenCL的原有框架,针对由主机端内存中一部分物理内存映射得到的虚拟内存,该虚拟内存的地址域可以是在设备端内存的地址域的基础上定义的,此时,设备端能够感知的可进行数据操作的地址域是连续的,前部分表示原有的物理内存的地址域,后部分表示新增的虚拟内存的地址域,即上述虚拟内存地址域的起始地址与设备端内存的地址范围的末尾地址是连续的。
具体的,由于设备端中的OpenCL内核能够感知自身的设备端内存,OpenCL内核开始工作后对该设备端内存进行数据操作,从该设备端内存中读取数据或写入数据,为了在不改变OpenCL内核的原有数据操作机制的前提下,又能够实现设备端直接对主机端内存中预留的物理内存进行数据操作,从而实现更加高效和灵活的主机端与设备端间的数据交换,并且很好地兼容OpenCL的原有框架,因此,在本申请实施例中,预先由该预留的物理内存映射得到内存大小相同的虚拟内存,并且将该虚拟内存的地址域与设备端内存的地址范围保持连续,即虚拟内存的起始地址与设备端内存的末尾地址是连续的,此时,设备端能够感知的设备端内存的地址域包括:自身设备端内存的地址域和虚拟内存的地址域,使得OpenCL内核在感知对设备端内存进行数据操作的情况下,如果数据操作请求中携带的地址域是虚拟内存地址域,就自动将数据操作转至主机端内存,从而实现设备端直接从主机端内存中读取数据或写入数据。
在一个具体实施例中,针对设备端为现场可编程门阵列FPGA的情况,考虑到FPGA的内存可以分为片上内存和片外内存,其中,片上内存存储空间比较小,主要作为FPGA在进行数据运算时使用的存储器,而片外内存存储空间可以比较大,可以作为FPGA与主机端之间进行数据传输的存储器,另外,针对片上内存,通常采用MOV指令进行数据操作,针对片外内存,通常采用MOVX指令进行数据操作。
在具体实施时,上述设备端内存可以是该片外内存,针对FPGA为主机端提供数据加速运算功能的过程,FPGA中的OpenCL内核采用MOVX指令请求对该片外内存进行数据操作,在本申请实施例中,OpenCL内核可以进行数据操作的内存的地址域包括:该片外内存的地址域和上述虚拟内存地址域。其中,FPGA的片外内存中的物理内存可以选用双倍速率同步动态随机存储器(Double Date Rate SDRAM,DDR SDRAM)。
以设备端为现场可编程门阵列FPGA为例,如图2所示,针对预先将主机端内存中的物理内存地址域映射到FPGA对应的虚拟内存地址域的过程,具体为:
S201,主机端从主机端内存中分配预设内存大小的共享物理内存,其中,该共享物理内存用于提供FPGA直接对其进行数据操作,即FPGA可以直接从共享物理内存中读取或写入数据;
S202,主机端向FPGA中的域转换模块中写入共享物理内存的地址域,具体的,向域转换模块中写入共享物理内存的起始地址和内存大小,或者向域转换模块中写入共享物理内存的起始地址和末尾地址;
S203,FPGA中的域转换模块获取主机端写入的共享物理内存的地址域;
S204,FPGA中的域转换模块获取到该共享物理内存的地址域后,根据设备端内存的地址范围,确定FPGA对应的虚拟内存地址域,其中,该共享物理内存的地址域的长度与虚拟内存地址域的长度相等,即虚拟内存的大小与共享物理内存的大小相同;
S205,FPGA中的域转换模块生成并存储共享物理内存的地址域和虚拟内存地址域的映射关系;
其中,确定主机端内存中预留给FPGA进行数据操作的物理内存的地址域与映射到FPGA的设备端内存的虚拟内存的地址域之间的对应关系,即主机端内存中共享物理内存的起始地址对应于FPGA对应的虚拟内存的起始地址,主机端内存中共享物理内存的末尾地址对应于FPGA对应的虚拟内存的末尾地址,这样当OpenCL内核请求对FPGA的虚拟内存进行数据操作时,直接将请求路由到与目标地址域对应的物理内存地址域所指示的主机端内存中的指定内存区域,从而实现直接从主机端内存中读取数据或写入数据。
进一步的,针对判断数据操作请求中的目标地址域是否属于设备端对应的虚拟内存地址域的过程,可以判断目标地址域是否在设备端内存的地址范围内,若否,则确定目标地址域属于设备端对应的虚拟内存地址域,考虑到如果虚拟内存地址域与设备端内存的地址范围不连续,当由于数据操作请求错误导致目标地址域落在虚拟内存地址域与设备端内存的地址范围之间,将导致判断结果不准确,因此,存在判断结果准确度低的问题;或者判断目标地址域是否在虚拟内存地址域的地址范围内,考虑到如果虚拟内存地址域获取错误,也存在判断结果准确低的问题。
进一步的,如果虚拟内存地址域的起始地址与设备端内存的地址范围的末尾地址是连续的,由于设备端内存的地址范围一般固定不变,将设备端内存的末尾地址作为参考,即直接将目标地址域的起始地址与设备端内存的地址范围的末尾地址直接比较即可,这样既能够提供判断速度,又能够提高判断准确度,基于此,上述S102判断数据操作请求中的目标地址域是否属于设备端对应的虚拟内存地址域,具体包括:
判断获取到的数据操作请求中携带的目标地址域的起始地址是否大于设备端内存的地址范围的末尾地址;
若是,则确定数据操作请求中携带的目标地址域属于设备端对应的虚拟内存地址域。
例如,设备端内存的大小为64G,主机端从主机端内存中分配给用于提供设备端进行数据操作的物理内存的大小为64G,那么,由用于提供设备端进行数据操作的物理内存映射得到的虚拟内存的大小也为64G,此时,OpenCL内核认为设备端内存的大小为127G,因此,OpenCL内核能够感知的可进行数据操作的地址域范围中的起始地址为0x00000000、末尾地址为0x08000000,其中设备端内存的地址域中的起始地址0x00000000、末尾地址为0x04000000,虚拟内存的地址域中的起始地址0x04000001、末尾地址为0x08000000。对应的,如果目标地址域属于0x04000001至0x08000000,则说明需要对主机端内存进行数据操作。
进一步的,在确定主机端内存中的物理内存地址域与设备端对应的虚拟内存地址域的预设映射关系之后,设备端通过总线互联模块监测OpenCL内核的数据操作请求,在监测到该数据操作请求后,判断该数据操作请求中携带的目标地址域是否属于该虚拟内存地址域,若属于,则通过域转换模块根据确定出的预设映射关系,确定与该目标地址域对应的物理内存地址域;再通过数据操作控制器根据确定出的物理内存地址域,对主机端内存进行数据操作,具体为:从主机端内存中读取待处理数据、或者向主机端内存中写入针对待处理数据得到的处理结果数据。
具体的,上述S104根据确定出的物理内存地址域,对主机端内存进行数据操作,具体包括:
根据确定出的物理内存地址域,对主机端内存中的内存对象进行数据操作,其中,该内存对象是主机端预先声明属于虚拟内存地址域的,该内存对象用于存储待处理数据或处理结果数据,具体的,确定出的物理内存地址域即为该内存对象对应的地址域,因此,通过确定出的物理内存地址域就能够从该内存对象中读取待处理数据或写入处理结果数据;
其中,内存对象是主机端在用于提供设备端进行数据操作的物理内存中划分具有一定物理内存地址域的内存块,同时,主机端根据上述预设映射关系和该内存对象的物理内存地址域,标记该内存对象对应的虚拟内存地址域,并向设备端写入携带有该虚拟内存地址域的配置信息,以触发设备端在主机端内存中进行数据操作。
针对主机端而言,主机端需要先在主机端内存中创建相应的内存对象,再响应设备端对该内存对象的数据操作,具体为:
首先,主机端在用于提供设备端进行数据操作的物理内存中(即预先分配给设备端进行数据操作的共享物理内存中),创建用于存储指定数据的内存对象,具体的,主机端在用于提供设备端进行数据操作的物理内存中划分具有一定物理内存地址域的内存对象;
在具体实施时,针对主机端向设备端请求数据处理的过程,主机端在共享物理内存中创建两个OpenCL标准中的内存对象,即一个原料内存对象和一个结果内存对象;
然后,主机端声明创建的内存对象属于虚拟内存地址域,具体的,主机端根据上述预设映射关系和该内存对象的物理内存地址域,标记该内存对象对应的虚拟内存地址域,并向设备端写入携带有该虚拟内存地址域的配置信息,以触发设备端在主机端内存中进行数据操作,此时,设备端中的OpenCL内核请求对内存对象进行数据操作时所携带的目标地址域属于虚拟内存地址域;
主机端将待处理数据存储至对应的内存对象中,即将待处理数据存储至原料内存对象中。
针对设备端而言,设备端需要从主机端内存中读取主机端存入对应的内存对象中的待处理数据,即上述数据操作请求为待处理数据获取请求;
对应的,上述根据确定出的物理内存地址域,对主机端内存中的内存对象进行数据操作,具体包括:
根据确定出的物理内存地址域,从主机端内存中的内存对象中获取待处理的数据,以使设备端中的OpenCL内核对待处理的数据进行数据处理得到相应的处理结果数据。
具体的,针对设备端向主机端反馈数据处理结果的情况,设备端直接将处理结果数据存储至主机端内存中与确定出的物理内存地址域对应的指定内存区域,此时,主机端直接从主机端内存中该指定内存区域获取该处理结果数据,即上述数据操作请求为数据处理结果存储请求;
对应的,上述根据确定出的物理内存地址域,对主机端内存中的内存对象进行数据操作,具体包括:
根据确定出的物理内存地址域,将针对待处理数据得到的处理结果数据存储至主机端内存中的内存对象中,以使主机端从主机端内存中获取针对待处理数据进行数据处理得到的目标数据。
在一个具体实施例中,仍以设备端为FPGA为例,FPGA的OpenCL内核开始工作后执行如下步骤,如图3所示,具体包括:
S301,FPGA中的OpenCL内核发出数据操作请求,具体的,FPGA的OpenCL内核基于预先写入的配置信息请求对存储有待处理数据的原料内存对象进行数据读取操作、或者对待写入处理结果数据的结果内存对象进行数据写入操作;
S302,FPGA中的总线互联模块监测到OpenCL内核的数据操作请求后,判断该数据操作请求中携带的目标地址域是否属于FPGA的虚拟内存地址域,其中,如果判断结果为目标地址域属于虚拟内存地址域,则说明OpenCL内核需要进行数据操作的是预先在主机端内存中创建的原料内存对象或者结果内存对象;
S303,FPGA中的总线互联模块在判断结果为是时,将该数据操作请求发送至域转换模块,具体的,如果判断结果为目标地址域属于虚拟内存地址域,总线互联模块将该数据操作请求路由到域转换模块;
S304,FPGA中的域转换模块根据预先建立的预设映射关系,确定与目标地址域对应的物理内存地址域,即该物理内存地址域为主机端内存中原料内存对象的地址域、或者结果内存对象的地址域;
S305,FPGA中的域转换模块将确定出的物理内存地址域发送至PCIE控制器,具体的,域转换模块确定出与数据操作请求对应的物理内存地址域后,将该物理内存地址域传输给PCIE控制器;
S306,FPGA中的PCIE控制器通过PCIE总线直接对主机端内存中与该物理内存地址域对应的内存对象进行数据操作,具体的,PCIE控制器通过PCIE总线直接读取存储于待处理数据的原料内存对象,或者PCIE控制器通过PCIE总线直接将处理结果数据写入结果内存对象;
最后,主机端响应PCIE控制器基于确定出的物理内存地址域在主机端内存中对内存对象的数据操作,具体的,响应PCIE控制器在主机端内存中读取原料内存对象中的待处理数据,或者响应PCIE控制器在主机端内存中向结果内存对象中写入针对待处理数据的处理结果数据。
进一步的,除了上述主机端向设备端传输待处理数据以及设备端向主机端反馈数据处理结果的情况,还可以将主机端内存作为设备端的扩展内存,从而实现设备端内存自动扩容,在设备端内存剩余空间比较小的情况下,充分利用主机端内存中闲置存储空间,从而保证设备端的高速数据处理需求,基于此,针对设备端向主机端内存中缓存数据的情况,即上述数据操作请求为数据缓存请求;
对应的,上述S104根据确定出的物理内存地址域,对主机端内存中的内存对象进行数据操作,具体包括:
根据确定出的物理内存地址域,将待缓存的数据存储至主机端内存中的内存对象中,以使主机端内存作为设备端的扩展内存,即设备端可以将自身所需的数据暂时缓存到主机端内存中,需要时再从主机端内存中读取出。
具体的,针对设备端向主机端内存中缓存数据的情况,设备端直接将待缓存的数据存储至主机端内存中与确定出的物理内存地址域对应的指定内存区域,后续,如果设备端需要使用该数据时,可以直接从主机端内存中该指定内存区域获取该数据。
进一步的,考虑到可能存在设备端内存不够用的情况,而此时OpenCL内核并不感知设备端内存的可用空间是否充足,仍会向设备端内存发起数据存储请求,如果继续向可用空间比较小的设备端内存中存储数据,将出现数据丢失的问题,基于此,上述S102判断数据操作请求中的目标地址域是否属于设备端对应的虚拟内存地址域,具体包括:
判断设备端内存的可用空间是否大于预设阈值,具体的,在监测到数据存储请求后,即使目标地址域位于物理内存地址域范围内,如果确定出可用空间小于或等于预设阈值,则说明物理内存的可用空间不足,此时确定目标地址域属于设备端对应的虚拟内存地址域,;
若否,则确定数据操作请求中携带的目标地址域属于设备端对应的虚拟内存地址域,具体的,在确定出设备端内存的可用空间不大于预设阈值时,总线互联模块将数据操作请求路由到域转换模块,以使域转换模块确定出对应的物理内存地址域,此时,可能在预先建立的预设映射关系中不存在该目标地址域,针对该情况,将预设物理内存地址域确定为对应的物理内存地址域,进而通过数据操作控制器根据确定出的物理内存地址域,将数据存储至主机端内存中。
在一个具体实施例中,仍以设备端为FPGA为例,如图4所示,给出了主机端与FPGA之间数据传输的实现原理示意图,具体为:
(1)主机端预先将主机端内存中一部分物理内存(即Host Memory Bank)映射到FPGA的设备端内存中的虚拟内存(即Virtual Memory Bank);
(2)FPGA中的OpenCL内核(即OpenCL kernel)发出数据获取请求;
(3)FPGA中的总线互联模块在监测到该数据获取请求后,判断该数据获取请求中携带的目标地址域是否属于FPGA的虚拟内存地址域;在确定出目标地址域属于虚拟内存地址域后,将该数据获取请求路由到地址域转换模块;
(4)FPGA中的地址域转换模块在接收到该数据获取请求后,根据预先存储的地址域映射关系,确定与该数据获取请求中携带的目标地址域对应的第一物理内存地址域,并将该确定出的第一物理内存地址域传输至PCIE控制器;
(5)FPGA中的PCIE控制器在接收到该第一物理内存地址域后,通过PCIE总线从主机端内存中读取待处理数据,以使OpenCL内核对该待处理数据进行相应的数据处理,并得到数据处理结果;
(6)FPGA中的OpenCL内核(即OpenCL kernel)发出结果存储请求;
(7)FPGA中的总线互联模块在监测到该结果存储请求后,判断该结果存储请求中携带的目标地址域是否属于FPGA的虚拟内存地址域;在确定出目标地址域属于虚拟内存地址域后,将该结果存储请求路由到地址域转换模块;
(4)FPGA中的地址域转换模块在接收到该结果存储请求后,根据预先存储的地址域映射关系,确定与该结果存储请求中携带的目标地址域对应的第二物理内存地址域,并将该确定出的第二物理内存地址域传输至PCIE控制器;
(5)FPGA中的PCIE控制器在接收到该第二物理内存地址域后,通过PCIE总线将数据处理结果写入主机端内存中,以使主机端从自身的主机端内存中获取针对待处理数据的数据处理结果。
本申请实施例中的数据操作方法,判断数据操作请求中携带的目标地址域是否属于设备端对应的虚拟内存地址域,该虚拟内存地址域与主机端内存的物理内存地址域具有预设映射关系;若是,则根据该预设映射关系,确定与该目标地址域对应的物理内存地址域;根据确定出的物理内存地址域,对主机端内存进行数据操作。通过预先确定与主机端内存中分配给设备端直接进行数据操作的物理内存地址域具有一定映射关系的虚拟内存地址域,当数据操作请求中携带的地址域属于该虚拟内存地址域时,通过地址域转换确定出对应的物理内存地址域,从而实现直接对主机端内存进行数据操作,这样无需将设备端内存作为主机端与设备端之间数据传输的中介,提高了数据传输效率,降低了数据交换延时。
对应上述图1至图4描述的数据操作方法,基于相同的技术构思,本申请另一实施例还提供了一种数据操作方法,图5为本申请实施例提供的数据操作方法的流程示意图,该方法可以由与基于OpenCL框架的设备端通信连接的主机端执行,如图5所示,该方法至少包括以下步骤:
S501,在用于提供设备端进行数据操作的主机端内存中,创建用于存储数据的内存对象;具体的,主机端在用于提供设备端进行数据操作的物理内存中划分具有一定物理内存地址域的内存对象;
在具体实施时,针对主机端向设备端请求数据处理的过程,主机端在共享物理内存中创建两个OpenCL标准中的内存对象,即一个原料内存对象和一个结果内存对象;
S502,声明创建的内存对象属于虚拟内存地址域;其中,该虚拟内存地址域与主机端内存中用于提供设备端进行数据操作的物理内存地址域具有预设映射关系;
具体的,主机端根据上述预设映射关系和该内存对象的物理内存地址域,标记该内存对象对应的虚拟内存地址域,并向设备端写入携带有该虚拟内存地址域的配置信息,以触发设备端在主机端内存中进行数据操作,此时,设备端中的OpenCL内核请求对内存对象进行数据操作时所携带的目标地址域属于虚拟内存地址域;
S503,响应设备端基于物理内存地址域与虚拟内存地址域间的预设映射关系在主机端内存中的数据操作;
具体的,设备端中的OpenCL内核开始工作后,发出数据操作请求,设备端中的总线互联模块监测到该数据操作请求后,判断该数据操作请求中携带的目标地址域是否属于设备端的虚拟内存地址域,若是,则设备端中的域转换模块根据预先存储的地址域映射关系,确定与目标地址域对应的物理内存地址域,设备端中的PCIE控制器根据确定出的物理内存地址域,对主机端内存执行数据操作,主机端响应该数据操作,即设备端从主机端内存中读取待处理数据、或者向主机端内存中写入针对待处理数据的处理结果数据。
在本申请实施例中,预先确定主机端内存中用于提供设备端进行数据操作的物理内存地址域与虚拟内存地址域之间的映射关系,并且声明用于存储指定数据的内存对象属于虚拟内存地址域,OpenCL内核将设备端内存的地址域和该虚拟内存地址域同时作为可进行数据操作的地址域,OpenCL内核根据预先写入的配置信息开始工作时发出数据操作请求,当OpenCL内核需要进行数据操作的目标地址域属于该虚拟内存地址域时,先通过地址域转换确定对应的主机端内存的物理内存地址域,再基于确定出的物理内存地址域可以实现直接对主机端内存进行数据操作,这样无需将设备端内存作为主机端与设备端之间数据传输的中介,从而提高了数据传输效率,降低了数据交换延时。
其中,在上述S501创建用于存储数据的内存对象之前,还包括:
从主机端内存的地址范围中,分配用于提供设备端进行数据操作的物理内存地址域;
将分配的物理内存地址域下发给设备端,以使设备端生成并存储该物理内存地址域与虚拟内存地址域之间的预设映射关系。
具体的,主机端从自身的内存中分配一块预设内存大小的物理内存,并将该物理内存对应的地址域传输至设备端,以使设备端根据设备端内存的地址范围,确定在该地址范围之外的虚拟内存地址域,以及建立分配的物理内存地址域与虚拟内存地址域之间的预设映射关系。
进一步的,为了保证设备端可进行数据操作的设备端内存的地址域的连续性,不改变OpenCL内核的原有数据操作机制,很好地兼容OpenCL的原有框架,针对由主机端内存中一部分物理内存映射得到的虚拟内存,该虚拟内存的地址域可以是在设备端内存的地址域的基础上定义的,此时,设备端能够感知的可进行数据操作的地址域是连续的,前部分表示原有的物理内存的地址域,后部分表示新增的虚拟内存的地址域,即上述虚拟内存地址域的起始地址与设备端内存的地址范围的末尾地址是连续的。
具体的,由于设备端中的OpenCL内核能够感知自身的设备端内存,OpenCL内核开始工作后对该设备端内存进行数据操作,从该设备端内存中读取数据或写入数据,为了在不改变OpenCL内核的原有数据操作机制的前提下,又能够实现设备端直接对主机端内存中预留的物理内存进行数据操作,从而实现更加高效和灵活的主机端与设备端间的数据交换,并且很好地兼容OpenCL的原有框架,因此,在本申请实施例中,预先由该预留的物理内存映射得到内存大小相同的虚拟内存,并且将该虚拟内存的地址域与设备端内存的地址范围保持连续,即虚拟内存的起始地址与设备端内存的末尾地址是连续的,此时,设备端能够感知的设备端内存的地址域包括:自身设备端内存的地址域和虚拟内存的地址域,使得OpenCL内核在感知对设备端内存进行数据操作的情况下,如果数据操作请求中携带的地址域是虚拟内存地址域,就自动将数据操作转至主机端内存,从而实现设备端直接从主机端内存中读取数据或写入数据。
其中,针对主机端向设备端传输待处理数据的情况,主机端可以直接将该处理数据存储至主机端内存中指定内存区域,此时,设备端需要从主机端的主机端内存中读取该待处理数据,即上述内存对象存储的数据为待处理数据;
对应的,上述S503响应设备端基于物理内存地址域与虚拟内存地址域间的预设映射关系在主机端内存中的数据操作,具体包括:
在主机端内存中,将待处理数据存储至对应的内存对象,具体的,将待处理数据存储至预先创建的原料内存对象中;
响应设备端基于预设映射关系从内存对象中获取待处理数据,具体的,响应设备端中的PCIE控制器从原料内存对象中读取待处理数据。
其中,针对设备端向主机端反馈数据处理结果的情况,设备端直接将处理结果数据存储至主机端内存中与确定出的物理内存地址域对应的指定内存区域,此时,主机端直接从主机端内存中该指定内存区域获取该处理结果数据,即上述数据操作请求为数据处理结果存储请求;
对应的,上述S503响应设备端基于物理内存地址域与虚拟内存地址域间的预设映射关系在主机端内存中的数据操作,具体包括:
响应设备端在主机端内存中基于预设映射关系将针对待处理数据得到的结果数据存储至对应的内存对象中,具体的,响应设备端中的PCIE控制器将数据处理得到的结果数据写入预先创建的内存对象中;
从存储有结果数据的内存对象中获取针对待处理数据进行数据处理得到的结果数据。
其中,除了上述主机端向设备端传输待处理数据以及设备端向主机端反馈数据处理结果的情况,还可以将主机端内存作为设备端的扩展内存,从而实现设备端的设备端内存自动扩容,在设备端的设备端内存剩余空间比较小的情况下,充分利用主机端内存中闲置存储空间,从而保证设备端的高速数据处理需求,基于此,针对设备端向主机端内存中缓存数据的情况,即上述内存对象存储的数据为待缓存数据;
对应的,上述S503响应设备端基于物理内存地址域与虚拟内存地址域间的预设映射关系在主机端内存中的数据操作,具体:
响应设备端在主机端内存中基于预设映射关系将待缓存数据存储至对应的内存对象中,即设备端可以将自身所需的数据暂时缓存到主机端内存中,需要时再从主机端内存中读取出。
本申请实施例中的数据操作方法,预先确定主机端内存中用于提供设备端进行数据操作的物理内存地址域与虚拟内存地址域之间的映射关系,并且声明用于存储指定数据的内存对象属于虚拟内存地址域,OpenCL内核将设备端内存的地址域和该虚拟内存地址域同时作为可进行数据操作的地址域,OpenCL内核根据预先写入的配置信息开始工作时发出数据操作请求,当OpenCL内核需要进行数据操作的目标地址域属于该虚拟内存地址域时,先通过地址域转换确定对应的主机端内存的物理内存地址域,再基于确定出的物理内存地址域可以实现直接对主机端内存进行数据操作,这样无需将设备端内存作为主机端与设备端之间数据传输的中介,从而提高了数据传输效率,降低了数据交换延时。
需要说明的是,本申请另一实施例与本申请一实施例基于同一发明构思,因此该实施例的具体实施可以参见前述数据操作方法的实施,重复之处不再赘述。
对应上述图1至图4描述的数据操作方法,基于相同的技术构思,本申请实施例还提供了一种数据操作装置,该装置设置于基于OpenCL框架的设备端中,图6为本申请实施例提供的设置于设备端中的数据操作装置的模块组成示意图,该装置用于执行图1至图4描述的数据操作方法,如图6所示,该装置包括:
OpenCL内核601,用于发出数据操作请求,以及对待处理数据进行相应的数据处理得到相应的处理结果数据;
总线互联模块602,用于判断数据操作请求中携带的目标地址域是否属于设备端对应的虚拟内存地址域,其中,所述虚拟内存地址域与主机端内存的物理内存地址域具有预设映射关系;
域转换模块603,用于当所述目标地址域属于所述虚拟内存地址域时,根据所述预设映射关系,确定与所述目标地址域对应的所述物理内存地址域;
控制模块604,用于根据确定出的所述物理内存地址域,对所述主机端内存进行数据操作。
本申请提供的实施例中,通过预先确定与主机端内存中分配给设备端直接进行数据操作的物理内存地址域具有一定映射关系的虚拟内存地址域,OpenCL内核将设备端内存的地址域和该虚拟内存地址域同时作为可进行数据操作的地址域,OpenCL内核根据预先写入的配置信息开始工作时发出数据操作请求,当OpenCL内核需要进行数据操作的目标地址域属于该虚拟内存地址域时,先通过地址域转换确定对应的主机端内存的物理内存地址域,再基于确定出的物理内存地址域可以实现直接对主机端内存进行数据操作,这样无需将设备端内存作为主机端与设备端之间数据传输的中介,从而提高了数据传输效率,降低了数据交换延时。
可选地,上述域转换模块603,还用于:
获取从主机端内存中分配的用于提供设备端进行数据操作的物理内存地址域;
根据设备端内存的地址范围,确定在所述地址范围之外的虚拟内存地址域;
生成并存储所述物理内存地址域和所述虚拟内存地址域之间的预设映射关系。
可选地,上述域转换模块603,还具体用于:
确定设备端内存的地址范围的末尾地址;
根据所述末尾地址,生成与所述物理内存地址域长度相同的虚拟内存地址域,其中,所述虚拟内存地址域的起始地址大于所述地址范围的所述末尾地址。
可选地,所述虚拟内存地址域的所述起始地址与所述地址范围的所述末尾地址是连续的。
可选地,上述总线互联模块602,具体用于:
判断数据操作请求中携带的目标地址域的起始地址是否大于所述地址范围的所述末尾地址;
若是,则确定所述数据操作请求中携带的目标地址域属于虚拟内存地址域。
可选地,所述设备端包括基于OpenCL框架的现场可编程门阵列FPGA,所述设备端内存为所述FPGA的片外内存。
可选地,上述控制模块604,具体用于:
根据确定出的所述物理内存地址域,对所述主机端内存中的内存对象进行数据操作,其中,所述内存对象是所述主机端预先声明属于所述虚拟内存地址域的。
可选地,所述数据操作请求为待处理数据获取请求;
上述控制模块604,进一步具体用于:
根据确定出的所述物理内存地址域,从所述主机端内存中的内存对象中获取待处理的数据,以使所述设备端中的OpenCL内核对所述待处理的数据进行数据处理得到相应的处理结果数据。
可选地,所述数据操作请求为数据处理结果存储请求;
上述控制模块604,进一步具体用于:
根据确定出的所述物理内存地址域,将针对待处理数据得到的处理结果数据存储至所述主机端内存中的内存对象中,以使主机端从所述主机端内存中获取所述处理结果数据。
可选地,所述数据操作请求为数据缓存请求;
上述控制模块604,进一步具体用于:
根据确定出的所述物理内存地址域,将待缓存的数据存储至所述主机端内存中的内存对象中,以使所述主机端内存作为所述设备端的扩展内存。
本申请实施例中的数据操作装置,判断数据操作请求中携带的目标地址域是否属于设备端对应的虚拟内存地址域,该虚拟内存地址域与主机端内存的物理内存地址域具有预设映射关系;若是,则根据该预设映射关系,确定与该目标地址域对应的物理内存地址域;根据确定出的物理内存地址域,对主机端内存进行数据操作。通过预先确定与主机端内存中分配给设备端直接进行数据操作的物理内存地址域具有一定映射关系的虚拟内存地址域,当数据操作请求中携带的地址域属于该虚拟内存地址域时,通过地址域转换确定出对应的物理内存地址域,从而实现直接对主机端内存进行数据操作,这样无需将设备端内存作为主机端与设备端之间数据传输的中介,提高了数据传输效率,降低了数据交换延时。
对应上述图5描述的数据操作方法,基于相同的技术构思,本申请实施例还提供了一种数据操作装置,该装置设置于与基于OpenCL框架的设备端通信连接的主机端中,图7为本申请实施例提供的设置于主机端中的数据操作装置的模块组成示意图,该装置用于执行图5描述的数据操作方法,如图7所示,该装置包括:
内存对象创建模块701,用于在用于提供设备端进行数据操作的主机端内存中,创建用于存储数据的内存对象;
内存对象声明模块702,用于声明所述内存对象属于虚拟内存地址域,其中,所述虚拟内存地址域与所述主机端内存的物理内存地址域具有预设映射关系;
数据操作响应模块703,用于响应所述设备端基于所述预设映射关系在所述主机端内存中的数据操作。
在本申请实施例中,预先确定主机端内存中用于提供设备端进行数据操作的物理内存地址域与虚拟内存地址域之间的映射关系,并且声明用于存储指定数据的内存对象属于虚拟内存地址域,OpenCL内核将设备端内存的地址域和该虚拟内存地址域同时作为可进行数据操作的地址域,OpenCL内核根据预先写入的配置信息开始工作时发出数据操作请求,当OpenCL内核需要进行数据操作的目标地址域属于该虚拟内存地址域时,先通过地址域转换确定对应的主机端内存的物理内存地址域,再基于确定出的物理内存地址域可以实现直接对主机端内存进行数据操作,这样无需将设备端内存作为主机端与设备端之间数据传输的中介,从而提高了数据传输效率,降低了数据交换延时。
可选地,上述装置还包括:
地址域写入模块,用于从主机端内存的地址范围中,分配用于提供设备端进行数据操作的物理内存地址域;将所述物理内存地址域下发给所述设备端,以使所述设备端生成并存储所述物理内存地址域与虚拟内存地址域之间的预设映射关系。
可选地,所述虚拟内存地址域是所述设备端根据设备端内存的地址范围确定的。
可选地,所述内存对象存储的数据为待处理数据;
上述数据操作响应模块703,具体用于:
在所述主机端内存中,将所述待处理数据存储至对应的所述内存对象;
响应所述设备端基于所述预设映射关系从所述内存对象中获取所述待处理数据。
可选地,所述内存对象存储的数据为针对待处理数据得到的结果数据;
上述数据操作响应模块703,具体用于:
响应所述设备端在所述主机端内存中基于所述预设映射关系将所述结果数据存储至对应的所述内存对象中;
从所述内存对象中获取所述结果数据。
可选地,所述内存对象存储的数据为待缓存数据;
上述数据操作响应模块703,具体用于:
响应所述设备端在所述主机端内存中基于所述预设映射关系将所述待缓存数据存储至对应的所述内存对象中。
本申请实施例中的数据操作装置,在本申请实施例中,预先确定主机端内存中用于提供设备端进行数据操作的物理内存地址域与虚拟内存地址域之间的映射关系,并且声明用于存储指定数据的内存对象属于虚拟内存地址域,OpenCL内核将设备端内存的地址域和该虚拟内存地址域同时作为可进行数据操作的地址域,OpenCL内核根据预先写入的配置信息开始工作时发出数据操作请求,当OpenCL内核需要进行数据操作的目标地址域属于该虚拟内存地址域时,先通过地址域转换确定对应的主机端内存的物理内存地址域,再基于确定出的物理内存地址域可以实现直接对主机端内存进行数据操作,这样无需将设备端内存作为主机端与设备端之间数据传输的中介,从而提高了数据传输效率,降低了数据交换延时。
进一步地,对应上述图6至图7所示的装置,基于相同的技术构思,本申请实施例还提供了一种数据操作系统,如图8所示,该数据操作系统具体包括:
基于OpenCL框架的设备端和与该设备端通信连接的主机端,在一个具体实施例中,设备端可以通过PCIE总线与主机端通信连接;
其中,所述主机端,用于在用于提供所述设备端进行数据操作的主机端内存中,创建用于存储数据的内存对象;声明所述内存对象属于虚拟内存地址域,其中,所述虚拟内存地址域与所述主机端内存的物理内存地址域具有预设映射关系;响应所述设备端基于所述预设映射关系在所述主机端内存中的数据操作;
所述设备端,用于判断数据操作请求中携带的目标地址域是否属于所述设备端对应的虚拟内存地址域;若是,则根据所述预设映射关系,确定与所述目标地址域对应的所述物理内存地址域;根据确定出的所述物理内存地址域,对所述主机端内存进行数据操作。
在本申请实施例提供的数据操作系统中,预先确定主机端内存中用于提供设备端进行数据操作的物理内存地址域与虚拟内存地址域之间的映射关系,并且声明用于存储指定数据的内存对象属于虚拟内存地址域,OpenCL内核将设备端内存的地址域和该虚拟内存地址域同时作为可进行数据操作的地址域,OpenCL内核根据预先写入的配置信息开始工作时发出数据操作请求,当OpenCL内核需要进行数据操作的目标地址域属于该虚拟内存地址域时,先通过地址域转换确定对应的主机端内存的物理内存地址域,再基于确定出的物理内存地址域可以实现直接对主机端内存进行数据操作,这样无需将设备端内存作为主机端与设备端之间数据传输的中介,从而提高了数据传输效率,降低了数据交换延时。
需要说明的是,本申请实施例提供的数据操作系统与本申请实施例提供的数据操作方法基于同一发明构思,因此该实施例的具体实施可以参见前述数据操作方法的实施,重复之处不再赘述。
进一步地,对应上述图1至图5所示的方法,基于相同的技术构思,本申请实施例还提供了一种数据操作设备,该设备用于执行上述的数据操作方法,如图9所示。
数据操作设备可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上的处理器901和存储器902,存储器902中可以存储有一个或一个以上存储应用程序或数据。其中,存储器902可以是短暂存储或持久存储。存储在存储器902的应用程序可以包括一个或一个以上模块(图示未示出),每个模块可以包括对数据操作设备中的一系列计算机可执行指令。更进一步地,处理器901可以设置为与存储器902通信,在数据操作设备上执行存储器902中的一系列计算机可执行指令。数据操作设备还可以包括一个或一个以上电源903,一个或一个以上有线或无线网络接口904,一个或一个以上输入输出接口905,一个或一个以上键盘906等。
在一个具体的实施例中,数据操作设备包括有存储器,以及一个或一个以上的程序,其中一个或者一个以上程序存储于存储器中,且一个或者一个以上程序可以包括一个或一个以上模块,且每个模块可以包括对数据操作设备中的一系列计算机可执行指令,且经配置以由一个或者一个以上处理器执行该一个或者一个以上程序包含用于进行以下计算机可执行指令:
判断数据操作请求中携带的目标地址域是否属于设备端对应的虚拟内存地址域,其中,所述虚拟内存地址域与主机端内存的物理内存地址域具有预设映射关系;
若是,则根据所述预设映射关系,确定与所述目标地址域对应的所述物理内存地址域;
根据确定出的所述物理内存地址域,对所述主机端内存进行数据操作。
本申请实施例中,通过预先确定与主机端内存中分配给设备端直接进行数据操作的物理内存地址域具有一定映射关系的虚拟内存地址域,OpenCL内核将设备端内存的地址域和该虚拟内存地址域同时作为可进行数据操作的地址域,OpenCL内核根据预先写入的配置信息开始工作时发出数据操作请求,当OpenCL内核需要进行数据操作的目标地址域属于该虚拟内存地址域时,先通过地址域转换确定对应的主机端内存的物理内存地址域,再基于确定出的物理内存地址域可以实现直接对主机端内存进行数据操作,这样无需将设备端内存作为主机端与设备端之间数据传输的中介,从而提高了数据传输效率,降低了数据交换延时。
可选地,计算机可执行指令在被执行时,还包含用于进行以下计算机可执行指令:
在判断数据操作请求中携带的目标地址域是否属于设备端对应的虚拟内存地址域之前,还包括:
获取从主机端内存中分配的用于提供设备端进行数据操作的物理内存地址域;
根据设备端内存的地址范围,确定在所述地址范围之外的虚拟内存地址域;
生成并存储所述物理内存地址域和所述虚拟内存地址域之间的预设映射关系。
可选地,计算机可执行指令在被执行时,所述根据设备端内存的地址范围,确定在所述地址范围之外的虚拟内存地址域,包括:
确定设备端内存的地址范围的末尾地址;
根据所述末尾地址,生成与所述物理内存地址域长度相同的虚拟内存地址域,其中,所述虚拟内存地址域的起始地址大于所述地址范围的所述末尾地址。
可选地,计算机可执行指令在被执行时,所述虚拟内存地址域的所述起始地址与所述地址范围的所述末尾地址是连续的。
可选地,计算机可执行指令在被执行时,所述判断数据操作请求中携带的目标地址域是否属于设备端对应的虚拟内存地址域,包括:
判断数据操作请求中携带的目标地址域的起始地址是否大于所述地址范围的所述末尾地址;
若是,则确定所述数据操作请求中携带的目标地址域属于虚拟内存地址域。
可选地,计算机可执行指令在被执行时,所述设备端包括基于OpenCL框架的现场可编程门阵列FPGA,所述设备端内存为所述FPGA的片外内存。
可选地,计算机可执行指令在被执行时,所述根据确定出的所述物理内存地址域,对所述主机端内存进行数据操作,包括:
根据确定出的所述物理内存地址域,对所述主机端内存中的内存对象进行数据操作,其中,所述内存对象是所述主机端预先声明属于所述虚拟内存地址域的。
可选地,计算机可执行指令在被执行时,所述数据操作请求为待处理数据获取请求;
所述根据确定出的所述物理内存地址域,对所述主机端内存中的内存对象进行数据操作,包括:
根据确定出的所述物理内存地址域,从所述主机端内存中的内存对象中获取待处理的数据,以使所述设备端中的OpenCL内核对所述待处理的数据进行数据处理得到相应的处理结果数据。
可选地,计算机可执行指令在被执行时,所述数据操作请求为数据处理结果存储请求;
所述根据确定出的所述物理内存地址域,对所述主机端内存中的内存对象进行数据操作,包括:
根据确定出的所述物理内存地址域,将针对待处理数据得到的处理结果数据存储至所述主机端内存中的内存对象中,以使主机端从所述主机端内存中获取所述处理结果数据。
可选地,计算机可执行指令在被执行时,所述数据操作请求为数据缓存请求;
所述根据确定出的所述物理内存地址域,对所述主机端内存中的内存对象进行数据操作,包括:
根据确定出的所述物理内存地址域,将待缓存的数据存储至所述主机端内存中的内存对象中,以使所述主机端内存作为所述设备端的扩展内存。
本申请实施例中的数据操作设备,判断数据操作请求中携带的目标地址域是否属于设备端对应的虚拟内存地址域,该虚拟内存地址域与主机端内存的物理内存地址域具有预设映射关系;若是,则根据该预设映射关系,确定与该目标地址域对应的物理内存地址域;根据确定出的物理内存地址域,对主机端内存进行数据操作。通过预先确定与主机端内存中分配给设备端直接进行数据操作的物理内存地址域具有一定映射关系的虚拟内存地址域,当数据操作请求中携带的地址域属于该虚拟内存地址域时,通过地址域转换确定出对应的物理内存地址域,从而实现直接对主机端内存进行数据操作,这样无需将设备端内存作为主机端与设备端之间数据传输的中介,提高了数据传输效率,降低了数据交换延时。
在另一个具体的实施例中,数据操作设备包括有存储器,以及一个或一个以上的程序,其中一个或者一个以上程序存储于存储器中,且一个或者一个以上程序可以包括一个或一个以上模块,且每个模块可以包括对数据操作设备中的一系列计算机可执行指令,且经配置以由一个或者一个以上处理器执行该一个或者一个以上程序包含用于进行以下计算机可执行指令:
在用于提供设备端进行数据操作的主机端内存中,创建用于存储数据的内存对象;
声明所述内存对象属于虚拟内存地址域,其中,所述虚拟内存地址域与所述主机端内存的物理内存地址域具有预设映射关系;
响应所述设备端基于所述预设映射关系在所述主机端内存中的数据操作。
在本申请实施例中,预先确定主机端内存中用于提供设备端进行数据操作的物理内存地址域与虚拟内存地址域之间的映射关系,并且声明用于存储指定数据的内存对象属于虚拟内存地址域,OpenCL内核将设备端内存的地址域和该虚拟内存地址域同时作为可进行数据操作的地址域,OpenCL内核根据预先写入的配置信息开始工作时发出数据操作请求,当OpenCL内核需要进行数据操作的目标地址域属于该虚拟内存地址域时,先通过地址域转换确定对应的主机端内存的物理内存地址域,再基于确定出的物理内存地址域可以实现直接对主机端内存进行数据操作,这样无需将设备端内存作为主机端与设备端之间数据传输的中介,从而提高了数据传输效率,降低了数据交换延时。
可选地,计算机可执行指令在被执行时,还包含用于进行以下计算机可执行指令:
在创建用于存储数据的内存对象之前,还包括:
从主机端内存的地址范围中,分配用于提供设备端进行数据操作的物理内存地址域;
将所述物理内存地址域下发给所述设备端,以使所述设备端生成并存储所述物理内存地址域与虚拟内存地址域之间的预设映射关系。
可选地,计算机可执行指令在被执行时,所述虚拟内存地址域是所述设备端根据设备端内存的地址范围确定的。
可选地,计算机可执行指令在被执行时,所述内存对象存储的数据为待处理数据;
所述响应所述设备端基于所述预设映射关系在所述主机端内存中的数据操作,包括:
在所述主机端内存中,将所述待处理数据存储至对应的所述内存对象;
响应所述设备端基于所述预设映射关系从所述内存对象中获取所述待处理数据。
可选地,计算机可执行指令在被执行时,所述内存对象存储的数据为针对待处理数据得到的结果数据;
所述响应所述设备端基于所述预设映射关系在所述主机端内存中的数据操作,包括:
响应所述设备端在所述主机端内存中基于所述预设映射关系将所述结果数据存储至对应的所述内存对象中;
从所述内存对象中获取所述结果数据。
可选地,计算机可执行指令在被执行时,所述内存对象存储的数据为待缓存数据;
所述响应所述设备端基于所述预设映射关系在所述主机端内存中的数据操作,包括:
响应所述设备端在所述主机端内存中基于所述预设映射关系将所述待缓存数据存储至对应的所述内存对象中。
本申请实施例中的数据操作设备,预先确定主机端内存中用于提供设备端进行数据操作的物理内存地址域与虚拟内存地址域之间的映射关系,并且声明用于存储指定数据的内存对象属于虚拟内存地址域,OpenCL内核将设备端内存的地址域和该虚拟内存地址域同时作为可进行数据操作的地址域,OpenCL内核根据预先写入的配置信息开始工作时发出数据操作请求,当OpenCL内核需要进行数据操作的目标地址域属于该虚拟内存地址域时,先通过地址域转换确定对应的主机端内存的物理内存地址域,再基于确定出的物理内存地址域可以实现直接对主机端内存进行数据操作,这样无需将设备端内存作为主机端与设备端之间数据传输的中介,从而提高了数据传输效率,降低了数据交换延时。
进一步地,对应上述图1至图5所示的方法,基于相同的技术构思,本申请实施例还提供了一种存储介质,用于存储计算机可执行指令,一种具体的实施例中,该存储介质可以为U盘、光盘、硬盘等,该存储介质存储的计算机可执行指令在被处理器执行时,能实现以下流程:
判断数据操作请求中携带的目标地址域是否属于设备端对应的虚拟内存地址域,其中,所述虚拟内存地址域与主机端内存的物理内存地址域具有预设映射关系;
若是,则根据所述预设映射关系,确定与所述目标地址域对应的所述物理内存地址域;
根据确定出的所述物理内存地址域,对所述主机端内存进行数据操作。
本申请提供的实施例中,通过预先确定与主机端内存中分配给设备端直接进行数据操作的物理内存地址域具有一定映射关系的虚拟内存地址域,OpenCL内核将设备端内存的地址域和该虚拟内存地址域同时作为可进行数据操作的地址域,OpenCL内核根据预先写入的配置信息开始工作时发出数据操作请求,当OpenCL内核需要进行数据操作的目标地址域属于该虚拟内存地址域时,先通过地址域转换确定对应的主机端内存的物理内存地址域,再基于确定出的物理内存地址域可以实现直接对主机端内存进行数据操作,这样无需将设备端内存作为主机端与设备端之间数据传输的中介,从而提高了数据传输效率,降低了数据交换延时。
可选地,该存储介质存储的计算机可执行指令在被处理器执行时,还实现以下流程:
在判断数据操作请求中携带的目标地址域是否属于设备端对应的虚拟内存地址域之前,还包括:
获取从主机端内存中分配的用于提供设备端进行数据操作的物理内存地址域;
根据设备端内存的地址范围,确定在所述地址范围之外的虚拟内存地址域;
生成并存储所述物理内存地址域和所述虚拟内存地址域之间的预设映射关系。
可选地,该存储介质存储的计算机可执行指令在被处理器执行时,所述根据设备端内存的地址范围,确定在所述地址范围之外的虚拟内存地址域,包括:
确定设备端内存的地址范围的末尾地址;
根据所述末尾地址,生成与所述物理内存地址域长度相同的虚拟内存地址域,其中,所述虚拟内存地址域的起始地址大于所述地址范围的所述末尾地址。
可选地,该存储介质存储的计算机可执行指令在被处理器执行时,所述虚拟内存地址域的所述起始地址与所述地址范围的所述末尾地址是连续的。
可选地,该存储介质存储的计算机可执行指令在被处理器执行时,所述判断数据操作请求中携带的目标地址域是否属于设备端对应的虚拟内存地址域,包括:
判断数据操作请求中携带的目标地址域的起始地址是否大于所述地址范围的所述末尾地址;
若是,则确定所述数据操作请求中携带的目标地址域属于虚拟内存地址域。
可选地,该存储介质存储的计算机可执行指令在被处理器执行时,所述设备端包括基于OpenCL框架的现场可编程门阵列FPGA,所述设备端内存为所述FPGA的片外内存。
可选地,该存储介质存储的计算机可执行指令在被处理器执行时,所述根据确定出的所述物理内存地址域,对所述主机端内存进行数据操作,包括:
根据确定出的所述物理内存地址域,对所述主机端内存中的内存对象进行数据操作,其中,所述内存对象是所述主机端预先声明属于所述虚拟内存地址域的。
可选地,该存储介质存储的计算机可执行指令在被处理器执行时,所述数据操作请求为待处理数据获取请求;
所述根据确定出的所述物理内存地址域,对所述主机端内存中的内存对象进行数据操作,包括:
根据确定出的所述物理内存地址域,从所述主机端内存中的内存对象中获取待处理的数据,以使所述设备端中的OpenCL内核对所述待处理的数据进行数据处理得到相应的处理结果数据。
可选地,该存储介质存储的计算机可执行指令在被处理器执行时,所述数据操作请求为数据处理结果存储请求;
所述根据确定出的所述物理内存地址域,对所述主机端内存中的内存对象进行数据操作,包括:
根据确定出的所述物理内存地址域,将针对待处理数据得到的处理结果数据存储至所述主机端内存中的内存对象中,以使主机端从所述主机端内存中获取所述处理结果数据。
可选地,该存储介质存储的计算机可执行指令在被处理器执行时,所述数据操作请求为数据缓存请求;
所述根据确定出的所述物理内存地址域,对所述主机端内存中的内存对象进行数据操作,包括:
根据确定出的所述物理内存地址域,将待缓存的数据存储至所述主机端内存中的内存对象中,以使所述主机端内存作为所述设备端的扩展内存。
本申请实施例中的存储介质存储的计算机可执行指令在被处理器执行时,判断数据操作请求中携带的目标地址域是否属于设备端对应的虚拟内存地址域,该虚拟内存地址域与主机端内存的物理内存地址域具有预设映射关系;若是,则根据该预设映射关系,确定与该目标地址域对应的物理内存地址域;根据确定出的物理内存地址域,对主机端内存进行数据操作。通过预先确定与主机端内存中分配给设备端直接进行数据操作的物理内存地址域具有一定映射关系的虚拟内存地址域,当数据操作请求中携带的地址域属于该虚拟内存地址域时,通过地址域转换确定出对应的物理内存地址域,从而实现直接对主机端内存进行数据操作,这样无需将设备端内存作为主机端与设备端之间数据传输的中介,提高了数据传输效率,降低了数据交换延时。
在另一个具体的实施例中,该存储介质可以为U盘、光盘、硬盘等,该存储介质存储的计算机可执行指令在被处理器执行时,能实现以下流程:
在用于提供设备端进行数据操作的主机端内存中,创建用于存储数据的内存对象;
声明所述内存对象属于虚拟内存地址域,其中,所述虚拟内存地址域与所述主机端内存的物理内存地址域具有预设映射关系;
响应所述设备端基于所述预设映射关系在所述主机端内存中的数据操作。
在本申请实施例中,预先确定主机端内存中用于提供设备端进行数据操作的物理内存地址域与虚拟内存地址域之间的映射关系,并且声明用于存储指定数据的内存对象属于虚拟内存地址域,OpenCL内核将设备端内存的地址域和该虚拟内存地址域同时作为可进行数据操作的地址域,OpenCL内核根据预先写入的配置信息开始工作时发出数据操作请求,当OpenCL内核需要进行数据操作的目标地址域属于该虚拟内存地址域时,先通过地址域转换确定对应的主机端内存的物理内存地址域,再基于确定出的物理内存地址域可以实现直接对主机端内存进行数据操作,这样无需将设备端内存作为主机端与设备端之间数据传输的中介,从而提高了数据传输效率,降低了数据交换延时。
可选地,该存储介质存储的计算机可执行指令在被处理器执行时,还实现以下流程:
在创建用于存储数据的内存对象之前,还包括:
从主机端内存的地址范围中,分配用于提供设备端进行数据操作的物理内存地址域;
将所述物理内存地址域下发给所述设备端,以使所述设备端生成并存储所述物理内存地址域与虚拟内存地址域之间的预设映射关系。
可选地,该存储介质存储的计算机可执行指令在被处理器执行时,所述虚拟内存地址域是所述设备端根据设备端内存的地址范围确定的。
可选地,该存储介质存储的计算机可执行指令在被处理器执行时,所述内存对象存储的数据为待处理数据;
所述响应所述设备端基于所述预设映射关系在所述主机端内存中的数据操作,包括:
在所述主机端内存中,将所述待处理数据存储至对应的所述内存对象;
响应所述设备端基于所述预设映射关系从所述内存对象中获取所述待处理数据。
可选地,该存储介质存储的计算机可执行指令在被处理器执行时,所述内存对象存储的数据为针对待处理数据得到的结果数据;
所述响应所述设备端基于所述预设映射关系在所述主机端内存中的数据操作,包括:
响应所述设备端在所述主机端内存中基于所述预设映射关系将所述结果数据存储至对应的所述内存对象中;
从所述内存对象中获取所述结果数据。
可选地,该存储介质存储的计算机可执行指令在被处理器执行时,所述内存对象存储的数据为待缓存数据;
所述响应所述设备端基于所述预设映射关系在所述主机端内存中的数据操作,包括:
响应所述设备端在所述主机端内存中基于所述预设映射关系将所述待缓存数据存储至对应的所述内存对象中。
本申请实施例中的存储介质存储的计算机可执行指令在被处理器执行时,预先确定主机端内存中用于提供设备端进行数据操作的物理内存地址域与虚拟内存地址域之间的映射关系,并且声明用于存储指定数据的内存对象属于虚拟内存地址域,OpenCL内核将设备端内存的地址域和该虚拟内存地址域同时作为可进行数据操作的地址域,OpenCL内核根据预先写入的配置信息开始工作时发出数据操作请求,当OpenCL内核需要进行数据操作的目标地址域属于该虚拟内存地址域时,先通过地址域转换确定对应的主机端内存的物理内存地址域,再基于确定出的物理内存地址域可以实现直接对主机端内存进行数据操作,这样无需将设备端内存作为主机端与设备端之间数据传输的中介,从而提高了数据传输效率,降低了数据交换延时。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HD Cal、JHDL(Java Hardware Description Language)、Lava、Lola、My HDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

Claims (22)

1.一种数据操作方法,所述方法包括:
判断数据操作请求中携带的目标地址域是否属于设备端对应的虚拟内存地址域,其中,所述虚拟内存地址域与主机端内存的物理内存地址域具有预设映射关系;
若是,则根据所述预设映射关系,确定与所述目标地址域对应的所述物理内存地址域;
根据确定出的所述物理内存地址域,直接对所述主机端内存中的内存对象进行数据操作,其中,所述内存对象是所述主机端预先声明属于所述虚拟内存地址域的。
2.根据权利要求1所述的方法,其中,在判断数据操作请求中携带的目标地址域是否属于设备端对应的虚拟内存地址域之前,还包括:
获取从主机端内存中分配的用于提供设备端进行数据操作的物理内存地址域;
根据设备端内存的地址范围,确定在所述地址范围之外的虚拟内存地址域;
生成并存储所述物理内存地址域和所述虚拟内存地址域之间的预设映射关系。
3.根据权利要求2所述的方法,其中,所述根据设备端内存的地址范围,确定在所述地址范围之外的虚拟内存地址域,包括:
确定设备端内存的地址范围的末尾地址;
根据所述末尾地址,生成与所述物理内存地址域长度相同的虚拟内存地址域,其中,所述虚拟内存地址域的起始地址大于所述地址范围的所述末尾地址。
4.根据权利要求3所述的方法,其中,所述虚拟内存地址域的所述起始地址与所述地址范围的所述末尾地址是连续的。
5.根据权利要求4所述的方法,其中,所述判断数据操作请求中携带的目标地址域是否属于设备端对应的虚拟内存地址域,包括:
判断数据操作请求中携带的目标地址域的起始地址是否大于所述地址范围的所述末尾地址;
若是,则确定所述数据操作请求中携带的目标地址域属于虚拟内存地址域。
6.根据权利要求2所述的方法,其中,所述设备端包括基于OpenCL框架的现场可编程门阵列FPGA,所述设备端内存为所述FPGA的片外内存。
7.根据权利要求1所述的方法,其中,所述数据操作请求为待处理数据获取请求;
所述根据确定出的所述物理内存地址域,直接对所述主机端内存中的内存对象进行数据操作,包括:
根据确定出的所述物理内存地址域,从所述主机端内存中的内存对象中读取待处理的数据,以使所述设备端中的OpenCL内核对所述待处理的数据进行数据处理得到相应的处理结果数据。
8.根据权利要求1所述的方法,其中,所述数据操作请求为数据处理结果存储请求;
所述根据确定出的所述物理内存地址域,直接对所述主机端内存中的内存对象进行数据操作,包括:
根据确定出的所述物理内存地址域,将针对待处理数据得到的处理结果数据存储至所述主机端内存中的内存对象中,以使主机端从所述主机端内存中获取所述处理结果数据。
9.根据权利要求1所述的方法,其中,所述数据操作请求为数据缓存请求;
所述根据确定出的所述物理内存地址域,直接对所述主机端内存中的内存对象进行数据操作,包括:
根据确定出的所述物理内存地址域,将待缓存的数据存储至所述主机端内存中的内存对象中,以使所述主机端内存作为所述设备端的扩展内存。
10.一种数据操作方法,所述方法包括:
在用于提供设备端直接进行数据操作的主机端内存中,创建用于存储数据的内存对象;
声明所述内存对象属于虚拟内存地址域,其中,所述虚拟内存地址域与所述主机端内存的物理内存地址域具有预设映射关系;
响应所述设备端基于所述预设映射关系在所述主机端内存中对所述内存对象直接进行的数据操作。
11.根据权利要求10所述的方法,其中,在创建用于存储数据的内存对象之前,还包括:
从主机端内存的地址范围中,分配用于提供设备端进行数据操作的物理内存地址域;
将所述物理内存地址域下发给所述设备端,以使所述设备端生成并存储所述物理内存地址域与虚拟内存地址域之间的预设映射关系。
12.根据权利要求11所述的方法,其中,所述虚拟内存地址域是所述设备端根据设备端内存的地址范围确定的。
13.根据权利要求10所述的方法,其中,所述内存对象存储的数据为待处理数据;
所述响应所述设备端基于所述预设映射关系在所述主机端内存中对所述内存对象直接进行的数据操作,包括:
在所述主机端内存中,将所述待处理数据存储至对应的所述内存对象;
响应所述设备端基于所述预设映射关系从所述内存对象中读取所述待处理数据。
14.根据权利要求10所述的方法,其中,所述内存对象存储的数据为针对待处理数据得到的结果数据;
所述响应所述设备端基于所述预设映射关系在所述主机端内存中对所述内存对象直接进行的数据操作,包括:
响应所述设备端在所述主机端内存中基于所述预设映射关系将所述结果数据存储至对应的所述内存对象中;
从所述内存对象中获取所述结果数据。
15.根据权利要求10所述的方法,其中,所述内存对象存储的数据为待缓存数据;
所述响应所述设备端基于所述预设映射关系在所述主机端内存中对所述内存对象直接进行的数据操作,包括:
响应所述设备端在所述主机端内存中基于所述预设映射关系将所述待缓存数据存储至对应的所述内存对象中。
16.一种数据操作装置,包括:
总线互联模块,用于判断数据操作请求中携带的目标地址域是否属于设备端对应的虚拟内存地址域,其中,所述虚拟内存地址域与主机端内存的物理内存地址域具有预设映射关系;
域转换模块,用于当所述目标地址域属于所述虚拟内存地址域时,根据所述预设映射关系,确定与所述目标地址域对应的所述物理内存地址域;
控制模块,用于根据确定出的所述物理内存地址域,直接对所述主机端内存中的内存对象进行数据操作,其中,所述内存对象是所述主机端预先声明属于所述虚拟内存地址域的。
17.一种数据操作装置,包括:
内存对象创建模块,用于在用于提供设备端直接进行数据操作的主机端内存中,创建用于存储数据的内存对象;
内存对象声明模块,用于声明所述内存对象属于虚拟内存地址域,其中,所述虚拟内存地址域与所述主机端内存的物理内存地址域具有预设映射关系;
数据操作响应模块,用于响应所述设备端基于所述预设映射关系在所述主机端内存中对所述内存对象直接进行的数据操作。
18.一种数据操作系统,包括:设备端和与所述设备端通信连接的主机端;
其中,所述主机端,用于在用于提供所述设备端直接进行数据操作的主机端内存中,创建用于存储数据的内存对象;声明所述内存对象属于虚拟内存地址域,其中,所述虚拟内存地址域与所述主机端内存的物理内存地址域具有预设映射关系;响应所述设备端基于所述预设映射关系在所述主机端内存中对所述内存对象直接进行的数据操作;
所述设备端,用于判断数据操作请求中携带的目标地址域是否属于所述设备端对应的虚拟内存地址域;若是,则根据所述预设映射关系,确定与所述目标地址域对应的所述物理内存地址域;根据确定出的所述物理内存地址域,直接对所述主机端内存中的内存对象进行数据操作。
19.一种数据操作设备,包括:
处理器;以及
被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器执行如权利要求1至9任一项所述的方法。
20.一种数据操作设备,包括:
处理器;以及
被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器执行如权利要求10至15任一项所述的方法。
21.一种存储介质,用于存储计算机可执行指令,所述可执行指令在被执行时实现如权利要求1至9任一项所述的方法。
22.一种存储介质,用于存储计算机可执行指令,所述可执行指令在被执行时实现如权利要求10至15任一项所述的方法。
CN201810717888.9A 2018-07-03 2018-07-03 一种数据操作方法、装置及系统 Active CN110737608B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810717888.9A CN110737608B (zh) 2018-07-03 2018-07-03 一种数据操作方法、装置及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810717888.9A CN110737608B (zh) 2018-07-03 2018-07-03 一种数据操作方法、装置及系统

Publications (2)

Publication Number Publication Date
CN110737608A CN110737608A (zh) 2020-01-31
CN110737608B true CN110737608B (zh) 2024-03-15

Family

ID=69234134

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810717888.9A Active CN110737608B (zh) 2018-07-03 2018-07-03 一种数据操作方法、装置及系统

Country Status (1)

Country Link
CN (1) CN110737608B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113449292B (zh) * 2020-03-27 2022-07-29 支付宝(杭州)信息技术有限公司 一种可信应用的运行方法、装置及设备
CN111813707B (zh) * 2020-07-17 2023-12-22 济南浪潮数据技术有限公司 一种数据同步方法、装置、设备及存储介质
CN112764925A (zh) * 2021-01-18 2021-05-07 苏州浪潮智能科技有限公司 基于虚拟内存的数据存储方法、装置、设备及存储介质
CN112860381B (zh) * 2021-03-09 2022-04-26 上海交通大学 基于申威处理器的虚拟机内存扩容方法及系统
CN113835831B (zh) * 2021-09-01 2024-08-20 南京南瑞继保电气有限公司 一种数据内存映射方法、装置、电子设备和存储介质
CN116107935B (zh) * 2022-12-30 2023-08-22 芯动微电子科技(武汉)有限公司 一种基于PCIe地址转换服务机制的ATC实现方法

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104679664A (zh) * 2014-12-26 2015-06-03 浪潮(北京)电子信息产业有限公司 一种集群系统中的通信方法和装置
CN105630690A (zh) * 2014-10-31 2016-06-01 华为技术有限公司 异构硬件中大数据处理的方法及装置
CN106027423A (zh) * 2016-05-20 2016-10-12 北京百度网讯科技有限公司 PCIe设备共享网络及其数据传输方法
CN106201652A (zh) * 2016-06-29 2016-12-07 联想(北京)有限公司 一种数据处理方法及虚拟机
WO2017219250A1 (zh) * 2016-06-21 2017-12-28 华为技术有限公司 一种虚拟机内存的映射方法、装置及数据传输设备
CN108008911A (zh) * 2016-11-01 2018-05-08 阿里巴巴集团控股有限公司 读写请求处理方法及装置
CN108197038A (zh) * 2018-02-01 2018-06-22 深圳市风云实业有限公司 一种Linux数据传输方法、装置和用户终端

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100191923A1 (en) * 2009-01-29 2010-07-29 International Business Machines Corporation Data Processing In A Computing Environment
FI20136023A (fi) * 2013-10-16 2015-04-17 Tellabs Oy Menetelmä ja laite toiminnallisen komponentin muistinkäytön hallitsemiseksi

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105630690A (zh) * 2014-10-31 2016-06-01 华为技术有限公司 异构硬件中大数据处理的方法及装置
CN104679664A (zh) * 2014-12-26 2015-06-03 浪潮(北京)电子信息产业有限公司 一种集群系统中的通信方法和装置
CN106027423A (zh) * 2016-05-20 2016-10-12 北京百度网讯科技有限公司 PCIe设备共享网络及其数据传输方法
WO2017219250A1 (zh) * 2016-06-21 2017-12-28 华为技术有限公司 一种虚拟机内存的映射方法、装置及数据传输设备
CN106201652A (zh) * 2016-06-29 2016-12-07 联想(北京)有限公司 一种数据处理方法及虚拟机
CN108008911A (zh) * 2016-11-01 2018-05-08 阿里巴巴集团控股有限公司 读写请求处理方法及装置
CN108197038A (zh) * 2018-02-01 2018-06-22 深圳市风云实业有限公司 一种Linux数据传输方法、装置和用户终端

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
Novel approach for task mapping to virtual machine;Neeru Chauhan Etc.;2016 Fourth International Conference on Parallel, Distributed and Grid Computing (PDGC);全文 *
一种面向虚拟化云计算平台的内存优化技术;李亚琼;宋莹;黄永兵;;计算机学报(04);全文 *
云数据中心 I/O 资源池化;王展 等;集成技术;第5卷(第1期);全文 *

Also Published As

Publication number Publication date
CN110737608A (zh) 2020-01-31

Similar Documents

Publication Publication Date Title
CN110737608B (zh) 一种数据操作方法、装置及系统
EP3583504B1 (en) Resource reclamation method and apparatus
KR102458334B1 (ko) 캐시 이동을 비휘발성 대량 메모리 시스템에 제공하기 위한 장치 및 방법
KR20200086381A (ko) 블록체인 합의 방법 및 디바이스
CN107621959B (zh) 电子装置及其软件训练方法、计算系统
JP7048738B2 (ja) 仮想カード開設方法およびシステム、決済システム、ならびにカード発行システム
US9569381B2 (en) Scheduler for memory
TWI573076B (zh) 訊息訊號中斷之通訊
CN110114762B (zh) 用于访问作为字节可寻址存储器的非易失性存储器的方法和设备
CN110941395A (zh) 动态随机存取存储器、内存管理方法、系统及存储介质
CN112905365B (zh) 一种数据处理方法、装置、设备及介质
US20210157718A1 (en) Reduction of page migration between different types of memory
CN110955624B (zh) 一种pcie设备的热插拔方法、装置和系统
EP4123649A1 (en) Memory module, system including the same, and operation method of memory module
US20220413919A1 (en) User interface based page migration for performance enhancement
CN115981751B (zh) 一种近存计算系统以及近存计算方法、装置、介质及设备
CN111177027B (zh) 动态随机存取存储器、内存管理方法、系统及存储介质
CN116822657A (zh) 一种模型训练加速的方法、装置、存储介质及电子设备
WO2020186455A1 (zh) 数据存储方法及存储芯片
CN103530241A (zh) 一种用户态的双控内存镜像实现方法
CN104424124A (zh) 内存装置、电子设备和用于控制内存装置的方法
CN107645541B (zh) 数据存储方法、装置及服务器
US20210109674A1 (en) Memory command queue management
CN217588059U (zh) 处理器系统
CN116880905B (zh) 一种数据存储方法、装置、存储介质及电子设备

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
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40021653

Country of ref document: HK

GR01 Patent grant
GR01 Patent grant