CN116483738B - 数据访问方法及装置、存储介质及电子装置 - Google Patents
数据访问方法及装置、存储介质及电子装置 Download PDFInfo
- Publication number
- CN116483738B CN116483738B CN202310735218.0A CN202310735218A CN116483738B CN 116483738 B CN116483738 B CN 116483738B CN 202310735218 A CN202310735218 A CN 202310735218A CN 116483738 B CN116483738 B CN 116483738B
- Authority
- CN
- China
- Prior art keywords
- physical address
- memory space
- accessed
- data
- address
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 81
- 238000013507 mapping Methods 0.000 claims abstract description 320
- 238000004891 communication Methods 0.000 claims description 101
- 230000005540 biological transmission Effects 0.000 claims description 19
- 230000004048 modification Effects 0.000 claims description 16
- 238000012986 modification Methods 0.000 claims description 16
- 238000004590 computer program Methods 0.000 claims description 13
- 230000004044 response Effects 0.000 claims description 13
- 230000000977 initiatory effect Effects 0.000 claims description 5
- 238000013500 data storage Methods 0.000 claims description 3
- 230000000694 effects Effects 0.000 abstract description 6
- 238000010586 diagram Methods 0.000 description 27
- 238000012545 processing Methods 0.000 description 15
- 230000008569 process Effects 0.000 description 13
- 238000007726 management method Methods 0.000 description 10
- 101100498823 Caenorhabditis elegans ddr-2 gene Proteins 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000006872 improvement Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 102100036725 Epithelial discoidin domain-containing receptor 1 Human genes 0.000 description 1
- 101710131668 Epithelial discoidin domain-containing receptor 1 Proteins 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 239000002360 explosive Substances 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1045—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
- G06F12/1063—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently virtually addressed
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
技术领域
本申请实施例涉及计算机领域,具体而言,涉及一种数据访问方法及装置、存储介质及电子装置。
背景技术
近年来随着大数据分析和人工智能的流行,数据呈现爆炸式的增长。新出现的工作负载均是以数据为中心的,应用程序需要的内存越来越大。而处理器和内存往往是绑定在一起的,不能够共享,在应用软件对设备的内存的需求超过了可用物理内存的情况下,可以增加内存投资,或者通过虚拟内存交换来扩展内存。
采用虚拟内存来交换扩展内存,由于磁盘的开销很大,带来了性能损失。采用远程内存作为交换区的方案,比如RDMA(Remote Direct Memory Access,远程直接数据访问)技术由于该部分内存数据换出放在远端的设备上,这种方法虽然在性能上有一定的提高,但是物理机器的内存空间并没有实际增大,本质是一种CPU(Central Processing Unit,中央处理器)-Bypass(旁路)的网络通信,远程内存不支持CPU对远端设备上的内存进行直接寻址访问和操作,远程内存的数据处理需要读取到本地然后再做处理,并未实现对设备的内存实现真正的扩展。
针对相关技术中,第一设备无法访问第二设备的内存中允许第一设备访问的内存空间的技术问题,尚未提出有效的解决方案。
发明内容
本申请实施例提供了一种数据访问方法及装置、存储介质及电子装置,以至少解决相关技术中第一设备无法访问第二设备的内存中允许第一设备访问的内存空间的问题。
根据本申请的一个实施例,提供了一种数据访问方法,包括:获取第一设备中的处理器待访问的第一起始物理地址和待访问的物理地址的长度,其中,所述第一起始物理地址是根据预先确定的第三映射关系和所述第一设备中的处理器待访问的第一起始虚拟地址确定的物理地址,所述第三映射关系至少是所述第一设备允许访问的起始虚拟地址与所述第一设备允许访问的起始物理地址之间的映射关系;根据预先确定的第一映射关系和所述第一起始物理地址,确定目标内存空间对应的第二起始虚拟地址,其中,所述第一映射关系至少是所述第一设备允许访问的起始物理地址、所述第一设备允许访问的物理地址的长度、所述目标内存空间对应的所述第二起始虚拟地址之间的映射关系,所述目标内存空间是第二设备的内存中的内存空间、且是允许所述第一设备访问的内存空间;向所述第二设备发送数据访问请求,其中,所述数据访问请求用于请求访问所述第二设备的内存中的所述目标内存空间,所述数据访问请求中包括所述第二起始虚拟地址、所述待访问的物理地址的长度以及访问指令信息,所述访问指令信息用于指示对所述目标内存空间中的待访问内存空间执行读操作或写操作,所述待访问内存空间是根据预先确定的第二映射关系、所述第二起始虚拟地址以及所述待访问的物理地址的长度确定的所述目标内存空间中的内存空间,所述第二映射关系至少是所述第二起始虚拟地址、所述目标内存空间的起始物理地址、所述目标内存空间的物理地址的长度之间的映射关系。
在一个示范性实施例中,所述向所述第二设备发送数据访问请求,包括:在所述第一起始物理地址是所述处理器待读取的起始物理地址、在所述第一设备的缓存空间中并未缓存与所述第一起始物理地址和所述待访问的物理地址的长度对应的第一数据集合的情况下,向所述第二设备发送数据访问请求,其中,所述第一数据集合包括预先对所述待访问内存空间执行所述读操作所得到的数据。
在一个示范性实施例中,在所述向所述第二设备发送数据访问请求之后,所述方法还包括:在所述访问指令信息指示读操作的情况下,接收所述第二设备发送的M个数据包,其中,所述M个数据包是将读到的数据按照所述第一设备与所述第二设备之间的传输协议拆分成的数据包,所述读到的数据是所述第二设备对待访问内存空间执行所述读操作所得到的数据,M为大于或等于1的正整数;对所述M个数据包进行组包,得到所述第一数据集合;将所述第一起始物理地址、所述待访问的物理地址的长度和所述第一数据集合缓存到所述第一设备的所述缓存空间中。
在一个示范性实施例中,所述向所述第二设备发送数据访问请求,包括:在所述第一起始物理地址是所述处理器待写入的起始物理地址、在所述第一设备的缓存空间中缓存了与所述第一起始物理地址和所述待访问的物理地址的长度对应的第一数据集合的情况下,将所述第一设备的缓存空间中缓存的所述第一数据集合修改为所述处理器待写入的第二数据集合,并向所述第二设备发送所述数据访问请求,其中,所述第一数据集合包括预先对待访问内存空间执行所述读操作所得到的数据;或者在所述第一起始物理地址是所述处理器待写入的起始物理地址、在所述第一设备的缓存空间中未缓存与所述第一起始物理地址和所述待访问的物理地址的长度对应的所述第一数据集合的情况下,从所述第二设备获取所述第一数据集合,将所述第一数据集合缓存到所述第一设备的所述缓存空间中,将所述第一设备的缓存空间中缓存的所述第一数据集合修改为所述处理器待写入的第二数据集合,并向所述第二设备发送所述数据访问请求。
在一个示范性实施例中,所述向所述第二设备发送所述数据访问请求,包括:在所述缓存空间已满的情况下,向所述第二设备发送所述数据访问请求,其中,所述数据访问请求用于请求对所述目标内存空间执行写操作;或者在成功将所述第一设备的缓存空间中缓存的所述第一数据集合修改为所述处理器待写入的所述第二数据集合的情况下,向所述第二设备发送所述数据访问请求。
在一个示范性实施例中,所述方法还包括:在将所述第一设备的所述缓存空间中缓存的所述第一数据集合修改为所述处理器待写入的第二数据集合的情况下,在所述缓存空间中为所述第二数据集合设置修改标记;在所述缓存空间已满的情况下,或,在所述缓存空间已满、且存在待缓存到所述缓存空间中的数据的情况下,在所述缓存空间中删除未设置有所述修改标记的数据中的至少部分数据。
在一个示范性实施例中,在所述向所述第二设备发送数据访问请求之前,所述方法还包括:向所述第二设备发起内存扩展请求,其中,所述内存扩展请求中包括所述第二起始虚拟地址、所述第一设备允许访问的物理地址的长度;在所述第二设备响应于所述内存扩展请求成功为所述第一设备分配了所述目标内存空间的情况下,在所述第一设备上建立所述第一映射关系,其中,所述目标内存空间是在所述第二设备的内存中处于空闲状态的内存空间,所述目标内存空间的物理地址的长度等于所述第一设备允许访问的物理地址的长度。
在一个示范性实施例中,所述向所述第二设备发送数据访问请求,包括:将所述第一起始物理地址和所述第一映射关系中的所述第一设备允许访问的起始物理地址之间的地址间隔确定为物理地址偏移,并将所述物理地址偏移携带在所述数据访问请求中;向所述第二设备发送所述数据访问请求;或者将所述第一起始物理地址携带在所述数据访问请求中;向所述第二设备发送所述数据访问请求。
在一个示范性实施例中,所述向所述第二设备发送数据访问请求,包括:在预先确定了P个映射关系、且所述P个映射关系与预先建立的P个通信任务一一对应的情况下,通过所述P个通信任务中与所述第一映射关系对应的通信任务,向所述第二设备发送所述数据访问请求,其中,P为大于或等于2的正整数,所述P个映射关系包括所述第一映射关系。
根据本申请的另一个实施例,提供了一种数据访问设备,包括:第一处理器、主内存管理器、远端内存控制器以及第一通信单元,所述第一处理器与所述主内存管理器连接,所述主内存管理器与所述远端内存控制器连接,所述远端内存控制器与所述第一通信单元连接,其中,所述主内存管理器,用于根据预先确定的第三映射关系和所述第一处理器待访问的第一起始虚拟地址,确定所述第一处理器待访问的第一起始物理地址,其中,所述第三映射关系至少是所述数据访问设备允许访问的起始虚拟地址与所述数据访问设备允许访问的起始物理地址之间的映射关系;所述远端内存控制器,用于根据预先确定的第一映射关系和所述第一起始物理地址,确定目标内存空间对应的第二起始虚拟地址,其中,所述第一映射关系至少是所述数据访问设备允许访问的起始物理地址、所述数据访问设备允许访问的物理地址的长度、所述目标内存空间对应的所述第二起始虚拟地址之间的映射关系,所述目标内存空间是第二设备的内存中的内存空间、且是允许所述数据访问设备访问的内存空间;所述第一通信单元,用于向所述第二设备发送数据访问请求,其中,所述数据访问请求用于请求访问所述第二设备的内存中的所述目标内存空间,所述数据访问请求中包括所述目标内存空间对应的所述第二起始虚拟地址、所述待访问的物理地址的长度以及访问指令信息。
根据本申请的一个实施例,又提供了另一种数据访问方法,包括:获取第一设备发送的数据访问请求,其中,所述数据访问请求用于请求访问第二设备的内存中的目标内存空间,所述目标内存空间是允许所述第一设备访问的内存空间;在所述数据访问请求中包括所述目标内存空间对应的第二起始虚拟地址、待访问的物理地址的长度以及访问指令信息的情况下,根据预先确定的第二映射关系、所述第二起始虚拟地址以及所述待访问的物理地址的长度,确定所述目标内存空间中的待访问内存空间,其中,所述第二起始虚拟地址是根据预先确定的第一映射关系和所述第一设备中的处理器待访问的第一起始物理地址确定的虚拟地址,所述第一映射关系至少是所述第一设备允许访问的起始物理地址、所述第一设备允许访问的物理地址的长度、所述目标内存空间对应的所述第二起始虚拟地址之间的映射关系,所述第二映射关系至少是所述第二起始虚拟地址、所述目标内存空间的起始物理地址、所述目标内存空间的物理地址的长度之间的映射关系,所述第一起始物理地址是根据预先确定的第三映射关系和所述第一设备中的所述处理器待访问的第一起始虚拟地址确定的物理地址,所述第三映射关系至少是所述第一设备允许访问的起始虚拟地址与所述第一设备允许访问的起始物理地址之间的映射关系;对所述待访问内存空间执行所述访问指令信息所指示的访问操作。
在一个示范性实施例中,所述根据预先确定的第二映射关系、所述第二起始虚拟地址以及所述待访问的物理地址的长度,确定所述目标内存空间中的待访问内存空间,包括:在所述数据访问请求中还包括所述第一起始物理地址的情况下,将所述第一起始物理地址和所述第一映射关系中的所述第一设备允许访问的起始物理地址之间的地址间隔确定为物理地址偏移;根据所述第二起始虚拟地址、所述第二映射关系和所述物理地址偏移,在所述目标内存空间中确定所述待访问内存空间的起始物理地址;根据所述第二映射关系、所述待访问内存空间的起始物理地址和所述待访问的物理地址的长度,确定所述目标内存空间中的所述待访问内存空间。
在一个示范性实施例中,所述根据预先确定的第二映射关系、所述第二起始虚拟地址以及所述待访问的物理地址的长度,确定所述目标内存空间中的待访问内存空间,包括:在所述数据访问请求中还包括物理地址偏移的情况下,根据所述第二起始虚拟地址、所述第二映射关系和所述物理地址偏移,在所述目标内存空间中确定所述待访问内存空间的起始物理地址,其中,所述物理地址偏移是所述第一起始物理地址和所述第一映射关系中的所述第一设备允许访问的起始物理地址之间的地址间隔;根据所述第二映射关系、所述待访问内存空间的起始物理地址和所述待访问的物理地址的长度,确定所述目标内存空间中的所述待访问内存空间。
在一个示范性实施例中,所述根据所述第二起始虚拟地址、所述第二映射关系和所述物理地址偏移,在所述目标内存空间中确定所述待访问内存空间的起始物理地址,包括:在所述目标内存空间包括不连续的N个内存空间的情况下,根据所述第二映射关系,确定所述N个内存空间中与所述第二起始虚拟地址具有映射关系的第1个内存空间的起始物理地址,其中,N为大于或等于2的正整数,i为大于或等于1、且小于或等于N的正整数,所述第二映射关系是用数组链表表示的映射关系,所述数组链表的表头包括所述第二起始虚拟地址,所述数组链表中的第i个链表单元包括所述N个内存空间中的第i个内存空间的起始物理地址、所述第i个内存空间的物理地址的长度、所述第i个内存空间的下一个内存空间的起始物理地址;根据所述第1个内存空间的起始物理地址和所述物理地址偏移,在所述目标内存空间中确定所述待访问内存空间的起始物理地址,其中,所述第1个内存空间的起始物理地址与所述待访问内存空间的起始物理地址之间的地址间隔等于所述物理地址偏移,所述N个内存空间中的前一个内存空间的结束物理地址与后一个内存空间的起始物理地址之间的地址间隔被视为1。
在一个示范性实施例中,所述根据所述第二映射关系、所述待访问内存空间的起始物理地址和所述待访问的物理地址的长度,确定所述目标内存空间中的所述待访问内存空间,包括:根据所述第二映射关系、所述待访问内存空间的起始物理地址和所述待访问的物理地址的长度,在所述目标内存空间中确定所述待访问内存空间的结束物理地址,其中,所述待访问内存空间的起始物理地址与所述待访问内存空间的结束物理地址之间的地址间隔等于所述待访问的物理地址的长度;在所述目标内存空间中将从所述待访问内存空间的起始物理地址到所述待访问内存空间的结束物理地址所对应的内存空间,确定为所述待访问内存空间。
在一个示范性实施例中,所述根据所述第二起始虚拟地址、所述第二映射关系和所述物理地址偏移,在所述目标内存空间中确定所述待访问内存空间的起始物理地址,包括:在所述目标内存空间包括1个内存空间的情况下,根据所述第二映射关系,确定所述目标内存空间中与所述第二起始虚拟地址具有映射关系的所述1个内存空间的起始物理地址,其中,所述第二映射关系至少是所述第二起始虚拟地址、所述1个内存空间的起始物理地址、所述1个内存空间的物理地址的长度之间的映射关系;根据所述1个内存空间的起始物理地址和所述物理地址偏移,在所述目标内存空间中确定所述待访问内存空间的起始物理地址,其中,所述1个内存空间的起始物理地址与所述待访问内存空间的起始物理地址之间的地址间隔等于所述物理地址偏移。
在一个示范性实施例中,所述对所述待访问内存空间执行所述访问指令信息所指示的访问操作,包括:在所述访问指令信息指示读操作的情况下,对所述待访问内存空间执行所述读操作,得到读到的数据;将所述读到的数据按照所述第一设备与所述第二设备之间的传输协议拆分成M个数据包,其中,M为大于或等于1的正整数;向所述第一设备发送所述M个数据包。
在一个示范性实施例中,所述对所述待访问内存空间执行所述访问指令信息所指示的访问操作,包括:在所述访问指令信息指示写操作、且所述数据访问请求中还包括待写入的数据的情况下,将所述待写入的数据写入到所述待访问内存空间;或者在所述访问指令信息指示写操作、且所述数据访问请求中不包括待写入的数据的情况下,向所述第一设备发送指示信息,其中,所述指示信息用于表示所述第二设备已做执行写操作的准备;获取所述第一设备发送的M个数据包,其中,所述M个数据包是将所述待写入的数据按照所述第一设备与所述第二设备之间的传输协议拆分成的数据包,M为大于或等于1的正整数;对所述M个数据包进行组包,得到所述待写入的数据;将所述待写入的数据写入到所述待访问内存空间。
在一个示范性实施例中,获取第一设备发送的数据访问请求之前,所述方法还包括:响应于所述第一设备发送的内存扩展请求,在所述第二设备的内存中确定处于空闲状态的所述目标内存空间,其中,所述内存扩展请求中包括所述第二起始虚拟地址、所述第一设备允许访问的物理地址的长度,所述目标内存空间的物理地址的长度等于所述第一设备允许访问的物理地址的长度;建立所述第二起始虚拟地址、所述目标内存空间的起始物理地址、所述目标内存空间的物理地址的长度之间的映射关系,得到所述第二映射关系。
在一个示范性实施例中,所述建立所述第二起始虚拟地址、所述目标内存空间的起始物理地址、所述目标内存空间的物理地址的长度之间的映射关系,得到所述第二映射关系,包括:在所述目标内存空间包括不连续的N个内存空间的情况下,建立用于表示所述第二映射关系的数组链表,其中,N为大于或等于2的正整数,i为大于或等于1、且小于或等于N的正整数,所述数组链表的表头包括所述第二起始虚拟地址,所述数组链表中的第i个链表单元包括所述N个内存空间中的第i个内存空间的起始物理地址、所述第i个内存空间的物理地址的长度、所述第i个内存空间的下一个内存空间的起始物理地址。
根据本申请的另一个实施例,又提供了一种远端数据存储设备,包括:第二通信单元和内存,其中,所述第二通信单元包括媒体访问控制单元,通信控制单元,直接内存访问单元;所述媒体访问控制单元,用于获取第一设备发送的数据访问请求,其中,所述数据访问请求用于请求访问所述内存中的目标内存空间,所述目标内存空间是允许所述第一设备访问的内存空间;所述通信控制单元,用于在所述数据访问请求中包括所述目标内存空间对应的第二起始虚拟地址、待访问的物理地址的长度以及访问指令信息的情况下,根据预先确定的第二映射关系、所述第二起始虚拟地址以及所述待访问的物理地址的长度,确定所述目标内存空间中的待访问内存空间,其中,所述第二起始虚拟地址是根据预先确定的第一映射关系和所述第一设备中的处理器待访问的第一起始物理地址确定的虚拟地址,所述第一映射关系至少是所述第一设备允许访问的起始物理地址、所述第一设备允许访问的物理地址的长度、所述目标内存空间对应的所述第二起始虚拟地址之间的映射关系,所述第二映射关系至少是所述第二起始虚拟地址、所述目标内存空间的起始物理地址、所述目标内存空间的物理地址的长度之间的映射关系,所述第一起始物理地址是根据预先确定的第三映射关系和所述第一起始虚拟地址确定的物理地址,所述第三映射关系至少是所述第一设备允许访问的起始虚拟地址与所述第一设备允许访问的起始物理地址之间的映射关系;所述直接内存访问单元,用于对所述待访问内存空间执行所述访问指令信息所指示的访问操作。
根据本申请的又一个实施例,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
根据本申请的又一个实施例,还提供了一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述任一项方法实施例中的步骤。
通过本申请实施例,在第二设备的内存中的空闲内存空间中为第一设备分配了允许第一设备访问的内存空间,预先确定了第一映射关系和第二映射关系,在第二设备在获取到第一设备发送的数据访问请求的情况下,可以根据预先确定的第二映射关系、第二起始虚拟地址以及待访问的物理地址的长度,确定第二设备的内存中允许第一设备访问的内存空间中的待访问内存空间,然后对待访问内存空间执行访问指令信息所执行的访问操作的过程,通过这样的方式,实现了对第二设备上第一设备的扩展内存的直接寻址和访问。因此,可以解决第一设备无法访问第二设备的内存中允许第一设备访问的内存空间的问题,达到第一设备可以访问第二设备的内存中允许第一设备访问的内存空间的效果。
附图说明
图1是根据本申请实施例的一种数据访问方法的应用场景的示意图;
图2是根据本申请实施例的数据访问方法的流程图一;
图3是根据本申请实施例的一种第二映射关系的示意图一;
图4是根据本申请实施例的一种确定待访问内存空间的示意图;
图5是根据本申请实施例的一种第一映射关系的示意图;
图6是根据本申请实施例的一种第二映射关系的示意图二;
图7是根据本申请实施例的一种确定待访问内存空间的示意图一;
图8是根据本申请实施例的一种确定待访问内存空间的示意图二;
图9是根据本申请实施例的一种将待写入数据写入待访问内存空间的示意图;
图10是根据本申请实施例的数据访问方法的流程图二;
图11是根据本申请实施例的一种第三映射关系的示意图;
图12是根据本申请实施例的一种从缓存空间中查找第一数据集合的示意图;
图13是根据本申请实施例的一种缓存第一数据集合的示意图;
图14是根据本申请实施例的一种删除缓存空间中的数据的示意图;
图15是根据本申请实施例的一种访问远端内存的示意图。
具体实施方式
下文中将参考附图并结合实施例来详细说明本申请的实施例。
需要说明的是,本申请实施例的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
为了更好理解本申请实施例中的数据访问方法,下面对本申请实施例中的数据访问方法的应用场景进行解释和说明,可以但不限于适用于本申请实施例。
图1是根据本申请实施例的一种数据访问方法的应用场景的示意图,如图1所示,可选的,在本实施例中,设备102、设备104和设备106可以但不限于为终端、服务器或者计算机终端等等。在本实施例中,可以但不限于以设备102、设备104和设备106为服务器为例进行解释和说明。设备102的应用程序对设备102的内存的需求越来越大,在这样的情况下,设备102的内存可能会存在不够用的情况下,而设备106的内存(比如:DDR(Double DataRate,双倍速率)1)中存在空闲的内存空间,设备104的内存(比如:DDR2)中存在空闲的内存空间。在这样的情况下,可以将设备106的内存中的空闲的至少部分内存空间和设备104的内存中的空闲的至少部分内存空间分配给设备102,使得设备102可以访问设备106的内存中的空闲的至少部分内存空间和设备104的内存中的空闲的至少部分内存空间,实现对设备102的内存的扩展。
详细来说,在设备102上部署了CPU处理器,主内存管理器、内存管理器和内存组控制组、多个远端内存控制器(比如:远端内存控制器1和远端内存控制器2)和通信单元(比如:通信单元1和通信单元2)。CPU处理器与主内存管理器连接,主内存管理器与多个内存控制器和远端内存控制器(比如:远端内存控制器1和远端内存控制器2)连接,内存控制器与内存控制组连接,远端内存控制器与通信单元连接(比如:远端内存控制器1与通信单元1连接,远端内存控制器2与通信单元2连接)。可选的,在本实施例中,CPU处理器可以包括但不限于微处理器MCU(Microcontroller Unit,微控制单元)或可编程逻辑器件FPGA(FieldProgrammable Gate Array,现场可编程逻辑门阵列)等的处理装置。
在设备106上部署有通信单元3、DDR1以及CPU处理器,在设备104上部署有通信单元4、DDR2以及CPU处理器。通信单元3与通信单元1连接,通信单元4与通信单元2连接。可以但不限于以在设备104的内存(比如:DDR2)的空闲内存空间中为设备102分配允许设备102进行访问的内存空间为例,在设备104的内存的空闲内存空间为设备102分配允许设备102访问的目标内存空间,目标内存空间可以但不限于包括内存空间1、内存空间2和内存空间3。可以但不限于通过以下步骤实现对内存空间1(相当于待访问的内存空间)的访问:
步骤S101,获取设备102中的处理器待访问的第一起始物理地址和待访问的物理地址的长度,其中,第一起始物理地址是根据预先确定的第三映射关系和第一设备中的处理器待访问的第一起始虚拟地址确定的物理地址,第三映射关系至少是第一设备允许访问的起始虚拟地址与第一设备允许访问的起始物理地址之间的映射关系;
步骤S102,根据预先确定的第一映射关系和第一起始物理地址,确定目标内存空间对应的第二起始虚拟地址,其中,第一映射关系至少是第一设备允许访问的起始物理地址、第一设备允许访问的物理地址的长度、目标内存空间对应的第二起始虚拟地址之间的映射关系,目标内存空间是设备104的内存中的内存空间、且是允许第一设备访问的内存空间;
步骤S103,向设备104发送数据访问请求,其中,数据访问请求用于请求访问设备104的内存中的目标内存空间,数据访问请求中包括第二起始虚拟地址、待访问的物理地址的长度以及访问指令信息,访问指令信息用于指示对目标内存空间中的待访问内存空间执行读操作或写操作,待访问内存空间是根据预先确定的第二映射关系、第二起始虚拟地址以及待访问的物理地址的长度确定的目标内存空间中的内存空间,第二映射关系至少是第二起始虚拟地址、目标内存空间的起始物理地址、目标内存空间的物理地址的长度之间的映射关系。
在本实施例中提供了一种运行于上述移动终端的数据访问方法,图2是根据本申请实施例的数据访问方法的流程图一,如图2所示,该流程包括如下步骤:
步骤S302,获取第一设备发送的数据访问请求,其中,所述数据访问请求用于请求访问第二设备的内存中的目标内存空间,所述目标内存空间是允许所述第一设备访问的内存空间;
步骤S304,在所述数据访问请求中包括所述目标内存空间对应的第二起始虚拟地址、待访问的物理地址的长度以及访问指令信息的情况下,根据预先确定的第二映射关系、所述第二起始虚拟地址以及所述待访问的物理地址的长度,确定所述目标内存空间中的待访问内存空间,其中,所述第二起始虚拟地址是根据预先确定的第一映射关系和所述第一设备中的处理器待访问的第一起始物理地址确定的虚拟地址,所述第一映射关系至少是所述第一设备允许访问的起始物理地址、所述第一设备允许访问的物理地址的长度、所述目标内存空间对应的所述第二起始虚拟地址之间的映射关系,所述第二映射关系至少是所述第二起始虚拟地址、所述目标内存空间的起始物理地址、所述目标内存空间的物理地址的长度之间的映射关系,所述第一起始物理地址是根据预先确定的第三映射关系和所述第一设备中的所述处理器待访问的第一起始虚拟地址确定的物理地址,所述第三映射关系至少是所述第一设备允许访问的起始虚拟地址与所述第一设备允许访问的起始物理地址之间的映射关系;
步骤S306,对所述待访问内存空间执行所述访问指令信息所指示的访问操作。
通过上述步骤,在第二设备的内存中的空闲内存空间中为第一设备分配了允许第一设备访问的内存空间,预先确定了第一映射关系和第二映射关系,在第二设备在获取到第一设备发送的数据访问请求的情况下,可以根据预先确定的第二映射关系、第二起始虚拟地址以及待访问的物理地址的长度,确定第二设备的内存中允许第一设备访问的内存空间中的待访问内存空间,然后对待访问内存空间执行访问指令信息所执行的访问操作的过程,通过这样的方式,实现了对第二设备上第一设备的扩展内存的直接寻址和访问。因此,可以解决第一设备无法访问第二设备的内存中允许第一设备访问的内存空间的问题,达到第一设备可以访问第二设备的内存中允许第一设备访问的内存空间的效果。
其中,上述步骤的执行主体可以为终端、服务器等等,但不限于此。
在上述步骤S302提供的技术方案中,第一设备和第二设备可以但不限于包括服务器、终端设备等等,第一设备的内存有限,可能不能满足第一设备上的应用程序的需求,可以理解的是,第一设备的内存可能存在不够用的情况,在这样的情况下,可以但不限于在一个或者多个第二设备的内存中存在空闲内存空间的情况下,将一个或者多个第二设备的内存中的空闲内存空间的至少部分内存空间分配给第一设备,使得第一设备可以访问这些远程内存空间,实现了对第一设备的内存的扩展,提升了第二设备上空闲的内存空间的使用率。
可选地,在本实施例中,目标内存空间可以但不限于为第二设备的内存中的至少部分内存空间等等允许第一设备访问的内存空间,可以理解的是,允许第一设备对目标内存空间进行读或者写等等访问。
可选地,在本实施例中,在第二设备获取到数据访问请求的情况下,可以表明第一设备希望访问第二设备中的目标内存空间的情况下,比如:第一设备所希望访问的数据存储在第二设备的内存中的目标内存空间中等等。
在一个示范性实施例中,可以但不限于通过以下方式建立第二映射关系:响应于所述第一设备发送的内存扩展请求,在所述第二设备的内存中确定处于空闲状态的所述目标内存空间,其中,所述内存扩展请求中包括所述第二起始虚拟地址、所述第一设备允许访问的物理地址的长度,所述目标内存空间的物理地址的长度等于所述第一设备允许访问的物理地址的长度;建立所述第二起始虚拟地址、所述目标内存空间的起始物理地址、所述目标内存空间的物理地址的长度之间的映射关系,得到所述第二映射关系。
可选的,在本实施例中,在第一设备的内存存在不够用的情况下,第二设备可以但不限于通过响应于第一设备发起的内存扩展请求,在第二设备的内存中确定处于空闲状态的目标内存空间,目标内存空间可以但不限于为第二设备的内存中的空闲内存空间中的至少部分内存空间,可以理解的是,第二设备的内存中处于空闲状态的内存空间可以但不限于均为目标内存空间,或者,第二设备的内存中处于空闲状态的内存空间也可以是允许除了第一设备之外的设备访问的内存空间,即将第二设备的内存中处于空闲状态的内存空间中的部分内存空间作为除第一设备外的其他设备的扩展内存空间。
详细来说,在第一设备的内存不够的情况下,第二设备创建一个用户态程序,申请分配第二设备的内存中处于空闲状态的内存空间后,然后建立第二起始虚拟地址、目标内存空间的起始物理地址、目标内存空间的物理地址的长度之间的映射关系并保存在内核中,并初始化好通信单元,然后等待远程内存需求方通过网络来访问。
在一个示范性实施例中,可以但不限于通过以下方式建立第二映射关系:在所述目标内存空间包括不连续的N个内存空间的情况下,建立用于表示所述第二映射关系的数组链表,其中,N为大于或等于2的正整数,i为大于或等于1、且小于或等于N的正整数,所述数组链表的表头包括所述第二起始虚拟地址,所述数组链表中的第i个链表单元包括所述N个内存空间中的第i个内存空间的起始物理地址、所述第i个内存空间的物理地址的长度、所述第i个内存空间的下一个内存空间的起始物理地址。
可选的,在本实施例中,不连续的N个内存空间可以理解为N个内存空间之间的物理地址是不连续的,而N个内存空间中的每个内存空间中的物理地址是连续的。
为了更好地理解本申请实施例中的第二映射关系,下面结合可选的实施例,对本申请实施例中的第二映射关系进行解释和说明,可以但不限于适用于本申请实施例。
图3是根据本申请实施例的一种第二映射关系的示意图一,如图3所示,在目标内存空间包括不连续的4个内存空间的情况下,用于第二映射关系的数组链表,数组链表的表头包括第二起始虚拟地址(Start_vaddr),数组链表还可以包括物理地址的总长度(Total_len)。
数组链表中的第1个链表单元包括4个内存空间中的第1个内存空间的起始物理地址(Start_addr1)、第1个内存空间的物理地址的长度(len1)、第1个内存空间的下一个内存空间的起始物理地址(Next1),可选的,Next1对应的是下一个内存空间的起始物理地址Start_addr2在存放内存空间的物理地址的存储空间中所对应的地址。第2个链表单元包括4个内存空间中的第2个内存空间的起始物理地址(Start_addr2)、第2个内存空间的物理地址的长度(len2)、第2个内存空间的下一个内存空间的起始物理地址(Next2),可选的,Next2对应的是下一个内存空间的起始物理地址Start_addr3在存放内存空间的物理地址的存储空间中所对应的地址。第3个链表单元包括4个内存空间中的第3个内存空间的起始物理地址(Start_addr3)、第3个内存空间的物理地址的长度(len3)、第3个内存空间的下一个内存空间的起始物理地址(Next3),可选的,Next3对应的是下一个内存空间的起始物理地址Start_addr4在存放内存空间的物理地址的存储空间中所对应的地址。第4个链表单元包括4个内存空间中的第4个内存空间的起始物理地址(Start_addr4)、第4个内存空间的物理地址的长度(len4)、第4个内存空间的下一个内存空间的起始物理地址(Next4),可选的,Next4=null。
在上述步骤S304提供的技术方案中,第一映射关系至少是第一设备允许访问的起始物理地址、第一设备允许访问的物理地址的长度、目标内存空间对应的起始虚拟地址之间的映射关系,可以理解的是,在第一设备允许访问多个设备的内存空间的情况下,第一映射关系还可以至少是第一设备允许访问的起始物理地址、第一设备允许访问的物理地址的长度、第一设备允许访问的设备以及目标内存空间对应的起始虚拟地址之间的映射关系等等。
可选的,在本实施例中,目标内存空间是预先配置给第一设备的扩展内存空间。
为了更好的理解本申请实施例中的确定目标内存空间中的待访问内存空间的过程,下面结合可选的实施例对本申请实施例中的确定目标内存空间中的待访问内存空间的过程进行解释和说明,可以但不限于适用于本申请实施例。
图4是根据本申请实施例的一种确定待访问内存空间的示意图,如图4所示,设备102允许访问的起始物理地址为0011以及允许访问的物理地址的长度为20;设备102允许访问的起始物理地址为0041以及允许访问的物理地址的长度为40;设备102允许访问的起始物理地址为0081以及允许访问的物理地址的长度为40。可以但不限于根据预先确定的第一映射关系和设备102中的处理器待访问的第一起始物理地址,确定第二起始虚拟地址,比如:在设备102中的处理器待访问的第一起始物理地址在上述三段物理地址范围内的情况下,确定第二起始虚拟地址为Start_vaddr=1001。在设备104的内存(比如:DDR2)中的目标内存空间中,第二起始虚拟地址为Start_vaddr=1001所对应的内存空间包括内存空间1、内存空间2和内存空间3。内存空间1的起始物理地址为0021,内存空间1的物理地址的长度为20,内存空间2的起始物理地址为0061,内存空间2的物理地址的长度为40,内存空间3的起始物理地址为0121,内存空间3的物理地址的长度为0160。可以但不限于根据预先确定的第二映射关系、第二起始虚拟地址Start_vaddr=1001以及待访问的物理地址的长度,确定目标内存空间中的待访问内存空间,比如:待访问内存空间为内存空间3。
图5是根据本申请实施例的一种第一映射关系的示意图,结合图4、图5所示,第一映射关系中至少记录了设备102允许访问的起始物理地址、设备102允许访问的物理地址的长度、以及内存空间1所在的设备104的Host_ip和port(端口)、内存空间1对应的第二起始虚拟地址(比如:Start_vaddr=1001)之间的映射关系。
详细来说,第一映射关系中记录了设备102允许访问的起始物理地址Start_addr=0011、设备102允许访问的物理地址的长度20、以及内存空间1所在的设备104的Host_ip1和port1、内存空间1对应的第二起始虚拟地址Start_vaddr=1001,以及内存空间1的物理地址的长度20之间的映射关系。以及设备102允许访问的起始物理地址Start_addr=0041、设备102允许访问的物理地址的长度40、以及内存空间2所在的设备104的Host_ip1和port1、内存空间2对应的第二起始虚拟地址Start_vaddr=1001,以及内存空间2的物理地址的长度40之间的映射关系。以及设备102允许访问的起始物理地址Start_addr=0081、设备102允许访问的物理地址的长度40、以及内存空间3所在的设备104的Host_ip1和port1、内存空间3对应的第二起始虚拟地址Start_vaddr=1001,以及内存空间3的物理地址的长度40之间的映射关系。
图6是根据本申请实施例的一种第二映射关系的示意图二,结合图4、和图6所示,第二映射关系至少是第二起始虚拟地址、目标内存空间的起始物理地址、目标内存空间的物理地址的长度之间的映射关系。第二映射关系可以但不限于通过数组链表进行标识,数组链表的表头包括第二起始虚拟地址(Start_vaddr),数组链表还可以包括物理地址的总长度(Total_len)。
详细来说,数组链表中的第1个链表单元包括3个内存空间中的第1个内存空间的起始物理地址(0021)、第1个内存空间的物理地址的长度(20)、第1个内存空间的下一个内存空间的起始物理地址(Next1),可选的,Next1对应的是下一个内存空间的起始物理地址在存放内存空间的物理地址的存储空间中所对应的地址,比如:Next1对应的是下一个内存空间的起始物理地址0061在存放内存空间的物理地址的存储空间中所对应的地址为10001。第2个链表单元包括3个内存空间中的第2个内存空间的起始物理地址(0061)、第2个内存空间的物理地址的长度(40)、第2个内存空间的下一个内存空间的起始物理地址(Next2),可选的,Next2对应的是下一个内存空间的起始物理地址在存放内存空间的物理地址的存储空间中所对应的地址,比如:Next2对应的是下一个内存空间的起始物理地址0121在存放内存空间的物理地址的存储空间中所对应的地址10002。第3个链表单元包括3个内存空间中的第3个内存空间的起始物理地址(0121)、第3个内存空间的物理地址的长度(40)、第3个内存空间的下一个内存空间的起始物理地址(Next3),可选的,Next3=null。
在一个示范性实施例中,可以但不限于通过以下方式确定目标内存空间中的待访问内存空间:在所述数据访问请求中还包括所述第一起始物理地址的情况下,将所述第一起始物理地址和所述第一映射关系中的所述第一设备允许访问的起始物理地址之间的地址间隔确定为物理地址偏移;根据所述第二起始虚拟地址、所述第二映射关系和所述物理地址偏移,在所述目标内存空间中确定所述待访问内存空间的起始物理地址;根据所述第二映射关系、所述待访问内存空间的起始物理地址和所述待访问的物理地址的长度,确定所述目标内存空间中的所述待访问内存空间。
可选的,在本实施例中,在数据访问请求中还包括第一起始物理地址的情况下,可以但不限于根据将第一起始物理地址和第一映射关系中的第一设备允许访问的起始物理地址之间的地址间隔确定为物理地址偏移,可以理解的是,第一起始物理地址可以但不限于为第一设备允许访问的起始物理地址和第一设备允许访问的物理地址的长度之间构成的物理地址范围内的任意物理地址。
在一个示范性实施例中,可以但不限于通过以下方式确定目标内存空间中的待访问内存空间:在所述数据访问请求中还包括物理地址偏移的情况下,根据所述第二起始虚拟地址、所述第二映射关系和所述物理地址偏移,在所述目标内存空间中确定所述待访问内存空间的起始物理地址,其中,所述物理地址偏移是所述第一起始物理地址和所述第一映射关系中的所述第一设备允许访问的起始物理地址之间的地址间隔;根据所述第二映射关系、所述待访问内存空间的起始物理地址和所述待访问的物理地址的长度,确定所述目标内存空间中的所述待访问内存空间。
可选的,在本实施例中,数据访问请求中还可以但不限于携带了物理地址的偏移,在这样的情况下,可以但不限于直接根据第二起始虚拟地址、第二映射关系和物理地址偏移,在目标内存空间中确定待访问内存空间的起始物理地址。通过这样的方式,节省了第二设备计算出物理地址偏移所需的计算机资源,提升了第二设备的资源的利用率。
在一个示范性实施例中,可以但不限于通过以下方式确定待访问内存空间的起始物理地址:在所述目标内存空间包括不连续的N个内存空间的情况下,根据所述第二映射关系,确定所述N个内存空间中与所述第二起始虚拟地址具有映射关系的第1个内存空间的起始物理地址,其中,N为大于或等于2的正整数,i为大于或等于1、且小于或等于N的正整数,所述第二映射关系是用数组链表表示的映射关系,所述数组链表的表头包括所述第二起始虚拟地址,所述数组链表中的第i个链表单元包括所述N个内存空间中的第i个内存空间的起始物理地址、所述第i个内存空间的物理地址的长度、所述第i个内存空间的下一个内存空间的起始物理地址;根据所述第1个内存空间的起始物理地址和所述物理地址偏移,在所述目标内存空间中确定所述待访问内存空间的起始物理地址,其中,所述第1个内存空间的起始物理地址与所述待访问内存空间的起始物理地址之间的地址间隔等于所述物理地址偏移,所述N个内存空间中的前一个内存空间的结束物理地址与后一个内存空间的起始物理地址之间的地址间隔被视为1。
可选的,在本实施例中,不连续的N个内存空间可以理解为N个内存空间之间的物理地址是不连续的,而N个内存空间中的每个内存空间中的物理地址是连续的,N个内存空间中的前一个内存空间的结束物理地址与后一个内存空间的起始物理地址之间的地址间隔被视为1。
在一个示范性实施例中,可以但不限于通过以下方式确定目标内存空间中的待访问内存空间:根据所述第二映射关系、所述待访问内存空间的起始物理地址和所述待访问的物理地址的长度,在所述目标内存空间中确定所述待访问内存空间的结束物理地址,其中,所述待访问内存空间的起始物理地址与所述待访问内存空间的结束物理地址之间的地址间隔等于所述待访问的物理地址的长度;在所述目标内存空间中将从所述待访问内存空间的起始物理地址到所述待访问内存空间的结束物理地址所对应的内存空间,确定为所述待访问内存空间。
可选的,在本实施例中,在目标内存空间中可以但不限于将从待访问内存空间的起始物理地址到待访问内存空间的结束物理地址所对应的内存空间,确定为待访问内存空间。可以理解的是,待访问内存空间可能是目标内存空间中的一个或者多个完整的内存空间,也可能是目标内存空间中的一个或者多个不完整的内存空间。也就是说,待访问内存空间至少包括目标内存空间中完整的内存空间和不完整的内存空间中的至少一个。
为了更好的理解本申请实施例中确定待访问内存空间的过程,下面结合可选的实施例,对本申请实施例中确定待访问内存空间的过程进行解释和说明,可以但不限于适用于本申请实施例。
图7是根据本申请实施例的一种确定待访问内存空间的示意图一,结合图4、图5、图6和图7所示,设备102(相当于第一设备)中的处理器待访问的第一起始物理地址为0020,待访问的物理地址的长度为60,将待访问的第一起始物理地址0020和第一映射关系中的设备102允许访问的起始物理地址0011之间的地址间隔确定为物理地址偏移,即物理地址偏移为10。根据预先确定的第一映射关系和设备102中的处理器待访问的第一起始物理地址0020确定出第二起始虚拟地址为Start_vaddr=1001。
根据第二起始虚拟地址Start_vaddr=1001、第二映射关系和物理地址偏移10,在目标内存空间中确定待访问内存空间的起始物理地址,详细来说,在目标内存空间包括不连续的3个内存空间(比如:内存空间1、内存空间2和内存空间3)的情况下,根据第二映射关系,确定3个内存空间中与第二起始虚拟地址Start_vaddr=1001具有映射关系的第1个内存空间(比如:内存空间1)的起始物理地址0021;根据第1个内存空间(比如:内存空间1)的起始物理地址0021和物理地址偏移10,在目标内存空间中确定待访问内存空间的起始物理地址为0030,其中,第1个内存空间(比如:内存空间1)的起始物理地址0021与待访问内存空间的起始物理地址0030之间的地址间隔等于物理地址偏移10。
在确定出待访问内存空间的起始物理地址0030的情况下,可以但不限于根据第二映射关系、待访问内存空间的起始物理地址0030和待访问的物理地址的长度60,在目标内存空间中确定待访问内存空间的结束物理地址0089,其中,待访问内存空间的起始物理地址与待访问内存空间的结束物理地址之间的地址间隔等于待访问的物理地址的长度60;在目标内存空间中将从待访问内存空间的起始物理地址0030到待访问内存空间的结束物理地址0089所对应的内存空间,确定为待访问内存空间。
在一个示范性实施例中,还可以但不限于通过以下方式在目标内存空间中确定待访问内存空间的起始物理地址:在所述目标内存空间包括1个内存空间的情况下,根据所述第二映射关系,确定所述目标内存空间中与所述第二起始虚拟地址具有映射关系的所述1个内存空间的起始物理地址,其中,所述第二映射关系至少是所述第二起始虚拟地址、所述1个内存空间的起始物理地址、所述1个内存空间的物理地址的长度之间的映射关系;根据所述1个内存空间的起始物理地址和所述物理地址偏移,在所述目标内存空间中确定所述待访问内存空间的起始物理地址,其中,所述1个内存空间的起始物理地址与所述待访问内存空间的起始物理地址之间的地址间隔等于所述物理地址偏移。
可选的,在本实施例中,可以但不限于通过以下方式确定目标内存空间中的待访问内存空间:根据第二映射关系、待访问内存空间的起始物理地址和待访问的物理地址的长度,在目标内存空间中确定待访问内存空间的结束物理地址,其中,待访问内存空间的起始物理地址与待访问内存空间的结束物理地址之间的地址间隔等于待访问的物理地址的长度;在目标内存空间中将从待访问内存空间的起始物理地址到待访问内存空间的结束物理地址所对应的内存空间,确定为待访问内存空间。
为了更好的理解本申请实施例中确定待访问内存空间的过程,下面结合可选的实施例,对本申请实施例中确定待访问内存空间的过程进行解释和说明,可以但不限于适用于本申请实施例。
图8是根据本申请实施例的一种确定待访问内存空间的示意图二,如图8所示,设备102(相当于第一设备)中的处理器待访问的第一起始物理地址为0020,待访问的物理地址的长度为60。设备104(相当于第二设备)上的目标内存空间包括内存空间1,内存空间1的起始物理地址为0021,结束物理地址为150,物理地址长度为130。
将待访问的第一起始物理地址0020和第一映射关系中的设备102允许访问的起始物理地址0011之间的地址间隔确定为物理地址偏移,即物理地址偏移为10。根据预先确定的第一映射关系和设备102中的处理器待访问的第一起始物理地址0020确定出第二起始虚拟地址为Start_vaddr=1001。
根据第二起始虚拟地址Start_vaddr=1001、第二映射关系和物理地址偏移10,在目标内存空间中确定待访问内存空间的起始物理地址,详细来说,在目标内存空间包括1个内存空间的情况下,根据第二映射关系,确定目标内存空间中与第二起始虚拟地址Start_vaddr=1001具有映射关系的1个内存空间的起始物理地址0021。根据1个内存空间的起始物理地址0021和物理地址偏移10,在目标内存空间中确定待访问内存空间的起始物理地址0030,其中,1个内存空间的起始物理地址0021与待访问内存空间的起始物理地址0030之间的地址间隔等于物理地址偏移10。
可以但不限于根据第二映射关系、待访问内存空间的起始物理地址0030和待访问的物理地址的长度,在1个内存空间中确定待访问内存空间的结束物理地址0089,其中,待访问内存空间的起始物理地址0030与待访问内存空间的结束物理地址0089之间的地址间隔等于待访问的物理地址的长度60;在1个内存空间中将从待访问内存空间的起始物理地址0030到待访问内存空间的结束物理地址0089所对应的内存空间,确定为待访问内存空间。
在一个示范性实施例中,可以但不限于通过以下方式对待访问内存空间执行访问指令信息所指示的访问操作:在所述访问指令信息指示读操作的情况下,对所述待访问内存空间执行所述读操作,得到读到的数据;将所述读到的数据按照所述第一设备与所述第二设备之间的传输协议拆分成M个数据包,其中,M为大于或等于1的正整数;向所述第一设备发送所述M个数据包。
可选的,在本实施例中,在访问指令信息指示读操作的情况下,可以表明第一设备希望对第二设备的内存中的目标内存空间中的待访问内存空间执行读操作,比如:读取待访问内存空间中存储的数据。在这样的情况下,第二设备可以但不限于从待访问内存空间中读数据,第二设备所读取到的数据的数据量可能较大,因此可以但不限于按照第一设备与第二设备之间的传输协议(比如:TCP(Transmission Control Protocol,传输控制协议协议)等等)将读到的数据拆分成M个数据包,然后向第一设备发送M个数据包。通过这样的方式,提升了数据传输的成功率。
在一个示范性实施例中,对待访问内存空间执行访问指令信息所指示的访问操作,可以但不限于包括以下情形之一:
情形一,在所述访问指令信息指示写操作、且所述数据访问请求中还包括待写入的数据的情况下,将所述待写入的数据写入到所述待访问内存空间。
可选的,在本实施例中,可以但不限于通过以下方式将待写入的数据写入到所述待访问内存空间:接收第一设备发送的Q个数据包,其中,Q个数据包是将数据访问请求中包括的待写入的数据按照第一设备与第二设备之间的传输协议拆分成得到的,Q为大于或等于1的正整数;对Q个数据包进行组包,得到待写入的数据;将待写入的数据写入到待访问内存空间。
情形二,在所述访问指令信息指示写操作、且所述数据访问请求中不包括待写入的数据的情况下,向所述第一设备发送指示信息,其中,所述指示信息用于表示所述第二设备已做执行写操作的准备;获取所述第一设备发送的M个数据包,其中,所述M个数据包是将所述待写入的数据按照所述第一设备与所述第二设备之间的传输协议拆分成的数据包,M为大于或等于1的正整数;对所述M个数据包进行组包,得到所述待写入的数据;将所述待写入的数据写入到所述待访问内存空间。
可选的,在本实施例中,可以但不限于通过第二设备中的通信单元,将待写入的数据写入待访问的内存空间中,图9是根据本申请实施例的一种将待写入数据写入待访问内存空间的示意图,如图9所示,在设备104(相当于第二设备)中部署有通信单元4,内存(比如:DDR2)以及CPU处理器。在通信单元4中部署有物理接口单元,媒体访问控制单元,协议栈处理单元,直接内存访问单元以及通信控制单元,设备104的内存(比如:DDR)包括目标内存空间,目标内存空间包括内存空间1、内存空间2和内存空间3,内存空间1可以但不限于为待访问内存空间。
物理接口单元主要是通信单元的物理层,可以但不下限于为光模块或者是以太网的电接口。媒体访问控制单元主要负责控制和连接物理接口单元的物理介质;协议栈处理单元负责将数据按照协议要求进行拆分发送给媒体控制单元,或者从媒体访问控制单元接受数据包并按协议进行拼包处理,然后由直接内存访问单元根据相关信息直接将数据写入对应的内存空间;直接内存访问单元负责从协议栈处理单元的寄存器中读取数据直接写入内存或者从内存中写入发送寄存器把数据发送出去;通信控制单元保存虚拟地址与物理内存地址的对应关系(比如:第二映射关系),然后一直读取媒体控制单元的接收寄存器的数据,数据命令包括读写方向信息、虚拟地址起始地址信息和长度信息,根据对端设备(比如:第一设备)发送的命令,组织直接内存访问单元将对应内存的数据发送出去或者接收数据并将数据写入到内存(比如:内存空间1)中。
通信单元4可以但不限于采用CPU-ByPass的设计,协议栈和内存读写均无需CPU参与,远程内存的读写并不消耗第二设备的CPU资源,在实现了扩充第一设备的内存的同时,第二设备的性能不会明显下降,降低了对第二设备的影响。
在上述步骤S306提供的技术方案中,在获取到第一设备发送的数据访问请求的情况下,可以表明第一设备希望访问第二设备的内存中的目标内存空间,在这样的情况下,可以根据预先确定的第二映射关系、第二起始虚拟地址以及待访问的物理地址的长度,确定目标内存空间中的待访问内存空间,然后对待访问内存空间执行访问指令信息所指示的读操作或者写操作等等。
相较于现有技术中,对内存进行了扩展的方案,比如:RDMA技术,这种技术将远程物理机的空闲内存模拟为本地的一个磁盘设备,该磁盘设备设置成本机的虚拟内存交换设备。当服务器的物理内存不足时,操作系统通过页面置换算法将不常用的物理页面的数据临时保存至交换设备即远程内存上,由网络传输速度远远高于磁盘I/O(Input/Output,输入/输出)的读写速度,因此使用其他物理主机上的空闲的内存作为交换设备可以显著降低磁盘I/O所带来的性能下降。
RDMA技术由于该部分内存数据换出放在远端的设备上,这种方法虽然在性能上有一定的提高,但是物理机器的内存空间并没有实际增大,其本质是一种CPU-Bypass的网络通信,远程内存不支持CPU直接寻址访问和操作,远程内存的数据处理需要读取到本地然后再做处理。而通过本申请实施例中的数据访问方法,在第一设备需要访问远端设备上的内存的情况下,通过第一映射关系和第二映射关系,可以直接对远端设备的内存的直接寻址和访问,实现了对设备的内存的真正扩展。
在本实施例中提供了一种另一种运行于上述移动终端的数据访问方法,图10是根据本申请实施例的数据访问方法的流程图二,如图10所示,该流程包括如下步骤:
步骤S1102,获取第一设备中的处理器待访问的第一起始物理地址和待访问的物理地址的长度,其中,所述第一起始物理地址是根据预先确定的第三映射关系和所述第一设备中的处理器待访问的第一起始虚拟地址确定的物理地址,所述第三映射关系至少是所述第一设备允许访问的起始虚拟地址与所述第一设备允许访问的起始物理地址之间的映射关系;
步骤S1104,根据预先确定的第一映射关系和所述第一起始物理地址,确定目标内存空间对应的第二起始虚拟地址,其中,所述第一映射关系至少是所述第一设备允许访问的起始物理地址、所述第一设备允许访问的物理地址的长度、所述目标内存空间对应的所述第二起始虚拟地址之间的映射关系,所述目标内存空间是第二设备的内存中的内存空间、且是允许所述第一设备访问的内存空间;
步骤S1106,向所述第二设备发送数据访问请求,其中,所述数据访问请求用于请求访问所述第二设备的内存中的所述目标内存空间,所述数据访问请求中包括所述第二起始虚拟地址、所述待访问的物理地址的长度以及访问指令信息,所述访问指令信息用于指示对所述目标内存空间中的待访问内存空间执行读操作或写操作,所述待访问内存空间是根据预先确定的第二映射关系、所述第二起始虚拟地址以及所述待访问的物理地址的长度确定的所述目标内存空间中的内存空间,所述第二映射关系至少是所述第二起始虚拟地址、所述目标内存空间的起始物理地址、所述目标内存空间的物理地址的长度之间的映射关系。
通过上述步骤,在第一设备希望访问第二设备的内存中的目标内存空间的情况下,可以但不限于根据预先确定的第一映射关系和待访问的第一起始物理地址,确定第二起始虚拟地址,然后向第二设备发送数据访问请求的方式,请求访问第二设备的内存中的目标内存空间。通过这样的方式,实现了根据预先确定的第一映射关系和第二映射关系以及第三映射关系,对第二设备上的目标内存空间中的待访问内存空间进行直接寻址和访问,因此,可以解决第一设备无法访问第二设备的内存中允许第一设备访问的内存空间的问题,达到第一设备可以访问第二设备的内存中允许第一设备访问的内存空间的效果。
其中,上述步骤的执行主体可以为终端、服务器等等,但不限于此。
在上述步骤S1102提供的技术方案中,在第一设备希望访问第二设备的内存的情况下,可以但不限于获取第一设备中的处理器(比如:CPU)待访问的第一起始物理地址和待访问的物理地址的长度。
可选的,在本实施例中,第一设备中的处理器所发出的可以但不限于为待访问的第一起始虚拟地址和待访问的物理地址的长度,可以但不限于根据预先确定的第三映射关系和待访问的第一起始虚拟地址,确定获取第一设备中的处理器(比如:CPU)待访问的第一起始物理地址,其中,第三映射关系至少是第一设备允许访问的起始虚拟地址与第一设备允许访问的起始物理地址之间的映射关系。
第一设备中的处理器(比如:CPU)访问内存时发出的地址是虚拟地址,第一设备中的主内存管理器通过页表技术将虚拟机地址转换为物理地址再去访问物理内存。图11是根据本申请实施例的一种第三映射关系的示意图,如图11所示,详细来说,第三映射关系至少是第一设备允许访问的虚拟地址与第一设备允许访问的物理地址之间的映射关系,比如:第一设备允许访问的虚拟地址可以但不限于包括0xC1000000、0xC1000001、0xC1000002,0xC1000000所对应的物理地址是0x31000000,0xC1000001所对应的物理地址是0x31000001,0xC1000002所对应的物理地址是0x31000002。详细来说,CPU发出的虚拟地址(相当于待访问的第一起始虚拟地址)由两部分组成VPN和offset(偏移),VPN(virtualpage number)是页表中的条目号,而offset是页内偏移。最终转换后的物理地址(相当于待访问的第一起始物理地址)也有两部分:PFN和Offset,PFN(Physical frame number)是物理页框号,offset和上面的虚拟地址的offset相同,是页内偏移。地址空间可以是32位的,也可以是64位,页表可以根据需要设计为一级或者多级。
在上述步骤S1104提供的技术方案中,在第一设备希望访问第二设备的内存的情况下,可以但不限于获取第一设备中的处理器(比如:CPU)待访问的第一起始物理地址和待访问的物理地址的长度。在这样的情况下,可以但不限于根据预先确定的第一映射关系和待访问的第一起始物理地址,确定第二起始虚拟地址。可以理解的是,第一映射关系可以但不限于存储在第一设备上。
可选的,在本实施例中,在第一设备允许访问多个设备的内存空间的情况下,第一映射关系还可以至少是第一设备允许访问的起始物理地址、第一设备允许访问的物理地址的长度、第一设备允许访问的设备(比如:设备的IP(Internet Protocol,互联网协议)地址、端口等等)以及目标内存空间对应的起始虚拟地址之间的映射关系。
在上述步骤S1106提供的技术方案中,在第一设备希望访问第二设备的内存的情况下,可以但不限于获取第一设备中的处理器(比如:CPU)待访问的第一起始物理地址和待访问的物理地址的长度。在这样的情况下,第一设备可以但不限于根据预先确定的第一映射关系和待访问的第一起始物理地址,确定第二起始虚拟地址,在这样的情况下,第一设备可以但不限于向第二设备发送数据访问请求,其中,数据访问请求中包括目标内存空间对应的第二起始虚拟地址、待访问的物理地址的长度以及访问指令信息,使得第二设备在获取到数据访问请求的情况下,可以根据预先确定的第二映射关系、第二起始虚拟地址以及待访问的物理地址的长度在目标内存空间中确定待访问内存空间,然后对待访问内存空间执行访问指令信息所执行的访问操作(比如:读操作或者写操作等等)。
可选的,在本实施例中,在向第二设备发送数据访问请求之后,还可以但不限于获取第二设备响应数据访问请求返回的访问结果,其中,访问结果是第二设备对待访问内存空间执行访问指令信息所指示的访问操作所得到的结果,待访问内存空间是根据预先确定的第二映射关系、第二起始虚拟地址以及待访问的物理地址的长度确定的目标内存空间中的内存空间,第二映射关系至少是第二起始虚拟地址、目标内存空间的起始物理地址、目标内存空间的物理地址的长度之间的映射关系。
可选的,在本实施例中,第二设备可以但不限于通过网络通信的方式将访问结果返回至第一设备,比如:采用光纤通信等等方式,这样的方式,具有访问速度较快、通信距离较远,抗干扰能力强的优点。通过这样的方式,实现了第一设备的操作将第二设备的内存中的目标内存空间当作正常的本地内存来访问,实现了对第一设备的内存的真正扩展,并实现了利用集群中的设备的空闲内存可以大大增加第一设备的可用内存,满足了第一设备中的大数据应用程序的需求。
在一个示范性实施例中,可以但不限于通过以下方式向第二设备发送数据访问请求:在所述第一起始物理地址是所述处理器待读取的起始物理地址、在所述第一设备的缓存空间中并未缓存与所述第一起始物理地址和所述待访问的物理地址的长度对应的第一数据集合的情况下,向所述第二设备发送数据访问请求,其中,所述第一数据集合包括预先对所述待访问内存空间执行所述读操作所得到的数据。
可选的,在本实施例中,第一设备的缓存空间可以但不限于用于缓存获取到的第二设备响应数据访问请求返回的数据,比如:缓存空间为SRAM(Static Random-AccessMemory,静态随机存取存储器)等等。
可选的,在本实施例中,在处理器待访问的第一起始物理地址是处理器待读取的起始物理地址的情况下,可以表明第一设备希望从待访问内存空间中读取第一数据集合,可以但不限于先从第一设备的缓存空间中查找待访问的第一起始物理地址和待访问的物理地址的长度对应的第一数据集合。图12是根据本申请实施例的一种从缓存空间中查找第一数据集合的示意图,如图12所示,在设备102(相当于第一设备)的远端内存控制器2中部署有远程内存接口控制单元、地址映射单元、通信管理单元、远程内存缓存(相当于缓存空间)以及缓存计数器。
在远程内存缓存中缓存有曾经获取到第二设备(或者其他的设备)响应设备102的数据访问请求所返回的数据集合,这些数据集合可以但不限于包括:待访问的起始物理地址1-待访问的物理地址的长度1-数据集合1、待访问的起始物理地址2-待访问的物理地址的长度1-数据集合2以及待访问的起始物理地址3-待访问的物理地址的长度3-数据集合3。在查找到第一数据集合的情况下,直接从缓存空间中读取第一数据集合。在未查找到第一数据集合的情况下,向第二设备发送数据访问请求。
在一个示范性实施例中,可以但不限于通过以下方式获取第二设备响应数据访问请求返回的访问结果:在所述访问指令信息指示读操作的情况下,接收所述第二设备发送的M个数据包,其中,所述M个数据包是将读到的数据按照所述第一设备与所述第二设备之间的传输协议拆分成的数据包,所述读到的数据是所述第二设备对待访问内存空间执行所述读操作所得到的数据,M为大于或等于1的正整数;对所述M个数据包进行组包,得到所述第一数据集合;将所述第一起始物理地址、所述待访问的物理地址的长度和所述第一数据集合缓存到所述第一设备的所述缓存空间中。
可选的,在本实施例中,在第一设备的缓存空间中并未缓存与待访问的第一起始物理地址和所述待访问的物理地址的长度对应的第一数据集合的情况下,可以但不限于将接收到的第二设备返回的M个数据包进行组包,然后将组包得到的数据集合缓存到缓存空间中,图13是根据本申请实施例的一种缓存第一数据集合的示意图,如图13所示,在设备102(相当于第一设备)的远端内存控制器2的远程内存缓存(相当于缓存空间)中存储有待访问的起始物理地址1-待访问的物理地址的长度1-数据集合1、待访问的起始物理地址2-待访问的物理地址的长度2-数据集合2以及待访问的起始物理地址3-待访问的物理地址的长度3-数据集合3等等数据集合。
可以但不限于将接收到的第二设备发送的M个数据包按照流水号的从小到大的顺序进行组包,得到第一数据集合,其中,M个数据包中的各个数据包都具有一一对应的流水号。第一数据集合可以但不限于为待访问的起始物理地址4-待访问的物理地址的长度4-数据集合4,将第一数据集合缓存在缓存空间中。
在一个示范性实施例中,向第二设备发送数据访问请求可以但不限于包括以下方式之一:
方式一,在所述第一起始物理地址是所述处理器待写入的起始物理地址、在所述第一设备的缓存空间中缓存了与所述第一起始物理地址和所述待访问的物理地址的长度对应的第一数据集合的情况下,将所述第一设备的缓存空间中缓存的所述第一数据集合修改为所述处理器待写入的第二数据集合,并向所述第二设备发送所述数据访问请求,其中,所述第一数据集合包括预先对待访问内存空间执行所述读操作所得到的数据。
可选的,在本实施例中,在第一设备希望对待访问内存空间执行写操作的情况下,可以但不限于先从第一设备的缓存空间中查找第一起始物理地址和待访问的物理地址的长度对应的第一数据集合。在查找到的情况下,直接对第一设备的缓存空间中的第一数据集合进行修改,然后向第二设备发送数据访问请求,实现了在对第一设备的缓存空间中的第一数据集合进行了修改的情况下,及时地将修改后的第二数据集合同步到第二设备的内存中,提升了同步数据的及时性。
方式二,在所述第一起始物理地址是所述处理器待写入的起始物理地址、在所述第一设备的缓存空间中未缓存与所述第一起始物理地址和所述待访问的物理地址的长度对应的所述第一数据集合的情况下,从所述第二设备获取所述第一数据集合,将所述第一数据集合缓存到所述第一设备的所述缓存空间中,将所述第一设备的缓存空间中缓存的所述第一数据集合修改为所述处理器待写入的第二数据集合,并向所述第二设备发送所述数据访问请求。
可选的,在本实施例中,在第一设备希望对待访问内存空间执行写操作的情况下,可以但不限于先从第一设备的缓存空间中查找第一起始物理地址和待访问的物理地址的长度对应的第一数据集合。在查找到的情况下,在没有查找到第一数据集合的情况下,可以从第二设备获取第一数据集合,然后将第一数据集合缓存到第一设备的缓存空间中,再对第一设备的缓存空间中的第一数据集合进行修改,然后向第二设备发送数据访问请求,实现修改后的数据的同步。
在一个示范性实施例中,向第二设备发送所述数据访问请求,可以但不限于通过以下方式包括以下情形之一:
情形一,在所述缓存空间已满的情况下,向所述第二设备发送所述数据访问请求,其中,所述数据访问请求用于请求对所述目标内存空间执行写操作。
可选的,在本实施例中,可以但不限于在缓存空间中存储的数据量大于或者等于数据量阈值的情况下,可以表明缓存空间已满,在这样的情况下,可以但不限于向第二设备发送数据访问请求,将缓存空间中的至少部分数据写入目标内存空间中,避免了缓存空间中的数据无法与目标内存空间中的数据保持同步。
情形二,在成功将所述第一设备的缓存空间中缓存的所述第一数据集合修改为所述处理器待写入的所述第二数据集合的情况下,向所述第二设备发送所述数据访问请求。
可选的,在本实施例中,可以但不限于在成功将第一设备的缓存空间中缓存的第一数据集合修改为处理器待写入的第二数据集合的情况下,立即向第二设备发送数据访问请求。通过这样的方式,实现了及时将修改成功的数据集合同步写入目标内存空间中,提升了目标内存空间中数据更新的及时性。
在一个示范性实施例中,可以但不限于通过以下方式对缓存空间中的数据进行处理:在将所述第一设备的所述缓存空间中缓存的所述第一数据集合修改为所述处理器待写入的第二数据集合的情况下,在所述缓存空间中为所述第二数据集合设置修改标记;在所述缓存空间已满的情况下,或,在所述缓存空间已满、且存在待缓存到所述缓存空间中的数据的情况下,在所述缓存空间中删除未设置有所述修改标记的数据中的至少部分数据。
可选的,在本实施例中,可以但不限于为缓存空间中进行修改的数据设置修改标记,在缓存空间已满的情况下,可以但不限于将缓存空间中没有修改标记的数据集合删除,图14是根据本申请实施例的一种删除缓存空间中的数据的示意图,如图14所示,在设备102(相当于第一设备)的远端内存控制器2中部署有远程内存缓存(相当于缓存空间)和缓存计数器,在远程内存缓存中缓存有待访问的起始物理地址1-待访问的物理地址的长度1-数据集合1、待访问的起始物理地址2-待访问的物理地址的长度2-数据集合2以及待访问的起始物理地址3-待访问的物理地址的长度3-数据集合3,和待访问的起始物理地址4-待访问的物理地址的长度4-第二数据集合,其中,数据集合1和第二数据集合是进行过修改的数据集合,可以但不限于为数据集合1和第二数据集合设置修改标记,而数据集合2和数据集合3是没有进行过修改的数据集合,因此数据集合2和数据集合3未设置修改标记。
另外,第一设备每次访问远程内存缓存的时候,缓存计数器会为远程内存缓存中的每一条缓存数据的计数增加1,被访问的缓存数据的计数清零,被修改过的缓存条目会置上修改标记。详细来说,缓存计数器中记录了数据集合1的计数0、数据集合2的计数7、数据集合3的计数8以及数据集合4的计数0。
由于远程内存缓存的空间有限,当缓存已满又需要重新缓存新读入数据的时候,通信管理单元选中缓存计数器将计数值最大的缓存数据(也即最长时间没有被访问的缓存数据),比如:删除缓存计数器的计数最大的数据集合3。如果没有修改标志则直接删除该条条目,比如:删除数据集合2和数据集合3,如果有修改标志,则读取该缓存条目信息包括远端内存的IP地址、端口号、起始虚拟地址(相当于第二起始虚拟地址),然后通过通信单元将该缓存的数据写入远程内存中。
在一个示范性实施例中,可以但不限于通过以下方式建立第一映射关系:向所述第二设备发起内存扩展请求,其中,所述内存扩展请求中包括所述第二起始虚拟地址、所述第一设备允许访问的物理地址的长度;在所述第二设备响应于所述内存扩展请求成功为所述第一设备分配了所述目标内存空间的情况下,在所述第一设备上建立所述第一映射关系,其中,所述目标内存空间是在所述第二设备的内存中处于空闲状态的内存空间,所述目标内存空间的物理地址的长度等于所述第一设备允许访问的物理地址的长度。
可选的,在本实施例中,在第一设备的内存不够用的情况下,可以但不限于向第二设备发起内存扩展请求,希望第二设备在第二设备的内存中空闲内存空间中为第一设备分配所需的内存空间。在这样的情况下,在第二设备响应于内存扩展请求成功为第一设备分配了目标内存空间的情况下,在第一设备上建立第一映射关系。通过这样的方式,提升了设备上的空闲状态的内存空间的利用率。
在一个示范性实施例中,可以但不限于通过以下方式向第二设备发送数据访问请求:将所述第一起始物理地址和所述第一映射关系中的所述第一设备允许访问的起始物理地址之间的地址间隔确定为物理地址偏移,并将所述物理地址偏移携带在所述数据访问请求中;向所述第二设备发送所述数据访问请求;或者将所述第一起始物理地址携带在所述数据访问请求中;向所述第二设备发送所述数据访问请求。
可选的,在本实施例中,可以但不限于在数据访问请求中携带待访问的第一起始物理地址,第二设备在获取到数据访问请求的情况下,可以将待访问的第一起始物理地址和第一映射关系中的第一设备允许访问的起始物理地址之间的地址间隔确定为物理地址偏移,可以理解的是,第一映射关系可以在第二设备上,或者,第二设备可以访问第一设备上的第一映射关系等等。
在一个示范性实施例中,可以但不限于通过以下方式向第二设备发送数据访问请求:在预先确定了P个映射关系、且所述P个映射关系与预先建立的P个通信任务一一对应的情况下,通过所述P个通信任务中与所述第一映射关系对应的通信任务,向所述第二设备发送所述数据访问请求,其中,P为大于或等于2的正整数,所述P个映射关系包括所述第一映射关系。
可选的,在本实施例中,不同的映射关系对应有不同的通信任务,可以理解的是,可以但不下限于通过第一映射关系对应的通信任务,向第二设备发送数据访问请求。
在一个示范性实施例中,还提供了一种数据访问设备,包括:第一处理器、主内存管理器、远端内存控制器以及第一通信单元,所述第一处理器与所述主内存管理器连接,所述主内存管理器与所述远端内存控制器连接,所述远端内存控制器与所述第一通信单元连接,其中,所述主内存管理器,用于根据预先确定的第三映射关系和所述第一处理器待访问的第一起始虚拟地址,确定所述第一处理器待访问的第一起始物理地址,其中,所述第三映射关系至少是所述数据访问设备允许访问的起始虚拟地址与所述数据访问设备允许访问的起始物理地址之间的映射关系;所述远端内存控制器,用于根据预先确定的第一映射关系和所述第一起始物理地址,确定目标内存空间对应的第二起始虚拟地址,其中,所述第一映射关系至少是所述数据访问设备允许访问的起始物理地址、所述数据访问设备允许访问的物理地址的长度、所述目标内存空间对应的所述第二起始虚拟地址之间的映射关系,所述目标内存空间是第二设备的内存中的内存空间、且是允许所述数据访问设备访问的内存空间;所述第一通信单元,用于向所述第二设备发送数据访问请求,其中,所述数据访问请求用于请求访问所述第二设备的内存中的所述目标内存空间,所述数据访问请求中包括所述目标内存空间对应的所述第二起始虚拟地址、所述待访问的物理地址的长度以及访问指令信息。
在一个示范性实施例中,还提供了一种远端数据存储设备,包括:第二通信单元和内存,其中,所述第二通信单元包括媒体访问控制单元,通信控制单元,直接内存访问单元;所述媒体访问控制单元,用于获取第一设备发送的数据访问请求,其中,所述数据访问请求用于请求访问所述内存中的目标内存空间,所述目标内存空间是允许所述第一设备访问的内存空间;所述通信控制单元,用于在所述数据访问请求中包括所述目标内存空间对应的第二起始虚拟地址、待访问的物理地址的长度以及访问指令信息的情况下,根据预先确定的第二映射关系、所述第二起始虚拟地址以及所述待访问的物理地址的长度,确定所述目标内存空间中的待访问内存空间,其中,所述第二起始虚拟地址是根据预先确定的第一映射关系和所述第一设备中的处理器待访问的第一起始物理地址确定的虚拟地址,所述第一映射关系至少是所述第一设备允许访问的起始物理地址、所述第一设备允许访问的物理地址的长度、所述目标内存空间对应的所述第二起始虚拟地址之间的映射关系,所述第二映射关系至少是所述第二起始虚拟地址、所述目标内存空间的起始物理地址、所述目标内存空间的物理地址的长度之间的映射关系,所述第一起始物理地址是根据预先确定的第三映射关系和所述第一起始虚拟地址确定的物理地址,所述第三映射关系至少是所述第一设备允许访问的起始虚拟地址与所述第一设备允许访问的起始物理地址之间的映射关系;所述直接内存访问单元,用于对所述待访问内存空间执行所述访问指令信息所指示的访问操作。
为了更好地理解本申请实施例中数据访问方法,下面再结合可选的实施例对本申请实施例中的数据访问方法进行解释和说明,可以但不限于适用于本申请实施例。
步骤S1501,远程内存贡献方(相当于第二设备)申请用户内存空间(相当于目标内存空间),并将虚拟地址和长度传入操作系统内核,并查询对应的内存物理空间,并用一个数组链表保存起来,该链表包括链表头(包含虚拟地址的起始地址、内存空间大小)、链表单元包括起始地址、长度和下一个内存块起始地址,并将该数据链表的信息发送给通信控制单元。最后等待接收远程内存需求方发来的命令,按命令进行工作。
步骤S1502,远程内存需求方(相当于第一设备)手动配置或者通过网络协商本地物理地址与远程内存的对应关系,每一条目记录了一片本地物理地址与远程内存的IP地址、端口号、起始虚拟地址(相当于第二起始虚拟地址)和长度。该信息保存在远程内存控制器的地址映射单元。配置完成后,通信管理单元会检查配置信息是否发生变化,如果发生变化则进行相应处理,保证每一片远程内存有一个通信任务,该通信任务与远程内存贡献方建立连接。
步骤S1503,当远程内存需求方的CPU读取的内存物理地址指向远程内存时,远程内存接口控制单元首先会读取远程内存缓存(相当于缓存空间)查看是否有缓存记录,如果存在该物理地址对应的缓存数据则直接将数据返回给CPU;缓存以4KB地址大小为单位,缓存信息包括物理地址起始地址信息、对应远程内存的信息(包括IP地址、端口、虚拟地址起始地址)以及4KB的数据。如果远程内存缓存中没有数据,则远程内存接口控制单元将物理地址和长度信息(4KB的整数倍)发给通信管理单元让其通过该片地址对应的通信任务发起通信读取远程内存数据,通信管理单元首先查看地址映射单元中的配置信息,获取物理地址对应的远端内存贡献方的网络地址、端口及起始虚拟地址,然后通过通信单元发起通信命令通知远程内存贡献方的通信单元。该命令信息包括本地网络地址,通信任务号、内存物理地址、远端内存贡献方的网络地址、端口及起始虚拟地址、内存长度和读命令字。
远程内存贡献方的通信单元收到该条数据后,发现是内存读命令,则由媒体访问控制单元发给通信控制单元。通信控制单元根据读命令的信息,查阅地址转换信息,计算出所要读取的物理内存地址链,然后填充读物理内存散列表信息,加上远程内存需求方的网络地址,通信任务号、内存物理地址、远端内存贡献方的网络地址和端口等信息发给直接内存访问单元,直接内存访问单元将读取对应内存中数据,发送给协议栈处理单元,协议栈处理单元将内存数据按协议要求拆成一个或多个数据包,每个数据包包括远程内存需求方的网络地址,通信任务号、内存物理地址、内存长度、远端内存贡献方的网络地址、端口、内存数据、流水号和命令字等,然后通过媒体访问控制层和物理层发送出去。
远程内存需求方收到远程内存贡献方的数据包后,根据通信任务号、内存物理地址内存长度、远端内存贡献方的网络地址、端口号、内存数据、流水号和命令字相关信息进行组包,得到要读取远端内存的起始地址、长度以及数据,然后写入远端内存缓存空间进行保存,同时将合适的数据返回给CPU,完成CPU的远程内存的寻址的访问。
步骤S1504,当CPU写入的内存物理地址指向远程内存时,远程内存接口控制单元首先会在远程内存缓存查看是否有缓存,如果存在缓存则直接修改缓存中的数据;如果远程内存缓存中没有数据,则执行步骤S1503,通过通信单元读取远程内存中的数据后把数据保存在远程内存缓存中,最后在远程内存缓存中修改对应的数据。
步骤S1505,当缓存中的数据已满需要将缓存中的数据回写到远程内存时,通信管理单元通过该片地址对应的通信任务发起通信写入远程内存数据,通信管理单元首先查看地址映射单元中的配置信息,获取物理地址对应的远端内存贡献方的网络地址、端口及起始虚拟地址,然后通过通信单元发起通信命令通知远程内存贡献方的通信单元。该命令信息包括本地网络地址,通信任务号、内存物理地址、远端内存贡献方的网络地址、端口及起始虚拟地址、内存长度和写命令字。
远程内存贡献方的通信单元收到该条数据后,发现是内存写命令,则由媒体访问控制单元发给通信控制单元。通信控制单元根据写命令的信息,查阅地址转换信息,计算出所要读取的物理内存地址链,然后填充写物理内存散列表信息,然后启动直接内存访问单元的写动作,直接内存访问单元准备将读取对应协议栈处理单元中收到的内存数据写入到对应的物理内存空间。远程内存贡献方准备好之后,通信控制单元发送写内存已准备好的命令的信息,包括远程内需求方的IP地址、通信任务号、远程内存贡献方的IP地址、端口号、写命令已准备好控制字、内存地址和长度信息,通过媒体访问控制层、物理接口层发送给远程内存需求方。
远程内存需求方收到远程内存贡献方的写内存已准备好的命令信息后,然后将内存数据包按照协议要求拆成一个或多个数据包,每个数据包包括远程内存需求方的网络地址,通信任务号、内存物理地址、内存长度、远端内存贡献方的网络地址、端口、内存数据、流水号和命令字等,然后通过媒体访问控制层和物理层发送出去。远程内存需求方每发送一个数据包都会等待远程内存需求方的收到确认包,然后再发送下一个数据包,确保数据的完整性。
远程内存贡献方的媒体控制访问单元收到远程内存需求方的数据包后,一方面会给远程内存需求方发送数据包收到确认信息(重复的数据包将会丢弃),另外也将收到的数据包传送给协议栈处理单元,该单元根据通信任务号、内存物理地址内存长度、远端内存贡献方的网络地址、端口号、内存数据、流水号和命令字相关信息进行组包,每收到一个完成的数据包后,则启动直接内存访问单元,将数据写入对应的内存空间,完成写操作。
详细来说,在本实施例中,以第一设备和第二设备为服务器为例,比如:本地服务器(相当于第一设备)为ARM 32位CPU读取远程服务器(相当于第二设备)中的远程内存的过程,图15是根据本申请实施例的一种访问远端内存的示意图,如图15所示,当MMU(MemoryManagement Unit,内存管理单元)页表将待访问的第一起始虚拟地址0xC1000000映射至待访问的第一起始物理地址0x31000000,物理地址0x31000000被分配给了远程内存控制器;远程内存控制器把地址空间(第一起始物理地址0x31000000,长度为4KB)映射配置到目标机器进程空间(IP地址为192.168.1.2,端口号为30000)的虚拟地址空间(第二起始虚拟地址为0x81000000,长度为4KB)。目标机器进程空间虚拟地址空间(第二起始虚拟地址为0x81000000,长度为4KB)对应实际物理内存空间的起始物理地址为0x21000000,其长度为4KB。当CPU执行以下指令时:
MOV R1, #0xC1000000
LDR R0,[R1]
CPU的MMU自动将待访问的第一起始虚拟地址0xC1000000转换为待访问的第一起始物理地址0x31000000,地址线上将出现0xC1000000以及在控制线上发出控制信号,选通远程内存控制器,其内部的远程内存接口控制单元收到地址线和数据线相关信号后,判断CPU是否访问自己,如是则首先会查询远程内存控制器的远程内存缓存是否有缓存,如果有则将数据放到数据线上并在控制线发出相应的信号通知CPU读完成;如果为否,则远程内存控制器向目标机器(IP地址为192.168.1.2,端口号为30000)发起通信,获得目标机器进程虚拟内存地址0x81000000对应物理内存中的数据(起始地址为0x21000000,其长度为4KB),远程内存控制器收到数据后缓存,然后将第一个32位数据放到数据线上并在控制线上发出信号通知CPU读完成。至此,CPU一次远程内存读操作完成。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
在本实施例中还提供了一种数据访问装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
在本实施例中还提供了一种数据访问装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
本申请实施例提供的另一种数据访问装置,包括:
第一获取模块,用于获取第一设备中的处理器待访问的第一起始物理地址和待访问的物理地址的长度,其中,所述第一起始物理地址是根据预先确定的第三映射关系和所述第一设备中的处理器待访问的第一起始虚拟地址确定的物理地址,所述第三映射关系至少是所述第一设备允许访问的起始虚拟地址与所述第一设备允许访问的起始物理地址之间的映射关系;
第一确定模块,用于根据预先确定的第一映射关系和所述第一起始物理地址,确定目标内存空间对应的第二起始虚拟地址,其中,所述第一映射关系至少是所述第一设备允许访问的起始物理地址、所述第一设备允许访问的物理地址的长度、所述目标内存空间对应的所述第二起始虚拟地址之间的映射关系,所述目标内存空间是第二设备的内存中的内存空间、且是允许所述第一设备访问的内存空间;
发送模块,用于向所述第二设备发送数据访问请求,其中,所述数据访问请求用于请求访问所述第二设备的内存中的所述目标内存空间,所述数据访问请求中包括所述第二起始虚拟地址、所述待访问的物理地址的长度以及访问指令信息,所述访问指令信息用于指示对所述目标内存空间中的待访问内存空间执行读操作或写操作,所述待访问内存空间是根据预先确定的第二映射关系、所述第二起始虚拟地址以及所述待访问的物理地址的长度确定的所述目标内存空间中的内存空间,所述第二映射关系至少是所述第二起始虚拟地址、所述目标内存空间的起始物理地址、所述目标内存空间的物理地址的长度之间的映射关系。
通过上述步骤,在第一设备希望访问第二设备的内存中的目标内存空间的情况下,可以但不限于根据预先确定的第一映射关系和待访问的第一起始物理地址,确定第二起始虚拟地址,然后向第二设备发送数据访问请求的方式,请求访问第二设备的内存中的目标内存空间。通过这样的方式,实现了根据预先确定的第一映射关系和第二映射关系以及第三映射关系,对第二设备上的目标内存空间中的待访问内存空间进行直接寻址和访问,因此,可以解决第一设备无法访问第二设备的内存中允许第一设备访问的内存空间的问题,达到第一设备可以访问第二设备的内存中允许第一设备访问的内存空间的效果。
在一个示范性实施例中,所述发送模块,包括:
第一发送单元,用于在所述第一起始物理地址是所述处理器待读取的起始物理地址、在所述第一设备的缓存空间中并未缓存与所述第一起始物理地址和所述待访问的物理地址的长度对应的第一数据集合的情况下,向所述第二设备发送数据访问请求,其中,所述第一数据集合包括预先对所述待访问内存空间执行所述读操作所得到的数据。
在一个示范性实施例中,所述装置还包括:
接收模块,用于在所述向所述第二设备发送数据访问请求之后,在所述访问指令信息指示读操作的情况下,接收所述第二设备发送的M个数据包,其中,所述M个数据包是将读到的数据按照所述第一设备与所述第二设备之间的传输协议拆分成的数据包,所述读到的数据是所述第二设备对待访问内存空间执行所述读操作所得到的数据,M为大于或等于1的正整数;
组包模块,用于对所述M个数据包进行组包,得到所述第一数据集合;
缓存模块,用于将所述第一起始物理地址、所述待访问的物理地址的长度和所述第一数据集合缓存到所述第一设备的所述缓存空间中。
在一个示范性实施例中,所述发送模块,包括:
第一处理单元,用于在所述第一起始物理地址是所述处理器待写入的起始物理地址、在所述第一设备的缓存空间中缓存了与所述第一起始物理地址和所述待访问的物理地址的长度对应的第一数据集合的情况下,将所述第一设备的缓存空间中缓存的所述第一数据集合修改为所述处理器待写入的第二数据集合,并向所述第二设备发送所述数据访问请求,其中,所述第一数据集合包括预先对待访问内存空间执行所述读操作所得到的数据;或者
第二处理单元,用于在所述第一起始物理地址是所述处理器待写入的起始物理地址、在所述第一设备的缓存空间中未缓存与所述第一起始物理地址和所述待访问的物理地址的长度对应的所述第一数据集合的情况下,从所述第二设备获取所述第一数据集合,将所述第一数据集合缓存到所述第一设备的所述缓存空间中,将所述第一设备的缓存空间中缓存的所述第一数据集合修改为所述处理器待写入的第二数据集合,并向所述第二设备发送所述数据访问请求。
在一个示范性实施例中,所述发送模块,包括:
第二发送单元,用于在所述缓存空间已满的情况下,向所述第二设备发送所述数据访问请求,其中,所述数据访问请求用于请求对所述目标内存空间执行写操作;或者
第三发送单元,用于在成功将所述第一设备的缓存空间中缓存的所述第一数据集合修改为所述处理器待写入的所述第二数据集合的情况下,向所述第二设备发送所述数据访问请求。
在一个示范性实施例中,所述装置还包括:
设置模块,用于在将所述第一设备的所述缓存空间中缓存的所述第一数据集合修改为所述处理器待写入的第二数据集合的情况下,在所述缓存空间中为所述第二数据集合设置修改标记;
删除模块,用于在所述缓存空间已满的情况下,或,在所述缓存空间已满、且存在待缓存到所述缓存空间中的数据的情况下,在所述缓存空间中删除未设置有所述修改标记的数据中的至少部分数据。
在一个示范性实施例中,所述装置还包括:
发起模块,用于在所述向所述第二设备发送数据访问请求之前,向所述第二设备发起内存扩展请求,其中,所述内存扩展请求中包括所述第二起始虚拟地址、所述第一设备允许访问的物理地址的长度;
第一建立模块,用于在所述第二设备响应于所述内存扩展请求成功为所述第一设备分配了所述目标内存空间的情况下,在所述第一设备上建立所述第一映射关系,其中,所述目标内存空间是在所述第二设备的内存中处于空闲状态的内存空间,所述目标内存空间的物理地址的长度等于所述第一设备允许访问的物理地址的长度。
在一个示范性实施例中,所述发送模块,包括:
第一确定单元,用于将所述第一起始物理地址和所述第一映射关系中的所述第一设备允许访问的起始物理地址之间的地址间隔确定为物理地址偏移,并将所述物理地址偏移携带在所述数据访问请求中;向所述第二设备发送所述数据访问请求;或者
第三处理单元,用于将所述第一起始物理地址携带在所述数据访问请求中;向所述第二设备发送所述数据访问请求。
在一个示范性实施例中,所述发送模块,包括:
第四发送单元,用于在预先确定了P个映射关系、且所述P个映射关系与预先建立的P个通信任务一一对应的情况下,通过所述P个通信任务中与所述第一映射关系对应的通信任务,向所述第二设备发送所述数据访问请求,其中,P为大于或等于2的正整数,所述P个映射关系包括所述第一映射关系。
本申请实施例提供的另一种数据访问装置,包括:
第二获取模块,用于获取第一设备发送的数据访问请求,其中,所述数据访问请求用于请求访问第二设备的内存中的目标内存空间,所述目标内存空间是允许所述第一设备访问的内存空间;
第二确定模块,用于在所述数据访问请求中包括所述目标内存空间对应的第二起始虚拟地址、待访问的物理地址的长度以及访问指令信息的情况下,根据预先确定的第二映射关系、所述第二起始虚拟地址以及所述待访问的物理地址的长度,确定所述目标内存空间中的待访问内存空间,其中,所述第二起始虚拟地址是根据预先确定的第一映射关系和所述第一设备中的处理器待访问的第一起始物理地址确定的虚拟地址,所述第一映射关系至少是所述第一设备允许访问的起始物理地址、所述第一设备允许访问的物理地址的长度、所述目标内存空间对应的所述第二起始虚拟地址之间的映射关系,所述第二映射关系至少是所述第二起始虚拟地址、所述目标内存空间的起始物理地址、所述目标内存空间的物理地址的长度之间的映射关系,所述第一起始物理地址是根据预先确定的第三映射关系和所述第一设备中的所述处理器待访问的第一起始虚拟地址确定的物理地址,所述第三映射关系至少是所述第一设备允许访问的起始虚拟地址与所述第一设备允许访问的起始物理地址之间的映射关系;
执行模块,用于对所述待访问内存空间执行所述访问指令信息所指示的访问操作。
通过上述步骤,在第二设备的内存中的空闲内存空间中为第一设备分配了允许第一设备访问的内存空间,预先确定了第一映射关系和第二映射关系,在第二设备在获取到第一设备发送的数据访问请求的情况下,可以根据预先确定的第二映射关系、第二起始虚拟地址以及待访问的物理地址的长度,确定第二设备的内存中允许第一设备访问的内存空间中的待访问内存空间,然后对待访问内存空间执行访问指令信息所执行的访问操作的过程,通过这样的方式,实现了对第二设备上第一设备的扩展内存的直接寻址和访问。因此,可以解决第一设备无法访问第二设备的内存中允许第一设备访问的内存空间的问题,达到第一设备可以访问第二设备的内存中允许第一设备访问的内存空间的效果。
在一个示范性实施例中,所述第二确定模块,包括:
第二确定单元,用于在所述数据访问请求中还包括所述第一起始物理地址的情况下,将所述第一起始物理地址和所述第一映射关系中的所述第一设备允许访问的起始物理地址之间的地址间隔确定为物理地址偏移;
第三确定单元,用于根据所述第二起始虚拟地址、所述第二映射关系和所述物理地址偏移,在所述目标内存空间中确定所述待访问内存空间的起始物理地址;
第四确定单元,用于根据所述第二映射关系、所述待访问内存空间的起始物理地址和所述待访问的物理地址的长度,确定所述目标内存空间中的所述待访问内存空间。
在一个示范性实施例中,所述第二确定模块,包括:
第五确定单元,用于在所述数据访问请求中还包括物理地址偏移的情况下,根据所述第二起始虚拟地址、所述第二映射关系和所述物理地址偏移,在所述目标内存空间中确定所述待访问内存空间的起始物理地址,其中,所述物理地址偏移是所述第一起始物理地址和所述第一映射关系中的所述第一设备允许访问的起始物理地址之间的地址间隔;
第六确定单元,用于根据所述第二映射关系、所述待访问内存空间的起始物理地址和所述待访问的物理地址的长度,确定所述目标内存空间中的所述待访问内存空间。
在一个示范性实施例中,所述第三确定单元,用于:
在所述目标内存空间包括不连续的N个内存空间的情况下,根据所述第二映射关系,确定所述N个内存空间中与所述第二起始虚拟地址具有映射关系的第1个内存空间的起始物理地址,其中,N为大于或等于2的正整数,i为大于或等于1、且小于或等于N的正整数,所述第二映射关系是用数组链表表示的映射关系,所述数组链表的表头包括所述第二起始虚拟地址,所述数组链表中的第i个链表单元包括所述N个内存空间中的第i个内存空间的起始物理地址、所述第i个内存空间的物理地址的长度、所述第i个内存空间的下一个内存空间的起始物理地址;
根据所述第1个内存空间的起始物理地址和所述物理地址偏移,在所述目标内存空间中确定所述待访问内存空间的起始物理地址,其中,所述第1个内存空间的起始物理地址与所述待访问内存空间的起始物理地址之间的地址间隔等于所述物理地址偏移,所述N个内存空间中的前一个内存空间的结束物理地址与后一个内存空间的起始物理地址之间的地址间隔被视为1。
在一个示范性实施例中,所述第四确定单元,包括:
根据所述第二映射关系、所述待访问内存空间的起始物理地址和所述待访问的物理地址的长度,在所述目标内存空间中确定所述待访问内存空间的结束物理地址,其中,所述待访问内存空间的起始物理地址与所述待访问内存空间的结束物理地址之间的地址间隔等于所述待访问的物理地址的长度;
在所述目标内存空间中将从所述待访问内存空间的起始物理地址到所述待访问内存空间的结束物理地址所对应的内存空间,确定为所述待访问内存空间。
在一个示范性实施例中,所述第五确定单元,用于:
在所述目标内存空间包括1个内存空间的情况下,根据所述第二映射关系,确定所述目标内存空间中与所述第二起始虚拟地址具有映射关系的所述1个内存空间的起始物理地址,其中,所述第二映射关系至少是所述第二起始虚拟地址、所述1个内存空间的起始物理地址、所述1个内存空间的物理地址的长度之间的映射关系;
根据所述1个内存空间的起始物理地址和所述物理地址偏移,在所述目标内存空间中确定所述待访问内存空间的起始物理地址,其中,所述1个内存空间的起始物理地址与所述待访问内存空间的起始物理地址之间的地址间隔等于所述物理地址偏移。
在一个示范性实施例中,所述执行模块,包括:
执行单元,用于在所述访问指令信息指示读操作的情况下,对所述待访问内存空间执行所述读操作,得到读到的数据;
拆分单元,用于将所述读到的数据按照所述第一设备与所述第二设备之间的传输协议拆分成M个数据包,其中,M为大于或等于1的正整数;
第五发送单元,用于向所述第一设备发送所述M个数据包。
在一个示范性实施例中,所述执行模块,包括:
写入单元,用于在所述访问指令信息指示写操作、且所述数据访问请求中还包括待写入的数据的情况下,将所述待写入的数据写入到所述待访问内存空间;或者
第六发送单元,用于在所述访问指令信息指示写操作、且所述数据访问请求中不包括待写入的数据的情况下,向所述第一设备发送指示信息,其中,所述指示信息用于表示所述第二设备已做执行写操作的准备;获取所述第一设备发送的M个数据包,其中,所述M个数据包是将所述待写入的数据按照所述第一设备与所述第二设备之间的传输协议拆分成的数据包,M为大于或等于1的正整数;对所述M个数据包进行组包,得到所述待写入的数据;将所述待写入的数据写入到所述待访问内存空间。
在一个示范性实施例中,所述装置还包括:
第三确定模块,用于获取第一设备发送的数据访问请求之前,响应于所述第一设备发送的内存扩展请求,在所述第二设备的内存中确定处于空闲状态的所述目标内存空间,其中,所述内存扩展请求中包括所述第二起始虚拟地址、所述第一设备允许访问的物理地址的长度,所述目标内存空间的物理地址的长度等于所述第一设备允许访问的物理地址的长度;
第二建立模块,用于建立所述第二起始虚拟地址、所述目标内存空间的起始物理地址、所述目标内存空间的物理地址的长度之间的映射关系,得到所述第二映射关系。
在一个示范性实施例中,所述第二建立模块,包括:
建立单元,用于在所述目标内存空间包括不连续的N个内存空间的情况下,建立用于表示所述第二映射关系的数组链表,其中,N为大于或等于2的正整数,i为大于或等于1、且小于或等于N的正整数,所述数组链表的表头包括所述第二起始虚拟地址,所述数组链表中的第i个链表单元包括所述N个内存空间中的第i个内存空间的起始物理地址、所述第i个内存空间的物理地址的长度、所述第i个内存空间的下一个内存空间的起始物理地址。
需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。
本申请的实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
在一个示例性实施例中,上述计算机可读存储介质可以包括但不限于:U盘、只读存储器(Read-Only Memory,简称为ROM)、随机存取存储器(Random Access Memory,简称为RAM)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。
本申请的实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
在一个示例性实施例中,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
本实施例中的具体示例可以参考上述实施例及示例性实施方式中所描述的示例,本实施例在此不再赘述。
显然,本领域的技术人员应该明白,上述的本申请实施例的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本申请实施例不限制于任何特定的硬件和软件结合。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请实施例,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请实施例的原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请实施例的保护范围之内。
Claims (23)
1.一种数据访问方法,其特征在于,包括:
获取第一设备中的处理器待访问的第一起始物理地址和待访问的物理地址的长度,其中,所述第一起始物理地址是根据预先确定的第三映射关系和所述第一设备中的处理器待访问的第一起始虚拟地址确定的物理地址,所述第三映射关系至少是所述第一设备允许访问的起始虚拟地址与所述第一设备允许访问的起始物理地址之间的映射关系;
根据预先确定的第一映射关系和所述第一起始物理地址,确定目标内存空间对应的第二起始虚拟地址,其中,所述第一映射关系至少是所述第一设备允许访问的起始物理地址、所述第一设备允许访问的物理地址的长度、所述目标内存空间对应的所述第二起始虚拟地址之间的映射关系,所述目标内存空间是第二设备的内存中的内存空间、且是允许所述第一设备访问的内存空间;
向所述第二设备发送数据访问请求,其中,所述数据访问请求用于请求访问所述第二设备的内存中的所述目标内存空间,所述数据访问请求中包括所述第二起始虚拟地址、所述待访问的物理地址的长度以及访问指令信息,所述访问指令信息用于指示对所述目标内存空间中的待访问内存空间执行读操作或写操作,所述待访问内存空间是根据预先确定的第二映射关系、所述第二起始虚拟地址以及所述待访问的物理地址的长度确定的所述目标内存空间中的内存空间,所述第二映射关系至少是所述第二起始虚拟地址、所述目标内存空间的起始物理地址、所述目标内存空间的物理地址的长度之间的映射关系。
2.根据权利要求1所述的方法,其特征在于,所述向所述第二设备发送数据访问请求,包括:
在所述第一起始物理地址是所述处理器待读取的起始物理地址、在所述第一设备的缓存空间中并未缓存与所述第一起始物理地址和所述待访问的物理地址的长度对应的第一数据集合的情况下,向所述第二设备发送数据访问请求,其中,所述第一数据集合包括预先对所述待访问内存空间执行所述读操作所得到的数据。
3.根据权利要求2所述的方法,其特征在于,在所述向所述第二设备发送数据访问请求之后,所述方法还包括:
在所述访问指令信息指示读操作的情况下,接收所述第二设备发送的M个数据包,其中,所述M个数据包是将读到的数据按照所述第一设备与所述第二设备之间的传输协议拆分成的数据包,所述读到的数据是所述第二设备对待访问内存空间执行所述读操作所得到的数据,M为大于或等于1的正整数;
对所述M个数据包进行组包,得到所述第一数据集合;
将所述第一起始物理地址、所述待访问的物理地址的长度和所述第一数据集合缓存到所述第一设备的所述缓存空间中。
4.根据权利要求1所述的方法,其特征在于,所述向所述第二设备发送数据访问请求,包括:
在所述第一起始物理地址是所述处理器待写入的起始物理地址、在所述第一设备的缓存空间中缓存了与所述第一起始物理地址和所述待访问的物理地址的长度对应的第一数据集合的情况下,将所述第一设备的缓存空间中缓存的所述第一数据集合修改为所述处理器待写入的第二数据集合,并向所述第二设备发送所述数据访问请求,其中,所述第一数据集合包括预先对待访问内存空间执行所述读操作所得到的数据;或者
在所述第一起始物理地址是所述处理器待写入的起始物理地址、在所述第一设备的缓存空间中未缓存与所述第一起始物理地址和所述待访问的物理地址的长度对应的所述第一数据集合的情况下,从所述第二设备获取所述第一数据集合,将所述第一数据集合缓存到所述第一设备的所述缓存空间中,将所述第一设备的缓存空间中缓存的所述第一数据集合修改为所述处理器待写入的第二数据集合,并向所述第二设备发送所述数据访问请求。
5.根据权利要求4所述的方法,其特征在于,所述向所述第二设备发送所述数据访问请求,包括:
在所述缓存空间已满的情况下,向所述第二设备发送所述数据访问请求,其中,所述数据访问请求用于请求对所述目标内存空间执行写操作;或者
在成功将所述第一设备的缓存空间中缓存的所述第一数据集合修改为所述处理器待写入的所述第二数据集合的情况下,向所述第二设备发送所述数据访问请求。
6.根据权利要求4所述的方法,其特征在于,所述方法还包括:
在将所述第一设备的所述缓存空间中缓存的所述第一数据集合修改为所述处理器待写入的第二数据集合的情况下,在所述缓存空间中为所述第二数据集合设置修改标记;
在所述缓存空间已满的情况下,或,在所述缓存空间已满、且存在待缓存到所述缓存空间中的数据的情况下,在所述缓存空间中删除未设置有所述修改标记的数据中的至少部分数据。
7.根据权利要求1所述的方法,其特征在于,在所述向所述第二设备发送数据访问请求之前,所述方法还包括:
向所述第二设备发起内存扩展请求,其中,所述内存扩展请求中包括所述第二起始虚拟地址、所述第一设备允许访问的物理地址的长度;
在所述第二设备响应于所述内存扩展请求成功为所述第一设备分配了所述目标内存空间的情况下,在所述第一设备上建立所述第一映射关系,其中,所述目标内存空间是在所述第二设备的内存中处于空闲状态的内存空间,所述目标内存空间的物理地址的长度等于所述第一设备允许访问的物理地址的长度。
8.根据权利要求1所述的方法,其特征在于,所述向所述第二设备发送数据访问请求,包括:
将所述第一起始物理地址和所述第一映射关系中的所述第一设备允许访问的起始物理地址之间的地址间隔确定为物理地址偏移,并将所述物理地址偏移携带在所述数据访问请求中;向所述第二设备发送所述数据访问请求;或者
将所述第一起始物理地址携带在所述数据访问请求中;向所述第二设备发送所述数据访问请求。
9.根据权利要求1至8中任一项所述的方法,其特征在于,所述向所述第二设备发送数据访问请求,包括:
在预先确定了P个映射关系、且所述P个映射关系与预先建立的P个通信任务一一对应的情况下,通过所述P个通信任务中与所述第一映射关系对应的通信任务,向所述第二设备发送所述数据访问请求,其中,P为大于或等于2的正整数,所述P个映射关系包括所述第一映射关系。
10.一种数据访问方法,其特征在于,包括:
获取第一设备发送的数据访问请求,其中,所述数据访问请求用于请求访问第二设备的内存中的目标内存空间,所述目标内存空间是允许所述第一设备访问的内存空间;
在所述数据访问请求中包括所述目标内存空间对应的第二起始虚拟地址、待访问的物理地址的长度以及访问指令信息的情况下,根据预先确定的第二映射关系、所述第二起始虚拟地址以及所述待访问的物理地址的长度,确定所述目标内存空间中的待访问内存空间,其中,所述第二起始虚拟地址是根据预先确定的第一映射关系和所述第一设备中的处理器待访问的第一起始物理地址确定的虚拟地址,所述第一映射关系至少是所述第一设备允许访问的起始物理地址、所述第一设备允许访问的物理地址的长度、所述目标内存空间对应的所述第二起始虚拟地址之间的映射关系,所述第二映射关系至少是所述第二起始虚拟地址、所述目标内存空间的起始物理地址、所述目标内存空间的物理地址的长度之间的映射关系,所述第一起始物理地址是根据预先确定的第三映射关系和所述第一设备中的所述处理器待访问的第一起始虚拟地址确定的物理地址,所述第三映射关系至少是所述第一设备允许访问的起始虚拟地址与所述第一设备允许访问的起始物理地址之间的映射关系;
对所述待访问内存空间执行所述访问指令信息所指示的访问操作。
11.根据权利要求10所述的方法,其特征在于,所述根据预先确定的第二映射关系、所述第二起始虚拟地址以及所述待访问的物理地址的长度,确定所述目标内存空间中的待访问内存空间,包括:
在所述数据访问请求中还包括所述第一起始物理地址的情况下,将所述第一起始物理地址和所述第一映射关系中的所述第一设备允许访问的起始物理地址之间的地址间隔确定为物理地址偏移;
根据所述第二起始虚拟地址、所述第二映射关系和所述物理地址偏移,在所述目标内存空间中确定所述待访问内存空间的起始物理地址;
根据所述第二映射关系、所述待访问内存空间的起始物理地址和所述待访问的物理地址的长度,确定所述目标内存空间中的所述待访问内存空间。
12.根据权利要求10所述的方法,其特征在于,所述根据预先确定的第二映射关系、所述第二起始虚拟地址以及所述待访问的物理地址的长度,确定所述目标内存空间中的待访问内存空间,包括:
在所述数据访问请求中还包括物理地址偏移的情况下,根据所述第二起始虚拟地址、所述第二映射关系和所述物理地址偏移,在所述目标内存空间中确定所述待访问内存空间的起始物理地址,其中,所述物理地址偏移是所述第一起始物理地址和所述第一映射关系中的所述第一设备允许访问的起始物理地址之间的地址间隔;
根据所述第二映射关系、所述待访问内存空间的起始物理地址和所述待访问的物理地址的长度,确定所述目标内存空间中的所述待访问内存空间。
13.根据权利要求11或12所述的方法,其特征在于,所述根据所述第二起始虚拟地址、所述第二映射关系和所述物理地址偏移,在所述目标内存空间中确定所述待访问内存空间的起始物理地址,包括:
在所述目标内存空间包括不连续的N个内存空间的情况下,根据所述第二映射关系,确定所述N个内存空间中与所述第二起始虚拟地址具有映射关系的第1个内存空间的起始物理地址,其中,N为大于或等于2的正整数,i为大于或等于1、且小于或等于N的正整数,所述第二映射关系是用数组链表表示的映射关系,所述数组链表的表头包括所述第二起始虚拟地址,所述数组链表中的第i个链表单元包括所述N个内存空间中的第i个内存空间的起始物理地址、所述第i个内存空间的物理地址的长度、所述第i个内存空间的下一个内存空间的起始物理地址;
根据所述第1个内存空间的起始物理地址和所述物理地址偏移,在所述目标内存空间中确定所述待访问内存空间的起始物理地址,其中,所述第1个内存空间的起始物理地址与所述待访问内存空间的起始物理地址之间的地址间隔等于所述物理地址偏移,所述N个内存空间中的前一个内存空间的结束物理地址与后一个内存空间的起始物理地址之间的地址间隔被视为1。
14.根据权利要求13所述的方法,其特征在于,所述根据所述第二映射关系、所述待访问内存空间的起始物理地址和所述待访问的物理地址的长度,确定所述目标内存空间中的所述待访问内存空间,包括:
根据所述第二映射关系、所述待访问内存空间的起始物理地址和所述待访问的物理地址的长度,在所述目标内存空间中确定所述待访问内存空间的结束物理地址,其中,所述待访问内存空间的起始物理地址与所述待访问内存空间的结束物理地址之间的地址间隔等于所述待访问的物理地址的长度;
在所述目标内存空间中将从所述待访问内存空间的起始物理地址到所述待访问内存空间的结束物理地址所对应的内存空间,确定为所述待访问内存空间。
15.根据权利要求11或12所述的方法,其特征在于,所述根据所述第二起始虚拟地址、所述第二映射关系和所述物理地址偏移,在所述目标内存空间中确定所述待访问内存空间的起始物理地址,包括:
在所述目标内存空间包括1个内存空间的情况下,根据所述第二映射关系,确定所述目标内存空间中与所述第二起始虚拟地址具有映射关系的所述1个内存空间的起始物理地址,其中,所述第二映射关系至少是所述第二起始虚拟地址、所述1个内存空间的起始物理地址、所述1个内存空间的物理地址的长度之间的映射关系;
根据所述1个内存空间的起始物理地址和所述物理地址偏移,在所述目标内存空间中确定所述待访问内存空间的起始物理地址,其中,所述1个内存空间的起始物理地址与所述待访问内存空间的起始物理地址之间的地址间隔等于所述物理地址偏移。
16.根据权利要求10至12中任一项所述的方法,其特征在于,所述对所述待访问内存空间执行所述访问指令信息所指示的访问操作,包括:
在所述访问指令信息指示读操作的情况下,对所述待访问内存空间执行所述读操作,得到读到的数据;
将所述读到的数据按照所述第一设备与所述第二设备之间的传输协议拆分成M个数据包,其中,M为大于或等于1的正整数;
向所述第一设备发送所述M个数据包。
17.根据权利要求10至12中任一项所述的方法,其特征在于,所述对所述待访问内存空间执行所述访问指令信息所指示的访问操作,包括:
在所述访问指令信息指示写操作、且所述数据访问请求中还包括待写入的数据的情况下,将所述待写入的数据写入到所述待访问内存空间;或者
在所述访问指令信息指示写操作、且所述数据访问请求中不包括待写入的数据的情况下,向所述第一设备发送指示信息,其中,所述指示信息用于表示所述第二设备已做执行写操作的准备;获取所述第一设备发送的M个数据包,其中,所述M个数据包是将所述待写入的数据按照所述第一设备与所述第二设备之间的传输协议拆分成的数据包,M为大于或等于1的正整数;对所述M个数据包进行组包,得到所述待写入的数据;将所述待写入的数据写入到所述待访问内存空间。
18.根据权利要求10至12中任一项所述的方法,其特征在于,获取第一设备发送的数据访问请求之前,所述方法还包括:
响应于所述第一设备发送的内存扩展请求,在所述第二设备的内存中确定处于空闲状态的所述目标内存空间,其中,所述内存扩展请求中包括所述第二起始虚拟地址、所述第一设备允许访问的物理地址的长度,所述目标内存空间的物理地址的长度等于所述第一设备允许访问的物理地址的长度;
建立所述第二起始虚拟地址、所述目标内存空间的起始物理地址、所述目标内存空间的物理地址的长度之间的映射关系,得到所述第二映射关系。
19.根据权利要求18所述的方法,其特征在于,所述建立所述第二起始虚拟地址、所述目标内存空间的起始物理地址、所述目标内存空间的物理地址的长度之间的映射关系,得到所述第二映射关系,包括:
在所述目标内存空间包括不连续的N个内存空间的情况下,建立用于表示所述第二映射关系的数组链表,其中,N为大于或等于2的正整数,i为大于或等于1、且小于或等于N的正整数,所述数组链表的表头包括所述第二起始虚拟地址,所述数组链表中的第i个链表单元包括所述N个内存空间中的第i个内存空间的起始物理地址、所述第i个内存空间的物理地址的长度、所述第i个内存空间的下一个内存空间的起始物理地址。
20.一种数据访问设备,其特征在于,包括第一处理器、主内存管理器、远端内存控制器以及第一通信单元,所述第一处理器与所述主内存管理器连接,所述主内存管理器与所述远端内存控制器连接,所述远端内存控制器与所述第一通信单元连接,其中,
所述主内存管理器,用于根据预先确定的第三映射关系和所述第一处理器待访问的第一起始虚拟地址,确定所述第一处理器待访问的第一起始物理地址,其中,所述第三映射关系至少是所述数据访问设备允许访问的起始虚拟地址与所述数据访问设备允许访问的起始物理地址之间的映射关系;
所述远端内存控制器,用于根据预先确定的第一映射关系和所述第一起始物理地址,确定目标内存空间对应的第二起始虚拟地址,其中,所述第一映射关系至少是所述数据访问设备允许访问的起始物理地址、所述数据访问设备允许访问的物理地址的长度、所述目标内存空间对应的所述第二起始虚拟地址之间的映射关系,所述目标内存空间是第二设备的内存中的内存空间、且是允许所述数据访问设备访问的内存空间;
所述第一通信单元,用于向所述第二设备发送数据访问请求,其中,所述数据访问请求用于请求访问所述第二设备的内存中的所述目标内存空间,所述数据访问请求中包括所述目标内存空间对应的所述第二起始虚拟地址、所述待访问的物理地址的长度以及访问指令信息。
21.一种远端数据存储设备,其特征在于,包括第二通信单元和内存,其中,所述第二通信单元包括媒体访问控制单元,通信控制单元,直接内存访问单元;
所述媒体访问控制单元,用于获取第一设备发送的数据访问请求,其中,所述数据访问请求用于请求访问所述内存中的目标内存空间,所述目标内存空间是允许所述第一设备访问的内存空间;
所述通信控制单元,用于在所述数据访问请求中包括所述目标内存空间对应的第二起始虚拟地址、待访问的物理地址的长度以及访问指令信息的情况下,根据预先确定的第二映射关系、所述第二起始虚拟地址以及所述待访问的物理地址的长度,确定所述目标内存空间中的待访问内存空间,其中,所述第二起始虚拟地址是根据预先确定的第一映射关系和所述第一设备中的处理器待访问的第一起始物理地址确定的虚拟地址,所述第一映射关系至少是所述第一设备允许访问的起始物理地址、所述第一设备允许访问的物理地址的长度、所述目标内存空间对应的所述第二起始虚拟地址之间的映射关系,所述第二映射关系至少是所述第二起始虚拟地址、所述目标内存空间的起始物理地址、所述目标内存空间的物理地址的长度之间的映射关系,所述第一起始物理地址是根据预先确定的第三映射关系和所述第一起始虚拟地址确定的物理地址,所述第三映射关系至少是所述第一设备允许访问的起始虚拟地址与所述第一设备允许访问的起始物理地址之间的映射关系;
所述直接内存访问单元,用于对所述待访问内存空间执行所述访问指令信息所指示的访问操作。
22.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,其中,所述计算机程序被处理器执行时实现所述权利要求1至9任一项中所述的方法的步骤,或者实现权利要求10至19任一项中所述的方法的步骤。
23.一种电子装置,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现所述权利要求1至9任一项中所述的方法的步骤,或者实现权利要求10至19任一项中所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310735218.0A CN116483738B (zh) | 2023-06-20 | 2023-06-20 | 数据访问方法及装置、存储介质及电子装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310735218.0A CN116483738B (zh) | 2023-06-20 | 2023-06-20 | 数据访问方法及装置、存储介质及电子装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116483738A CN116483738A (zh) | 2023-07-25 |
CN116483738B true CN116483738B (zh) | 2023-09-05 |
Family
ID=87215976
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310735218.0A Active CN116483738B (zh) | 2023-06-20 | 2023-06-20 | 数据访问方法及装置、存储介质及电子装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116483738B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116708579B (zh) * | 2023-08-04 | 2024-01-12 | 浪潮电子信息产业股份有限公司 | 数据访问方法、装置、电子设备及计算机可读存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016082191A1 (zh) * | 2014-11-28 | 2016-06-02 | 华为技术有限公司 | 访问文件的方法和装置 |
CN109710544A (zh) * | 2017-10-26 | 2019-05-03 | 杭州华为数字技术有限公司 | 内存访问方法、计算机系统以及处理装置 |
CN115794669A (zh) * | 2021-09-11 | 2023-03-14 | 华为技术有限公司 | 一种扩展内存的方法、装置及相关设备 |
WO2023066268A1 (zh) * | 2021-10-21 | 2023-04-27 | 华为技术有限公司 | 一种处理请求的方法、装置及系统 |
-
2023
- 2023-06-20 CN CN202310735218.0A patent/CN116483738B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016082191A1 (zh) * | 2014-11-28 | 2016-06-02 | 华为技术有限公司 | 访问文件的方法和装置 |
CN109710544A (zh) * | 2017-10-26 | 2019-05-03 | 杭州华为数字技术有限公司 | 内存访问方法、计算机系统以及处理装置 |
CN115794669A (zh) * | 2021-09-11 | 2023-03-14 | 华为技术有限公司 | 一种扩展内存的方法、装置及相关设备 |
WO2023066268A1 (zh) * | 2021-10-21 | 2023-04-27 | 华为技术有限公司 | 一种处理请求的方法、装置及系统 |
Non-Patent Citations (1)
Title |
---|
SPARC V8处理器中存储管理单元的设计;肖建青;李红桥;张洵颖;龚龙庆;;科学技术与工程(31);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN116483738A (zh) | 2023-07-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8850101B2 (en) | System and method to reduce memory access latencies using selective replication across multiple memory ports | |
US20040019711A1 (en) | Method, system, and program for handling input/output commands | |
CN109388590B (zh) | 提升多通道dma访问性能的动态缓存块管理方法和装置 | |
CN116483738B (zh) | 数据访问方法及装置、存储介质及电子装置 | |
CN106598752B (zh) | 远程零拷贝方法 | |
WO2015061971A1 (zh) | 数据处理系统和数据处理的方法 | |
CN112199309B (zh) | 基于dma引擎的数据读取方法、装置和数据传输系统 | |
CN112632069B (zh) | 哈希表数据存储管理方法、装置、介质和电子设备 | |
CN115374046B (zh) | 一种多处理器数据交互方法、装置、设备及存储介质 | |
CN106598692A (zh) | 在逻辑卷中创建镜像文件、虚拟机启动方法及服务器 | |
WO2016019566A1 (zh) | 内存管理方法、装置和系统、以及片上网络 | |
CN112506823B (zh) | 一种fpga数据读写方法、装置、设备及可读存储介质 | |
WO2023165319A1 (zh) | 内存访问方法、装置和输入输出内存管理单元 | |
CN114285676B (zh) | 智能网卡、智能网卡的网络存储方法和介质 | |
US6801963B2 (en) | Method, system, and program for configuring components on a bus for input/output operations | |
Tianhua et al. | The design and implementation of zero-copy for linux | |
CN113596010A (zh) | 一种数据处理方法、装置、节点设备及计算机存储介质 | |
CN111400213B (zh) | 传输数据的方法、装置及系统 | |
US20040019708A1 (en) | Method, system, and program for returning data to read requests received over a bus | |
JP2002084311A (ja) | パケット転送処理装置 | |
CN113923061B (zh) | 基于智能网卡的gpu网络通信方法、智能网卡、介质、设备 | |
US8850159B2 (en) | Method and system for latency optimized ATS usage | |
CN107615259B (zh) | 一种数据处理方法及系统 | |
EP1839148A2 (en) | Transferring data between system and storage in a shared buffer | |
CN113746897A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |