CN112015677A - 到或从借入存储器的精细粒度数据迁移 - Google Patents

到或从借入存储器的精细粒度数据迁移 Download PDF

Info

Publication number
CN112015677A
CN112015677A CN202010460004.3A CN202010460004A CN112015677A CN 112015677 A CN112015677 A CN 112015677A CN 202010460004 A CN202010460004 A CN 202010460004A CN 112015677 A CN112015677 A CN 112015677A
Authority
CN
China
Prior art keywords
memory
virtual
region
address
borrower
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.)
Granted
Application number
CN202010460004.3A
Other languages
English (en)
Other versions
CN112015677B (zh
Inventor
D·尤达诺夫
A·D·艾卡尔
S·E·布拉德绍
K·M·丘尔维兹
S·S·艾勒特
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.)
Micron Technology Inc
Original Assignee
Micron Technology Inc
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 Micron Technology Inc filed Critical Micron Technology Inc
Publication of CN112015677A publication Critical patent/CN112015677A/zh
Application granted granted Critical
Publication of CN112015677B publication Critical patent/CN112015677B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • 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/1009Address translation using page tables, e.g. page table structures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/04Protocols specially adapted for terminals or networks with limited capabilities; specially adapted for terminal portability
    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • G06F12/0653Configuration or reconfiguration with centralised address assignment
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • 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]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/04Inference or reasoning models
    • G06N5/043Distributed expert systems; Blackboards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/12Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/535Tracking the activity of the user
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/40Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass for recovering from a failure of a protocol instance or entity, e.g. service redundancy protocols, protocol state redundancy or protocol service redirection
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W8/00Network data management
    • H04W8/26Network addressing or numbering for mobility support
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/25Using a specific main memory architecture
    • G06F2212/251Local memory within processor subsystem
    • G06F2212/2515Local memory within processor subsystem being configurable for different purposes, e.g. as cache or non-cache memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/04Inference or reasoning models
    • G06N5/045Explanation of inference; Explainable artificial intelligence [XAI]; Interpretable artificial intelligence
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04MTELEPHONIC COMMUNICATION
    • H04M1/00Substation equipment, e.g. for use by subscribers
    • H04M1/72Mobile telephones; Cordless telephones, i.e. devices for establishing wireless links to base stations without route selection
    • H04M1/724User interfaces specially adapted for cordless or mobile telephones
    • H04M1/72403User interfaces specially adapted for cordless or mobile telephones with means for local support of applications that increase the functionality
    • H04M1/72409User interfaces specially adapted for cordless or mobile telephones with means for local support of applications that increase the functionality by interfacing with external accessories
    • H04M1/72412User interfaces specially adapted for cordless or mobile telephones with means for local support of applications that increase the functionality by interfacing with external accessories using two-way short-range wireless interfaces

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Evolutionary Computation (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Mathematical Physics (AREA)
  • Databases & Information Systems (AREA)
  • Artificial Intelligence (AREA)
  • Health & Medical Sciences (AREA)
  • Medical Informatics (AREA)
  • Computer Security & Cryptography (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本申请案涉及到或从借入存储器的精细粒度数据迁移。描述使用存储器即服务MaaS中的精细粒度数据迁移的系统、方法及设备。举例来说,可使用存储器状态图识别借入存储器区域(例如所借远程存储器页面)的子区域(例如,高速缓存线)的高速缓存可用性。在存取子区域中的虚拟存储器地址之前,检查所述存储器状态图。如果所述子区域在本地存储器中具有高速缓存可用性,那么存储器管理单元使用从所述虚拟存储器地址转换的物理存储器地址进行存储器存取。否则,在使用所述物理存储器地址之前,将所述子区域从所述借入存储器区域高速缓存到所述本地存储器。

Description

到或从借入存储器的精细粒度数据迁移
技术领域
本文中揭示的至少一些实施例涉及由操作系统提供的存储器服务。
背景技术
在一些计算机系统中,操作系统允许应用程序使用存储器的虚拟地址将数据存储于计算机系统的一或多个存储器子系统的存储器组件中或从所述存储器组件检索数据。操作系统定义虚拟存储器地址与连接到计算机系统的中央处理单元(CPU)及/或图形处理单元(GPU)及/或芯片上系统(SoC)的一或多个存储器子系统的物理存储器地址之间的映射。此映射可通过使用页面表定义。页面表条目指定虚拟存储器页面的一组虚拟存储器地址与物理存储器页面的一组对应物理存储器地址之间的映射。可使用页面表通过将虚拟存储器地址转译成存储器子系统的对应物理存储器地址实施针对虚拟存储器地址所请求的存储器存取。
计算机处理器可具有存储器管理单元(MMU),其经配置以根据由操作系统定义的页面表执行虚拟存储器地址到物理存储器地址的转译。存储器管理单元(MMU)可具有转译旁视缓冲器(TLB),其经配置以高速缓存最近使用的页面表条目。存储器管理单元(MMU)可执行其它存储器相关任务,例如高速缓存控制及/或存储器保护。
一般来说,计算机中的存储器虚拟地址空间可划分成经预先确定大小的页面。虚拟存储器页面通过虚拟存储器地址的集合表示;虚拟存储器地址可经映射到存储器子系统中的物理存储器页面的物理存储器地址;页面表条目定义虚拟存储器页面与物理存储器页面之间的地址映射。
在一些计算机系统中,操作系统可使用分页技术经由存储器模块中的存储器页面存取存储装置或存储器装置中的一页数据。在不同时刻,存储器模块中的相同存储器页面可用作存取所述存储装置或存储器装置或计算机系统中的另一存储装置或存储器装置中的不同存储器页面的代理。
远程直接存储器存取(RDMA)是一种允许从一个计算机到另一计算机的直接存储器存取而不涉及所涉及的计算机的操作系统中的任何者的技术(例如,在操作系统经执行以协商及设立用于RDMA操作的存储器资源之后)。在RDMA操作(例如读取或写入)之前,执行命令以经由一或多个联网装置在两个计算机之间建立存储器映射。当计算机上运行的应用程序执行RDMA操作时,应用程序数据跨计算机网络直接递送,从而减少延时且实现较快数据传送。RDMA使用网络适配器将数据传送到应用程序存储器或从应用程序存储器传送数据,从而消除对在操作系统中的应用程序存储器与数据缓冲器之间复制数据的需要。
发明内容
在一个方面中,本申请案涉及一种实施于计算装置中的方法,所述方法包括:从通过有线或无线网络连接到所述计算装置的远程装置存取某一量的存储器;分配虚拟存储器地址区域以寻址由所述远程装置借给所述计算装置的所述量的存储器的部分;将所述计算装置中的物理存储器区域配置为所述远程装置处的所述量的存储器的所述部分的高速缓存;将虚拟到物理存储器图存储于所述计算装置中,所述虚拟到物理存储器图识别所述虚拟存储器地址区域与对应于所述物理存储器区域的物理存储器地址区域之间的映射;将存储器状态图存储于所述计算装置中,所述存储器状态图识别所述虚拟存储器地址区域的子区域的高速缓存可用性状态,所述高速缓存可用性状态中的每一者指示对应子区域的内容在所述物理存储器区域中是否可用;及通过以下操作处理使用所述虚拟存储器地址区域中的虚拟存储器地址进行的存储器存取请求:使用所述虚拟到物理存储器图将所述虚拟存储器地址转换成物理存储器地址;在所述虚拟存储器地址区域的所述子区域中识别含有所述虚拟存储器地址的对应子区域;从所述存储器状态图确定所述对应子区域在所述物理存储器区域中缺少本地高速缓存可用性;与所述远程装置通信以将所述对应子区域高速缓存于所述物理存储器区域中;及使用所述物理存储器地址且根据所述存储器存取请求执行存储器存取。
在另一方面中,本申请案涉及一种计算装置,其包括:至少一个微处理器;本地存储器,其耦合到所述至少一个微处理器;及通信装置,其经配置以通过有线或无线网络与远程装置通信;其中所述计算装置经配置以:通过所述有线或无线网络从所述远程装置借入某一量的存储器;分配虚拟存储器地址区域以寻址由所述远程装置借给所述计算装置的所述量的存储器的部分;及生成虚拟到物理存储器图,所述虚拟到物理存储器图识别所述虚拟存储器地址区域与对应于所述本地存储器中的物理存储器区域的物理存储器地址区域之间的映射;其中所述计算装置经配置以存储识别所述虚拟存储器地址区域的子区域的高速缓存可用性状态的存储器状态图,所述高速缓存可用性状态中的每一者指示对应子区域的内容在所述物理存储器区域中是否可用;且其中所述计算装置经配置以通过以下操作处理所述虚拟存储器地址区域中的虚拟存储器地址处的存储器存取请求:使用所述虚拟到物理存储器图将所述虚拟存储器地址转换成物理存储器地址;在所述虚拟存储器地址区域的所述子区域中识别含有所述虚拟存储器地址的对应子区域;从所述存储器状态图确定所述对应子区域在所述物理存储器区域中缺少本地高速缓存可用性;与所述远程装置通信以将所述对应子区域高速缓存于所述物理存储器区域中;及使用所述物理存储器地址且根据所述存储器存取请求执行存储器存取。
在另一方面中,本申请案涉及一种存储指令的非暂时性计算机存储媒体,所述指令在计算装置上执行时致使所述计算装置执行一方法,所述方法包括:通过有线或无线网络从远程装置存取某一量的存储器;分配虚拟存储器地址区域以寻址由所述远程装置借给所述计算装置的所述量的存储器的部分;生成虚拟到物理存储器图,所述虚拟到物理存储器图识别所述虚拟存储器地址区域与对应于本地存储器中的物理存储器区域的物理存储器地址区域之间的映射;存储存储器状态图,所述存储器状态图识别所述虚拟存储器地址区域的子区域的高速缓存可用性状态,所述高速缓存可用性状态中的每一者指示对应子区域的内容在所述物理存储器区域中是否可用;及通过以下操作处理存取所述虚拟存储器地址区域中的虚拟存储器地址处的存储器的请求:使用所述虚拟到物理存储器图将所述虚拟存储器地址转换成物理存储器地址;在所述虚拟存储器地址区域的所述子区域中识别含有所述虚拟存储器地址的对应子区域;从所述存储器状态图确定所述对应子区域在所述物理存储器区域中缺少本地高速缓存可用性;与所述远程装置通信以将所述对应子区域高速缓存于所述物理存储器区域中;及使用所述物理存储器地址且根据所述请求执行存储器存取。
附图说明
在其中相似参考指示类似元件的附图的图中通过实例且非限制说明实施例。
图1展示其中计算装置或服务器计算机可从另一计算装置及/或另一服务器计算机借入存储器及/或将存储器借给另一计算装置及/或另一服务器计算机的系统。
图2说明根据一个实施例的通过通信网络连接实施操作系统间存储器服务的借入方装置与借出方装置。
图3说明根据一个实施例的使用借入存储器的技术。
图4说明根据一个实施例的使用物理存储器区域促进存取不同的借入存储器区域。
图5说明根据一个实施例的另一使用物理存储器区域促进存取不同借入存储器区域。
图6说明计算系统中的借入方-借出方存储器阶层。
图7展示通过通信网络连接实施操作系统间存储器服务的方法。
图8展示根据一个实施例的服务借入存储器页面的方法。
图9展示基于可节制哪一些存储器即服务的网络业务而具有不同关键性等级的借入方装置。
图10说明根据一个实施例的标注存储器图中的存储器区域的关键性等级。
图11说明根据一个实施例的识别存储器区域的关键性等级的方法。
图12展示根据一个实施例的节制存储器即服务的网络通信的方法。
图13到15说明根据一些实施例的存取借入存储器的硬件加速配置。
图16及17说明根据一些实施例的提供对借出存储器的存取的硬件加速配置。
图18展示根据一个实施例的经由存储器管理单元加速对借入存储器的存取的方法。
图19及20说明根据一些实施例的经配置以执行智能内容迁移的借入方装置及借出方装置。
图21到24说明根据一些实施例的内容移动。
图25展示根据一些实施例的迁移具有借入存储器的计算系统中的内容的方法。
图26及27说明基于选择性地管控不同计算机的本地存储器上的虚拟地址区域的分布式计算。
图28及29说明在应用程序的不同执行阶段处在不同计算机上选择性地运行应用程序。
图30及31说明在不同计算机上管控的虚拟机中运行应用程序。
图32展示基于存储器即服务(MaaS)的分布式计算方法。
图33展示经配置以识别子区域的内容的高速缓存状态的存储器状态图。
图34说明存取可在子区域级别下迁移的借入存储器的存储器状态图的使用。
图35展示经配置用于借入存储器的精细粒度数据迁移的借入方装置及借出方装置。
图36展示借入存储器的精细粒度数据迁移方法。
具体实施方式
本文中揭示的至少一些实施例提供通过通信网络连接的操作系统间存储器服务技术,使得借入方装置可通过使用通信链路及借出方装置的存储器扩展其存储器容量。借入方装置及/或借出方装置的操作系统可经配置以通过通信链路无缝地桥接间隙,使得借入方装置上运行的应用程序可无差别地使用其本地存储器及借入存储器。本地存储器物理地安装于借入方装置中;且借入存储器物理地安装于经由通信连接连接到借入方装置的借出方装置中。
任选地,借入存储器的部分及/或借入方装置中的本地存储器可通过计算机网络借给另一装置。借入方装置可具有多个借出方装置。因此,借入方-借出方方装置阶层可形成于装置之中的通信链路阶层上。
借入方装置的操作系统可使用虚拟到物理存储器图桥接本地存储器及借入存储器中的差异。举例来说,借出方装置的操作系统可响应于借入方装置的转译旁视缓冲器(TLB)中的未命中(其可导致确定页面错误)操纵页面表条目(PTE),以使用借入方装置的本地存储器的部分作为通过通信链路存取借入存储器时的孔径、代理及/或高速缓存。借出方装置与借入方装置之间的高速缓存相干性可经放宽以改进带宽使用率。因为本地存储器与借入存储器区域之间的差异通过借入方装置的操作系统向借入方装置上运行的应用程序屏蔽,所以借入方装置上运行的应用程序可以与存取配置于借入方装置中的本地随机存取存储器相同的方式字节存取借入存储器。
可使用操作系统的存储器服务在由多个操作系统通过非相干通信链路共享的统一地址空间下在计算机系统中构建多层字节可寻址存储器。举例来说,穿戴式计算装置可通过个人局域网或局域网从移动计算装置借入存储器。穿戴式计算装置可为智能手表、运动跟踪装置或智能眼镜,且移动计算装置可为智能电话、触摸垫计算机或笔记本计算机等。穿戴式计算装置及/或移动计算装置可通过局域网从计算设备借入存储器。举例来说,计算设备可为迷你服务器、桌面计算机、存储器设备或存储设备等。移动计算装置及/或计算设备可通过因特网及/或经由云计算从服务器计算机或服务器机群借入存储器。
在存储器资源的借出方-借入方的多层阶层中,每一后续较高级装置(例如,移动计算装置、计算设备、服务器计算机或机群)可使用其存储器容量按需提升较低级装置(例如,穿戴式计算装置、移动计算装置、计算设备)及/或同一级装置的存储器容量。IoT装置将构成环境,例如构造材料(混凝土墙、路等等)。低密度但体积庞大的廉价存储器技术可能将允许以十分低的成本将低密度存储器集成于构造中(并在构造中计算)。因此,我们将具有某种‘存储器物质’(或可为计算物质)作为任何装置可使用的环境的部分。
任选地,可取决于某些装置及/或网络连接的可用性跳过阶层中的一些层。举例来说,穿戴式计算装置可无需穿过移动计算装置从计算设备借入存储器;且移动计算装置可在无需穿过局域网中的计算设备的情况下通过因特网从服务器计算机或服务器机群借入存储器。
在设备及云级处,存储器资源可经供应作为具有存储器即服务(MaaS)的实用程序。此布置可提供按需具有庞大永久存储器容量及存储资源的低级计算装置,例如穿戴式计算装置、移动计算装置及/或物联网的计算装置。低级计算机装置上运行的应用程序可使用由操作系统提供的存储器服务以按透明方式使用借入存储器,就像借入存储器是借入方装置的本地存储器的部分一样。因此,在所述应用程序中不需要特殊编程来使用借入存储器。
在借入方装置上运行的应用程序可使用借入存储器永久地存储数据,且因此消除或减小对经由文件系统存储数据的操作的需要。举例来说,借出设备/服务器可提供永久随机存取存储器或存储容量,以将存储器资源提供到借入方装置并管理所提供的存储器资源中存储的数据的持久性及/或冗余度,使得借入存储器可被视为借入方装置中的虚拟非易失性随机存取存储器。
任选地,作为服务提供的存储器可包含用于客户端/借入器、锁定机构、超时机构等之中的存储器页面共享的语义。
作为实例,电话作为借入方装置可通过无线局域网(WLAN)从用作借出方装置的存储器设备获得8万亿字节(TB)的可观测存储器(例如,经由家庭Wi-Fi接入点促进)。在电话的操作系统下运行的应用程序可以与在具有8TB的本地存储器的电话上运行的应用程序相同的方式观测8TB的存储器。替代地,电话可通过蜂窝通信网络从经配置为借出方装置的服务器或云计算基础设施获得8TB的可观测存储器。任选地,电话可从存储器设备借8TB的可观测存储器的部分并从服务器或云计算基础设施借8TB的可观测存储器的部分。电话的操作系统可使8TB的可观测存储器在电话上虚拟地可用,使得电话上运行的应用程序可使用虚拟/远程存储器,即使是电话可具有仅8兆字节(MB)的物理本地存储器。借入8TB的存储器将电话的存储器容量扩展到超过8TB;且对于在具有借入存储器的电话上运行的应用程序,电话的存储器容量看起来与具有超过8TB的本地随机存取存储器的电话相同。
因为借入方装置在借入存储器时通常不会立即使用借入的存储器,所以在借入存储器之后借出方装置无须块分配借给借入装置的存储器。借出方装置可实施精简配置存储器(thin provision of memory)(例如,精简配置存储器)并响应于借入方装置所使用的借入存储器的量增加而递增地分配存储器。
在借入方装置的操作系统下运行的应用程序可按需读取及写入从借出方装置借入的存储器页面。借出方装置中的物理页面分配及/或借入方装置中的对应分配可经配置以响应于对页面的写入操作而执行。借入方装置的本地存储器的部分可在存取借入页面时经配置为高速缓存、代理及/或孔径。当借入方装置上运行的应用程序存取虚拟页面时,借入方装置的操作系统可将经存取虚拟页面的内容迁移到本地存储器。当在某一时间周期内未存取本地存储器页面及/或本地存储器页面将用于管控另一页面的内容时,借入方装置的操作系统可将本地存储器中的虚拟页面的内容驱逐或迁移到借出方装置上的借入存储器。任选地,借入方装置的操作系统可使用借入方装置的本地随机存取存储器的部分作为用于关键数据的快速缓冲器,并使用物理地驻存于远程借出方装置中的借入存储器保持较不关键数据。较不关键数据及/或不频繁使用的数据在需要时可迁移到借入方装置的本地随机存取存储器。
一般来说,阶层中的低级装置的借出方装置本身可为借入方-借出方方装置阶层中的较高层中的借入方装置。举例来说,电话作为借入方装置可从作为借出方装置的存储器设备借8TB的存储器。存储器设备作为借入方装置可从服务器借4TB的存储器并将从服务器借入的4TB的存储器及4TB的其本地存储器组合成借给电话的8TB的存储器。在一些实施方案中,可识别从服务器借给电话的4TB的存储器使得当电话与设备之间的连接不可用时,电话可使用到服务器的替代连接继续使用4TB的存储器而无需穿过存储器设备。然而,替代连接可比到存储器设备的连接慢,这是因为设备可比远程服务器更接近电话。
借出方装置的操作系统及借入方装置的操作系统可与彼此通信以促进跨借出方装置与借入方装置之间的通信链路的无缝存储器存取。因此,在借入方装置上运行的应用程序开始使用存储器之前,预分配借出方装置中的物理存储器是不必要的。页面驱逐业务及借出方装置存储器可用性随着在借入方装置上运行的应用程序的占用面积增长确定借入存储器的使用率的大小。消除为应用程序预分配借出方装置中的物理存储器的需要(例如,如在RDMA协议的情况中所需要那样)消除特殊编程的必要性(例如,通过RDMA的消息传递接口(MPI))且允许应用程序在不同配置的装置中以其原始代码起作用还利用向外扩展应用程序容量的所有益处,如其在RDMA及类似物的情况中那样。
一般来说,借出方装置可经配置以针对特定借入方装置以被动模式或主动模式操作。借出方装置可针对不同借入方装置以不同模式操作。
在被动模式中,借出方装置的操作系统观测由借入方装置的操作系统通过链路高速缓存或迁移的存储器页面,且相应地修改其自身对应于这些页面的页面表条目。借出操作系统对页面移动执行的观测可(例如)通过总线窥探或硬件监测来完成。
借入方装置的操作系统经配置以维持借入方装置的本地存储器及物理地驻存于借出方装置中的借入存储器的页面表。一般来说,当借入存储器页面由在借入方装置上运行的应用程序存取时,页面的内容当前可存储于或当前可不存储于借入方装置的本地存储器页面中。
当借入方装置存取不存在于借入方装置的本地存储器中的页面时,发生页面故障。出于我们的目的,考虑在两种情况中发生页面故障:1)经存取页面完全不存在;及2)经存取页面存在但不在本地存储器中。
如果页面不存在,那么其从未被写入或读取。那个页面不存在页面表条目(PTE)。这是页面第一次被存取。如果对此页面执行读取操作,那么分配实际页面是不必要的。一些操作系统(例如Linux)可提供填满零的虚假页面,这是因为页面从未被写入且因此不含数据。因此,对此页面执行的读取操作得到零作为结果。在此情况中,OS针对此页故障执行处理程序:TLB未命中导致页面游走,这确定读取操作是对不具有PTE的页面执行。因此,传回到零页面的映射。
如果写入操作是第一次对页面执行,那么其是真故障。真故障导致本地存储器中的新的PTE及页面分配。针对此情况的页面故障处理程序的实例:TLB未命中导致页面游走,这确定写入操作对不具有PTE的页面执行。因此,操作系统分配新的页面、生成PTE并将所述PTE安装于页面表中。在PTE被高速缓存于TLB中之后,故障得到解决。
当在存取借入页面时发生故障且页面的内容当前不在借入方装置的本地存储器中时(例如,在借入页面的内容已迁移/驱逐到借出方装置之后),借入方装置的操作系统可通过借入方装置与借出方装置之间的通信链路与借出方装置通信以检索或迁移借入页面的内容。
可关于在上文论述的两种情况中的处理执行高速缓存操作。举例来说,借出方装置可保持页面副本。如果借入方装置不进一步修改页面(例如,仅对页面执行读取操作),那么所述副本可为有用的。在此情况中,无需驱逐,这是因为页面的真正副本已存在于借出方装置上。类似地,当借入方装置与借出方装置之间的通信链路可自由使用时,借入方装置可执行页面的推测驱逐。
任选地,借出方装置及/或借入方装置可经配置具有加速在借出方装置与借入方装置之间迁移内容的操作的固件/硬件。
任选地,借出方装置的操作系统可经配置以维持及操作其自身的一组页面表及相关联资源,例如页面表游走器、转译旁视缓冲器(TLB)、内容可寻址存储器(CAM)、查找表等。
借出方装置的操作系统监测来自从借出方装置借入存储器的借入方装置中的任何者的存储器存取请求。其可经配置以提供在借入方装置之中共享的页面语义(例如,原子、锁、信号标、旗标、超时等)。因此,借入存储器的地址空间根据借出方装置中的页面表在借入方装置之中是统一的。分布式应用程序可通过经由借出方装置共享借入存储器利用统一地址空间,其中不同例子应用程序在不同借入方装置上运行。
任选地,借出方装置可经配置以接受来自借入方装置的请求以在借给借入方装置的某些存储器区域上产生计算结果。因此,借出方装置不仅提供存储器资源而且还提供用于处理借给借入方装置的存储器中的数据的计算能力。
由借入方装置及借出方装置的操作系统提供的存储器服务允许在借入方装置上运行的应用程序以字节粒度寻址借入存储器,其中故障以页面粒度解决。
借入方装置的操作系统可通过借入方装置与借出方装置之间的通信链路将页面从本地存储器驱逐或迁移到借出方装置。借入方装置的操作系统可基于页面的不频繁使用及/或基于页面的使用时间比其它页面早或基于关键性或任何其它可能可测量系统参数识别从借入方装置的本地随机存取存储器驱逐或迁移到其借入存储器的页面。借入方装置的操作系统可决定驱逐或迁移借入页面以释放本地存储器用于其它用途,例如新的本地页面分配或用于页面从借出方装置的迁移。作为此方法的结果,当前页面拥有者(借入方或借出方)拥有页面的真正副本。其它装置仍可高速缓存所述页面以防以下情况:页面在拥有者释放其之后仍未被修改。举例来说,当借入方从借出方得到页面时,借出方不再具有那个页面。然而,借出方可不删除页面副本而是保持所述页面以防以下情况:如果页面在驱逐之后将是未修改的,将无需通过链路将其传送回到借出方。要是借出方也想修改所述页面或将所述页面提供到其它借入方怎么办?在此情况中,所有写入将必须在借出方上发生以便合并来自不同借入方的写入请求。
为了驱逐或迁移页面,借入方装置的操作系统将页面的内容传递到借出方装置,从而导致借出方装置将页面存储于借出方装置的存储器中。接着,借入方装置的操作系统可更新页面表以指示所述页面现在在借出方装置中而不在借入方装置的本地存储器中。
在主动模式中,借出方装置的操作系统可经配置以监测借入方装置上的页面表、识别未使用的页面及针对其它存储器用户改换未使用页面的用途。
借出方装置与借入方装置之间的交互可经由虚拟化实施,这允许借出方装置监测借入方装置中的页面表使用。
举例来说,借入方装置的操作系统可部分经虚拟化用于借出方装置的操作系统中的操作。借入方装置的操作系统的存储器管理代码/子例程中的一些可经由虚拟化配置以在借出方装置上运行及/或作为借出方装置的操作系统的部分运行。在此实施方案中,借入方装置的操作系统可将存储器存取请求扩展到借出方装置的操作系统以执行此类子例程,其可在借出方装置的操作系统的级别下硬件/固件加速。
举例来说,借出方装置的操作系统可创建虚拟存储器装置并将虚拟存储器装置提供到借入方装置。借入方装置可按需请求虚拟存储器装置,且使虚拟存储器装置可用于服务在借入方装置上运行的应用程序的存储器资源要求。
在一些例子中,如果在借入方装置上运行的应用程序可容忍或接受由借入方装置与借出方装置之间的通信链路导致的延时,那么可通过通信连续直接进行对借入页面的存取而无需将完整页面迁移到借出方。在其它实施方案中,内容迁移可在子页面级别下配置;且仅迁移被存取及/或经预测将被存取的页面的部分。任选地,操作系统可在实施直接存储器存取时使用远程直接存储器存取(RDMA)技术。任选地,此直接存储器存取可在存储器控制器及/或存储器管理单元处实施,且因此避免标准RDMA协议及其开销。
在一些实施方案中,借入方装置的操作系统经配置以动态地调整虚拟存储器页面的物理位置。虚拟存储器页面由页面的虚拟存储器地址指定。虚拟存储器页面最初可位于借入方装置的本地存储器中,随后移动到由借出方装置借给借入方装置的存储器,及随后移动到借入方装置的另一本地页面。
为了将虚拟页面从借出方装置迁移到借入方装置,借入方装置从借出方装置提取页面的内容、将所述内容存储于其本地存储器中及更新相关页面表以建立本地物理页面与虚拟页面之间的映射。一旦虚拟页面迁移到借入方装置,借出方装置就可释放先前用于虚拟页面的物理存储器及/或擦除所述物理存储器处存储的数据。任选地,借出方装置的操作系统可保留先前用于虚拟页面的页面且保持其内容作为虚拟页面的备用副本。
在相反方向上,借入方装置的操作系统可将虚拟页面从借入方装置迁移到借出方装置。举例来说,借入方装置的操作系统可请求借出方装置中的借入页面的分配,及传输虚拟页面的内容以用于将其存储于借出方装置上的借入存储器中。一旦虚拟页面的内容被存储于借出方装置上,借入方装置的操作系统就可更新其针对虚拟页面的页面表,以识别虚拟页面与其在借入存储器中的物理位置之间的映射以完成页面到借出方装置的迁移。在虚拟页面迁移之后,先前用于管控虚拟页面的本地存储器可用于管控另一虚拟页面。在此实施方案中,将虚拟存储器或虚拟存储器地址空间的经预先确定部分静态地映射到借出方装置中的借入存储器是不必要的。
此外,虚拟页面无需在经预先确定借出方装置中被管控。举例来说,借入方装置的操作系统可将虚拟页面从第一借出方装置迁移到借入方装置,且接着,将虚拟页面从借入方装置迁移到第二借出方装置。在一些例子中,借入方装置的操作系统可请求虚拟页面从第一借出方装置到第二借出方装置的迁移而无需将页面的内容下载到借入方装置,且接着,将此内容更新到第二借出方装置。
使用存储器即服务(MaaS)技术,移动装置供应商可在市场上出售在操作系统级别下具有万亿字节的存储器容量的移动装置,其将由包含云计算基础设施的借出方装置上的新兴存储器支持。举例来说,当经配置具有128MB本地存储器的智能电话连接到计算机网络或因特网或本地存储器设备或实施本文中描述的MaaS概念的任何其它装置时,所述电话中的应用程序可存取64TB的随机存取存储器。
图1展示其中计算装置或服务器计算机可从另一计算装置及/或另一服务器计算机借入存储器及/或将存储器借给另一计算装置及/或另一服务器计算机的系统。
图1将计算装置101及103及服务器计算机105及107说明为经由计算机网络及/或因特网109(其可包含蜂窝通信网络,例如第五代蜂窝网络)连接的借入方装置及借出方装置的实例。
计算装置101及103及服务器计算机105及107中的每一者可从另一装置借入存储器及/或将存储器借给另一装置。计算装置101及103及服务器计算机105及107中的每一者可具有一或多个通信装置(例如,117、137、157及177)以与彼此或系统中的另一计算装置或服务器计算机建立一或多个通信链路。计算装置101及103及服务器计算机105及107中的每一者可具有经配置以执行指令的一或多个处理器(例如,115、135、155及175),例如操作系统(例如,113、133、153及173)及在操作系统下运行的应用程序或程序的指令。
计算装置101及103及服务器计算机105及107中的每一者可具有耦合(例如,经由存储器总线)到相应处理器(例如,115、135、155及175)的本地随机存取存储器(例如,111、131、151及171)。
在一些实例中,装置A101或装置B103可为穿戴式计算装置、物联网的计算装置、移动计算装置等。
在一些实例中,服务器P105或服务器Q107可为迷你服务器、个人计算机、存储器设备、存储设备、网络存储装置、服务器计算机、服务器机群等。
在一个实例中,装置A101可使用有线连接、无线个人局域网(WPAN)、无线局域网(WLAN)及/或无线广域网络(WWAN)连接到装置B103、服务器P105及/或服务器Q107。
在另一实例中,装置B103可使用有线连接、无线局域网(WLAN)及/或无线广域网络(WWAN)连接到服务器P105及/或服务器Q107。
在另一实例中,服务器P105可使用有线连接、局域网、无线局域网(WLAN)及/或无线广域网络(WWAN)及/或因特网连接到服务器Q107。
服务器P105可从服务器Q107借入存储器及将借入存储器及/或本地存储器借给装置101及103(及/或类似装置)。装置B103可从服务器P105及/或服务器Q107借入存储器及将借入存储器及/或本地存储器借给装置A101(及/或类似装置)。
一般来说,计算装置可将存储器借给一或多个借入方装置及从一或多个借出方装置借入存储器。
操作系统113、133、157及173经配置以将存储器服务提供到应用程序及程序,使得所述应用程序及程序可使用虚拟存储器而无需知道其物理分配,使得此虚拟存储器可部分分配于借入存储器中且部分分配于本地存储器111、131、151及171中。操作系统及支持硬件减轻应用程序及程序的负担以管理虚拟存储器分配,这为不具有经设计以处置本地存储器与借入存储器分配之间的差异的特殊代码段或指定指令的应用程序及程序提供便利。
在一个实例中,服务器Q107的本地存储器171的部分借给服务器P105。服务器P105将借入存储器的部分及/或其本地存储器151的部分借给装置B103,装置B103又将其借入存储器的部分及/或其本地存储器131的部分借给装置A101。因此,由操作系统113分配给在装置A101的处理器115上运行的应用程序的虚拟存储器可部分驻存于装置A101的本地存储器111中、部分驻存于装置B103的本地存储器131中、部分驻存于服务器P105的本地存储器151中及/或部分驻存于服务器Q107的本地存储器171中。操作系统113、133、157及173经配置以与彼此合作以提供存储器服务及/或由应用程序使用的虚拟存储器在各种装置(例如,111、131、151及/或171)的本地存储器之中的物理分配,使得经编程以在装置A及其本地存储器101上运行的应用程序也可在无需修改的情况下运行,其中其虚拟存储器部分分配于由装置B103、服务器P105及/或服务器Q107借给服务器A101的借入存储器(131、151及/或171)中。
图2说明通过通信网络连接实施操作系统间存储器服务的借入方装置201与借出方装置203,所述网络连接例如通过局域网、广域网络及/或蜂窝通信网络(例如第五代蜂窝网络)的有线或无线连接205。
在图2中,借入方装置201从借出方装置203借入存储器;且借出方装置203将存储器202借给借入方装置201。举例来说,借入方装置201可为图1的系统中的装置A101、装置B103或服务器P105;且借出方装置203可为图1的系统中的装置B103、装置A101105或服务器P105。此外,借出方装置功能性可实施于借入方装置201中,从而使其能够将存储器借给另一装置。类似地,借入方装置功能性可实施于借出方装置203中,从而使其能够从另一装置借入存储器。
在图2中,借入方装置201具有通信装置217、一或多个处理器215与存储器管理单元(MMU)216及本地随机存取存储器211。在一些实施例中,处理器215及本地存储器211可在单独计算机芯片中及/或形成于单独集成电路裸片上,且在其它实施例中(例如,在芯片上系统(SoC)中),处理器215及本地存储器211可经封装于同一计算机芯片中及/或形成于同一集成电路裸片上。
借入方装置201的操作系统213包含经配置以维持存储器图217的存储器服务模块209。存储器图217识别虚拟存储器与物理存储器之间的映射,其中物理存储器可部分在借入方装置201中的本地存储器211中且部分在借出方装置203中的借入存储器202中。操作系统213向在借入方装置201上运行的一或多个应用(例如212)提供虚拟存储器服务。处理器215可通过执行应用程序代码212的指令运行应用程序212。应用程序存储器读取及写入指令可使用虚拟存储器。存储器管理单元(MMU)216根据存储器图217将虚拟存储器地址转译成物理存储器地址。
当借入方装置201从借出方装置203借入存储器时,借入存储器204虚拟地位于借入方装置201中,且其物理地在借出方装置203中作为本地随机存取存储器231中的借出存储器202。任选地,借出方装置203可在经由外围总线及/或装置控制器耦合到借出方装置203的处理器235的存储装置234中配置借出存储器202的部分或其全部。举例来说,借出方装置203的操作系统233可以类似于将存储器资源作为虚拟存储器分配给在借出方装置203上运行的应用程序(例如232)的方式将其存储器资源的部分作为虚拟存储器分配给借入方装置201的操作系统213。因此,由借入方装置201的操作系统213使用的借入存储器204可在与由应用程序232使用的虚拟存储器及/或由借出方装置203的其它借入方使用的借入存储器统一的虚拟存储器地址空间中。替代地,借出方装置203的操作系统233可创建借入存储器204的虚拟存储器组件;且借入方装置201的操作系统213可使借入方装置201中的虚拟存储器组件可存取。虚拟存储器组件的虚拟存储器控制器可实施于操作系统213中以存取借入方装置201可存取的虚拟存储器组件。MMU216可实施硬件块以使虚拟存储器控制器加速,且通过这样做,改进虚拟存储器组件存取的速度。
在一些实例中,借入存储器204是隐式的,使得其与在借入方装置201上运行的应用程序的虚拟存储器的剩余部分不可区分。仅当通过读取存储器图207将虚拟页面地址转译成物理地址时出现区别,且在所述转译之后物理地址看起来是在借出存储器202中。在其它实例中,如果虚拟存储器属于由借出方装置203所提供的借入存储器204,那么操作系统213存储虚拟存储器部分的显式识别。在所有情况中,操作系统213配置存储器图217以存取作为借入存储器204的虚拟存储器及写入到所述虚拟存储器,借入存储器204物理地在借出方装置203中的借出存储器202中或在迁移到借入方装置201之后位于那个装置中。
存储器图217可经由页面表实施。页面表的部分高速缓存于存储器管理单元(MMU)216中,使得当在处理器215中执行的指令存取高速缓存于存储器管理单元(MMU)216中的页面表的部分中定义的虚拟地址时,存储器管理单元(MMU)216将虚拟地址转译成物理地址。成功的地址转译允许处理器215继续存储器存取而无需执行操作系统213的代码。
当存储器管理单元(MMU)216无法使用高速缓存于存储器管理单元(MMU)216中的页面表成功地转译虚拟存储器地址时,生成页面表条目高速缓存未命中,这导致处理器215执行操作系统213的存储器服务209的指令以解决此高速缓存未命中。在一些实施方案中,MMU含有经架构化以解决MMU 216的高速缓存中的页面表条目高速缓存未命中的硬件IP。作为MMU的部分的此IP从存储于物理存储器211中的页面表提取所需页面表条目。如果所需条目不存在或其存在但其将虚拟页面地址转译成物理借出存储器202中的地址,那么生成此页面的页面故障。此故障可由MMU 216及通信装置217直接以硬件解决。替代地,此故障可由操作系统213及存储器服务209以由硬件块:MMU216、处理器215、通信装置217辅助的软件解决。
当操作系统213的存储器服务209或MMU 216确定被存取的虚拟存储器地址在借入存储器204中时,存储器服务209或MMU 216可分配本地物理存储器211的物理页面、经由通信装置217及237及计算机网络连接205与借出方装置203通信以将借入存储器204的页面从物理借出存储器202迁移到物理本地存储器211中、生成将虚拟页面映射到经分配本地物理页面的页面表条目及将页面表条目载入到存储器管理单元(MMU)216中。因此,在页面故障之前,借入存储器204的虚拟页面物理地定位于借出方装置203中的借出存储器202中。在处理页面故障之后,虚拟页面定位于本地存储器211中。借出方装置203的借出存储器202中的页面的内容仍可被保存供未来使用及用于其它用途。
当不存在可用于迁移的自由本地页面时,存储器服务209可将当前在本地存储器211中的所选择的虚拟页面驱逐到借出存储器202。当将所选择的虚拟页面驱逐到借出方装置203时,存储器服务209与借出方装置203通信以将虚拟页面的内容从本地存储器211传输到借出存储器202并更新存储器图217。在将虚拟页面从本地存储器211驱逐之后,可释放本地存储器211中用于经驱逐虚拟页面的的空间。
举例来说,存储器服务209可经配置以驱逐最不频繁地使用的虚拟页面或最早使用的虚拟页面。
在图2中,借出方装置203具有通信装置237、一或多个处理器235与存储器管理单元(MMU)236及本地随机存取存储器231。任选地,借出方装置203包含经由外围总线及/或计算机网络连接到处理器235的一或多个存储装置234。举例来说,存储装置234可为固态驱动器(SSD)或硬盘驱动器(HD)。
借出方装置203的操作系统233包含经配置以维持存储器图227的存储器服务模块229。存储器图227识别虚拟存储器与物理存储器之间的映射。存储器图可存储于存储器231中或专用于其存储器(例如内容可寻址存储器或特殊高速缓存)。操作系统233以类似于借入方装置201服务其应用程序212的方式向在借出方装置203上运行的一或多个应用程序232提供虚拟存储器服务。
任选地,借出方装置203在统一虚拟存储器空间中向借入方装置201提供借入存储器202。借入方装置201的存储器服务209以与应用程序232使用由存储器服务229提供的虚拟存储器相同的方式使用借入存储器204。举例来说,借出方装置203的存储器服务229可将虚拟存储器分配到在借出方装置203上运行的应用程序232及分配虚拟存储器作为由借入方装置201的存储器服务209使用的借入存储器204,就像存储器服务209是在借出方装置上运行的应用程序一样。因此,在借出方装置203及借入方装置201(及从借出方装置203借入存储器的其它装置)上运行的应用程序232可在统一虚拟地址空间中操作。协同计算可基于统一虚拟地址空间进行配置。此外,当借出方装置203从另一装置/服务器(例如105或107)借入存储器时,借入存储器也可提供于统一虚拟地址空间中。统一地址空间可促进计算装置之中的数据共享及协作计算。
借出方装置203的存储器装置229可维持存储器图227,其包含对应于由借入装置201存取的借入存储器204的借出存储器202的虚拟地址与借出存储器202的物理地址之间的映射。举例来说,在存取借入页面时由借入方装置201识别的虚拟页面的页面表条目可加载到存储器管理单元(MMU)236中,以促进虚拟页面的地址与借出方装置203的处理器的借出存储器202的物理地址之间的转译以代表借入方装置201执行计算。任选地,借出方装置203可包含类似于存储器管理单元236的硬件以使用存储器图227促进借出方装置203与借入方装置201之间的优化及/或加速数据传送,所述存储器图227识别借入方装置201所知的借入存储器204与在借出方装置203中物理地可存取的借出存储器202之间的映射。
图3说明根据一个实施例的实施借入存储器的技术。举例来说,图3的技术可实施于图2中说明的借入方装置201中。
图3说明存储器211、经配置以使用物理地址(例如257)存取存储器211的存储器管理单元(MMU)216及定义虚拟地址区域(例如261、263、265…)与虚拟存储器区域映射到其处的地址区域(例如物理地址区域(例如281、283…)及借入存储器区域(例如273、275…))之间的映射的存储器图217。
举例来说,借入存储器地址区域(例如273、275…)可经配置以将由借出方装置203分配的虚拟地址区域识别为提供到/借给借入装置201的存储器。
举例来说,虚拟地址区域A 261与存储器图217中的物理地址区域281相关联以指示虚拟存储器区域当前直接映射到本地物理存储器211的对应区域。
举例来说,虚拟地址区域B 263在存储器图217中与借入存储器地址区域X 273及物理地址区域S 283相关联以指示虚拟地址区域B 263映射到借入存储器地址区域X 273且物理驻存于物理地址区域S 283中。因此,对虚拟地址区域B 263的存取可通过存取本地存储器211中的物理地址区域S 283实现。虚拟地址区域C 265在存储器图217中与借入存储器地址区域Y 275相关联且不与存储器图217中的任何物理地址区域相关联。因此,针对存取虚拟地址区域C 265,借入方装置需要与借出方装置通信。
物理地址区域S 283中的内容可经驱逐到借出方装置以释放物理地址区域S 283。一旦物理地址区域S 283被释放,其就可用于另一借入存储器地址区域的物理放置,例如借入存储器地址区域Y 275。一旦借入存储器地址区域Y 275的内容从借出方装置迁移到借入方装置到物理地址区域S 283,物理地址区域S 283就可用于提供对映射到统一地址空间的借入存储器地址区域Y 275且物理地定位于借入方装置的物理地址区域S 283中的虚拟地址区域C 265的存取,如图4中说明。
在图5中,存储器管理单元(MMU)(例如类似于图3中说明的216)具有可存储虚拟到物理存储器图253(例如,由借入方装置201的操作系统213维持的存储器图217的部分)的转译旁视缓冲器(TLB)(例如类似于图3中说明的251)。当借入方装置201的处理器215执行使用虚拟地址255的指令时,TLB 251使用虚拟到物理存储器图253将虚拟地址255转译成物理地址257;且存储器管理单元(MMU)216可使用物理地址257存取存储器211中的存储器空间259(例如,通过存储器总线)。
加载于TLB 251中的虚拟到物理存储器图253通常是由借入方装置201的操作系统213管理的存储器图207的部分。当借入方装置201的处理器215执行使用TLB 251中的虚拟到物理存储器图253中未覆盖的虚拟地址的指令时,存储器管理单元(MMU)216可致使处理器215执行操作系统213,其经编程以替换TLB 251中的虚拟到物理存储器图253的部分,使得TLB 251中的经更新虚拟到物理存储器图253包含用于虚拟地址(例如255)到物理地址(例如257)的转译的数据。
存储器管理单元(MMU)216通常经配置以经由耦合于借入方装置201的存储器管理单元(MMU)216与借入方装置201的本地存储器211之间的存储器总线存取存储器211。当虚拟地址255最初在映射到借入存储器地址区域(例如275)的虚拟地址区域(例如265)中时,操作系统213可将此区域的内容从借出方装置的借出存储器迁移到存储器211中的物理地址区域(例如283)并更新TLB 251中的虚拟到物理存储器图253以允许虚拟地址255直接转译成对应于虚拟地址255的物理地址257而无需将其转译成借入存储器地址区域(例如275)。
在一些实施例中,存储器管理单元(MMU)216进一步经配置以使用通信装置217通过计算机网络连接(例如205)存取借入存储器204而无需明确迁移。在此情况中,操作系统213迁移虚拟地址区域(例如265)的内容是不必要的。借入存储器204的物理地址257可包含供通信装置217存取借出方装置203中的借出存储器202中的存储器页面260的信息。使用物理地址257且经由通信装置217作出的存储器存取请求可经由其操作系统233在借出方装置203中处理。替代地,通信装置237及/或存储器管理单元(MMS)236可经配置以处理对借出存储器202的此存取请求(例如,用于读取或写入)而无需执行操作系统233(例如,基于高速缓存于借出方装置203的MMS 236的TLB中的虚拟到物理存储器图或在借出方装置203中经配置以执行类似操作的硬件加速组件)。
虚拟到物理存储器图253可以页面表条目的形式实施。
图6说明计算系统中的借入方-借出方存储器阶层。
在图6中,借出方装置203可以类似于在图2中借入方装置201从借出方装置203借入存储器的方式从一或多个借出方服务器245借入存储器。借出方装置203汇集其本地物理存储器(例如图2中说明的231)的至少一些及/或从借出方服务器(例如245)借入的其存储器中的一些作为用于借给借入方装置201的可用存储器239。一或多个借入方装置201可从借出方装置203借入存储器。
典型的借入方存储器204可具有多个借入存储器区域295、297、…、299及多个本地存储器区域291、293、…。借入方装置201中的借入存储器区域295、297、…、299可经由从借出方装置的借出存储器到借入方装置291、293、…的本地存储器区域的迁移存取。当借入存储器区域295、297、…、299在借入方装置201中未使用时,其可被驱逐回到借出方装置203,如图4及图5中说明。
类似地,借出方装置203可管控其本地存储器中借给借入方装置201的区域(例如299)或从借出方服务器245借入的本地存储器。
一般来说,一个以上借出方装置203可用于向借入方装置201提供存储器服务;且一个以上借出方服务器245可以阶层配置。
任选地,提供为阶层中的服务的存储器(例如295、297、…、299)在统一虚拟地址空间中配置。因此,借入方装置201、借出方装置203及借出方服务器245可通过参考统一虚拟地址空间中的虚拟地址在处理存储器中的数据时协作。
举例来说,图6中的借入方装置201可为图1的系统中的装置A 101或装置B103。
举例来说,图6中的借出方装置203可为图1的系统中的装置B103或服务器P105。
举例来说,图6中的借出方服务器245可为图1的系统中的服务器P105或Q107。
图7展示通过通信网络连接实施操作系统间存储器服务的方法。举例来说,图7的方法可在图1的系统中实施,其具有图2中说明的借入方-借出方配置及/或图6中说明的借入方-借出方存储器阶层。
在框301处,建立从借入方装置201到借出方装置203的通信连接205。
在框303处,借入方装置201与借出方装置203通信以从借出方装置203借入某一量的存储器。借出方装置203可分配由借入方装置201作为借入存储器204借入的借出存储器203,借出存储器203可由借入存储器204用作虚拟存储器。通过借入/借出存储器,装置201及203建立其中借入方装置201的处理器可读取及/或写入到借入存储器204/借出存储器202中的配置。在一些例子中,借出存储器202本身是从另一借出方装置(例如245)借入的存储器。
在框305处,借入方装置201的操作系统213扩展借入方装置201的虚拟/逻辑地址空间以覆盖借入存储器204。在借入方装置201的处理器215上运行的应用程序(例如212)可使用空间中的虚拟地址而在借入存储器204与本地存储器211之间无差别。
在框307处,借入方装置201的操作系统213生成将逻辑地址空间的扩展部分映射到借入存储器204的存储器图217(例如,呈页面表的形式)。
在框309处,借入方装置201的操作系统213将逻辑地址空间的扩展部分分配到应用程序212。
在框311处,借入方装置201的操作系统213经由对借入方装置201的物理存储器211的部分的存取服务对借入存储器212的存取。
图8展示根据一个实施例的服务借入存储器页面的方法。举例来说,图8的方法可使用图2中说明的借入方-借出方配置及/或图6中说明的借入方-借出方存储器阶层在图1的系统中实施。举例来说,图8的方法可用于实施图7的方法的框311。
在框331处,借入方装置201为借入存储器页面204保留借入方装置201的物理存储器211的页面。
在框333处,借入方装置201的处理器存取对应于借入存储器204中的存储器页面260的虚拟存储器地址255。借入存储器页面204可物理地位于借出方装置203的借出存储器202中。
在框335处,借入方装置201的存储器管理单元(MMU)216确定在转译旁视缓冲器(TLB)251中不存在可用于将虚拟存储器地址255转译成本地物理存储器地址的页面表条目。此确定(例如TLB未命中)导致借入方装置201运行其操作系统213以搜索存储器图中的页面表条目。
在框337处,在借入方装置201上运行的操作系统213识别将页面的虚拟存储器地址转译成页面的借入存储器地址的存储器图中的页面表条目。
在框339处,在借入方装置201上运行的操作系统213与借出方装置通信并将具有借入存储器地址的借入页面的物理内容迁移到本地存储器且将那些内容放置在本地存储器的可用物理地址处。不同借入页面从借入方装置到借出方装置的借入页面驱逐可能需要在不存在足够的本地存储器用于借入页面从借出方装置到借入方装置的页面迁移时执行。
在框341处,在借入方装置201上运行的操作系统213生成将借入页面的虚拟地址(例如255)映射到本地存储器中的物理地址257的页面表条目。
在框343处,在借入方装置201上运行的操作系统213将页面表条目加载到转译旁视缓冲器(TLB)251中,这允许处理器继续使用经转译物理存储器地址257存取虚拟存储器地址255。
在一些情况中,借入方装置201与借出方装置203之间的计算机网络连接205具有有限及/或降级的通信带宽。借入方装置201可基于存储器区域的关键性节制分配到不同存储器区域的网络业务/带宽。
举例来说,借入存储器204的页面可基于存储器中存储的内容的类别、使用借入存储器的应用的优先级排名及/或由应用程序建议的数据关键性等级用关键性指示符标注。当借入方装置201与借出方装置203之间的连接性带宽降级时,最不关键的页面可通过分配较少通信带宽用于此类页面的提取、引退、驱逐及/或迁移而经配置为较不容易存取。鉴于借入方装置201与借出方装置203之间的连接性带宽的降级,对最不关键的页面的存取可变慢及/或临时中断。
停止存储器操作可经由使尝试从那个存储器加载需求的应用程序静默或挂起来准备。应用程序在那个时间期间可不进行向前进展。当应用程序从存取借入存储器中断时,有可能执行得体降级。可使应用程序意识到加载或存储操作可导致被挂起;且可使用截然不同编程范例。举例来说,每一存储器存取可包装于尝试-捕获异常包装器中。然而,此方法成本极高。此外,应用程序可经处置以得体地处置此异常。举例来说,应用程序可保持一些上下文开放并管理那个上下文,与异常退出加载/存储操作相关,通知数据移动基础设施那个加载/存储是否最终仍需要被服务。
当借入存储器页面根据关键性进行节制时,在借入存储器204上运行的应用程序仍可得体地降级而无灾难性的故障,且以具有较少可得到/可用内容的减少的功能性继续。
举例来说,媒体库可基于使用频率、使用率历史及/或预测使用率确定其内容的优先级。优先级可用于确定内容被存储于其中的借入存储器页面的关键性。因此,对借入存储器中的不太关键的内容的存取可受到限制及/或中断,对媒体库的可用性具有减小的影响。
图9展示具有存储器区域的借入方装置201,所述存储器区域基于可节制哪一些存储器即服务的网络业务而具有不同关键性等级(或优先级等级)。举例来说,借入方装置201可以图2中说明的方式实施及/或可借入图6中说明的阶层中或图1中说明的系统中的存储器。
在图9中,借入存储器204中的存储器区域295、297、…、299分别用关键性等级401、403、…、405标记。关键性等级401、403、…、405对存储器区域295、297、…、299之中的相对优先级进行排名。用于借入方装置201与其借出方装置(例如203)之间的通信的网络带宽可根据关键性等级401、403、…、405分配。
举例来说,当多个区域(例如295、297)需要从借出方装置203迁移到借入方装置201时,区域(例如295、297)可按顺序根据其关键性等级(例如401、403)迁移。在此布置中,对高关键性等级的存储器区域的重复请求可使对低关键性的存储器区域的存取无限延迟。
替代地,带宽可在具有不同关键性等级的多个区域(例如295、297)之中共享。举例来说,通过允许在给定时间周期内用于不同区域的网络连接205的数据通信量可根据基于存储器区域的关键性等级确定的比率分配。因此,提取低关键性等级的存储器页面的内容将花费比提取高关键性等级的存储器页面的内容更长的时间。然而,低关键性页面的提取将不会被高关键性页面的提取完全阻挡。此外,比率可基于整体可用带宽调整使得当整体可用带宽降级时存取高关键性页面的执行的降级没有低关键性页面那么严重。因此,在借入方装置中运行的应用程序的用户体验可经由使不太关键的方面的存取速度选择性地降级来优化。
在图9中,本地存储器211中的存储器区域(例如291、…、293)中的内容也可用关键性等级(例如407、…、409)标记。在整体可用带宽显著降级的预期下,关键性等级(例如407、…、409)可用于布置不太关键内容到借入存储器204的预测驱逐或迁移。
举例来说,在以子页面粒度共享的特定带宽模型中,可使用链路上的链路级带宽管理能力或强制组块。此实施方案可导致潜在无效非节制案例。替代地,当管理粒度是页面(而非子页面)时,页面提取率可能较慢,并不是提取单个页面所花费的实际时间。在某些实施方案下,提取低关键性等级的存储器页面的内容可比提取高关键性等级的存储器页面的内容花费更长时间。在其它实施方案中,提取低关键性页面所花费的时间的持续时间可基本上保持恒定但可提取低关键性页面群组的速率可比高关键性页面群组慢。
举例来说,在一些例子中,借入方装置201从数个借出方装置(例如103、105及/或107)借入存储器。举例来说,借入方装置201可指示一个借出方(例如105或107)将借给借入方装置201的存储器页面直接传送或复制到另一借出方(例如103或105)。替代地,借入方装置201可将存储器页面从一个借出方(例如105或107)迁移到本地存储器,且接着,将所述页面驱逐到另一借出方(例如103或105)。
图10说明根据一个实施例的标注存储器图中的存储器区域的关键性等级(或优先级等级)。举例来说,图10的存储器图可用于实施图9中的关键性标记。
在图10中,虚拟存储器地址区域261、263、265、…可以类似于图3、4或5中的方式的方式映射到物理地址区域282、283及借入存储器地址区域273、275…。举例来说,存储器图217可以页面表形式指定。
此外,针对虚拟地址区域261、263、265、…中的每一者,存储器图217可包含关键性等级(例如411、413或415)。关键性等级(例如411、413或415)可用于确定虚拟地址区域(例如261、263或265)可将其用于在借入方装置201与借出方装置203之间传递数据的带宽共享。
图11说明根据一个实施例的识别存储器区域的关键性等级/优先级等级的方法。举例来说,图11的方法可用于确定图9及10中的关键性等级(例如401到415)中的任何者。
在图11中,存储器区域的内容的关键性等级421可基于内容类别431、控制所述内容的应用程序(例如212)的优先级433及/或应用程序(例如212)针对内容请求的优先级来确定。
不同内容类别可具有经预先确定权重。当应用程序分配用于存储数据的存储器页面时,所述应用程序可识别存储器页面的内容类别431,例如应用程序状态、历史/日志数据、媒体、传感器数据等。操作系统213可基于内容类别431为关键性指派经预先确定权重。
不同应用程序可具有针对其关键性的经预先确定权重。用户装置的用户可将对一个应用程序212的体验评估为高于对另一应用程序的体验且因此定制到不同应用程序的权重指派。在一些例子中,不同应用程序可具有相互依赖性。因此,向其它应用程序提供重要服务的应用程序可被指派更高优先级433。
相同应用程序及相同内容类别431的不同数据子集可具有不同优先级435。当应用程序212经编程以请求经定制优先级435时,应用程序212可基于可能不能用于操作系统213的信息进行经改进预测(例如439)。当应用程序212不请求经定制优先级435时,操作系统213可跟踪应用程序212的存储器使用率且请求针对内容的基于使用率的优先级435。
经预先确定函数可用于组合内容类别431、应用程序优先级433、…、及/或所请求优先级435以生成关键性等级421。举例来说,可计算内容类别431、应用程序优先级433、…、及/或所请求优先级435的权重,且加总所述权重以获得总权重作为关键性等级421。举例来说,优先级433、…、435可经加总以生成权重,所述权重经应用以通过乘法增大或减小内容类别431的权重。
图12展示根据一个实施例的节制存储器即服务的网络通信的方法。举例来说,图12的方法可实施于图2、6或9中说明的借入方装置201中。举例来说,图12的方法可在借入存储器时经实施为图1的装置A 101、装置B103或服务器P105。
在框451处,在借入方装置201与借出方装置203之间建立通信连接(例如205)。举例来说,连接205可通过网络及/或图1中说明的因特网109。
在框453处,借入方装置201与借出方装置203通信以获得借入方装置201使用由借出方装置203借出以由借入方装置201通过通信连接205存取的某一量的存储器202的准许。
在框455处,借入方装置201的操作系统将虚拟存储器分配到在借入方装置201中运行的应用程序(例如212)。
在框457处,借入方装置201的操作系统配置虚拟存储器使其至少部分管控于由借出方装置203借给借入方装置201的某一量的存储器202上。
在框459处,借入方装置201确定由应用程序(例如212)使用的存储器区域(例如291到299、261到265、273到275及281到283)中的内容的关键性等级(例如401到415)。
在框461处,借入方装置201基于关键性等级将通信连接212的网络带宽分配到由存储器区域在存取由借出方装置203通过通信连接205借给借入方装置201的所述量的存储器202时使用的数据通信。
由借出方装置203借出的存储器可部分由借出方装置203从另一装置(例如245)借入。
关键性等级(例如401到415、421)可至少部分基于内容的类别431、控制所述内容的应用程序(例如212)的优先级433或应用程序(例如212)针对内容请求的优先级435或其任何组合来识别。
举例来说,应用程序(例如212)可基于内容的使用率历史、内容在后续时间周期中的预测使用率(例如439)或内容的使用频率(例如437)或其任何组合请求存储器区域中存储的内容的优先级435。在一些例子中,操作系统213可收集使用率历史、确定预测使用率(例如439)及/或使用频率(例如437)及/或代表应用程序(例如212)计算所请求优先级435。
为了分配网络带宽,借入方装置201的操作系统213或借入方装置201的通信装置217可在存取由借出方装置203借给借入方装置201的所述量的存储器202时根据对应于存储器区域中的内容的关键性等级的比率通过通信连接节制/控制在一时间周期内用于存储器区域的数据通信量。因此,在所述时间周期期间,用于存储器区域的通信可根据所述比率被视作被允许的;且不同存储器区域的数据通信的平均速度可经控制与所述比率成比例。
在一些例子中,借入方装置201可在后续时间周期内预测通信连接的网络带宽中的降级。作为响应,操作系统213可根据存储器区域中的内容的关键性等级调整借入方装置的本地存储器211与由借出方装置203借给借入方装置201的所述量的存储器203之间的虚拟存储器的管控。
举例来说,借入方装置201的操作系统213可识别第一存储器区域具有低于第二存储器区域的关键性等级。操作系统213可重新配置虚拟存储器的管控使得与第一存储器区域相关联的虚拟存储器区域从在本地存储器211中被管控或高速缓存迁移到在由借出方装置203借给借入方装置201的所述量的存储器202量中被管控;且与第二存储器区域相关联的虚拟存储器区域可从在由借出方装置203借给借入方装置201的存储器202量中被管控迁移到在借入方装置201的本地存储器211中被管控或高速缓存。
在一些实施例中,计算装置的存储器管理单元(MMU)经配置以加速通过网络连接对借入存储器的存取。
举例来说,借入方装置201的存储器管理单元(MMU)216可经配置以不仅通过存储器总线存取借入方装置201的本地随机存取存储器211而且还使用通信装置217通过网络连接205存取管控于借出方装置203的借出存储器202中的借入存储器204。存储器管理单元(MMU)216可使用通信装置217根据由存储器管理单元(MMU)216从虚拟地址255转译的物理地址257存取借出方装置203中的借出存储器202,而无需致使借入方装置201的处理器215执行其操作系统213的指令。
举例来说,在存取借出存储器202时由操作系统213执行的一些例行操作可实施于存储器管理单元(MMU)216中,使得可执行例行操作而无需处理器215在其执行单元中执行指令。此MMU实施方案/支持在存取物理地位于借出方装置203的借出存储器202中的借入存储器204时可改进处理器215的效率。
一般来说,操作系统213可经编程以处置比存储器管理单元(MMU)216可处置的情况的更多的情况。举例来说,当通过网络连接205存取借出存储器202的通信遇到超出存储器管理单元(MMU)216的处理能力的异常状况时,可执行操作系统213以处置此类情况。
图13到15说明根据一些实施例的存取借入存储器的硬件加速配置。举例来说,图13到15的技术可用图2的存储器服务技术及图3的存储器映射技术实施于图1或6的系统中。
在图13中,借入方装置201的存储器管理单元(MMU)216经配置以具有到本地随机存取存储器211的连接及到借入方装置201的通信装置217的连接。在一些例子中,通信装置217是存储器管理单元(MMU)216的部分。
高速缓存于转译旁视缓冲器(TLB)251中的虚拟到物理存储器图253含有将虚拟地址256转译成物理地址257的信息。
当指令执行于借入方装置201的执行单元215中时,存储于寄存器501中的一者中及/或由执行单元生成的虚拟地址255可用于加载指令、检索操作数及/或存储计算结果。在此情况中,借入方装置201存取由虚拟地址255识别的虚拟存储器。
当由虚拟地址255识别的虚拟存储器管控于本地存储器211中的存储器页面259中时,物理地址257经配置以足以使存储器管理单元(MMU)216寻址用于存储器操作(例如读取或写入)的存储器页面259。
当由虚拟地址255识别的虚拟存储器管控于物理地位于借出方装置203内的借出存储器202中的存储器页面260中时,物理地址257经配置以包含足以使通信装置217通过计算机网络连接205将存取请求传输到借出方装置203的信息。
举例来说,当由虚拟地址255识别的虚拟存储器管控于借出存储器202中的存储器页面260中时,物理地址257可包含借出方装置203的网络地址及由借出方装置203的操作系统服务的虚拟存储器空间中的虚拟存储器地址。存储器管理单元(MMU)216请求通信装置217使用网络地址将存取请求传输到借出方装置203;且存取请求包含识别借出方装置203中的存储器页面260的虚拟地址。
当通信装置237接收存取请求时,通信装置237可经配置以按类似于处理器235指示存储器管理单元(MMU)236存取虚拟地址的方式指示存储器管理单元(MMU)236存取由包含于来自借入方装置201的存取请求中的虚拟地址识别的存储器页面260。在一些例子中,通信装置237是存储器管理单元(MMU)236的部分。
举例来说,当虚拟地址使用借出方装置203的虚拟到物理存储器图转译成存储器页面260的物理地址时,存储器管理单元(MMU)236执行地址转译且使用物理存储器地址存取存储器页面260。当用于虚拟地址的转译的虚拟到物理存储器图尚未在借出方装置203的存储器管理单元(MMU)236中时,可执行借出方装置203的操作系统233以将虚拟到物理存储器图的相关部分加载到借出方装置203的存储器管理单元(MMU)236中,使得存储器管理单元(MMU)236可执行地址转译以存取存储器页面260。
在一些例子中,借出方装置203可管控存储装置232中由借入方装置201使用的虚拟地址。响应于存储器管理单元(MMU)236中转译虚拟地址的故障/页面故障,存储器管理单元(MMU)236致使处理器235执行操作系统233,这会将数据内容从存储装置232加载到借出存储器202中、更新存储器管理单元(MMU)236的转译旁视缓冲器(TLB)以促进存取。替代地,操作系统233可直接服务来自存储装置的存取请求,而无需在借出方装置203的本地存储器231中高速缓存或缓冲或重新管控所述存取请求。
在一些例子中,借出方装置203可管控另一借出方装置(例如205)中由借入方装置201使用的虚拟地址。在此情况中,借出方装置203可以类似于借入方装置201存取借出方装置203的方式存取其借出方(例如205)。
任选地,当在借入方装置201的执行单元215中的一者中存取的虚拟地址255转译成物理地址257用于经由通信装置217存取时,通信装置217可将虚拟地址区域从借出方装置203迁移到通信装置217的缓冲器505中,如图14中说明。
举例来说,当虚拟存储器的页面中的虚拟地址256被存取时,在对页面进行进一步存取的预期下,通信装置217可将整个页面(或其一部分)迁移到通信装置217的缓冲器505中。
替代地,借入方装置201的存储器管理单元(MMU)216可经配置以保留本地随机存取存储器211的部分作为用于高速缓存借出存储器203的部分的缓冲器,如图15中说明。
任选地,借入方装置201的存储器管理单元(MMU)216可进一步经配置以按图5中说明的方式的方法管理在虚拟物理存储器页面253中识别的虚拟存储器区域的管控的调整。
举例来说,当存储器管理单元(MMU)216确定管控于借出方装置203的借出存储器202中的虚拟区域比管控于本地存储器211中的虚拟区域更频繁地存取及/或更晚被存取,存储器管理单元(MMU)216可使用通信装置217将更频繁地存取及/或更晚被存取的虚拟区域迁移到被管控于本地存储器211中并将不太频繁地被存取及/或更早被存取的虚拟区域驱逐到被管控于借出存储器202中。因此,存储器管理单元(MMU)216可优化在高速缓存于转译旁视缓冲器(TLB)251中的虚拟到物理存储器图253中识别的虚拟存储器区域的管控并根据调整更新高速缓存于转译旁视缓冲器(TLB)251中的虚拟到物理存储器图253。借入方装置201的操作系统213可用于进一步调整其它虚拟存储器区域的管控。
图16及17说明根据一些实施例的提供对借出存储器的存取的硬件加速配置。举例来说,图13、14或15中说明的借出方装置203的配置可用图16或17的配置替换。
在图16中,借出方装置203具有外围总线511及存储器总线513。
借出方装置203的通信装置237及存储装置232经由外围总线511连接到借出方装置203的处理器235。借出方装置203的本地随机存取存储器231经由存储器总线513连接到处理器。
操作系统233最初可存储于存储装置232中且随后被加载到随机存取存储器231中以用于执行。
当通信装置237接收识别由操作系统233分配用于由借入方装置201使用的借入存储器204的虚拟存储器地址509的存储器存取请求507时,通信装置237经配置以请求处理器235根据存储器存取请求509进行处理。
在通信装置237接收存取请求507时,在借出方装置203中运行的操作系统233可管控存储装置232中或随机存取存储器231中的虚拟地址509(例如,经由存储器图227的配置)。
如果虚拟地址509管控于存储器231中且存储器管理单元(MMU)236具有转译虚拟地址509的存储器图227的高速缓存部分,那么处理器235可通过存取从存储器图227的高速缓存部分确定的存储器页面260的物理地址处理存取请求507。
如果虚拟地址509管控于存储器231中且存储器管理单元(MMU)236不具有转译虚拟地址509的存储器图227的高速缓存部分,那么处理器235可执行操作系统233以更新存储器图227的高速缓存部分使得存储器管理单元(MMU)236可将虚拟地址509转译成存储器页面260的物理地址。
如果虚拟地址509管控于存储装置232(例如硬驱动器或固态驱动器)中,那么存储器管理单元(MMU)236不具有转译虚拟地址509的存储器图227的高速缓存部分(例如,通过生成页面故障)。作为响应,存储器管理单元(MMU)236导致处理器235执行操作系统233,其可经配置以通过存取存储装置232实施存取请求507及/或将虚拟存储器区域(例如,虚拟存储器页面)迁移到随机存取存储器231中。
如果虚拟地址509管控于另一借出方装置(例如245)中,那么借出方装置203将虚拟地址509转译成识别其借出方装置(例如245)的网络地址及由其借出方装置(例如245)指派的虚拟地址(其可任选地经配置为与统一地址空间中的虚拟地址509相同)的物理地址。接着,借出方装置203可以类似于借入方装置201存取借出方装置203的方式存取其借出方装置(例如245)。
存取请求507可以对应于在借入方装置201的处理器215中的指令执行期间所请求的存储器存取的形式来配置。举例来说,当借入方装置201的处理器215请求从虚拟地址255加载指令时,存取请求507经配置以请求从虚拟地址509(其可任选地经配置为与统一地址空间中的虚拟地址255相同)检索指令。
举例来说,当借入方装置201的处理器215请求从虚拟地址255加载操作数时,存取请求507经配置以从虚拟地址509检索操作数;且当借入方装置201的处理器215请求将计算结果存储在虚拟地址255处时,存取请求507经配置以请求从虚拟地址509检索操作数。
任选地,存取请求507可经配置以实施虚拟地址区域的迁移。举例来说,当虚拟地址509被存取时,通信装置237经配置以自动促进虚拟存储器区域在借出方装置203与借入方装置201之间的迁移。
任选地,通信装置237经实施为借出方装置203的存储器管理单元(MMU)236的部分。
任选地,存储器管理单元(MMU)236经配置以包含操作通信装置237的网络控制器523,如图17中说明。
在图17中,存储器管理单元(MMU)236具有经配置以使用存储器231的物理地址存取存储器页面260的存储器控制器521。此外,存储器管理单元(MMU)236具有经配置以处理基于网络的存储器存取请求(例如507)的网络控制器521。此基于网络的存储器存取请求507可为来自其借入方装置(例如201)或其借出方装置(例如245)的请求。
图18展示根据一个实施例的经由存储器管理单元加速对借入存储器的存取的方法。举例来说,图18的方法可实施于图1中说明的装置A101或装置B103或服务器P105中。举例来说,图18的方法可实施于图2、6、9、13、14或15中说明的借入方装置201中。举例来说,图18的方法可实施于图2、3或13到17中说明的存储器管理单元216或存储器管理单元236中。
在图18中的框531处,存储器管理单元(例如216或236)将虚拟到物理存储器图(例如253)高速缓存于存储器管理单元(例如216或236)的转译旁视缓冲器(例如253)中。
举例来说,虚拟到物理存储器图(例如253)可为由在其中配置存储器管理单元(例如216或236)的计算装置(例如201或203)的操作系统(例如213或233)管理的页面表的部分。
在框533处,存储器管理单元(例如216或236)接收存取虚拟存储器地址(例如255或509)以用于在微处理器(例如215或235)中执行指令的请求。
举例来说,虚拟存储器地址255可存储于寄存器501中以用于在处理器215中执行指令。虚拟存储器地址255可用于从虚拟存储器地址255加载指令、从虚拟存储器地址255加载指令的操作数或存储在执行指令之后由执行单元503生成的计算结果。
在一些例子中,在通信装置237中在来自与借入方装置(例如201)的网络连接的存储器存取请求中接收虚拟存储器地址509;且通信装置237经配置以请求存储器管理单元236处理存取请求507。
在框535处,存储器管理单元(例如216或236)使用高速缓存于转译旁视缓冲器(例如253)中的虚拟到物理存储器图(例如253)将虚拟存储器地址(例如255)转译成物理存储器地址(例如257)。
在框537处,确定物理存储器地址(例如257)是否用于本地存储器(例如211或231)。
举例来说,存储器管理单元(例如216或236)可具有经由存储器控制器(例如521)到存储器总线(例如511)及经由网络控制器523到计算机网络(例如109)两者的连接。
在框539处,如果确定537物理存储器地址(例如257)将用于本地存储器(例如211或231)(例如,第一存储器类型的本地存储器),那么存储器管理单元(例如216或236)指示连接到存储器总线513的存储器控制器521存取物理地址257处的存储器页面259。
在框541处,如果确定537物理存储器地址(例如257)将不用于本地存储器(例如211或231)(例如,第二存储器类型的本地存储器),那么存储器管理单元(例如216或236)指示连接到计算机网络连接205的网络控制器523根据物理地址257存取存储器页面260。
经配置以执行图18的方法的存储器管理单元(MMU)216或236可用于借入方装置201或向另一装置(例如245)借入存储器的借出方装置203的微处理器215或235中。
具有此存储器管理单元(MMU)216或236的通信装置(例如201或203)可具有耦合到本地随机存取存储器(例如211或213)的存储器总线及至少一个微处理器(例如215或235)。微处理器(例如215)可进一步具有寄存器(例如501)及执行单元(例如503)。
计算装置(例如201或203)具有包含指令的操作系统(例如213或233),所述指令在由至少一个微处理器(例如215或235)执行时致使计算装置通过网络连接205使用通信装置(例如217或237)从借出方装置(例如203或245)借入某一量的存储器。
执行单元503经配置以使用映射到从借出方装置(例如203或245)借入的所述量的存储器的至少虚拟存储器地址来执行指令。
举例来说,在从寄存器501检索第一虚拟存储器地址255以用于在执行单元503中执行指令之后,存储器管理单元(MMU)216将第一虚拟存储器地址255转译成经由网络连接205及第二虚拟存储器地址509识别借出方装置(例如203或245)的第一物理地址257。存储器管理单元(MMU)216指示通信装置217使用第二虚拟存储器地址存取由借出方装置203通过网络连接205借给计算装置201的存储器260。
举例来说,第一物理地址257可包含借出方装置203的计算机网络地址。
在执行单元503中执行指令可生成在第一虚拟存储器地址255处进行读取或写入的存储器操作;且存储器管理单元(MMU)253经配置以针对第二虚拟存储器地址509处的存储器操作生成请求507且指示通信装置217通过通信连接205将请求507传输到借出方装置203。
操作上,第二虚拟存储器地址509可等于第一虚拟存储器地址255使得借出方装置203及借入方装置201可使用统一虚拟地址空间。举例来说,操作系统可经配置以基于由借出方装置203在统一虚拟地址空间中指定的虚拟存储器地址接收借入所述量的存储器204;且操作系统可经配置以将虚拟存储器从统一虚拟地址空间中的虚拟存储器地址直接分配到应用程序。
任选地,存储器管理单元217包含缓冲器505;且存储器管理单元216进一步经配置以响应于从寄存器501接收第一虚拟存储器地址255指示通信装置217与借出方装置203通信以在缓冲器505中建立用于由借出方装置203借给借入方装置201的所述量的存储器202的部分的高速缓存。举例来说,当使用页面表中的虚拟地址255时,通信装置217可根据页面表高速缓存存储器页面。
任选地,存储器管理单元217进一步经配置以从虚拟存储器与物理存储器之间的存储器映射动态地改变。举例来说,由一组虚拟存储器地址识别的虚拟存储器最初可映射(例如,在转译旁视缓冲器(TLB)251)到由借出方装置203借给借入方装置的存储器202;且映射可经改变以将虚拟存储器重新映射到本地随机存取存储器211的部分。
举例来说,存储器管理单元217可交换在高速缓存于转译旁视缓冲器(TLB)251中的虚拟到物理存储器图253中识别的两个虚拟存储器区域的映射,使得最初映射到本地存储器211中的区域上的第一虚拟存储器区域被重新映射到借出方装置203中的借出存储器202中的区域,且最初映射到借入方装置203中的借出存储器202中的区域(或另一区域)上的第二虚拟存储器区域被重新映射到本地存储器211中的区域(或另一区域)。
举例来说,存储器管理单元217可进一步经配置以基于前一时间周期中的存储器使用率历史或后一时间周期中的预测存储器使用率识别第一虚拟存储器区域及第二存储器区域以用于交换。举例来说,最早使用的及/或最不频繁使用的虚拟存储器页面可从本地存储器211交换到借出存储器202;且最近使用的及/或最频繁使用的虚拟存储器页面可从借出存储器202交换到本地存储器211。
人工智能(AI)代理可经配置于借入方装置及/或借出方装置上以预测存储器即服务(MaaS)的网络连接性的降级。响应于所述预测且在发生网络连接性的降级之前的时间周期内,借入方装置及/或借出方装置的操作系统可识别在网络降级或中断的时间周期内可能需要通过网络连接迁移的内容,且在网络降级或中断之前开始内容迁移,使得在网络降级或中断期间可本地地存取相关内容,且使得可在安全位置处备份重要数据。
举例来说,预测在网络降级或中断期间将用于借入方装置的数据可基于数据的预测使用率及/或关键性预先提取到借入方装置。
举例来说,在借入方装置中可能丢失及/或经预测在网络降级或中断期间需要在借出方装置中备份(例如,由于借入方装置中的功率耗损或可能由借入方装置经历的危险状态)的某些数据可复制到借出方装置以最小化潜在数据丢失。
举例来说,当电话检测到用户将行驶通过具有不可靠的蜂窝数据连接性的山区时,在电话中运行的AI代理可将地图及/或用于山区中的服务的其它关键数据预先提取到借入方装置的本地存储器或存储装置。经预测在时间周期期间将不使用的数据可复制到或交换到由借出方装置/服务器借给借入方装置的存储器中以在电话中留出空间给经预先提取的内容。
举例来说,无人机可经调度以开往任务关键型任务;且基于经调度任务/操作,无人机可预先提取将用于那个特定任务/操作中的数据(例如检测某些对象(例如坦克)的特征提取库及/或人工神经网络模型)。
举例来说,电话或穿戴式装置可检测电池下降到低于阈值水平(例如50%);且响应于在网络降级或中断的时间周期期间可能发生的预测功率中断(例如,基于历史功率使用率及/或历史位置/调度确定),装置可将某些重要数据推到从借出方装置或服务器借入的其存储器以避免数据丢失。
图19及20说明根据一些实施例的经配置以执行智能内容迁移的借入方装置及借出方装置。
举例来说,图19到20的技术可用图2的存储器服务技术及图3的存储器映射技术实施于图1或6的系统中。内容迁移可经由关于图13到18论述的存储器管理单元(216及236)加速。
在图19中,借入方装置201具有任选地经配置为操作系统213的部分的人工智能(AI)代理571。AI代理571经配置以基于由操作系统213收集的各种信息(例如存储器使用率历史573、历史位置575、经调度操作577、电池功率电量579(例如,当借入方装置201经由电池供电时)、电池使用率历史等)生成内容迁移决策580。
AI代理571可经配置以基于由操作系统213收集的信息573、575、577、…、及/或579对在预测网络降级/中断的时间周期中使用不同存储器区域的可能性进行排名。举例来说,人工神经网络可经训练以生成基于信息573、575、577、…、及/或579的时序对不同存储器区域(例如图10中说明的263、265、…)用于网络中的可能性进行排名的分数。
基于不同存储区区域用于后续时间周期中的可能性及/或存储器区域的内容的关键性(例如图11中说明的421),AI代理571可生成迁移决策580以改变在其上管控虚拟存储器区域的物理存储器区域。
举例来说,在网络降级或中断期间很可能使用的虚拟存储器区域可从被管控于物理地位于另一装置(例如103、105、107)中的借入存储器204上迁移到被管控于借入方装置201上的本地随机存取存储器211或本地存储装置232上。举例来说,本地存储装置232可为快闪驱动器/存储器、固态驱动器、硬驱动器等。
举例来说,在网络降级或中断之前不太可能用于借入方装置201中的虚拟存储器区域可在相反方向上迁移,从而从经管控于借入方装置201的本地随机存取存储器211或本地存储装置232上迁移到经管控于物理地位于另一装置(例如103、105、107或203)中的借入存储器204上。从本地存储器/存储装置迁移到借入/借出存储器还可用作将重要数据保存或备份到某一位置(例如借出方装置或服务器)的方式,所述位置在保存数据方面比借入方装置201更可靠。
AI代理571可经配置以不仅基于虚拟存储器区域被使用的可能性而且还基于与虚拟存储器区域相关联的所要功能性的虚拟存储器区域的关键性421及网络连接在预测网络降级或中断的时间周期期间的性能等级对用于迁移的虚拟存储器区域进行评分。对迁移虚拟存储器区域进行评分的效益可相对于积极主动地迁移虚拟存储器区域的成本进行测量,其在经迁移数据最终不使用时可降级预先提取/迁移的时间周期内的性能及/或可引起不必要的成本。当效益分数高于用于迁移虚拟存储器区域的成本分数时,AI代理571可决定将虚拟存储器区域迁移到一或多个借出方装置(例如103、105、107或203)。
任选地,AI代理571可至少部分实施于借出方装置(例如103、105、107或203)中,如图20中说明。
举例来说,借出方装置(例如203)可包含监测由借入方装置(例如201)使用的借出存储器202的使用率的AI代理572。借出方装置(例如203)的操作系统233可跟踪借入方装置201的存储器使用率历史573、借入方装置201的位置历史575、借入方装置201的经调度操作577等。借入方装置201可提供与借入方装置201的状态相关的某些信息,例如借入方装置201的电池电量579、借入方装置201的当前位置、借入方装置201的经调度操作577。
举例来说,借入方装置201可通过将信息(例如573到579)存储于由借出方装置203借给借入方装置201的借入存储器204中共享有关其操作的信息(例如573到579)。因此,借出方装置203及借入方装置201可通过存储器即服务(MaaS)共享信息(例如573到579)。
此外,AI代理571及/或572可经配置以在借出存储器202/借入存储器204中运行。因此,借出方装置203及借入方装置201可以协作方式运行AI代理571及/或572。
举例来说,借入方装置201可执行AI代理571以提供及/或更新有关借入方装置201的信息,例如位置历史575及电池电量579,及接着,请求借出方装置201执行AI代理571/572以作出迁移决策580。
举例来说,借入方装置201可分配用于运行AI代理571的虚拟存储器区域。虚拟存储器区域最初可经管控(或高速缓存)于借入方装置201的本地存储器211中以提供及/或更新信息(例如573、575、557、…、及/或579),其也可被存储于虚拟存储器区域中。随后,借入方装置201可将虚拟存储器区域迁移到借入存储器204;且虚拟存储器区域的内容被存储于借出方装置203的借出存储器202中。借出方装置203可继续执行AI代理571(例如,如AI代理572那样)以作出迁移决策580。借入方装置201可进一步运行AI代理571以提供额外信息及/或更新未来迁移决策的状态。因此,借入方装置201可提供由AI代理571/572使用的数据;且借出方装置203可提供处理数据的计算能力。
在一些实施例中,计算装置(例如,图1中的201及203或101到107)经配置有允许在计算装置之间/之中自由地迁移对虚拟存储区区域的管控的存储器即服务。当虚拟存储器区域经管控于装置中的一者上时,当前管控虚拟存储器区域的装置用作将其存储器资源提供到虚拟存储器区域的其它计算装置的借出方。当对虚拟存储器区域的管控经迁移到另一装置时,那个装置用作将其存储器资源提供到虚拟存储器区域的其它计算装置的借出方。给定计算装置可用作一组虚拟存储器区域的借出方及另一组虚拟存储器区域的借入方;且计算装置作为借入方或借出方的角色可针对特定虚拟存储器区域不时地动态改变。具有大量本地存储器资源的计算装置可比其它计算装置管控更多虚拟存储器区域。计算装置可经由存储器即服务(MaaS)共享其本地存储器资源。当网络连接(例如205)可用时,虚拟存储器区域可自由地从一个装置迁移到另一装置(例如,在图1中说明的系统中)。
图21到24说明根据一些实施例的内容移动。
图21说明借入方装置201针对虚拟地址区域581借入借出方装置203的存储器资源。借入方装置201存储使虚拟地址区域581与借出方装置标识符583相关联的存储器图217。
举例来说,借出方装置标识符583可为借出方装置的因特网协议(IP)地址、借出方装置203的主机名、借出方装置203的统一资源定位器(URL)、通用唯一标识符(UUID)等。
基于借出方装置标识符583,借入方装置201可存取借出方装置203中的物理存储器区域586。举例来说,借入方装置201的MMU 216或在借入方装置201的处理器215中运行的借入方装置201的操作系统213可生成图17中说明的存储器存取请求507。将数据存储于虚拟地址区域581中的虚拟地址509或从虚拟地址509加载数据的请求507经过网络连接205根据借出方装置标识符583传输。接收请求507的借出方装置201可将数据存储于通过由借出方装置203的操作系统233维持的存储器图227识别的存储器区域586中的存储器页面(例如图17中说明的260)中或从所述存储器页面加载数据。
在图21中,借出方装置203的存储器图227使虚拟地址区域581与借出方装置标识符583相关联,这指示虚拟地址区域581经管控于借出方装置203中。借出方装置203的存储器图227将虚拟地址区域581映射到物理地址区域586,这允许借出方装置203的MMU 236将虚拟地址区域581中的虚拟地址509转译成物理地址区域585中的物理地址。物理地址区域585可识别借出方装置203的本地存储器593或231中的存储器区域586。物理地址区域585中的物理地址可用于存取存储器区域586中的存储器页面260。
图22说明将对虚拟地址区域的管控从借出方装置203迁移到借入方装置201的结果。在将内容从借出方装置203的本地存储器593或231中的存储器区域586复制到借入方装置201的本地存储器591或211中的存储器区域588之后,借入方装置201可更新其存储器图217以使虚拟地址区域581与借入方装置标识符582相关联,这指示虚拟地址区域581经管控于借入方装置201中。此外,存储器图217将虚拟地址区域581映射到物理地址区域587中。因此,虚拟地址区域581中的虚拟地址256可经转译成物理地址区域587中的物理地址257(例如,如图3中说明)。
在图22中,借出方装置203更新其存储器图227以关联借入方装置582,这指示虚拟地址区域581经管控于借入方装置201中。此外,虚拟地址区域581不再映射到存储器区域586的物理地址区域585。因此,先前用于管控虚拟地址区域581的存储器图586可被释放且可用于管控另一虚拟地址区域。
图22的配置反映由借出方装置203针对虚拟地址区域581借入存储器区域588。当借出方装置203存取虚拟地址区域581中的虚拟地址时,借出方装置203可以类似于借入方装置201在图21的配置下存取由借出方装置203借给借入方装置201的存储器586的方式存取由借入方装置201借给借出方装置203的存储器588。因此,借出方/借入方角色可通过迁移对虚拟地址区域581的管控而反转;且给定装置可关于经管控于不同装置的位置存储器中的不同虚拟地址区域具有不同借出方/借入方角色。
图23说明其中虚拟地址区域581与借入方装置标识符582相关联且因此管控于借入方装置201的本地存储器591或211中的存储器区域588中的配置。然而,借出方装置203的存储器图227进一步使虚拟地址区域581与借出方装置203的本地存储器593或231中的存储器区域586的物理地址区域585相关联。因此,借出方装置203的存储器区域586中的内容可用作虚拟地址区域581正式管控于其中的借入方装置201中的存储器区域588中的内容的备份副本、高速缓存副本或镜像副本。
类似地,图24说明其中虚拟地址区域581与借出方装置标识符583相关联且因此管控于借出方装置203的本地存储器593或231中的存储器区域586中的配置。然而,借入方装置201的存储器图217进一步使虚拟地址区域581与借入方装置201的本地存储器591或211中的存储器区域588的物理地址区域587相关联。因此,借入方装置203的存储器区域588中的内容可用作虚拟地址区域581正式管控于其中的借出方装置203中的存储器区域586中的内容的备份副本、高速缓存副本或镜像副本。
任选地,装置201及203还可经配置以将内容管控、备份、高速缓存或镜像于本地存储装置(例如232)中。
使用图21到24的技术,虚拟地址区域581的内容可根据迁移决策580迁移、镜像、备份或高速缓存于不同装置(例如201及203)中。
图25展示根据一些实施例的迁移具有借入存储器的计算系统中的内容的方法。
举例来说,图25的方法可实施于图1、2、13、14、21、22、23或24中说明的计算系统中。
在框601处,经由计算机网络(例如109)连接第一计算装置(例如201)与第二计算装置(例如203)。
在框603处,第一及第二计算装置(例如201及203)提供存储器资源以用于通过虚拟存储器地址跨计算机网络(例如109)进行存取。
举例来说,第一计算装置(例如201)可从第二计算装置(例如203)借入存储器(例如,如图21或24中说明);且第二计算装置(例如203)可从第一计算装置(例如201)借入存储器(例如,如图22或23中说明)。
在框605处,第一及第二计算装置(例如201及203)将虚拟存储器地址的第一部分(例如263)映射到第一计算装置201(例如,图3中说明的区域283、存储器211、单元259)中且将虚拟存储器地址(例如265)的第二部分映射到第二计算装置203(例如,图3中说明的区域275、存储器202、单元260)中。
在框607处,第一及第二计算装置(例如201及203)预测第一与第二计算装置(例如201及203)之间的网络连接(例如205)在其期间降级的时间周期。
在框609处,第一及第二计算装置(例如201及203)基于所述时间周期的预测作出针对第一虚拟存储器地址区域581的内容的迁移决策580。
在框611处,第一及第二计算装置(例如201及203)在所述时间周期之前且响应于所述迁移决策在第一与第二计算装置(例如201及203)之间传递虚拟存储器地址区域581的内容。
举例来说,配置于第一及第二计算装置(例如201及203)中的AI代理571/572可基于存储器使用率历史573、位置历史575、经调度操作577、电池电量579、电池使用率历史等作出迁移决策580。
举例来说,AI代理571/572可预测虚拟存储器地址区域581的使用率;且预测所述使用率在网络降级的时间周期期间在第一计算装置(例如201)中发生。当虚拟存储器地址区域581当前经映射到第二计算装置203的本地存储器(或存储装置)593时,可作出迁移决策580以使内容在本地存储器(或存储装置)591中可用,使得即使在网络连接205在预测的网络降级时间周期期间不可用时内容也是可存取的。
在另一实例中,AI代理571/572可预测虚拟存储器地址区域581的内容在所述时间周期期间可能会丢失(例如,由于缺少电池电力或危险的状况)。当虚拟存储器地址区域581当前经映射到第一计算装置201的本地存储器(或存储装置)591时,可作出迁移决策580以使内容在本地存储器(或存储装置)593中可用,使得即使在网络连接205在预测的时间周期期间不可用时内容也会被保存以给所述内容做备份。
响应于迁移决策580且在将虚拟地址区域581的经迁移内容存储到第一计算装置(例如201)的本地存储器(或存储装置)591中之后,虚拟存储器地址区域581的存储器映射可通过将虚拟存储器地址区域581映射到第一计算装置(例如201)的本地存储器(或存储装置)591中而改变,如图22或23中说明。
类似地,响应于迁移决策580且在将虚拟地址区域581的经迁移内容存储到第二计算装置(例如203)的本地存储器(或存储装置)593中之后,虚拟存储器地址区域581的存储器映射可通过将虚拟存储器地址区域581映射到第二计算装置(例如203)的本地存储器(或存储装置)593中而改变,如图21或24中说明。
当虚拟存储器地址区域581经映射到第一计算装置201的本地存储器(或存储装置)591上时,虚拟存储器地址区域581在第二计算装置203的存储器图227中与第一计算装置201的标识符582相关联,如图22及23中说明;且当虚拟存储器地址区域581经映射到第二计算装置203的本地存储器(或存储装置)593上时,虚拟存储器地址区域581在第一计算装置201的存储器图217中与第二计算装置203的标识符583相关联,如图21及24中说明。
任选地,虚拟存储器地址区域581经映射到第一计算装置201的本地存储器(或存储装置)591中,虚拟存储器地址区域581在第一计算装置201的存储器图217中进一步与第一计算装置201的标识符582相关联,如图22及23中说明;且当虚拟存储器地址区域581经映射到第二计算装置203的本地存储器(或存储装置)593中,虚拟存储器地址区域581在第二计算装置203的存储器图227中进一步与第二计算装置203的标识符583相关联,如图21及24中说明。
当虚拟存储器地址区域581经映射到第一计算装置201的本地存储器(或存储装置)591上时,第一计算装置201的存储器图217将虚拟存储器地址区域581映射到第一计算装置201的本地存储器(或存储装置)591中的物理存储器地址区域587/588,如图22及23中说明;且当虚拟存储器地址区域581经映射到第二计算装置203的本地存储器(或存储装置)593上时,第二计算装置203的存储器图227将虚拟存储器地址区域581映射到第二计算装置203的本地存储器(或存储装置)593中的物理存储器地址区域585/586,如图21及24中说明。内容迁移通过在第一计算装置201的物理存储器地址区域587/588与第二计算装置203的物理存储器地址区域585/586之间复制内容来执行。
任选地,在虚拟存储器地址区域581经映射到第一计算装置201的本地存储器(或存储装置)591上之后,第二计算装置203可配置第二计算装置203中的物理存储器地址区域585/586以存储虚拟存储器地址区域581的内容的高速缓存、镜像或备份副本,如图23中说明。
类似地,在虚拟存储器地址区域581经映射到第二计算装置203的本地存储器(或存储装置)593上之后,第一计算装置201可配置第一计算装置201中的物理存储器地址区域587/588以存储虚拟存储器地址区域581的内容的高速缓存、镜像或备份副本,如图24中说明。
可基于第一计算装置的预测位置、第一计算装置201的经调度操作、将用于经调度操作的软件/数据的识别、从过去的重复操作识别的第一计算装置201的预测操作、第一计算装置的电池使用率历史等作出迁移决策580。
举例来说,可至少部分基于存储于虚拟存储器地址的部分中的人工神经网络作出迁移决策580。在第一计算装置201中运行的AI代理571可使用虚拟存储器地址的部分为人工神经网络提供数据;且在第二计算装置201中运行的AI代理572可使用虚拟存储器地址的部分以针对迁移决策580执行计算。
存储器即服务(MaaS)支持以存储器为中心的计算模型。举例来说,MaaS允许虚拟存储器的管控在联网计算机之中流动。因此,虚拟存储器的内容可在计算机的处理器之中无缝地流动。因此,网络中的计算机可通过共享存储器资源贡献计算资源、数据及/或计算结果。
举例来说,瘦客户端可从设备或服务器借入存储器。通过将存储器借给客户端,设备或服务器的处理器可容易地存取由客户端借入的存储器中的内容并响应于客户端的请求代表客户端执行计算。
举例来说,客户端可在借入存储器中发起计算并请求设备或服务器接管进一步计算。借入存储器可存储数据及/或用于处理数据的代码;且设备或服务器可对数据进行操作及/或执行代码,就像计算最初是在设备或服务器上发起那样。举例来说,客户端可发起计算任务以提供专用于客户端的数据;且设备或服务器可为客户端执行任务的处理密集部分。
举例来说,客户端最初可管控客户端的本地存储器中的虚拟存储器区域。随后,客户端可重新管控由设备或服务器借给客户端的存储器中的虚拟存储器区域。客户端可请求设备或服务器继续执行虚拟存储器区域中的例程或一组指令;且设备或服务器可任选地控制借给客户端的存储器并执行可进一步处理借给客户端的存储器中的数据的例程或指令。在请求完成之后,设备或服务器可向客户端提供通知,从而致使客户端检索设备或服务器的计算结果及/或继续执行虚拟存储器区域中的例程或指令。在一些例子中,应用程序经配置以从虚拟存储器区域运行;且应用程序的执行可在一些阶段在客户端上执行且在其它阶段被转移到设备或服务器。因此,客户端及设备或服务器可经由共享存储器共享计算资源。
类似地,设备或服务器可在存储器中设立任务、将存储器借给客户端(例如边缘计算装置)、请求客户端对客户端的数据执行本地计算及在存储器中获得结果。
此外,设备或服务器可在借给多个客户端的多个存储器区域中设立任务。客户端可通过在其相应借入存储器区域中运行任务将输入提供到设备或服务器。因此,存储器即服务(MaaS)可实现新的以存储器为中心的计算模型。
图26及27说明基于选择性地管控不同计算机(例如装置621及设备/服务器623)的本地存储器上的虚拟地址区域的分布式计算。
一般来说,装置621可为图1中的装置101或103或服务器105或图2、6、9、13到15、19及/或21到24中的借入方装置201。
一般来说,设备/服务器623可为图1中的装置103或服务器105或107或图2、6、13到17、20及/或21到24中的借出方装置203。
在图26中,装置621分配用于应用程序212的虚拟地址区域581。虚拟地址区域581可在其中应用程序212在装置621中执行的时间周期内经管控于装置621的本地存储器211中。
举例来说,虚拟存储器地址区域581在装置621的存储器图217及设备/服务器623的存储器图227两者中与装置621的装置标识符A 582相关联。装置621的存储器图217进一步使虚拟存储器地址区域581与物理地址区域587相关联。因此,存储器图217可由运行应用程序212的处理器215用以将虚拟地址区域581中的虚拟地址转译成物理地址区域587中的对应物理地址。物理地址可用于存取装置621的本地存储器211中的存储器区域588中的存储器页面。
举例来说,在装置621中运行的应用程序212可使用虚拟地址区域581读取存储器区域588中的数据625、对数据625操作及/或将数据625存储于存储器区域588中。
虚拟地址区域581可重新管控于设备/服务器623的本地存储器231中,如图27中说明。在将本地存储器211中的存储器区域588的内容传输到设备/服务器623及将所述内容存储于设备/服务器623的本地存储器231中的存储器区域586中之后,使虚拟地址区域581与装置623的存储器图227及设备/服务器623的存储器图227两者中的设备/服务器623的装置标识符B 583相关联。此外,装置621的存储器图227使虚拟存储器地址区域581与物理地址区域585相关联。因此,存储器图217可由运行对应应用程序232的设备/服务器623的处理器235用以将虚拟地址区域581中的虚拟地址转译成物理地址区域585中的对应物理地址。物理地址可用于存取设备/服务器623的本地存储器231中的存储器区域586中的存储器页面。
举例来说,在设备/服务器623中运行的应用程序232可使用虚拟地址区域581读取存储器区域586中的数据625、对数据625操作及/或将数据625存储于存储器区域586中。
装置621中的应用程序212及设备/服务器623中的应用程序232可经配置以使用相同虚拟地址区域581共享数据、处理资源及/或计算结果。
在一些例子中,当虚拟地址区域581经重新管控于设备/服务器623的本地存储器231中时,装置621可将虚拟地址区域581的存储器区域588作为内容的备份、镜像或高速缓存副本保持于设备/服务器623的本地存储器231中。任选地,装置621中的应用程序212及设备/服务器623中的应用程序232可同时在存储器区域588及586中运行;且应用程序212及232可用进程间调用与彼此通信以协调处理任务及数据同步。
任选地,应用程序212及232是经执行作为装置621及设备/服务器623中的不同进程的一组指令。
图28及29说明在应用程序627的不同执行阶段处在不同计算机上选择性地运行应用程序627。在图28及29中,应用程序627(或其一部分)经配置以驻存于虚拟地址区域581中。处理器215可从虚拟地址区域581加载应用程序627以用于执行且用于读取、处理及/或存储数据625。
当虚拟地址区域581经管控或高速缓存于装置621的本地存储器211中时,装置621可执行应用程序627。当虚拟地址区域581经管控或高速缓存于设备/服务器623的本地存储器231中时,设备/服务器623可执行应用程序627。
因此,装置621及设备/服务器623可与彼此协调以运行应用程序627的不同执行阶段。举例来说,装置621可运行应用程序627以设立数据625以用于进一步处理(例如,用于计算及/或资源密集型任务)。设备/服务器623可继续执行应用程序627以用于进一步处理。在由设备/服务器623进行进一步处理之后,装置621可继续运行应用程序627以使用由设备/服务器623提供的计算结果。
一般来说,可针对应用程序627及其数据625使用多个虚拟地址区域(例如581)。虚拟地址区域(例如581)中的一些可经管控于装置621上;且其它虚拟地址区域(例如581)可经管控于设备/服务器623(及/或另一装置)上。
图30及31说明在不同计算机621及623上管控的虚拟机629中运行应用程序627。
举例来说,装置621的处理器215及设备/服务器623的处理器235可具有不同指令集。因此,应用程序627的指令对于在装置621的处理器215及设备/服务器623的处理器235两者中执行可能是不兼容的。
在图30及31中,装置621运行虚拟机629。应用程序627经配置以在与管控于设备/服务器623中的虚拟机629兼容的虚拟机629内运行。因此,当虚拟地址区域581经重新管控于设备/服务器623(例如,如图31中说明)时,虚拟地址区域581中的应用程序627可在虚拟机629中执行。
在一些例子中,设备/服务器623中的虚拟机629模拟装置621。因此,应用程序627可在装置621中以不具有虚拟机的本机模式执行;且一旦虚拟地址区域581经重新管控或高速缓存或镜像于设备/服务器623上时,设备/服务器623就可继续执行应用程序627。
当虚拟地址区域581经管控于设备/服务器623上时,装置621可具有其本地存储器211中的虚拟地址区域581的经高速缓存或经镜像版本。设备/服务器623可在经管控于其存储器区域586中的虚拟地址区域581中执行应用程序627,而装置621可在高速缓存/镜像于其存储器区域588中的虚拟地址区域581中同时执行应用程序。举例来说,装置621中的应用程序627的运行进程可分成两个运行进程。进程中的一者在装置621中继续,且其它进程在设备/服务器623中运行。两个运行进程可与彼此通信以协调数据处理及/或数据同步。运行进程中的一者可在装置621及设备/服务器623上的并行执行周期之后终止于合适的阶段处。
图32展示基于存储器即服务(MaaS)的分布式计算方法。
举例来说,图32的方法可使用计算装置及通过计算机网络连接到计算装置的远程装置实施。计算装置及远程装置可为图26到31中说明的装置621及设备/服务器623。举例来说,计算装置及远程装置可为图2、6、9、13到17及/或19到24中说明的借入方装置201及借出方装置203。举例来说,计算装置及远程装置可为图1中说明的装置101、103及服务器105、107中的一些。
在步骤651及671处,计算装置从远程装置借入存储器;且远程装置将存储器借给计算装置。
在步骤653处,计算装置将虚拟存储器地址区域(例如581)分配给在计算装置中运行的应用程序(例如212或627)。
在步骤655处,计算装置将虚拟存储器地址区域(例如581)映射到计算装置的本地存储器(例如211)中。
在步骤657处,在计算装置中运行的应用程序(例如212或627)根据映射到计算装置的本地存储器(例如211)上的虚拟存储器地址区域中的虚拟存储器地址将数据存储于计算装置的本地存储器(例如211)中。
在步骤659处,计算装置将虚拟存储器地址区域(例如581)的内容的至少一部分传输到远程装置。在步骤673处,远程装置从计算装置接收虚拟存储器地址区域(例如581)的内容的至少所述部分。
在步骤661及675处,计算装置及远程装置与彼此通信以将虚拟存储器地址区域(例如581)映射到远程装置的本地存储器(例如231)的借入部分中。
在步骤663及677处,计算装置将处理虚拟存储器地址区域(例如581)中的数据的请求发送到远程装置;且远程装置从计算装置接收处理虚拟存储器地址区域(例如581)中的数据的请求。
在步骤679处,远程装置根据请求运行应用程序(例如232或627)。
在步骤681处,远程装置将虚拟存储器地址区域(例如581)分配给应用程序(例如232或617)。
在步骤683处,在远程装置中运行的应用程序(例如232或617)使用管控于远程装置中的虚拟存储器地址区域(例如581)处理数据。
举例来说,可在终止在计算装置中运行的应用程序(例如212或627)之前将请求从计算装置发送663到远程装置。在将虚拟存储器地址区域(例如581)映射到远程装置的本地存储器的借入/借出部分中之后,计算装置可将先前用于管控虚拟存储器地址区域(例如581)的存储器区域(例如588)保持为映射到远程装置的虚拟存储器地址区域(例如581)的备份、镜像或高速缓存副本。因此,计算装置及远程装置可在虚拟存储器地址区域(例如581)(例如,存储于(分别地)计算装置及远程装置中的存储器区域588及586中)的内容的单独副本上同时及/或并行运行其应用程序(例如212、232或627)。
任选地,计算装置及远程装置可与彼此通信以在某一时间在装置中的一者中运行其应用程序(例如212、232或627)。举例来说,在远程装置中执行处理683之后,远程装置可将请求发送到计算装置以致使计算装置继续运行使用在远程装置中执行的处理683的结果的应用程序(例如212或627)。
虚拟存储器地址区域(例如581)的内容可经更新以用于通过同步运行应用程序(例如212、232或627)及/或重新管控虚拟存储器地址区域(例如581)。在一些例子中,计算装置可直接在管控于远程装置上(例如,使用关于图13到17论述的存储器存取加速技术)的虚拟存储器地址区域上运行应用程序。在一些例子中,针对在计算装置中运行的应用程序(例如212或627),虚拟存储器地址区域(例如581)重新管控于计算装置中或高速缓存/镜像于计算装置中。
任选地,运行计算装置及远程装置以使用相同虚拟存储器地址区域(例如581)的应用程序(例如212、232或627)可具有一组相同的指令。此外,所述组指令可由计算装置及/或远程装置加载到虚拟存储器地址区域(例如581)中以用于执行,如图28到31中说明。举例来说,计算装置的处理器中的程序计数器可将虚拟地址存储于虚拟存储器地址区域(例如581)中;且处理器可检索虚拟地址处的应用程序(例如627)的指令以用于执行应用程序(例如627)。
在一些例子中,类似于上文论述的计算装置及远程装置的一组装置可经由计算机网络连接以形成系统。所述系统中的装置中的每一者可经由其操作系统配置以:执行使用虚拟存储器地址区域存取存储器的应用程序;在应用程序在其期间执行于相应装置中的第一时间周期内将虚拟存储器地址区域映射到本地存储器;在启动相应装置中的应用程序之后且在使应用程序终止于相应装置中之前在第二时间周期内将虚拟存储器地址区域映射到多个计算装置中的远程装置的本地存储器;及在至少第二时间周期期间请求远程装置处理虚拟存储器地址区域中的数据。虚拟存储器地址区域可动态地重新管控于所述群组中的装置中的任何者上以促进使用存储于虚拟存储器地址区域中的指令及/或数据的计算。
当在存取管控于借入存储器上的虚拟存储器区域期间在存储器管理单元(MMU)中发生存储器故障时,借入方装置的操作系统可经执行以提取具有存储器故障的存储器区域的内容,及将虚拟存储器区域高速缓存于借入方装置的本地存储器中。
举例来说,当在经预先确定大小(例如4KB)的虚拟存储器页面中发生存储器故障时,整个存储器页面的内容可从借出方装置提取且高速缓存于借入方装置的本地存储器的页面中。接着,操作系统可生成页面表条目以将虚拟存储器的页面映射到本地存储器的页面,及更新转译旁视缓冲器(TLB)以处置存储器故障。
然而,在处理器中运行的应用程序可仅使用页面的一部分。在此情况中,跨网络连接将整个页面的内容从借出方装置迁移到借入方装置来处置存储器故障是低效的。
优选地,借入方装置经配置以响应于页面中的存储器故障迁移页面的一部分,例如经预先确定大小(例如64字节或512位)的高速缓存线。经高速缓存的页面的部分含有经由虚拟存储器地址当前存取的存储器位置。无需响应于存取虚拟存储器地址高速缓存页面的其它部分。因此,减少了处置存储器故障的时间周期;且改进了网络带宽使用率的效率。
举例来说,位掩码可用于标注借入方装置的本地存储器中的高速缓存线可用性。位掩码中的每一位用于识别由位掩码中的位表示的高速缓存线在本地存储器是否可用。存储器管理单元(MMU)可具有将借入存储器的虚拟存储器页面映射到用作借入存储器页面的高速缓存的本地存储器的页面的页面表条目。在MMU根据根据页面表条目计算的物理存储器地址存取存储器位置之前,借入方装置可经配置以检查含有存储器位置的高速缓存线的位掩码中的对应位。如果位掩码中的位指示高速缓存线在本地存储器中当前不可用时,借入方装置可在致使MMU使用物理存储器地址之前从借出方装置提取高速缓存线。
任选地,应用程序可经编码以包含检查位掩码的指令。举例来说,当应用程序请求应用程序存储器量时,应用程序还可针对用于跟踪所请求存储器的高速缓存线的位掩码分配对应存储器量。可提供经预先确定功能/实用程序以检查及实施含有存储器位置的高速缓存线的本地可用性。如果高速缓存线的位掩码中的位未被设置,那么可在存取高速缓存线中的存储器位置之前及时执行借入方装置的操作系统以提取高速缓存线。应用程序可在存取存储器位置之前针对存储器位置调用经预先确定功能/实用程序。
举例来说,编译器可辨识在应用程序中进行的存储器存取且将代码/指令/调用自动注入到功能/实用程序以检查及实施高速缓存线的可用性。
在一些例子中,应用程序可包含选择性地请求编译器在高速缓存线级别下应用数据迁移的标注。举例来说,针对一种目的分配的存储器量可经编程以在存储器页面级别下迁移,使得当存储器页面未高速缓存于本地存储器中时整个存储器页面被提取及高速缓存。无需/不使用位掩码来跟踪此存储器中的页面的本地高速缓存线可用性。相比来说,针对另一目的分配的另一存储器量可经编程以在高速缓存线级别下迁移,使得存储器页面中的一些高速缓存线可被提取且本地高速缓存而无需将其它高速缓存线高速缓存于相同存储器页面中。位掩码用于跟踪本地高速缓存线可用性。
在一些实施例中,存储器管理单元(MMU)经配置以基于位掩码执行精细粒度数据迁移。在根据物理地址存取存储器位置之前,MMU检查相关联位掩码以确定对应高速缓存线在借入方装置的本地存储器中是否可用。如果高速缓存线在本地存储器中当前不可用,那么MMU可引起存储器故障以导致操作系统提取高速缓存线或控制通信装置提取高速缓存线而无需在提取高速缓存线时调用/运行操作系统。
一般来说,存储器状态图可用于跟踪管控于远程借出方计算机上的虚拟存储器区域的部分的本地可用性。状态图中的位可用于指示对应于位的部分当前是否可用于/高速缓存于借入方装置的本地存储器中。
此外,借入方装置及/或借出方装置可跟踪借入存储器的数据使用模式。数据迁移粒度级别可基于数据使用方式来确定。
举例来说,为了减小有效负载与网络通信协议开销之间的比率,可预先确定最小数据迁移单位(例如64字节的高速缓存线)以用于在借入方装置与借出方装置之间传输存储器数据。基于应用程序的数据使用模式,借入方装置及/或借出方装置可确定借入存储器的部分的经优化数据迁移单位(例如,经优化数目个高速缓存线)。借入存储器的不同部分可具有不同的经优化数据迁移单位。经优化单位平衡减小延时的益处与迁移无需被迁移的数据的成本。
图33展示经配置以识别子区域的内容的高速缓存状态的存储器状态图。
在图33中,转译旁视缓冲器(TLB)251存储定义虚拟地址区域(例如581)与物理地址区域(例如587)之间的映射的虚拟到物理存储器图253。
在图33中,虚拟地址区域581具有最小大小(例如4KB的存储器页面)使得如果虚拟地址区域581中的虚拟地址的任何部分定义于转译旁视缓冲器(TLB)251中,那么虚拟地址区域581中的虚拟地址的剩余部分也定义于转译旁视缓冲器(TLB)251中。因此,如果虚拟到物理存储器图253可用于转译虚拟地址区域581中的虚拟地址,那么整个虚拟地址区域581中的任何地址可经转译成区域587中的对应物理地址。
优选地,虚拟地址区域581的内容可一次一个子区域地在借入方装置与借出方装置之间迁移。
在图33中,存储器状态图701用于指示虚拟地址区域581的子区域的可用性状态711、713、…、719。子区域中的每一者可具有经预先确定大小(例如,64B的高速缓存线)。子区域的内容可经管控/高速缓存于借入方装置的本地存储器中,或经管控/存储于借出方装置的本地存储器中。状态711、713、…、719指示对应子区域是否经高速缓存/管控于本地存储器中。使用存储器状态图701跟踪本地高速缓存可用性的状态711、713、…、719,可针对所选择的子区域(例如711、713、…)而非其它子区域(例如719、…)执行借入方装置与借出方装置之间的数据迁移。
图34说明存取可在子区域级别下提取/迁移的借入存储器的存储器状态图的使用。举例来说,图34的虚拟地址区域581及存储器状态图701可为图33中的虚拟地址区域581及存储器状态图701的实例。
在图34中,虚拟地址区域581具有多个子区域721、723、…、729。当子区域721、723、…、729中的任何者的映射定义于转译旁视缓冲器251中时,也定义所有子区域721、723、…、729。因此,虚拟地址区域581是在定义到转译旁视缓冲器251中的物理地址的映射时的最小单位。
存储器状态图701中的位711、713、…、719分别对应于子区域721、723、…、729。当存储器状态图701中的位(例如711)具有第一经预先确定值(例如零)时,位(例如711)用于指示对应子区域(例如721)的内容经管控于远程存储器区域586中(例如,在借出方装置203或设备/服务器623中)。当存储器状态图701中的位(例如713)具有第二经预先确定值(例如一)时,位(例如713)用于指示对应子区域(例如723)的内容经管控于远程存储器区域588中(例如,在借入方装置201或装置621中)。
使用存储器状态图701,借入方装置(例如101、103、105、201或621)可确定在使用使用转译旁视缓冲器(TLB)251从虚拟地址255转换的物理地址257之前是否跨网络连接(例如205)执行数据迁移。
举例来说,在借入方装置中运行的应用程序(例如211)可包含在存取对应子区域(例如721或723)中的虚拟地址之前分配存储器状态图701及接着检查对应位(例如711或713)的值的指令。举例来说,编译器可经配置以插入此类指令以用于可依赖于借入存储器的存储器使用。
举例来说,虚拟到物理存储器图253可识别存储器状态图701的局部;且借入方装置(例如201或621)的存储器管理单元(MMU)216可经配置以检查存储器状态图701。
如果存储器状态图701中的对应位具有第一经预先确定值(例如零),那么存储器管理单元(MMU)216可生成存储器故障以请求借入方装置的操作系统213将内容从远程存储器区域586中的子区域741提取到本地存储器区域588中的子区域731。在子区域721的内容经管控/高速缓存于本地存储器区域588中之后,存储器管理单元(MMU)216可使用物理地址257执行由处理器215请求的在虚拟地址255处的存储器存取。任选地,存储器管理单元(MMU)216可经配置以使用通信装置217提取子区域721的内容而无需执行借入方装置的操作系统213。
如果存储器状态图701中的对应位具有第二经预先确定值(例如一),那么存储器管理单元(MMU)216可使用物理地址257执行由处理器215请求的在虚拟地址255处的存储器存取。
图35展示经配置用于借入存储器的精细粒度数据迁移的借入方装置201及借出方装置203。
在图35中,借出方装置203的存储器区域586被借给借入方装置201。借入方装置201的存储器管理单元(MMU)216以上文结合图33及34论述的方式存储虚拟到物理存储器图253。以虚拟地址区域581的粒度级别指定虚拟到物理存储器图253中的映射。借入方装置201使用本地存储器区域588作为借出方装置203中的借入存储器区域586的高速缓存。
借入方装置201存储虚拟地址区域581的存储器状态图701以允许子区域级别下的精细粒度数据迁移,如图34中说明。
存储器状态图701可由使用虚拟地址区域581的应用程序212管理。举例来说,当虚拟地址区域581经分配用于在应用程序212中使用时,应用程序212还可针对存储器状态图701分配存储器。应用程序包含在存取子区域721、723、…、729中的虚拟地址之前针对子区域721、723、…、729的本地可用性检查存储器状态图701的指令。此类指令可使用编译器以自动方式插入或通过应用程序212的程序设计员编程。
替代地或以组合形式,存储器状态图701可由操作系统213管理。举例来说,当操作系统213更新虚拟到物理存储器图253以存取从借出方装置203借入的远程存储器区域586时,操作系统213可针对存储器状态图701分配存储器。在虚拟地址区域581完全被高速缓存于存储器区域588中之前,存储器管理单元(MMU)216(或执行于执行单元503中的指令)可经配置以在存取虚拟地址区域581中的地址之前请求操作系统213针对本地可用性检查存储器状态图701。
替代地或以组合形式,存储器状态图701可由存储器管理单元(MMU)216管理。举例来说,响应于寄存器501中的虚拟地址用于存取虚拟地址区域581中的存储器,存储器管理单元(MMU)216可经配置以针对本地可用性检查存储器状态图701。存储器状态图701可为分配给虚拟地址区域581的存储器区域588的部分、通过虚拟地址区域的虚拟到物理存储器图253中的指示符与存储器区域588相关联的本地存储器211的部分或存储器区域588的本地存储器211的预先保留部分。任选地,存储器管理单元(MMU)216可高速缓存存储器状态图701或其一部分以加速本地可用性检查。
当被存取的子区域(例如721)在本地存储器211中当前不可用时,存储器管理单元(MMU)216可请求操作系统213将内容从对应远程子区域(例如741)提取到本地子区域(例如731)。举例来说,存储器管理单元(MMU)216可经由引起存储器故障作出请求。
替代地,存储器管理单元(MMU)216可经配置以控制通信装置217直接存取远程存储器区域586而无需执行操作系统213。举例来说,图13到18的技术可用于加速借入方装置201与借出方装置203之间的数据通信。
任选地,借出方装置203还可鉴于从借入方装置203接收到的数据迁移请求跟踪存储器状态图701。借出方装置203可基于存储器状态图701在一时间周期内的变化跟踪存储器使用率历史703。存储器使用率历史703可由借出方装置203用以预测子区域721、723、…、729的时序及模式。因此,借出方装置203可针对子区域721、723、…、729调度预测数据迁移以减少子区域721、723、…、729的高速缓存未命中。
举例来说,借入方装置201可提供可能与借入方装置201中的子区域721、723、…、729的使用的时序的预测相关的信息。此类信息的实例可包含应用程序的识别、应用程序中的执行里程碑等。此类信息可经收集作为存储器使用率历史703的部分。借出方装置201中的人工智能(AI)引擎可经配置以作出子区域使用率预测(例如,使用人工神经网络(ANN))。ANN可使用来自多个借入方装置(例如201)的使用率历史任选地经训练以确定应用程序的存储器使用模式。因此,借出方装置203中的计算能力及/或数据可用于提升借入方装置201在使用借入存储器时的性能。
替代地或以组合形式,借入方装置201还可经配置以收集存储器使用率历史703。举例来说,借入方装置201可通过共享由借出方装置203借给借入方装置201的存储器区域中的数据与借出方装置203共享其存储器历史使用数据。举例来说,借出方装置203可周期性地更新用于预测的ANN模型并经由存储器即服务与借入方装置201共享所述模型,从而使借入方装置201能够作出经改进预测。
图36展示借入存储器的精细粒度数据迁移方法。举例来说,图36的方法可实施于图2、6、9、13到17及/或19到24中说明的借入方装置201及/或借出方装置203或图1中说明的装置101、103及服务器105、107中。
在框751处,计算装置(例如201)经过计算机网络(例如109)从远程装置(例如203)借入存储器。
在框753处,计算装置分配虚拟存储器地址区域581以寻址由远程装置借给计算装置的存储器量的部分586。
在框755处,计算装置配置计算装置中的物理存储器区域588作为借入存储器的部分586的高速缓存。
在框757处,计算装置存储识别虚拟存储器地址区域581与对应于物理存储器区域588的物理存储器地址区域587之间的映射的虚拟到物理存储器图253。
在框759处,计算装置存储识别虚拟存储器地址区域581的子区域721、723、…、729的高速缓存可用性状态711、713、…、719的存储器状态图701。
在框761处,计算装置在使用虚拟存储器地址255进行存储器存取之前使用虚拟到物理存储器图253将虚拟存储器地址255转换成物理存储器地址257。
在框763及765处,计算装置识别含有虚拟存储器地址255的子区域(例如721、723、…、或729)及检查子区域(例如721、723、…、或729)的高速缓存可用性状态(例如711、713、…、或719)。
在框766及767处,如果确定子区域(例如721、723、…、或729)尚未高速缓存于物理存储器区域588中,那么计算装置与远程装置通信以高速缓存子区域。
在框769处,一旦子区域(例如721、723、…、或729)已被高速缓存于物理存储器区域588中,计算装置就使用物理存储器地址257执行存储器存取。
举例来说,如果确定(766)子区域(例如721、723、…、或729)尚未高速缓存于物理存储器区域588中,那么计算装置可生成存储器故障。响应于存储器故障,计算装置的操作系统经执行以与远程装置通信以将对应子区域高速缓存于物理存储器区域588中。
替代地,如果确定(766)子区域(例如721、723、…、或729)尚未高速缓存于物理存储器区域588中,那么计算装置的存储器管理单元(例如216)经配置以与远程装置通信以将对应子区域高速缓存于物理存储器区域中。存储器管理单元(例如216)可执行高速缓存操作而无需计算装置的处理器(例如215)执行计算装置的操作系统(例如213)。
举例来说,编译器可在编译应用程序的程序时将指令注入于应用程序中。指令在应用程序中的位置处注入使得恰在应用程序使用从操作系统213分配的虚拟存储器地址存取存储器之前,所述指令经执行以检查虚拟存储器地址的本地高速缓存可用性。因此,指令可经配置以恰在存取子区域中的虚拟地址之前请求计算装置的操作系统高速缓存对应子区域。
举例来说,编译器可经配置以确定应用程序的程序中进行对动态分配的存储器的存取的位置。程序中的存储器存取请求可用在作出对应存储器存取请求之前检查本地高速缓存可用性状态的存储器存取请求的经修改版本替换。
计算装置可经配置以响应于虚拟存储器地址区域581的分配分配存储器以存储存储器状态图701以寻址由远程装置借给计算装置的存储器的部分586。举例来说,当在计算装置中运行的应用程序212向操作系统213请求一定量的存储器时,操作系统213可为相关联的存储器状态图分配对应量的存储器。存储器状态图701的位置可在虚拟地址区域581的虚拟到物理存储器图253的部分中指定。
举例来说,虚拟到物理存储器图701的至少一部分可经加载到计算装置的存储器管理单元216的转译旁视缓冲器251中。当虚拟到物理存储器图701的部分在转译旁视缓冲器251中时,存储器管理单元216具有足够的资源将虚拟存储器地址255转换成物理存储器地址257。在使用物理存储器地址257之前,存储器管理单元216、操作系统215或由编译器插入的指令/例程检查存储器状态图701以保证虚拟存储器地址255可经由物理存储器地址257存取。
任选地,存储器管理单元216可在加载于转译旁视缓冲器251中的虚拟到物理存储器图253包含用于将虚拟地址区域581中的地址转换成物理地址区域587中的地址的部分时高速缓存存储器状态图701的至少一部分。
任选地,计算装置及/或远程装置可基于对存储器状态图701作出的改变跟踪虚拟存储器地址区域581的存储器使用率历史。计算装置及/或远程装置可预测虚拟存储器地址区域581的子区域的使用率。如果具有预测使用率的子区域在物理存储器区域588中缺少本地高速缓存可用性,那么计算装置及远程装置可与彼此通信以将子区域高速缓存于物理存储器区域588中。举例来说,可基于使用存储器使用率历史训练的ANN作出预测。
一般来说,上文论述的装置或服务器(例如101、103、105、107、201、203、621、623)中的每一者可经实施作为一或多个数据处理系统。
典型的数据处理系统可包含互连(例如总线及系统核心逻辑),其互连微处理器及存储器。微处理器还可具有裸片上高速缓存阶层。
互连将微处理器及存储器互连在一起且还经由I/O控制器将其互连到输入/输出(I/O)装置。I/O装置可包含显示器装置及/或外围装置,例如鼠标、键盘、调制解调器、网络接口、打印机、扫描仪、摄像机及所属领域中已知的其它装置。在一个实施例中,当数据处理系统是服务器系统时,I/O装置中的一些(例如打印机、扫描仪、鼠标及/或键盘)是任选的。
互连可包含通过各种桥、控制器及/或适配器彼此连接的一或多个总线。在一个实施例中,I/O控制器包含用于控制USB外围设备的USB(通用串行总线)适配器及/或用于控制IEEE-1394外围设备的IEEE-1394总线适配器。
存储器可包含以下中的一或多者:ROM(只读存储器)、易失性RAM(随机存取存储器)及非易失性存储器,例如硬盘驱动器、快闪存储器等。
易失性RAM通常经实施为持续需要电力以便刷新或维持存储器中的数据的动态RAM(DRAM)。非易失性存储器通常是磁性硬盘驱动器、磁光驱动器、光学驱动器(例如DVDRAM)、快闪存储器、3D交叉点或即使在电力从存储器系统移除之后也能维持数据的其它类型的存储器系统。非易失性存储器也可为随机存取存储器。
非易失性存储器可为直接耦合到数据处理系统中的剩余组件的本地装置。也可使用在系统远程处的非易失性存储器,例如通过网络接口(例如调制解调器或以太网接口)耦合到数据处理系统的网络存储装置。
在本发明中,将一些功能及操作描述为由软件代码执行或由软件代码引起以简化描述。然而,此类表述也用于指定功能可能由通过处理器(例如微处理器或SoS(芯片上系统)的任何IP块)执行代码/指令引起。
替代地或以组合形式,本文中所描述的功能及操作可在具有或没有软件指令的情况下使用专用电路系统实施,例如使用专用集成电路(ASIC)或现场可编程门阵列(FPGA)。实施例可在无需软件指令的情况下或结合软件指令使用硬接线的电路系统来实施。因此,技术既不限于硬件电路系统与软件的任何特定组合也不限于由数据处理系统执行的指令的任何特定源。
虽然一个实施例可实施于完全起作用的计算机及计算机系统中,但各种实施例能够经分布作为呈多种形式的计算产品且能够被应用,而不管实际上用于实现分布的特定类型的机器或计算机可读媒体为何。
揭示的至少一些方面可至少部分体现于软件中。即,技术可响应于执行存储器(例如ROM、易失性RAM、非易失性存储器、高速缓存或远程存储装置)中所含的指令序列的其处理器(例如微处理器)经实施于计算机系统或其它数据处理系统中。
经执行以实施实施例的例程可经实施作为操作系统或特定应用程序、组件、程序、对象、模块或称为“计算机程序”的指令序列的部分。计算机程序通常包含在不同的时间在计算机中的各种存储器及存储装置中的一或多个指令集,且所述指令集当由计算机中的一或多个处理器读取及执行时导致计算机执行执行涉及各个方面的元件必需的操作。
机器可读媒体可用于存储软件及数据,所述软件及数据当由数据处理系统执行时导致系统执行各种方法。可执行软件及数据可经存储于各个地方中,包含例如ROM、易失性RAM、非易失性存储器及/或高速缓存。此软件及/或数据的部分可存储于这些存储装置中的任一者中。此外,数据及指令可从集中式服务器或对等网络获得。数据及指令的不同部分可在不同时间且在不同通信会话中或在相同通信会话中从不同集中式服务器及/或对等网络获得。可在执行应用程序之前完整地获得数据及指令。替代地,可在需要执行时及时地动态获得数据及指令的部分。因此,在特定时刻无需数据及指令完全处于机器可读媒体上。
计算机可读媒体的实例包含(但不限于)非暂时性可录及非可录类型媒体,例如易失性及非易失性存储器装置、只读存储器(ROM)、随机存取存储器(RAM)、快闪存储器装置、软盘及其它可卸除磁盘、磁盘存储媒体、光学存储媒体(例如光盘只读存储器(CD ROM)、数字多功能磁盘(DVD)等)以及其它媒体。计算机可读媒体可存储指令。
指令也可体现于用于电、光、声或其它形式的经传播信号(例如载波、红外信号、数字信号等)的数字及模拟通信链路中。然而,经传播信号(例如载波、红外信号、数字信号等)不是有形机器可读媒体且不经配置以存储指令。
一般来说,机器可读媒体包含提供(即,存储及/或传输)呈由机器(例如计算机、网络装置、个人数字助理、制造工具、具有一组一或多个处理器的任何装置等)可存取的形式的信息的任何机构。
在各种实施例中,硬接线电路系统可结合软件指令使用以实施技术。因此,技术既不限于硬件电路系统与软件的任何特定组合也不限于由数据处理系统执行的指令的任何特定源。
上文描述及图式是说明性的且不应理解为具限制性。描述众多特定细节以提供透彻理解。然而,在某些例子中,不描述众所周知或常规细节以便避免使描述模糊。在本发明中对一个或一实施例的参考不一定是对同一实施例的参考;且此类参考意味着至少一者。
在前述说明书中,参考本发明的特定示范性实施例描述了本发明。显然,在不背离所附权利要求书中所陈述的最宽精神及范围的情况下,可对所述实施例作出各种修改。因此,说明书及图式应以说明性意义而非限制性意义来看待。

