CN113994313A - 基于存储器即服务的分布式计算 - Google Patents

基于存储器即服务的分布式计算 Download PDF

Info

Publication number
CN113994313A
CN113994313A CN202080039417.2A CN202080039417A CN113994313A CN 113994313 A CN113994313 A CN 113994313A CN 202080039417 A CN202080039417 A CN 202080039417A CN 113994313 A CN113994313 A CN 113994313A
Authority
CN
China
Prior art keywords
memory
virtual
application
address region
memory 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.)
Granted
Application number
CN202080039417.2A
Other languages
English (en)
Other versions
CN113994313B (zh
Inventor
A·D·艾卡尔
S·E·布拉德绍
K·M·丘尔维兹
S·S·艾勒特
D·尤达诺夫
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 CN113994313A publication Critical patent/CN113994313A/zh
Application granted granted Critical
Publication of CN113994313B publication Critical patent/CN113994313B/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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0284Multiple user address space allocation, e.g. using different base addresses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0615Address space extension
    • G06F12/063Address space extension for I/O modules, e.g. memory mapped I/O
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • G06F12/0822Copy directories
    • 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]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • 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/1072Decentralised address translation, e.g. in distributed shared memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/109Address translation for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • 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
    • 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]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/154Networked environment
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W84/00Network topologies
    • H04W84/02Hierarchically pre-organised networks, e.g. paging networks, cellular networks, WLAN [Wireless Local Area Network] or WLL [Wireless Local Loop]
    • H04W84/04Large scale networks; Deep hierarchical networks
    • H04W84/042Public Land Mobile systems, e.g. cellular systems
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W84/00Network topologies
    • H04W84/02Hierarchically pre-organised networks, e.g. paging networks, cellular networks, WLAN [Wireless Local Area Network] or WLL [Wireless Local Loop]
    • H04W84/10Small scale networks; Flat hierarchical networks
    • H04W84/12WLAN [Wireless Local Area Networks]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

描述基于存储器即服务的分布式计算的系统、方法和设备。举例来说,一组联网计算装置可各自被配置成执行使用虚拟存储器地址区域存取存储器的应用程序。每一相应装置在所述应用程序正在所述相应装置中执行的第一时间段内将所述虚拟存储器地址区域映射到本地存储器;在所述相应装置中启动所述应用程序之后且在所述相应装置中终止所述应用程序之前的第二时间段内,将所述虚拟存储器地址区域映射到组中的远程装置的本地存储器;以及在至少所述第二时间段期间请求所述远程装置处理所述虚拟存储器地址区域中的数据。

Description

