DE112020002575T5 - Drosselung von speicher als dienst auf grundlage der verbindungsbandbreite - Google Patents

Drosselung von speicher als dienst auf grundlage der verbindungsbandbreite Download PDF

Info

Publication number
DE112020002575T5
DE112020002575T5 DE112020002575.6T DE112020002575T DE112020002575T5 DE 112020002575 T5 DE112020002575 T5 DE 112020002575T5 DE 112020002575 T DE112020002575 T DE 112020002575T DE 112020002575 T5 DE112020002575 T5 DE 112020002575T5
Authority
DE
Germany
Prior art keywords
memory
content
storage
virtual
page
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
Application number
DE112020002575.6T
Other languages
English (en)
Inventor
Sean Stephen Eilert
Ameen D. Akel
Samuel E. Bradshaw
Kenneth Marion Curewitz
Dmitri Yudanov
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Micron Technology Inc
Original Assignee
Micron Technology Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Micron Technology Inc filed Critical Micron Technology Inc
Publication of DE112020002575T5 publication Critical patent/DE112020002575T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0284Multiple user address space allocation, e.g. using different base addresses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0615Address space extension
    • G06F12/063Address space extension for I/O modules, e.g. memory mapped I/O
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1072Decentralised address translation, e.g. in distributed shared memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • G06F13/1663Access to shared memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation 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/5016Allocation 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation 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/5022Mechanisms to release resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0896Bandwidth or capacity management, i.e. automatically increasing or decreasing capacities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9063Intermediate storage in different physical parts of a node or terminal
    • H04L49/9078Intermediate storage in different physical parts of a node or terminal using an external memory or storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/152Virtualized environment, e.g. logically partitioned system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/154Networked environment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/502Control mechanisms for virtual memory, cache or TLB using adaptive policy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Human Computer Interaction (AREA)
  • Health & Medical Sciences (AREA)
  • Mathematical Physics (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Biophysics (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Biomedical Technology (AREA)
  • Artificial Intelligence (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Life Sciences & Earth Sciences (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

Es werden Systeme, Verfahren und Vorrichtungen zur Drosselung von Netzwerkkommunikationen für Speicher als Dienst beschrieben. Zum Beispiel kann eine Rechenvorrichtung eine Menge an Direktzugriffsspeicher der Leihgebervorrichtung über eine Kommunikationsverbindung zwischen der Leihgebervorrichtung und der Rechenvorrichtung ausleihen. Die Rechenvorrichtung kann virtuellen Speicher Anwendungen zuweisen, die in der Rechenvorrichtung laufen, und mindestens einen Teil des virtuellen Speicher so konfigurierten, dass er in der Menge an Speicher, die der Rechenvorrichtung von der Leihgebervorrichtung geliehen wird, gehostet wird. Die Rechenvorrichtung kann Datenkommunikationen, die von den Speicherbereichen beim Zugreifen auf die Menge an Speicher über die Datenverbindung verwendet werden, gemäß den Kritikalitätsstufen der in den Speicherbereichen gespeicherten Inhalte drosseln.

Description

  • VERWANDTE PATENTANMELDUNG
  • Die vorliegende Anmeldung beansprucht Priorität gegenüber US-Pat. Anm. Ser. Nr. 16/424,413 , eingereicht am 28. Mai 2019, mit dem Titel „DROSSELUNG VON SPEICHER ALS DIENST AUF GRUNDLAGE DER VERBINDUNGSBANDBREITE“, deren gesamte Offenbarung hiermit durch Bezugnahme aufgenommen wird.
  • GEBIET DER TECHNIK
  • Zumindest einige der hier offenbarten Ausführungsformen beziehen sich auf Speicherdienste, die von Betriebssystemen bereitgestellt werden.
  • STAND DER TECHNIK
  • In einigen Computersystemen erlaubt ein Betriebssystem einem Anwendungsprogramm, virtuelle Adressen des Speichers zu verwenden, um Daten in Speicherkomponenten eines oder mehrerer Speicherteilsysteme des Computersystems zu speichern oder Daten daraus abzurufen. Das Betriebssystem definiert das Abbilden zwischen den virtuellen Speicheradressen und den physischen Speicheradressen eines oder mehrerer Speicherteilsysteme, die mit der Zentralverarbeitungseinheit (Central Processing Unit, CPU) und/oder einer Grafikverarbeitungseinheit (Graphics Processing Unit, GPU) und/oder einem System-On-a-Chip (SoC) des Computersystems verbunden sind. Eine solche Abbildung kann durch die Verwendung von Seitentabellen definiert werden. Ein Seitentabelleneintrag spezifiziert die Abbildung zwischen einem Satz virtueller Speicheradressen einer virtuellen Speicherseite und einem entsprechenden Satz physischer Speicheradressen einer physischen Speicherseite. Die Seitentabellen können verwendet werden, um die für virtuelle Speicheradressen angeforderten Speicherzugriffe durch Übersetzung der virtuellen Speicheradressen in entsprechende physische Speicheradressen der Speicherteilsysteme zu realisieren.
  • Ein Computerprozessor kann über eine Speicherverwaltungseinheit (emory management unit, MMU) verfügen, die so konfiguriert ist, dass sie die Übersetzung von virtuellen Speicheradressen in physische Speicheradressen gemäß den vom Betriebssystem definierten Seitentabellen durchführt. Die Speicherverwaltungseinheit (MMU) kann über einen Adressumsetzpuffer (Translation Lookaside Buffer, TLB) verfügen, der so konfiguriert ist, dass er die zuletzt verwendeten Seitentabelleneinträge zwischenspeichert. Die Speicherverwaltungseinheit (MMU) kann andere speicherbezogene Aufgaben wie Cache-Steuerung und/oder Speicherschutz übernehmen.
  • Im Allgemeinen kann ein virtueller Adressraum für den Speicher in einem Computer in Seiten einer bestimmten Größe unterteilt werden. Eine Seite des virtuellen Speichers wird durch die Sammlung der virtuellen Speicheradressen dargestellt; die virtuellen Speicheradressen können auf die physischen Speicheradressen einer Seite des physischen Speichers in den Speicherteilsystemen abgebildet werden; Seitentabelleneinträge definieren die Adressabbildung zwischen der Seite des virtuellen Speichers und der Seite des physischen Speichers.
  • In einigen Computersystemen kann ein Betriebssystem eine Paging-Technik verwenden, um über eine Speicherseite in einem Speichermodul auf eine Datenseite in einem Speicher oder einer Speichervorrichtung zuzugreifen. Zu verschiedenen Zeitpunkten kann dieselbe Speicherseite in einem Speichermodul als Proxy für den Zugriff auf verschiedene Speicherseiten in der Speichervorrichtung oder einer anderen Speichervorrichtung im Computersystem verwendet werden.
  • Direkter Remotespeicherzugriff (Remote direct memory access, RDMA) ist eine Technik, die den direkten Speicherzugriff von einem Computer auf einen anderen ermöglicht, ohne dass die Betriebssysteme der beteiligten Computer beteiligt sind (z. B. nachdem die Betriebssysteme ausgeführt wurden, um die Speicherressourcen für RDMA-Operationen auszuhandeln und einzurichten). Vor einem RDMA-Vorgang (z. B. Lesen oder Schreiben) werden Befehle ausgeführt, um eine Speicherabbildung zwischen den beiden Computern über eine oder mehrere Netzwerkvorrichtungen herzustellen. Wenn eine auf einem Computer laufende Anwendung einen RDMA-Vorgang ausführt, werden die Anwendungsdaten direkt über das Computernetzwerk übertragen, was die Latenzzeit verringert und eine schnelle Datenübertragung ermöglicht. RDMA verwendet einen Netzwerkadapter, um Daten in den oder aus dem Anwendungsspeicher zu übertragen, wodurch das Kopieren von Daten zwischen dem Anwendungsspeicher und den Datenpuffern des Betriebssystems entfällt.
  • Figurenliste
  • Die Ausführungsformen werden als Beispiel und nicht als Einschränkung in den Figuren der beigefügten Zeichnungen veranschaulicht, in denen gleiche Bezugszeichen ähnliche Komponenten bezeichnen.
    • 1 zeigt ein System, in dem eine Rechenvorrichtung oder ein Server-Computer Speicher von einer anderen Rechenvorrichtung und/oder einem anderen Server-Computer ausleihen und/oder ihm Speicher leihen kann.
    • 2 veranschaulicht eine Leihnehmervorrichtung und eine Leihnehmervorrichtung, die gemäß einer Ausführungsform Speicherdienste zwischen Betriebssystemen über Kommunikationsnetzwerkverbindungen implementieren.
    • 3 veranschaulicht eine Technik zur Verwendung von ausgeliehenem Speicher gemäß einer Ausführungsform.
    • 4 veranschaulicht die Verwendung eines physischen Speicherbereichs zur Erleichterung des Zugriffs auf verschiedene ausgeliehene Speicherbereiche gemäß einer Ausführungsform.
    • 5 veranschaulicht eine weitere Verwendung eines physischen Speicherbereichs zur Erleichterung des Zugriffs auf verschiedene ausgeliehene Speicherbereiche gemäß einer Ausführungsform.
    • 6 veranschaulicht eine Leihnehmer-/Leihgeber-Speicherhierarchie in einem Rechensystem.
    • 7 zeigt ein Verfahren zur Implementierung von Speicherdiensten zwischen Betriebssystemen über Kommunikationsnetzwerkverbindungen.
    • 8 zeigt ein Verfahren zur Wartung einer Seite eines ausgeliehenen Speichers gemäß einer Ausführungsform.
    • 9 zeigt eine Leihnehmervorrichtung mit Speicherbereichen unterschiedlicher Kritikalitätsstufen, auf deren Grundlage der Netzwerkverkehr für Speicher als Dienst gedrosselt werden kann.
    • 10 veranschaulicht die Kennzeichnung der Kritikalitätsstufen von Speicherbereichen in einer Speicherabbildung gemäß einer Ausführungsform.
    • 11 veranschaulicht ein Verfahren zur Ermittlung der Kritikalitätsstufe eines Speicherbereichs gemäß einer Ausführungsform.
    • 12 zeigt ein Verfahren zur Drosselung der Netzwerkkommunikation für Speicher als Dienst gemäß einer Ausführungsform.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Mindestens einige der hier offenbarten Ausführungsformen stellen Techniken für Speicherdienste zwischen Betriebssystemen über Kommunikationsnetzwerkverbindungen bereit, so dass eine Leihnehmervorrichtung ihre Speicherkapazität durch Nutzung einer Kommunikationsverbindung und des Speichers einer Leihgebervorrichtung erweitern kann. Die Betriebssysteme der Leihnehmervorrichtung und/oder der Leihgebervorrichtung können so konfiguriert werden, dass sie die Lücke über die Kommunikationsverbindung nahtlos überbrücken, so dass Anwendungsprogramme, die auf der Leihnehmervorrichtung laufen, ihren lokalen Speicher und den ausgeliehenen Speicher ohne Unterschied nutzen können. Der lokale Speicher ist physisch in der Leihnehmervorrichtung installiert, und der ausgeliehene Speicher ist physisch in einer Leihgebervorrichtung installiert, die mit der Leihnehmervorrichtung über eine Kommunikationsverbindung verbunden ist.
  • Optional kann ein Teil des ausgeliehenen Speichers und/oder des lokalen Speichers in der Leihnehmervorrichtung über ein Computernetzwerk an eine andere Vorrichtung ausgeliehen werden. Eine Leihnehmervorrichtung kann mehrere Leihgebervorrichtungen aufweisen. So kann eine Hierarchie von Leihnehmer- und Leihgebervorrichtungen auf einer Hierarchie von Kommunikationsverbindungen zwischen den Vorrichtungen gebildet werden.
  • Das Betriebssystem der Leihnehmervorrichtung kann eine Abbildung des virtuellen auf den physischen Speicher verwenden, um die Unterschiede zwischen dem lokalen Speicher und dem ausgeliehenen Speicher zu überbrücken. Beispielsweise kann das Betriebssystem der Leihnehmervorrichtung als Reaktion auf einen Fehlschlag im Adressumsetzpuffer (TLB) der Leihnehmervorrichtung, der zur Feststellung eines Seitenfehlers führen kann, einen Seitentabelleneintrag (Page Table Entry, PTE) manipulieren, um einen Teil des lokalen Speichers der Leihnehmervorrichtung als Apertur, Proxy und/oder Cache beim Zugriff auf den ausgeliehenen Speicher über eine Kommunikationsverbindung zu verwenden. Die Cache-Kohärenz zwischen der Leihgebervorrichtung und der Leihnehmervorrichtung kann zur besseren Bandbreitennutzung gelockert werden. Da die Unterschiede zwischen dem lokalen Speicher und dem ausgeliehenen Speicherbereich durch das Betriebssystem der Leihnehmervorrichtung von den auf der Leihnehmervorrichtung laufenden Anwendungen abgeschirmt werden, kann eine auf der Leihnehmervorrichtung laufende Anwendung auf den ausgeliehenen Speicher in der gleichen Weise zugreifen wie auf den in der Leihnehmervorrichtung konfigurierten lokalen Direktzugriffsspeicher.
  • Die Speicherdienste der Betriebssysteme können zum Aufbau eines mehrstufigen byteadressierbaren Speichers in einem Computersystem unter einem einheitlichen Adressraum verwendet werden, der von mehreren Betriebssystemen über nicht kohärente Kommunikationsverbindungen gemeinsam genutzt wird. Beispielsweise kann eine tragbare Rechenvorrichtung über ein Personal Area Network oder ein lokales Netz Speicher von einer mobilen Rechenvorrichtung ausleihen. Bei der tragbaren Rechenvorrichtung kann es sich um eine intelligente Uhr, ein Bewegungsverfolgungsgerät oder eine intelligente Brille handeln, und bei der mobilen Rechenvorrichtung kann es sich um ein Smartphone, einen Touchpad-Computer oder ein Notebook usw. handeln. Die tragbare Rechenvorrichtung und/oder die mobile Rechenvorrichtung können über ein lokales Netzwerk Speicher von einem Rechengerät ausleihen. Bei dem Rechengerät kann es sich zum Beispiel um einen Mini-Server, einen Desktop-Computer, ein Speichergerät oder ein Aufbewahrungsgerät usw. handeln. Die mobile Rechenvorrichtung und/oder das Rechengerät kann über das Internet und/oder über Cloud Computing Speicher von einem Server-Computer oder einer Server-Farm ausleihen.
  • In einer mehrstufigen Hierarchie von Leihgebern und Leihnehmern von Speicherressourcen kann jede nachfolgende Vorrichtung der höheren Ebene (z. B. eine mobile Rechenvorrichtung, ein Rechengerät, ein Servercomputer oder eine Serverfarm) ihre Speicherkapazität nutzen, um bei Bedarf die Speicherkapazität von Vorrichtungen der niedrigeren Ebene (z. B. eine tragbare Rechenvorrichtung, eine mobile Rechenvorrichtung, ein Rechengerät) und/oder von Vorrichtungen der gleichen Ebene zu erhöhen. IoT-Vorrichtungen werden die Umgebung bilden, wie z. B. Baumaterialien (Betonwände, Straßen usw.). Es könnte sein, dass billige Speichertechnologien mit geringer Dichte, die aber sehr sperrig sind, es ermöglichen werden, Speicher (und Rechenleistung) mit geringer Dichte zu sehr niedrigen Kosten in die Konstruktion zu integrieren. Wir werden also eine Art „Speichermaterie“ (oder vielleicht auch Rechenmaterie) als Teil der Umgebung aufweisen, die jede Vorrichtung nutzen kann.
  • Optional können einige Ebenen in der Hierarchie übersprungen werden, abhängig von der Verfügbarkeit bestimmter Vorrichtungen und/oder Netzwerkverbindungen. So kann beispielsweise eine tragbare Rechenvorrichtung Speicher von einer Rechenvorrichtung ausleihen, ohne den Umweg über eine mobile Rechenvorrichtung zu nehmen, und eine mobile Rechenvorrichtung kann über das Internet Speicher von einem Server-Computer oder einer Server-Farm ausleihen, ohne den Umweg über eine Rechenvorrichtung in einem lokalen Netzwerk zu nehmen.
  • Auf der Appliance- und Cloud-Ebene können Speicherressourcen mit Memory as a Service (MaaS) als Dienstprogramm bereitgestellt werden. Eine solche Anordnung kann Rechenvorrichtungen auf niedriger Ebene, wie z. B. tragbare Rechenvorrichtungen, mobile Rechenvorrichtungen und/oder Rechenvorrichtungen des Internets der Dinge, mit enormer dauerhafter Speicherkapazität und Aufbewahrungsressourcen auf Anfrage bereitstellen. Anwendungen, die auf den Rechenvorrichtungen der unteren Ebene laufen, können die von den Betriebssystemen bereitgestellten Speicherdienste nutzen, um den ausgeliehenen Speicher auf transparente Weise zu verwenden, als ob der ausgeliehene Speicher Teil des lokalen Speichers der Leihnehmervorrichtungen wäre. Daher ist in den Anwendungen keine besondere Programmierung erforderlich, um den ausgeliehenen Speicher zu nutzen.
  • Die Anwendungen, die auf den Leihnehmervorrichtungen laufen, können den ausgeliehenen Speicher nutzen, um Daten dauerhaft zu speichern, so dass die Notwendigkeit, Daten über ein Dateisystem zu speichern, entfällt oder reduziert wird. Zum Beispiel kann ein Leihgebergerät/Server einen persistenten Direktzugriffsspeicher oder eine Speicherkapazität bereitstellen, um Leihnehmervorrichtungen Speicherressourcen anzubieten und die Persistenz und/oder Redundanz der in den angebotenen Speicherressourcen gespeicherten Daten zu verwalten, so dass der ausgeliehene Speicher in den Leihnehmervorrichtungen als virtueller nichtflüchtiger Direktzugriffsspeicher behandelt werden kann.
  • Optional kann der als Dienst bereitgestellte Speicher eine Semantik für die gemeinsame Nutzung von Speicherseiten durch Clients/Borrowers, Sperrmechanismen, Time-out-Mechanismen usw. beinhalten.
  • Beispielsweise kann ein Telefon als Leihnehmervorrichtung über ein drahtloses lokales Netzwerk (WLAN) (z. B. über einen Wi-Fi-Zugangspunkt zu Hause) 8 Terabyte (TB) beobachtbaren Speicher von einem Speichergerät beziehen, das als Leihgebervorrichtung fungiert. Die 8 TB Arbeitsspeicher sind für Anwendungen, die unter dem Betriebssystem des Telefons laufen, genauso sichtbar wie für Anwendungen, die auf einem Telefon mit 8 TB lokalem Speicher laufen. Alternativ kann das Telefon 8 TB beobachtbaren Speicher über ein Mobilfunknetz von einem Server oder der Cloud-Computing-Infrastruktur beziehen, der als Leihgebervorrichtung konfiguriert ist. Optional kann das Telefon einen Teil der 8 TB des beobachtbaren Speichers von dem Speichergerät und einen Teil der 8 TB des beobachtbaren Speichers von dem Server oder der Cloud-Computing-Infrastruktur ausleihen. Die 8 TB des beobachtbaren Speichers können vom Betriebssystem des Telefons virtuell zur Verfügung gestellt werden, so dass Anwendungen, die auf dem Telefon laufen, den virtuellen/entfernten Speicher nutzen können, auch wenn das Telefon nur 8 Megabyte (MB) physischen lokalen Speicher aufweist. Die 8 TB des ausgeliehenen Speichers erweitern die Speicherkapazität des Telefons auf über 8 TB; und für Anwendungen, die auf dem Telefon mit ausgeliehenem Speicher laufen, scheint die Speicherkapazität des Telefons die gleiche zu sein wie bei einem Telefon, das mehr als 8 TB lokalen Direktzugriffsspeicher aufweist.
  • Da die Leihnehmervorrichtungen den ausgeliehenen Speicher in der Regel nicht sofort verwenden, müssen die Leihgebervorrichtungen den der ausgeliehenen Vorrichtung ausgeliehenen Speicher bei der Ausleihe nicht blockweise zuweisen. Die Leihgebervorrichtungen können eine dünne Bereitstellung von Speicher implementieren (z. B. eine dünne Bereitstellung von Speicher) und den Speicher inkrementell zuweisen, wenn die Leihnehmervorrichtung eine zunehmende Menge des geliehenen Speichers verwendet.
  • Die unter dem Betriebssystem einer Leihnehmervorrichtung laufenden Anwendungen können bei Bedarf Speicherseiten lesen und schreiben, die von der/den Leihgebervorrichtung(en) ausgeliehen wurden. Die physische Seitenzuweisung in einer Leihgebervorrichtung und/oder eine entsprechende Zuweisung in einer Leihnehmervorrichtung kann so konfiguriert werden, dass sie als Reaktion auf einen Schreibvorgang auf der Seite durchgeführt wird. Ein Teil des lokalen Speichers der Leihnehmervorrichtung kann beim Zugriff auf eine ausgeliehene Seite als Cache, Proxy und/oder Aperture konfiguriert werden. Wenn eine auf der Leihnehmervorrichtung laufende Anwendung auf eine virtuelle Seite zugreift, kann das Betriebssystem der Leihnehmervorrichtung den Inhalt der aufgerufenen virtuellen Seite in den lokalen Speicher migrieren. Wenn auf eine lokale Speicherseite über einen bestimmten Zeitraum hinweg nicht zugegriffen wurde und/oder der Inhalt einer anderen Seite dort gehostet werden soll, kann das Betriebssystem der Leihnehmervorrichtung den Inhalt der virtuellen Seite im lokalen Speicher in den ausgeliehenen Speicher der Leihgebervorrichtung verschieben oder auslagern. Optional kann das Betriebssystem der Leihnehmervorrichtung einen Teil des lokalen Direktzugriffsspeichers der Leihnehmervorrichtung als schnellen Puffer für kritische Daten verwenden und den ausgeliehenen Speicher, der sich physisch in der entfernten Leihgebervorrichtung befindet, zur Aufnahme weniger kritischer Daten nutzen. Weniger kritische Daten und/oder weniger häufig genutzte Daten können bei Bedarf in den lokalen Arbeitsspeicher der Leihnehmervorrichtung verlagert werden.
  • Im Allgemeinen kann eine Leihgebervorrichtung für eine untergeordnete Vorrichtung in der Hierarchie selbst eine Leihnehmervorrichtung auf einer höheren Ebene in der Hierarchie der Leihnehmer- und Leihgebervorrichtungen sein. So kann beispielsweise ein Telefon als Leihnehmervorrichtung 8 TB Speicher von einem Speichergerät als Leihgebervorrichtung ausleihen. Die Speicher-Appliance kann als Leihnehmervorrichtung 4 TB Speicher von einem Server leihen und die 4 TB des vom Server geliehenen Speichers und 4 TB des eigenen lokalen Speichers zu den 8 TB des an das Telefon geliehenen Speichers kombinieren. In einigen Implementierungen kann der vom Server geliehene 4-TB-Speicher für das Telefon identifiziert werden, so dass das Telefon, wenn die Verbindung zwischen dem Telefon und dem Gerät nicht verfügbar ist, eine alternative Verbindung zum Server nutzen kann, um den 4-TB-Speicher weiterhin zu verwenden, ohne über das Speichergerät zu gehen. Die alternative Verbindung kann jedoch langsamer sein als die zum Speichergerät, da sich das Gerät möglicherweise näher am Telefon befindet als der entfernte Server.
  • Das Betriebssystem einer Leihgebervorrichtung und das Betriebssystem einer Leihnehmervorrichtung können miteinander kommunizieren, um einen nahtlosen Speicherzugriff über die Kommunikationsverbindung zwischen der Leihgebervorrichtung und der Leihnehmervorrichtung zu ermöglichen. Es ist also nicht erforderlich, den physischen Speicher in der Leihgebervorrichtung vorab zuzuweisen, bevor die auf der Leihnehmervorrichtung laufenden Anwendungen den Speicher nutzen. Das Auslagerungsaufkommen und die Speicherverfügbarkeit der Leihgebervorrichtung bestimmen den Umfang der Nutzung des ausgeliehenen Speichers, wenn der Fußabdruck der auf der Leihnehmervorrichtung laufenden Anwendungen wächst. Durch den Wegfall der Anforderungen an die Vorabzuweisung des physischen Speichers in der Leihgebervorrichtung für eine Anwendung (z. B. wie bei RDMA-Protokollen) entfällt die Notwendigkeit einer speziellen Programmierung (z. B. Message Passing Interface (MPI) über RDMA), und ein Anwendungsprogramm kann in seinem ursprünglichen Code in Vorrichtungen mit unterschiedlichen Konfigurationen funktionieren und dennoch alle Vorteile der Scaleout-Anwendungskapazität nutzen, wie dies bei RDMA und ähnlichen Protokollen der Fall wäre.
  • Im Allgemeinen kann eine Leihgebervorrichtung so konfiguriert werden, dass sie für eine bestimmte Leihnehmervorrichtung in einem passiven Modus oder in einem aktiven Modus arbeitet. Die Leihgebervorrichtung kann in verschiedenen Modi für verschiedene Leihnehmervorrichtungen arbeiten.
  • Im passiven Modus beobachtet das Betriebssystem der Leihgebervorrichtung die Speicherseiten, die vom Betriebssystem der Leihnehmervorrichtung über die Verbindung zwischengespeichert oder migriert werden, und ändert seine eigenen Seitentabelleneinträge, die diesen Seiten entsprechen, entsprechend ab. Die Beobachtung, die das Leihgeberbetriebssystem bei Seitenbewegungen durchführt, kann beispielsweise durch Bus-Snooping oder Hardware-Überwachung erfolgen.
  • Das Betriebssystem einer Leihnehmervorrichtung ist so konfiguriert, dass es Seitentabellen für den lokalen Speicher der Leihnehmervorrichtung und den ausgeliehenen Speicher, der sich physisch in der Leihgebervorrichtung befindet, verwaltet. Wenn eine Anwendung, die auf der Leihnehmervorrichtung läuft, auf eine Seite des ausgeliehenen Speichers zugreift, kann der Inhalt der Seite im Allgemeinen in einer Seite des lokalen Speichers der Leihnehmervorrichtung gespeichert sein oder nicht.
  • Wenn die Leihnehmervorrichtung auf eine Seite zugreift, die im lokalen Speicher der Leihnehmervorrichtung nicht vorhanden ist, tritt ein Seitenfehler auf. Für unseren Zweck betrachten wir einen Seitenfehler, der in zwei Fällen auftritt: 1) eine aufgerufene Seite existiert überhaupt nicht; und 2) die aufgerufene Seite existiert, aber nicht im lokalen Speicher.
  • Wenn die Seite nicht existiert, wurde sie nie geschrieben oder gelesen. Für diese Seite gibt es keinen Seitentabelleneintrag (PTE). Es ist das erste Mal, dass die Seite aufgerufen wird. Wenn ein Lesevorgang auf einer solchen Seite durchgeführt wird, ist es nicht notwendig, eine aktuelle Seite zuzuweisen. Einige Betriebssysteme (z. B. Linux) können eine gefälschte Seite bereitstellen, die mit Nullen gefüllt ist, weil die Seite nie geschrieben wurde und daher keine Daten enthält. Ein Lesevorgang, der auf einer solchen Seite durchgeführt wird, ergibt daher Null als Ergebnis. In diesem Fall führt das Betriebssystem einen Handler für diesen Seitenfehler aus: Ein TLB-Fehlschlag führt zu einem Page Walk, der feststellt, dass ein Lesevorgang auf einer Seite ohne PTE durchgeführt wird. Als Ergebnis wird eine Abbildung auf die Seite Null zurückgegeben.
  • Wird ein Schreibvorgang auf einer Seite zum ersten Mal durchgeführt, handelt es sich um einen echten Fehler. Der echte Fehler führt zu einem neuen PTE und einer Seitenzuweisung im lokalen Speicher. Ein Beispiel für einen Page Fault Handler für diesen Fall: Der TLB-Fehlschlag führt zu einem Page Walk, der feststellt, dass ein Schreibvorgang auf einer Seite ohne PTE durchgeführt wird. Infolgedessen weist das Betriebssystem eine neue Seite zu, erzeugt den PTE und installiert ihn in der Seitentabelle. Nachdem der PTE in der TLB zwischengespeichert wurde, ist der Fehler behoben.
  • Wenn beim Zugriff auf die ausgeliehene Seite ein Seitenfehler auftritt und sich der Inhalt der Seite derzeit nicht im lokalen Speicher der Leihnehmervorrichtung befindet (z. B. nachdem der Inhalt der ausgeliehenen Seite auf die Leihgebervorrichtung migriert/ausgeliehen wurde), kann das Betriebssystem der Leihnehmervorrichtung mit der Leihgebervorrichtung über die Kommunikationsverbindung zwischen der Leihnehmervorrichtung und der Leihgebervorrichtung kommunizieren, um den Inhalt der ausgeliehenen Seite abzurufen oder zu migrieren.
  • In den beiden oben genannten Fällen können die Verfahren in Verbindung mit Caching-Operationen durchgeführt werden. Die Leihgebervorrichtung kann zum Beispiel eine Seitenkopie behalten. Die Kopie kann nützlich sein, wenn die Leihnehmervorrichtung die Seite nicht weiter verändert (z. B. nur Lesevorgänge auf der Seite durchführt). In einem solchen Fall ist keine Auslagerung erforderlich, da eine echte Kopie der Seite bereits auf der Leihgebervorrichtung vorhanden ist. Ebenso kann die Leihnehmervorrichtung eine Seite spekulativ auslagern, wenn die Kommunikationsverbindung zwischen der Leihnehmervorrichtung und der Leihgebervorrichtung frei ist.
  • Optional kann die Leihgebervorrichtung und/oder die Leihnehmervorrichtung mit einer Firmware/Hardware konfiguriert werden, die den Vorgang der Migration des Inhalts zwischen der Leihgebervorrichtung und der Leihnehmervorrichtung beschleunigt.
  • Optional kann das Betriebssystem der Leihgebervorrichtung so konfiguriert werden, dass es seinen eigenen Satz von Seitentabellen und zugehörigen Ressourcen, wie z. B. Seitentabellen-Walker, Adressumsatzpuffer (TLB), inhaltsadressierbarer Speicher (CAM), Nachschlagetabellen usw. unterhält und betreibt.
  • Das Betriebssystem der Leihgebervorrichtung überwacht die Speicherzugriffsanforderungen aller Leihnehmervorrichtungen, die Speicher von der Leihgebervorrichtung ausleihen. Sie kann so konfiguriert werden, dass sie eine Semantik für die gemeinsame Nutzung von Seiten durch die Leihnehmervorrichtungen bereitstellt (z. B. Atomics, Sperren, Semaphoren, Flags, Timeouts usw.). Infolgedessen wird der Adressraum des ausgeliehenen Speichers zwischen den Leihnehmervorrichtungen entsprechend den Seitentabellen in der Leihgebervorrichtung vereinheitlicht. Verteilte Anwendungen können die Vorteile des einheitlichen Adressraums nutzen, indem sie über die Leihgebervorrichtung ausgeliehenen Speicher mit verschiedenen Instanzen von Anwendungen teilen, die auf verschiedenen Leihnehmervorrichtungen laufen.
  • Optional kann die Leihgebervorrichtung so konfiguriert werden, dass sie Anforderungen von Leihnehmervorrichtungen annimmt, um Berechnungsergebnisse in bestimmten Bereichen des Speichers zu erzeugen, der an die Leihnehmervorrichtungen verliehen wurde. Auf diese Weise stellt die Leihgebervorrichtung nicht nur die Speicherressourcen, sondern auch die Rechenleistung für die Verarbeitung von Daten in dem an die Leihnehmervorrichtungen verliehenen Speicher bereit.
  • Die von den Betriebssystemen der Leihnehmer- und Leihgebervorrichtungen angebotenen Speicherdienste ermöglichen es einer auf einer Leihnehmervorrichtung laufenden Anwendung, den ausgeliehenen Speicher auf Byte-Granularität zu adressieren, wobei Fehler auf Seiten-Granularität behoben werden.
  • Das Betriebssystem der Leihnehmervorrichtung kann über die Kommunikationsverbindung zwischen der Leihnehmervorrichtung und der Leihgebervorrichtung eine Seite aus dem lokalen Speicher in die Leihgebervorrichtung auslagern oder migrieren. Das Betriebssystem der Leihnehmervorrichtung kann basierend auf der seltenen Verwendung der Seite und/oder basierend auf der Tatsache, dass die Seite in letzter Zeit seltener als andere Seiten verwendet wurde, oder basierend auf der Kritikalität oder jedem anderen möglichen messbaren Systemparameter eine Seite identifizieren, die aus dem lokalen Direktzugriffsspeicher der Leihnehmervorrichtung in den ausgeliehenen Speicher verschoben werden soll. Das Betriebssystem der Leihnehmervorrichtung kann beschließen, eine ausgeliehene Seite zu entfernen oder zu migrieren, um den lokalen Speicher für andere Zwecke freizugeben, z. B. für neue lokale Seitenzuweisungen oder für die Migration einer Seite von der Leihgebervorrichtung. Als Ergebnis dieses Verfahrens besitzt der aktuelle Eigentümer der Seite (Leihnehmer oder Leihgeber) eine echte Kopie der Seite. Andere Vorrichtungen können sie immer noch zwischenspeichern, falls die Seite nach der Freigabe durch den Eigentümer immer noch nicht geändert wurde. Wenn zum Beispiel der Leihnehmer die Seite vom Leihgeber erhält, weist der Leihgeber diese Seite nicht mehr auf. Der Leihgeber darf die Kopie der Seite jedoch nicht löschen, sondern muss sie behalten: Wenn die Seite bei der Räumung nicht geändert wird, muss sie nicht über den Link zurück an den Leihgeber übertragen werden. Was ist, wenn der Leihgeber die Seite auch ändern oder anderen Leihnehmern bereitstellen will? In diesem Fall müsste der Leihgeber alle Schreibvorgänge aufweisen, um die Schreibanfragen der verschiedenen Leihnehmer zusammenzufassen.
  • Um eine Seite auszulagern oder zu migrieren, übermittelt das Betriebssystem der Leihnehmervorrichtung den Inhalt der Seite an die Leihgebervorrichtung, so dass die Leihgebervorrichtung die Seite im Speicher der Leihgebervorrichtung ablegt. Das Betriebssystem der Leihnehmervorrichtung kann dann eine Seitentabelle aktualisieren, um anzuzeigen, dass sich die Seite jetzt in der Leihgebervorrichtung und nicht im lokalen Speicher der Leihnehmervorrichtung befindet.
  • Im aktiven Modus kann das Betriebssystem der Leihgebervorrichtung so konfiguriert werden, dass es Seitentabellen auf der Leihnehmervorrichtung überwacht, ungenutzte Seiten identifiziert und die ungenutzten Seiten für andere Speicherbenutzer umwidmet.
  • Die Interaktion zwischen der Leihgebervorrichtung und der Leihnehmervorrichtung kann über Virtualisierung erfolgen, die es der Leihgebervorrichtung ermöglicht, die Nutzung der Seitentabelle in der Leihnehmervorrichtung zu überwachen.
  • Zum Beispiel kann das Betriebssystem der Leihnehmervorrichtung für Operationen im Betriebssystem der Leihgebervorrichtung teilweise virtualisiert werden. Einige der Speicherverwaltungscodes/Unterprogramme des Betriebssystems der Leihnehmervorrichtung können über Virtualisierung so konfiguriert werden, dass sie auf der Leihgebervorrichtung und/oder als Teil des Betriebssystems der Leihgebervorrichtung laufen. In einer solchen Implementierung kann das Betriebssystem der Leihnehmervorrichtung Speicherzugriffsanfragen an das Betriebssystem der Leihgebervorrichtung weiterleiten, um solche Unterprogramme auszuführen, die auf der Ebene des Betriebssystems der Leihgebervorrichtung hardware-/festplattenbeschleunigt sein können.
  • Beispielsweise kann das Betriebssystem der Leihgebervorrichtung eine virtuelle Speichervorrichtung erstellen und diese der Leihnehmervorrichtung anbieten. Die Leihnehmervorrichtung kann die virtuelle Speichervorrichtung bei Bedarf anfordern und die virtuelle Speichervorrichtung zur Deckung des Speicherbedarfs der auf der Leihnehmervorrichtung laufenden Anwendungen zur Verfügung stellen.
  • In einigen Fällen, wenn eine auf der Leihnehmervorrichtung laufende Anwendung die durch die Kommunikationsverbindung zwischen der Leihnehmervorrichtung und der Leihgebervorrichtung verursachte Latenz tolerieren oder akzeptieren kann, kann der Zugriff auf die ausgeliehene Seite direkt über die Kommunikationsverbindung erfolgen, ohne dass die gesamte Seite zum Leihgeber migriert wird. In anderen Implementierungen kann die Migration des Inhalts auf einer Unterseiten-Ebene konfiguriert werden, und nur der Teil der Seite, auf den zugegriffen wird und/oder für den ein Zugriff vorhergesagt wird, wird migriert. Optional kann das Betriebssystem bei der Implementierung des direkten Speicherzugriffs eine RDMA-Technik (Remote Direct Memory Access) verwenden. Optional kann ein solcher direkter Speicherzugriff im Speichercontroller und/oder in der Speicherverwaltungseinheit implementiert werden, so dass das Standard-RDMA-Protokoll und sein Overhead vermieden werden.
  • In einigen Implementierungen ist das Betriebssystem der Leihnehmervorrichtung so konfiguriert, dass es die physische Position der virtuellen Speicherseiten dynamisch anpasst. Eine Seite des virtuellen Speichers wird durch die virtuellen Speicheradressen der Seite spezifiziert. Die virtuelle Speicherseite kann sich zunächst im lokalen Speicher der Leihnehmervorrichtung befinden, anschließend in den von einer Leihgebervorrichtung an die Leihnehmervorrichtung verliehenen Speicher verschoben werden und anschließend in eine andere lokale Seite der Leihnehmervorrichtung verschoben werden.
  • Um eine virtuelle Seite von der Leihgebervorrichtung zur Leihnehmervorrichtung zu migrieren, holt die Leihnehmervorrichtung den Inhalt der Seite von der Leihgebervorrichtung, speichert den Inhalt in ihrem lokalen Speicher und aktualisiert die relevanten Seitentabellen, um die Abbildung zwischen der lokalen physischen Seite und der virtuellen Seite herzustellen. Sobald die virtuelle Seite zur Leihnehmervorrichtung migriert ist, kann die Leihgebervorrichtung den physischen Speicher, der zuvor für die virtuelle Seite verwendet wurde, freigeben und/oder die dort gespeicherten Daten löschen. Optional kann das Betriebssystem der Leihgebervorrichtung die zuvor für die virtuelle Seite verwendete Seite reservieren und ihren Inhalt als Sicherungskopie der virtuellen Seite aufbewahren.
  • In umgekehrter Richtung kann das Betriebssystem der Leihnehmervorrichtung die virtuelle Seite von der Leihnehmervorrichtung zur Leihgebervorrichtung migrieren. Beispielsweise kann das Betriebssystem der Leihnehmervorrichtung die Zuweisung einer ausgeliehenen Seite in der Leihgebervorrichtung anfordern und den Inhalt der virtuellen Seite übertragen, um ihn im ausgeliehenen Speicher der Leihgebervorrichtung zu speichern. Sobald der Inhalt der virtuellen Seite auf der Leihnehmervorrichtung gespeichert ist, kann das Betriebssystem der Leihnehmervorrichtung seine Seitentabellen für die virtuelle Seite aktualisieren, um die Abbildung zwischen der virtuellen Seite und ihrer physischen Position im Leihspeicher zu identifizieren und die Migration der Seite zur Leihgebervorrichtung abzuschließen. Nach der Migration der virtuellen Seite kann der lokale Speicher, in dem zuvor die virtuelle Seite gehostet war, für das Hosting einer anderen virtuellen Seite verwendet werden. Bei einer solchen Implementierung ist es nicht erforderlich, dem ausgeliehenen Speicher in der/den Leihgebervorrichtung(en) statisch einen vorbestimmten Teil des virtuellen Speichers oder des virtuellen Speicheradressraums abzubilden.
  • Des Weiteren muss eine virtuelle Seite nicht in einer vorgegebenen Leihgebervorrichtung gehostet sein. Beispielsweise kann das Betriebssystem der Leihvorrichtung eine virtuelle Seite von einer ersten Leihvorrichtung zur Leihvorrichtung migrieren und dann die virtuelle Seite von der Leihvorrichtung zu einer zweiten Leihvorrichtung migrieren. In einigen Fällen kann das Betriebssystem der Leihgebervorrichtung die Migration einer virtuellen Seite von einer ersten Leihgebervorrichtung zu einer zweiten Leihgebervorrichtung anfordern, ohne den Inhalt der Seite auf die Leihnehmervorrichtung herunterzuladen und dann diesen Inhalt auf die zweite Leihgebervorrichtung hochzuladen.
  • Mithilfe der Techniken von Memory as a Service (MaaS) können Hersteller von mobilen Vorrichtungen mobile Vorrichtungen vermarkten, die Terabytes an Speicherkapazitäten auf der Ebene des Betriebssystems aufweisen, die durch neu entstehende Speicher auf den Leihgebervorrichtungen einschließlich der Cloud-Computing-Infrastruktur unterstützt werden sollen. Beispielsweise können Anwendungen in einem Smartphone, das mit 128 MB lokalem Speicher konfiguriert ist, auf 64 TB Arbeitsspeicher zugreifen, wenn das Telefon mit einem Computernetzwerk oder dem Internet oder einer lokalen Speichervorrichtung oder einer anderen Vorrichtung verbunden ist, die die hier beschriebenen MaaS-Konzepte umsetzt.
  • 1 zeigt ein System, in dem eine Rechenvorrichtung oder ein Server-Computer Speicher von einer anderen Rechenvorrichtung und/oder einem anderen Server-Computer ausleihen und/oder ihm Speicher leihen kann.
  • 1 veranschaulicht Rechenvorrichtungen (101 und 103) und Server-Computer (105 und 107) als Beispiele für Leihnehmervorrichtungen und Leihgebervorrichtungen, die über Computernetzwerke und/oder das Internet (109) verbunden sind, das ein zelluläres Kommunikationsnetzwerk, wie z. B. ein Mobilfunknetzwerk der fünften Generation, einschließen kann.
  • Jede der Rechenvorrichtungen (101 und 103) und Server-Computer (105 und 107) kann sich von einer anderen Vorrichtung Speicher leihen und/oder einer anderen Vorrichtung Speicher leihen. Jede der Rechenvorrichtungen (101 und 103) und Server-Computer (105 und 107) kann eine oder mehrere Kommunikationsvorrichtungen (z. B. 117, 137, 157 und 177) aufweisen, um eine oder mehrere Kommunikationsverbindungen untereinander oder mit anderen Rechenvorrichtungen oder Server-Computern im System herzustellen. Jede der Rechenvorrichtungen (101 und 103) und Server-Computer (105 und 107) kann einen oder mehrere Prozessoren (z. B. 115, 135, 155 und 175) aufweisen, die so konfiguriert sind, dass sie Befehle ausführen, wie z. B. Befehle von Betriebssystemen (z. B. 113, 133, 153 und 173) und Anwendungen oder Programme, die unter den Betriebssystemen laufen.
  • Jede der Rechenvorrichtungen (101 und 103) und Server-Computer (105 und 107) kann einen lokalen Direktzugriffsspeicher (z. B. 111, 131, 151 und 171) aufweisen, der (z. B. über Speicherbusse) mit den jeweiligen Prozessoren (z. B. 115, 135, 155 und 175) gekoppelt ist.
  • In einigen Beispielen kann die Vorrichtung A (101) oder die Vorrichtung B (103) eine tragbare Rechenvorrichtung, eine Rechenvorrichtung des Internets der Dinge, eine mobile Rechenvorrichtung usw. sein.
  • In einigen Beispielen kann es sich bei dem Server P (105) oder dem Server Q (107) um einen Mini-Server, einen Personal Computer, eine Vorrichtung zur Aufbewahrung, eine Vorrichtung zur Speicherung im Netzwerk, einen Server-Computer, eine Server-Farm usw. handeln.
  • In einem Beispiel kann die Vorrichtung A (101) mit der Vorrichtung B (105), dem Server P (105) und/oder dem Server Q (107) über eine kabelgebundene Verbindung, ein drahtloses persönliches Netzwerk (wireless personal area network, WPAN), ein drahtloses lokales Netzwerk (wireless local area network, WLAN) und/oder ein drahtloses Weitverkehrsnetzwerk (wireless wide area network, WWAN) verbunden sein.
  • In einem weiteren Beispiel kann die Vorrichtung B (105) mit dem Server P (105) und/oder dem Server Q (107) über eine drahtgebundene Verbindung, ein drahtloses lokales Netzwerk (WLAN) und/oder ein drahtloses Weitverkehrsnetzwerk (WWAN) verbunden werden.
  • In einem weiteren Beispiel kann der Server P (105) mit dem Server Q (107) über eine kabelgebundene Verbindung, ein lokales Netzwerk, ein drahtloses lokales Netzwerk (WLAN), ein drahtloses Weitverkehrsnetzwerk (WWAN) und/oder das Internet verbunden sein.
  • Der Server P (105) kann Speicher vom Server Q (107) leihen und den Vorrichtungen (101 und 103) (und/oder ähnlichen Vorrichtungen) geliehenen Speicher und/oder lokalen Speicher zur Verfügung stellen. Die Vorrichtung B (103) kann Speicher vom Server P (105) und/oder Server Q (107) leihen und geliehenen Speicher und/oder lokalen Speicher an die Vorrichtung A (101) (und/oder ähnliche Vorrichtungen) verleihen.
  • Im Allgemeinen kann eine Rechenvorrichtung Speicher an eine oder mehrere Leihnehmervorrichtungen verleihen und Speicher von einer oder mehreren Leihgebervorrichtungen leihen.
  • Die Betriebssysteme (113, 133, 157 und 173) sind so konfiguriert, dass sie Speicherdienste für Anwendungen und Programme bereitstellen, so dass die Anwendungen und Programme virtuellen Speicher nutzen können, ohne dessen physische Zuweisung zu kennen, so dass dieser virtuelle Speicher teilweise im ausgeliehenen Speicher und teilweise im lokalen Speicher (111, 131, 151 und 171) zugewiesen werden kann. Die Betriebssysteme und die unterstützende Hardware nehmen den Anwendungen und Programmen die Last ab, die Zuweisung von virtuellem Speicher zu verwalten, was für Anwendungen und Programme die Bequemlichkeit bereitstellt, dass sie keine speziellen Codeabschnitte oder spezielle Anweisungen haben müssen, um die Unterschiede bei der Zuweisung von lokalem und geliehenem Speicher zu handhaben.
  • In einem Beispiel wird ein Teil des lokalen Speichers (171) des Servers Q (107) an den Server P (105) ausgeliehen. Der Server P (105) verleiht einen Teil des ausgeliehenen Speichers und/oder einen Teil seines lokalen Speichers (151) an die Vorrichtung B (103), die wiederum einen Teil ihres ausgeliehenen Speichers und/oder einen Teil ihres lokalen Speichers (131) an die Vorrichtung A (101) verleiht. Somit kann der virtuelle Speicher, der vom Betriebssystem (113) einer auf den Prozessoren(115) der Vorrichtung A (101) laufenden Anwendung zugewiesen wird, teilweise im lokalen Speicher (111) der Vorrichtung A (101), teilweise im lokalen Speicher (131) der Vorrichtung B (103), teilweise im lokalen Speicher (151) des Servers P (105) und/oder teilweise im lokalen Speicher (171) des Servers Q (107) liegen. Die Betriebssysteme (113, 133, 157 und 173) sind so konfiguriert, dass sie miteinander kooperieren, um die Speicherdienste und/oder die physische Zuweisung des von der Anwendung verwendeten virtuellen Speichers zwischen den lokalen Speichern verschiedener Vorrichtungen (z. B, 111, 131, 151 und/oder 171) bereitzustellen, so dass die Anwendung, die so programmiert ist, dass sie auf der Vorrichtung A und ihrem lokalen Speicher (101) läuft, auch ohne Änderung mit ihrem virtuellen Speicher laufen kann, der teilweise in dem geliehenen Speicher (131, 151 und/oder 171) zugewiesen ist, der der Vorrichtung A (101) von der Vorrichtung B (103), dem Server P (105) und/oder dem Server Q (107) geliehen wird.
  • 2 veranschaulicht eine Leihnehmervorrichtung (201) und eine Leihgebervorrichtung (203), die Speicherdienste zwischen Betriebssystemen über Netzwerkverbindungen implementieren, wie z. B. eine drahtgebundene oder drahtlose Verbindung (205) über ein lokales Netzwerk, ein Weitverkehrsnetzwerk und/oder ein zellulares Kommunikationsnetzwerk, wie z. B. ein zellulares Netzwerk der fünften Generation.
  • In 2 leiht sich die Leihnehmervorrichtung (201) Speicher von der Leihgebervorrichtung (203); und die Leihgebervorrichtung (203) verleiht den Speicher (202) an die Leihnehmervorrichtung (201). Zum Beispiel kann die Leihnehmervorrichtung (201) die Vorrichtung A (101), die Vorrichtung B (103) oder der Server P (105) im System von 1 sein; und die Leihgebervorrichtung (203) kann die Vorrichtung B (103), der Server P (105), oder der Server P (105) im System von 1 sein. Ferner können in der Leihnehmervorrichtung (201) Leihgebervorrichtungsfunktionen implementiert werden, die es ihr ermöglichen, Speicher an eine weitere Vorrichtung auszuleihen. In ähnlicher Weise können Funktionen der Leihnehmervorrichtung in der Leihgebervorrichtung (203) implementiert werden, die es ihr ermöglicht, Speicher von einer weiteren Vorrichtung auszuleihen.
  • In 2 weist die Leihnehmervorrichtung (201) eine Kommunikationsvorrichtung (217), einen oder mehrere Prozessoren (215) mit einer Speicherverwaltungseinheit (MMU) (216) und einen lokalen Direktzugriffsspeicher (211) auf. Der/die Prozessor(en) (215) und der lokale Speicher (211) können sich in einigen Ausführungsformen in getrennten Computerchips befinden und/oder auf getrennten integrierten Schaltungschips gebildet sein, und sie können in anderen Ausführungsformen (z. B. in einem System-On-a-Chip (SoC)) in ein und demselben Computerchip gehostet und/oder auf ein und demselben integrierten Schaltungschip gebildet sein.
  • Das Betriebssystem (213) der Leihnehmervorrichtung (201) beinhaltet ein Speicherdienstmodul (209), das so konfiguriert ist, dass es eine Speicherabbildung (207) verwaltet. Die Speicherabbildung (207) identifiziert die Abbildung zwischen virtuellem Speicher und physischem Speicher, wobei der physische Speicher teilweise im lokalen Speicher (211) in der Leihnehmervorrichtung (201) und teilweise im ausgeliehenen Speicher (202) in der Leihgebervorrichtung (203) liegen kann. Das Betriebssystem (213) stellt einer oder mehreren Anwendungen (z. B. 212), die auf der Leihnehmervorrichtung (201) laufen, virtuellen Speicher zur Verfügung. Der (die) Prozessor(en) (215) kann (können) die Anwendung (212) ausführen, indem er (sie) die Anweisungen des Anwendungscodes (212) ausführt (ausführen). Die Lese- und Schreibbefehle des Anwendungsspeichers können den virtuellen Speicher nutzen. Die Speicherverwaltungseinheit (MMU) (216) übersetzt die virtuellen Speicheradressen in physische Speicheradressen gemäß der Speicherabbildung (207).
  • Wenn die Leihnehmervorrichtung (201) Speicher von der Leihgebervorrichtung (203) ausleiht, befindet sich der ausgeliehene Speicher (204) virtuell in der Leihnehmervorrichtung (201) und physisch in der Leihgebervorrichtung (203) als ausgeliehener Speicher (202) im lokalen Direktzugriffsspeicher (231). Optional kann die Leihgebervorrichtung (203) einen Teil des ausgeliehenen Speichers (202) oder dessen Gesamtheit in einer Vorrichtung (234) konfigurieren, die über einen Peripheriebus und/oder eine Vorrichtungssteuerung mit dem/den Prozessor(en) (235) der Leihgebervorrichtung (203) verbunden ist. Beispielsweise kann das Betriebssystem (233) der Leihvorrichtung (203) dem Betriebssystem (213) der Leihnehmervorrichtung (201) einen Teil seiner Speicherressourcen als virtuellen Speicher zuweisen, ähnlich wie es einer auf der Leihgebervorrichtung (203) laufenden Anwendung (z. B. 232) Speicherressourcen als virtuellen Speicher zuweist. So kann sich der vom Betriebssystem (213) der Leihnehmervorrichtung (201) genutzte ausgeliehene Speicher (204) im gleichen virtuellen Speicheradressraum befinden wie der von der Anwendung (232) genutzte virtuelle Speicher und/oder der von anderen Leihnehmern der Leihgebervorrichtung (203) genutzte ausgeliehene Speicher. Alternativ kann das Betriebssystem (233) der Leihgebervorrichtung (203) virtuelle Speicherkomponenten für den ausgeliehenen Speicher (204) erstellen; und das Betriebssystem (213) der Leihnehmervorrichtung (201) kann die virtuelle Speicherkomponente in der Leihgebervorrichtung (201) zugänglich machen. Ein virtueller Speichercontroller für die virtuelle Speicherkomponente kann im Betriebssystem (213) implementiert werden, um auf virtuelle Speicherkomponenten zuzugreifen, die für die Leihnehmervorrichtung (201) zugänglich sind. MMU 216 kann Hardwareblöcke implementieren, um virtuelle Speichercontroller zu beschleunigen und dadurch die Geschwindigkeit des Zugriffs auf virtuelle Speicherkomponenten zu verbessern.
  • In einigen Beispielen ist der ausgeliehene Speicher (204) implizit, d. h. er ist vom übrigen virtuellen Speicher der auf der Leihnehmervorrichtung 201 laufenden Anwendungen nicht zu unterscheiden. Die Unterscheidung erfolgt nur bei der Übersetzung virtueller Seitenadressen in physische Adressen durch Lesen der Speicherabbildung 207, und bei dieser Übersetzung scheinen sich die physischen Adressen im ausgeliehenen Speicher 202 zu befinden. In anderen Beispielen speichert das Betriebssystem (213) eine explizite Identifikation für Teile des virtuellen Speichers, wenn dieser zum ausgeliehenen Speicher (204) gehört, wie er von der Leihgebervorrichtung (203) bereitgestellt wird. In allen Fällen konfiguriert das Betriebssystem (213) die Speicherabbildung (207) so, dass es auf die Leihgebervorrichtung (203) zugreift, um aus dem virtuellen Speicher zu lesen und in diesen zu schreiben, wobei es sich um den ausgeliehenen Speicher (204) handelt, der sich physisch im ausgeliehenen Speicher (202) in der Leihgebervorrichtung (203) oder in der Leihnehmervorrichtung (201) nach der Migration zu dieser Vorrichtung befindet.
  • Die Speicherabbildung (207) kann über Seitentabellen realisiert werden. Ein Teil der Seitentabellen wird in der Speicherverwaltungseinheit (MMU) (216) zwischengespeichert, so dass, wenn in dem/den Prozessor(en) (215) ausgeführte Anweisungen auf virtuelle Adressen zugreifen, die in dem in der Speicherverwaltungseinheit (MMU) (216) zwischengespeicherten Teil der Seitentabellen definiert sind, die Speicherverwaltungseinheit (MMU) (216) die virtuellen Adressen in physische Adressen übersetzt. Die erfolgreiche Adressübersetzung ermöglicht es dem/den Prozessor(en) (215), mit Speicherzugriffen fortzufahren, ohne den Code des Betriebssystems (213) ausführen zu müssen.
  • Wenn die Speicherverwaltungseinheit (MMU) (216) eine virtuelle Speicheradresse mit Hilfe der in der Speicherverwaltungseinheit (MMU) (216) zwischengespeicherten Seitentabellen nicht erfolgreich übersetzen kann, wird ein Cache-Fehlschlag für einen Seitentabelleneintrag erzeugt, was den Prozessor (215) veranlasst, die Anweisungen des Speicherdienstes (209) des Betriebssystems (213) auszuführen, um diesen Cache-Fehlschlag zu beheben. In einigen Implementierungen enthält die MMU eine Hardware-IP, die darauf ausgelegt ist, fehlende Seitentabelleneinträge im Cache der MMU zu beheben (216). Diese IP, die Teil der MMU ist, extrahiert die erforderlichen Seitentabelleneinträge aus den im physischen Speicher 211 gespeicherten Seitentabellen. Wenn ein erforderlicher Eintrag nicht vorhanden ist oder zwar vorhanden ist, aber die virtuelle Seitenadresse in eine Adresse im physischen geliehenen Speicher 202 übersetzt, wird ein Seitenfehler für diese Seite erzeugt. Dieser Fehler kann von der MMU 216 und der Kommunikationsvorrichtung 217 direkt in Hardware behoben werden. Alternativ kann dieser Fehler durch das Betriebssystem 213 und den Speicherdienst 209 in Software mit Hilfe von Hardwareblöcken behoben werden: MMU 216, Prozessoren 215, Kommunikationsbaustein 217.
  • Wenn der Speicherdienst (209) des Betriebssystems (213) oder die MMU 216 feststellt, dass die virtuelle Speicheradresse, auf die zugegriffen wird, im ausgeliehenen Speicher (204) liegt, kann der Speicherdienst (209) oder die MMU 216 eine physische Seite des lokalen physischen Speichers 211 zuweisen, mit der Leihgebervorrichtung (203) über die Kommunikationsvorrichtungen 217 und 237 und die Computernetzwerkverbindung 205 kommunizieren, um die Seite des ausgeliehenen Speichers (204) aus dem physischen ausgeliehenen Speicher 202 in den physischen lokalen Speicher 211 zu migrieren, einen Seitentabelleneintrag erzeugen, der die virtuelle Seite auf die zugewiesene lokale physische Seite abbildet, und den Seitentabelleneintrag in die Speicherverwaltungseinheit (MMU) (216) laden. So befindet sich die virtuelle Seite des ausgeliehenen Speichers (204) vor dem Seitenfehler physisch im ausgeliehenen Speicher (202) in der Leihgebervorrichtung (203). Nach der Verarbeitung des Seitenfehlers befindet sich die virtuelle Seite im lokalen Speicher (211). Der Inhalt der Seite im ausgeliehenen Speicher (202) der Leihgebervorrichtung (203) kann für künftige Verwendung und andere Zwecke gespeichert werden.
  • Wenn keine freie lokale Seite für die Migration verfügbar ist, kann der Speicherdienst (209) eine ausgewählte virtuelle Seite, die sich derzeit im lokalen Speicher (211) befindet, in den ausgeliehenen Speicher (202) auslagern. Beim Auslagern der ausgewählten virtuellen Seite an die Leihgebervorrichtung (203) kommuniziert der Speicherdienst (209) mit der Leihgebervorrichtung (203), um den Inhalt der virtuellen Seite aus dem lokalen Speicher (211) in den ausgeliehenen Speicher (202) zu übertragen, und aktualisiert die Speicherabbildung (207). Nach dem Auslagern der virtuellen Seite aus dem lokalen Speicher (211) kann der Platz im lokalen Speicher (211), der für die ausgelagerte virtuelle Seite verwendet wurde, wieder freigegeben werden.
  • Der Speicherdienst (209) kann beispielsweise so konfiguriert werden, dass er die am wenigsten häufig verwendete virtuelle Seite oder die am wenigsten kürzlich verwendete virtuelle Seite auslagert.
  • In 2 weist die Leihgebervorrichtung (203) eine Kommunikationsvorrichtung (237), einen oder mehrere Prozessoren (235) mit einer Speicherverwaltungseinheit (MMU) (236) und einen lokalen Direktzugriffsspeicher (231) auf. Optional schließt die Leihgebervorrichtung (203) eine oder mehrere Aufbewahrungsvorrichtungen (234) ein, die mit dem/den Prozessor(en) (235) über einen Peripheriebus und/oder ein Computernetzwerk verbunden sind. Bei der Speichervorrichtung (234) kann es sich beispielsweise um ein Solid State Drive (SSD) oder eine Festplatte (HD) handeln.
  • Das Betriebssystem (233) der Leihgebervorrichtung (203) beinhaltet ein Speicherdienstmodul (229), das so konfiguriert ist, dass es eine Speicherabbildung (227) verwaltet. Die Speicherabbildung (227) identifiziert die Abbildung zwischen virtuellem Speicher und physischem Speicher. Die Speicherabbildung kann im Speicher 231 oder in einem dafür vorgesehenen Speicher wie einem inhaltsadressierbaren Speicher oder einem speziellen Cache gespeichert werden. Das Betriebssystem (233) stellt einer oder mehreren Anwendungen (232), die auf der Leihgebervorrichtung (203) laufen, virtuellen Speicher zur Verfügung, ähnlich wie die Leihnehmervorrichtung (201) ihre Anwendung (212) bedient.
  • Optional stellt die Leihgebervorrichtung (203) der Leihnehmervorrichtung (201) ausgeliehenen Speicher (202) in einem einheitlichen virtuellen Speicherbereich zur Verfügung. Der Speicherdienst (209) der Leihnehmervorrichtung (201) verwendet den ausgeliehenen Speicher (204) auf die gleiche Weise wie die Anwendung (232), die den vom Speicherdienst (229) bereitgestellten virtuellen Speicher verwendet. Beispielsweise kann der Speicherdienst (229) der Leihgebervorrichtung (203) der auf der Leihgebervorrichtung (203) laufenden Anwendung (232) virtuellen Speicher zuweisen und virtuellen Speicher als den vom Speicherdienst (209) der Leihnehmervorrichtung (201) verwendeten geliehenen Speicher (204) zuweisen, als ob der Speicherdienst (209) eine auf der Leihgebervorrichtung laufende Anwendung wäre. Auf diese Weise können die Anwendung (232), die auf der Leihgebervorrichtung (203) läuft, und die Leihnehmervorrichtung (201) (und andere Vorrichtungen, die Speicher von der Leihgebervorrichtung (203) leihen) in einem einheitlichen virtuellen Adressraum arbeiten. Kooperative Berechnungen können basierend auf dem vereinheitlichten virtuellen Adressraum konfiguriert werden. Wenn die Leihgebervorrichtung (203) Speicher von einer anderen Vorrichtung/Server (z. B. 105 oder 107) leiht, kann der geliehene Speicher ebenfalls im einheitlichen virtuellen Adressraum bereitgestellt werden. Der vereinheitlichte Adressraum kann die gemeinsame Nutzung von Daten und die gemeinsame Berechnung zwischen den Rechenvorrichtungen erleichtern.
  • Der Speicherdienst (229) der Leihgebervorrichtung (203) kann eine Speicherabbildung (227) unterhalten, die die Abbildung zwischen den virtuellen Adressen des ausgeliehenen Speichers (202), der dem ausgeliehenen Speicher (204) entspricht, auf den die Leihnehmervorrichtung (201) zugreift, und den physischen Adressen des ausgeliehenen Speichers (202) einschließt. Beispielsweise kann ein Seitentabelleneintrag der virtuellen Seite, die von der Leihnehmervorrichtung (201) beim Zugriff auf eine geliehene Seite identifiziert wird, in die Speicherverwaltungseinheit (MMU) (236) geladen werden, um die Übersetzung zwischen den Adressen der virtuellen Seite und der physischen Adresse des geliehenen Speichers (202) für den/die Prozessor(en) der Leihgebervorrichtung (203) zu erleichtern, damit diese im Auftrag der Leihnehmervorrichtung (201) Berechnungen durchführen kann. Optional kann die Leihgebervorrichtung (203) eine der Speicherverwaltungseinheit (236) ähnliche Hardware einschließen, um eine optimierte und/oder beschleunigte Datenübertragung zwischen der Leihgebervorrichtung (203) und der Leihnehmervorrichtung (201) unter Verwendung der Speicherabbildung (227) zu ermöglichen, die die Abbildung zwischen dem der Leihnehmervorrichtung (201) bekannten ausgeliehenen Speicher (204) und dem in der Leihgebervorrichtung (203) physisch zugänglichen ausgeliehenen Speicher (202) identifiziert.
  • 3 veranschaulicht eine Technik zum Implementieren von ausgeliehenem Speicher gemäß einer Ausführungsform. Zum Beispiel kann die Technik von 3 in der in Leihnehmervorrichtung (201) impementiert werden, die in 2 veranschaulicht wird.
  • 3 veranschaulicht einen Speicher (211), eine Speicherverwaltungseinheit (MMU) (216), die so konfiguriert ist, dass sie unter Verwendung physischer Adressen (z. B. 257) auf den Speicher (211) zugreift, und eine Speicherabbildung (207), die eine Abbildung zwischen virtuellen Adressbereichen (z. B. 261, 263, 265, ...) und Adressbereichen, auf die die virtuellen Speicherbereiche abgebildet werden, wie physische Adressbereiche (z. B. 281, 283, ...) und ausgeliehene Speicherbereiche (z. B. 273, 275, ...), definiert.
  • Beispielsweise können die Adressbereiche des ausgeliehenen Speichers (z. B. 273, ..., 275) so konfiguriert werden, dass sie die von der Leihgebervorrichtung (203) zugewiesenen virtuellen Adressbereiche als den der ausgeliehenen Vorrichtung (201) bereitgestellten/ausgeliehenen Speicher identifizieren.
  • Beispielsweise ist ein virtueller Adressbereich A (261) mit einem physischen Adressbereich (281) in der Speicherabbildung (207) verknüpft, um anzuzeigen, dass der Bereich des virtuellen Speichers derzeit direkt auf den entsprechenden Bereich des lokalen physischen Speichers (211) abgebildet ist.
  • Beispielsweise ist ein virtueller Adressbereich B (263) in der Speicherabbildung (207) mit einem ausgeliehenen Speicheradressbereich X (273) und einem physischen Adressbereich S (283) verbunden, um anzuzeigen, dass der virtuelle Adressbereich B (263) auf den ausgeliehenen Speicheradressbereich X (273) abgebildet ist und sich physisch im physischen Adressbereich S (283) befindet. Somit kann der Zugriff auf den virtuellen Adressbereich B (263) durch Zugriff auf den physischen Adressbereich S (283) im lokalen Speicher (211) erfolgen. Der virtuelle Adressbereich C (265) ist in der Speicherabbildung (207) einem ausgeliehenen Speicheradressbereich Y (275) zugeordnet und ist keinem physischen Adressbereich in der Speicherabbildung (207) zugeordnet. Für den Zugriff auf den virtuellen Adressbereich C (265) muss die Leihnehmervorrichtung daher mit der Leihgebervorrichtung kommunizieren.
  • Der Inhalt des physischen Adressbereichs S (283) kann an die Leihgebervorrichtung verdrängt werden, um den physischen Adressbereich S (283) freizugeben. Sobald der physische Adressbereich S (283) freigegeben ist, kann er für die physische Platzierung eines anderen ausgeliehenen Speicheradressbereichs, wie z. B. des ausgeliehenen Speicheradressbereichs Y (275), verwendet werden. Sobald der Inhalt des Adressbereichs des ausgeliehenen Speichers Y (275) von der Leihgebervorrichtung zur Leihnehmervorrichtung in den physischen Adressbereich S (283) migriert ist, kann der physische Adressbereich S (283) verwendet werden, um den Zugriff auf den virtuellen Adressbereich C (265) bereitzustellen, der auf den Adressbereich des ausgeliehenen Speichers Y (275) des einheitlichen Adressraums abgebildet ist und sich physisch im physischen Adressbereich S (283) der Leihnehmervorrichtung befindet, wie in 4 dargestellt.
  • In 5 hat die Speicherverwaltungseinheit (MMU) (z. B. ähnlich wie 216 in 3) einen Adressumsetzpuffer (TLB) aufweist (z. B. ähnlich wie 251 in 3), der eine Abbildung (253) von virtuellem zu physischem Speicher speichern kann (z.B. einen Teil der Speicherabbildung (207), die vom Betriebssystem (213) der Leihnehmervorrichtung (201) verwaltet wird). Wenn ein Prozessor (215) der Leihnehmervorrichtung (201) einen Befehl ausführt, der eine virtuelle Adresse (255) verwendet, verwendet der TLB (251) die Abbildung des virtuellen in den physischen Speicher (253), um die virtuelle Adresse (255) in eine physische Adresse (257) zu übersetzen; und die Speicherverwaltungseinheit (MMU) (216) kann die physische Adresse (257) verwenden, um auf die Speicherseite (259) im Speicher (211) zuzugreifen (z. B. über einen Speicherbus).
  • Die Abbildung (253) von virtuellem zu physischem Speicher, die in die TLB (251) geladen wird, ist typischerweise ein Teil der Speicherabbildung (207), die vom Betriebssystem (213) der Leihnehmervorrichtung (201) verwaltet wird. Wenn der Prozessor (215) der Leihnehmervorrichtung (201) einen Befehl ausführt, der eine virtuelle Adresse verwendet, die nicht in der Abbildung (253) von virtuellem zu physischem Speicher in dem TLB (251) enthalten ist, kann die Speicherverwaltungseinheit (MMU) (216) den Prozessor (215) veranlassen, das Betriebssystem (213) auszuführen, das so programmiert ist, dass es einen Teil der Abbildung (253) von virtuellem zu physischem Speicher in dem TLB (251) ersetzt, so dass die aktualisierte Abbildung (253) von virtuellem zu physischem Speicher in dem TLB (251) die Daten für die Übersetzung der virtuellen Adresse einschließt (z. B., 255) in eine physische Adresse (z. B. 257) beinhaltet.
  • Die Speicherverwaltungseinheit (MMU) (216) ist typischerweise so konfiguriert, dass sie auf den Speicher (211) über einen Speicherbus zugreift, der zwischen der Speicherverwaltungseinheit (MMU) (216) der Leihnehmervorrichtung (201) und dem lokalen Speicher (211) der Leihnehmervorrichtung (201) angeschlossen ist. Wenn sich die virtuelle Adresse (255) anfänglich in einem virtuellen Adressbereich (z. B. 265) befindet, der auf einen ausgeliehenen Speicheradressbereich (z. B. 275) abgebildet ist, kann das Betriebssystem (213) den Inhalt dieses Bereichs aus dem ausgeliehenen Speicher der Leihgebervorrichtung in einen physischen Adressbereich (z. B. 283) im Speicher (211) migrieren und die Abbildung (253) von virtuellem zu physischem Speicher in dem TLB (251) aktualisieren, um die Übersetzung der virtuellen Adresse (255) in eine physische Adresse (257) zu ermöglichen, die der virtuellen Adresse (255) direkt entspricht, ohne sie in den Adressbereich des ausgeliehenen Speichers (z. B. 275) zu übersetzen.
  • In einigen Ausführungsformen ist die Speicherverwaltungseinheit (MMU) (216) ferner so konfiguriert, dass sie unter Verwendung der Kommunikationsvorrichtung (217) über eine Computernetzwerkverbindung (z. B. 205) ohne explizite Migration auf ausgeliehene Speicher (204) zugreift. In einer solchen Situation ist es für das Betriebssystem (213) nicht erforderlich, den Inhalt eines virtuellen Adressbereichs (z. B. 265) zu migrieren. Die physische Adresse (257) des ausgeliehenen Speichers (204) kann Informationen für die Kommunikationsvorrichtung (217) zum Zugriff auf die Speicherseite (260) im ausgeliehenen Speicher (202) in der Leihgebervorrichtung (203) einschließen. Die über die physische Adresse (257) und über die Kommunikationsvorrichtung (217) gestellte Speicherzugriffsanforderung kann in der Leihgebervorrichtung (203) über deren Betriebssystem (233) verarbeitet werden. Alternativ kann die Kommunikationsvorrichtung (237) und/oder die Speicherverwaltungseinheit (MMS) (236) so konfiguriert werden, dass eine solche Zugriffsanforderung auf den ausgeliehenen Speicher (202) (z. B. zum Lesen oder Schreiben) ohne Ausführung des Betriebssystems (233) verarbeitet wird (z. B. basierend auf einer virtuellphysikalischen Speicherabbildung, die in dem TLB der MMS (236) der Leihgebervorrichtung (203) zwischengespeichert ist, oder einer Hardware-Beschleunigungskomponente, die in der Leihgebervorrichtung (203) so konfiguriert ist, dass sie ähnliche Operationen durchführt.
  • Die Abbildung des virtuellen auf den physischen Speicher (253) kann in Form von Seitentabelleneinträgen implementiert werden.
  • 6 veranschaulicht eine Leihnehmer-/Leihgeber-Speicherhierarchie in einem Rechensystem.
  • In 6 kann die Leihgebervorrichtung (203) Speicher von einem oder mehreren Leihgeberservern (245) in ähnlicher Weise ausleihen, wie die Leihnehmervorrichtung (201) Speicher von der Leihgebervorrichtung (203) in 2 ausleiht. Die Leihgebervorrichtung (203) bündelt zumindest einen Teil ihres lokalen physischen Speichers (z. B. 231, dargestellt in 2) und/oder einen Teil ihres von den Leihgeberservern ausgeliehenen Speichers (z. B. 245) als verfügbaren Speicher (239) zum Ausleihen an Leihnehmervorrichtungen (201) zusammen. Eine oder mehrere Leihnehmervorrichtungen (201) können Speicher von der Leihgebervorrichtung (203) ausleihen.
  • Ein typischer Leihnehmer-Speicher (204) kann mehrere ausgeliehene Speicherbereiche (295, 297, ..., 299) und mehrere lokale Speicherbereiche (291, 293, ...) aufweisen. Auf die ausgeliehenen Speicherbereiche (295, 297, ..., 299) in der Leihgebervorrichtung (201) kann durch Migration vom ausgeliehenen Speicher der Leihgebervorrichtung zu den lokalen Speicherbereichen der Leihnehmervorrichtung (291, 293, ...) zugegriffen werden. Wenn die ausgeliehenen Speicherbereiche (295, 297, ..., 299) in der Leihnehmervorrichtung (201) nicht verwendet werden, können sie, wie in 4 und 5 dargestellt, an die Leihgebervorrichtung (203) zurückgegeben werden.
  • In ähnlicher Weise kann die Leihgebervorrichtung (203) eine Region (z. B. 299), die an die Leihnehmervorrichtung (201) verliehen wurde, in ihrem lokalen Speicher oder in dem vom Leihgeberserver (245) ausgeliehenen lokalen Speicher unterbringen.
  • Im Allgemeinen können mehrere Leihgebervorrichtungen (203) verwendet werden, um einer Leihnehmervorrichtung (201) Speicherdienste bereitzustellen, und es kann mehr als ein Leihserver (245) in der Hierarchie konfiguriert werden.
  • Optional wird der Speicher (z. B. 295, 297, ..., 299), der als Dienst in der Hierarchie bereitgestellt wird, in einem einheitlichen virtuellen Adressraum konfiguriert. So können die Leihnehmervorrichtungen (201), die Leihgebervorrichtung(en) (203) und der/die Leihgeberserver (245) bei der Verarbeitung von Daten im Speicher zusammenarbeiten, indem sie auf die virtuellen Adressen im vereinheitlichten virtuellen Adressraum verweisen.
  • Zum Beispiel kann die Leihnehmervorrichtung (201) in 6 die Vorrichtung A (101) oder die Vorrichtung B (103) im System von 1 sein.
  • Zum Beispiel kann die Leihgebervorrichtung (203) in 6 die Vorrichtung B (103) oder der Server P (105) im System von 1 sein.
  • Zum Beispiel kann der Leihgeberserver (245) in 6 der Server P (105) oder Q (107) im System von 1 sein.
  • 7 zeigt ein Verfahren zur Implementierung von Speicherdiensten zwischen Betriebssystemen über Kommunikationsnetzwerkverbindungen. Zum Beispiel kann das Verfahren von 7 kann in dem System von 1 mit einer in 2 dargestellten Leihnehmer-Leihgeber-Konfiguration und/oder einer in 6 dargestellten Leihnehmer-Leihgeber-Speicherhierarchie implementiert werden.
  • In Block 301 wird eine Kommunikationsverbindung (205) von einer Leihnehmervorrichtung (201) zu einer Leihgebervorrichtung (203) hergestellt.
  • In Block 303 kommuniziert die Leihnehmervorrichtung (201) mit der Leihgebervorrichtung (203), um eine bestimmte Menge an Speicher von der Leihgebervorrichtung (203) auszuleihen. Die Leihgebervorrichtung (203) kann den von der Leihnehmervorrichtung (201) ausgeliehenen Speicher (203) als ausgeliehenen Speicher (204) zuweisen, der von dem ausgeliehenen Speicher (204) als virtueller Speicher verwendet werden kann. Durch das Ausleihen/Verleihen von Speicher stellen die Vorrichtungen (201 und 203) eine Konfiguration her, bei der der/die Prozessor(en) der Leihnehmervorrichtung (201) in den ausgeliehenen Speicher (204)/geliehenen Speicher (202) lesen und/oder schreiben kann/können. In einigen Fällen ist der geliehene Speicher (202) selbst ein von einer anderen Leihgebervorrichtung (z. B. 245) ausgeliehener Speicher.
  • In Block 305 erweitert das Betriebssystem (213) der Leihnehmervorrichtung (201) einen virtuellen/logischen Adressraum der Leihnehmervorrichtung (201), um den ausgeliehenen Speicher (204) abzudecken. Die Anwendungen (z. B. 212), die auf dem/den Prozessor(en) (215) der Leihnehmervorrichtung (201) laufen, können die virtuellen Adressen in diesem Raum ohne Unterscheidung zwischen ausgeliehenem Speicher (204) und lokalem Speicher (211) verwenden.
  • In Block 307 erzeugt das Betriebssystem (213) der Leihnehmervorrichtung (201) eine Speicherabbildung (207) (z. B. in Form von Seitentabellen), die den erweiterten Teil des logischen Adressraums auf den ausgeliehenen Speicher (204) abbildet.
  • In Block 309 weist das Betriebssystem (213) der Leihnehmervorrichtung (201) den erweiterten Teil des logischen Adressraums den Anwendungen (212) zu.
  • In Block 311 bedient das Betriebssystem (213) der Leihnehmervorrichtung (201) den Zugriff auf den ausgeliehenen Speicher (212) über den Zugriff auf einen Teil des physischen Speichers (211) der Leihnehmervorrichtung (201).
  • 8 zeigt ein Verfahren zur Wartung einer Seite eines ausgeliehenen Speichers gemäß einer Ausführungsform. Zum Beispiel kann das Verfahren von 8 kann in dem System von 1 mit einer in 2 dargestellten Leihnehmer-Leihgeber-Konfiguration und/oder einer in 6 sein. Zum Beispiel kann das Verfahren von 8 verwendet werden , um den Block 311 des Verfahrens von 7 zu implementieren.
  • In Block 331 reserviert eine Leihnehmervorrichtung (201) eine Seite des physischen Speichers (211) der Leihnehmervorrichtung (201) für eine ausgeliehene Speicherseite (204).
  • In Block 333 greift ein Prozessor der Leihnehmervorrichtung (201) auf eine virtuelle Speicheradresse (255) zu, die einer Speicherseite (260) in dem ausgeliehenen Speicher (204) entspricht. Eine ausgeliehene Speicherseite (204) kann sich physisch in dem geliehenen Speicher (202) einer Leihgebervorrichtung (203) befinden.
  • In Block 335 stellt die Speicherverwaltungseinheit (MMU) (216) der Leihnehmervorrichtung (201) fest, dass in einem Adressumsatzpuffer (TLB) (251) kein Seitentabelleneintrag vorhanden ist, um die virtuelle Speicheradresse (255) in eine lokale physische Speicheradresse zu übersetzen. Eine solche Feststellung (z. B. TLB-Fehlschlag) veranlasst die Leihnehmervorrichtung (201), ihr Betriebssystem (213) nach einem Seitentabelleneintrag in der Speicherabbildung suchen zu lassen.
  • In Block 337 identifiziert das auf der Leihnehmervorrichtung (201) laufende Betriebssystem (213) einen Seitentabelleneintrag in der Speicherabbildung, der die Adresse des virtuellen Speichers der Seite in die Adresse des ausgeliehenen Speichers der Seite übersetzt.
  • In Block 339 kommuniziert das auf der Leihnehmervorrichtung (201) ausgeführte Betriebssystem (213) mit der Leihgebervorrichtung und migriert den physischen Inhalt der ausgeliehenen Seite mit der Adresse des ausgeliehenen Speichers in den lokalen Speicher und platziert diesen Inhalt an der verfügbaren physischen Adresse des lokalen Speichers. Die Auslagerung einer anderen ausgeliehenen Seite von der Leihnehmervorrichtung zur Leihgebervorrichtung muss möglicherweise durchgeführt werden, wenn der lokale Speicher für die Seitenmigration der ausgeliehenen Seite von der Leihgebervorrichtung zur Leihnehmervorrichtung nicht ausreicht.
  • In Block 341 erzeugt das auf der Leihnehmervorrichtung (201) laufende Betriebssystem (213) einen Seitentabelleneintrag, der die virtuellen Adressen (z. B. 255) der ausgeliehenen Seite den physischen Adressen (257) im lokalen Speicher zuordnet.
  • In Block 343 lädt das Betriebssystem (213), das auf der Leihnehmervorrichtung (201) läuft, den Eintrag der Seitentabelle in den Adressumsatzpuffer (TLB) (251), was es dem Prozessor ermöglicht, unter Verwendung der übersetzten physischen Speicheradresse (257) weiterhin auf die virtuelle Speicheradresse (255) zuzugreifen.
  • In manchen Situationen weist die Netzwerkverbindung (205) zwischen der Leihnehmervorrichtung (201) und der Leihgebervorrichtung (203) eine begrenzte und/oder abnehmende Kommunikationsbandbreite auf. Die Leihnehmervorrichtung (201) kann den Netzwerkverkehr/die Bandbreite, der/die verschiedenen Speicherregionen zugewiesen wird, basierend auf der Kritikalität der Speicherbereiche drosseln.
  • Beispielsweise können Seiten des ausgeliehenen Speichers (204) mit Kritikalitätsindikatoren versehen werden, basierend auf der Kategorie des im Speicher gespeicherten Inhalts, den Prioritätsrängen der Anwendungen, die den ausgeliehenen Speicher nutzen, und/oder den von den Anwendungen vorgeschlagenen Datenkritikalitätsstufen. Wenn die Verbindungsbandbreite zwischen der Leihnehmervorrichtung (201) und der Leihgebervorrichtung (203) abnimmt, können die am wenigsten kritischen Seiten so konfiguriert werden, dass sie weniger zugänglich sind, indem weniger Kommunikationsbandbreite für das Abrufen, Zurückziehen, Auslagern und/oder die Migration solcher Seiten zugewiesen wird. Der Zugriff auf die am wenigsten kritischen Seiten kann angesichts der Verschlechterung der Verbindungsbandbreite zwischen der Leihnehmervorrichtung (201) und der Leihgebervorrichtung (203) verlangsamt und/oder vorübergehend unterbrochen werden.
  • Der Betrieb des Beendigungsspeichers kann vorbereitet werden, indem eine Anwendung, die versucht, eine Anforderung aus diesem Speicher zu laden, stillgelegt oder ausgesetzt wird. Die Anwendung darf während dieser Zeit keine Fortschritte machen. Es ist möglich, eine „Graceful Degradation“ durchzuführen, wenn eine Anwendung vom Zugriff auf ausgeliehene Speicher abgeschnitten wird. Eine Anwendung kann darauf aufmerksam gemacht werden, dass ein Lade- oder Speichervorgang dazu führen kann, dass sie unterbrochen wird, und es kann ein völlig anderes Programmierparadigma verwendet werden. Beispielsweise kann jeder Speicherzugriff in eine Try-Catch-Exception-Verschalung verpackt werden. Ein solcher Ansatz weist jedoch erhebliche Kosten auf. Des Weiteren kann die Anwendung so behandelt werden, dass sie mit solchen Ausnahmen angemessen umgeht. So kann die Anwendung beispielsweise einen bestimmten Kontext offen halten und diesen Kontext in Bezug auf den abgebrochenen Lade-/Speichervorgang verwalten, um der Datenverschiebungsinfrastruktur mitzuteilen, ob dieser Lade-/Speichervorgang eventuell noch bedient werden muss.
  • Wenn die ausgeliehenen Speicherseiten je nach Kritikalität gedrosselt werden, können Anwendungen, die auf dem ausgeliehenen Speicher (204) laufen, immer noch ohne katastrophale Ausfälle abbauen und mit reduzierter Funktionalität und weniger erreichbaren/verwendbaren Inhalten fortfahren.
  • Beispielsweise kann eine Mediathek ihre Inhalte basierend auf der Nutzungshäufigkeit, dem Nutzungsverlauf und/oder der prognostizierten Nutzung priorisieren. Die Priorität kann bei der Bestimmung der Kritikalität der ausgeliehenen Speicherseiten, in denen die Inhalte gespeichert sind, verwendet werden. Auf diese Weise kann der Zugriff auf die weniger kritischen Inhalte im ausgeliehenen Speicher mit geringeren Auswirkungen auf die Nutzbarkeit der Mediathek eingeschränkt und/oder unterbunden werden.
  • 9 zeigt eine Leihnehmervorrichtung (201) mit Speicherbereichen unterschiedlicher Kritikalitätsstufen (oder Prioritätsrängen), auf deren Grundlage der Netzwerkverkehr für Speicher als Dienst gedrosselt werden kann. Die Leihnehmervorrichtung (201) kann zum Beispiel so implementiert werden, wie in 2 dargestellten Weise implementiert werden und/oder kann Leihnehmer Speicher in einer in 6 dargestellten Hierarchie oder in einem in 1 dargestellten System ausleihen.
  • In 9 können die Speicherbereiche (295, 297, ..., 299) im ausgeliehenen Speicher (204) jeweils mit Kritikalitätsstufen (401, 403, ..., 405) gekennzeichnet werden. Die Kritikalitätsstufen (401, 403, ..., 405) ordnen die relativen Prioritäten zwischen den Speicherbereichen (295, 297, ... 299). Die für die Kommunikation zwischen der Leihnehmervorrichtung (201) und ihren Leihgebervorrichtungen (z. B. 203) verwendete Netzwerkbandbreite kann entsprechend den Kritikalitätsstufen (401, 403, ..., 405) zugewiesen werden.
  • Wenn beispielsweise mehrere Regionen (z. B. 295, 297) von der Leihgebervorrichtung (203) zur Leihnehmervorrichtung (201) migriert werden müssen, können die Regionen (z. B. 295, 297) in einer Reihenfolge entsprechend ihrer Kritikalitätsstufen (z. B. 401, 403) migriert werden. In einer solchen Anordnung können wiederholte Anfragen an Speicherbereiche mit hohem Kritikalitätsgrad den Zugriff auf Speicherbereiche mit niedrigem Kritikalitätsgrad auf unbestimmte Zeit verzögern.
  • Alternativ kann die Bandbreite auf mehrere Bereiche (z. B. 295, 297) mit unterschiedlichen Kritikalitätsstufen aufgeteilt werden. Beispielsweise kann die Menge der Datenkommunikation über die Netzwerkverbindung (205), die für verschiedene Regionen innerhalb eines bestimmten Zeitraums zulässig ist, nach einem Verhältnis zugewiesen werden, das basierend auf den Kritikalitätsstufen der Speicherregionen bestimmt wird. So dauert das Abrufen des Inhalts einer Speicherseite mit einer niedrigen Kritikalitätsstufe länger als das Abrufen des Inhalts einer Speicherseite mit einer hohen Kritikalitätsstufe. Der Abruf der Seite mit niedriger Kritikalitätsstufe wird jedoch nicht vollständig durch den Abruf der Seite mit hoher Kritikalitätsstufe blockiert. Darüber hinaus kann das Verhältnis basierend auf der verfügbaren Gesamtbandbreite so angepasst werden, dass die Leistung des Zugriffs auf eine Seite mit hoher Kritikalität weniger stark abnimmt als die der Seite mit niedriger Kritikalität, wenn die verfügbare Gesamtbandbreite abnimmt. Auf diese Weise kann die Benutzererfahrung mit den auf der Leihnehmervorrichtung laufenden Anwendungen optimiert werden, indem die Zugriffsgeschwindigkeiten für weniger kritische Aspekte selektiv herabgesetzt werden.
  • In 9 können die Inhalte in den Speicherbereichen (z. B. 291, ..., 293) im lokalen Speicher (211) auch mit Kritikalitätsstufen (z. B. 407, ..., 409) gekennzeichnet werden. Die Kritikalitätsstufen (z. B. 407, ..., 409) können verwendet werden, um eine vorausschauende Verdrängung oder Migration weniger kritischer Inhalte in den ausgeliehenen Speicher (204) zu veranlassen, wenn eine signifikante Verschlechterung der verfügbaren Gesamtbandbreite zu erwarten ist.
  • Beispielsweise kann in einem bestimmten Modell der gemeinsamen Nutzung von Bandbreite mit einer Granularität von Unterseiten eine Bandbreitenmanagementfunktion auf Verbindungsebene oder eine erzwungene Bündelung auf der Verbindung verwendet werden. Eine solche Implementierung kann zu potenziell ineffizienten Szenarien ohne Drosselung führen. Wenn die Granularität der Verwaltung die Seite ist (statt einer Unterseite), kann auch die Rate der abgerufenen Seiten langsam sein, nicht die tatsächliche Zeit, die für den Abruf einer einzelnen Seite benötigt wird. Bei bestimmten Implementierungen kann das Abrufen des Inhalts einer Speicherseite mit niedriger Kritikalitätsstufe länger dauern als das Abrufen des Inhalts einer Speicherseite mit hoher Kritikalitätsstufe. Bei anderen Implementierungen kann die Zeitdauer für den Abruf einer Seite mit niedriger Kritikalitätsstufe im Wesentlichen konstant bleiben, aber die Geschwindigkeit, mit der Gruppen von Seiten mit niedriger Kritikalitätsstufe abgerufen werden können, kann sich im Vergleich zu Gruppen von Seiten mit hoher Kritikalitätsstufe verlangsamen.
  • In einigen Fällen leiht sich beispielsweise eine Leihnehmervorrichtung (201) Speicher von mehreren Leihgebervorrichtungen (z. B. 103, 105 und/oder 107). So kann die Leihnehmervorrichtung (201) beispielsweise eine Leihgebervorrichtung (z. B. 105 oder 107) anweisen, eine der Leihnehmervorrichtung (201) geliehene Speicherseite direkt an eine andere Leihgebervorrichtung (z. B. 103 oder 105) zu übertragen oder zu kopieren. Alternativ kann die Leihnehmervorrichtung (201) die Speicherseite von einem Leihgeber (z. B. 105 oder 107) in den lokalen Speicher migrieren und dann die Seite an einen anderen Leihgeber (z. B. 103 oder 105) auslagern.
  • 10 veranschaulicht die Kennzeichnung der Kritikalitätsstufen (oder Prioritätsrängen) von Speicherbereichen in einer Speicherabbildung gemäß einer Ausführungsform. Zum Beispiel kann die Speicherabbildung von 10 verwendet werden, um die Kritikalitätskennzeichnung in 9 zu implementieren.
  • In 10 können die virtuellen Speicheradressbereiche (261, 263, 265, ...) auf physische Adressbereiche (282, 283) und Adressbereiche ausgeliehener Speicher (273, 275, ...) abgebildet werden, und zwar in ähnlicher Weise wie in 3, 4 oder 5. Die Speicherabbildung (207) kann zum Beispiel in Form von Seitentabellen angegeben werden.
  • Des Weiteren kann die Speicherabbildung (207) für jeden der virtuellen Adressbereiche (261, 263, 265, ...) eine Kritikalitätsstufe (z. B. 411, 413 oder 415) beinhalten. Die Kritikalitätsstufe (z. B. 411, 413 oder 415) kann verwendet werden, um den Anteil der Bandbreite zu bestimmen, den der virtuelle Adressbereich (z. B. 261, 263 oder 265) für die Datenkommunikation zwischen der Leihnehmervorrichtung (201) und der Leihgebervorrichtung (203) verwenden kann.
  • 11 veranschaulicht ein Verfahren zur Ermittlung der Kritikalitätsstufe/des Prioritätsrangs eines Speicherbereichs gemäß einer Ausführungsform. Zum Beispiel kann das Verfahren von 11 verwendet werden, um eine der Kritikalitätsstufen (z. B. 401 bis 415) in 9 und 10 zu bestimmen.
  • In 11 kann die Kritikalitätsstufe (421) des Inhalts eines Speicherbereichs basierend auf der Inhaltskategorie (431), der Priorität (433) der Anwendung (z. B. 212), die den Inhalt kontrolliert, und/oder der von der Anwendung (z. B. 212) für den Inhalt angeforderten Priorität bestimmt werden.
  • Unterschiedliche Inhaltskategorien können eine bestimmte Gewichtung aufweisen. Wenn eine Anwendung eine Speicherseite zum Speichern von Daten zuweist, kann die Anwendung die Inhaltskategorie (431) der Speicherseite identifizieren, wie z. B. Anwendungsstatus, historische/Log-Daten, Medien, Sensordaten usw. Das Betriebssystem (213) kann basierend auf der Inhaltskategorie (431) vorbestimmte Gewichtungen für die Kritikalität zuweisen.
  • Unterschiedliche Anwendungen können vorgegebene Gewichtungen für ihre Kritikalität aufweisen. Ein Benutzer einer Vorrichtung kann die Erfahrung mit einer Anwendung (212) mehr schätzen als die Erfahrung mit einer anderen Anwendung und daher die Gewichtungen für verschiedene Anwendungen anpassen. In einigen Fällen können verschiedene Anwendungen eine gegenseitige Abhängigkeit aufweisen. So kann einer Anwendung, die wichtige Dienste für andere Anwendungen bereitstellt, eine höhere Priorität zugewiesen werden (433).
  • Unterschiedliche Teilmengen von Daten derselben Anwendung und derselben Inhaltskategorie (431) können unterschiedliche Prioritäten (435) aufweisen. Wenn die Anwendung (212) so programmiert ist, dass sie eine benutzerdefinierte Priorität (435) anfordert, kann die Anwendung (212) verbesserte Vorhersagen (z. B. 439) basierend auf Informationen treffen, die dem Betriebssystem (213) möglicherweise nicht zur Verfügung stehen. Wenn die Anwendung (212) keine angepasste Priorität (435) anfordert, kann das Betriebssystem (213) die Speichernutzung der Anwendung (212) verfolgen und eine nutzungsbasierte Priorität (435) für den Inhalt anfordern.
  • Eine vorbestimmte Funktion kann verwendet werden, um die Inhaltskategorie (431), die Anwendungspriorität (433), ..., und/oder die angeforderte Priorität (435) zu kombinieren, um die Kritikalitätsstufe (421) zu erzeugen. So können beispielsweise Gewichtungen für die Inhaltskategorie (431), die Anwendungspriorität (433), ..., die angeforderte Priorität (435) berechnet und summiert werden, um eine Gesamtgewichtung als Kritikalitätsstufe (421) zu erhalten. Beispielsweise können die Prioritäten (433 ..., 435) summiert werden, um ein Gewicht zu erzeugen, das angewandt wird, um das Gewicht der Inhaltskategorie (431) durch Multiplikation zu erhöhen oder zu verringern.
  • 12 zeigt ein Verfahren zur Drosselung der Netzwerkkommunikation für Speicher als Dienst gemäß einer Ausführungsform. Zum Beispiel kann das Verfahren von 12 in der in Leihnehmervorrichtung (201) impementiert werden, die in 2, 6 oder 9. Zum Beispiel kann das Verfahren von 12 als die Vorrichtung A (101), die Vorrichtung B (103) oder der Server P (105) von 1 beim Ausleihen von Speicher implementiert werden.
  • In Block 451 wird eine Kommunikationsverbindung (z. B. 205) zwischen einer Leihnehmervorrichtung (201) und einer Leihgebervorrichtung (203) hergestellt. Die Verbindung (205) kann z. B. über die in 1 dargestellten Netzwerke und/oder das Internet (109) erfolgen.
  • In Block 453 kommuniziert die Leihnehmervorrichtung (201) mit der Leihgebervorrichtung (203), um die Erlaubnis für die Leihnehmervorrichtung (201) zu erhalten, eine von der Leihgebervorrichtung (203) geliehene Speichermenge (202) für den Zugriff durch die Leihnehmervorrichtung (201) über die Kommunikationsverbindung (205) zu verwenden.
  • In Block 455 weist das Betriebssystem der Leihnehmervorrichtung (201) den in der Leihnehmervorrichtung (201) laufenden Anwendungen (z. B. 212) virtuellen Speicher zu.
  • In Block 457 konfiguriert das Betriebssystem der Leihnehmervorrichtung (201) den virtuellen Speicher so, dass er zumindest teilweise auf der Menge an Speicher (202) basiert, die von der Leihgebervorrichtung (203) an die Leihnehmervorrichtung (201) ausgeliehen wurde.
  • In Block 459 bestimmt die Leihnehmervorrichtung (201) die Kritikalitätsstufen (z. B. 401 bis 415) von Inhalten in Speicherbereichen (z. B. 291 bis 299, 261 bis 265, 273 bis 275 und 281 bis 283), die von den Anwendungen (z. B. 212) verwendet werden.
  • In Block 461 weist die Leihvorrichtung (201) basierend auf den Kritikalitätsstufen die Netzwerkbandbreite der Kommunikationsverbindung (212) den Datenkommunikationen zu, die von den Speicherregionen beim Zugriff auf die Speichermenge (202) verwendet werden, die von der Leihvorrichtung (203) über die Kommunikationsverbindung (205) an die Leihvorrichtung (201) ausgeliehen wurde.
  • Der von der Leihgebervorrichtung (203) geliehene Speicher kann zum Teil von der Leihnehmervorrichtung (203) von einer anderen Vorrichtung (z. B. 245) ausgeliehen werden.
  • Die Kritikalitätsstufen (z. B. 401 bis 415, 421) können zumindest teilweise basierend auf Kategorien (431) der Inhalte, Prioritäten (433) der Anwendungen (z. B. 212), die die Inhalte steuern, oder Prioritäten (435), die von den Anwendungen (z. B. 212) für die Inhalte angefordert werden, oder einer beliebigen Kombination davon ermittelt werden.
  • Beispielsweise können die Anwendungen (z. B. 212) die Prioritäten (435) für die in den Speicherbereichen gespeicherten Inhalte basierend auf Nutzungshistorien der Inhalte, vorhergesagten Nutzungen (z. B. 439) der Inhalte in einem nachfolgenden Zeitraum oder Nutzungshäufigkeiten (z. B. 437) der Inhalte oder einer beliebigen Kombination davon anfordern. In einigen Fällen kann das Betriebssystem (213) die Nutzungshistorien sammeln, vorhergesagte Nutzungen (z. B. 439) und/oder Nutzungshäufigkeiten (z. B. 437) bestimmen und/oder die angeforderte Priorität (435) im Namen einer Anwendung (z. B. 212) berechnen.
  • Um die Netzwerkbandbreite zuzuteilen, kann das Betriebssystem (213) der Leihvorrichtung (201) oder die Kommunikationsvorrichtung (217) der Leihvorrichtung (201) die Mengen an Datenkommunikation, die in einem Zeitraum für die Speicherbereiche über die Kommunikationsverbindung beim Zugriff auf die von der Leihvorrichtung (203) an die Leihvorrichtung (201) ausgeliehene Speichermenge (202) verwendet werden, gemäß einem Verhältnis drosseln/kontrollieren, das den Kritikalitätsstufen der Inhalte in den Speicherbereichen entspricht. Somit kann während des Zeitraums die für die Speicherbereiche verwendete Kommunikation als entsprechend dem Verhältnis erlaubt angesehen werden; und die durchschnittlichen Geschwindigkeiten der Datenkommunikation für die verschiedenen Speicherbereiche können so gesteuert werden, dass sie proportional zu dem Verhältnis sind.
  • In einigen Fällen kann die Leihnehmervorrichtung (201) die Verschlechterung der Netzwerkbandbreite der Kommunikationsverbindung in einem nachfolgenden Zeitraum vorhersagen. Als Reaktion darauf kann das Betriebssystem (213) das Hosting des virtuellen Speichers zwischen dem lokalen Speicher (211) der Leihvorrichtung und der Menge an Speicher (203), die von der Leihvorrichtung (203) an die Leihnehmervorrichtung (201) ausgeliehen wurde, entsprechend den Kritikalitätsstufen der Inhalte in den Speicherbereichen anpassen.
  • Zum Beispiel kann das Betriebssystem (213) der Leihnehmervorrichtung (201) einen ersten Speicherbereich identifizieren, der eine niedrigere Kritikalitätsstufe aufweist als ein zweiter Speicherbereich. Das Betriebssystem (213) kann das Hosten von virtuellem Speicher so rekonfigurieren, dass ein virtueller Speicherbereich, der dem ersten Speicherbereich zugeordnet ist, davon, dass er im lokalen Speicher (211) gehostet oder zwischengespeichert wird, zum Hosten in der Menge an Speicher (202) migriert wird, die von der Leihgebervorrichtung (203) an die Leihnehmervorrichtung (201) verliehen wird; und ein virtueller Speicherbereich, der mit dem zweiten Speicherbereich assoziiert ist, kann davon, dass er in der Menge an Speicher (202) gehostet wird, die von der Leihgebervorrichtung (2030) an die Leihnehmervorrichtung (201) ausgeliehen wurde, dazu migriert werden, dass er in dem lokalen Speicher (211) der Leihnehmervorrichtung (201) gehostet oder gecached wird.
  • In einigen Ausführungsformen können die Speicherverwaltungseinheiten (MMU) von oben beschriebenen Rechenvorrichtungen oder Servern (z. B. 101, 103, 105, 107, 201, 203) als ein oder mehrere Datenverarbeitungssysteme implementiert werden.
  • Ein typisches Datenverarbeitungssystem kann eine Zwischenverbindung (z. B. Bus und Systemkernlogik) einschließen, die einen oder mehrere Mikroprozessoren und Speicher miteinander verbindet. Der Mikroprozessor kann auch eine On-Die-Cache-Hierarchie aufweisen.
  • Der Inter-Connect verbindet den/die Mikroprozessor(en) und den Speicher miteinander und verbindet sie außerdem über E/A-Steuerung(en) mit der/den Ein-/Ausgabevorrichtung(en). E/A-Vorrichtungen können eine Anzeigevorrichtung und/oder Peripheriegeräte wie Mäuse, Tastaturen, Modems, Netzwerkschnittstellen, Drucker, Scanner, Videokameras und andere in der Technik bekannte Vorrichtungen einschließen. In einer Ausführungsform, wenn es sich bei dem Datenverarbeitungssystem um ein Serversystem handelt, sind einige der E/A-Vorrichtungen, wie Drucker, Scanner, Mäuse und/oder Tastaturen, optional.
  • Der Interconnect kann einen oder mehrere Busse einschließen, die über verschiedene Brücken, Steuerungen und/oder Adapter miteinander verbunden sind. In einer Ausführungsform schließen die E/A-Controller einen USB-Adapter (Universal Serial Bus) zur Steuerung von USB-Peripheriegeräten und/oder einen IEEE-1394-Busadapter zur Steuerung von IEEE-1394-Peripheriegeräten ein.
  • Der Speicher kann eines oder mehrere der folgenden Elemente beinhalten: ROM (Read Only Memory), flüchtiger RAM (Random Access Memory) und nichtflüchtiger Speicher, wie z. B. Festplatte, Flash-Speicher usw.
  • Flüchtiger Arbeitsspeicher ist in der Regel als dynamischer Arbeitsspeicher (DRAM) implementiert, der ständig Strom benötigt, um die Daten im Speicher aufzufrischen oder zu erhalten. Bei dem nichtflüchtigen Speicher handelt es sich in der Regel um eine magnetische Festplatte, ein magnetisch-optisches Laufwerk, ein optisches Laufwerk (z. B. ein DVD-RAM), einen FLASH-Speicher, einen 3D-Kreuzungspunkt oder eine andere Art von Speichersystem, das die Daten auch nach dem Ausschalten des Systems beibehält. Der nichtflüchtige Speicher kann auch ein Direktzugriffsspeicher sein.
  • Der nichtflüchtige Speicher kann eine lokale Vorrichtung sein, die direkt mit den übrigen Komponenten des Datenverarbeitungssystems verbunden ist. Es kann auch ein nichtflüchtiger Speicher verwendet werden, der vom System entfernt ist, z. B. eine Vorrichtung für eine Netzwerkspeicherung, die über eine Netzwerkschnittstelle wie ein Modem oder eine Ethernet-Schnittstelle mit dem Datenverarbeitungssystem verbunden ist.
  • In der vorliegenden Offenbarung sind einige Funktionen und Operationen so beschrieben, dass sie durch Softwarecode durchgeführt oder verursacht werden, um die Beschreibung zu vereinfachen. Solche Ausdrücke werden jedoch auch verwendet, um zu spezifizieren, dass die Funktionen aus der Ausführung des Codes/der Anweisungen durch einen Prozessor, z. B. einen Mikroprozessor oder einen IP-Block eines SoS (System-on-a-Chip), resultieren können.
  • Alternativ oder in Kombination können die hier beschriebenen Funktionen und Vorgänge mit speziellen Schaltkreisen mit oder ohne Softwareanweisungen implementiert werden, z. B. mit einem anwendungsspezifischen integrierten Schaltkreis (ASIC) oder einem feldprogrammierbaren Gate Array (FPGA). Ausführungsformen können unter Verwendung festverdrahteter Schaltungen ohne Softwareanweisungen oder in Kombination mit Softwareanweisungen implementiert werden. Somit sind die Techniken weder auf eine bestimmte Kombination von Hardwareschaltungen und Software noch auf eine bestimmte Quelle für die von dem Datenverarbeitungssystem ausgeführten Anweisungen beschränkt.
  • Während ein Ausführungsform in voll funktionsfähigen Computern und Computersystemen implementiert werden können, sind verschiedene Ausführungsformen in der Lage, als Computerprodukt in einer Vielzahl von Formen verteilt zu sein und können unabhängig von der besonderen Art der maschinen- oder computerlesbaren Medien angewendet werden, das verwendet wird, um die Verteilung tatsächlich zu bewirken.
  • Zumindest einige offenbarte Aspekte können zumindest teilweise in Software verkörpert werden. Das heißt, die Techniken können in einem Computersystem oder einem anderen Datenverarbeitungssystem als Reaktion darauf ausgeführt werden, dass sein Prozessor, wie ein Mikroprozessor, Befehlsfolgen ausführt, die in einem Speicher wie ROM, flüchtigem RAM, nichtflüchtigem Speicher, Cache oder ein Remote-Speichergerät enthalten sind.
  • Routinen, die zur Implementierung der Ausführungsformen ausgeführt werden, können als Teil eines Betriebssystems, einer spezifischen Anwendung, einer Komponente, eines Programms, Objekts, Moduls oder einer Befehlsfolge, auch als „Computerprogramme“ bezeichnet, implementiert sein. Die Computerprogramme beinhalten typischerweise eine oder mehrere Anweisungen, die zu verschiedenen Zeitpunkten in verschiedene Speicher und Speichergeräte in einem Computer gesetzt werden und die, wenn sie von einem oder mehreren Prozessoren in einem Computer gelesen und ausgeführt werden, den Computer veranlassen, Operationen durchzuführen, die notwendig sind, um Elemente auszuführen, welche die verschiedenen Aspekte beinhalten.
  • Ein maschinenlesbares Medium kann verwendet werden, um Software und Daten zu speichern, die, wenn sie von einem Datenverarbeitungssystem ausgeführt werden, das System veranlassen, verschiedene Verfahren durchzuführen. Die ausführbare Software und Daten können an verschiedenen Orten gespeichert werden, einschließlich beispielsweise ROM, flüchtiger RAM, nichtflüchtiger Speicher und/oder Zwischenspeicher. Teile dieser Software und/oder Daten können in jedem dieser Speichergeräte gespeichert werden. Außerdem können die Daten und Anweisungen von zentralisierten Servern oder Peer-to-Peer-Netzwerken bezogen werden. Verschiedene Teile der Daten und Anweisungen können von verschiedenen zentralisierten Servern und/oder Peer-to-Peer-Netzwerke zu unterschiedlichen Zeiten und in unterschiedlichen Kommunikationssitzungen oder in derselben Kommunikationssitzung bezogen werden. Die Daten und Anweisungen können vor Ausführung der Anwendungen vollständig bezogen werden. Alternativ können Teile der Daten und Anweisungen dynamisch, gerade rechtzeitig, bezogen werden, wenn sie für die Ausführung benötigt werden. Somit ist es nicht erforderlich, dass sich die Daten und Anweisungen zu einem bestimmten Zeitpunkt vollständig auf einem maschinenlesbaren Medium befinden.
  • Beispiele für computerlesbare Medien schließen ein, sind aber nicht beschränkt auf nicht-transitorische, beschreibbare und nicht beschreibbare Medien wie flüchtige und nicht flüchtige Speichergeräte, Nur-Lese-Speicher (ROM), Direktzugriffsspeicher (RAM), Flash-Speichergeräte, Disketten und andere Wechselplatten, Magnetplattenspeichermedien, optische Speichermedien (z. B. Compact Disk Read-Only Memory (CD-ROMs), Digital Versatile Disks (DVDs) usw.), neben anderen. Die computerlesbaren Medien können die Anweisungen speichern.
  • Die Anweisungen können auch in digitalen und analogen Kommunikationsverbindungen für elektrische, optische, akustische oder andere Formen von übertragenen Signalen wie Trägerwellen, Infrarotsignalen, digitalen Signalen usw. enthalten sein. Ausgebreitete Signale wie Trägerwellen, Infrarotsignale, digitale Signale usw. sind jedoch keine greifbaren, maschinenlesbaren Medien und können keine Anweisungen speichern.
  • Im Allgemeinen schließt ein maschinenlesbares Medium jeden Mechanismus ein, der Informationen in einer Form bereitstellt (d. h. speichert und/oder überträgt), auf die eine Maschine zugreifen kann (z. B. ein Computer, ein Netzwerkgerät, ein persönlicher digitaler Assistent, ein Fertigungswerkzeug, ein beliebiges Gerät mit einem Satz von einem oder mehreren Prozessoren usw.).
  • In verschiedenen Ausführungsformen können festverdrahtete Schaltungen in Kombination mit Software-Anweisungen verwendet werden, um die Techniken zu implementieren. Somit sind die Techniken weder auf eine bestimmte Kombination von Hardwareschaltungen und Software noch auf eine bestimmte Quelle für die von einem Rechengerät ausgeführten Anweisungen beschränkt.
  • Die obige Beschreibung und die Zeichnungen dienen der Veranschaulichung und sind nicht als einschränkend auszulegen. Zahlreiche spezifische Details werden beschrieben, um ein gründliches Verständnis zu ermöglichen. In bestimmten Fällen werden jedoch bekannte oder herkömmliche Details nicht beschrieben, um die Beschreibung nicht zu verschleiern. Bezugnahmen auf eine oder einer Ausführungsform in der vorliegenden Offenbarung sind nicht notwendigerweise Bezugnahmen auf dieselbe Ausführungsform; und derartige Verweise bedeuten zumindest einen.
  • In der vorstehenden Beschreibung ist die Offenbarung unter Bezugnahme auf spezifische beispielhafte Ausführungsformen davon beschrieben worden. Es ist offensichtlich, dass verschiedene Modifikationen daran vorgenommen werden können, ohne von dem breiteren Geist und Umfang, wie in den folgenden Ansprüchen dargelegt, abzuweichen. Die Beschreibung und die Zeichnungen sind dementsprechend in einem veranschaulichenden und nicht einschränkenden Sinne zu verstehen.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 16/424413 [0001]

Claims (21)

  1. Verfahren, umfassend: Herstellen einer Kommunikationsverbindung zwischen einer ersten Vorrichtung und einer zweiten Vorrichtung; Erhalten einer Erlaubnis für die erste Vorrichtung, eine Menge an Speicher an der zweiten Vorrichtung über die Kommunikationsverbindung zu verwenden; Zuweisen von virtuellem Speicher an Anwendungen, die in der ersten Vorrichtung laufen; Konfigurieren mindestens eines Teils des virtuellen Speichers, so dass er in der Menge an Speicher an der zweiten Vorrichtung gehostet wird; Identifizieren von Prioritätsrängen von Inhalten in Speicherbereichen, die von den Anwendungen verwendet werden; und Zuweisen von Netzwerkbandbreite der Kommunikationsverbindung auf Grundlage der Prioritätsränge zu Datenkommunikationen, die von den Speicherbereichen beim Zugreifen auf die Menge an Speicher über die Kommunikationsverbindung verwendet werden.
  2. Verfahren nach Anspruch 1, wobei die Prioritätsränge zumindest teilweise auf Grundlage von Kategorien der Inhalte identifiziert werden.
  3. Verfahren nach Anspruch 2, wobei die Prioritätsränge ferner auf Grundlage von Prioritäten der Anwendungen, die die Inhalte steuern, identifiziert werden.
  4. Verfahren nach Anspruch 3, wobei die Prioritätsränge ferner auf Grundlage von Prioritäten, die von den Anwendungen, die die Inhalte steuern, angefordert werden, identifiziert werden.
  5. Verfahren nach Anspruch 4, wobei die Prioritäten, die von den Anwendungen, die die Inhalte steuern, angefordert werden, auf Nutzungshistorien der Inhalte basieren.
  6. Verfahren nach Anspruch 4, wobei die Prioritäten, die von den Anwendungen, die die Inhalte steuern, angefordert werden, auf vorhergesagten Nutzungen der Inhalte in einem nachfolgenden Zeitraum basieren.
  7. Verfahren nach Anspruch 4, wobei die Prioritäten, die von den Anwendungen, die die Inhalte steuern, angefordert werden, auf Nutzungshäufigkeiten der Inhalte basieren.
  8. Verfahren nach Anspruch 1, wobei das Zuweisen von Netzwerkbandbreite Drosseln von Mengen an Datenkommunikationen für die Speicherbereiche in einem Zeitraum über die Kommunikationsverbindung beim Zugreifen auf die Menge an Speicher gemäß einem Verhältnis, das den Prioritätsrängen der Inhalte in den Speicherbereichen entspricht, beinhaltet.
  9. Verfahren nach Anspruch 1, ferner umfassend: Vorhersagen einer Verschlechterung der Netzwerkbandbreite der Kommunikationsverbindung in einem nachfolgenden Zeitraum; und Anpassen des Hostens von virtuellem Speicher zwischen lokalem Speicher der ersten Vorrichtung und der Menge an Speicher an der zweiten Vorrichtung gemäß den Prioritätsrängen von Inhalten in den Speicherbereichen.
  10. Verfahren nach Anspruch 9, wobei das Anpassen Folgendes umfasst: Identifizieren eines ersten Speicherbereichs, der einen niedrigeren Prioritätsrang als ein zweiter Speicherbereich aufweist; und Migrieren des Hostens eines virtuellen Speicherbereichs, der dem ersten Speicherbereich zugeordnet ist, davon, dass er im lokalen Speicher gehostet oder zwischengespeichert wird, dazu, dass er in der Menge an Speicher an der zweiten Vorrichtung gehostet wird.
  11. Verfahren nach Anspruch 10, wobei das Anpassen ferner Folgendes umfasst: Migrieren des Hostens eines virtuellen Speicherbereichs, der dem zweiten Speicherbereich zugeordnet ist, davon, dass er in der Menge an Speicher an der zweiten Vorrichtung gehostet wird, dazu, dass er in dem lokalen Speicher gehostet oder zwischengespeichert wird.
  12. Rechenvorrichtung, umfassend: eine Kommunikationsvorrichtung, die so konfiguriert ist, dass sie über eine drahtgebundene oder drahtlose Netzwerkverbindung kommuniziert; Direktzugriffsspeicher; einen Speicherbus; und mindestens einen Mikroprozessor, der über den Speicherbus an den Direktzugriffsspeicher gekoppelt ist, wobei der Mikroprozessor eine Speicherverwaltungseinheit aufweist, die so konfiguriert ist, dass sie virtuelle Speicheradressen, die in dem Mikroprozessor verwendet werden, in physische Speicheradressen umwandelt und gemäß den aus der virtuellen Speicheradresse umgewandelten physischen Speicheradressen auf den Direktzugriffsspeicher zugreift; wobei die Rechenvorrichtung zu Folgendem konfiguriert ist: Erhalten einer Erlaubnis von der Rechenvorrichtung, eine Menge an Speicher an einer zweiten Vorrichtung über die Kommunikationsverbindung zu verwenden; Zuweisen von virtuellem Speicher zu Anwendungen, die in der Rechenvorrichtung laufen; Konfigurieren mindestens eines Teils des virtuellen Speicher, so dass er in der Menge an Speicher an der zweiten Vorrichtung gehostet wird; Identifizieren von Prioritätsrängen von Inhalten in Speicherbereichen, die von den Anwendungen verwendet werden; und Zuweisen von Netzwerkbandbreite der Kommunikationsverbindung auf Grundlage der Prioritätsränge zu Datenkommunikationen, die von den Speicherbereichen beim Zugreifen auf die Menge an Speicher über die Kommunikationsverbindung verwendet werden.
  13. Rechenvorrichtung nach Anspruch 12, wobei die Rechenvorrichtung ferner so konfiguriert ist, dass sie die Prioritätsränge zumindest teilweise auf Grundlage von Kategorien der Inhalte, Prioritäten der Anwendungen, die die Inhalte steuern, oder Prioritäten, die für die Inhalte von den Anwendungen angefordert werden, oder einer beliebigen Kombination davon bestimmt.
  14. Rechenvorrichtung nach Anspruch 13, wobei die Rechenvorrichtung ferner so konfiguriert ist, dass sie Nutzungshistorien der Inhalte, vorhergesagte Nutzungen der Inhalte in einem nachfolgenden Zeitraum oder Nutzungshäufigkeiten der Inhalte oder eine Kombination davon bei der Bestimmung der Prioritäten, die für die Inhalte angefordert werden, bestimmt.
  15. Rechenvorrichtung nach Anspruch 12, wobei die Rechenvorrichtung ferner so konfiguriert ist, dass sie Mengen an Datenkommunikationen für die Speicherbereiche in einem Zeitraum über die Kommunikationsverbindung beim Zugreifen auf die Menge an Speicher gemäß einem aus den Prioritätsrängen der Inhalte in den Speicherbereichen bestimmten Verhältnis drosselt.
  16. Rechenvorrichtung nach Anspruch 12, wobei die Rechenvorrichtung ferner zu Folgendem konfiguriert ist: Vorhersagen einer Verschlechterung der Netzwerkbandbreite der Kommunikationsverbindung in einem nachfolgenden Zeitraum; und Anpassen des Hostens von virtuellem Speicher zwischen dem Direktzugriffsspeicher der Rechenvorrichtung und der Menge an Speicher an der zweiten Vorrichtung gemäß den Prioritätsrängen von Inhalten in den Speicherbereichen.
  17. Rechenvorrichtung nach Anspruch 16, wobei die Rechenvorrichtung ferner zu Folgendem konfiguriert ist: Identifizieren eines ersten Speicherbereichs, der einen niedrigeren Prioritätsrang als ein zweiter Speicherbereich aufweist; Migrieren des Hostens eines virtuellen Speicherbereichs, der dem ersten Speicherbereich zugeordnet ist, davon, dass er im lokalen Speicher gehostet oder zwischengespeichert wird, dazu, dass er in der Menge an Speicher an der zweiten Vorrichtung gehostet wird; und Migrieren des Hostens eines virtuellen Speicherbereichs, der dem zweiten Speicherbereich zugeordnet ist, davon, dass er in der Menge an Speicher an der zweiten Vorrichtung gehostet wird, dazu, dass er in dem lokalen Speicher gehostet oder zwischengespeichert wird.
  18. Nicht-transitorisches Computerspeichermedium, das Anweisungen speichert, die bei Ausführung in einer Rechenvorrichtung die Rechenvorrichtung veranlassen, ein Verfahren durchzuführen, wobei das Verfahren Folgendes umfasst: Ausleihen einer Menge an Direktzugriffsspeicher der zweiten Vorrichtung über eine Kommunikationsverbindung zwischen der zweiten Vorrichtung und der Rechenvorrichtung; Zuweisen von virtuellem Speicher zu Anwendungen, die in der Rechenvorrichtung laufen; Konfigurieren mindestens eines Teils des virtuellen Speichers, so dass er in der Menge an Speicher an der zweiten Vorrichtung gehostet wird; Identifizieren von Prioritätsrängen von Inhalten in Speicherbereichen, die von den Anwendungen verwendet werden; und Drosseln von Datenkommunikationen, die von den Speicherbereichen beim Zugreifen auf die Menge an Speicher über die Kommunikationsverbindung verwendet werden, gemäß den Prioritätsrängen der Inhalte in Speicherbereichen.
  19. Nicht-transitorisches Computerspeichermedium nach Anspruch 18, wobei das Verfahren ferner Folgendes umfasst: Bestimmen der Prioritätsränge zumindest teilweise auf Grundlage von Kategorien der Inhalte, Prioritäten der Anwendungen, die die Inhalte steuern, oder Prioritäten, die für die Inhalte von den Anwendungen angefordert werden, oder einer beliebigen Kombination davon.
  20. Nicht-transitorisches Computerspeichermedium nach Anspruch 18, wobei das Verfahren ferner Folgendes umfasst: Vorhersagen einer Verschlechterung der Netzwerkbandbreite der Kommunikationsverbindung in einem nachfolgenden Zeitraum; und Anpassen einer Verteilung des virtuellen Speichers, der in lokalem Speicher der Rechenvorrichtung gehostet wird, und der Menge an Speicher an der zweiten Vorrichtung gemäß den Prioritätsrängen von Inhalten in den Speicherbereichen.
  21. Nicht-transitorisches Computerspeichermedium nach Anspruch 18, wobei die Kommunikationsverbindung über ein Mobilfunknetzwerk der fünften Generation besteht.
DE112020002575.6T 2019-05-28 2020-04-22 Drosselung von speicher als dienst auf grundlage der verbindungsbandbreite Pending DE112020002575T5 (de)

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 (1)

Publication Number Publication Date
DE112020002575T5 true DE112020002575T5 (de) 2022-04-21

Family

ID=73550697

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112020002575.6T Pending DE112020002575T5 (de) 2019-05-28 2020-04-22 Drosselung von speicher als dienst auf grundlage der verbindungsbandbreite

Country Status (5)

Country Link
US (2) US11334387B2 (de)
KR (2) KR20220000406A (de)
CN (1) CN113906399B (de)
DE (1) DE112020002575T5 (de)
WO (2) WO2020242664A1 (de)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11438414B2 (en) 2019-05-28 2022-09-06 Micron Technology, Inc. Inter operating system memory services over communication network connections
US11256624B2 (en) 2019-05-28 2022-02-22 Micron Technology, Inc. Intelligent content migration with borrowed memory
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
US11169930B2 (en) 2019-05-28 2021-11-09 Micron Technology, Inc. Fine grain data migration to or from borrowed memory
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

Family Cites Families (57)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6275911B1 (en) * 1996-09-20 2001-08-14 Denso Corporation Memory writing device for an electronic device
US7260635B2 (en) * 2000-03-21 2007-08-21 Centrisoft Corporation Software, systems and methods for managing a distributed network
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
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
CN102986189B (zh) * 2010-05-09 2016-04-27 思杰系统有限公司 用于为对应于虚通道的网络连接分配服务等级的系统和方法
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
GB2503405B (en) 2011-04-19 2015-06-24 Seven Networks Inc Device resource sharing for network resource conservation
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
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
CN106462525A (zh) 2014-06-10 2017-02-22 慧与发展有限责任合伙企业 使用远程直接内存访问(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
US9626108B2 (en) * 2014-09-16 2017-04-18 Kove Ip, Llc Dynamically provisionable and allocatable external memory
JP6394315B2 (ja) * 2014-11-20 2018-09-26 富士通株式会社 ストレージ管理装置、性能調整方法及び性能調整プログラム
KR101700315B1 (ko) 2014-12-12 2017-01-26 국민대학교산학협력단 스크래치패드 메모리 관리 방법, 이를 수행하는 스크래치패드 메모리 관리 장치 및 이를 저장하는 기록매체
US9892037B2 (en) 2014-12-29 2018-02-13 International Business Machines Corporation Efficient and secure direct storage device sharing in virtualized environments
EP3057266A1 (de) * 2015-02-11 2016-08-17 Thomson Licensing Verteilung von Bandbreite in einem Netzwerk
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
CN111353588B (zh) 2016-01-20 2024-03-05 中科寒武纪科技股份有限公司 用于执行人工神经网络反向训练的装置和方法
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
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
US11438414B2 (en) 2019-05-28 2022-09-06 Micron Technology, Inc. Inter operating system memory services over communication network connections
US11100007B2 (en) 2019-05-28 2021-08-24 Micron Technology, Inc. Memory management unit (MMU) for accessing borrowed memory

Also Published As

Publication number Publication date
WO2020242665A1 (en) 2020-12-03
CN113906399B (zh) 2024-05-24
US20200379808A1 (en) 2020-12-03
CN113906399A (zh) 2022-01-07
US11334387B2 (en) 2022-05-17
US20220237039A1 (en) 2022-07-28
WO2020242664A1 (en) 2020-12-03
KR20220000422A (ko) 2022-01-03
KR20220000406A (ko) 2022-01-03

Similar Documents

Publication Publication Date Title
DE112020002562T5 (de) Intelligente migration von inhalten mit ausgeliehenem speicher
DE112020002575T5 (de) Drosselung von speicher als dienst auf grundlage der verbindungsbandbreite
DE112020002583T5 (de) Speicherdienste zwischen betriebssystemen über kommunikationsnetzwerkverbindungen
DE112020002558T5 (de) Speicherverwaltungseinheit (mmu) für zugriff auf ausgeliehenen speicher
DE102019105879A1 (de) Verwaltung von kohärenten Verknüpfungen und Mehr-Ebenen-Speicher
DE112005002298B4 (de) Leistungssteigerung einer Adreßübersetzung unter Verwendung von Übersetzungstabellen, die große Adreßräume umfassen
DE112014000254B4 (de) Mehrstufiges Zwischenspeichern und Migrieren in unterschiedlichen Granularitäten
DE102011076895B4 (de) Cachekohärenzprotokoll für persistente Speicher
DE112017001027T5 (de) Seitenfehlerbehebung
DE102021121062A1 (de) System, vorrichtung und verfahren zur dynamischen bereitstellung kohärenter speicherdomänen
DE112011102822T5 (de) Leistungsoptimierte Interrupt-Abgabe
DE112012000635T5 (de) Dynamische Speicherverwaltung in einer virtualisierten Datenverarbeitungsumgebung
DE102011076894A1 (de) Persistenter Speicher für einen Prozessorhauptspeicher
DE202016107376U1 (de) Virtuelle Maschinensysteme
DE102018123669A1 (de) Host-Computer-Anordnung, Remote-Server-Anordnung, Speicherungssystem und Verfahren davon
US10802972B2 (en) Distributed memory object apparatus and method enabling memory-speed data access for memory and storage semantics
DE102022124530A1 (de) Speicherpoolmanagement
DE102019112291A1 (de) Verbessertes speicherungsmodell für ein computersystem mit persistentem systemspeicher
DE112021005873T5 (de) Speichermigration in einer multi-host-datenverarbeitungsumgebung
DE112021006711T5 (de) Techniken zum arbeitslastausgleich unter verwendung dynamischer pfadzustandsmodifikationen
DE102022129936A1 (de) Techniken zur Erweiterung des Systemspeichers durch Nutzung des verfügbaren Gerätespeichers
DE102012221261A1 (de) Verfahren zum Zwischenspeichern und System zum Ausführen des Verfahrens zum Zwischenspeichern zum Betreiben eines mindestens einen Host-Computer aufweisenden Computerserversystems
DE102020128675A1 (de) Puffer zum verringern von schreibverstärkung fehlausgerichteter schreiboperationen
DE112020002707T5 (de) Erweiterte speicherschnittstelle
DE102019111780A1 (de) Atomare befehle für copy-xor von daten

Legal Events

Date Code Title Description
R012 Request for examination validly filed