Claims (21)

1.一种实施于计算装置中的方法,所述方法包括:
从通过有线或无线网络连接到所述计算装置的远程装置存取某一量的存储器;
分配虚拟存储器地址区域以寻址由所述远程装置借给所述计算装置的所述量的存储器的部分;
将所述计算装置中的物理存储器区域配置为所述远程装置处的所述量的存储器的所述部分的高速缓存;
将虚拟到物理存储器图存储于所述计算装置中,所述虚拟到物理存储器图识别所述虚拟存储器地址区域与对应于所述物理存储器区域的物理存储器地址区域之间的映射;
将存储器状态图存储于所述计算装置中,所述存储器状态图识别所述虚拟存储器地址区域的子区域的高速缓存可用性状态,所述高速缓存可用性状态中的每一者指示对应子区域的内容在所述物理存储器区域中是否可用;及
通过以下操作处理使用所述虚拟存储器地址区域中的虚拟存储器地址进行的存储器存取请求:
使用所述虚拟到物理存储器图将所述虚拟存储器地址转换成物理存储器地址;
在所述虚拟存储器地址区域的所述子区域中识别含有所述虚拟存储器地址的对应子区域;
从所述存储器状态图确定所述对应子区域在所述物理存储器区域中缺少本地高速缓存可用性;
与所述远程装置通信以将所述对应子区域高速缓存于所述物理存储器区域中;及
使用所述物理存储器地址且根据所述存储器存取请求执行存储器存取。
2.根据权利要求1所述的方法,其进一步包括:
响应于确定所述对应子区域在所述物理存储器区域中缺少本地高速缓存可用性生成存储器故障。
3.根据权利要求2所述的方法,其中所述存储器故障致使所述计算装置与所述远程装置通信以将所述对应子区域高速缓存于所述物理存储器区域中。
4.根据权利要求2所述的方法,其中所述存储器故障致使所述计算装置的存储器管理单元与所述远程装置通信以将所述对应子区域高速缓存于所述物理存储器区域中。
5.根据权利要求2所述的方法,其进一步包括:
在应用程序中注入指令,其中当在所述计算装置中执行时,所述指令致使所述计算装置在使用所述虚拟存储器地址进行所述存储器存取请求之前检查所述虚拟存储器地址的本地高速缓存可用性。
6.根据权利要求5所述的方法,其进一步包括:
编译所述计算装置的所述应用程序,其中所述注入由编译器响应于由所述应用程序请求的存储器使用率而执行。
7.根据权利要求2所述的方法,其进一步包括:
响应于所述分配所述虚拟存储器地址区域以寻址由所述远程装置借给所述计算装置的所述量的存储器的所述部分,分配存储器以存储所述存储器状态图。
8.根据权利要求2所述的方法,其进一步包括:
将所述虚拟到物理存储器图的至少一部分加载到存储器管理单元的转译旁视缓冲器中,其中加载于所述转译旁视缓冲器中的所述虚拟到物理存储器图的所述部分足以使用所述虚拟到物理存储器图将所述虚拟存储器地址转换成物理存储器地址;
其中所述从所述存储器状态图确定所述对应子区域在所述物理存储器区域中缺少本地高速缓存可用性是在其中所述虚拟到物理存储器图的所述部分被加载于所述转译旁视缓冲器中的时间周期期间执行。
9.根据权利要求8所述的方法,其进一步包括:
当所述虚拟到物理存储器图的所述部分被加载于所述转译旁视缓冲器中时,将所述存储器状态图的至少一部分高速缓存于所述存储器管理单元中。
10.根据权利要求1所述的方法,其进一步包括:
基于所述存储器状态图中的变化跟踪所述虚拟存储器地址区域的存储器使用率历史;
预测在所述物理存储器区域中缺少本地高速缓存可用性的所述虚拟存储器地址区域的第二子区域的使用率;及
响应于所述预测所述使用率,与所述远程装置通信以将所述第二子区域高速缓存于所述物理存储器区域中。
11.根据权利要求10所述的方法,其中所述预测是基于人工神经网络。
12.一种计算装置,其包括:
至少一个微处理器;
本地存储器,其耦合到所述至少一个微处理器;及
通信装置,其经配置以通过有线或无线网络与远程装置通信;
其中所述计算装置经配置以:
通过所述有线或无线网络从所述远程装置借入某一量的存储器;
分配虚拟存储器地址区域以寻址由所述远程装置借给所述计算装置的所述量的存储器的部分;及
生成虚拟到物理存储器图,所述虚拟到物理存储器图识别所述虚拟存储器地址区域与对应于所述本地存储器中的物理存储器区域的物理存储器地址区域之间的映射;
其中所述计算装置经配置以存储识别所述虚拟存储器地址区域的子区域的高速缓存可用性状态的存储器状态图,所述高速缓存可用性状态中的每一者指示对应子区域的内容在所述物理存储器区域中是否可用;且
其中所述计算装置经配置以通过以下操作处理所述虚拟存储器地址区域中的虚拟存储器地址处的存储器存取请求:
使用所述虚拟到物理存储器图将所述虚拟存储器地址转换成物理存储器地址;
在所述虚拟存储器地址区域的所述子区域中识别含有所述虚拟存储器地址的对应子区域;
从所述存储器状态图确定所述对应子区域在所述物理存储器区域中缺少本地高速缓存可用性;
与所述远程装置通信以将所述对应子区域高速缓存于所述物理存储器区域中;及
使用所述物理存储器地址且根据所述存储器存取请求执行存储器存取。
13.根据权利要求12所述的计算装置,其中所述至少一个微处理器包含存储器管理单元;所述存储器管理单元包含转译旁视缓冲器,其经配置以存储足以将所述虚拟存储器地址转换成所述物理存储器地址的所述虚拟到物理存储器图的至少一部分。
14.根据权利要求13所述的计算装置,其中当所述虚拟到物理存储器图的所述部分被存储于所述转译旁视缓冲器中时,所述计算装置经配置以从所述存储器状态图确定所述对应子区域在所述物理存储器区域中缺少本地高速缓存可用性。
15.根据权利要求14所述的计算装置,其中所述计算装置经配置以执行例程的指令以从所述存储器状态图确定所述对应子区域在所述物理存储器区域中缺少本地高速缓存可用性。
16.根据权利要求15所述的计算装置,其中所述例程的所述指令在指令在所述至少一个微处理器中执行之前执行,其中所述指令使用存储于所述至少一个微处理器的寄存器中的所述虚拟存储器地址检索操作数或存储所述指令的计算结果。
17.根据权利要求16所述的计算装置,其中所述例程经配置以响应于确定所述对应子区域在所述物理存储器区域中缺少本地高速缓存可用性请求所述计算装置的操作系统与所述远程装置通信以将所述对应子区域高速缓存于所述物理存储器区域中。
18.根据权利要求14所述的计算装置,其中所述存储器管理单元经配置以在使用所述物理存储器地址之前从所述存储器状态图确定所述对应子区域在所述物理存储器区域中缺少本地高速缓存可用性。
19.根据权利要求18所述的计算装置,其中所述存储器管理单元经配置以控制所述通信装置与所述远程装置通信以将所述对应子区域高速缓存于所述物理存储器区域中。
20.一种存储指令的非暂时性计算机存储媒体,所述指令在计算装置上执行时致使所述计算装置执行一方法,所述方法包括:
通过有线或无线网络从远程装置存取某一量的存储器;
分配虚拟存储器地址区域以寻址由所述远程装置借给所述计算装置的所述量的存储器的部分;
生成虚拟到物理存储器图,所述虚拟到物理存储器图识别所述虚拟存储器地址区域与对应于本地存储器中的物理存储器区域的物理存储器地址区域之间的映射;
存储存储器状态图,所述存储器状态图识别所述虚拟存储器地址区域的子区域的高速缓存可用性状态,所述高速缓存可用性状态中的每一者指示对应子区域的内容在所述物理存储器区域中是否可用;及
通过以下操作处理存取所述虚拟存储器地址区域中的虚拟存储器地址处的存储器的请求:
使用所述虚拟到物理存储器图将所述虚拟存储器地址转换成物理存储器地址;
在所述虚拟存储器地址区域的所述子区域中识别含有所述虚拟存储器地址的对应子区域;
从所述存储器状态图确定所述对应子区域在所述物理存储器区域中缺少本地高速缓存可用性;
与所述远程装置通信以将所述对应子区域高速缓存于所述物理存储器区域中;及
使用所述物理存储器地址且根据所述请求执行存储器存取。
21.根据权利要求20所述的非暂时性计算机存储媒体,其中所述有线或无线网络包含第五代蜂窝网络。
CN202010460004.3A 2019-05-28 2020-05-27 实施于计算装置中的方法、计算装置和非暂时性计算机存储介质 Active CN112015677B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/424,427 2019-05-28
US16/424,427 US11169930B2 (en) 2019-05-28 2019-05-28 Fine grain data migration to or from borrowed memory

