CN113874825A - 使用借用存储器的智能内容迁移 - Google Patents
使用借用存储器的智能内容迁移 Download PDFInfo
- Publication number
- CN113874825A CN113874825A CN202080038482.3A CN202080038482A CN113874825A CN 113874825 A CN113874825 A CN 113874825A CN 202080038482 A CN202080038482 A CN 202080038482A CN 113874825 A CN113874825 A CN 113874825A
- Authority
- CN
- China
- Prior art keywords
- memory
- computing device
- virtual
- lender
- 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
Links
- 230000015654 memory Effects 0.000 title claims abstract description 1053
- 230000005012 migration Effects 0.000 title claims abstract description 56
- 238000013508 migration Methods 0.000 title claims abstract description 56
- 238000000034 method Methods 0.000 claims abstract description 62
- 238000013528 artificial neural network Methods 0.000 claims abstract description 7
- 238000004891 communication Methods 0.000 claims description 82
- 238000013507 mapping Methods 0.000 claims description 55
- 238000013473 artificial intelligence Methods 0.000 claims description 28
- 230000004044 response Effects 0.000 claims description 16
- 230000008859 change Effects 0.000 claims description 5
- 230000001413 cellular effect Effects 0.000 claims description 4
- 238000004364 calculation method Methods 0.000 claims description 2
- 230000006735 deficit Effects 0.000 claims 1
- 238000003860 storage Methods 0.000 description 50
- 239000003795 chemical substances by application Substances 0.000 description 24
- 239000000872 buffer Substances 0.000 description 21
- 238000013519 translation Methods 0.000 description 20
- 230000014616 translation Effects 0.000 description 20
- 238000012545 processing Methods 0.000 description 15
- 230000002093 peripheral effect Effects 0.000 description 7
- 230000008569 process Effects 0.000 description 6
- 238000012546 transfer Methods 0.000 description 6
- 230000003313 weakening effect Effects 0.000 description 6
- 230000001133 acceleration Effects 0.000 description 5
- 230000015556 catabolic process Effects 0.000 description 5
- 238000006731 degradation reaction Methods 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000010267 cellular communication Effects 0.000 description 3
- 230000007423 decrease Effects 0.000 description 3
- 238000000605 extraction Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 231100001261 hazardous Toxicity 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000002085 persistent effect Effects 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 241000699666 Mus <mouse, genus> Species 0.000 description 1
- 241000699670 Mus sp. Species 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 239000004035 construction material Substances 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 238000005096 rolling process Methods 0.000 description 1
- 239000004984 smart glass Substances 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2053—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
- G06F11/2094—Redundant storage or storage space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0837—Cache consistency protocols with software control, e.g. non-cacheable data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1448—Management of the data involved in backup or backup restore
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0615—Address space extension
- G06F12/063—Address space extension for I/O modules, e.g. memory mapped I/O
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1036—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1072—Decentralised address translation, e.g. in distributed shared memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/382—Information transfer, e.g. on bus using universal interface adapter
- G06F13/385—Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/126—Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1028—Power efficiency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/15—Use in a specific computing environment
- G06F2212/152—Virtualized environment, e.g. logically partitioned system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/15—Use in a specific computing environment
- G06F2212/154—Networked environment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6032—Way prediction in set-associative cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/657—Virtual address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
描述用以智能地迁移涉及借用存储器的内容的系统、方法和设备。举例来说,在预测在此期间具有借用存储器的计算装置之间的网络连接减弱的时间段之后,所述计算装置可至少部分地基于内容的预测的使用、调度操作、预测的操作、电池电平等对虚拟存储器地址区域的内容做出迁移决策。可使用人工神经网络基于存储器使用历史、电池使用历史、位置历史等做出所述迁移决策;且可通过在所述计算装置的存储器映射中重新映射虚拟存储器区域来执行内容迁移。
Description
相关申请案
本申请案要求2019年5月28日提交的且名称为“使用借用存储器的智能内容迁移(INTELLIGENT CONTENT MIGRATION WITH BORROWED MEMORY)”的美国专利申请案序列号16/424,421的优先权,其全部公开内容特此以引用的方式并入本文中。
技术领域
本文中所公开的至少一些实施例涉及由操作系统提供的存储器服务。
背景技术
在一些计算机系统中,操作系统允许应用程序使用存储器的虚拟地址以将数据存储在计算机系统的一个或多个存储器子系统的存储器组件中或从所述存储器组件检索数据。操作系统限定连接到计算机系统的中央处理单元(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展示根据一些实施例的在具有借用存储器的计算系统中迁移内容的方法。
具体实施方式
本文中所公开的至少一些实施例提供经由通信网络连接的操作系统间存储器服务的技术,使得借用方装置可通过使用通信链路和出借方装置的存储器来扩展其存储器容量。借用方装置和/或出借方装置的操作系统可配置成无缝桥梁通信链路上的间隙,使得在借用方装置上运行的应用程序可无区别地使用其本地存储器及借用存储器。本地存储器物理地安装于借用方装置中,且借用存储器物理地安装于出借方装置中,所述出借方装置经由通信连接连接到借用方装置。
任选地,借用存储器的一部分和/或借用方装置中的本地存储器可经由计算机网络借出给另一装置。借用方装置可具有多个出借方装置。因此,可在装置之间的通信链路的层次结构上形成借用方-出借方装置层次结构。
借用方装置的操作系统可使用虚拟到物理存储器映射以桥梁本地存储器与借用存储器中的差异。举例来说,借用方装置的操作系统可响应于借用方装置的转换后备缓冲器(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)执行计算。
一般来说,上文所论述的装置或服务器中的每一个(例如,101、103、105、107、201、203)可实施为一个或多个数据处理系统。
典型数据处理系统可包含互连件(例如总线和系统核心逻辑),其互连微处理器和存储器。微处理器也可具有管芯上高速缓存层次结构。
互连件将微处理器和存储器互连在一起并且还将其经由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.根据权利要求3所述的方法,其中:
当将所述第一虚拟存储器地址区域映射到所述第一计算装置的所述本地存储器中时,所述第一计算装置的所述存储器映射将所述第一虚拟存储器地址区域映射到所述第一计算装置的所述本地存储器中的第一物理存储器地址区域;且
当将所述第一虚拟存储器地址区域映射到所述第二计算装置的所述本地存储器中时,所述第二计算装置的所述存储器映射将所述第一虚拟存储器地址区域映射到所述第二计算装置的所述本地存储器中的第二物理存储器地址区域;且
其中所述通信包含将所述内容从所述第二计算装置的所述本地存储器中的所述第二物理存储器地址区域传递到所述第一计算装置的所述本地存储器中的所述第一物理存储器地址区域。
6.根据权利要求5所述的方法,其中在将所述第一虚拟存储器地址区域映射到所述第一计算装置的所述本地存储器中之后,所述第二计算装置配置所述第二计算装置中的所述第二物理存储器地址区域以存储所述第一虚拟存储器地址区域的所述内容的高速缓存、镜像或备份副本。
7.根据权利要求3所述的方法,其中所述迁移决策至少部分地基于所述第一计算装置的预测位置。
8.根据权利要求3所述的方法,其中所述迁移决策至少部分地基于所述第一计算装置的调度操作;且所述内容包含用于所述调度操作的软件或数据。
9.根据权利要求3所述的方法,其中所述迁移决策至少部分地基于存储在虚拟存储器地址的部分中的人工神经网络;所述第一计算装置使用所述虚拟存储器地址的所述部分以为所述人工神经网络提供数据;且所述第二计算装置使用所述虚拟存储器地址的所述部分以针对迁移决策执行计算。
10.根据权利要求1所述的方法,其进一步包括:
确定所述第一计算装置的电池功率电平;以及
响应于确定所述电池功率电平低于阈值:
标识第二虚拟存储器地址区域,其中将所述第二虚拟存储器地址区域映射到所述第一计算装置的所述本地存储器中;
将所述第二虚拟存储器地址区域的内容从所述第一计算装置的所述本地存储器传输到所述第二计算装置的所述本地存储器中。
11.根据权利要求10所述的方法,其中所述传输所述第二虚拟存储器地址区域的所述内容包含:
通过将所述第二虚拟存储器地址区域映射到所述第二计算装置的所述本地存储器中的物理存储器地址区域来改变所述第二虚拟存储器地址区域的存储器映射。
12.一种计算装置,其包括:
至少一个微处理器;
本地随机存取存储器;以及
通信装置;
其中所述计算装置配置成:
经由通过所述通信装置建立的有线或无线网络连接存取出借方装置的本地存储器的部分;
预测在此期间所述网络连接减弱的时间段;以及
在所述时间段之前,经由所述有线或无线网络连接,经由所述出借方装置处的所述本地存储器的所述部分将内容迁移到所述计算装置或从所述计算装置迁移内容。
13.根据权利要求12所述的计算装置,其中所述计算装置包含人工智能引擎,所述人工智能引擎配置成基于存储器使用历史数据、位置历史数据、操作调度数据或电池功率电平数据或其任何组合来做出内容迁移决策。
14.根据权利要求12所述的计算装置,其中所述计算装置配置成经由所述有线或无线网络连接经由所述出借方装置处的本地存储器的所述部分为所述出借方装置提供关于所述计算装置的数据;关于所述计算装置的所述数据包含存储器使用历史数据、位置历史数据、操作调度数据或电池功率电平数据或其任何组合;且所述出借方装置包括配置成基于所述数据做出内容迁移决策的人工智能引擎。
15.根据权利要求12所述的计算装置,其中所述计算装置进一步配置成将具有所述内容的虚拟地址区域从托管在所述出借方装置的所述本地存储器的所述部分中改变为托管在所述计算装置中。
16.根据权利要求12所述的计算装置,其中所述计算装置进一步配置成将具有所述内容的虚拟地址区域从托管在所述计算装置中改变为托管在所述出借方装置的所述本地存储器的所述部分中。
17.一种计算系统,其包括:
第一装置,其具有本地存储器;以及
第二装置,其具有本地存储器且经由有线或无线网络连接连接到所述第一装置;
其中所述第一装置配置成存取所述第二装置的所述本地存储器的部分,且基于部分映射到所述第一装置的所述本地存储器和部分映射到所述第二装置的所述本地存储器的所述部分的虚拟存储器地址提供存储器资源;
其中所述计算系统配置成预测在此期间所述有线或无线网络连接减弱的时间段;且
其中所述计算系统配置成基于预测到所述有线或无线网络连接中的减弱的所述时间段,在所述时间段之前迁移内容。
18.根据权利要求17所述的计算装置,其中所述第一装置配置成通过将所述数据的所述部分储存在所述第二装置处的所述本地存储器的所述部分中来提供用于对所述内容做出迁移决策的数据的至少一部分;且其中所述数据包含存储器使用历史数据、位置历史数据、操作调度数据或电池功率电平数据或其任何组合。
19.根据权利要求18所述的计算装置,其中所述第一装置包含配置成人工智能代理,所述人工智能代理做出所述迁移决策。
20.根据权利要求18所述的计算装置,其中所述第一装置包含人工智能代理,所述人工智能代理配置成在所述第一装置中运行,以提供用于进行所述迁移装置的所述数据的所述部分,且在所述第二装置中运行以做出所述迁移决策。
21.根据权利要求18所述的计算装置,其中所述第二装置至少经由第五代蜂窝式网络连接到所述第一装置。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/424,421 US11256624B2 (en) | 2019-05-28 | 2019-05-28 | Intelligent content migration with borrowed memory |
US16/424,421 | 2019-05-28 | ||
PCT/US2020/029751 WO2020242682A1 (en) | 2019-05-28 | 2020-04-24 | Intelligent content migration with borrowed memory |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113874825A true CN113874825A (zh) | 2021-12-31 |
CN113874825B CN113874825B (zh) | 2024-08-06 |
Family
ID=73549470
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080038482.3A Active CN113874825B (zh) | 2019-05-28 | 2020-04-24 | 使用借用存储器的智能内容迁移 |
Country Status (5)
Country | Link |
---|---|
US (3) | US11256624B2 (zh) |
KR (1) | KR102704027B1 (zh) |
CN (1) | CN113874825B (zh) |
DE (1) | DE112020002562T5 (zh) |
WO (1) | WO2020242682A1 (zh) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
US11775816B2 (en) | 2019-08-12 | 2023-10-03 | Micron Technology, Inc. | Storage and access of neural network outputs in automotive predictive maintenance |
US11853863B2 (en) | 2019-08-12 | 2023-12-26 | Micron Technology, Inc. | Predictive maintenance of automotive tires |
US11748626B2 (en) | 2019-08-12 | 2023-09-05 | Micron Technology, Inc. | Storage devices with neural network accelerators for automotive predictive maintenance |
US12061971B2 (en) | 2019-08-12 | 2024-08-13 | Micron Technology, Inc. | Predictive maintenance of automotive engines |
US11650746B2 (en) | 2019-09-05 | 2023-05-16 | Micron Technology, Inc. | Intelligent write-amplification reduction for data storage devices configured on autonomous vehicles |
US11693562B2 (en) | 2019-09-05 | 2023-07-04 | Micron Technology, Inc. | Bandwidth optimization for different types of operations scheduled in a data storage device |
US11250648B2 (en) | 2019-12-18 | 2022-02-15 | Micron Technology, Inc. | Predictive maintenance of automotive transmission |
US11709625B2 (en) * | 2020-02-14 | 2023-07-25 | Micron Technology, Inc. | Optimization of power usage of data storage devices |
US11429590B2 (en) | 2020-10-15 | 2022-08-30 | International Business Machines Corporation | Protecting against invalid memory references |
US11983532B2 (en) | 2020-12-30 | 2024-05-14 | International Business Machines Corporation | Optimize bound information accesses in buffer protection |
US11966331B2 (en) | 2020-12-30 | 2024-04-23 | International Business Machines Corporation | Dedicated bound information register file for protecting against out-of-bounds memory references |
WO2023055462A1 (en) * | 2021-09-30 | 2023-04-06 | Micron Technology, Inc. | Delta predictions for page scheduling |
CN114490566B (zh) * | 2021-12-10 | 2024-01-30 | 苏州浪潮智能科技有限公司 | 集群数据迁移方法、装置、计算机设备及存储介质 |
KR102483361B1 (ko) | 2022-02-28 | 2022-12-30 | 주식회사 디노아이티 | PaaS 지능형 마이그레이션 시스템 및 그 방법 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040044872A1 (en) * | 2002-09-04 | 2004-03-04 | Cray Inc. | Remote translation mechanism for a multi-node system |
US7434002B1 (en) * | 2006-04-24 | 2008-10-07 | Vmware, Inc. | Utilizing cache information to manage memory access and cache utilization |
US20090168795A1 (en) * | 2007-12-26 | 2009-07-02 | Alcatel Lucent | Predictive caching content distribution network |
US20110145360A1 (en) * | 2009-12-14 | 2011-06-16 | Samsung Electronics Co., Ltd. | Web application script migration |
US20120023223A1 (en) * | 2010-07-26 | 2012-01-26 | International Business Machines Corporation | Predictive context-based virtual workspace placement |
US20150381525A1 (en) * | 2014-06-30 | 2015-12-31 | Emc Corporation | Application and information movement in a cloud environment |
CN105975413A (zh) * | 2015-03-13 | 2016-09-28 | 国际商业机器公司 | 用于迁移虚拟机的rdma存储器映射的控制器和方法 |
US20170270450A1 (en) * | 2016-03-17 | 2017-09-21 | International Business Machines Corporation | Hybrid cloud operation planning and optimization |
Family Cites Families (83)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5802292A (en) * | 1995-04-28 | 1998-09-01 | Digital Equipment Corporation | Method for predictive prefetching of information over a communications network |
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 |
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 |
US8019811B1 (en) * | 2006-04-06 | 2011-09-13 | Versata Development Group, Inc. | Application state server-side cache for a state-based client-server application |
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 |
US20080080526A1 (en) | 2006-09-28 | 2008-04-03 | Microsoft Corporation | Migrating data to new cloud |
US9026742B2 (en) | 2007-12-21 | 2015-05-05 | Freescale Semiconductor, Inc. | System and method for processing potentially self-inconsistent memory transactions |
US8166254B2 (en) | 2008-06-06 | 2012-04-24 | International Business Machines Corporation | Hypervisor page fault processing in a shared memory partition data processing system |
US9361229B2 (en) * | 2008-08-25 | 2016-06-07 | International Business Machines Corporation | Distributed shared caching for clustered file systems |
US8918566B2 (en) | 2009-01-23 | 2014-12-23 | Hewlett-Packard Development Company, L. P. | System and methods for allocating shared storage resources |
US8301717B2 (en) | 2009-06-09 | 2012-10-30 | Deshpande Enterprises, Inc. | Extended virtual memory system and method in a computer cluster |
US8719547B2 (en) | 2009-09-18 | 2014-05-06 | Intel Corporation | Providing hardware support for shared virtual memory between local and remote physical memory |
US9063769B2 (en) | 2010-02-04 | 2015-06-23 | Telefonaktiebolaget Lm Ericsson (Publ) | Network performance monitor for virtual machines |
US9288137B2 (en) | 2010-05-09 | 2016-03-15 | 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 |
US20120271903A1 (en) | 2011-04-19 | 2012-10-25 | Michael Luna | Shared resource and virtual resource management in a networked environment |
WO2012160629A1 (ja) | 2011-05-20 | 2012-11-29 | 富士通株式会社 | データ処理方法 |
CN103765409A (zh) * | 2011-09-06 | 2014-04-30 | 英特尔公司 | 有功率效率的处理器体系结构 |
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 |
US8793373B2 (en) | 2012-12-06 | 2014-07-29 | Hitachi, Ltd. | Network system and method for operating the same |
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 |
US20140379835A1 (en) * | 2013-06-21 | 2014-12-25 | Jeffrey R. Foerster | Predictive pre-caching of content |
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 | 富士通株式会社 | ストレージ管理装置、制御方法及び制御プログラム |
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 |
US20150200872A1 (en) * | 2014-01-13 | 2015-07-16 | Cisco Technology, Inc. | Cloud resource placement based on stochastic analysis of service requests |
US20150234669A1 (en) | 2014-02-17 | 2015-08-20 | Strato Scale Ltd. | Memory resource sharing among multiple compute nodes |
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 |
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 |
US9973448B2 (en) * | 2015-02-25 | 2018-05-15 | At&T Mobility Ii Llc | Predictive cached buffer for communication devices |
US9336483B1 (en) | 2015-04-03 | 2016-05-10 | Pearson Education, Inc. | Dynamically updated neural network structures for content distribution networks |
US10341891B2 (en) * | 2015-07-02 | 2019-07-02 | Nokia Technologies Oy | User equipment adaptation of reporting triggers based on active set size |
CN110135581B (zh) | 2016-01-20 | 2020-11-06 | 中科寒武纪科技股份有限公司 | 用于执行人工神经网络反向运算的装置和方法 |
CN107025205B (zh) | 2016-01-30 | 2021-06-22 | 华为技术有限公司 | 一种分布式系统中的训练模型的方法及设备 |
US10095552B2 (en) | 2016-02-05 | 2018-10-09 | Sas Institute Inc. | Automated transfer of objects among federated areas |
US10257305B2 (en) * | 2016-02-08 | 2019-04-09 | International Business Machines Corporation | Preemptive content distribution |
US10135701B2 (en) | 2016-02-19 | 2018-11-20 | At&T Intellectual Property I, L.P. | Context-aware virtualized control decision support system for providing quality of experience assurance for internet protocol streaming video services |
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 |
US20170351639A1 (en) * | 2016-06-06 | 2017-12-07 | Cisco Technology, Inc. | Remote memory access using memory mapped addressing among multiple compute nodes |
FR3063361B1 (fr) | 2017-02-24 | 2019-04-19 | Moore | Procede, equipement et systeme de gestion du systeme de fichiers |
US10417734B2 (en) | 2017-04-24 | 2019-09-17 | Intel Corporation | Compute optimization mechanism for deep neural networks |
US10410098B2 (en) | 2017-04-24 | 2019-09-10 | Intel Corporation | Compute optimizations for neural networks |
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 | 한국전자통신연구원 | 파라미터 서버 및 그것에 의해 수행되는 분산 딥러닝 파라미터 공유 방법 |
US11216306B2 (en) * | 2017-06-29 | 2022-01-04 | Intel Corporation | Technologies for dynamically sharing remote resources across remote computing nodes |
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 |
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 |
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 |
US11256624B2 (en) | 2019-05-28 | 2022-02-22 | Micron Technology, Inc. | Intelligent content migration with borrowed memory |
-
2019
- 2019-05-28 US US16/424,421 patent/US11256624B2/en active Active
-
2020
- 2020-04-24 DE DE112020002562.4T patent/DE112020002562T5/de active Pending
- 2020-04-24 KR KR1020217042277A patent/KR102704027B1/ko active IP Right Grant
- 2020-04-24 WO PCT/US2020/029751 patent/WO2020242682A1/en active Application Filing
- 2020-04-24 CN CN202080038482.3A patent/CN113874825B/zh active Active
-
2022
- 2022-01-12 US US17/573,938 patent/US12019549B2/en active Active
-
2024
- 2024-06-21 US US18/751,020 patent/US20240345957A1/en active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040044872A1 (en) * | 2002-09-04 | 2004-03-04 | Cray Inc. | Remote translation mechanism for a multi-node system |
US7434002B1 (en) * | 2006-04-24 | 2008-10-07 | Vmware, Inc. | Utilizing cache information to manage memory access and cache utilization |
US20090168795A1 (en) * | 2007-12-26 | 2009-07-02 | Alcatel Lucent | Predictive caching content distribution network |
US20110145360A1 (en) * | 2009-12-14 | 2011-06-16 | Samsung Electronics Co., Ltd. | Web application script migration |
US20120023223A1 (en) * | 2010-07-26 | 2012-01-26 | International Business Machines Corporation | Predictive context-based virtual workspace placement |
US20150381525A1 (en) * | 2014-06-30 | 2015-12-31 | Emc Corporation | Application and information movement in a cloud environment |
CN105975413A (zh) * | 2015-03-13 | 2016-09-28 | 国际商业机器公司 | 用于迁移虚拟机的rdma存储器映射的控制器和方法 |
US20170270450A1 (en) * | 2016-03-17 | 2017-09-21 | International Business Machines Corporation | Hybrid cloud operation planning and optimization |
Also Published As
Publication number | Publication date |
---|---|
KR102704027B1 (ko) | 2024-09-09 |
WO2020242682A1 (en) | 2020-12-03 |
CN113874825B (zh) | 2024-08-06 |
US12019549B2 (en) | 2024-06-25 |
US20220138102A1 (en) | 2022-05-05 |
US20200379908A1 (en) | 2020-12-03 |
DE112020002562T5 (de) | 2022-03-03 |
KR20210158430A (ko) | 2021-12-30 |
US11256624B2 (en) | 2022-02-22 |
US20240345957A1 (en) | 2024-10-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113874825B (zh) | 使用借用存储器的智能内容迁移 | |
CN113906384B (zh) | 人工神经网络(ann)应用程序中的存储器即服务 | |
CN112015677B (zh) | 实施于计算装置中的方法、计算装置和非暂时性计算机存储介质 | |
CN113994313B (zh) | 基于存储器即服务的分布式计算 | |
CN113906399B (zh) | 基于连接带宽节制存储器即服务 | |
US11657002B2 (en) | Memory management unit (MMU) for accessing borrowed memory | |
US20220417326A1 (en) | Inter Operating System Memory Services over Communication Network Connections |
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 |