DE112020002558T5 - Speicherverwaltungseinheit (mmu) für zugriff auf ausgeliehenen speicher - Google Patents

Speicherverwaltungseinheit (mmu) für zugriff auf ausgeliehenen speicher Download PDF

Info

Publication number
DE112020002558T5
DE112020002558T5 DE112020002558.6T DE112020002558T DE112020002558T5 DE 112020002558 T5 DE112020002558 T5 DE 112020002558T5 DE 112020002558 T DE112020002558 T DE 112020002558T DE 112020002558 T5 DE112020002558 T5 DE 112020002558T5
Authority
DE
Germany
Prior art keywords
memory
virtual
address
page
management unit
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
DE112020002558.6T
Other languages
English (en)
Inventor
Samuel E. Bradshaw
Ameen D. Akel
Kenneth Marion Curewitz
Sean Stephen Eilert
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 DE112020002558T5 publication Critical patent/DE112020002558T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0615Address space extension
    • G06F12/063Address space extension for I/O modules, e.g. memory mapped I/O
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • G06F12/0882Page mode
    • 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]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17306Intercommunication techniques
    • G06F15/17331Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/26Using a specific storage system architecture
    • G06F2212/263Network storage, e.g. SAN or NAS
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6024History based prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/608Details relating to cache mapping
    • G06F2212/6082Way prediction in set-associative cache
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W84/00Network topologies
    • H04W84/02Hierarchically pre-organised networks, e.g. paging networks, cellular networks, WLAN [Wireless Local Area Network] or WLL [Wireless Local Loop]
    • H04W84/04Large scale networks; Deep hierarchical networks
    • H04W84/042Public Land Mobile systems, e.g. cellular systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

Es werden Systeme, Verfahren und Vorrichtungen zum Beschleunigen des Zugriffs auf ausgeliehenen Speicher über eine Netzwerkverbindung beschrieben. Zum Beispiel kann eine Speicherverwaltungseinheit (memory management unit - MMU) einer Rechenvorrichtung so konfiguriert sein, dass sie sowohl mit dem Direktzugriffsspeicher über einen Speicherbus als auch mit einem Computernetzwerk über eine Kommunikationsvorrichtung verbunden ist. Die Rechenvorrichtung kann eine Menge an Speicher von einer entfernten Vorrichtung über eine Netzwerkverbindung unter Verwendung der Kommunikationsvorrichtung ausleihen; und Anwendungen, die in der Rechenvorrichtung laufen, können virtuelle Speicheradressen verwenden, die auf den ausgeliehenen Speicher abgebildet sind. Wenn eine virtuelle Adresse, die auf den ausgeliehenen Speicher abgebildet ist, verwendet wird, übersetzt die MMU die virtuelle Adresse in eine physische Adresse und weist die Kommunikationsvorrichtung an, auf den ausgeliehenen Speicher zuzugreifen.