Publications (2)

Publication Number Publication Date
CN112015677A true CN112015677A (zh) 2020-12-01
CN112015677B CN112015677B (zh) 2024-06-18

Family

ID=73507084

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010460004.3A Active CN112015677B (zh) 2019-05-28 2020-05-27 实施于计算装置中的方法、计算装置和非暂时性计算机存储介质

Country Status (2)

Country Link
US (2) US11169930B2 (zh)
CN (1) CN112015677B (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11138047B2 (en) * 2018-12-05 2021-10-05 Vmware, Inc. Efficient network services with performance lag prediction and prevention
US11733994B2 (en) * 2019-05-03 2023-08-22 EMC IP Holding Company LLC System and method for state management
US11488650B2 (en) * 2020-04-06 2022-11-01 Memryx Incorporated Memory processing unit architecture
US11438414B2 (en) 2019-05-28 2022-09-06 Micron Technology, Inc. Inter operating system memory services over communication network connections
US11334387B2 (en) 2019-05-28 2022-05-17 Micron Technology, Inc. Throttle memory as a service based on connectivity bandwidth
US11061819B2 (en) 2019-05-28 2021-07-13 Micron Technology, Inc. Distributed computing based on memory as a service
US11100007B2 (en) 2019-05-28 2021-08-24 Micron Technology, Inc. Memory management unit (MMU) for accessing borrowed memory
US11256624B2 (en) 2019-05-28 2022-02-22 Micron Technology, Inc. Intelligent content migration with borrowed memory
US11917724B2 (en) * 2019-06-26 2024-02-27 EMC IP Holding Company LLC Location based application migration for enhancing lightweight IoT device applications

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110072234A1 (en) * 2009-09-18 2011-03-24 Chinya Gautham N Providing Hardware Support For Shared Virtual Memory Between Local And Remote Physical Memory
US20140208064A1 (en) * 2013-01-24 2014-07-24 Wisconsin Alumni Research Foundation Virtual Memory Management System with Reduced Latency
CN104040509A (zh) * 2012-01-18 2014-09-10 高通股份有限公司 在有虚拟标识的高速缓冲存储器中确定别名地址的高速缓存命中/未中及相关系统及方法

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9026742B2 (en) 2007-12-21 2015-05-05 Freescale Semiconductor, Inc. System and method for processing potentially self-inconsistent memory transactions
US9575889B2 (en) 2008-07-03 2017-02-21 Hewlett Packard Enterprise Development Lp Memory server
CN102388381B (zh) 2009-01-23 2015-02-25 惠普开发有限公司 用于分配共享存储资源的系统和方法
US7996564B2 (en) 2009-04-16 2011-08-09 International Business Machines Corporation Remote asynchronous data mover
US8301717B2 (en) 2009-06-09 2012-10-30 Deshpande Enterprises, Inc. Extended virtual memory system and method in a computer cluster
WO2012160629A1 (ja) 2011-05-20 2012-11-29 富士通株式会社 データ処理方法
US9253051B2 (en) 2012-02-23 2016-02-02 Ericsson Ab System and method for delivering content in a content delivery network
US9996370B1 (en) 2012-04-18 2018-06-12 Open Invention Network Llc Page swapping in virtual machine environment
WO2014087518A1 (ja) 2012-12-06 2014-06-12 株式会社 日立製作所 ネットワークシステム及びその運用方法
KR101442091B1 (ko) 2012-12-31 2014-09-25 고려대학교 산학협력단 가상화 시스템에서의 메모리 관리 방법
US20140280669A1 (en) 2013-03-15 2014-09-18 Microsoft Corporation Memory Sharing Over A Network
US9311011B2 (en) 2013-08-07 2016-04-12 Qualcomm Incorporated Dynamic address negotiation for shared memory regions in heterogenous multiprocessor systems
CN104426971B (zh) 2013-08-30 2017-11-17 华为技术有限公司 一种远程内存交换分区方法、装置及系统
JP6179321B2 (ja) 2013-09-27 2017-08-16 富士通株式会社 ストレージ管理装置、制御方法及び制御プログラム
US10331997B2 (en) 2014-05-07 2019-06-25 Seagate Technology Llc Adaptive configuration of a neural network device
US9626108B2 (en) 2014-09-16 2017-04-18 Kove Ip, Llc Dynamically provisionable and allocatable external memory
KR101700315B1 (ko) 2014-12-12 2017-01-26 국민대학교산학협력단 스크래치패드 메모리 관리 방법, 이를 수행하는 스크래치패드 메모리 관리 장치 및 이를 저장하는 기록매체
US9892037B2 (en) 2014-12-29 2018-02-13 International Business Machines Corporation Efficient and secure direct storage device sharing in virtualized environments
US10019276B2 (en) 2015-05-27 2018-07-10 Red Hat Israel, Ltd. Dynamic non-uniform memory architecture (NUMA) locality for remote direct memory access (RDMA) applications
CN106991478B (zh) 2016-01-20 2020-05-08 中科寒武纪科技股份有限公司 用于执行人工神经网络反向训练的装置和方法
US10432722B2 (en) 2016-05-06 2019-10-01 Microsoft Technology Licensing, Llc Cloud storage platform providing performance-based service level agreements
US10380342B2 (en) 2016-07-29 2019-08-13 Qualcomm Incorporated Kernel-based detection of target application functionality using virtual address mapping
KR102197247B1 (ko) 2017-06-01 2020-12-31 한국전자통신연구원 파라미터 서버 및 그것에 의해 수행되는 분산 딥러닝 파라미터 공유 방법
US10776308B2 (en) 2017-06-30 2020-09-15 Intel Corporation Smart memory data store or load method and apparatus
US10713212B2 (en) 2018-05-21 2020-07-14 Microsoft Technology Licensing Llc Mobile remote direct memory access
US10929165B2 (en) 2018-07-31 2021-02-23 Nutanix, Inc. System and method for memory resizing in a virtual computing environment
US11200168B2 (en) * 2018-12-10 2021-12-14 International Business Machines Corporation Caching data from remote memories
US20200379809A1 (en) 2019-05-28 2020-12-03 Micron Technology, Inc. Memory as a Service for Artificial Neural Network (ANN) Applications
US11061819B2 (en) 2019-05-28 2021-07-13 Micron Technology, Inc. Distributed computing based on memory as a service
US11334387B2 (en) 2019-05-28 2022-05-17 Micron Technology, Inc. Throttle memory as a service based on connectivity bandwidth
US11438414B2 (en) 2019-05-28 2022-09-06 Micron Technology, Inc. Inter operating system memory services over communication network connections

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110072234A1 (en) * 2009-09-18 2011-03-24 Chinya Gautham N Providing Hardware Support For Shared Virtual Memory Between Local And Remote Physical Memory
CN104123242A (zh) * 2009-09-18 2014-10-29 英特尔公司 为本地与远程物理存储器之间的共享虚拟存储器提供硬件支持
CN104040509A (zh) * 2012-01-18 2014-09-10 高通股份有限公司 在有虚拟标识的高速缓冲存储器中确定别名地址的高速缓存命中/未中及相关系统及方法
US20140208064A1 (en) * 2013-01-24 2014-07-24 Wisconsin Alumni Research Foundation Virtual Memory Management System with Reduced Latency

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
陈海燕, 邓让钰, 邢座程: "高性能微处理器TLB的优化设计", 国防科技大学学报, no. 04 *

Also Published As

Publication number Publication date
CN112015677B (zh) 2024-06-18
US20220027285A1 (en) 2022-01-27
US11169930B2 (en) 2021-11-09
US20200379914A1 (en) 2020-12-03

Similar Documents

Publication Publication Date Title
US12019549B2 (en) Intelligent content migration with borrowed memory
CN112015677B (zh) 实施于计算装置中的方法、计算装置和非暂时性计算机存储介质
CN113906384B (zh) 人工神经网络(ann)应用程序中的存储器即服务
CN113994313B (zh) 基于存储器即服务的分布式计算
CN113906399B (zh) 基于连接带宽节制存储器即服务
US11392428B2 (en) Fork handling in application operations mapped to direct access persistent memory
US11657002B2 (en) Memory management unit (MMU) for accessing borrowed memory
CN113892091A (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