基于存储器即服务的分布式计算
相关申请案
本申请案要求2019年5月28日提交的且名称为“基于存储器即服务的分布式计算(DISTRIBUTED COMPUTING BASED ON MEMORY AS A SERVICE)”的美国专利申请案序列号16/424,424的优先权,其全部公开内容特此以引用的方式并入本文中。
技术领域
本文中所公开的至少一些实施例涉及由操作系统提供的存储器服务。
背景技术
在一些计算机系统中,操作系统允许应用程序使用存储器的虚拟地址以将数据存储在计算机系统的一个或多个存储器子系统的存储器组件中或从所述存储器组件检索数据。操作系统限定连接到计算机系统的中央处理单元(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)的分布式计算的方法。
具体实施方式
本文中所公开的至少一些实施例提供经由通信网络连接的操作系统间存储器服务的技术,使得借用方装置可通过使用通信链路和出借方装置的存储器来扩展其存储器容量。借用方装置和/或出借方装置的操作系统可配置成无缝桥梁通信链路上的间隙,使得在借用方装置上运行的应用程序可无区别地使用其本地存储器及借用存储器。本地存储器物理地安装于借用方装置中,且借用存储器物理地安装于出借方装置中,所述出借方装置经由通信连接连接到借用方装置。
任选地,借用存储器的一部分和/或借用方装置中的本地存储器可经由计算机网络借出给另一装置。借用方装置可具有多个出借方装置。因此,可在装置之间的通信链路的层次结构上形成借用方-出借方装置层次结构。
借用方装置的操作系统可使用虚拟到物理存储器映射以桥梁本地存储器与借用存储器中的差异。举例来说,借用方装置的操作系统可响应于借用方装置的转换后备缓冲器(TLB)中可引起页故障的确定的未命中而操纵页表条目(PTE),以在经由通信链路存取借用存储器时使用借用方装置的本地存储器的一部分作为插槽(aperture)、代理和/或高速缓存。可放松出借方装置与借用方装置之间的高速缓存一致性,以用于改进带宽使用。由于由借用方装置的操作系统对在借用方装置上运行的应用程序屏蔽本地存储器与借用存储器区域之间的差异,因此在借用方装置上运行的应用程序可以与存取配置于借用方装置中的本地随机存取存储器相同的方式来字节存取借用存储器。
操作系统的存储器服务可用于在由多个操作系统经由非相干通信链路共享的统一地址空间下在计算机系统中构造多层字节可寻址存储器。举例来说,可穿戴计算装置可经由个人局域网或局域网从移动计算装置借用存储器。可穿戴计算装置可为智能手表、运动跟踪装置或智能眼镜,且移动计算装置可为智能电话、触摸板计算机或笔记本计算机等。可穿戴计算装置和/或移动计算装置可经由局域网从计算设备借用存储器。举例来说,计算设备可为迷你服务器、台式计算机、存储器设备或存储设备等。移动计算装置和/或计算设备可经由因特网和/或经由云端计算从服务器计算机或服务器场借用存储器。
在存储器资源的出借方-借用方的多级层次结构中,每一后续较高级装置(例如,移动计算装置、计算设备、服务器计算机或服务器场)可使用其存储器容量以按需要提高较低级装置(例如,可穿戴计算装置、移动计算装置、计算设备)和/或同一级装置的存储器容量。IoT装置将构成环境,例如构造材料(混凝土墙、道路等)。可能的是,低密度但高度笨重的廉价存储器技术将允许以非常低的成本在构造中集成低密度存储器(和计算)。因此,我们将某种‘存储器物质’(或可能是计算物质)作为任何装置都可使用的环境的一部分。
任选地,取决于某些装置和/或网络连接的可用性,可跳过层次结构中的一些级别。举例来说,可穿戴计算装置可从计算设备借用存储器而不经过移动计算装置;且移动计算装置可经由因特网从服务器计算机或服务器场借用存储器而不经过局域网中的计算设备。
在设备和云端级别处,存储器资源可作为具有存储器即服务(MaaS)的实用程序提供。这样的布置可按需要向低级计算装置,例如可穿戴计算装置、移动计算装置和/或物联网的计算装置,提供巨大的持久存储器容量和存储器资源。在低级计算装置上运行的应用程序可使用由操作系统提供的存储器服务以凭透明方式使用借用存储器,如同借用存储器是借用方装置的本地存储器的部分一样。因此,在应用程序中不需要特殊的编程来使用借用存储器。
在借用方装置上运行的应用程序可使用借用存储器持久地存储数据,且因此消除或减少对经由文件系统存储数据的操作的需要。举例来说,出借方设备/服务器可提供持久随机存取存储器或存储容量,以将存储器资源提供到借用方装置且管理存储在提供的存储器资源中的数据的持久性和/或冗余,使得可将借用存储器视为借用方装置中的虚拟非易失性随机存取存储器。
任选地,作为服务提供的存储器可包含用于客户端/借用方之间存储器页共享的语义、锁定机制、超时机制等。
作为实例,电话可经由无线局域网(WLAN)(例如,经由家庭Wi-Fi存取点促进)从充当出借方装置的存储器设备获得8太字节(TB)的可观察存储器作为借用方装置。8TB的存储器对于在电话的操作系统下方运行的应用程序是可观察到的,其方式与在具有8TB的本地存储器的电话上运行的应用程序的方式相同。替代地,电话可经由蜂窝式通信网络从服务器或配置为出借方装置的云端计算基础设施获得8TB的可观察存储器。任选地,电话可从存储器设备借用8TB的可观察存储器的部分且从服务器或云端计算基础设施借用8TB的可观察存储器的部分。8TB的可观察存储器实际上可所述电话的操作系统在电话中可用,使得在电话上运行的应用程序可使用虚拟/远程存储器,即使电话可具有仅8兆字节(MB)的物理本地存储器。8TB的借用存储器将电话的存储器容量消耗超过8TB;且对于在使用借用存储器的电话上运行的应用程序,电话的存储器容量似乎与具有超过8TB的本地随机存取存储器的电话相同。
由于借用方装置通常在借用存储器时不立即使用借用存储器,因此出借方装置不必在借用存储器时阻止将借出存储器分配给借用装置。出借方装置可实施存储器的较薄提供(例如,较薄提供存储器),且响应于借用方装置使用增加的借用存储器量而递增地分配存储器。
在借用方装置的操作系统下运行的应用程序可按需要读取和写入从出借方装置借用的存储器页。出借方装置中的物理页分配和/或借用方装置中的对应分配可配置成响应于页上的写入操作而执行。借用方装置的本地存储器的一部分可配置为存取借用页时的高速缓存、代理和/或卡槽。当在借用方装置上运行的应用程序存取虚拟页时,借用方装置的操作系统可将所存取的虚拟页的内容迁移到本地存储器。当本地存储器页在某一时间段内没有被存取和/或将用于托管另一页的内容时,借用方装置的操作系统可将本地存储器中的虚拟页的内容驱逐或迁移到出借方装置上的借用存储器。任选地,借用方装置的操作系统可使用借用方装置的本地随机存取存储器的一部分作为关键数据的快速缓冲器,且使用物理地驻留在远程出借方装置中的借用存储器以保持较不关键的数据。当需要时,较不关键的数据和/或较不频繁使用的数据可迁移到借用方装置的本地随机存取存储器。
一般来说,用于层次结构中的较低级装置的出借方装置自身可为借用方-出借方装置层次结构中的较高级的借用方装置。举例来说,作为借用方装置的电话可从作为出借方装置的存储器设备借用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)的技术,移动装置供应商可在操作系统级别处销售具有太字节存储器容量的移动装置,这将由包含云端计算基础设施的出借方装置上的新兴存储器备份。举例来说,当电话连接到计算机网络或因特网或本地存储器设备或实施本文中所描述的MaaS概念的任何其它装置时,配置有128MB本地存储器的智能电话中的应用程序可存取64TB的随机存取存储器。
图1展示其中计算装置或服务器计算机可从另一计算装置和/或另一服务器计算机借用存储器和/或将存储器出借给另一计算装置和/或另一服务器计算机的系统。
图1说明作为经由计算机网络和/或因特网(109)连接的借用方装置和出借方装置的实例的计算装置(101和103)和服务器计算机(105和107),所述网络可包含蜂窝式通信网络,例如第五代蜂窝式网络。
计算装置(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)。
在一些实例中,装置A(101)或装置B(103)可为可穿戴计算装置、物联网的计算装置、移动计算装置等。
在一些实例中,服务器P(105)或服务器Q(107)可为微型服务器、个人计算机、存储器设备、存储设备、网络存储装置、服务器计算机、服务器场等。
在一个实例中,装置A(101)可使用有线连接、无线个人局域网(WPAN)、无线局域网(WLAN)和/或无线广域网(WWAN)连接到装置B(105)、服务器P(105)和/或服务器Q(107)。
在另一实例中,装置B(105)可使用有线连接、无线局域网(WLAN)和/或无线广域网(WWAN)连接到服务器P(105)和/或服务器Q(107)。
在另一实例中,服务器P(105)可使用有线连接、局域网、无线局域网(WLAN)、无线广域网(WWAN)和/或因特网连接到服务器Q(107)。
服务器P(105)可从服务器Q(107)借用存储器,且将借用存储器和/或本地存储器出借给装置(101和103)(和/或类似装置)。装置B(103)可从服务器P(105)和/或服务器Q(107)借用存储器且将借用存储器和/或本地存储器出借给装置A(101)(和/或类似装置)。
一般来说,计算装置可将存储器借出给一个或多个借用方装置,且从一个或多个出借方装置借用存储器。
操作系统(113、133、157和173)配置成向应用程序和程序提供存储器服务,使得应用程序和程序可在不意识到其物理分配的情况下使用虚拟存储器,使得此虚拟存储器可部分地分配于借用存储器中且部分地分配于本地存储器(111、131、151和171)中。操作系统和支持硬件从应用程序和程序取得负担以管理虚拟存储器分配,这为应用程序和程序提供了方便,使其不必具有经设计以处理本地存储器和借用存储器分配的差异的专门代码段或指定指令。
在一个实例中,服务器Q(107)的本地存储器(171)的一部分被借出给服务器P(105)。服务器P(105)将借用存储器的一部分和/或其本地存储器(151)的一部分借出给装置B(103),所述装置B(103)继而将其借用存储器的一部分和/或其本地存储器(131)的一部分借出给装置A(101)。因此,由操作系统(113)分配到在装置A(101)的处理器(115)上运行的应用程序的虚拟存储器可部分地驻留在装置A(101)的本地存储器(111)中、部分地驻留在装置B(103)的本地存储器(131)中、部分地驻留在服务器P(105)的本地存储器(151)中和/或部分地驻留在服务器Q(107)的本地存储器(171)中。操作系统(113、133、157和173)配置成彼此协作以在各种装置的本地存储器(例如,111、131、151和/或171)之间提供存储器服务和/或由应用程序使用的虚拟存储器的物理分配,使得经编程以在装置A和其本地存储器(101)上运行的应用程序也可不加修改地运行,其中其虚拟存储器部分分配在由装置B(103)、服务器P(105)和/或服务器Q(107)借出给装置A(101)的借用存储器(131、151和/或171)中。
图2说明经由通信网络连接实施操作系统间存储器服务的借用方装置(201)和出借方装置(203),所述通信网络连接例如经由局域网、广域网和/或蜂窝式通信网络(例如,第五代蜂窝式网络)的有线或无线连接(205)。
在图2中,借用方装置(201)从出借方装置(203)借用存储器;且出借方装置(203)将存储器(202)借出给借用方装置(201)。举例来说,借用方装置(201)可为图1的系统中的装置A(101),装置B(103)、服务器P(105);且出借方装置(203)可为图1的系统中的装置B(103)、服务器P(105)或服务器P(105)。此外,出借方装置功能性可在借用方装置(201)中实施,从而使其能够将存储器借出给另一装置。类似地,借用方装置功能性可在出借方装置(203)中实施,从而使其能够从另一装置借用存储器。
在图2中,借用方装置(201)具有通信装置(217)、具有存储器管理单元(MMU)(216)的一个或多个处理器(215)和本地随机存取存储器(211)。处理器(215)和本地存储器(211)在一些实施例中可在单独的计算机芯片中和/或形成于单独的集成电路管芯上,且在其它实施例中可封装在相同计算机芯片中和/或形成于相同集成电路管芯上(例如,在芯片上系统(SoC)中)。
借用方装置(201)的操作系统(213)包含配置成维持存储器映射(207)的存储器服务模块(209)。存储器映射(207)标识虚拟存储器与物理存储器之间的映射,其中物理存储器可部分地在借用方装置(201)中的本地存储器(211)中且部分地在出借方装置(203)中的借出存储器(202)中。操作系统(213)为在借用方装置(201)上运行的一个或多个应用程序(例如,212)提供虚拟存储器服务。处理器(215)可通过执行应用程序代码(212)的指令来运行应用程序(212)。应用程序存储器读取和写入指令可使用虚拟存储器。存储器管理单元(MMU)(216)根据存储器映射(207)将虚拟存储器地址转换成物理存储器地址。
当借用方装置(201)从出借方装置(203)借用存储器时,借用存储器(204)实际上在借用方装置(201)中,且物理地在出借方装置(203)中作为本地随机存取存储器(231)中的借出存储器(202)。任选地,出借方装置(203)可将借出存储器(202)的一部分或其全部配置在存储装置(234)中,所述存储器经由外围总线和/或装置控制器耦合到出借方装置(203)的处理器(235)。举例来说,出借方装置(203)的操作系统(233)可以类似于将存储器资源作为虚拟存储器分配到在出借方装置(203)上运行的应用程序(例如,232)的方式将其存储器资源的一部分作为虚拟存储器分配到借用方装置(201)的操作系统(213)。因此,由借用方装置(201)的操作系统(213)使用的借用存储器(204)可在统一虚拟存储器地址空间中作为由应用程序(232)使用的虚拟存储器和/或由出借方装置(203)的其它借用方使用的借用存储器。替代地,出借方装置(203)的操作系统(233)可产生用于借用存储器(204)的虚拟存储器组件;且借用方装置(201)的操作系统(213)可在借用方装置(201)中存取虚拟存储器组件。用于虚拟存储器组件的虚拟存储器控制器可在操作系统(213)中实施以存取可由借用方装置(201)存取的虚拟存储器组件。MMU 216可实施硬件块以加速虚拟存储器控制器,且通过这样做提高虚拟存储器组件存取的速度。
在一些实例中,借用存储器(204)是隐含的,使得其无法与在借用方装置201上运行的应用程序的虚拟存储器的其余部分区分开。区别仅在通过读取存储器映射207将虚拟页地址转换成物理地址时出现,且在所述转换后,物理地址似乎在借出存储器202中。在其它实例中,如果操作系统(213)属于如由出借方装置(203)提供的借用存储器(204),那么所述操作系统(213)存储虚拟存储器的部分的显式标识。在所有情况下,操作系统213将存储器映射(207)配置成存取出借方装置(203),以从虚拟存储器中读取和写入虚拟存储器,所述虚拟存储器是物理上位于出借方装置(203)中的借出存储器(202)中或在迁移到所述装置之后位于借用方装置(201)中的借用存储器(204)。
存储器映射(207)可经由页表实施。页表的一部分高速缓存于存储器管理单元(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)且更新存储器映射(207)。在从本地存储器(211)逐出虚拟页之后,可释放本地存储器(211)中用于所逐出虚拟页的空间。
举例来说,存储器服务(209)可配置成逐出最不频繁使用的虚拟页或最近最少使用的虚拟页。
在图2中,出借方装置(203)具有通信装置(237)、具有存储器管理单元(MMU)(236)的一个或多个处理器(235)和本地随机存取存储器(231)。任选地,出借方装置(203)包含经由外围总线和/或计算机网络连接到处理器(235)的一个或多个存储装置(234)。举例来说,存储装置(234)可为固态驱动器(SSD)或硬盘驱动器(HD)。
出借方装置(203)的操作系统(233)包含配置成维持存储器映射(227)的存储器服务模块(229)。存储器映射(227)标识虚拟存储器与物理存储器之间的映射。存储器映射可存储于存储器231中或专用于其存储器,例如,内容可寻址存储器或专用高速缓存。操作系统(233)以类似于借用方装置(201)服务于其应用程序(212)的方式将虚拟存储器服务于在出借方装置(203)上运行的一个或多个应用程序(232)。
任选地,出借方装置(203)将借出存储器(202)提供到统一虚拟存储器空间中的借用方装置(201)。借用方装置(201)的存储器服务(209)以与应用程序(232)使用由存储器服务(229)提供的虚拟存储器相同的方式使用借用存储器(204)。举例来说,出借方装置(203)的存储器服务(229)可将虚拟存储器分配到在出借方装置(203)上运行的应用程序(232),且将虚拟存储器分配为由借用方装置(201)的存储器服务(209)使用的借用存储器(204),如同存储器服务(209)为在出借方装置上运行的应用程序一样。因此,在出借方装置(203)和借用方装置(201)(和从出借方装置(203)借用存储器的其它装置)上运行的应用程序(232)可在统一虚拟地址空间中操作。可基于统一虚拟地址空间来配置协作计算。此外,当出借方装置(203)从另一装置/服务器(例如,105或107)借用存储器时,还可在统一虚拟地址空间中提供借用存储器。统一地址空间可促进计算装置之间的数据共享和协同计算。
出借方装置(203)的存储器服务(229)可维持存储器映射(227),所述存储器映射包含借出存储器(202)的虚拟地址与借出存储器(202)的物理地址之间的映射,所述借出存储器对应于由借用装置(201)存取的借用存储器(204)。举例来说,可将由借用方装置(201)标识的虚拟页在存取借用页时的页表条目加载到存储器管理单元(MMU)(236)中,以促进虚拟页的地址与借出存储器(202)的物理地址之间的转换,以便出借方装置(203)的处理器代表借用方装置(201)执行计算。任选地,出借方装置(203)可包含类似于存储器管理单元(236)的硬件,以使用存储器映射(227)在出借方装置(203)与借用方装置(201)之间促进优化和/或加速数据传送,所述存储器映射标识如借用方装置(201)已知的借用存储器(204)与出借方装置(203)中物理上可存取的借出存储器(202)之间的映射。
图3说明根据一个实施例的实施借用存储器的技术。举例来说,图3的技术可在图2中所说明的借用方装置(201)中实施。
图3说明存储器(211)、配置成使用物理地址(例如,257)存取存储器(211)的存储器管理单元(MMU)(216)和存储器映射(207),所述存储器映射定义虚拟地址区域(例如,261、263、265…)与虚拟存储器区映射到的地址区域之间的映射,所述地址区域例如物理地址区域(例如,281、283…)和借用存储器区域(例如,273、275…)。
举例来说,借用存储器地址区域(例如,273、…、275)可配置成将由出借方装置(203)分配的虚拟地址区域标识为提供/借出给借用装置(201)的存储器。
举例来说,虚拟地址区域A(261)与存储器映射(207)中的物理地址区域(281)相关联,以指示虚拟存储器的区域当前直接映射到本地物理存储器(211)的对应区域。
举例来说,虚拟地址区域B(263)在存储器映射(207)中与借用存储器地址区域X(273)和物理地址区域S(283)相关联,以指示虚拟地址区域B(263)映射到借用存储器地址区域X(273)且物理地驻留在物理地址区域S(283)中。因此,可通过存取本地存储器(211)中的物理地址区域S(283)来满足对虚拟地址区域B(263)的存取。虚拟地址区域C(265)在存储器映射(207)中与借用存储器地址区域Y(275)相关联,且在存储器映射(207)中不与任何物理地址区域相关联。因此,为了存取虚拟地址区域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)具有转换后备缓冲器(TLB)(例如,类似于图3中所说明的251),其可存储虚拟到物理存储器映射(253)(例如,由借用方装置(201)的操作系统(213)维持的存储器映射(207)的一部分)。当借用方装置(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)执行经编程以替代TLB(251)中的虚拟到物理存储器映射(253)的一部分的操作系统(213),使得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)进一步配置成经由计算机网络连接(例如,205)使用通信装置(217)来存取借用存储器(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)可在其本地存储器或从出借方服务器(245)借用的本地存储器中托管借出给借用方装置(201)的区域(例如,299)。
一般来说,超过一个出借方装置(203)可用于将存储器服务提供到借用方装置(201);且超过一个出借方服务器(245)可配置于层次结构中。
任选地,在层次结构中作为服务提供的存储器(例如,295、297、…、299)被配置在统一虚拟地址空间中。因此,借用方装置(201)、出借方装置(203)和出借方服务器(245)可通过参考统一虚拟地址空间中的虚拟地址来协作处理存储器中的数据。
举例来说,图6中的借用方装置(201)可为图1的系统中的装置A(101)或装置B(103)。
举例来说,图6中的出借方装置(203)可为图1的系统中的装置B(103)或服务器P(105)。
举例来说,图6中的出借方服务器(245)可为图1的系统中的服务器P(105)或Q(107)。
图7展示经由通信网络连接实施操作系统间存储器服务的方法。举例来说,图7的方法可在图1的系统中实施,具有图2中所说明的借用方-出借方配置和/或图6中所说明的借用方-出借方存储器层次结构。
在框301处,建立从借用方装置(201)到出借方装置(203)的通信连接(205)。
在框303处,借用方装置(201)与出借方装置(203)通信以从出借方装置(203)借用存储器量。出借方装置(203)可将由借用方装置(201)借用的借出存储器(203)分配为可由作为虚拟存储器借用存储器(204)使用的借用存储器(204)。通过借用/借出存储器,装置(201和203)建立其中借用方装置(201)的处理器可读取和/或写入到借用存储器(204)/借出存储器(202)中的配置。在一些情况下,借出存储器(202)自身为从另一出借方装置(例如,245)借用的存储器。
在框305处,借用方装置(201)的操作系统(213)延伸借用方装置(201)的虚拟/逻辑地址空间以覆盖借用存储器(204)。在处理器(215)借用方装置(201)上运行的应用程序(例如,212)可使用空间中的虚拟地址,而不要需要区分借用存储器(204)与本地存储器(211)。
在框307处,借用方装置(201)的操作系统(213)生成将逻辑地址空间的延伸部分映射到借用存储器(204)的存储器映射(207)(例如,呈页表形式)。
在框309处,借用方装置(201)的操作系统(213)将逻辑地址空间的延伸部分分配到应用程序(212)。
在框311处,借用方装置(201)的操作系统(213)经由对借用方装置(201)的物理存储器(211)的一部分的存取而服务对借用存储器(212)的存取。
图8展示根据一个实施例的服务借用存储器页的方法。举例来说,图8的方法可在图1的系统中实施,具有图2中所说明的借用方-出借方配置和/或图6中所说明的借用方-出借方存储器层次结构。举例来说,图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)之间的连接性带宽降低,可减缓和/或暂时切断对最不关键的页的存取。
可经由停止或暂停试图从存储器请求加载的应用程序来准备终止存储器的操作。在所述时间期间,应用程序可能不取得向前的进展。当从存取的借用存储器中切断应用程序时,有可能执行适度的降低。可使应用程序感知到加载或存储操作可引起暂停;且可使用完全不同的编程范式。举例来说,每一存储器存取可包装在尝试-抓住(try-catch)异常包装器中。然而,此方法具有相当大的成本。此外,可处理应用程序以缓慢地处理此类异常。举例来说,应用程序可保持一些上下文打开,且管理与中止的加载/存储操作有关的上下文,通知数据移动基础设施是否最终仍需要服务所述加载/存储。
当借用存储器页根据关键度而节流时,在借用存储器(204)上运行的应用程序仍可在无灾难性故障的情况下缓慢降低,且以较少可到达/可用内容进行降低的功能。
举例来说,媒体库可基于使用频率、使用历史和/或预测的使用对其内容进行优先级排序。优先级可用于确定存储内容的借用存储器页的关键度。因此,对借用存储器中的较不关键的内容的存取可受限制和/或在对媒体库的可用性的影响降低的情况下切断。
图9展示具有不同关键度级别(或优先级)的存储器区域的借用方装置(201),基于所述关键度级别(或优先级)可节流用于存储器即服务的网络流量。举例来说,借用方装置(201)可以图2中所说明的方式实施和/或可借用图6中所说明的层次结构中的或图1中所说明的系统中的存储器。
在图9中,借用存储器(204)中的存储器区域(295、297、…、299)可分别用关键度级别(401、403、…、405)标记。关键度级别(401、403、…、405)对存储器区域(295、297、…、299)之间的相对优先级进行排序。可根据关键度级别(401、403、…、405)分配用于借用方装置(201)与其出借方装置(例如,203)之间的通信的网络带宽。
举例来说,当需要将多个区域(例如,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中,可以类似于图3、4或5中的方式将虚拟存储器地址区域(261、263、265…)映射到物理地址区域(282、283)和借用存储器地址区域(273、275…)。举例来说,存储器映射(207)可以页表的形式指定。
此外,对于虚拟地址区域(261、263、265…)中的每一个,存储器映射(207)可包含关键度级别(例如,411、413或415)。关键度级别(例如,411、413或415)可用于确定虚拟地址区域(例如,261、263或265)的带宽的共享可用于在借用方装置(201)与出借方装置(203)之间通信数据。
图11说明根据一个实施例的标识存储器区域的关键度级别/优先级的方法。举例来说,图11的方法可用于确定图9和10中的关键度级别(例如,401到415)中的任一个。
在图11中,可基于内容类别(431)、控制内容中的应用程序(例如,212)的优先级(433)和/或由应用程序(例如,212)为所述内容请求的优先级来确定存储器区域的内容的关键度级别(421)。
不同内容类别可具有预定权重。当应用程序分配用于存储数据的存储器页时,应用程序可标识存储器页的内容类别(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)、装置B(103)或服务器P(105)。
在框451处,在借用方装置(201)与出借方装置(203)之间建立通信连接(205)。举例来说,连接(205)可经由图1中所说明的网络和/或因特网(109)。
在框453处,借用方装置(201)与出借方装置(203)通信以获得借用方装置(201)使用由出借方装置(203)借出的存储器(202)量的权限以用于由借用方装置(201)经由通信连接(205)存取。
在框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)借用。
可至少部分地基于内容的类别(431)、控制内容的应用程序(例如,212)的优先级(433)或由应用程序(例如,212)为内容请求的优先级(435)或其任何组合来标识关键度级别(例如,401到415、421)。
举例来说,应用程序(例如,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)量中;且与第二存储器区域相关联的虚拟存储器区域可从托管在由出借方装置(2030借出给借用方装置(201)的存储器(202)量中迁移到托管或高速缓存于借用方装置(201)的本地存储器(211)中。
在一些实施例中,计算装置的存储器管理单元(MMU)配置成经由网络连接加速对借用存储器的存取。
举例来说,借用方装置(201)的存储器管理单元(MMU)(216)可不仅配置成经由存储器总线存取借用方装置(201)的本地随机存取存储器(211),而且还使用通信装置(217)经由网络连接(205)存取托管在出借方装置(203)的借出存储器(202)中的借用存储器(204)。存储器管理单元(MMU)(216)可根据由存储器管理单元(MMU)(216)从虚拟地址(255)转换的物理地址(257)使用通信装置(217)存取出借方装置(203)中的借出存储器(202),而不需要致使借用方装置(201)的处理器(215)执行其操作系统(213)的指令。
举例来说,由操作系统(213)在存取借出存储器(202)时执行的一些例程操作可在存储器管理单元(MMU)(216)中实施,使得可在处理器(215)不执行其执行单元中的指令的情况下执行例程操作。此MMU实施方案/支持可提高处理器(215)在存取物理上位于出借方装置(203)的借出存储器(202)中的借用存储器(204)时的效率。
一般来说,操作系统(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)配置成足以使存储器管理单元(216)为存储器操作(例如,读取或写入)寻址存储器页(259)。
当由虚拟地址(255)标识的虚拟存储器托管在物理上在出借方装置(203)内部的借出存储器(202)中的存储器页(260)中时,物理地址(257)配置成包含足够的信息以用于通信装置(217)经由计算机网络连接(205)将存取请求传输到出借方装置(203)。
举例来说,当由虚拟地址(255)标识的虚拟存储器托管在借出存储器(202)中的存储器页(260)中时,物理地址(257)可包含出借方装置(203)的网络地址和由出借方装置(203)的操作系统服务的虚拟存储器空间中的虚拟存储器地址。存储器管理单元(MMU)(216)请求通信装置(217)使用网络地址将存取请求传输到出借方装置(203);且存取请求包含标识出借方装置(203)中的存储器页(260)的虚拟地址。
当通信装置(237)接收存取请求时,通信装置(237)可配置成指示存储器管理单元(MMU)(236)以类似于处理器(235)指示存储器管理单元(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)转换为经由通信装置(217)存取的物理地址(257)时,通信装置(217)可将虚拟地址区域从出借方装置(203)迁移到通信装置(217)的缓冲器(505)中,如图14中所说明。
举例来说,当存取虚拟存储器页中的虚拟地址(256)时,通信装置(217)可将整个页(或其一部分)迁移到通信装置(217)的缓冲器(505)中以预测对页的进一步存取。
替代地,借用方装置(201)的存储器管理单元(MMU)(216)可配置成保留本地随机存取存储器(211)的一部分作为用于高速缓存借出存储器(203)的一部分的缓冲器,如图15中所说明。
任选地,借用方装置(201)的存储器管理单元(MMU)(216)可进一步配置成以类似于图5中所说明的方式管理虚拟物理存储器页(253)中所标识的虚拟存储器区域的托管的调整。
举例来说,当存储器管理单元(MMU)(216)确定与托管在本地存储器(211)中的虚拟区域相比更频繁地和/或最近地存取托管在出借方装置(203)的借出存储器(202)中的虚拟区域时,存储器管理单元(MMU)(216)可使用通信装置(217)将更频繁地和/或最近存取的虚拟区域迁移到本地存储器(211)中托管且将较不频繁地和/或最近存取的虚拟区域逐出到借出存储器(202)中托管。因此,存储器管理单元(MMU)(216)可优化高速缓存在转换后备缓冲器(TLB)(251)中的虚拟到物理存储器映射(253)中标识的虚拟存储器区域的托管,且根据所述调整更新高速缓存在转换后备缓冲器(TLB)(251)中的虚拟到物理存储器映射(253)。借用方装置(213)的操作系统(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)接收到存储器存取请求(507),所述存储器存取请求标识由操作系统(233)为由借用方装置(201)使用的借用存储器(204)分配的虚拟存储器地址(509),通信装置(237)配置成根据存储器存取请求(509)请求处理器(235)进行处理。
在通信装置(237)接收存取请求(507)时,在出借方装置(203)中运行的操作系统(233)可(例如,经由存储器映射(227)的配置)将虚拟地址(509)托管在存储装置(232)中或随机存取存储器(231)中。
如果虚拟地址(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)配置成包含网络控制器(523)以操作通信装置(237),如图17中所说明。
在图17中,存储器管理单元(MMU)(236)具有配置成使用存储器(231)的物理地址存取存储器页(260)的存储器控制器(521)。此外,存储器管理单元(MMU)(236)具有配置成处理基于网络的存储器存取请求(例如,507)的网络控制器(521)。这种基于网络的存储器存取请求(507)可为来自其借用方装置(例如,201)或其出借方装置(例如,245)的请求。
图18展示根据一个实施例的用以经由存储器管理单元加速对借用存储器的存取的方法。举例来说,图18的方法可在图1中说明的装置A(101)或装置B(103)或服务器P(105)中实施。举例来说,图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)生成的计算结果。
在一些情况下,虚拟存储器地址(509)在从网络连接到借用方装置(例如,201)的存储器存取请求中在通信装置(237)中接收;且通信装置(237)配置成请求存储器管理单元(236)处理存取请求(507)。
在框535处,存储器管理单元(例如,216或236)使用高速缓存在转换后备缓冲器(例如,253)中的虚拟到物理存储器映射(例如,253)将虚拟存储器地址(例如,255)转换为物理存储器地址(例如,257)。
在框537处,确定物理存储器地址(例如,257)是否用于本地存储器(例如,211或231)。
举例来说,存储器管理单元(例如,216或236)可具有经由存储器控制器(例如,521)到存储器总线(例如,511)和经由网络控制器(523)到计算机网络(例如,109)两者的连接。
在框539处,如果物理存储器地址(例如,257)确定(537)为用于本地存储器(例如,211或231)(例如,第一存储器类型),那么存储器管理单元(例如,216或236)指示连接到存储器总线(513)的存储器控制器(521)存取物理地址(257)处的存储器页(259)。
在框541处,如果物理存储器地址(例如,257)确定(537)为不用于本地存储器(例如,211或231)(例如,第二存储器类型),那么存储器管理单元(例如,216或236)指示连接到计算机网络连接(205)的网络控制器(523)根据物理地址(257)存取存储器页(260)。
配置成执行图18的方法的存储器管理单元(MMU)(216或236)可用于借用方装置(201)的微处理器(215或235)或为另一装置(例如245)借用存储器的出借方装置(203)中。
具有此存储器管理单元(MMU)(216或236)的通信装置(例如,201或203)可具有耦合到本地随机存取存储器(例如,211或213)的存储器总线和至少一个微处理器(例如,215或235)。微处理器(例如,215)可进一步具有寄存器(例如,501)和执行单元(例如,503)。
计算装置(例如,201或203)具有包含指令的操作系统(例如,213或233),所述指令在由至少一个微处理器(例如,215或235)执行时致使计算装置使用通信装置(例如,217或237)经由网络连接(205)从出借方装置(例如,203或245)借用存储器量。
执行单元(503)配置成至少使用映射到从出借方装置(例如,203或245)借用的存储器量的虚拟存储器地址来执行指令。
举例来说,在从寄存器(501)检索第一虚拟存储器地址(255)以用于执行执行单元(503)中的指令之后,存储器管理单元(MMU)(215)将第一虚拟存储器地址(255)转换为经由网络连接(205)标识出借方装置(例如203或245)和第二虚拟存储器地址(509)的第一物理地址(257)。存储器管理单元(MMU)(215)指示通信装置(217)使用第二虚拟存储器地址存取由出借方装置(203)经由网络连接(205)借出给计算装置(201)的存储器(260)。
举例来说,第一物理地址(257)可包含出借方装置(203)的计算机网络地址。
执行单元(503)中的指令的执行可生成存储器操作以在第一虚拟存储器地址(255)处读取或写入;且存储器管理单元(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)中的区域上的第一虚拟存储器区域n重新映射到出借方装置(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)具有人工智能(AI)代理(571),所述人工智能代理任选地配置为操作系统(213)的部分。AI代理(571)配置成基于由操作系统(213)收集的各种信息生成内容迁移决策(580),所述各种信息例如存储器使用历史(573)、位置历史(575)、调度操作(577)、电池功率电平(579)(例如,当借用方装置(201)经由电池供电时)、电池使用历史等。
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)可包含AI代理(572),其监视由借用方装置(例如,201)使用的借出存储器(202)的使用。出借方装置(例如,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)以为将来的迁移决策(580)提供额外信息和/或更新状态。因此,借用方装置(201)可提供由AI代理(571/572)使用的数据;且出借方装置(203)提供处理数据的计算能力。
在一些实施例中,计算装置(例如,201和203、或图1中的101至107)配置有存储器即服务,所述存储器即服务允许虚拟存储器区域的托管在计算装置之间(between/among)自由迁移。当虚拟存储器区域托管在装置中的一个上时,当前托管虚拟存储器区域的装置充当为虚拟存储器区域向其它计算装置提供其存储器资源的出借方。当虚拟存储器区域的托管迁移到另一装置时,所述装置充当为虚拟存储器区域向其它计算装置提供其存储器资源的出借方。给定计算装置可充当用于一组虚拟存储器区域的出借方和用于另一组虚拟存储器区域的借用方;且对于特定的虚拟存储器区域,计算装置作为借用方或出借方的角色可不时地动态改变。具有较大本地存储器资源的计算装置可比其它计算装置托管更多的虚拟存储器区域。计算装置可经由存储器即服务(MaaS)来共享其本地存储器资源。当网络连接(例如,205)可用时,虚拟存储器区域可从一个装置自由地迁移到另一装置(例如,在图1中所说明的系统中)。
图21至24说明根据一些实施例的内容移动。
图21说明为虚拟地址区域(581)借用出借方装置(203)的存储器资源的借用方装置(201)。借用方装置(201)存储将虚拟地址区域(581)与出借方装置标识符(583)相关联的存储器映射(207)。
举例来说,出借方装置标识符(583)可为出借方装置的因特网协议(IP)地址、出借方装置(203)的主机名、出借方装置(203)的统一资源定位符(URL)、通用唯一标识符(UUID)等。
基于出借方装置标识符(583),借用方装置(201)可存取出借方装置(203)中的物理存储器区域(586)。举例来说,借用方装置(201)的MMU(216)、在借用方装置(201)的处理器(215)中运行的借用方装置(201)的操作系统(213)可生成图17中所说明的存储器存取请求(507)。将数据存储在虚拟地址区域(581)中的虚拟地址(509)中或从所述虚拟地址(509)加载数据的请求(507)根据出借方装置标识符(583)经由网络连接(205)传输。接收请求(507)的出借方装置(201)可将数据存储在存储器区域(586)中的存储器页(例如,图17中所说明的260)中或从所述存储器页加载数据,所述存储器区域由通过出借方装置(203)的操作系统(233)维持的存储器映射(227)标识。
在图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)可更新其存储器映射(207)以使虚拟地址区域(581)与借用方装置标识符(582)与相关联,从而指示虚拟地址区域(581)托管在借用方装置(201)中。此外,存储器映射(207)将虚拟地址区域(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)借出给出借方装置(203)的存储器(588),其方式类似于借用方装置(201)存取由出借方装置(203)借出给具有图21的配置的借用方装置(201)的存储器(586)的方式。因此,可通过迁移虚拟地址区域(581)的托管来反转出借方/借用方角色;且给定装置可相对于托管在不同装置的位置存储器中的不同虚拟地址区域具有不同出借方/借用方角色。
图23说明其中虚拟地址区域(581)与借用方装置标识符(582)相关联且因此托管在借用方装置(201)的本地存储器(591或211)中的存储器区域(588)中的配置。然而,出借方装置(203)的存储器映射(227)进一步使虚拟地址区域(581)与出借方装置(203)的本地存储器(593或231)中的存储器区域(586)的物理地址区域(585)相关联。因此,出借方装置(203)的存储器区域(586)中的内容可用作借用方装置(201)中的存储器区域(588)中的内容的备份副本、高速缓存副本或镜像副本,其中虚拟地址区域(581)被正式托管。
类似地,图24说明其中虚拟地址区域(581)与出借方装置标识符(583)相关联且因此托管在出借方装置(203)的本地存储器(593或231)中的存储器区域(586)中的配置。然而,借用方装置(201)的存储器映射(207)进一步使虚拟地址区域(581)与借用方装置(201)的本地存储器(591或211)中的存储器区域(588)的物理地址区域(587)相关联。因此,借用方装置(203)的存储器区域(588)中的内容可用作出借方装置(203)中的存储器区域(586)中的内容的备份副本、高速缓存副本或镜像副本,其中虚拟地址区域(581)被正式托管。
任选地,装置(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)映射到第一计算装置(例如,201)的本地存储器(或存储装置)(591)中来改变虚拟存储器地址区域(581)的存储器映射,如图22或23中所说明。
类似地,响应于迁移决策(580)且在将虚拟地址区域(581)的所迁移的内容存储到第二计算装置(例如,203)的本地存储器(或存储装置)(593)中之后,可通过将虚拟存储器地址区域(581)映射到第二计算装置(例如,203)的本地存储器(或存储装置)(593)中来改变虚拟存储器地址区域(581)的存储器映射,如图21或24中所说明。
当将虚拟存储器地址区域(581)映射到第一计算装置(201)的本地存储器(或存储装置)(591)上时,虚拟存储器地址区域(581)在第二计算装置(203)的存储器映射(227)中与第一计算装置(201)的标识符(582)相关联,如图22和23中所说明;且当将虚拟存储器地址区域(581)映射到第二计算装置(203)的本地存储器(或存储装置)(593)上时,虚拟存储器地址区域(581)在第一计算装置(201)的存储器映射(207)中与第二计算装置(203)的标识符(583)相关联,如图21和24中所说明。
任选地,虚拟存储器地址区域(581)映射到第一计算装置(201)的本地存储器(或存储装置)(591)中,虚拟存储器地址区域(581)在第一计算装置(201)的存储器映射(207)中进一步与第一计算装置(201)的识别符(582)相关联,如图22和23中所说明;且当将虚拟存储器地址区域(581)映射到第二计算装置(203)的本地存储器(或存储装置)(593)上时,虚拟存储器地址区域(581)在第二计算装置(203)的存储器映射(227)中进一步与第二计算装置(203)的识别符(583)相关联,如图21和24中所说明。
当将虚拟存储器地址区域(581)映射到第一计算装置(201)的本地存储器(或存储装置)(591)上时,第一计算装置(201)的存储器映射(207)将虚拟存储器地址区域(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)可在于装置(621)中执行应用程序(212)的时间段内托管在装置(621)的本地存储器(211)中。
举例来说,在装置(621)的存储器映射(207)和设备/服务器(623)的存储器映射(227)两者中,虚拟存储器地址区域(581)与装置(621)的装置识别符A(582)相关联。装置(621)的存储器映射(207)进一步使虚拟存储器地址区域(581)与物理地址区域(587)相关联。因此,存储器映射(207)可由运行应用程序(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)相关联。因此,存储器映射(207)可由运行对应应用程序(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)提供的计算结果。
一般来说,多个虚拟地址区域(例如,581)可用于应用程序(627)和其数据(625)。一些虚拟地址区域(例如,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)的内容可通过同步和/或重新托管虚拟存储器地址区域(例如,581)来更新以用于运行应用程序(例如,212、232或627)。在一些情况下,计算装置可直接在托管在远程装置上的虚拟存储器地址区域上运行应用程序(例如,使用结合图13至17所论述的存储器存取加速技术)。在一些情况下,对于在计算装置中运行的应用程序(例如,212或627),虚拟存储器地址区域(例如,581)重新托管回计算装置中,或高速缓存/镜像在计算装置中。
任选地,运行计算装置和远程装置以使用同一虚拟存储器地址区域(例如,581)的应用程序(例如,212、232或627)可具有相同指令集。此外,指令集可由计算装置和/或远程装置加载到虚拟存储器地址区域(例如,581)中以用于执行,如图28至31中所说明。举例来说,计算装置的处理器中的程序计数器可将虚拟地址存储在虚拟存储器地址区域(例如,581)中;且处理器可在虚拟地址处检索应用程序(例如,627)的指令以用于执行应用程序(例如,627)。
在一些情况下,类似于上文所论述的计算装置和远程装置的一组装置可经由计算机网络连接以形成系统。系统中的装置中的每一个可经由其操作系统配置成:执行使用虚拟存储器地址区域存取存储器的应用程序;在应用程序正在相应装置中执行的第一时间段内将虚拟存储器地址区域映射到本地存储器;在相应装置中启动应用程序之后和在相应装置中终止应用程序之前的第二时间段内,将虚拟存储器地址区域映射到多个计算装置中的远程装置的本地存储器;以及请求远程装置在至少第二时间段期间处理虚拟存储器地址区域中的数据。虚拟存储器地址区域可动态地重新托管在所述组中的装置中的任一个上以促进使用存储在虚拟存储器地址区域中的指令和/或数据进行计算。
一般来说,上文所论述的装置或服务器中的每一个(例如,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)、快闪存储器装置、软性和其它可装卸式磁盘、磁盘存储媒体、光学存储媒体(例如,光盘只读存储器(CDROM)、数字通用光盘(DVD)等)等等。计算机可读媒体可存储指令。
指令还可体现于用于电、光、声或其它形式的传播信号的数字和模拟通信链路中,所述传播信号例如载波、红外信号、数字信号等。然而,例如载波、红外信号、数字信号等的传播信号不是有形的机器可读媒体,也不配置成存储指令。
一般来说,机器可读媒体包含以可由机器(例如,计算机、网络装置、个人数字助理、制造工具、具有一个或多个处理器集的任何装置等)存取的形式提供(即,存储和/或传输)信息的任何机制。
在各种实施例中,硬接线电路系统可与软件指令组合使用以实施所述技术。因此,技术不限于硬件电路和软件的任何具体组合,也不限于由数据处理系统执行的指令的任何特定来源。
以上描述和图式是说明性的,且不应理解为限制性的。描述了许多具体细节以提供透彻理解。然而,在某些情况下,不描述众所周知的或常规的细节以免使描述内容模糊不清。本公开中对一个或一实施例的参考未必参考同一实施例;且此类参考意味着至少一个。
在前文说明书中,本公开已参考其具体示范性实施例进行描述。将显而易见的是,可在不脱离如所附权利要求书中阐述的更广泛精神和范围的情况下对其进行各种修改。因此,说明书和图式应在说明性意义上而非限制性意义上看待。