Description

  • VERWANDTE PATENTANMELDUNG
  • Die vorliegende Anmeldung beansprucht Priorität gegenüber US-Pat. Anm. Ser. Nr. 16/424,420 , eingereicht am 28. Mai 2019, mit dem Titel „SPEICHERVERWALTUNGSEINHEIT (MMU) FÜR ZUGRIFF AUF AUSGELIEHENEN SPEICHER“, 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.
    • 13 - 15 veranschaulichen hardwarebeschleunigte Konfigurationen für den Zugriff auf ausgeliehenen Speicher gemäß einigen Ausführungsformen.
    • 16 und 17 veranschaulichen hardwarebeschleunigte Konfigurationen für die Bereitstellung von Zugriff auf ausgeliehenen Speicher gemäß einigen Ausführungsformen.
    • 18 zeigt ein Verfahren zur Beschleunigung des Zugriffs auf ausgeliehenen Speicher über eine Speicherverwaltungseinheit 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. loT-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 sind die Speicherverwaltungseinheiten (MMU) von Rechenvorrichtungen so konfiguriert, dass der Zugriff auf ausgeliehene Speicher über eine Netzwerkverbindung beschleunigt wird.
  • Beispielsweise kann eine Speicherverwaltungseinheit (MMU) (216) einer Leihnehmervorrichtung (201) so konfiguriert sein, dass sie nicht nur über einen Speicherbus auf den lokalen Direktzugriffsspeicher (211) der Leihnehmervorrichtung (201) zugreift, sondern auch eine Kommunikationsvorrichtung (217) verwendet, um über eine Netzwerkverbindung (205) auf ausgeliehenen Speicher (204) zuzugreifen, der im ausgeliehenen Speicher (202) einer Leihgebervorrichtung (203) gehostet ist. Die Speicherverwaltungseinheiten (MMU) (216) können auf den ausgeliehenen Speicher (202) in der Leihgebervorrichtung (203) unter Verwendung der Kommunikationsvorrichtung (217) gemäß einer physischen Adresse (257) zugreifen, die von den Speicherverwaltungseinheiten (MMU) (216) aus einer virtuellen Adresse (255) übersetzt wird, ohne dass der/die Prozessor(en) (215) der Leihnehmervorrichtung (201) veranlasst werden muss/müssen, Anweisungen seines Betriebssystems (213) auszuführen.
  • Zum Beispiel können einige Routineoperationen, die von einem Betriebssystem (213) beim Zugriff auf den geliehenen Speicher (202) durchgeführt werden, in der Speicherverwaltungseinheit (MMU) (216) implementiert werden, so dass die Routineoperationen durchgeführt werden können, ohne dass der/die Prozessor(en) (215) Anweisungen in ihren Ausführungseinheiten ausführen. Eine solche MMU-Implementierung/Unterstützung kann die Effizienz des/der Prozessors/Prozessoren (215) beim Zugriff auf ausgeliehene Speicher (204) verbessern, die sich physisch in dem ausgeliehenen Speicher (202) der Leihgebervorrichtungen (203) befinden.
  • Im Allgemeinen kann ein Betriebssystem (213) so programmiert werden, dass es mehr Situationen bewältigen kann, als die Speicherverwaltungseinheit (MMU) (216) bewältigen kann. Wenn beispielsweise bei der Kommunikation zum Zugriff auf den geliehenen Speicher (202) über eine Netzwerkverbindung (205) außergewöhnliche Bedingungen auftreten, die die Verarbeitungsmöglichkeiten der Speicherverwaltungseinheit (MMU) (216) übersteigen, kann das Betriebssystem (213) ausgeführt werden, um solche Situationen zu bewältigen.
  • 13 - 15 veranschaulichen hardwarebeschleunigte Konfigurationen für den Zugriff auf ausgeliehenen Speicher gemäß einigen Ausführungsformen. Zum Beispiel können die Techniken der 13 - 15 im System von 1 oder 6 mit den Speicherdiensttechniken von 2 und den Speicherabbildungstechniken von 3 implementiert werden.
  • In 13 ist die Speicherverwaltungseinheit (MMU) (216) der Leihnehmervorrichtung (201) so konfiguriert, dass sie eine Verbindung mit dem lokalen Direktzugriffsspeicher (211) und eine Verbindung mit der Kommunikationsvorrichtung (217) der Leihnehmervorrichtung (201) aufweist. In einigen Fällen ist die Kommunikationsvorrichtung (217) Teil der Speicherverwaltungseinheit (MMU) (216).
  • Eine Abbildung (253) von virtuellem zu physischem Speicher, die im Adressumsetzpuffer (TLB) (251) zwischengespeichert ist, enthält Informationen zur Übersetzung einer virtuellen Adresse (256) in eine physische Adresse (257).
  • Wenn ein Befehl in den Ausführungseinheiten (215) der Leihnehmervorrichtung (201) ausgeführt wird, kann eine virtuelle Adresse (255), die in einem der Register (501) gespeichert ist und/oder von den Ausführungseinheiten erzeugt wird, dazu verwendet werden, einen Befehl zu laden, einen Operanden abzurufen und/oder ein Berechnungsergebnis zu speichern. In einer solchen Situation greift die Leihnehmervorrichtung (201) auf den durch die virtuelle Adresse (255) identifizierten virtuellen Speicher zu.
  • Wenn der durch die virtuelle Adresse (255) identifizierte virtuelle Speicher in einer Speicherseite (259) im lokalen Speicher (211) gehostet ist, ist die physische Adresse (257) so konfiguriert, dass sie für die Speicherverwaltungseinheit (216) ausreicht, um die Speicherseite (259) für eine Speicheroperation (z. B. Lesen oder Schreiben) zu adressieren.
  • Wenn der durch die virtuelle Adresse (255) identifizierte virtuelle Speicher in einer Speicherseite (260) im geliehenen Speicher (202) gehostet ist, der sich physisch innerhalb der Leihgebervorrichtung (203) befindet, ist die physische Adresse (257) so konfiguriert, dass sie ausreichende Informationen für die Kommunikationsvorrichtung (217) beinhaltet, um die Zugriffsanforderung an die Leihgebervorrichtung (203) über die Computernetzwerkverbindung (205) zu übertragen.
  • Wenn der durch die virtuelle Adresse (255) identifizierte virtuelle Speicher beispielsweise in einer Speicherseite (260) in dem geliehenen Speicher (202) gehostet ist, kann die physische Adresse (257) eine Netzwerkadresse der Leihgebervorrichtung (203) und eine virtuelle Speicheradresse in einem virtuellen Speicherraum einschließen, der vom Betriebssystem der Leihgebervorrichtung (203) bedient wird. Die Speicherverwaltungseinheit (MMU) (216) fordert die Kommunikationsvorrichtung (217) auf, eine Zugriffsanforderung an die Leihgebervorrichtung (203) unter Verwendung der Netzwerkadresse zu übertragen; und die Zugriffsanforderung schließt die virtuelle Adresse ein, die die Speicherseite (260) in der Leihgebervorrichtung (203) identifiziert.
  • Wenn die Kommunikationsvorrichtung (237) die Zugriffsanforderung empfängt, kann die Kommunikationsvorrichtung (237) so konfiguriert werden, dass sie die Speicherverwaltungseinheit (MMU) (236) anweist, auf die Speicherseite (260) zuzugreifen, die durch die virtuelle Adresse identifiziert wird, die in der Zugriffsanforderung von der Leihnehmervorrichtung (201) eingeschlossen ist, und zwar in ähnlicher Weise wie der/die Prozessor(en) (235) die Speicherverwaltungseinheit (MMU) (236) anweist/anweisen, auf eine virtuelle Adresse zuzugreifen. In einigen Fällen ist die Kommunikationsvorrichtung (237) Teil der Speicherverwaltungseinheit (MMU) (236).
  • Wenn beispielsweise die virtuelle Adresse unter Verwendung einer Abbildung des virtuellen in den physischen Speicher der Leihgebervorrichtung (203) in eine physische Adresse der Speicherseite (260) übersetzt wird, führt die Speicherverwaltungseinheit (MMU) (236) die Adressübersetzung durch und verwendet die physische Speicheradresse für den Zugriff auf die Speicherseite (260). Wenn sich die Abbildung des virtuellen Speichers in den physischen Speicher für die Übersetzung der virtuellen Adresse nicht bereits in der Speicherverwaltungseinheit (MMU) (236) der Leihgebervorrichtung (203) befindet, kann das Betriebssystem (233) der Leihgebervorrichtung (203) ausgeführt werden, um einen relevanten Teil der Abbildung des virtuellen Speichers in den physischen Speicher in die Speicherverwaltungseinheit (MMU) (236) der Leihgebervorrichtung (203) zu laden, so dass die Speicherverwaltungseinheit (MMU) (236) die Adressübersetzung für den Zugriff auf die Speicherseite (260) durchführen kann.
  • In einigen Fällen kann die Leihgebervorrichtung (203) die von der Leihnehmervorrichtung (201) verwendete virtuelle Adresse in der Speichervorrichtung (232) hosten. Als Reaktion auf einen Fehler/Seitenfehler in der Speicherverwaltungseinheit (MMU) (236), die virtuelle Adresse zu übersetzen, veranlasst die Speicherverwaltungseinheit (MMU) 236) den/die Prozessor(en) (235), das Betriebssystem (233) auszuführen, das den Dateninhalt aus der Vorrichtung (232) in den geliehenen Speicher (202) lädt und den Adressumsetzpuffer (TLB) der Speicherverwaltungseinheit (MMU) 236) aktualisiert, um den Zugriff zu erleichtern. Alternativ kann das Betriebssystem (233) die Zugriffsanforderung direkt von der Vorrichtung bearbeiten, ohne sie im lokalen Speicher (231) der Leihgebervorrichtung (203) zwischenzuspeichern, zu puffern oder neu zu hosten.
  • In einigen Fällen kann die Leihgebervorrichtung (203) die von der Leihnehmervorrichtung (201) verwendete virtuelle Adresse in einer anderen Leihgebervorrichtung (z. B. 205) hosten. In einem solchen Fall kann die Leihgebervorrichtung (203) auf ihre Leihgebervorrichtung (z. B. 205) auf ähnliche Weise zugreifen wie die Leihnehmervorrichtung (201) auf die Leihgebervorrichtung (203).
  • Wenn die virtuelle Adresse (255), auf die in einer der Ausführungseinheiten (215) der Leihnehmervorrichtung (201) zugegriffen wird, in die physische Adresse (257) für den Zugriff über die Kommunikationsvorrichtung (217) übersetzt wird, kann die Kommunikationsvorrichtung (217) optional einen virtuellen Adressbereich von der Leihgebervorrichtung (203) in den Puffer (505) der Kommunikationsvorrichtung (217) migrieren, wie in 14 dargestellt.
  • Wenn zum Beispiel auf eine virtuelle Adresse (256) in einer Seite des virtuellen Speichers zugegriffen wird, kann die Kommunikationsvorrichtung (217) die gesamte Seite (oder einen Teil davon) in Erwartung weiterer Zugriffe auf die Seite in den Puffer (505) der Kommunikationsvorrichtung (217) migrieren.
  • Alternativ kann die Speicherverwaltungseinheit (MMU) (216) der Leihnehmervorrichtung (201) so konfiguriert werden, dass sie einen Teil des lokalen Direktzugriffsspeichers (211) als Puffer für die Zwischenspeicherung eines Teils des ausgeliehenen Speichers (203) reserviert, wie in 15 dargestellt.
  • Optional kann die Speicherverwaltungseinheit (MMU) (216) der Leihnehmervorrichtung (201) ferner so konfiguriert werden, dass sie die Anpassung des Hostings virtueller Speicherbereiche, die in der virtuellen physischen Speicherseite (253) identifiziert wurden, auf ähnliche Weise verwaltet, wie sie in 5 dargestellt ist.
  • Wenn die Speicherverwaltungseinheit (MMU) (216) beispielsweise feststellt, dass auf einen virtuellen Bereich, der in dem geliehenen Speicher (202) der Leihgebervorrichtung (203) gehostet wird, häufiger und/oder kürzer zugegriffen wird als auf einen virtuellen Bereich, der in dem lokalen Speicher (211) gehostet wird, kann die Speicherverwaltungseinheit (MMU) (216) die Kommunikationsvorrichtung (217) verwenden, um den virtuellen Bereich, auf den häufiger und/oder kürzer zugegriffen wird, so zu migrieren, dass er in dem lokalen Speicher (211) gehostet wird, und den virtuellen Bereich, auf den weniger häufig und/oder kürzer zugegriffen wird, so zu verdrängen, dass er in dem geliehenen Speicher (202) gehostet wird. Auf diese Weise kann die Speicherverwaltungseinheit (MMU) (216) das Hosten von virtuellen Speicherbereichen optimieren, die in der Abbildung (253) von virtuellem zu physischem Speicher identifiziert werden, die in dem Adressumsetzpuffer (TLB) (251) zwischengespeichert ist, und die Abbildung (253) von virtuellem zu physischem Speicher, die in dem Adressumsetzpuffer (TLB) (251) zwischengespeichert ist, entsprechend den Anpassungen aktualisieren. Das Betriebssystem (213) der Leihnehmervorrichtung (213) kann verwendet werden, um das Hosting anderer virtueller Speicherbereiche weiter anzupassen.
  • 16 und 17 veranschaulichen hardwarebeschleunigte Konfigurationen für die Bereitstellung von Zugriff auf ausgeliehenen Speicher gemäß einigen Ausführungsformen. Zum Beispiel kann die in 13, 14 oder 15 dargestellte Konfiguration der Leihgebervorrichtung (203) durch die Konfiguration von 16 oder 17 ersetzt werden.
  • In 16 weist die Leihgebervorrichtung (203) einen Peripheriebus (511) und einen Speicherbus (513) auf.
  • Eine Kommunikationsvorrichtung (237) und eine Aufbewahrungsvorrichtung (232) der Leihgebervorrichtung (203) sind über den Peripheriebus (511) mit dem/den Prozessor(en) (235) der Leihgebervorrichtung (203) verbunden. Der lokale Direktzugriffsspeicher (231) der Leihgebervorrichtung (203) ist über den Speicherbus (513) mit dem/den Prozessor(en) verbunden.
  • Das Betriebssystem (233) kann zunächst in der Vorrichtung (232) gespeichert und anschließend zur Ausführung in den Direktzugriffsspeicher (231) geladen werden.
  • Wenn die Kommunikationsvorrichtung (237) eine Speicherzugriffsanforderung (507) empfängt, die eine virtuelle Speicheradresse (509) identifiziert, die vom Betriebssystem (233) für den ausgeliehenen Speicher (204) zugewiesen wurde, der von der Leihnehmervorrichtung (201) verwendet wird, ist die Kommunikationsvorrichtung (237) so konfiguriert, dass sie den Prozessor (235) auffordert, ein Verfahren gemäß der Speicherzugriffsanforderung (509) durchzuführen.
  • Zum Zeitpunkt des Empfangs der Zugriffsanforderung (507) durch die Kommunikationsvorrichtung (237) kann das in der Leihgebervorrichtung (203) laufende Betriebssystem (233) die virtuelle Adresse (509) in der Speichervorrichtung (232) oder im Direktzugriffsspeicher (231) hosten (z. B. über die Konfiguration der Speicherabbildung (227)).
  • Wenn die virtuelle Adresse (509) im Speicher (231) gehostet ist und die Speicherverwaltungseinheit (MMU) (236) einen zwischengespeicherten Teil der Speicherabbildung (227) aufweist, um die virtuelle Adresse (509) zu übersetzen, können der oder die Prozessoren (235) die Zugriffsanforderung (507) durch Zugriff auf eine physische Adresse der Speicherseite (260) verarbeiten, die aus dem zwischengespeicherten Teil der Speicherabbildung (227) ermittelt wurde.
  • Wenn die virtuelle Adresse (509) im Speicher (231) gehostet wird und die Speicherverwaltungseinheit (MMU) (236) keinen zwischengespeicherten Teil der Speicherabbildung (227) aufweist, um die virtuelle Adresse (509) zu übersetzen, kann (können) der (die) Prozessor(en) (235) das Betriebssystem (233) ausführen, um den zwischengespeicherten Teil der Speicherabbildung (227) so zu aktualisieren, dass die Speicherverwaltungseinheit (MMU) (236) die virtuelle Adresse (509) in die physische Adresse der Speicherseite (260) übersetzen kann.
  • Wenn die virtuelle Adresse (509) in der Speichervorrichtung (232), z. B. einer Festplatte oder einem Solid-State-Laufwerk, gehostet ist, weist die Speicherverwaltungseinheit (MMU) (236) keinen zwischengespeicherten Teil der Speicherabbildung (227) auf, um die virtuelle Adresse (509) zu übersetzen (z. B. durch Erzeugen eines Seitenfehlers). Daraufhin veranlasst die Speicherverwaltungseinheit (MMU) (236) den/die Prozessor(en) (235), das Betriebssystem (233) auszuführen, das so konfiguriert werden kann, dass es die Zugriffsanforderung (507) durch Zugriff auf die Speichervorrichtung (232) umsetzt und/oder einen virtuellen Speicherbereich (z. B. eine virtuelle Speicherseite) in den Direktzugriffsspeicher (231) migriert.
  • Wenn die virtuelle Adresse (509) in einer anderen Leihgebervorrichtung (z. B. 245) gehostet wird, übersetzt die Leihgebervorrichtung (203) die virtuelle Adresse (509) in eine physische Adresse, die eine Netzwerkadresse ihrer Leihgebervorrichtung (z. B. 245) und eine von ihrer Leihgebervorrichtung (z. B. 245) zugewiesene virtuelle Adresse identifiziert (die optional so konfiguriert werden kann, dass sie mit der virtuellen Adresse (509) in einem einheitlichen Adressraum identisch ist). Dann kann die Leihgebervorrichtung (203) auf ihre Leihgebervorrichtung (z. B. 245) in ähnlicher Weise zugreifen wie die Leihnehmervorrichtung (201) auf die Leihgebervorrichtung (203).
  • Die Zugriffsanforderung (507) kann in einer Form konfiguriert werden, die dem Speicherzugriff entspricht, der während der Anweisungsausführung in dem/den Prozessor(en) (215) der Leihnehmervorrichtung (201) angefordert wird. Wenn beispielsweise ein Prozessor (215) der Leihnehmervorrichtung (201) das Laden des Befehls von einer virtuellen Adresse (255) anfordert, ist die Zugriffsanforderung (507) so konfiguriert, dass sie den Abruf eines Befehls von der virtuellen Adresse (509) anfordert (die optional so konfiguriert werden kann, dass sie dieselbe ist wie die virtuelle Adresse (255) in einem einheitlichen Adressraum).
  • Wenn beispielsweise ein Prozessor (215) der Leihnehmervorrichtung (201) das Laden eines Operanden von einer virtuellen Adresse (255) anfordert, ist die Zugriffsanforderung (507) so konfiguriert, dass sie den Abruf des Operanden von der virtuellen Adresse (509) anfordert; und wenn ein Prozessor (215) der Leihnehmervorrichtung (201) die Speicherung eines Berechnungsergebnisses an einer virtuellen Adresse (255) anfordert, ist die Zugriffsanforderung (507) so konfiguriert, dass sie den Abruf des Operanden von der virtuellen Adresse (509) anfordert.
  • Optional kann die Zugriffsanforderung (507) so konfiguriert sein, dass sie die Migration von virtuellen Adressbereichen implementiert. Wenn beispielsweise auf die virtuelle Adresse (509) zugegriffen wird, ist die Kommunikationsvorrichtung (237) so konfiguriert, dass sie automatisch die Migration eines virtuellen Speicherbereichs zwischen der Leihgebervorrichtung (203) und der Leihnehmervorrichtung (201) ermöglicht.
  • Optional ist die Kommunikationsvorrichtung (237) als Teil der Speicherverwaltungseinheit (MMU) (236) der Leihgebervorrichtung (203) implementiert.
  • Optional ist die Speicherverwaltungseinheit (MMU) (236) so konfiguriert, dass sie eine Netzwerksteuerung (523) zum Betrieb der Kommunikationsvorrichtung (237) einschließt, wie in 17 dargestellt.
  • In 17 weist die Speicherverwaltungseinheit (MMU) (236) eine Speichersteuerung (521) auf, der so konfiguriert ist, dass er auf die Speicherseite (260) unter Verwendung einer physischen Adresse für den Speicher (231) zugreift. Ferner weist die Speicherverwaltungseinheit (MMU) (236) einen Netzwerkspeicherung (521) auf, der so konfiguriert ist, dass er auf einem Netzwerk basierende Speicherzugriffsanforderungen (z. B. 507) verarbeitet. Eine solche netzwerkbasierte Speicherzugriffsanforderung (507) kann eine Anforderung von der Leihnehmervorrichtung (z. B. 201) oder der Leihgebervorrichtung (z. B. 245) sein.
  • 18 zeigt ein Verfahren zur Beschleunigung des Zugriffs auf ausgeliehenen Speicher über eine Speicherverwaltungseinheit gemäß einer Ausführungsform. Zum Beispiel kann das Verfahren von 18 in einer Vorrichtung A (101) oder Vorrichtung B (103) oder einem Server P (105) implementiert werden, wie in 1 dargestellt. Zum Beispiel kann das Verfahren von 18 in der Leihnehmervorrichtung (201) impementiert werden, die in 2, 6, 9, 13, 14 oder 15 dargestellt ist. Beispielsweise kann das Verfahren von 18 in einer Speicherverwaltungseinheit (216) oder einer Speicherverwaltungseinheit (236) implementiert werden, die in 2, 3 oder 13 bis 17 dargestellt sind.
  • In Block 531 von 18 speichert eine Speicherverwaltungseinheit (z.B. 216 oder 236) eine Abbildung von virtuellem zu physischem Speicher (z. B. 253) in einem Adressumsetzpuffer (z. B. 253) der Speicherverwaltungseinheit (z. B. 216 oder 236).
  • Beispielsweise kann die Abbildung von virtuellem zu physischem Speicher (z. B. 253) ein Teil von Seitentabellen sein, die vom Betriebssystem (z. B. 213 oder 233) der Rechenvorrichtung (z. B. 201 oder 203) verwaltet werden, in der die Speicherverwaltungseinheit (z. B. 216 oder 236) konfiguriert ist.
  • In Block 533 empfängt die Speicherverwaltungseinheit (z. B. 216 oder 236) eine Anforderung zum Zugriff auf eine virtuelle Speicheradresse (z. B. 255 oder 509) für die Ausführung einer Anweisung in einem Mikroprozessor (z. B. 215 oder 235).
  • Beispielsweise kann die Adresse des virtuellen Speichers (255) in den Registern (501) für die Ausführung einer Anweisung im Prozessor (215) gespeichert werden. Die Adresse des virtuellen Speichers (255) kann verwendet werden, um die Anweisung von der Adresse des virtuellen Speichers (255) zu laden, um einen Operanden der Anweisung von der Adresse des virtuellen Speichers (255) zu laden oder um ein von den Ausführungseinheiten (503) nach der Ausführung der Anweisung erzeugtes Rechenergebnis zu speichern.
  • In einigen Fällen wird die virtuelle Speicheradresse (509) in einer Kommunikationsvorrichtung (237) in einer Speicherzugriffsanforderung von einer Netzwerkverbindung zu einer Leihnehmervorrichtung (z. B. 201) empfangen; und die Kommunikationsvorrichtung (237) ist so konfiguriert, dass sie die Speicherverwaltungseinheit (236) auffordert, die Zugriffsanforderung (507) zu verarbeiten.
  • In Block 535 übersetzt die Speicherverwaltungseinheit (z. B. 216 oder 236) die virtuelle Speicheradresse (z. B. 255) in eine physische Speicheradresse (z. B. 257) unter Verwendung der Abbildung von virtuellem zu physischem Speicher (z. B. 253), die in dem Adressumsetzpuffer (z. B. 253) zwischengespeichert ist.
  • In Block 537 wird festgestellt, ob die physische Adresse (z. B. 257) für den lokalen Speicher (z. B. 211 oder 231) bestimmt ist oder nicht.
  • Beispielsweise kann die Speicherverwaltungseinheit (z. B. 216 oder 236) sowohl Verbindungen zu einem Speicherbus (z. B. 511) über eine Speichersteuerung (z. B. 521) als auch zu einem Computernetzwerk (z. B. 109) über eine Netzwerksteuerung (523) aufweisen.
  • Wenn in Block 539 festgestellt wird (537), dass die physische Speicheradresse (z. B. 257) für den lokalen Speicher (z. B. 211 oder 231) (z.B. eines ersten Speichertyps) bestimmt ist, weist die Speicherverwaltungseinheit (z. B. 216 oder 236) eine mit einem Speicherbus (513) verbundenen Speichersteuerung (521) an, auf eine Speicherseite (259) an der physischen Adresse (257) zuzugreifen.
  • Wenn in Block 541 festgestellt wird (537), dass die physische Adresse (z. B. 257) nicht für den lokalen Speicher (z. B. 211 oder 231) bestimmt ist (z. B. von einem zweiten Speichertyp), weist die Speicherverwaltungseinheit (z. B. 216 oder 236) eine mit einer Computernetzwerkverbindung (205) verbundenen Netzwerksteuerung (523) an, auf eine Speicherseite (260) gemäß der physischen Adresse (257) zuzugreifen.
  • Eine Speicherverwaltungseinheit (MMU) (216 oder 236), die so konfiguriert ist, dass sie das Verfahren von 18 durchführt, kann in einem Mikroprozessor (215 oder 235) einer Leihnehmervorrichtung (201) oder einer Leihgebervorrichtung (203) verwendet werden, die Speicher für eine andere Vorrichtung (z. B. 245) ausleiht.
  • Eine Kommunikationsvorrichtung (z. B. 201 oder 203), die eine solche Speicherverwaltungseinheit (MMU) (216 oder 236) aufweist, kann einen Speicherbus aufweisen, der mit einem lokalen Direktzugriffsspeicher (z. B. 211 oder 213) und mindestens einem Mikroprozessor (z. B. 215 oder 235) verbunden ist. Der Mikroprozessor (z. B. 215) kann ferner Register (z. B. 501) und Ausführungseinheiten (z. B. 503) aufweisen.
  • Die Rechenvorrichtung (z. B. 201 oder 203) weist ein Betriebssystem (z. B. 213 oder 233) auf, das Anweisungen einschließt, die, wenn sie von dem mindestens einen Mikroprozessor (z. B. 215 oder 235) ausgeführt werden, die Rechenvorrichtung dazu veranlassen, eine bestimmte Menge an Speicher von einer Leihgebervorrichtung (z. B. 203 oder 245) über eine Netzwerkverbindung (205) unter Verwendung einer Kommunikationsvorrichtung (z. B. 217 oder 237) auszuleihen.
  • Die Ausführungseinheiten (503) sind so konfiguriert, dass sie Anweisungen unter Verwendung von mindestens virtuellen Speicheradressen ausführen, die auf die von der Leihgebervorrichtung (z. B. 203 oder 245) ausgeliehene Speichermenge abgebildet sind.
  • Beispielsweise übersetzt die Speicherverwaltungseinheit (MMU) (215) nach dem Abrufen einer ersten virtuellen Speicheradresse (255) aus den Registern (501) für die Ausführung einer Anweisung in den Ausführungseinheiten (503) die erste virtuelle Speicheradresse (255) in eine erste physische Adresse (257), die die Leihgebervorrichtung (z. B. 203 oder 245) über die Netzwerkverbindung (205) identifiziert, und eine zweite virtuelle Speicheradresse (509). Die Speicherverwaltungseinheit (MMU) (215) weist die Kommunikationsvorrichtung (217) an, unter Verwendung der zweiten virtuellen Speicheradresse auf den Speicher (260) zuzugreifen, der von der Leihgebervorrichtung (203) an die Rechenvorrichtung (201) über die Netzwerkverbindung (205) verliehen wurde.
  • Beispielsweise kann die erste physische Adresse (257) eine Computernetzwerkadresse der Leihgebervorrichtung (203) beinhalten.
  • Die Ausführung einer Anweisung in den Ausführungseinheiten (503) kann eine Speicheroperation zum Lesen oder Schreiben an der ersten virtuellen Speicheradresse (255) erzeugen; und die Speicherverwaltungseinheit (253) ist so konfiguriert, dass sie eine Anforderung (507) für die Speicheroperation an der zweiten virtuellen Speicheradresse (509) erzeugt und die Kommunikationsvorrichtung (217) anweist, die Anforderung (507) über die Kommunikationsverbindung (205) an die Leihgebervorrichtung (203) zu übertragen.
  • Operativ kann die zweite virtuelle Speicheradresse (509) gleich der ersten virtuellen Speicheradresse (255) sein, so dass die Leihgebervorrichtung (203) und die Leihnehmervorrichtung (201) einen einheitlichen virtuellen Adressraum verwenden können. Beispielsweise kann das Betriebssystem so konfiguriert sein, dass es die Identifikation der Menge des ausgeliehenen Speichers (204) basierend auf virtuellen Speicheradressen empfängt, die von der Leihgebervorrichtung (203) in dem vereinheitlichten virtuellen Adressraum spezifiziert wurden; und das Betriebssystem kann so konfiguriert sein, dass es den Anwendungen virtuellen Speicher direkt aus den virtuellen Speicheradressen in dem vereinheitlichten virtuellen Adressraum zuweist.
  • Optional schließt die Speicherverwaltungseinheit (217) einen Puffer (505) ein; und die Speicherverwaltungseinheit (216) ist ferner so konfiguriert, dass sie die Kommunikationsvorrichtung (217) anweist, mit der Leihgebervorrichtung (203) zu kommunizieren, um in dem Puffer (505) einen Cache für einen Teil der Menge des von der Leihgebervorrichtung (203) an die Leihnehmervorrichtung (201) ausgeliehenen Speichers (202) einzurichten, wenn die erste virtuelle Speicheradresse (255) von den Registern (501) empfangen wird. Zum Beispiel kann die Kommunikationsvorrichtung (217) eine Speicherseite gemäß einer Seitentabelle zwischenspeichern, wenn die virtuelle Adresse (255) in der Seitentabelle verwendet wird.
  • Optional ist die Speicherverwaltungseinheit (217) ferner so konfiguriert, dass sie Speicherabbildungen zwischen virtuellem Speicher und physischem Speicher dynamisch ändert. Zum Beispiel kann virtueller Speicher, der durch einen Satz virtueller Speicheradressen identifiziert wird, anfänglich (z. B. Adressumsetzpuffer (TLB) (251) auf den Speicher (202) abgebildet werden, der von der Leihgebervorrichtung (203) an die Leihnehmervorrichtung ausgeliehen wird; und die Abbildung kann geändert werden, um den virtuellen Speicher auf einen Teil des lokalen Direktzugriffsspeichers (211) umzubilden.
  • Zum Beispiel kann die Speicherverwaltungseinheit (217) die Abbildung zweier virtueller Speicherbereiche, die in der Abbildung (253) von virtuellem zu physischem Speicher identifiziert werden, die in dem Adressumsetzpuffer (TLB) (251) zwischengespeichert ist, vertauschen, so dass ein erster virtueller Speicherbereich, der ursprünglich auf einen Bereich in dem lokalen Speicher (211) abgebildet wurde, auf einen Bereich in dem geliehenen Speicher (202) in der Leihgebervorrichtung (203) neu abgebildet wird, und der zweite virtuelle Speicherbereich, der ursprünglich auf den Bereich (oder einen anderen Bereich) in dem geliehenen Speicher (202) in der Leihgebervorrichtung (203) abgebildet wurde, wird auf den Bereich (oder einen anderen Bereich) in dem lokalen Speicher (211) neu abgebildet.
  • Beispielsweise kann die Speicherverwaltungseinheit (217) ferner so konfiguriert sein, dass sie den ersten virtuellen Speicherbereich und den zweiten Speicherbereich zum Auslagern basierend auf einer Speichernutzungshistorie in einem vergangenen Zeitraum oder einer vorhergesagten Speichernutzung in einem nachfolgenden Zeitraum identifiziert. Zum Beispiel kann eine am wenigsten genutzte und/oder am wenigsten häufig genutzte virtuelle Speicherseite vom lokalen Speicher (211) in den geliehenen Speicher (202) ausgelagert werden; und eine am meisten genutzte und/oder am häufigsten genutzte virtuelle Speicherseite kann vom geliehenen Speicher (202) in den lokalen Speicher (211) ausgelagert werden.
  • Im Allgemeinen kann jede der oben beschriebenen Vorrichtungen oder Server (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 System kern logik) 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/424420 [0001]

Claims (21)

  1. Rechenvorrichtung, umfassend: eine Kommunikationsvorrichtung; Direktzugriffsspeicher; und mindestens einen Mikroprozessor, der eine Speicherverwaltungseinheit, Register und Ausführungseinheiten aufweist, wobei die Speicherverwaltungseinheit an den Direktzugriffsspeicher und die Kommunikationsvorrichtung gekoppelt ist; wobei die Rechenvorrichtung so konfiguriert ist, das sie über eine Netzwerkverbindung durch die Kommunikationsvorrichtung auf eine Menge an Speicher an einer entfernten Vorrichtung zugreift; wobei die Ausführungseinheiten so konfiguriert sind, dass sie zumindest unter Verwendung von virtuellen Speicheradressen, die auf die Menge an Speicher an der entfernten Vorrichtung abgebildet sind, Anweisungen ausführt; und wobei die Speicherverwaltungseinheit zu Folgendem konfiguriert ist: Abrufen einer ersten virtuellen Speicheradresse von den Registern zur Ausführung einer Anweisung in den Ausführungseinheiten; Übersetzen der ersten virtuellen Speicheradresse in eine erste physische Adresse, wobei die erste physische Adresse die entfernte Vorrichtung über die Netzwerkverbindung und eine zweite virtuelle Speicheradresse identifiziert; und Anweisen der Kommunikationsvorrichtung, über die Netzwerkverbindung unter Verwendung der zweiten virtuellen Speicheradresse auf den Speicher an der entfernten Vorrichtung zuzugreifen.
  2. Rechenvorrichtung nach Anspruch 1, wobei die erste physische Adresse eine Computernetzwerkadresse der entfernten Vorrichtung beinhaltet.
  3. Rechenvorrichtung nach Anspruch 2, wobei die Ausführung der Anweisung in den Ausführungseinheiten einen Speichervorgang veranlasst, an der virtuellen Speicheradresse zu lesen oder zu schreiben; und die Speicherverwaltungseinheit so konfiguriert ist, dass sie eine Anforderung für den Speichervorgang an der zweiten virtuellen Speicheradresse erzeugt und die Kommunikationsvorrichtung anweist, die Anforderung über die Kommunikationsverbindung an die entfernte Vorrichtung zu übertragen.
  4. Rechenvorrichtung nach Anspruch 3, wobei die zweite virtuelle Speicheradresse gleich der ersten virtuellen Speicheradresse ist.
  5. Rechenvorrichtung nach Anspruch 3, wobei die Rechenvorrichtung so konfiguriert ist, dass sie eine Identifikation der Menge an Speicher auf Grundlage von virtuellen Speicheradressen, die durch die entfernte Vorrichtung vorgegeben werden, empfängt; und die zweite virtuelle Speicheradresse aus den virtuellen Speicheradressen, die durch die entfernte Vorrichtung vorgegeben werden, zugewiesen wird.
  6. Rechenvorrichtung nach Anspruch 1, wobei die Speicherverwaltungseinheit einen Puffer beinhaltet; und die Speicherverwaltungseinheit ferner so konfiguriert ist, dass sie die Kommunikationsvorrichtung anweist, mit der entfernten Vorrichtung zu kommunizieren, um als Reaktion darauf, dass die erste virtuelle Speicheradresse von den Registern empfangen wird einen Cache in dem Puffer für einen Teil der Menge des Speichers an der entfernten Vorrichtung einzurichten.
  7. Rechenvorrichtung nach Anspruch 1, wobei die Speicherverwaltungseinheit ferner so konfiguriert ist, dass sie vom Abbilden eines Satzes virtueller Speicheradressen auf die Menge des Speichers an der entfernten Vorrichtung zum Abbilden des Satzes virtueller Speicheradressen auf den Direktzugriffsspeicher wechselt.
  8. Mikroprozessor, umfassend: Register; Ausführungseinheiten; und eine Speicherverwaltungseinheit, die Folgendes aufweist: einen Adressumsetzpuffer, der so konfiguriert ist, dass er eine Abbildung von virtuellem zu physischem Speicher speichert; eine Speichersteuerung, die so konfiguriert ist, dass sie über einen Speicherbus auf Direktzugriffsspeicher zugreift; und eine Netzwerksteuerung, die so konfiguriert ist, dass sie eine Kommunikationsvorrichtung, die mit einem drahtgebundenen oder drahtlosen Netzwerk verbunden ist, steuert; wobei die Register so konfiguriert sind, dass sie eine virtuelle Speicheradresse, die bei der Ausführung einer Anweisung in den Ausführungseinheiten verwendet wird, speichert; wobei die Speicherverwaltungseinheit so konfiguriert ist, dass sie die virtuelle Speicheradresse gemäß der Abbildung von virtuellem zu physischem Speicher in dem Adressumsetzpuffer in eine physische Speicheradresse übersetzt; wobei die Speichersteuerung so konfiguriert ist, dass sie unter Verwendung der physischen Speicheradresse auf eine erste Speicherseite in dem Direktzugriffsspeicher zugreift, wenn die physische Speicheradresse von einem ersten Typ ist; und wobei die Netzwerksteuerung so konfiguriert ist, dass sie über eine Netzwerkverbindung durch die Kommunikationsvorrichtung auf eine zweite Speicherseite zugreift, wenn die physische Speicheradresse von einem zweiten Typ ist.
  9. Mikroprozessor nach Anspruch 8, wobei die physische Speicheradresse des zweiten Typs eine Computernetzwerkadresse einer Rechenvorrichtung identifiziert.
  10. Mikroprozessor nach Anspruch 9, wobei die Ausführung der Anweisung in den Ausführungseinheiten Laden der Anweisung von der virtuellen Speicheradresse, Laden eines Operanden der Anweisung von der virtuellen Speicheradresse oder Speichern eines Rechenergebnisses der Anweisung an der virtuellen Speicheradresse beinhaltet.
  11. Mikroprozessor nach Anspruch 10, wobei die Speicherverwaltungseinheit so konfiguriert ist, dass sie gemäß der physischen Speicheradresse des zweiten Typs einen Speicherzugriffsanforderung erzeugt, die die zweite Speicherseite über die Netzwerkverbindung identifiziert und die Netzwerksteuerung anweist, die Speicherzugriffsanforderung über die Netzwerkverbindung zu übertragen.
  12. Mikroprozessor nach Anspruch 11, wobei die Speicherzugriffsanforderung so konfiguriert ist, dass sie die zweite Speicherseite unter Verwendung der virtuellen Speicheradresse identifiziert.
  13. Mikroprozessor nach Anspruch 9, wobei die Speicherverwaltungseinheit einen Puffer beinhaltet; und die Speicherverwaltungseinheit ferner so konfiguriert ist, dass sie die Netzwerksteuerung anweist, über die Netzwerkverbindung mit der Rechenvorrichtung zu kommunizieren, um einen Bereich von Speicher, der die zweite Speicherseite beinhaltet, in dem Puffer zwischenzuspeichern.
  14. Mikroprozessor nach Anspruch 9, wobei die Speicherverwaltungseinheit ferner so konfiguriert ist, dass sie die Speichersteuerung und die Netzwerksteuerung anweist, einen Tausch von erstem Inhalt in einem ersten Speicherbereich, der die erste Speicherseite aufweist, mit zweitem Inhalt in einem zweiten Speicherbereich, der die zweite Speicherseite aufweist, durchzuführen und die Abbildung von virtuellem zu physischem Speicher auf Grundlage des Tauschs aktualisiert.
  15. Speicherverwaltungseinheit, umfassend: einen Adressumsetzpuffer, der so konfiguriert ist, das er eine Abbildung von virtuellem zu physischem Speicher zwischenspeichert; eine Speichersteuerung, die so konfiguriert ist, dass sie auf Direktzugriffsspeicher, der über einen Speicherbus mit der Speichersteuerung verbunden ist, zugreift; und eine Kommunikationsvorrichtung, die so konfiguriert ist, dass sie über ein drahtgebundenes oder drahtloses Netzwerk unter Verwendung einer Netzwerkverbindung mit einer Rechenvorrichtung kommuniziert; wobei die Speicherverwaltungseinheit so konfiguriert ist, dass sie eine virtuelle Speicheradresse gemäß der Abbildung von virtuellem zu physischem Speicher in dem Adressumsetzpuffer in eine physische Speicheradresse übersetzt; wobei die Speichersteuerung so konfiguriert ist, dass sie unter Verwendung der physischen Speicheradresse auf eine erste Speicherseite in dem Direktzugriffsspeicher zugreift, wenn die physische Speicheradresse für den Direktzugriffsspeicher ist; und wobei die Kommunikationsvorrichtung so konfiguriert ist, dass sie über die Netzwerkverbindung auf eine zweite Speicherseite zugreift, wenn die physische Speicheradresse für Speicher der Rechenvorrichtung ist.
  16. Speicherverwaltungseinheit nach Anspruch 15, wobei die Kommunikationsvorrichtung so konfiguriert ist, dass sie eine Anweisung von der zweiten Speicherseite lädt, einen Operanden der Anweisung von der zweiten Speicherseite lädt oder ein Rechenergebnis der Anweisung in der zweiten Speicherseite gemäß der virtuellen Speicheradresse speichert.
  17. Speicherverwaltungseinheit nach Anspruch 16, wobei die Speicherverwaltungseinheit so konfiguriert ist, dass sie gemäß der physischen Speicheradresse für den Speicher der Rechenvorrichtung eine Speicherzugriffsanforderung erzeugt; und die Speicherzugriffsanforderung so konfiguriert ist, dass sie die zweite Speicherseite unter Verwendung einer Speicheradresse in einem einheitlichen Adressraum identifiziert und die Rechenvorrichtung auffordert, die Anweisung von der zweiten Speicherseite bereitzustellen, den Operanden der Anweisung von der zweiten Speicherseite bereitzustellen oder das Rechenergebnis der Anweisung in der zweiten Speicherseite zu speichern.
  18. Speicherverwaltungseinheit nach Anspruch 17, wobei die Speicheradresse in dem einheitlichen Adressraum gleich wie die virtuelle Speicheradresse ist.
  19. Speicherverwaltungseinheit nach Anspruch 15, wobei die Speicherverwaltungseinheit so konfiguriert ist, dass sie sich wie folgt ändert: vom Abbilden eines ersten virtuellen Speicherbereichs auf einen physischen Speicherbereich, auf den über die Speichersteuerung zugegriffen werden kann, und Abbilden eines zweiten virtuellen Speicherbereichs auf einen physischen Speicherbereich, auf den über die Kommunikationsvorrichtung zugegriffen werden kann, zum Abbilden des zweiten virtuellen Speicherbereichs auf den physischen Speicherbereich, auf den über die Speichersteuerung zugegriffen werden kann, und Abbilden des ersten virtuellen Speicherbereichs auf einen physischen Speicherbereich, auf den über die Kommunikationsvorrichtung zugegriffen werden kann.
  20. Speicherverwaltungseinheit nach Anspruch 15, wobei die Speicherverwaltungseinheit ferner so konfiguriert ist, dass sie den ersten virtuellen Speicherbereich und den zweiten virtuellen Speicherbereich auf Grundlage einer Speichernutzungshistorie in einem vergangenen Zeitraum oder einer vorhergesagten Speichernutzung in einem nachfolgenden Zeitraum identifiziert.
  21. Speicherverwaltungseinheit nach Anspruch 15, wobei die Kommunikationsvorrichtung so konfiguriert ist, dass sie zumindest über ein Mobilfunknetzwerk der fünften Generation mit der Rechenvorrichtung kommuniziert.
DE112020002558.6T 2019-05-28 2020-04-24 Speicherverwaltungseinheit (mmu) für zugriff auf ausgeliehenen speicher Pending DE112020002558T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/424,420 2019-05-28
US16/424,420 US11100007B2 (en) 2019-05-28 2019-05-28 Memory management unit (MMU) for accessing borrowed memory
PCT/US2020/029755 WO2020242683A1 (en) 2019-05-28 2020-04-24 Memory management unit (mmu) for accessing borrowed memory

Publications (1)

Publication Number Publication Date
DE112020002558T5 true DE112020002558T5 (de) 2022-03-03

Family

ID=73550331

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112020002558.6T Pending DE112020002558T5 (de) 2019-05-28 2020-04-24 Speicherverwaltungseinheit (mmu) für zugriff auf ausgeliehenen speicher

Country Status (5)

Country Link
US (2) US11100007B2 (de)
KR (1) KR20210158431A (de)
CN (1) CN113906396A (de)
DE (1) DE112020002558T5 (de)
WO (1) WO2020242683A1 (de)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11100007B2 (en) 2019-05-28 2021-08-24 Micron Technology, Inc. Memory management unit (MMU) for accessing borrowed memory
US11438414B2 (en) 2019-05-28 2022-09-06 Micron Technology, Inc. Inter operating system memory services over communication network connections
US11334387B2 (en) 2019-05-28 2022-05-17 Micron Technology, Inc. Throttle memory as a service based on connectivity bandwidth

Family Cites Families (53)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6925547B2 (en) 2000-12-14 2005-08-02 Silicon Graphics, Inc. Remote address translation in a multiprocessor system
US6810472B2 (en) 2002-06-24 2004-10-26 Intel Corporation Page handling efficiency in a multithreaded processor
US6922766B2 (en) 2002-09-04 2005-07-26 Cray Inc. Remote translation mechanism for a multi-node system
JP3892829B2 (ja) 2003-06-27 2007-03-14 株式会社東芝 情報処理システムおよびメモリ管理方法
US7269708B2 (en) 2004-04-20 2007-09-11 Rambus Inc. Memory controller for non-homogenous memory system
JP4857020B2 (ja) 2006-05-08 2012-01-18 株式会社日立製作所 ストレージシステム
JP2007328611A (ja) 2006-06-08 2007-12-20 Hitachi Ltd ストレージ仮想化システム及び方法
JP4842720B2 (ja) 2006-06-29 2011-12-21 株式会社日立製作所 ストレージシステム及びデータ複製方法
US9026742B2 (en) 2007-12-21 2015-05-05 Freescale Semiconductor, Inc. System and method for processing potentially self-inconsistent memory transactions
US7697557B2 (en) 2007-12-26 2010-04-13 Alcatel Lucent Predictive caching content distribution network
US8166254B2 (en) 2008-06-06 2012-04-24 International Business Machines Corporation Hypervisor page fault processing in a shared memory partition data processing system
US8918566B2 (en) 2009-01-23 2014-12-23 Hewlett-Packard Development Company, L. P. System and methods for allocating shared storage resources
US8301717B2 (en) 2009-06-09 2012-10-30 Deshpande Enterprises, Inc. Extended virtual memory system and method in a computer cluster
US8397049B2 (en) 2009-07-13 2013-03-12 Apple Inc. TLB prefetching
US8719547B2 (en) 2009-09-18 2014-05-06 Intel Corporation Providing hardware support for shared virtual memory between local and remote physical memory
US9292471B2 (en) 2011-02-18 2016-03-22 Honda Motor Co., Ltd. Coordinated vehicle response system and method for driver behavior
US20120271903A1 (en) 2011-04-19 2012-10-25 Michael Luna Shared resource and virtual resource management in a networked environment
WO2012160629A1 (ja) 2011-05-20 2012-11-29 富士通株式会社 データ処理方法
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
US9304828B2 (en) * 2012-09-27 2016-04-05 Hitachi, Ltd. Hierarchy memory management
US8793373B2 (en) 2012-12-06 2014-07-29 Hitachi, Ltd. Network system and method for operating the same
KR101442091B1 (ko) 2012-12-31 2014-09-25 고려대학교 산학협력단 가상화 시스템에서의 메모리 관리 방법
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
US10331997B2 (en) 2014-05-07 2019-06-25 Seagate Technology Llc Adaptive configuration of a neural network device
US20150324690A1 (en) 2014-05-08 2015-11-12 Microsoft Corporation Deep Learning Training System
WO2015191048A1 (en) * 2014-06-10 2015-12-17 Hewlett-Packard Development Company, L.P. Replicating data using remote direct memory access (rdma)
US9632901B2 (en) * 2014-09-11 2017-04-25 Mellanox Technologies, Ltd. Page resolution status reporting
US9626108B2 (en) 2014-09-16 2017-04-18 Kove Ip, Llc Dynamically provisionable and allocatable external memory
KR101700315B1 (ko) 2014-12-12 2017-01-26 국민대학교산학협력단 스크래치패드 메모리 관리 방법, 이를 수행하는 스크래치패드 메모리 관리 장치 및 이를 저장하는 기록매체
US9892037B2 (en) 2014-12-29 2018-02-13 International Business Machines Corporation Efficient and secure direct storage device sharing in virtualized environments
US10572393B2 (en) * 2015-04-22 2020-02-25 ColorTokens, Inc. Object memory management unit
US10095519B2 (en) * 2015-09-19 2018-10-09 Microsoft Technology Licensing, Llc Instruction block address register
CN110135581B (zh) 2016-01-20 2020-11-06 中科寒武纪科技股份有限公司 用于执行人工神经网络反向运算的装置和方法
CN107025205B (zh) 2016-01-30 2021-06-22 华为技术有限公司 一种分布式系统中的训练模型的方法及设备
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 한국전자통신연구원 파라미터 서버 및 그것에 의해 수행되는 분산 딥러닝 파라미터 공유 방법
US20200401944A1 (en) 2018-04-27 2020-12-24 Sony Corporation Mechanism for machine learning in distributed computing
US10713212B2 (en) * 2018-05-21 2020-07-14 Microsoft Technology Licensing Llc Mobile remote direct memory access
US10929165B2 (en) 2018-07-31 2021-02-23 Nutanix, Inc. System and method for memory resizing in a virtual computing environment
KR102567108B1 (ko) 2018-11-05 2023-08-14 삼성전자주식회사 데이터 스토리지 디바이스 및 데이터 스토리지 시스템
US11200168B2 (en) 2018-12-10 2021-12-14 International Business Machines Corporation Caching data from remote memories
US11829849B2 (en) 2019-01-09 2023-11-28 Cisco Technology, Inc. Dynamic orchestration of machine learning functions on a distributed network
US20200265301A1 (en) 2019-02-15 2020-08-20 Microsoft Technology Licensing, Llc Incremental training of machine learning tools
US11169930B2 (en) 2019-05-28 2021-11-09 Micron Technology, Inc. Fine grain data migration to or from borrowed memory
US11334387B2 (en) 2019-05-28 2022-05-17 Micron Technology, Inc. Throttle memory as a service based on connectivity bandwidth
US20200379809A1 (en) 2019-05-28 2020-12-03 Micron Technology, Inc. Memory as a Service for Artificial Neural Network (ANN) Applications
US11100007B2 (en) 2019-05-28 2021-08-24 Micron Technology, Inc. Memory management unit (MMU) for accessing borrowed memory
US11438414B2 (en) 2019-05-28 2022-09-06 Micron Technology, Inc. Inter operating system memory services over communication network connections

Also Published As

Publication number Publication date
US11100007B2 (en) 2021-08-24
US20200379919A1 (en) 2020-12-03
US20210342274A1 (en) 2021-11-04
KR20210158431A (ko) 2021-12-30
WO2020242683A1 (en) 2020-12-03
CN113906396A (zh) 2022-01-07
US11657002B2 (en) 2023-05-23

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
DE112017001027B4 (de) Seitenfehlerbehebung
DE69802836T2 (de) Anwendungsprogramierungsschnittstelle zum ermöglichen der zuordnung eines physikalischen speichers in einem virtuellen speicher zur steuerung von anwendungsprogrammen
DE112020002558T5 (de) Speicherverwaltungseinheit (mmu) für zugriff auf ausgeliehenen speicher
DE102019105879A1 (de) Verwaltung von kohärenten Verknüpfungen und Mehr-Ebenen-Speicher
DE102021121062A1 (de) System, vorrichtung und verfahren zur dynamischen bereitstellung kohärenter speicherdomänen
CN112015677A (zh) 到或从借入存储器的精细粒度数据迁移
DE112011102822T5 (de) Leistungsoptimierte Interrupt-Abgabe
DE112020004181T5 (de) Bereitstellen eines direkten datenzugriffs zwischen beschleunigern und speicher in einer datenverarbeitungsumgebung
DE202016107376U1 (de) Virtuelle Maschinensysteme
DE102022124530A1 (de) Speicherpoolmanagement
CN113994313A (zh) 基于存储器即服务的分布式计算
DE102022129936A1 (de) Techniken zur Erweiterung des Systemspeichers durch Nutzung des verfügbaren Gerätespeichers
DE112021005873T5 (de) Speichermigration in einer multi-host-datenverarbeitungsumgebung
DE102019112291A1 (de) Verbessertes speicherungsmodell für ein computersystem mit persistentem systemspeicher
DE102020128675A1 (de) Puffer zum verringern von schreibverstärkung fehlausgerichteter schreiboperationen
DE112020002707T5 (de) Erweiterte speicherschnittstelle
DE102019111780A1 (de) Atomare befehle für copy-xor von daten
DE112022002207T5 (de) Cache-Sondierungs-Transaktionsfilterung
DE112022002601T5 (de) In-kernel-caching für verteilten cache
DE102023124272A1 (de) Speichererweiterung mit persistentem prädiktivem Prefetching
DE102023213049A1 (de) Wahrung der vertraulichkeit von daten in gemeinsam genutzten computerumgebungen
DE102023126127A1 (de) Verwaltung des elektronischen datenzugriffs in einem verteilten computersystem

Legal Events

Date Code Title Description
R012 Request for examination validly filed