CN113906399A - 基于连接带宽节制存储器即服务 - Google Patents
基于连接带宽节制存储器即服务 Download PDFInfo
- Publication number
- CN113906399A CN113906399A CN202080038839.8A CN202080038839A CN113906399A CN 113906399 A CN113906399 A CN 113906399A CN 202080038839 A CN202080038839 A CN 202080038839A CN 113906399 A CN113906399 A CN 113906399A
- Authority
- CN
- China
- Prior art keywords
- memory
- content
- virtual
- computing device
- lender
- 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 648
- 238000004891 communication Methods 0.000 claims abstract description 69
- 238000000034 method Methods 0.000 claims abstract description 44
- 238000003860 storage Methods 0.000 claims description 23
- 230000015556 catabolic process Effects 0.000 claims description 8
- 238000006731 degradation reaction Methods 0.000 claims description 8
- 230000001413 cellular effect Effects 0.000 claims description 3
- 238000009826 distribution Methods 0.000 claims description 2
- 238000013507 mapping Methods 0.000 description 21
- 238000012545 processing Methods 0.000 description 15
- 238000013519 translation Methods 0.000 description 10
- 230000014616 translation Effects 0.000 description 10
- 238000013508 migration Methods 0.000 description 9
- 230000005012 migration Effects 0.000 description 9
- 239000000872 buffer Substances 0.000 description 8
- 238000012546 transfer Methods 0.000 description 6
- 230000002093 peripheral effect Effects 0.000 description 5
- 230000004044 response Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000010267 cellular communication Effects 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000000605 extraction Methods 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
- 241000699666 Mus <mouse, genus> Species 0.000 description 1
- 241000699670 Mus sp. Species 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 239000004035 construction material Substances 0.000 description 1
- 230000000593 degrading effect Effects 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 230000014509 gene expression 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
- 230000006855 networking Effects 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 239000004984 smart glass Substances 0.000 description 1
- 239000007787 solid 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
- 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/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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0284—Multiple user address space allocation, e.g. using different base addresses
-
- 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]
- 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
- 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
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1652—Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
- G06F13/1663—Access to shared memory
-
- 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/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- 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/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- 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/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5022—Mechanisms to release resources
-
- 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
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- 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
- G06N3/04—Architecture, e.g. interconnection topology
-
- 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
- G06N3/08—Learning methods
- G06N3/09—Supervised learning
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0896—Bandwidth or capacity management, i.e. automatically increasing or decreasing capacities
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9063—Intermediate storage in different physical parts of a node or terminal
- H04L49/9078—Intermediate storage in different physical parts of a node or terminal using an external memory or storage device
-
- 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/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/50—Control mechanisms for virtual memory, cache or TLB
- G06F2212/502—Control mechanisms for virtual memory, cache or TLB using adaptive policy
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Health & Medical Sciences (AREA)
- Mathematical Physics (AREA)
- General Health & Medical Sciences (AREA)
- Data Mining & Analysis (AREA)
- Molecular Biology (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Artificial Intelligence (AREA)
- Life Sciences & Earth Sciences (AREA)
- Computing Systems (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Business, Economics & Management (AREA)
- Tourism & Hospitality (AREA)
- Computer Security & Cryptography (AREA)
- Economics (AREA)
- Human Resources & Organizations (AREA)
- Marketing (AREA)
- Primary Health Care (AREA)
- Strategic Management (AREA)
- General Business, Economics & Management (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
描述用于节制存储器即服务的网络通信的系统、方法和设备。举例来说,计算装置可通过出借方装置与所述计算装置之间的通信连接借用所述出借方装置的一定量的随机存取存储器。所述计算装置可将虚拟存储器分配到在所述计算装置中运行的应用程序,且将所述虚拟存储器的至少一部分配置为托管于由所述出借方装置借出给所述计算装置的所述量的存储器上。所述计算装置可根据存储在存储器区中的内容的关键度级别而在通过所述通信连接存取所述量的存储器时节制由所述存储器区使用的数据通信。
Description
相关申请
本申请案要求2019年5月28日提交且名称为“基于连接带宽节制存储器即服务(THROTTLE MEMORY AS A SERVICE BASED ON CONNECTIVITY BANDWIDTH)”的美国专利申请案第16/424,413号的优先权,所述申请案的全部公开内容在此以引用的方式并入本文中。
技术领域
本文中所公开的至少一些实施例涉及由操作系统提供的存储器服务。
背景技术
在一些计算机系统中,操作系统允许应用程序使用存储器的虚拟地址来将数据存储在计算机系统的一或多个存储器子系统的存储器组件中或从所述存储器组件检索数据。操作系统限定连接到计算机系统的中央处理单元(CPU)和/或图形处理单元(GPU)和/或芯片上系统(SoC)的一或多个存储器子系统的虚拟存储器地址与物理存储器地址之间的映射。这种映射可通过使用页表来限定。页表条目指定虚拟存储器页的虚拟存储器地址集合与物理存储器页的对应物理存储器地址集合之间的映射。页表可用于通过将虚拟存储器地址转换成存储器子系统的对应物理存储器地址来实施对虚拟存储器地址所请求的存储器存取。
计算机处理器可具有存储器管理单元(MMU),其配置成根据由操作系统限定的页表执行虚拟存储器地址到物理存储器地址的转换。存储器管理单元(MMU)可具有配置成高速缓存最近使用的页表条目的转换后备缓冲器(TLB)。存储器管理单元(MMU)可执行其它存储器相关任务,例如高速缓存控制和/或存储器保护。
一般来说,计算机中的存储器的虚拟地址空间可划分为预定大小的页。虚拟存储器的页由虚拟存储器地址的集合表示;虚拟存储器地址可映射到存储器子系统中的物理存储器的页的物理存储器地址;页表条目限定虚拟存储器的页与物理存储器的页之间的地址映射。
在一些计算机系统中,操作系统可使用寻呼技术来经由存储器模块中的存储器页存取存储或存储器装置中的数据页。在不同时间实例处,存储器模块中的相同存储器页可用作存取存储或存储器装置或计算机系统中的另一存储或存储器装置中的不同存储器页的代理。
远程直接存储器存取(RDMA)为允许从一个计算机到另一计算机的直接存储器存取而不涉及所涉及计算机的操作系统中的任一个(例如,在执行操作系统以协商及设置用于RDMA操作的存储器资源之后)的技术。在RDMA操作(例如,读取或写入)之前,执行命令以经由一或多个联网装置在两个计算机之间建立存储器映射。当在计算机上运行的应用程序执行RDMA操作时,跨越计算机网络直接递送应用程序数据,从而减少时延且实现快速数据传送。RDMA使用网络适配器将数据传送到应用程序存储器或从应用程序存储器传送数据,从而消除在操作系统中的应用程序存储器与数据缓冲器之间复制数据的需要。
附图说明
实施例是借助于实例而非限制在附图的图中来说明的,在附图中,相似编号指示类似元件。
图1展示其中计算装置或服务器计算机可从另一计算装置和/或另一服务器计算机借用存储器和/或将存储器借给另一计算装置和/或另一服务器计算机的系统。
图2说明根据一个实施例的通过通信网络连接实施操作系统间存储器服务的借用方装置和出借方装置。
图3说明根据一个实施例的使用所借用存储器的技术。
图4说明根据一个实施例的用以促进对不同所借用存储器区的存取的物理存储器区的使用。
图5说明根据一个实施例的用以促进对不同所借用存储器区的存取的物理存储器区的另一使用。
图6说明计算系统中的借用方-出借方存储器层次结构。
图7展示通过通信网络连接实施操作系统间存储器服务的方法。
图8展示根据一个实施例的服务所借用存储器的页的方法。
图9展示具有不同关键度级别的存储器区的借用方装置,可基于所述关键度级别节制存储器即服务的网络流量。
图10说明根据一个实施例的标记存储器映射中的存储器区的关键度级别。
图11说明根据一个实施例的识别存储器区的关键度级别的方法。
图12展示根据一个实施例的节制存储器即服务的网络通信的方法。
具体实施方式
本文中所公开的至少一些实施例提供通过通信网络连接的操作系统间存储器服务的技术,使得借用方装置可通过使用通信链路和出借方装置的存储器来扩展其存储器容量。借用方装置和/或出借方装置的操作系统可配置成无缝地桥接通信链路上的间隙,使得在借用方装置上运行的应用程序可无区别地使用其本地存储器和所借用存储器。本地存储器物理地安装在借用方装置中,且所借用存储器物理地安装在出借方装置中,所述出借方装置经由通信连接连接到借用方装置。
任选地,所借用存储器的一部分和/或借用方装置中的本地存储器可通过计算机网络借出给另一装置。借用方装置可具有多个出借方装置。因此,可在装置之中的通信链路的层次结构上形成借用方-出借方装置层次结构。
借用方装置的操作系统可使用虚拟到物理存储器映射来桥接本地存储器与所借用存储器中的差异。举例来说,借用方装置的操作系统可响应于借用方装置的转换后备缓冲器(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说明经由局域网、广域网和/或例如第五代蜂窝式网络的蜂窝式通信网络的通过例如有线或无线连接(205)的通信网络连接实施操作系统间存储器服务的借用方装置(201)和出借方装置(203)。
在图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)中,所述存储装置(234)经由外围总线和/或装置控制器耦合到出借方装置(203)的处理器(235)。举例来说,以与将存储器资源作为虚拟存储器分配到在出借方装置(203)上运行的应用程序(例如,232)类似的方式,出借方装置(203)的操作系统(233)可将其存储器资源的一部分作为虚拟存储器分配到借用方装置(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将存储器映射(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在由硬件块MMU 216、处理器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)中,以促进虚拟页的地址与出借方装置(203)的处理器的借出的存储器(202)的物理地址之间的转换,从而代表借用方装置(201)执行计算。任选地,出借方装置(203)可包含与存储器管理单元(236)类似的硬件,以促进使用存储器映射(227)的出借方装置(203)与借用方装置(201)之间的优化和/或加速的数据传送,所述存储器映射识别如借用方装置(201)已知的所借用存储器(204)与在出借方装置(203)中物理地可存取的借出的存储器(202)之间的映射。
图3说明根据一个实施例的实施所借用存储器的技术。举例来说,图3的技术可在图2中所说明的借用方装置(201)中实施。
图3说明:存储器(211);存储器管理单元(MMU)(216),其配置成使用物理地址(例如,257)存取存储器(211);以及存储器映射(207),其定义虚拟地址区(例如,261、263、265、…)与地址区之间的映射,其中虚拟存储器区映射到例如物理地址区(例如,281、283、…)和所借用存储器区(例如,273、275、…)。
举例来说,所借用存储器地址区(例如,273、…、275)可配置成将由出借方装置(203)分配的虚拟地址区识别为提供/借出到所借用装置(201)的存储器。
举例来说,虚拟地址区A(261)与存储器映射(207)中的物理地址区(281)相关联,以指示虚拟存储器的区当前直接映射到本地物理存储器(211)的对应区。
举例来说,在存储器映射(207)中,虚拟地址区B(263)与所借用存储器地址区X(273)和物理地址区S(283)相关联,以指示虚拟地址区B(263)映射到所借用存储器地址区X(273)且物理地驻存在物理地址区S(283)中。因此,可通过存取本地存储器(211)中的物理地址区S(283)来满足对虚拟地址区B(263)的存取。在存储器映射(207)中,虚拟地址区C(265)与所借用存储器地址区Y(275)相关联,且不与存储器映射(207)中的任何物理地址区相关联。因此,为了存取虚拟地址区C(265),借用方装置需要与出借方装置通信。
可将物理地址区S(283)中的内容逐出到出借方装置,以释放物理地址区S(283)。一旦物理地址区S(283)释放,其便可用于物理放置另一所借用存储器地址区,例如所借用存储器地址区Y(275)。一旦所借用存储器地址区Y(275)的内容从出借方装置迁移到借用方装置到达物理地址区S(283),物理地址区S(283)便可用于提供对虚拟地址区C(265)的存取,所述虚拟地址区C映射到统一地址空间的所借用存储器地址区Y(275)且物理地位于借用方装置的物理地址区S(283)中,如图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)的信息。可经由出借方装置(203)的操作系统(233)在所述出借方装置中处理使用物理地址(257)且经由通信装置(217)进行的存储器存取请求。替代地,通信装置(237)和/或存储器管理单元(MMS)(236)可配置成在不执行操作系统(233)的情况下(例如,基于高速缓存于出借方装置(203)的MMS(236)的TLB中的虚拟到物理存储器映射或配置于出借方装置(203)中的硬件加速组件)处理对借出的存储器(202)的这种存取请求(例如,用于读取或写入)以执行类似操作。
虚拟到物理存储器映射(253)可以页表条目的形式实施。
图6说明计算系统中的借用方-出借方存储器层次结构。
在图6中,出借方装置(203)可以与图2中的借用方装置(201)从出借方装置(203)借用存储器类似的方式从一或多个出借方服务器(245)借用存储器。出借方装置(203)将其本地物理存储器(例如,图2中所说明的231)中的至少一些的和/或其从出借方服务器(例如,245)借用的存储器中的一些汇集为借出给借用方装置(201)的可用存储器(239)。一或多个借用方装置(201)可从出借方装置(203)借用存储器。
典型的借用方存储器(204)可具有多个所借用存储器区(295、297、…、299)和多个本地存储器区(291、293、…)。可经由从出借方装置的借出的存储器到借用方装置的本地存储器区(291、293、…)的迁移来存取借用方装置(201)中的所借用存储器区(295、297、…、299)。当所借用存储器区(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中,可分别用关键度级别(401、403、…、405)标记所借用存储器(204)中的存储器区(295、297、…、299)。关键度级别(401、403、…、405)对存储器区(295、297、…、299)之中的相对优先级进行排序。可根据关键度级别(401、403、…、405)分配用于借用方装置(201)与其出借方装置(例如,203)之间的通信的网络带宽。
举例来说,当需要将多个区(例如,295、297)从出借方装置(203)迁移到借用方装置(201)时,区(例如,295、297)可根据其关键度级别(例如,401、403)按次序迁移。在这种布置中,对高关键度级别的存储器区的重复请求可无限地延迟对低关键度的存储器区的存取。
替代地,可在不同关键度级别的多个区(例如,295、297)之中共享带宽。举例来说,可根据基于存储器区的关键度级别确定的比率来分配在给定时间段内允许用于不同区的网络连接(205)上的数据通信量。因此,提取低关键度级别的存储器页的内容将比提取高关键度级别的存储器页的内容花费更长时间。然而,低关键度页的提取不会被高关键度页的提取完全阻止。此外,可基于总体可用带宽来调整比率,使得当总体可用带宽降级时,存取高关键度页的性能降级的严重程度可低于低关键度页。因此,可经由选择性地降级较不关键方面的存取速度来优化在借用方装置中运行的应用程序的用户体验。
在图9中,也可用关键度级别(例如,407、…、409)标记本地存储器(211)中的存储器区(例如,291、…、293)中的内容。关键度级别(例如,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处,在存取由出借方装置(203)通过通信连接(205)借出给借用方装置(201)的一定量的存储器(202)时,借用方装置(201)基于关键度级别将通信连接(212)的网络带宽分配到由存储器区使用的数据通信。
由出借方装置(203)借出的存储器可部分地由出借方装置(203)从另一装置(例如,245)借用。
可至少部分地基于以下来识别关键度级别(例如,401到415、421):内容的类别(431),控制内容的应用程序(例如,212)的优先级(433),或由应用程序(例如,212)针对内容所请求的优先级(435),或其任何组合。
举例来说,应用程序(例如,212)可基于内容的使用历史、后续时间段中内容的预测使用(例如,439)或内容的使用频率(例如,437)或其任何组合来针对存储在存储器区中的内容请求优先级(435)。在一些情况下,操作系统(213)可收集使用历史,确定预测使用(例如,439)和/或使用频率(例如,437),和/或代表应用程序(例如,212)计算所请求优先级(435)。
为分配网络带宽,借用方装置(201)的操作系统(213)或借用方装置(201)的通信装置(217)可根据对应于存储器区中的内容的关键度级别的比率,在存取由出借方装置(203)借出给借用方装置(201)的一定量的存储器(202)时,节制/控制存储器区通过通信连接在一时间段内使用的数据通信量。因此,在时间段期间,可将用于存储器区的通信视为根据比率而允许的;且用于不同存储器区的数据通信的平均速度可控制为与比率成比例。
在一些情况下,借用方装置(201)可预测后续时间段中通信连接的网络带宽中的降级。作为响应,操作系统(213)可根据存储器区中的内容的关键度级别来调整借用方装置的本地存储器(211)与由出借方装置(203)借出给借用方装置(201)的一定量的存储器(203)之间的虚拟存储器的托管。
举例来说,借用方装置(201)的操作系统(213)可识别具有低于第二存储器区的关键度级别的第一存储器区。操作系统(213)可重新配置虚拟存储器的托管,使得与第一存储器区相关联的虚拟存储器区从托管或高速缓存于本地存储器(211)中迁移到托管于由出借方装置(203)借出给借用方装置(201)的一定量的存储器(202)中;且与第二存储器区相关联的虚拟存储器区可从托管于由出借方装置(2030借出给借用方装置(201)的一定量的存储器(202)中迁移到托管或高速缓存于借用方装置(201)的本地存储器(211)中。
在一些实施例中,上文所论述的计算装置或服务器(例如,101、103、105、107、201、203)的存储器管理单元(MMU)可实施为一或多个数据处理系统。
典型的数据处理系统可包含互连件(例如,总线和系统核心逻辑),其互连微处理器与存储器。微处理器也可具有裸片上高速缓存层次结构。
互连件将微处理器与存储器互连在一起,并且还将其经由输入/输出(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.根据权利要求4所述的方法,其中由控制所述内容的所述应用程序请求的所述优先级基于所述内容的使用历史。
6.根据权利要求4所述的方法,其中由控制所述内容的所述应用程序请求的所述优先级基于后续时间段中的所述内容的预测使用。
7.根据权利要求4所述的方法,其中由控制所述内容的所述应用程序请求的所述优先级基于所述内容的使用频率。
8.根据权利要求1所述的方法,其中网络带宽的所述分配包含根据对应于所述存储器区中的所述内容的所述优先级级别的比率而在存取所述量的存储器时节制通过所述通信连接在一时间段内的用于所述存储器区的数据通信的量。
9.根据权利要求1所述的方法,其进一步包括:
预测后续时间段中的所述通信连接的所述网络带宽的降级;以及
根据所述存储器区中的内容的所述优先级级别而调整所述第一装置的本地存储器与所述第二装置处的所述量的存储器之间的虚拟存储器的托管。
10.根据权利要求9所述的方法,其中所述调整包括:
识别具有低于第二存储器区的优先级级别的第一存储器区;以及
将与所述第一存储器区相关联的虚拟存储器区的托管从托管或高速缓存于所述本地存储器中迁移到托管于所述第二装置处的所述量的存储器中。
11.根据权利要求10所述的方法,其中所述调整进一步包括:
将与所述第二存储器区相关联的虚拟存储器区的托管从托管于所述第二装置处的所述量的存储器中迁移到托管或高速缓存于所述本地存储器中。
12.一种计算装置,其包括:
通信装置,其配置成通过有线或无线网络连接通信;
随机存取存储器;
存储器总线;以及
至少一个微处理器,其经由所述存储器总线耦合到所述随机存取存储器,所述微处理器具有存储器管理单元,所述存储器管理单元配置成将所述微处理器中使用的虚拟存储器地址转换成物理存储器地址且根据从所述虚拟存储器地址转换的所述物理存储器地址存取所述随机存取存储器;
其中所述计算装置配置成:
获得对所述计算装置通过所述通信连接使用第二装置处的一定量的存储器的许可;
将虚拟存储器分配到在所述计算装置中运行的应用程序;
将所述虚拟存储器的至少一部分配置为托管于所述第二装置处的所述量的存储器上;
识别由所述应用程序使用的存储器区中的内容的优先级级别;以及
在通过所述通信连接存取所述量的存储器时基于所述优先级级别将所述通信连接的网络带宽分配到由所述存储器区使用的数据通信。
13.根据权利要求12所述的计算装置,其中所述计算装置进一步配置成至少部分地基于所述内容的类别、控制所述内容的所述应用程序的优先级或由所述应用程序针对所述内容所请求的优先级或其任何组合而确定所述优先级级别。
14.根据权利要求13所述的计算装置,其中所述计算装置进一步配置成在确定针对所述内容所请求的所述优先级时,确定所述内容的使用历史、后续时间段中的所述内容的预测使用或所述内容的使用频率,或其任何组合。
15.根据权利要求12所述的计算装置,其中所述计算装置进一步配置成根据由所述存储器区中的所述内容的所述优先级级别确定的比率而在存取所述量的存储器时节制通过所述通信连接在一时间段内的用于所述存储器区的数据通信的量。
16.根据权利要求12所述的计算装置,其中所述计算装置进一步配置成:
预测后续时间段中的所述通信连接的所述网络带宽的降级;以及
根据所述存储器区中的内容的所述优先级级别而调整所述计算装置的所述随机存取存储器与所述第二装置处的所述量的存储器之间的虚拟存储器的托管。
17.根据权利要求16所述的计算装置,其中所述计算装置进一步配置成:
识别具有低于第二存储器区的优先级级别的第一存储器区;
将与所述第一存储器区相关联的虚拟存储器区的托管从托管或高速缓存于所述随机存取存储器中迁移到托管于所述第二装置处的所述量的存储器中;以及
将与所述第二存储器区相关联的虚拟存储器区的托管从托管于所述第二装置处的所述量的存储器中迁移到托管或高速缓存于所述随机存取存储器中。
18.一种存储指令的非暂时性计算机存储媒体,所述指令当在计算装置中执行时使得所述计算装置执行方法,所述方法包括:
通过第二装置与所述计算装置之间的通信连接借用所述第二装置的一定量的随机存取存储器;
将虚拟存储器分配到在所述计算装置中运行的应用程序;
将所述虚拟存储器的至少一部分配置为托管于所述第二装置处的所述量的存储器上;
识别由所述应用程序使用的存储器区中的内容的优先级级别;以及
根据存储器区中的所述内容的所述优先级级别而在通过所述通信连接存取所述量的存储器时节制由所述存储器区使用的数据通信。
19.根据权利要求18所述的非暂时性计算机存储媒体,其中所述方法进一步包括:
至少部分地基于所述内容的类别、控制所述内容的所述应用程序的优先级或由所述应用程序针对所述内容所请求的优先级或其任何组合而确定所述优先级级别。
20.根据权利要求18所述的非暂时性计算机存储媒体,其中所述方法进一步包括:
预测后续时间段中的所述通信连接的所述网络带宽的降级;以及
根据所述存储器区中的内容的所述优先级级别而调整托管于所述计算装置的本地存储器中的所述虚拟存储器和所述第二装置处的所述量的存储器的分布。
21.根据权利要求18所述的非暂时性计算机存储媒体,其中所述通信连接在第五代蜂窝式网络上。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/424,413 US11334387B2 (en) | 2019-05-28 | 2019-05-28 | Throttle memory as a service based on connectivity bandwidth |
US16/424,413 | 2019-05-28 | ||
PCT/US2020/029295 WO2020242664A1 (en) | 2019-05-28 | 2020-04-22 | Throttle memory as a service based on connectivity bandwidth |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113906399A true CN113906399A (zh) | 2022-01-07 |
CN113906399B CN113906399B (zh) | 2024-05-24 |
Family
ID=73550697
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080038839.8A Active CN113906399B (zh) | 2019-05-28 | 2020-04-22 | 基于连接带宽节制存储器即服务 |
Country Status (5)
Country | Link |
---|---|
US (2) | US11334387B2 (zh) |
KR (2) | KR20220000422A (zh) |
CN (1) | CN113906399B (zh) |
DE (1) | DE112020002575T5 (zh) |
WO (2) | WO2020242664A1 (zh) |
Families Citing this family (7)
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 |
US11438414B2 (en) | 2019-05-28 | 2022-09-06 | Micron Technology, Inc. | Inter operating system memory services over communication network connections |
US11169930B2 (en) | 2019-05-28 | 2021-11-09 | Micron Technology, Inc. | Fine grain data migration to or from borrowed memory |
US11100007B2 (en) | 2019-05-28 | 2021-08-24 | Micron Technology, Inc. | Memory management unit (MMU) for accessing borrowed memory |
US11061819B2 (en) | 2019-05-28 | 2021-07-13 | Micron Technology, Inc. | Distributed computing based on memory as a service |
CN116614378A (zh) * | 2019-09-17 | 2023-08-18 | 华为云计算技术有限公司 | 云业务的带宽管理及配置方法及相关装置 |
US11693800B2 (en) * | 2020-07-13 | 2023-07-04 | EMC IP Holding Company LLC | Managing IO path bandwidth |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110252166A1 (en) * | 2009-01-23 | 2011-10-13 | Pradeep Padala | System and Methods for Allocating Shared Storage Resources |
US20150012593A1 (en) * | 2012-02-23 | 2015-01-08 | Ericsson Television Inc. | System and method for delivering content in a content delivery network |
US20160188452A1 (en) * | 2014-12-29 | 2016-06-30 | International Business Machines Corporation | Efficient and secure direct storage device sharing in virtualized environments |
EP3195575A2 (en) * | 2014-09-16 | 2017-07-26 | Kove IP, LLC | Paging of external memory |
Family Cites Families (54)
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 |
US6925547B2 (en) | 2000-12-14 | 2005-08-02 | Silicon Graphics, Inc. | Remote address translation in a multiprocessor system |
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 |
JP3892829B2 (ja) * | 2003-06-27 | 2007-03-14 | 株式会社東芝 | 情報処理システムおよびメモリ管理方法 |
US7853760B2 (en) * | 2003-08-07 | 2010-12-14 | Siemens Corporation | Advanced memory management architecture for large data volumes |
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 | 株式会社日立製作所 | ストレージシステム及びデータ複製方法 |
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 |
US8301717B2 (en) | 2009-06-09 | 2012-10-30 | Deshpande Enterprises, Inc. | Extended virtual memory system and method in a computer cluster |
US8397049B2 (en) | 2009-07-13 | 2013-03-12 | Apple Inc. | TLB prefetching |
US8719547B2 (en) | 2009-09-18 | 2014-05-06 | Intel Corporation | Providing hardware support for shared virtual memory between local and remote physical memory |
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 |
US9292471B2 (en) | 2011-02-18 | 2016-03-22 | Honda Motor Co., Ltd. | Coordinated vehicle response system and method for driver behavior |
EP2700021A4 (en) | 2011-04-19 | 2016-07-20 | Seven Networks Llc | MANAGEMENT OF COMMON RESOURCES AND VIRTUAL RESOURCES IN A NETWORKED ENVIRONMENT |
WO2012160629A1 (ja) | 2011-05-20 | 2012-11-29 | 富士通株式会社 | データ処理方法 |
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 | 고려대학교 산학협력단 | 가상화 시스템에서의 메모리 관리 방법 |
US20140280669A1 (en) | 2013-03-15 | 2014-09-18 | Microsoft Corporation | Memory Sharing Over A Network |
US9311011B2 (en) | 2013-08-07 | 2016-04-12 | Qualcomm Incorporated | Dynamic address negotiation for shared memory regions in heterogenous multiprocessor systems |
CN104426971B (zh) * | 2013-08-30 | 2017-11-17 | 华为技术有限公司 | 一种远程内存交换分区方法、装置及系统 |
JP6179321B2 (ja) | 2013-09-27 | 2017-08-16 | 富士通株式会社 | ストレージ管理装置、制御方法及び制御プログラム |
US20150098390A1 (en) * | 2013-10-04 | 2015-04-09 | Vonage Network Llc | Prioritization of data traffic between a mobile device and a network access point |
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 |
EP3155531A4 (en) | 2014-06-10 | 2018-01-31 | Hewlett-Packard Enterprise Development LP | Replicating data using remote direct memory access (rdma) |
US9632901B2 (en) | 2014-09-11 | 2017-04-25 | Mellanox Technologies, Ltd. | Page resolution status reporting |
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 | 국민대학교산학협력단 | 스크래치패드 메모리 관리 방법, 이를 수행하는 스크래치패드 메모리 관리 장치 및 이를 저장하는 기록매체 |
EP3057266A1 (en) * | 2015-02-11 | 2016-08-17 | Thomson Licensing | Distribution of bandwidth in a network |
US9940287B2 (en) * | 2015-03-27 | 2018-04-10 | Intel Corporation | Pooled memory address translation |
US10572393B2 (en) | 2015-04-22 | 2020-02-25 | ColorTokens, Inc. | Object memory management unit |
US10095519B2 (en) | 2015-09-19 | 2018-10-09 | Microsoft Technology Licensing, Llc | Instruction block address register |
CN106991478B (zh) | 2016-01-20 | 2020-05-08 | 中科寒武纪科技股份有限公司 | 用于执行人工神经网络反向训练的装置和方法 |
US10432722B2 (en) * | 2016-05-06 | 2019-10-01 | Microsoft Technology Licensing, Llc | Cloud storage platform providing performance-based service level agreements |
KR102197247B1 (ko) | 2017-06-01 | 2020-12-31 | 한국전자통신연구원 | 파라미터 서버 및 그것에 의해 수행되는 분산 딥러닝 파라미터 공유 방법 |
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 | 삼성전자주식회사 | 데이터 스토리지 디바이스 및 데이터 스토리지 시스템 |
US11200168B2 (en) | 2018-12-10 | 2021-12-14 | International Business Machines Corporation | Caching data from remote memories |
US11438414B2 (en) | 2019-05-28 | 2022-09-06 | Micron Technology, Inc. | Inter operating system memory services over communication network connections |
US20200379809A1 (en) | 2019-05-28 | 2020-12-03 | Micron Technology, Inc. | Memory as a Service for Artificial Neural Network (ANN) Applications |
US11100007B2 (en) | 2019-05-28 | 2021-08-24 | Micron Technology, Inc. | Memory management unit (MMU) for accessing borrowed memory |
US11169930B2 (en) | 2019-05-28 | 2021-11-09 | Micron Technology, Inc. | Fine grain data migration to or from borrowed memory |
-
2019
- 2019-05-28 US US16/424,413 patent/US11334387B2/en active Active
-
2020
- 2020-04-22 WO PCT/US2020/029295 patent/WO2020242664A1/en active Application Filing
- 2020-04-22 WO PCT/US2020/029298 patent/WO2020242665A1/en unknown
- 2020-04-22 CN CN202080038839.8A patent/CN113906399B/zh active Active
- 2020-04-22 KR KR1020217042477A patent/KR20220000422A/ko not_active Application Discontinuation
- 2020-04-22 DE DE112020002575.6T patent/DE112020002575T5/de active Pending
- 2020-04-22 KR KR1020217042084A patent/KR20220000406A/ko not_active Application Discontinuation
-
2022
- 2022-04-19 US US17/723,846 patent/US20220237039A1/en active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110252166A1 (en) * | 2009-01-23 | 2011-10-13 | Pradeep Padala | System and Methods for Allocating Shared Storage Resources |
US20150012593A1 (en) * | 2012-02-23 | 2015-01-08 | Ericsson Television Inc. | System and method for delivering content in a content delivery network |
EP3195575A2 (en) * | 2014-09-16 | 2017-07-26 | Kove IP, LLC | Paging of external memory |
US20160188452A1 (en) * | 2014-12-29 | 2016-06-30 | International Business Machines Corporation | Efficient and secure direct storage device sharing in virtualized environments |
Also Published As
Publication number | Publication date |
---|---|
US20220237039A1 (en) | 2022-07-28 |
US20200379808A1 (en) | 2020-12-03 |
KR20220000406A (ko) | 2022-01-03 |
US11334387B2 (en) | 2022-05-17 |
KR20220000422A (ko) | 2022-01-03 |
CN113906399B (zh) | 2024-05-24 |
WO2020242665A1 (en) | 2020-12-03 |
DE112020002575T5 (de) | 2022-04-21 |
WO2020242664A1 (en) | 2020-12-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113874825B (zh) | 使用借用存储器的智能内容迁移 | |
CN113906399B (zh) | 基于连接带宽节制存储器即服务 | |
CN112015677B (zh) | 实施于计算装置中的方法、计算装置和非暂时性计算机存储介质 | |
CN113906384B (zh) | 人工神经网络(ann)应用程序中的存储器即服务 | |
CN113994313B (zh) | 基于存储器即服务的分布式计算 | |
US20220417326A1 (en) | Inter Operating System Memory Services over Communication Network Connections | |
US11657002B2 (en) | Memory management unit (MMU) for accessing borrowed memory |
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 |