CN113892091A - 通过通信网络连接的操作系统间存储器服务 - Google Patents
通过通信网络连接的操作系统间存储器服务 Download PDFInfo
- Publication number
- CN113892091A CN113892091A CN202080039008.2A CN202080039008A CN113892091A CN 113892091 A CN113892091 A CN 113892091A CN 202080039008 A CN202080039008 A CN 202080039008A CN 113892091 A CN113892091 A CN 113892091A
- Authority
- CN
- China
- Prior art keywords
- memory
- tenant
- page
- lessee
- 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.)
- Pending
Links
- 230000015654 memory Effects 0.000 title claims abstract description 603
- 238000004891 communication Methods 0.000 title claims abstract description 55
- 238000013507 mapping Methods 0.000 claims description 27
- 238000013519 translation Methods 0.000 claims description 14
- 239000000872 buffer Substances 0.000 claims description 13
- 230000002093 peripheral effect Effects 0.000 claims description 7
- 230000004044 response Effects 0.000 claims description 6
- 230000001413 cellular effect Effects 0.000 claims description 3
- 239000007787 solid Substances 0.000 claims description 2
- 238000000034 method Methods 0.000 abstract description 23
- 238000003860 storage Methods 0.000 description 17
- 238000012545 processing Methods 0.000 description 15
- 238000013508 migration Methods 0.000 description 8
- 230000005012 migration Effects 0.000 description 8
- 238000012546 transfer Methods 0.000 description 7
- 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
- 241000699670 Mus sp. Species 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 230000002085 persistent effect Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 239000004566 building material Substances 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000000694 effects 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
- 230000006855 networking Effects 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
- 239000004984 smart glass Substances 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- 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
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q50/00—Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
- G06Q50/10—Services
-
- 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
-
- 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/0646—Configuration or reconfiguration
-
- 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/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
-
- 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/0877—Cache access modes
- G06F12/0882—Page mode
-
- 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/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/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- 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/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4234—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17306—Intercommunication techniques
- G06F15/17331—Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]
-
- 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
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q30/00—Commerce
- G06Q30/06—Buying, selling or leasing transactions
- G06Q30/0645—Rental transactions; Leasing transactions
-
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/51—Discovery or management thereof, e.g. service location protocol [SLP] or web services
-
- 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/1041—Resource optimization
-
- 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/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)
- Business, Economics & Management (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Accounting & Taxation (AREA)
- General Business, Economics & Management (AREA)
- Strategic Management (AREA)
- Economics (AREA)
- Marketing (AREA)
- Tourism & Hospitality (AREA)
- Finance (AREA)
- Computer Hardware Design (AREA)
- Human Computer Interaction (AREA)
- Development Economics (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Human Resources & Organizations (AREA)
- Primary Health Care (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
描述了用于提供存储器即服务的系统、方法和设备。例如,承租方装置被配置成:与出租方装置进行通信;从所述出租方装置借入一定量的存储器;至少使用所述承租方装置的本地存储器和从所述出租方装置借入的所述一定量的存储器针对在所述承租方装置上运行的应用程序扩展所述承租方装置的存储器容量;并且通过所述承租方装置与所述出租方装置之间的通信链路为由所述应用程序对存储器进行的存取提供服务。
Description
相关申请
本申请要求于2019年5月28日提交的且题为“通过通信网络连接的操作系统间存储器服务”的美国专利申请序列号16/424,411的优先权,所述美国专利申请的全部公开内容特此以引用的方式并入本文中。
技术领域
本文所公开的至少一些实施例涉及由操作系统提供的存储器服务。
背景技术
在一些计算机系统中,操作系统允许应用程序使用存储器的虚拟地址来将数据存储在计算机系统的一或多个存储器子系统的存储器组件中或从计算机系统的一或多个存储器子系统的存储器组件中检索数据。操作系统定义连接到计算机系统的中央处理单元(CPU)和/或图形处理单元(GPU)和/或片上系统(SoC)的一或多个存储器子系统的虚拟存储器地址与物理存储器地址之间的映射。此种映射可以通过使用页表来定义。页表条目指定虚拟存储器页的虚拟存储器地址集合与物理存储器页的对应的物理存储器地址集合之间的映射。页表可以用于通过将虚拟存储器地址转译成存储器子系统的对应的物理存储器地址来实施针对虚拟存储器地址请求的存储器存取。
计算机处理器可以具有被配置成根据由操作系统所定义的页表执行将虚拟存储器地址转译成物理存储器地址的存储器管理单元(MMU)。存储器管理单元(MMU)可以具有被配置成高速缓存最近使用的页表条目的转译后备缓冲器(TLB)。存储器管理单元(MMU)可以执行其它存储器相关任务,如高速缓存控制和/或存储器保护。
通常,计算机中用于存储器的虚拟地址空间可以划分为预定大小的页。虚拟存储器的页由虚拟存储器地址的集合表示;虚拟存储器地址可以映射到存储器子系统中的物理存储器的页的物理存储器地址;页表条目定义虚拟存储器的页与物理存储器的页之间的地址映射。
在一些计算机系统中,操作系统可以使用分页技术以通过存储器模块中的存储器的页对存储装置或存储器装置中的数据的页进行存取。在不同的时间实例处,存储器模块中的存储器的同一页可以用作代理服务器来对存储装置或存储器装置或计算机系统中的另一个存储装置或存储器装置中的存储器的不同页进行存取。
远程直接存储器存取(RDMA)是一种允许在不涉及所涉及的计算机的操作系统中的任何操作系统的情况下(例如,在为了协商和设置用于RDMA操作的存储器资源而执行操作系统之后)进行从一台计算机到另一台计算机的直接存储器存取的技术。在RDMA操作(例如,读取或写入)之前,执行命令以通过一或多个联网装置在两台计算机之间建立存储器映射。当在计算机上运行的应用程序执行RDMA操作时,直接在计算机网络上传递应用程序数据,从而减少延迟并且实现快速数据传送。RDMA使用网络适配器向应用程序存储器或从应用程序存储器传送数据,从而消除了在应用程序存储器与操作系统中的数据缓冲器之间复制数据的需要。
附图说明
在附图的图中通过实例而非限制的方式展示了实施例,在附图中,相同的附图标记指示类似的元件。
图1示出了一种系统,其中计算装置或服务器计算机可以从另一个计算装置和/或另一台服务器计算机借入存储器和/或将存储器出租给另一个计算装置和/或另一台服务器计算机。
图2展示了根据一个实施例的通过通信网络连接实施操作系统间存储器服务的承租方装置和出租方装置。
图3展示了根据一个实施例的使用借入存储器的技术。
图4展示了根据一个实施例的物理存储器区域的用于促进对不同的借入存储器区域的存取的用途。
图5展示了根据一个实施例的物理存储器区域的用于促进对不同的借入存储器区域的存取的另一个用途。
图6展示了计算系统中的承租方-出租方存储器层次结构。
图7示出了用于通过通信网络连接实施操作系统间存储器服务的方法。
图8示出了根据一个实施例的用于为借入存储器的页提供服务的方法。
具体实施方式
本文所公开的至少一些实施例提供了通过通信网络连接的操作系统间存储器服务的技术,使得承租方装置可以通过使用通信链路和出租方装置的存储器来扩展所述承租方装置的存储器容量。承租方装置和/或出租方装置的操作系统可以被配置成无缝地桥接通信链路之上的间隙,使得在承租方装置上运行的应用程序可以无区别地使用所述承租方装置的本地存储器和借入存储器。本地存储器物理地安装在承租方装置中;并且借入存储器物理地安装在通过通信连接连接到承租方装置的出租方装置中。
任选地,承租方装置中的借入存储器和/或本地存储器的一部分可以通过计算机网络借出给另一个装置。承租方装置可以具有多个出租方装置。因此,承租方-出租方装置层次结构可以形成于装置之间的通信链路的层次结构上。
承租方装置的操作系统可以使用虚拟存储器到物理存储器的映射来桥接本地存储器与借入存储器的差异。例如,承租方装置的操作系统可以响应于承租方装置的转译后备缓冲器(TLB)中的可能导致页错误的判定的未命中而操纵页表条目(PTE),以在通过通信链路对借入存储器进行存取时使用承租方装置的本地存储器的一部分作为孔(aperture)、代理服务器和/或高速缓存。出租方装置和承租方装置之间的高速缓存一致性可以放宽以提高带宽利用率。由于本地存储器与借入存储器区域之间的差异被承租方装置的操作系统屏蔽免于在承租方装置上运行的应用程序的干扰,因此在承租方装置上运行的应用程序可以以与对配置在承租方装置中的本地随机存取存储器进行存取相同的方式对借入存储器进行字节存取。
操作系统的存储器服务可以用于在多个操作系统通过非相干通信链路共享的统一地址空间下在计算机系统中构建多级字节可寻址存储器。例如,可穿戴计算装置可以通过个域网或局域网从移动计算装置借入存储器。可穿戴计算装置可以是智能手表、运动跟踪装置或智能眼镜,并且移动计算装置可以是智能电话、触摸板计算机或笔记本计算机等。可穿戴计算装置和/或移动计算装置可以通过局域网从计算器件借入存储器。例如,计算器件可以是袖珍服务器、台式计算机、存储器器件或存储器件等。移动计算装置和/或计算器件可以通过互联网和/或通过云计算从服务器计算机或服务器场借入存储器。
在存储器资源的出租方-承租方的多级层次结构中,每个随后的较高层级装置(例如,移动计算装置、计算器件、服务器计算机或服务器场)都可以使用其存储器容量来按需增加较低层级装置(例如,可穿戴计算装置、移动计算装置、计算器件)和/或相同层级的装置的存储器容量。IoT装置将构成环境,如建筑材料(混凝土墙、道路等)。可能是低密度但体积大的廉价存储器技术将允许以非常低的成本在构造中集成低密度存储器(以及进行计算)。因此,将会使某种“存储器物质”(或可能是计算物质)作为任何装置都可以使用的环境的一部分。
任选地,可以跳过层次结构中的某些层级,这取决于某些装置和/或网络连接的可用性。例如,可穿戴计算装置可以在不通过移动计算装置的情况下从计算器件借入存储器;并且移动计算装置可以在不通过局域网中的计算器件的情况下通过互联网从服务器计算机或服务器场借入存储器。
在器件层级和云层级处,可以提供存储器资源作为具有存储器即服务(MaaS)的实用程序。此种布置可以按需提供具有巨大持久性存储器容量和存储资源的低层级计算装置,如可穿戴计算装置、移动计算装置和/或物联网的计算装置。在低层级计算装置上运行的应用程序可以使用由操作系统所提供的存储器服务以透明的方式使用借入存储器,就如同借入存储器是承租方装置的本地存储器的一部分一样。因此,在应用程序中不需要进行专用编程来使用借入存储器。
在承租方装置上运行的应用程序可以使用借入存储器来持久地存储数据,并且因此消除或减少对用于通过文件系统存储数据的操作的需要。例如,出租方器件/服务器可以提供持久性随机存取存储器或存储容量,以向承租方装置提供存储器资源并管理存储在所提供的存储器资源中的数据的持久性和/或冗余性,使得借入存储器可以被视为承租方装置中的虚拟非易失性随机存取存储器。
任选地,作为服务提供的存储器可以包含客户端/承租方、加锁机制、超时机制等之间的存储器页共享的语义。
作为一个实例,电话可以作为承租方装置通过无线局域网(WLAN)(例如,通过家庭Wi-Fi接入点促进)从充当出租方装置的存储器器件获得8万亿字节(TB)的可观察存储器。在电话的操作系统下运行的应用程序可以与在具有8TB的本地存储器的电话上运行的应用程序相同的方式观察到8TB的存储器。可替代地,电话可以通过蜂窝通信网络从被配置为出租方装置的服务器或云计算基础设施获得8TB的可观察存储器。任选地,电话可以从存储器器件借入8TB的可观察存储器的一部分并且可以从服务器或云计算基础设施借入8TB可观察存储器的一部分。即使电话可能仅具有8兆字节(MB)的物理本地存储器,也可以通过电话的操作系统使8TB的可观察存储器可虚拟地在电话上使用,使得在电话上运行的应用程序可以使用虚拟/远程存储器。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中后,错误得到解决。
当页错误在对借入页进行存取时发生并且页的内容当前不在承租方装置的本地存储器中时(例如,在借入页的内容已经迁移/驱逐到出租方装置之后),承租方装置的操作系统可以通过承租方装置与出租方装置之间的通信链路与出租方装置进行通信以检索或迁移借入页的内容。
高速缓存操作可以与上文讨论的两种情况中的处理结合来执行。例如,出租方装置可以保留页副本。如果承租方装置不进一步修改页(例如,仅对页执行读取操作),则所述副本可能是有用的。在此种情形下,因为页的真实副本已经存在于出租方装置上,所以不需要驱逐。类似地,当承租方装置与出租方装置之间的通信链路可自由使用时,承租方装置可以执行对页的投机驱逐。
任选地,出租方装置和/或承租方装置可以配置有使在出租方装置与承租方装置之间迁移内容的操作加速的固件/硬件。
任选地,出租方装置的操作系统可以被配置成维护和操作其自身的页表集合和相关联资源,如页表巡行器(page table walker)、转译后备缓冲器(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)中的每个服务器计算机可以具有被配置成执行指令如操作系统(例如,113、133、153和173)的指令以及在操作系统下运行的应用程序或程序的一或多个处理器(例如,115、135、155和175)。
计算装置(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)将借入存储器的一部分和/或所述服务器P的本地存储器(151)的一部分借出给装置B(103),所述装置B进而将所述装置B的借入存储器的一部分和/或所述装置B的本地存储器(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和所述装置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)的一部分或整个所述借出存储器配置在通过外围总线和/或装置控制器耦接到出租方装置(203)的处理器(235)的存储装置(234)中。例如,出租方装置(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中。在其它实例中,如果虚拟存储器属于出租方装置(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。这个IP作为MMU的一部分从存储在物理存储器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)在统一的虚拟存储器空间中向承租方装置(201)提供借出存储器(202)。承租方装置(201)的存储器服务(209)以与应用程序(232)使用由存储器服务(229)所提供的虚拟存储器相同的方式使用借入存储器(204)。例如,出租方装置(203)的存储器服务(229)可以向在出租方装置(203)上运行的应用程序(232)分配虚拟存储器,并且将虚拟存储器分配作为由承租方装置(201)的存储器服务(209)所使用的借入存储器(204),就如同存储器服务(209)是在出租方装置上运行的应用程序一样。因此,在出租方装置(203)上运行的应用程序(232)和承租方装置(201)(和从出租方装置(203)借入存储器的其它装置)可以在统一的虚拟地址空间中进行操作。协作计算可以基于统一的虚拟地址空间来配置。进一步地,当出租方装置(203)从另一个装置/服务器(例如,105或107)借入存储器时,借入存储器也可以提供在统一的虚拟地址空间中。统一的地址空间可以促进计算装置之间的数据共享和协作计算。
出租方装置(203)的存储器服务(229)可以维护存储器映射(227),所述存储器映射包含与由借入装置(201)所存取的借入存储器(204)相对应的借出存储器(202)的虚拟地址与借出存储器(202)的物理地址之间的映射。例如,由承租方装置(201)在对借入页进行存取时标识出的虚拟页的页表条目可以加载到存储器管理单元(MMU)(236)中,以促进虚拟页的地址与借出存储器(202)的物理地址之间的转译,以供出租方装置(203)的处理器代表承租方装置(201)执行计算。任选地,出租方装置(203)可以包含类似于存储器管理单元(236)的硬件,以使用标识承租方装置(201)已知的借入存储器(204)与出租方装置(203)中可物理存取的借出存储器(202)之间的映射的存储器映射(227)促进出租方装置(203)与承租方装置(201)之间的数据传送得以优化和/或加速。
图3展示了根据一个实施例的实施借入存储器的技术。例如,图3的技术可以在图2中所展示的承租方装置(201)中实施。
图3展示了存储器(211)、被配置成使用物理地址(例如,257)对存储器(211)进行存取的存储器管理单元(MMU)(216)以及定义虚拟地址区域(例如,261、263、265、……)与虚拟存储器区域映射到的地址区域如物理地址区域(例如,281、283、……)与借入存储器区域(例如,273、275、……)之间的映射的存储器映射(207)。
例如,借入存储器地址区域(例如,273、……、275)可以被配置成将由出租方装置(203)所分配的虚拟地址区域标识为提供/借出给借入装置(201)的存储器。
例如,虚拟地址区域A(261)在存储器映射(207)中与物理地址区域(281)相关联,以指示虚拟存储器的区域当前直接映射到本地物理存储器(211)的对应的区域。
例如,虚拟地址区域B(263)在存储器映射(207)中与借入存储器地址区域X(273)和物理地址区域S(283)相关联,以指示虚拟地址区域B(263)映射到借入存储器地址区域X(273)并且物理地驻留在物理地址区域S(283)中。因此,对虚拟地址区域B(263)的存取可以通过对本地存储器(211)中的物理地址区域S(283)进行存取来实现。虚拟地址区域C(265)在存储器映射(207)中与借入存储器地址区域Y(275)相关联并且在存储器映射(207)中不与任何物理地址区域相关联。因此,为了对虚拟地址区域C(265)进行存取,承租方装置需要与出租方装置进行通信。
物理地址区域S(283)中的内容可以驱逐到出租方装置以释放物理地址区域S(283)。一旦物理地址区域S(283)得到释放,所述物理地址区域可以用于另一个借入存储器地址区域如借入存储器地址区域Y(275)的物理放置。一旦借入存储器地址区域Y(275)的内容从出租方装置迁移到承租方装置到达物理地址区域S(283),物理地址区域S(283)可以用于提供对如图4所展示的映射到统一的地址空间的借入存储器地址区域Y(275)并且物理地位于承租方装置的物理地址区域S(283)中的虚拟地址区域C(265)的存取。
在图5中,存储器管理单元(MMU)(例如,类似于图3中所展示的216)具有可以存储虚拟存储器到物理存储器的映射(253)(例如,由承租方装置(201)的操作系统(213)维护的存储器映射(207)的一部分)的转译后备缓冲器(TLB)(例如,类似于图3中所展示的251)。当承租方装置(201)的处理器(215)执行使用虚拟地址(255)的指令时,TLB(251)使用虚拟存储器到物理存储器的映射(253)来将虚拟地址(255)转译成物理地址(257);并且存储器管理单元(MMU)(216)可以使用物理地址(257)(例如,通过存储器总线)对存储器(211)中的存储器页(259)进行存取。
加载在TLB(251)中的虚拟存储器到物理存储器的映射(253)通常是由承租方装置(201)的操作系统(213)管理的存储器映射(207)的一部分。当承租方装置(201)的处理器(215)执行使用在TLB(251)中的虚拟存储器到物理存储器的映射(253)中未覆盖的虚拟地址的指令时,存储器管理单元(MMU)(216)可以使处理器(215)执行操作系统(213),所述操作系统被编程为替换TLB(251)中的虚拟存储器到物理存储器的映射(253)的一部分,使得TLB(251)中的经过更新的虚拟存储器到物理存储器的映射(253)包含用于将虚拟地址(例如,255)转译为物理地址(例如,257)的数据。
存储器管理单元(MMU)(216)通常被配置成通过耦接在承租方装置(201)的存储器管理单元(MMU)(216)与承租方装置(201)的本地存储器(211)之间的存储器总线对存储器(211)进行存取。当虚拟地址(255)初始地位于映射到借入存储器地址区域(例如,275)的虚拟地址区域(例如,265)中时,操作系统(213)可以将这个区域的内容从出租方装置的借出存储器迁移到存储器(211)中的物理地址区域(例如,283),并且更新TLB(251)中的虚拟存储器到物理存储器的映射(253)以允许在不将虚拟地址(255)转译为借入存储器地址区域(例如,275)的情况下直接将所述虚拟地址转译成与虚拟地址(255)相对应的物理地址(257)。
在一些实施例中,存储器管理单元(MMU)(216)被进一步配置成在没有显式迁移的情况下通过计算机网络连接(例如,205)使用通信装置(217)对借入存储器(204)进行存取。在此种情形下,对于操作系统(213)来说没有必要迁移虚拟地址区域(例如,265)的内容。借入存储器(204)的物理地址(257)可以包含用于通信装置(217)对出租方装置(203)中的借出存储器(202)中的存储器页(260)进行存取的信息。使用物理地址(257)并通过通信装置(217)做出的存储器存取请求可以在出租方装置(203)中通过所述出租方装置的操作系统(233)进行处理。可替代地,通信装置(237)和/或存储器管理单元(MMS)(236)可以被配置成在不执行操作系统(233)的情况下(例如,基于高速缓存在出租方装置(203)的MMS(236)的TLB中的虚拟存储器到物理存储器的映射或配置在出租方装置(203)中用于执行类似操作的硬件加速组件)处理对借出存储器(202)的此种存取请求(例如,以进行读取或写入)。
虚拟存储器到物理存储器的映射(253)可以以页表条目的形式实施。
图6展示了计算系统中的承租方-出租方存储器层次结构。
在图6中,出租方装置(203)可以以类似于图2中承租方装置(201)从出租方装置(203)借入存储器的方式从一或多个出租方服务器(245)借入存储器。出租方装置(203)至少将所述出租方装置的本地物理存储器(例如,图2中所展示的231)中的一些本地物理存储器和/或所述出租方装置从出租方服务器(例如,245)借入的存储器中的一些存储器汇集作为可用存储器(239)以借出给承租方装置(201)。一或多个承租方装置(201)可以从出租方装置(203)借入存储器。
典型的承租方存储器(204)可以具有多个借入存储器区域(295、297、……、299)和多个本地存储器区域(291、293、……)。承租方装置(201)中的借入存储器区域(295、297、……、299)可以通过从出租方装置的借出存储器到承租方装置的本地存储器区域(291、293、……)的迁移来进行存取。当借入存储器区域(295、297、……、299)没有在承租方装置(201)中使用时,可以将所述借入存储器区域驱逐回到出租方装置(203),如图4和图5中所展示的。
类似地,出租方装置(203)可以将借出给承租方装置(201)的区域(例如,299)托管在所述承租方装置的本地存储器或从出租方服务器(245)借入的本地存储器中。
通常,多于一个出租方装置(203)可以用于向承租方装置(201)提供存储器服务;并且多于一个出租方服务器(245)可以被配置在层次结构中。
任选地,层次结构中作为服务提供的存储器(例如,295、297、……、299)被配置在统一的虚拟地址空间中。因此,承租方装置(201)、出租方装置(203)和出租方服务器(245)可以通过参考统一的虚拟地址空间中的虚拟地址来协作处理存储器中的数据。
例如,图6中的承租方装置(201)可以是图1的系统中的装置A(101)或装置B(103)。
例如,图6中的出租方装置(203)可以是图1的系统中的装置B(103)或服务器P(105)。
例如,图6中的出租方服务器(245)可以是图1的系统中的服务器P(105)或服务器Q(107)。
图7示出了用于通过通信网络连接实施操作系统间存储器服务的方法。例如,图7的方法可以用图2中所展示的承租方-出租方配置和/或图6中所展示的承租方-出租方存储器层次结构在图1的系统中实施。
在框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的方法可以用图2中所展示的承租方-出租方配置和/或图6中所展示的承租方-出租方存储器层次结构在图1的系统中实施。例如,图8的方法可以用于实施图7的方法的框311。
在框331处,承租方装置(201)针对借入存储器页(204)保留承租方装置(201)的物理存储器(211)的页。
在框333处,承租方装置(201)的处理器存取与借入存储器(204)中的存储器页(260)相对应的虚拟存储器地址(255)。借入存储器页(204)可以物理地位于出租方装置(203)的借出存储器(202)中。
在框335处,承租方装置(201)的存储器管理单元(MMU)(216)确定在转译后备缓冲器(TLB)(251)中没有可用的页表条目以将虚拟存储器地址(255)转译为本地物理存储器地址。此种确定(例如,TLB未命中)导致承租方装置(201)运行所述承租方装置的操作系统(213)以在存储器映射中搜索页表条目。
在框337处,在承租方装置(201)上运行的操作系统(213)在存储器映射中标识将页的虚拟存储器地址转译为所述页的借入存储器地址的页表条目。
在框339处,在承租方装置(201)上运行的操作系统(213)与出租方装置进行通信,并且将具有借入存储器地址的借入页的物理内容迁移到本地存储器,并且将所述内容放置在本地存储器的可用物理地址处。当没有足够的本地存储器用于将借入页从出租方装置迁移到承租方装置时,可能需要对不同的借入页执行从承租方装置到出租方装置的借入页驱逐。
在框341处,在承租方装置(201)上运行的操作系统(213)生成将借入页的虚拟地址(例如,255)映射到本地存储器中的物理地址(257)的页表条目。
在框343处,在承租方装置(201)上运行的操作系统(213)将页表条目加载到转译后备缓冲器(TLB)(251)中,这允许处理器使用经过转译的物理存储器地址(257)继续存取虚拟存储器地址(255)。
通常,上文所讨论的装置或服务器中的每个装置或服务器(例如,101、103、105、107、201、203)可以被实施为一或多个数据处理系统。
典型的数据处理系统可以包含互连件(例如,总线和系统核心逻辑),所述互连件将微处理器和存储器互连。微处理器也可以具有片上高速缓存层次结构。
互连件将微处理器和存储器互连在一起并且还通过输入/输出(I/O)控制器将所述微处理器和所述存储器互连到I/O装置。I/O装置可以包含显示装置和/或外围装置,如鼠标、键盘、调制解调器、网络接口、打印机、扫描仪、摄像机和本领域已知的其它装置。在一个实施例中,当数据处理系统是服务器系统时,I/O装置中的一些I/O装置如打印机、扫描仪、鼠标和/或键盘是任选的。
互连件可以包含通过各种桥接器、控制器和/或适配器彼此连接的一或多个总线。在一个实施例中,I/O控制器包含用于控制USB(通用串行总线)外围设备的USB适配器和/或用于控制IEEE-1394外围设备的IEEE-1394总线适配器。
存储器可以包含以下中的一或多个:ROM(只读存储器)、易失性RAM(随机存取存储器)和非易失性存储器,如硬盘驱动器、闪存等。
易失性RAM通常实施为动态RAM(DRAM),所述DRAM持续需要电力以刷新或维护存储器中的数据。非易失性存储器通常是磁性硬盘驱动器、磁性光学驱动器、光学驱动器(例如,DVD RAM)、闪存、3D交叉点或即使在电力从系统移除后仍维护数据的其它类型的存储器系统。非易失性存储器也可以是随机存取存储器。
非易失性存储器可以是直接耦接到数据处理系统中的其余组件的本地装置。也可以使用远离系统的非易失性存储器,如通过网络接口如调制解调器或以太网接口耦接到数据处理系统的网络存储装置。
在本公开中,为了简化描述,一些功能和操作被描述为由软件代码执行或由软件代码导致。然而,此类表达也用于指定功能是因如微处理器或SoS(片上系统)的任何IP块等处理器执行代码/指令而产生的。
可替代地或组合地,可以在有或没有软件指令的情况下使用专用电路系统如使用专用集成电路(ASIC)或现场可编程门阵列(FPGA)实施如本文所描述的功能和操作。可以在没有软件指令的情况下使用硬连线电路系统或与软件指令组合地实施实施例。因此,所述技术既不限于硬件电路系统和软件的任何具体组合,也不限于由数据处理系统执行的指令的任何特定源。
尽管一个实施例可以在功能完备的计算机和计算机系统中实施,但是各个实施例能够以各种形式作为计算产品分布,并且无论用于实际影响分布的特定类型的机器或计算机可读媒体如何,所述各个实施例均能够应用。
所公开的至少一些方面可以至少部分地在软件中体现。也就是说,可以响应于计算机系统或其它数据处理系统的处理器如微处理器执行如ROM、易失性RAM、非易失性存储器、高速缓存或远程存储装置等存储器中含有的指令序列在计算机系统或其它数据处理系统中执行技术。
为实施实施例而执行的例程可以实施为操作系统或者特定的应用程序、组件、程序、对象、模块或被称为“计算机程序”的指令序列的一部分。计算机程序通常包含一或多个指令,所述一或多个指令在计算机中的各个存储器和存储装置中在各个时间设置并且当由计算机中的一或多个处理器读取和执行时使计算机执行执行涉及各个方面的元件所必需的操作。
机器可读媒体可以用于存储软件和数据,当由数据处理系统执行时,所述软件和数据使系统执行各种方法。可执行软件和数据可以存储在各个地方,包含例如ROM、易失性RAM、非易失性存储器和/或高速缓存。此软件和/或数据的各部分可以存储在这些存储装置中的任何一个存储装置中。进一步地,可以从集中式服务器或对等网络获得数据和指令。可以在不同的时间并且在不同的通信会话中或在同一通信会话中从不同的集中式服务器和/或对等网络获得数据和指令的不同部分。可以在执行应用程序之前整体获得数据和指令。可替代地,可以在执行需要时及时动态地获取数据和指令的各部分。因此,数据和指令不需要在特定时间的实例处整体上处于机器可读媒体上。
计算机可读媒体的实例包含但不限于非易失性、可记录和非可记录类型媒体,如易失性和非易失性存储器装置、只读存储器(ROM)、随机存取存储器(RAM)、闪存装置、软盘和其它可移除盘、磁盘存储媒体、光学存储媒体(例如,光盘只读存储器(CD ROM)、数字多功能盘(DVD)等)等等。计算机可读媒体可以存储指令。
指令还可以体现在用于电、光学、声学或其它形式的传播信号如载波、红外信号、数字信号等的数字和模拟通信链路中。然而,如载波、红外信号、数字信号等传播信号不是有形的机器可读媒体并且未被配置成存储指令。
通常,机器可读媒体包含以机器(例如,计算机、网络装置、个人数字助理、制造工具、具有一组一或多个处理器的任何装置等)可存取的形式提供(即,存储和/或传输)信息的任何机构。
在各个实施例中,硬接线电路系统可以与软件指令组合使用以实施所述技术。因此,所述技术既不限于硬件电路系统与软件的任何具体组合,也不限于用于由数据处理系统执行的指令的任何特定源。
以上描述和附图是说明性的并且不应被解释为限制性的。描述了许多具体细节以提供透彻理解。然而,在某些情况下,未对公知的或常规的细节进行描述,以避免模糊所述描述。在本公开中对一个(one/an)实施例的引用不一定是对相同实施例的引用;并且,此类引用意指至少一个。
在前述说明书中,已经参考本公开的具体示例性实施例描述了本公开。将显而易见的是,在不脱离如以下权利要求中阐述的更广泛的精神和范围的情况下,可以对本公开进行各种修改。因此,说明书和附图应被视为说明性意义的,而不是限制性意义的。
Claims (21)
1.一种计算装置,所述计算装置是承租方装置,所述承租方装置包括:
通信装置,所述通信装置被配置成通过有线或无线网络连接进行通信;
本地存储器;以及
至少一个微处理器,所述至少一个微处理器耦接到所述本地存储器,所述微处理器具有存储器管理单元,所述存储器管理单元被配置成将由所述微处理器所使用的虚拟存储器地址转换成所述本地存储器的物理存储器地址并且根据从所述虚拟存储器地址转换而来的所述物理存储器地址对所述本地存储器进行存取;
其中所述承租方装置被配置成:
使用所述通信装置与出租方装置进行通信;
在所述出租方装置处对一定量的存储器进行存取;
使用所述承租方装置上的一定量的本地存储器和所述出租方装置上的一定量的存储器针对在所述至少一个微处理器上运行的应用程序扩展所述承租方装置的存储器容量;并且
通过所述承租方装置与所述出租方装置之间通过所述通信装置进行的通信来为由所述应用程序对虚拟存储器进行的存取提供服务。
2.根据权利要求1所述的承租方装置,其中所述承租方装置被进一步配置成:
将虚拟存储器的页分配给应用程序并且将此页映射到所述出租方装置的借出存储器中的页,所述借出存储器是所述出租方装置的存储器的由所述出租方装置借出或提供给所述承租方装置以进行存储器分配和存取的一部分;并且
响应于使用所述虚拟存储器的映射到所述借出存储器的页的所述页在所述微处理器中执行所述应用程序而将页从所述出租方装置的所述借出存储器迁移到所述承租方装置中的所述本地存储器中的页。
3.根据权利要求2所述的承租方装置,其中所述承租方装置被进一步配置成:
在映射到所述本地存储器的页的所述虚拟页在一段时间内未使用之后,将所述虚拟存储器的映射到所述承租方装置的本地存储器的所述页从所述承租方装置的所述本地存储器迁移到所述出租方装置上的所述借出存储器的页;并且
将经迁移的页重新映射到所述出租方装置上的所述借出存储器的所述页。
4.根据权利要求1所述的承租方装置,其中所述存储器管理单元包含转译后备缓冲器,所述转译后备缓冲器被配置成:高速缓存页表的一部分;响应于所述转译后备缓冲器或所述至少一个微处理器在对虚拟存储器的页进行存取时标识出页错误,所述承租方装置被进一步配置成:
通过与所述出租方装置通过所述通信装置进行的通信来检索存储于所述出租方装置中的借出存储器的页中的页内容;
在所述承租方装置的所述本地存储器中分配页;
将检索到的借入页内容存储于在所述本地存储器中所分配的所述页中,所述借入页是在所述出租方装置的所述借出存储器中检索到其内容并且其内容通过所述通信装置传送到所述承租方装置的页;
生成页表条目,所述页表条目将所述虚拟存储器的所述页映射到在所述本地存储器中所分配的所述页;
将此页表条目存储于所述本地存储器中的所述页表中;并且
将所述页表条目加载到所述转译后备缓冲器中以解决所述页错误。
5.根据权利要求4所述的承租方装置,其中所述承租方装置被进一步配置成:
从所述承租方装置的所述本地存储器中解除分配所述借入页。
6.根据权利要求4所述的承租方装置,其中所述承租方装置被进一步配置成:
将所述借入页返回给所述出租方装置。
7.根据权利要求4所述的承租方装置,其中所述承租方装置被进一步配置成:
将在所述承租方装置的所述本地存储器中所分配的所述借入页的当前内容传输到所述出租方装置的所述借出存储器中的页;
将所述页表条目从所述转译后备缓冲器和所述承租方装置的所述页表中移除;并且
更新所述页表条目以将所述虚拟存储器的页映射到所述出租方装置中的所述借出存储器的页。
8.根据权利要求4所述的承租方装置,其中所述承租方装置被进一步配置成:
在所述出租方装置的所述借出存储器中分配新的页;
将存储于在所述本地存储器中所分配的所述页中的当前内容传输到所述出租方装置的所述借出存储器的所述新的页;
将所述页表条目从所述转译后备缓冲器和所述承租方装置的页表中移除;并且
更新所述页表条目以将所述虚拟存储器的页映射到所述出租方装置的所述借出存储器中的所述新的页。
9.根据权利要求1所述的承租方装置,其中所述微处理器和所述本地存储器被配置在同一计算机芯片中;所述承租方装置被进一步配置成将存储器出租给至少一个另外的承租方装置;并且所述出租方装置被进一步配置成从至少一个另外的出租方装置借入存储器。
10.根据权利要求1所述的承租方装置,其中所述承租方装置的操作系统的一部分为了通过所述出租方装置的操作系统在所述出租方装置中执行而被虚拟化。
11.根据权利要求1所述的承租方装置,其中所述出租方装置提供所述一定量的存储器作为虚拟存储器装置;并且所述承租方装置被进一步配置成使得所述虚拟存储器装置可用于所述承租方装置中以扩展为所述承租方装置服务的所述存储器容量。
12.一种计算装置,所述计算装置是出租方装置,所述出租方装置包括:
至少一个通信装置,所述至少一个通信装置被配置成通过有线或无线网络连接进行通信;
本地存储器;以及
至少一个微处理器,所述至少一个微处理器耦接到所述本地存储器,所述微处理器具有存储器管理单元,所述存储器管理单元被配置成将由所述微处理器所使用的虚拟存储器地址转换成所述本地存储器的物理存储器地址并且根据从所述虚拟存储器地址转换而来的所述物理存储器地址对所述本地存储器进行存取;
其中所述出租方装置被配置成:
使用所述至少一个通信装置与承租方装置进行通信;
为所述承租方装置提供对所述出租方装置的一定量的本地存储器的存取以扩展所述承租方装置的存储器容量;并且
通过所述出租方装置与所述承租方装置之间进行的通信来为由所述承租方装置对所述出租方装置的所述一定量的本地存储器进行的存取提供服务。
13.根据权利要求12所述的出租方装置,其中所述出租方装置被进一步配置成:
使用所述至少一个通信装置与承租方装置进行通信;
将一定量的存储器出租给所述承租方装置;
至少使用所述承租方装置的所述存储器和所述出租方装置的所述一定量的本地存储器针对在所述至少一个微处理器上运行的应用程序扩展所述承租方装置的存储器容量;并且
通过所述承租方装置从所述出租方装置借入的所述存储器并且通过所述出租方装置与所述承租方装置之间进行的通信来为由所述承租方装置对所述出租方装置的所述一定量的本地存储器进行的存取的一部分提供服务。
14.根据权利要求13所述的出租方装置,其进一步包括:
随机存取存储器;
其中所述出租方装置被进一步配置成:
提供所述随机存取存储器的一部分作为出租给所述承租方装置的量;并且
使用所述随机存取存储器的所述一部分为由所述承租方装置对出租给所述承租方装置的所述一定量的存储器进行的存取提供服务。
15.根据权利要求14所述的出租方装置,其中所述随机存取存储器耦接到存储器总线。
16.根据权利要求14所述的出租方装置,其中所述随机存取存储器耦接到外围总线;并且所述出租方装置进一步包括:
固态驱动器,所述固态驱动器含有所述随机存取存储器和连接到所述外围总线的控制器。
17.根据权利要求12所述的出租方装置,其中所述出租方装置被进一步配置成从至少一个另外的出租方装置借入存储器,并且所述承租方装置被进一步配置成将存储器出租给至少一个另外的承租方装置。
18.一种计算机系统,其包括:
第一计算装置,所述第一计算装置具有本地存储器和微处理器;
第二计算装置,所述第二计算装置通过第一通信链路连接到所述第一计算装置;以及
第三计算装置,所述第三计算装置具有本地存储器并且通过第二通信链路连接到所述第二计算装置;
其中所述第二计算装置被配置成借入所述第三计算装置的第一量的存储器并且将第二量的存储器出租给所述第一计算装置,所述第二量的存储器至少包含所述第三计算装置的由所述第二计算装置从所述第三计算装置借入的所述第一量的存储器;并且
其中所述第二计算装置被配置成使用从所述第三计算装置借入的所述第一量的存储器来扩展所述第二计算装置的存储器容量;并且
其中所述第一计算装置被配置成使用从所述第二计算装置借入的所述第二量的存储器来扩展所述第一计算装置的存储器容量。
19.根据权利要求18所述的计算机系统,其中所述第一计算装置是可穿戴计算装置、移动装置或物联网(IoT)的计算装置;所述第一通信链路是无线局域网、无线个域网或局域网;所述第二计算装置是移动计算装置、个人计算机或计算器件;所述第二通信链路是局域网或互联网;并且所述第三计算装置是服务器计算机或服务器场。
20.根据权利要求18所述的计算机系统,其中所述第一量的存储器、所述第二量的存储器和所述第三量的存储器中的至少一个量的存储器在所述第一计算装置、所述第二计算装置和所述第三计算装置中的至少一个计算装置的存储器管理单元中是字节可寻址的;并且所述第一计算装置、所述第二计算装置和所述第三计算装置的操作系统彼此进行通信,以促进由在所述第一计算装置、所述第二计算装置和所述第三计算装置中的至少一个计算装置上运行的应用程序对所述第一量的存储器、所述第二量的存储器和所述第三量的存储器中的至少一个量的存储器的存取。
21.根据权利要求18所述的计算机系统,其中所述第一通信链路和所述第二通信链路中的至少一个通信链路是通过第五代蜂窝网络建立的。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/424,411 US11438414B2 (en) | 2019-05-28 | 2019-05-28 | Inter operating system memory services over communication network connections |
US16/424,411 | 2019-05-28 | ||
PCT/US2020/029294 WO2020242663A1 (en) | 2019-05-28 | 2020-04-22 | Inter operating system memory services over communication network connections |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113892091A true CN113892091A (zh) | 2022-01-04 |
Family
ID=73550053
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080039008.2A Pending CN113892091A (zh) | 2019-05-28 | 2020-04-22 | 通过通信网络连接的操作系统间存储器服务 |
Country Status (5)
Country | Link |
---|---|
US (2) | US11438414B2 (zh) |
KR (1) | KR20220002746A (zh) |
CN (1) | CN113892091A (zh) |
DE (1) | DE112020002583T5 (zh) |
WO (1) | WO2020242663A1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11334387B2 (en) | 2019-05-28 | 2022-05-17 | Micron Technology, Inc. | Throttle memory as a service based on connectivity bandwidth |
US11061819B2 (en) | 2019-05-28 | 2021-07-13 | Micron Technology, Inc. | Distributed computing based on memory as a service |
US11100007B2 (en) | 2019-05-28 | 2021-08-24 | Micron Technology, Inc. | Memory management unit (MMU) for accessing borrowed memory |
US11256624B2 (en) | 2019-05-28 | 2022-02-22 | Micron Technology, Inc. | Intelligent content migration with borrowed memory |
US11169930B2 (en) | 2019-05-28 | 2021-11-09 | Micron Technology, Inc. | Fine grain data migration to or from borrowed memory |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120271903A1 (en) * | 2011-04-19 | 2012-10-25 | Michael Luna | Shared resource and virtual resource management in a networked environment |
US20140280669A1 (en) * | 2013-03-15 | 2014-09-18 | Microsoft Corporation | Memory Sharing Over A Network |
Family Cites Families (43)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6925547B2 (en) | 2000-12-14 | 2005-08-02 | Silicon Graphics, Inc. | Remote address translation in a multiprocessor system |
US6810472B2 (en) | 2002-06-24 | 2004-10-26 | Intel Corporation | Page handling efficiency in a multithreaded processor |
US6922766B2 (en) | 2002-09-04 | 2005-07-26 | Cray Inc. | Remote translation mechanism for a multi-node system |
US7788669B2 (en) * | 2003-05-02 | 2010-08-31 | Microsoft Corporation | System for isolating first computing environment from second execution environment while sharing resources by copying data from first portion to second portion of memory |
JP3892829B2 (ja) | 2003-06-27 | 2007-03-14 | 株式会社東芝 | 情報処理システムおよびメモリ管理方法 |
US7269708B2 (en) | 2004-04-20 | 2007-09-11 | Rambus Inc. | Memory controller for non-homogenous memory system |
JP4857020B2 (ja) | 2006-05-08 | 2012-01-18 | 株式会社日立製作所 | ストレージシステム |
JP2007328611A (ja) | 2006-06-08 | 2007-12-20 | Hitachi Ltd | ストレージ仮想化システム及び方法 |
JP4842720B2 (ja) | 2006-06-29 | 2011-12-21 | 株式会社日立製作所 | ストレージシステム及びデータ複製方法 |
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 |
US8607020B2 (en) | 2008-06-06 | 2013-12-10 | International Business Machines Corporation | Shared memory partition data processing system with hypervisor managed paging |
CN102388381B (zh) | 2009-01-23 | 2015-02-25 | 惠普开发有限公司 | 用于分配共享存储资源的系统和方法 |
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 |
US9292471B2 (en) | 2011-02-18 | 2016-03-22 | Honda Motor Co., Ltd. | Coordinated vehicle response system and method for driver behavior |
WO2012160629A1 (ja) | 2011-05-20 | 2012-11-29 | 富士通株式会社 | データ処理方法 |
US9253051B2 (en) | 2012-02-23 | 2016-02-02 | Ericsson Ab | System and method for delivering content in a content delivery network |
US9996370B1 (en) * | 2012-04-18 | 2018-06-12 | Open Invention Network Llc | Page swapping in virtual machine environment |
WO2014087518A1 (ja) | 2012-12-06 | 2014-06-12 | 株式会社 日立製作所 | ネットワークシステム及びその運用方法 |
KR101442091B1 (ko) | 2012-12-31 | 2014-09-25 | 고려대학교 산학협력단 | 가상화 시스템에서의 메모리 관리 방법 |
US9311011B2 (en) | 2013-08-07 | 2016-04-12 | Qualcomm Incorporated | Dynamic address negotiation for shared memory regions in heterogenous multiprocessor systems |
CN104426971B (zh) | 2013-08-30 | 2017-11-17 | 华为技术有限公司 | 一种远程内存交换分区方法、装置及系统 |
JP6179321B2 (ja) | 2013-09-27 | 2017-08-16 | 富士通株式会社 | ストレージ管理装置、制御方法及び制御プログラム |
US10331997B2 (en) | 2014-05-07 | 2019-06-25 | Seagate Technology Llc | Adaptive configuration of a neural network device |
WO2015191048A1 (en) | 2014-06-10 | 2015-12-17 | Hewlett-Packard Development Company, L.P. | Replicating data using remote direct memory access (rdma) |
US9632901B2 (en) | 2014-09-11 | 2017-04-25 | Mellanox Technologies, Ltd. | Page resolution status reporting |
US9626108B2 (en) | 2014-09-16 | 2017-04-18 | Kove Ip, Llc | Dynamically provisionable and allocatable external memory |
KR101700315B1 (ko) | 2014-12-12 | 2017-01-26 | 국민대학교산학협력단 | 스크래치패드 메모리 관리 방법, 이를 수행하는 스크래치패드 메모리 관리 장치 및 이를 저장하는 기록매체 |
US9892037B2 (en) | 2014-12-29 | 2018-02-13 | International Business Machines Corporation | Efficient and secure direct storage device sharing in virtualized environments |
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 |
US11200168B2 (en) | 2018-12-10 | 2021-12-14 | International Business Machines Corporation | Caching data from remote memories |
US11169930B2 (en) | 2019-05-28 | 2021-11-09 | Micron Technology, Inc. | Fine grain data migration to or from borrowed memory |
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 |
US11334387B2 (en) | 2019-05-28 | 2022-05-17 | Micron Technology, Inc. | Throttle memory as a service based on connectivity bandwidth |
-
2019
- 2019-05-28 US US16/424,411 patent/US11438414B2/en active Active
-
2020
- 2020-04-22 CN CN202080039008.2A patent/CN113892091A/zh active Pending
- 2020-04-22 KR KR1020217042922A patent/KR20220002746A/ko not_active Application Discontinuation
- 2020-04-22 DE DE112020002583.7T patent/DE112020002583T5/de active Pending
- 2020-04-22 WO PCT/US2020/029294 patent/WO2020242663A1/en active Application Filing
-
2022
- 2022-08-30 US US17/899,265 patent/US20220417326A1/en active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120271903A1 (en) * | 2011-04-19 | 2012-10-25 | Michael Luna | Shared resource and virtual resource management in a networked environment |
US20140280669A1 (en) * | 2013-03-15 | 2014-09-18 | Microsoft Corporation | Memory Sharing Over A Network |
Also Published As
Publication number | Publication date |
---|---|
US20220417326A1 (en) | 2022-12-29 |
US20200382590A1 (en) | 2020-12-03 |
WO2020242663A1 (en) | 2020-12-03 |
DE112020002583T5 (de) | 2022-03-31 |
US11438414B2 (en) | 2022-09-06 |
KR20220002746A (ko) | 2022-01-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US12019549B2 (en) | Intelligent content migration with borrowed memory | |
CN113906399B (zh) | 基于连接带宽节制存储器即服务 | |
CN112015677B (zh) | 实施于计算装置中的方法、计算装置和非暂时性计算机存储介质 | |
US20220417326A1 (en) | Inter Operating System Memory Services over Communication Network Connections | |
CN113906384B (zh) | 人工神经网络(ann)应用程序中的存储器即服务 | |
CN113994313B (zh) | 基于存储器即服务的分布式计算 | |
US11657002B2 (en) | Memory management unit (MMU) for accessing borrowed memory | |
US20200319913A1 (en) | System, apparatus and method for accessing multiple address spaces via a virtualization device |
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 |