Claims (21)

1.一种在计算装置中实施的方法,所述方法包括:
在所述计算装置中执行第一应用程序;
将虚拟存储器地址区域分配到所述第一应用程序,其中在所述计算装置中执行的所述第一应用程序使用所述虚拟存储器地址区域中的虚拟存储器地址存储数据;
生成将所述虚拟存储器地址区域映射到所述计算装置的本地存储器中的存储器映射;
基于所述存储器映射且根据所述虚拟存储器地址将所述数据存储在所述计算装置的所述本地存储器中;
更新所述存储器映射以将所述虚拟存储器地址区域映射到经由有线或无线网络连接连接到所述计算装置的远程装置的本地存储器;
结合所述更新存储器映射,经由所述有线或无线网络连接将所述虚拟存储器地址区域的内容的至少一部分传输到所述远程装置;以及
将在所述远程装置中执行第二应用程序的请求从所述计算装置传输到所述远程装置,其中在所述远程装置中执行的所述第二应用程序处理映射到所述远程装置的所述本地存储器的所述虚拟存储器地址区域中的所述数据。
2.根据权利要求1所述的方法,其进一步包括:
在所述远程装置中执行的所述第二应用程序处理所述虚拟存储器地址区域中的所述数据之后,在所述计算装置中执行所述第一应用程序以存取所述虚拟存储器地址区域中的所述数据。
3.根据权利要求2所述的方法,其中所述第一应用程序和所述第二应用程序具有相同指令集。
4.根据权利要求3所述的方法,其进一步包括:
将所述第一应用程序的所述指令集存储在所述虚拟存储器地址区域中,其中所述远程装置根据所述请求执行从所述虚拟存储器地址区域检索到的所述指令集。
5.根据权利要求2所述的方法,其中在所述远程装置中执行的所述第二应用程序处理所述虚拟存储器地址区域中的所述数据之后,所述在所述计算装置中执行所述第一应用程序在所述虚拟存储器地址区域被映射到所述远程装置的所述本地存储器时的时间段内使用所述虚拟存储器地址区域的所述内容的高速缓存或镜像副本。
6.根据权利要求2所述的方法,其进一步包括在所述远程装置中执行的所述第二应用程序处理所述虚拟存储器地址区域中的所述数据之后:
经由所述有线或无线网络连接从所述远程装置接收所述虚拟存储器地址区域的所述内容的至少一部分;以及
更新所述存储器映射以将所述虚拟存储器地址区域映射到所述计算装置的所述本地存储器。
7.根据权利要求1所述的方法,其中在所述计算装置中终止所述第一应用程序之前,在所述远程装置中执行所述第二应用程序。
8.根据权利要求1所述的方法,其中同时在一时间段期间执行在所述远程装置中执行的所述第二应用程序的执行和所述计算装置中的所述第一应用程序的执行。
9.一种在计算装置中实施的方法,所述方法包括:
经由有线或无线网络连接将对所述计算装置的本地存储器的一部分的存取提供到远程装置,其中所述远程装置配置成执行第一应用程序,基于所述计算装置的所述本地存储器的所述部分将虚拟存储器地址区域分配到所述第一应用程序;
在所述计算装置中生成存储器映射以将所述虚拟存储器地址区域映射到所述计算装置的所述本地存储器;
结合所述生成所述存储器映射,经由所述有线或无线网络连接从所述远程装置接收所述虚拟存储器地址区域的内容的至少一部分;
在所述计算装置中从所述远程装置接收在所述计算装置中执行第二应用程序的第一请求;以及
执行在所述计算装置中执行的所述第二应用程序,以处理映射到所述计算装置的所述本地存储器的所述虚拟存储器地址区域中的所述数据。
10.根据权利要求9所述的方法,其进一步包括:
在所述计算装置中执行的所述第二应用程序处理所述虚拟存储器地址区域中的所述数据之后,将在所述远程装置中执行所述第一应用程序以存取所述虚拟存储器地址区域中的所述数据的第二请求从所述计算装置传输到所述远程装置。
11.根据权利要求10所述的方法,其中所述第一应用程序和所述第二应用程序具有相同指令集。
12.根据权利要求11所述的方法,其中所述第一应用程序的所述指令集存储在所述虚拟存储器地址区域中;且所述执行所述第二应用程序包含根据所述第一请求从所述虚拟存储器地址区域加载所述指令集。
13.根据权利要求10所述的方法,其中在所述计算装置中执行的所述第二应用程序处理所述虚拟存储器地址区域中的所述数据期间,使用所述虚拟存储器地址区域的所述内容的高速缓存或镜像副本在所述计算装置中执行所述第一应用程序。
14.根据权利要求10所述的方法,其进一步包括在所述远程装置中执行的所述第二应用程序处理所述虚拟存储器地址区域中的所述数据之后:
经由所述有线或无线网络连接将所述虚拟存储器地址区域的所述内容的至少一部分传输到所述远程装置;以及
更新所述存储器映射以将所述虚拟存储器地址区域映射到所述远程装置的所述本地存储器。
15.一种计算机系统,其包括:
多个计算装置,所述计算装置的每一相应装置具有:
至少一个微处理器;
本地存储器;以及
通信装置;
其中所述计算装置的通信装置经由有线或无线网络连接;且
其中所述相应装置配置成:
执行使用虚拟存储器地址区域存取存储器的应用程序;
在所述应用程序正在所述相应装置中执行的第一时间段内,将所述虚拟存储器地址区域映射到所述本地存储器;
在所述相应装置中启动所述应用程序之后且在所述相应装置中终止所述应用程序之前的第二时间段内,将所述虚拟存储器地址区域映射到所述多个计算装置中的远程装置的本地存储器;以及
请求所述远程装置在至少所述第二时间段期间处理所述虚拟存储器地址区域中的数据。
16.根据权利要求15所述的计算机系统,其中所述相应装置进一步配置成:
在所述第一时间段期间,使所述虚拟存储器地址区域与所述相应装置的标识符相关联;以及
在所述第二时间段期间,使所述虚拟存储器地址区域与所述远程装置的标识符相关联。
17.根据权利要求15所述的计算机系统,其中所述相应装置进一步配置成:
在所述第一时间段期间,使所述虚拟存储器地址区域与所述相应装置的所述本地存储器中的物理存储器地址区域相关联。
18.根据权利要求17所述的计算机系统,其中所述相应装置进一步配置成:
使所述虚拟存储器地址区域与所述相应装置的所述本地存储器中的物理存储器地址区域相关联。
19.根据权利要求17所述的计算机系统,其中所述相应装置进一步配置成:
将所述应用程序的指令复制到所述虚拟存储器地址区域中,其中所述远程装置配置成通过执行从所述虚拟存储器地址区域加载的所述应用程序的所述指令来处理所述数据。
20.根据权利要求15所述的计算机系统,其中所述相应装置进一步配置成:
从所述远程装置接收请求,以在至少所述第一时间段期间处理所述虚拟存储器地址区域中的所述数据;以及
通过从所述虚拟存储器地址区域加载指令来执行所述应用程序。
21.根据权利要求15所述的计算机系统,其中所述计算装置的所述通信装置至少经由第五代蜂窝式网络连接。
CN202080039417.2A 2019-05-28 2020-04-24 基于存储器即服务的分布式计算 Active CN113994313B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/424,424 2019-05-28
US16/424,424 US11061819B2 (en) 2019-05-28 2019-05-28 Distributed computing based on memory as a service
PCT/US2020/029749 WO2020242681A1 (en) 2019-05-28 2020-04-24 Distributed computing based on memory as a service

Publications (2)

Publication Number Publication Date
CN113994313A true CN113994313A (zh) 2022-01-28
CN113994313B CN113994313B (zh) 2023-12-01

Family

ID=73550722

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080039417.2A Active CN113994313B (zh) 2019-05-28 2020-04-24 基于存储器即服务的分布式计算

Country Status (5)

Country Link
US (3) US11061819B2 (zh)
EP (1) EP3977255A4 (zh)
KR (1) KR20220000415A (zh)
CN (1) CN113994313B (zh)
WO (1) WO2020242681A1 (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11169930B2 (en) 2019-05-28 2021-11-09 Micron Technology, Inc. Fine grain data migration to or from borrowed memory
US11061819B2 (en) 2019-05-28 2021-07-13 Micron Technology, Inc. Distributed computing based on memory as a service
CN113094119B (zh) * 2021-04-28 2022-07-12 杭州国芯科技股份有限公司 一种嵌入式设备程序动态加载方法
US20220398199A1 (en) * 2021-06-15 2022-12-15 Vmware, Inc. User-space remote memory paging
US20230025754A1 (en) * 2021-07-22 2023-01-26 Accenture Global Solutions Limited Privacy-preserving machine learning training based on homomorphic encryption using executable file packages in an untrusted environment

Citations (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN86103675A (zh) * 1985-06-28 1986-12-24 惠普公司 虚拟存储系统中的直接输入/输出
US20050256976A1 (en) * 2004-05-17 2005-11-17 Oracle International Corporation Method and system for extended memory with user mode input/output operations
WO2010002411A1 (en) * 2008-07-03 2010-01-07 Hewlett-Packard Development Company, L.P. Memory server
WO2010085256A1 (en) * 2009-01-23 2010-07-29 Hewlett-Packard Development Company, L.P. System and methods for allocating shared storage resources
US20110072234A1 (en) * 2009-09-18 2011-03-24 Chinya Gautham N Providing Hardware Support For Shared Virtual Memory Between Local And Remote Physical Memory
US20140281311A1 (en) * 2013-03-15 2014-09-18 Micron Technology, Inc. Systems and methods for memory system management based on thermal information of a memory system
US20150046661A1 (en) * 2013-08-07 2015-02-12 Qualcomm Incorporated Dynamic Address Negotiation for Shared Memory Regions in Heterogeneous Muliprocessor Systems
CN104995611A (zh) * 2013-01-21 2015-10-21 美光科技公司 用于存取存储器的系统及方法
WO2016064403A1 (en) * 2014-10-23 2016-04-28 Hewlett Packard Enterprise Development Lp Supervisory memory management unit
CN105975413A (zh) * 2015-03-13 2016-09-28 国际商业机器公司 用于迁移虚拟机的rdma存储器映射的控制器和方法
US20160350260A1 (en) * 2015-05-27 2016-12-01 Red Hat Israel, Ltd. Dynamic Non-Uniform Memory Architecture (NUMA) Locality for Remote Direct Memory Access (RDMA) Applications
US20170132172A1 (en) * 2015-06-08 2017-05-11 Excelero Storage Ltd. System and method for providing a client device seamless access to a plurality of remote storage devices presented as a virtual device
US9858199B1 (en) * 2016-03-30 2018-01-02 Amazon Technologies, Inc. Memory management unit for shared memory allocation
CN107710160A (zh) * 2015-07-08 2018-02-16 株式会社日立制作所 计算机和存储区域管理方法
WO2018094620A1 (zh) * 2016-11-23 2018-05-31 华为技术有限公司 一种内存分配方法和设备
DE102018209205A1 (de) * 2017-06-30 2019-01-03 Intel Corporation Datenspeicher mit intelligentem Speicher oder Ladeverfahren und -vorrichtung
US20190018461A1 (en) * 2017-07-14 2019-01-17 Motorola Mobility Llc Virtual Button Movement Based on Device Movement

Family Cites Families (71)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6275911B1 (en) 1996-09-20 2001-08-14 Denso Corporation Memory writing device for an electronic device
US7260635B2 (en) 2000-03-21 2007-08-21 Centrisoft Corporation Software, systems and methods for managing a distributed network
TWI227616B (en) 2001-11-20 2005-02-01 Hitachi Ltd Packet communication device, packet communication system, packet communication module, data processor and data transmission system
US6810472B2 (en) 2002-06-24 2004-10-26 Intel Corporation Page handling efficiency in a multithreaded processor
US6922766B2 (en) 2002-09-04 2005-07-26 Cray Inc. Remote translation mechanism for a multi-node system
US7788669B2 (en) 2003-05-02 2010-08-31 Microsoft Corporation System for isolating first computing environment from second execution environment while sharing resources by copying data from first portion to second portion of memory
JP3892829B2 (ja) 2003-06-27 2007-03-14 株式会社東芝 情報処理システムおよびメモリ管理方法
US7269708B2 (en) 2004-04-20 2007-09-11 Rambus Inc. Memory controller for non-homogenous memory system
JP4857020B2 (ja) 2006-05-08 2012-01-18 株式会社日立製作所 ストレージシステム
JP2007328611A (ja) 2006-06-08 2007-12-20 Hitachi Ltd ストレージ仮想化システム及び方法
JP4842720B2 (ja) 2006-06-29 2011-12-21 株式会社日立製作所 ストレージシステム及びデータ複製方法
US20080000552A1 (en) 2006-06-30 2008-01-03 Letize Raymond A Process for increasing the adhesion of a metal surface to a polymer
US9026742B2 (en) 2007-12-21 2015-05-05 Freescale Semiconductor, Inc. System and method for processing potentially self-inconsistent memory transactions
US7697557B2 (en) 2007-12-26 2010-04-13 Alcatel Lucent Predictive caching content distribution network
US8312230B2 (en) 2008-06-06 2012-11-13 International Business Machines Corporation Dynamic control of partition memory affinity in a shared memory partition data processing system
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
EP2499576A2 (en) * 2009-11-13 2012-09-19 Richard S. Anderson Distributed symmetric multiprocessing computing architecture
EP2569916B1 (en) 2010-05-09 2016-01-20 Citrix Systems Inc. Systems and methods for allocation of classes of service to network connections corresponding to virtual channels
US8738860B1 (en) 2010-10-25 2014-05-27 Tilera Corporation Computing in parallel processing environments
EP2700019B1 (en) 2011-04-19 2019-03-27 Seven Networks, LLC Social caching for device resource sharing and management
WO2012160629A1 (ja) 2011-05-20 2012-11-29 富士通株式会社 データ処理方法
US9110830B2 (en) 2012-01-18 2015-08-18 Qualcomm Incorporated Determining cache hit/miss of aliased addresses in virtually-tagged cache(s), and related systems and methods
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
US9176678B2 (en) 2012-11-30 2015-11-03 International Business Machines Corporation Common contiguous memory region optimized virtual machine migration within a workgroup
WO2014087518A1 (ja) 2012-12-06 2014-06-12 株式会社 日立製作所 ネットワークシステム及びその運用方法
KR101442091B1 (ko) 2012-12-31 2014-09-25 고려대학교 산학협력단 가상화 시스템에서의 메모리 관리 방법
US9158704B2 (en) 2013-01-24 2015-10-13 Wisconsin Alumni Research Foundation Virtual memory management system with reduced latency
US20140280669A1 (en) 2013-03-15 2014-09-18 Microsoft Corporation Memory Sharing Over A Network
CN104426971B (zh) 2013-08-30 2017-11-17 华为技术有限公司 一种远程内存交换分区方法、装置及系统
JP6179321B2 (ja) 2013-09-27 2017-08-16 富士通株式会社 ストレージ管理装置、制御方法及び制御プログラム
US20150098390A1 (en) 2013-10-04 2015-04-09 Vonage Network Llc Prioritization of data traffic between a mobile device and a network access point
US20150170053A1 (en) 2013-12-13 2015-06-18 Microsoft Corporation Personalized machine learning models
US9569115B2 (en) 2014-03-31 2017-02-14 International Business Machines Corporation Transparent code patching
US10331997B2 (en) 2014-05-07 2019-06-25 Seagate Technology Llc Adaptive configuration of a neural network device
US20150324690A1 (en) 2014-05-08 2015-11-12 Microsoft Corporation Deep Learning Training System
US9626108B2 (en) 2014-09-16 2017-04-18 Kove Ip, Llc Dynamically provisionable and allocatable external memory
US10275171B2 (en) 2014-09-16 2019-04-30 Kove Ip, Llc Paging of external memory
KR20160033505A (ko) 2014-09-18 2016-03-28 한국전자통신연구원 원격 메모리 제공 시스템 및 원격 메모리 제공을 위한 임시페이지 풀 운영 방법
JP6394315B2 (ja) 2014-11-20 2018-09-26 富士通株式会社 ストレージ管理装置、性能調整方法及び性能調整プログラム
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
EP3057266A1 (en) 2015-02-11 2016-08-17 Thomson Licensing Distribution of bandwidth in a network
KR101799781B1 (ko) 2015-07-23 2017-11-22 재단법인 강릉과학산업진흥원 소뼈 추출분말의 제조방법
CN111353588B (zh) 2016-01-20 2024-03-05 中科寒武纪科技股份有限公司 用于执行人工神经网络反向训练的装置和方法
CN107025205B (zh) 2016-01-30 2021-06-22 华为技术有限公司 一种分布式系统中的训练模型的方法及设备
US10002029B1 (en) 2016-02-05 2018-06-19 Sas Institute Inc. Automated transfer of neural network definitions among federated areas
US10303646B2 (en) 2016-03-25 2019-05-28 Microsoft Technology Licensing, Llc Memory sharing for working data using RDMA
US10432722B2 (en) 2016-05-06 2019-10-01 Microsoft Technology Licensing, Llc Cloud storage platform providing performance-based service level agreements
KR20170127666A (ko) * 2016-05-12 2017-11-22 한국전자통신연구원 원격 메모리 제공 시스템 및 이의 페이지 폴트 처리 방법
US10509738B2 (en) * 2016-07-01 2019-12-17 Intel Corporation Remote memory operations
US10380342B2 (en) 2016-07-29 2019-08-13 Qualcomm Incorporated Kernel-based detection of target application functionality using virtual address mapping
FR3063361B1 (fr) 2017-02-24 2019-04-19 Moore Procede, equipement et systeme de gestion du systeme de fichiers
US20180322386A1 (en) 2017-05-05 2018-11-08 Intel Corporation Fine-grain compute communication execution for deep learning frameworks
KR102197247B1 (ko) 2017-06-01 2020-12-31 한국전자통신연구원 파라미터 서버 및 그것에 의해 수행되는 분산 딥러닝 파라미터 공유 방법
US11108575B2 (en) 2017-07-26 2021-08-31 Amazon Technologies, Inc. Training models for IOT devices
US20190073580A1 (en) 2017-09-01 2019-03-07 Facebook, Inc. Sparse Neural Network Modeling Infrastructure
US20200401944A1 (en) 2018-04-27 2020-12-24 Sony Corporation Mechanism for machine learning in distributed computing
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
KR102567108B1 (ko) 2018-11-05 2023-08-14 삼성전자주식회사 데이터 스토리지 디바이스 및 데이터 스토리지 시스템
US10776164B2 (en) 2018-11-30 2020-09-15 EMC IP Holding Company LLC Dynamic composition of data pipeline in accelerator-as-a-service computing environment
US11200168B2 (en) 2018-12-10 2021-12-14 International Business Machines Corporation Caching data from remote memories
US11829849B2 (en) 2019-01-09 2023-11-28 Cisco Technology, Inc. Dynamic orchestration of machine learning functions on a distributed network
US20200265301A1 (en) 2019-02-15 2020-08-20 Microsoft Technology Licensing, Llc Incremental training of machine learning tools
US11334387B2 (en) 2019-05-28 2022-05-17 Micron Technology, Inc. Throttle memory as a service based on connectivity bandwidth
US20200379809A1 (en) 2019-05-28 2020-12-03 Micron Technology, Inc. Memory as a Service for Artificial Neural Network (ANN) Applications
US11169930B2 (en) 2019-05-28 2021-11-09 Micron Technology, Inc. Fine grain data migration to or from borrowed memory
US11061819B2 (en) 2019-05-28 2021-07-13 Micron Technology, Inc. Distributed computing based on memory as a service
US11438414B2 (en) 2019-05-28 2022-09-06 Micron Technology, Inc. Inter operating system memory services over communication network connections

Patent Citations (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN86103675A (zh) * 1985-06-28 1986-12-24 惠普公司 虚拟存储系统中的直接输入/输出
US20050256976A1 (en) * 2004-05-17 2005-11-17 Oracle International Corporation Method and system for extended memory with user mode input/output operations
WO2010002411A1 (en) * 2008-07-03 2010-01-07 Hewlett-Packard Development Company, L.P. Memory server
US20110072204A1 (en) * 2008-07-03 2011-03-24 Jichuan Chang Memory server
WO2010085256A1 (en) * 2009-01-23 2010-07-29 Hewlett-Packard Development Company, L.P. System and methods for allocating shared storage resources
US20110072234A1 (en) * 2009-09-18 2011-03-24 Chinya Gautham N Providing Hardware Support For Shared Virtual Memory Between Local And Remote Physical Memory
CN104995611A (zh) * 2013-01-21 2015-10-21 美光科技公司 用于存取存储器的系统及方法
US20140281311A1 (en) * 2013-03-15 2014-09-18 Micron Technology, Inc. Systems and methods for memory system management based on thermal information of a memory system
US20150046661A1 (en) * 2013-08-07 2015-02-12 Qualcomm Incorporated Dynamic Address Negotiation for Shared Memory Regions in Heterogeneous Muliprocessor Systems
WO2016064403A1 (en) * 2014-10-23 2016-04-28 Hewlett Packard Enterprise Development Lp Supervisory memory management unit
CN105975413A (zh) * 2015-03-13 2016-09-28 国际商业机器公司 用于迁移虚拟机的rdma存储器映射的控制器和方法
US20160350260A1 (en) * 2015-05-27 2016-12-01 Red Hat Israel, Ltd. Dynamic Non-Uniform Memory Architecture (NUMA) Locality for Remote Direct Memory Access (RDMA) Applications
US20170132172A1 (en) * 2015-06-08 2017-05-11 Excelero Storage Ltd. System and method for providing a client device seamless access to a plurality of remote storage devices presented as a virtual device
CN107710160A (zh) * 2015-07-08 2018-02-16 株式会社日立制作所 计算机和存储区域管理方法
US9858199B1 (en) * 2016-03-30 2018-01-02 Amazon Technologies, Inc. Memory management unit for shared memory allocation
WO2018094620A1 (zh) * 2016-11-23 2018-05-31 华为技术有限公司 一种内存分配方法和设备
DE102018209205A1 (de) * 2017-06-30 2019-01-03 Intel Corporation Datenspeicher mit intelligentem Speicher oder Ladeverfahren und -vorrichtung
US20190004800A1 (en) * 2017-06-30 2019-01-03 Intel Corporation Smart memory data store or load method and apparatus
CN109213697A (zh) * 2017-06-30 2019-01-15 英特尔公司 智能存储器数据存储或加载方法和装置
US20190018461A1 (en) * 2017-07-14 2019-01-17 Motorola Mobility Llc Virtual Button Movement Based on Device Movement

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
BONGJUN KIM: "Heterogeneous_Distributed_Shared_Memory_for_Lightweight_Internet_of_Things_Devices", IEEE MICRO, pages 16 - 24 *
曾超: "存储即服务在公安行业的应用设想", 信息与电脑, pages 49 - 50 *
陈晨: "一种高性能廉价的网络存储应用方案", 电脑知识与技术, pages 30 - 33 *

Also Published As

Publication number Publication date
WO2020242681A1 (en) 2020-12-03
EP3977255A4 (en) 2023-07-05
KR20220000415A (ko) 2022-01-03
US11954042B2 (en) 2024-04-09
US20230004502A1 (en) 2023-01-05
US11061819B2 (en) 2021-07-13
US11481334B2 (en) 2022-10-25
US20210263856A1 (en) 2021-08-26
EP3977255A1 (en) 2022-04-06
US20200379913A1 (en) 2020-12-03
CN113994313B (zh) 2023-12-01

Similar Documents

Publication Publication Date Title
US11256624B2 (en) Intelligent content migration with borrowed memory
CN112015677B (zh) 实施于计算装置中的方法、计算装置和非暂时性计算机存储介质
US20200379809A1 (en) Memory as a Service for Artificial Neural Network (ANN) Applications
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
US20220417326A1 (en) Inter Operating System Memory Services over Communication Network Connections
US12019549B2 (en) Intelligent content migration with borrowed memory
CN113906384B (zh) 人工神经网络(ann)应用程序中的存储器即服务

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