DE102020130971A1 - Schlanke arbeitsspeicherzuweisung unter verwendung von arbeitsspeicherpools - Google Patents

Schlanke arbeitsspeicherzuweisung unter verwendung von arbeitsspeicherpools Download PDF

Info

Publication number
DE102020130971A1
DE102020130971A1 DE102020130971.6A DE102020130971A DE102020130971A1 DE 102020130971 A1 DE102020130971 A1 DE 102020130971A1 DE 102020130971 A DE102020130971 A DE 102020130971A DE 102020130971 A1 DE102020130971 A1 DE 102020130971A1
Authority
DE
Germany
Prior art keywords
memory
address
pool
data
memory pool
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
DE102020130971.6A
Other languages
English (en)
Inventor
Debra Bernstein
Hugh Wilkinson
Douglas Carrigan
Bassam N. Coury
Matthew J. Adiletta
Durgesh Srivastava
Lidia Warnes
William Wheeler
Michael F. Fallon
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of DE102020130971A1 publication Critical patent/DE102020130971A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/0646Configuration or reconfiguration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0284Multiple user address space allocation, e.g. using different base addresses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/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/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/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
    • 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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1056Simplification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/152Virtualized environment, e.g. logically partitioned system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/154Networked environment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/21Employing a record carrier using a specific recording technology
    • G06F2212/214Solid state disk
    • 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/261Storage comprising a plurality of storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/311In host system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/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/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7202Allocation control and policies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7204Capacity control, e.g. partitioning, end-of-life degradation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Cooling Or The Like Of Electrical Apparatus (AREA)
  • Multi Processors (AREA)

Abstract

Hierin beschriebene Beispiele betreffen eine schlanke Arbeitsspeicherzuweisung in einem Arbeitsspeicherpool von einem bzw. einer oder mehreren doppelreihigen Arbeitsspeichermodulen oder Arbeitsspeichervorrichtungen. Zu irgendeinem Zeitpunkt kann eine beliebige Zentralverarbeitungseinheit (CPU) eine vollständige virtuelle Zuordnung von Arbeitsspeicher in einer Menge anfordern und empfangen, die den physischen Arbeitsspeicher überschreitet, der am CPU-Pool (naher Arbeitsspeicherpool) (Seiten) angebunden ist. Die Arbeitsspeicherpool-Zuordnung wird unter Verwendung eines Zwischenspeichers oder lokalen Arbeitsspeichers einer CPU und des Arbeitsspeicherpools als Reserve bereitgestellt. Ein entfernter Pool von zusätzlichem Arbeitsspeicher kann dynamisch eingesetzt werden, um die Kluft zwischen zugeordnetem Arbeitsspeicher und nahem Arbeitsspeicher zu füllen. Dieser entfernte Pool wird von mehreren CPUs gemeinsam genutzt, wobei eine dynamische Zuweisung und Adressen-Neuabbildung für den entfernten Pool bereitgestellt wird. Um die Leistung zu verbessern, kann der nahe Arbeitsspeicher als ein Zwischenspeicher des Pool-Arbeitsspeichers betrieben werden. Es können inklusive oder exklusive Inhaltsspeicherkonfigurationen angewandt werden. Eine inklusive Zwischenspeicherkonfiguration kann enthalten, dass ein Eintrag in einem nahen Arbeitsspeicher-Zwischenspeicher auch in einem Arbeitsspeicherpool gespeichert wird, wohingegen eine exklusive Zwischenspeicherkonfiguration einen Eintrag entweder in einem nahen Arbeitsspeicher-Zwischenspeicher oder in einem Arbeitsspeicherpool, aber nicht in beiden bereitstellen kann. Eine Verwaltung des nahen Arbeitsspeicher-Zwischenspeichers enthält eine Nachverfolgung von aktuellen Datenpositionen, Zugriffszählung und andere Zwischenspeicherheuristiken, Entfernung von Daten aus dem nahen Arbeitsspeicher-Zwischenspeicher in den Poolarbeitsspeicher und eine Bewegung von Daten aus dem Poolarbeitsspeicher in den Arbeitsspeicher-Zwischenspeicher.

Description

  • BESCHREIBUNG
  • Rechenplattformen oder -systeme, wie diejenigen, die als ein Server, ein Personalcomputer oder eine andere Rechenvorrichtung konfiguriert sind, können auf doppelreihige Arbeitsspeichermodule (DIMMs) zugreifen. DIMMs können verschiedene Typen von Arbeitsspeicher enthalten, einschließlich von flüchtigen oder nichtflüchtigen Arbeitsspeichertypen. Mit der Entwicklung von Arbeitsspeichertechnologien, sodass sie Arbeitsspeicherzellen mit immer höheren Dichten enthalten, haben sich Arbeitsspeicherkapazitäten für DIMMs auch wesentlich erhöht. Auch ermöglichen Fortschritte bei Datenraten zum Zugreifen auf Daten, die in einen in einem DIMM enthaltenen Arbeitsspeicher zu schreiben oder aus diesem zu lesen sind, dass große Datenmengen zwischen einem Anforderer, der Zugriff benötigt, und Arbeitsspeichervorrichtungen, die im DIMM enthalten sind, strömen. Zahlreiche Arbeitsspeichervorrichtungen können an einen Bus, eine Fabric oder ein Netzwerk gekoppelt werden, sodass ein Pool von Arbeitsspeicher über mehrere Rechenknoten gemeinsam genutzt wird. Eine Hostvorrichtung kann eine Netzwerkschnittstellensteuerung (NIC) oder Host-Fabric-Schnittstelle (HFI) verwenden, um auf einen oder mehrere lokale oder entfernte Speicher oder Arbeitsspeicherpools unter Verwendung von Fabric oder eines Netzwerks oder einer Zwischenverbindung zuzugreifen.
  • Figurenliste
    • 1 ist ein vereinfachtes Diagramm mindestens einer Ausführungsform eines Rechenzentrums zum Ausführen von Arbeitslasten mit disaggregierten Ressourcen.
    • 2 ist ein vereinfachtes Diagramm mindestens einer Ausführungsform eines Schranks, der in einem Rechenzentrum enthalten sein kann.
    • 3 ist eine perspektivische Ansicht mindestens einer Ausführungsform eines Racks, das in einem Schrank enthalten sein kann.
    • 4 ist ein Seitenaufriss eines Racks.
    • 5 ist eine perspektivische Ansicht eines Racks mit einem darin montierten Einschub.
    • 6 ist ein vereinfachtes Blockdiagramm mindestens einer Ausführungsform einer Oberseite eines Einschubs.
    • 7 ist ein vereinfachtes Blockdiagramm mindestens einer Ausführungsform einer Unterseite eines Einschubs.
    • 8 ist ein vereinfachtes Blockdiagramm mindestens einer Ausführungsform eines Recheneinschubs.
    • 9 ist eine perspektivische Draufsicht mindestens einer Ausführungsform eines Recheneinschubs.
    • 10 ist ein vereinfachtes Blockdiagramm mindestens einer Ausführungsform eines in einem Rechenzentrum verwendbaren Beschleunigungseinschubs.
    • 11 ist eine perspektivische Draufsicht mindestens einer Ausführungsform eines Beschleunigungseinschubs.
    • 12 ist ein vereinfachtes Blockdiagramm mindestens einer Ausführungsform eines in einem Rechenzentrum verwendbaren Speichereinschubs.
    • 13 ist eine perspektivische Draufsicht mindestens einer Ausführungsform eines Speichereinschubs.
    • 14 ist ein vereinfachtes Blockdiagramm mindestens einer Ausführungsform eines in einem Rechenzentrum verwendbaren Arbeitsspeichereinschubs.
    • 15 zeigt ein System.
    • 16 zeigt ein Rechensystem.
    • 17 zeigt einen Metadateneintrag.
    • 18 zeigt ein Beispiel einer Adressenübersetzung.
    • 19 zeigt eine beispielhafte Operation.
    • 20 zeigt eine beispielhafte Operation.
    • 21 zeigt ein Beispiel eines Inhaltszugriffs, wobei Inhalte in einem Zwischenspeicher und auch im Arbeitsspeicherpool gespeichert sind.
    • 22 zeigt ein Beispiel einer Verwendung von Arbeitsspeicher oder Zwischenspeicher und eines Arbeitsspeicherpools, um eine Kopie von Inhalten zu speichern.
    • 23 zeigt eine beispielhafte Umgebung zum Spiegeln von Schreiboperationen über zwei oder mehr Arbeitsspeicherpools.
    • 24 zeigt ein Beispiel von Inhaltsspiegelung.
    • 25 zeigt einen beispielhaften Prozess.
    • 26 zeigt einen beispielhaften Prozess.
    • 27 zeigt einen Prozess.
    • 28 zeigt ein System.
  • AUSFÜHRLICHE BESCHREIBUNG
  • In einigen Fällen verwenden Software-Arbeitslasten (oder hardwarebasierte Arbeitslasten) wesentlich weniger Arbeitsspeicher, als ihnen zugeordnet ist, dennoch sind Rechenknoten aufgebaut, die zugeordnete Menge an Arbeitsspeicher für die Arbeitslasten aufzunehmen. Arbeitslasten verwenden oft dahingehend nicht die Gesamtheit des zugeordneten Arbeitsspeichers zur gleichen Zeit, dass einige Arbeitsspeicheradressen Inhalte speichern, die häufig verwendet werden („heiße Daten“), und einige Arbeitsspeicheradressen Inhalte speichern, die selten verwendet werden („kalte Daten“). Es ist ein herausforderndes Problem, Arbeitslasten über ein Rechenzentrum hinweg zu planen. Eine Menge an angefordertem Rechnen und eine Menge an angefordertem Arbeitsspeicher sind wichtige anfängliche Parameter bei der Planungsentscheidung. Ein Ergebnis der Planung ermöglicht oft Arbeitsspeicher- und/oder Rechenressourcen im Leerlauf.
  • Eine schlanke Arbeitsspeicherzuweisung ist eine Weise, die Speicher oder Arbeitsspeicherressourcen einsparen kann. Da die Kosten von Arbeitsspeicher teuer sind, kann ein Einsparen von Arbeitsspeicher vorteilhaft sein. Im Rahmen einer schlanken Arbeitsspeicherzuweisung sind physische Speicherressourcen, die anfänglich Anwendungsprogrammen zugeordnet sind, geringer als virtuelle Speicherressourcen, die Anwendungsprogrammen oder anderer Software zugeordnet sind. Im Rahmen einer Zuweisung oder schlanken Zuweisung kann es sein, dass eine Arbeitsspeicherzuordnung, die einem Prozessor (z. B. einem, der in einer virtuellen Ausführungsumgebung ausgeführt wird oder eine ausgeführte Anwendung) zugeordnet ist, größer als eine tatsächliche Menge an physischem adressierbarem Arbeitsspeicher ist, die dem Prozessor zwischen dem Arbeitsspeicher und/oder dem Arbeitsspeicherpool zugeordnet ist. Wenn die den Anwendungsprogrammen zugeordneten physischen Speicherressourcen den Bedarf von Anwendungsprogrammen nicht erfüllen können, werden physische Speicherressourcen allmählich hinzugefügt, bis die physischen Speicherressourcen die virtuellen Speicherressourcen erreichen. Ein Anwendungsprogramm muss nur die deklarierten virtuellen Speicherressourcen verwalten. Dementsprechend kann eine kleinere physische Speicherressource verwendet werden, um eine größere virtuelle Speicherressource zu unterstützen, wodurch eine Nutzungseffizienz der physischen Speicherressourcen verbessert wird.
  • Eine schlanke Arbeitsspeicherzuweisung ermöglicht weniger Arbeitsspeicher in einem Rechenknoten und Aufbauen eines Arbeitsspeicherpools, der von mehreren Rechenknoten gemeinsam genutzt wird. Der gemeinsam genutzte Arbeitsspeicher kann Rechenknoten dynamisch zugeordnet/dessen Zuordnung aufgehoben werden, wobei die Zuordnung auf Seiten- oder Zwischenspeicherleitungsgranularität festgelegt ist. Zusammengefasst kann Arbeitsspeicher, der auf allen Rechenknoten zugeordnet ist, und Arbeitsspeicher in einem gemeinsam genutzten Pool geringer als eine Menge von Arbeitsspeicher sein, die einem Rechenknoten zugeordnet ist. Arbeitsspeicher (wie Arbeitsspeicher mit doppelter Datenrate (DDR)) ist eine Komponente mit hohen Kosten in einem Rechenzentrum. Dementsprechend kann weniger Geld für Arbeitsspeicher über das gesamte System mit Rechenknoten, lokalem Arbeitsspeicher und einem Arbeitsspeicherpool aufgewandt werden.
  • Verschiedene Ausführungsformen stellen eine schlanke Arbeitsspeicherzuweisung in einem Arbeitsspeicherpool von einem oder mehreren Arbeitsspeicher-DIMMs oder - Vorrichtungen bereit. Eine beliebige CPU kann zu irgendeinem Zeitpunkt eine vollständige virtuelle Zuordnung eines Arbeitsspeicherpools (Seiten) anfordern und empfangen. Die Arbeitsspeicherpool-Zuordnung wird unter Verwendung eines Zwischenspeichers oder lokalen Arbeitsspeichers einer CPU und des Arbeitsspeicherpools als Reserve bereitgestellt. Eine Zuordnung in einem Arbeitsspeicherpool kann stattfinden, wenn ein Schreibvorgang oder Austausch von Inhalten einer Zwischenspeicherleitung oder Seite stattfindet. In einigen Beispielen beruht eine Bewegung von Daten aus dem Arbeitsspeicherpool in den Zwischenspeicher auf einer Hitze oder höheren Anzahl von Zugriffen mit der Zeit, wohingegen eine Bewegung von Daten vom Zwischenspeicher in den Arbeitsspeicherpool auf einer Kälte oder geringeren Anzahl von Zugriffen mit der Zeit beruht.
  • Es können inklusive oder exklusive Inhaltsspeicherkonfigurationen angewandt werden. Eine inklusive Zwischenspeicherkonfiguration kann enthalten, dass ein Eintrag in einem Zwischenspeicher auch in einem Arbeitsspeicherpool gespeichert wird, wohingegen eine exklusive Zwischenspeicherkonfiguration einen Eintrag entweder in einem Zwischenspeicher oder in einem Arbeitsspeicherpool, aber nicht in beiden bereitstellen kann. Da mehrere Adressen eine Adresse in einem Zwischenspeicher und/oder in einem Arbeitsspeicherpool gemeinsam nutzen können, kann ein Tag einer Adresse zugeordnet werden, um zu identifizieren, ob Inhalte, die mit einer Adresse assoziiert sind, in einem Zwischenspeicher oder einem von mehreren möglichen Positionen in einem Arbeitsspeicherpool gespeichert sind.
  • Mehrere CPUs können einem Arbeitsspeicherpool eine gleiche Arbeitsspeicheradresse bereitstellen. Um zwischen Arbeitsspeichertransaktionen zu unterscheiden, die auf die gleiche Adresse von derselben oder unterschiedlichen CPUs Bezug nehmen, kann eine CPU einem Arbeitsspeicherpool eine Adresse und einen Positionstag bereitstellen, und eine Adressenübersetzung kann angewandt werden, um eine bestimmte physische Adresse in einem Arbeitsspeicherpool zu ermitteln, auf die zuzugreifen ist. Anders ausgedrückt wird eine Arbeitsspeicheradresse A von einer ersten CPU in eine unterschiedliche physische Adresse als die von einer zweiten CPU bereitgestellte Arbeitsspeicheradresse A übersetzt.
  • 1 zeigt ein Rechenzentrum, in dem disaggregierte Ressourcen gemeinsam eine oder mehr Arbeitslasten (z. B. Anwendungen im Auftrag von Kunden) ausführen können, mehrere Schränke 110, 120, 130, 140, von denen jeder eine oder mehrere Reihen von Racks enthält. Natürlich, obwohl das Rechenzentrum 100 mit mehreren Schränken gezeigt ist, kann das Rechenzentrum 100 in einigen Ausführungsformen als ein einziger Schrank ausgebildet sein. Wie hierin ausführlicher beschrieben wird, nimmt jedes Rack mehrere Einschübe auf, von denen jeder hauptsächlich mit einem bestimmten Typ von Ressource (z. B. Arbeitsspeichervorrichtungen, Datenspeichervorrichtungen, Beschleunigervorrichtungen, Universalprozessoren) ausgestattet sein kann, d. h. Ressourcen, die logisch gekoppelt werden können, um einen zusammengesetzten Knoten zu bilden, der beispielsweise als ein Server fungieren kann. In der veranschaulichten Ausführungsform sind die Einschübe in jedem Schrank 110, 120, 130, 140 mit mehreren Schrankswitches (z. B. Switches, die Datenkommunikationen zu und von Einschüben im Inneren des Schranks leiten) verbunden. Die Schrankswitches sind wiederum mit Spine-Switches 150 verbunden, die Kommunikationen zwischen Schränken (z. B. den Schränken 110, 120, 130, 140) im Rechenzentrum 100 schalten. In einigen Ausführungsformen können die Einschübe unter Verwendung von Intel-Omni-Path-Technologie mit einem Fabric verbunden sein. In anderen Ausführungsformen können die Einschübe mit anderen Fabrics verbunden sein, wie InfiniBand oder Ethernet. Wie hierin ausführlicher beschrieben wird, können Ressourcen in Einschüben im Rechenzentrum 100 einer Gruppe (die hierin als ein „verwalteter Knoten“ bezeichnet wird) zugeordnet sein, die Ressourcen von einem oder mehreren Einschüben beinhaltet, die gemeinsam bei der Ausführung einer Arbeitslast eingesetzt werden können. Die Arbeitslast kann ausgeführt werden, als ob sich die Ressourcen, die zum verwalteten Knoten gehören, auf dem gleichen Einschub befinden würden. Die Ressourcen in einem verwalteten Knoten können zu Einschüben gehören, die zu verschiedenen Racks gehören, und sogar zu verschiedenen Schränken 110, 120, 130, 140. Als solche können einige Ressourcen eines einzigen Einschubs einem verwalteten Knoten zugeordnet sein, während andere Ressourcen des gleichen Einschubs einem anderen verwalteten Knoten zugeordnet sind (z. B. ist ein Prozessor einem verwalteten Knoten zugewiesen und ein anderer Prozessor des gleichen Einschubs ist einem anderen verwalteten Knoten zugewiesen).
  • Ein Rechenzentrum, das disaggregierte Ressourcen umfasst, wie das Rechenzentrum 100, kann in einer breiten Vielfalt von Kontexten eingesetzt werden, wie in Unternehmen, der Regierung, bei Clouddienstanbietern und Kommunikationsdienstanbietern (z. B. Telcos), sowie in einer breiten Vielfalt an Größen, von Megarechenzentren von Clouddienstanbietern, die mehr als 100.000 Quadratfuß einnehmen, bis Einzel- oder Mehrrackinstallationen zur Verwendung in Basisstationen.
  • Das Disaggregieren von Ressourcen auf Einschübe, die vorwiegend aus einem einzigen Ressourcentyp bestehen (z. B. Recheneinschübe, die hauptsächlich Rechenressourcen umfassen, Arbeitsspeichereinschübe, die hauptsächlich Arbeitsspeicherressourcen beinhalten), und das selektive Zuordnen und Aufheben von Zuordnungen der disaggregierten Ressourcen, um einen verwalteten Knoten zu bilden, dem zugewiesen ist, eine Arbeitslast auszuführen, verbessert den Betrieb und die Ressourcennutzung des Rechenzentrums 100 gegenüber typischen Rechenzentren, die aus hyperkonvergierten Servern bestehen, die Rechen-, Arbeitsspeicher-, Speicher- und möglicherweise zusätzliche Ressourcen in einem einzigen Gehäuse beinhalten. Da Einschübe beispielsweise hauptsächlich Ressourcen eines bestimmten Typs beinhalten, können Ressourcen eines bestimmten Typs unabhängig von anderen Ressourcen hochgerüstet werden. Darüber hinaus, da unterschiedliche Ressourcentypen (Prozessoren, Speicher, Beschleuniger usw.) üblicherweise unterschiedliche Aktualisierungsraten aufweisen, können eine größere Ressourcennutzung und reduzierte Gesamtbetriebskosten erzielt werden. Ein Rechenzentrumsbetreiber kann zum Beispiel die Prozessoren in seiner gesamten Anlage nur durch Austauschen der Recheneinschübe hochrüsten. In einem solchen Fall können Beschleuniger und Speicherressourcen nicht gleichzeitig hochgerüstet werden und es kann vielmehr ermöglicht werden, dass diese weiter arbeiten, bis die eigene Erneuerung dieser Ressourcen geplant ist. Die Ressourcennutzung kann sich auch erhöhen. Falls zum Beispiel verwaltete Knoten auf Grundlage von Anforderungen der Arbeitslasten zusammengesetzt sind, die auf ihnen laufen werden, ist es wahrscheinlicher, dass Ressourcen innerhalb eines Knotens vollständig genutzt werden. Eine derartige Nutzung kann ermöglichen, dass mehr verwaltete Knoten in einem Rechenzentrum mit einer bestimmten Ressourcenmenge laufen oder dass ein Rechenzentrum, von dem erwartet wird, dass es eine bestimmte Menge an Arbeitslasten ausführt, unter Verwendung von weniger Ressourcen läuft.
  • 2 zeigt einen Schrank. Ein Schrank kann eine Gruppe von Reihen 200, 210, 220, 230 von Racks 240 enthalten. Jedes Rack 240 kann mehrere Einschübe (z. B. sechzehn Einschübe) aufnehmen und den aufgenommenen Einschüben Leistungs- und Datenverbindungen bereitstellen, wie hierin ausführlicher beschrieben wird. In der veranschaulichenden Ausführungsform sind die Racks in jeder Reihe 200, 210, 220, 230 mit mehreren Schrankswitches 250, 260 verbunden. Der Schrankswitch 250 enthält einen Satz von Anschlüssen 252, mit denen die Einschübe der Racks des Schranks 110 verbunden sind, und einen anderen Satz von Anschlüssen 254, die den Schrank 110 mit den Spine-Switches 150 verbinden, um anderen Schränken im Rechenzentrum 100 Konnektivität bereitzustellen. Gleichermaßen enthält der Schrankswitch 260 einen Satz von Anschlüssen 262, mit denen die Einschübe der Racks des Schranks 110 verbunden sind, und einen Satz von Anschlüssen 264, die den Schrank 110 mit den Spine-Switches 150 verbinden. Als solche bietet die Nutzung des Paars von Switches 250, 260 dem Schrank 110 ein Ausmaß an Redundanz. Falls beispielsweise einer der Switches 250, 260 versagt, können die Einschübe im Schrank 110 weiterhin über den anderen Switch 250, 260 eine Datenkommunikation mit dem Rest des Rechenzentrums 100 (z. B. mit Einschüben anderer Schränke) aufrechterhalten. Ferner können die Switches 150, 250, 260 in der veranschaulichenden Ausführungsform als optische Switches mit zwei Modi ausgeführt sein, die fähig sind, sowohl Ethernetprotokoll-Kommunikationen, die Internetprotokoll-Pakete (IP-Pakete) tragen, als auch Kommunikationen gemäß einem zweiten Hochleistungs-Verbindungsschichtprotokoll (z. B. PCI Express) über optische Signalgebungsmedien eines optischen Fabric leiten können.
  • Es sollte klar sein, dass jeder der anderen Schränke 120, 130, 140 (sowie alle zusätzlichen Schränke des Rechenzentrums 100) ähnlich wie der in 2 gezeigte und in Bezug auf diesen beschriebenen Schrank 110 strukturiert sein kann und ähnliche Komponenten aufweisen kann (z. B. kann jeder Schrank Reihen von Racks aufweisen, die mehrere Einschübe aufnehmen, wie oben beschrieben). Darüber hinaus, während zwei Schrankswitches 250, 260 gezeigt sind, sollte klar sein, dass in anderen Ausführungsformen jeder Schrank 110, 120, 130, 140 mit einer anderen Anzahl an Schrankswitches verbunden sein kann, die noch mehr Ausfallsicherungskapazitäten bereitstellt. Natürlich können Schränke in anderen Ausführungsformen anders als die Konfiguration mit Zeilen mit Racks angeordnet sein, die in 1-2 gezeigt ist. Beispielsweise kann ein Schrank als mehrere Gruppen von Racks ausgebildet sein, in denen jede Rackgruppe radial angeordnet ist, d. h., die Racks sind von einem zentralen Switch äquidistant.
  • Nun auf 3-5 Bezug nehmend, enthält jedes veranschaulichende Rack 240 des Rechenzentrums 100 zwei verlängerte Stützpfosten 302, 304, die vertikal angeordnet sind. Die verlängerten Stützpfosten 302, 304 können sich beispielsweise bei Einsatz von einem Boden des Rechenzentrums 100 nach oben erstrecken. Das Rack 240 enthält auch ein oder mehrere horizontale Paare 310 von verlängerten Stützarmen 312 (in 3 durch eine gestrichelte Ellipse identifiziert), die ausgelegt sind, einen Einschub des Rechenzentrums 100 zu tragen, wie unten besprochen wird. Ein verlängerter Stützarm 312 des Paars der verlängerten Stützarme 312 verläuft vom verlängerten Stützpfosten 302 nach außen und der andere verlängerte Stützarm 312 verläuft vom verlängerten Stützpfosten 304 nach außen.
  • In den veranschaulichenden Ausführungsformen ist jeder Einschub des Rechenzentrums 100 als ein gehäuseloser Einschub ausgeführt. Das heißt, jeder Einschub weist ein gehäuseloses Leiterplattensubstrat auf, auf dem physische Ressourcen (z. B. Prozessoren, Arbeitsspeicher, Beschleuniger, Speicher usw.) montiert sind, wie unten ausführlicher besprochen wird. Als solches ist das Rack 240 ausgelegt, die gehäuselosen Einschübe aufzunehmen. Jedes Paar 310 von verlängerten Stützarmen 312 definiert einen Einschubschlitz 320 des Racks 240, der ausgelegt ist, einen entsprechenden gehäuselosen Einschub aufzunehmen. Hierzu enthält jeder veranschaulichende Stützarm 312 eine Leiterplattenführung 330, die ausgelegt ist, das gehäuselose Leiterplattensubstrat des Einschubs aufzunehmen. Jede Leiterplattenführung 330 ist an einer Oberseite 332 des entsprechenden verlängerten Stützarms 312 gesichert oder anderweitig montiert. In der veranschaulichenden Ausführungsform ist beispielsweise jede Leiterplattenführung 330 an einem distalen Ende des entsprechenden verlängerten Stützarms 312 relativ zum entsprechenden verlängerten Stützpfosten 302, 304 montiert. Zur Verdeutlichung der Figuren ist möglicherweise nicht jede Leiterplattenführung 330 in jeder Figur referenziert.
  • Jede Leiterplattenführung 330 enthält eine Innenwand, die einen Leiterplattenschlitz 380 definiert, der ausgelegt ist, das gehäuselose Leiterplattensubstrat eines Einschubs 400 aufzunehmen, wenn der Einschub 400 im entsprechenden Einschubschlitz 320 des Racks 240 aufgenommen ist. Hierzu richtet ein Benutzer (oder Roboter) wie in 4 gezeigt das gehäuselose Leiterplattensubstrat eines veranschaulichenden gehäuselosen Einschubs 400 an einem Einschubschlitz 320 aus. Der Benutzer oder der Roboter kann dann das gehäuselose Leiterplattensubstrat vorwärts in den Einschubschlitz 320 schieben, sodass jede Seitenkante 414 des gehäuselosen Leiterplattensubstrats in einem entsprechenden Leiterplattenschlitz 380 der Leiterplattenführungen 330 des Paars 310 der verlängerten Stützarme 312 aufgenommen wird, die den entsprechenden Einschubschlitz 320 definieren, wie in 4 gezeigt. Dadurch, dass jeder Ressourcentyp Einschübe aufweist, auf die Roboter zugreifen können und die Roboter manipulieren können und die disaggregierte Ressourcen umfassen, kann jeder Ressourcentyp unabhängig voneinander und mit seiner eigenen optimierten Aktualisierungsrate nachgerüstet werden. Darüber hinaus sind die Einschübe ausgelegt, blind mit Energie- und Datenkommunikationskabeln in jedem Rack 240 zusammenzupassen, was ihre Fähigkeit verbessert, schnell entfernt, nachgerüstet, neu installiert und/oder ausgetauscht zu werden. Als solches kann das Rechenzentrum 100 in einigen Ausführungsformen ohne menschliche Beteiligung vor Ort im Rechenzentrum arbeiten (z. B. Arbeitslasten ausführen, einer Wartung und/oder Nachrüstungen unterzogen werden usw.). In anderen Ausführungsformen kann ein Mensch ein oder mehrere Wartungs- oder Nachrüstvorgänge im Rechenzentrum 100 ermöglichen.
  • Es sollte klar sein, dass jede Leiterplattenführung 330 doppelseitig ist. Das heißt, jede Leiterplattenführung 330 enthält eine Innenwand, die auf jeder Seite der Leiterplattenführung 330 einen Leiterplattenschlitz 380 definiert. Auf diese Weise kann jede Leiterplattenführung 330 auf beiden Seiten ein gehäuseloses Leiterplattensubstrat tragen. Als solcher kann ein einziger zusätzlicher verlängerter Stützpfosten zum Rack 240 hinzugefügt werden, um das Rack 240 in eine Zwei-Rack-Lösung umzuwandeln, die doppelt so viele Einschubschlitze 320 halten kann, wie in 3 gezeigt. Das veranschaulichende Rack 240 enthält sieben Paare 310 von verlängerten Stützarmen 312, die entsprechende sieben Einschubschlitze 320 definieren, die jeweils ausgelegt sind, einen entsprechenden Einschub 400 aufzunehmen und zu tragen, wie oben besprochen. Natürlich kann das Rack 240 in anderen Ausführungsformen zusätzliche oder weniger Paare 310 von verlängerten Stützarmen 312 enthalten (d. h. zusätzliche oder weniger Einschubschlitze 320). Es sollte klar sein, dass der Einschub 400 eine Gesamthöhe aufweisen kann, die sich von typischen Servern unterscheidet, da der Einschub 400 gehäuselos ist. Als solche kann die Höhe jedes Einschubschlitzes 320 in einigen Ausführungsformen kürzer als die Höhe eines typischen Servers sein (z. B. kürzer als eine einzelne Höheneinheit, „1 HE“). Das heißt, die vertikale Distanz zwischen jedem Paar 310 von verlängerten Stützarmen 312 kann kleiner als eine Standard-Höheneinheit „1 HE“ sein. Darüber hinaus kann die Gesamthöhe des Racks 240 in einigen Ausführungsformen aufgrund der relativen Verringerung der Höhe der Einschubschlitze 320 geringer als die Höhe von herkömmlichen Rackgehäusen sein. In einigen Ausführungsformen kann jeder der verlängerten Stützpfosten 302, 304 beispielsweise eine Länge von sechs Fuß oder darunter aufweisen. In anderen Ausführungsformen kann das Rack 240 wiederum andere Abmessungen aufweisen. Beispielsweise kann die vertikale Distanz zwischen jedem Paar 310 von verlängerten Stützarmen 312 in einigen Ausführungsformen größer als ein Standard-Rack bis „1 HE“ sein. In derartigen Ausführungsformen ermöglicht die größere vertikale Distanz zwischen den Einschüben, dass größere Kühlkörper an den physischen Ressourcen befestigt sind und größere Lüfter zum Kühlen jedes Einschubs verwendet werden (z. B. in der unten beschriebenen Lüfteranordnung 370), die wiederum ermöglichen können, dass die physischen Ressourcen mit erhöhten Leistungspegeln arbeiten. Ferner sollte klar sein, dass das Rack 240 keine Wände, Gehäuse oder Ähnliches enthält. Das Rack 240 ist vielmehr ein gehäuseloses Rack, das zur lokalen Umgebung hin offen ist. In einigen Fällen kann natürlich in den Fällen, in denen das Rack 240 ein Rack am Ende einer Reihe im Rechenzentrum 100 bildet, eine Endplatte an einem der verlängerten Stützpfosten 302, 304 befestigt sein.
  • In einigen Ausführungsformen können verschiedene Zwischenverbindungen nach oben oder unten durch die verlängerten Stützpfosten 302, 304 geleitet sein. Um eine solche Leitung zu erleichtern, enthält jeder verlängerte Stützpfosten 302, 304 eine Innenwand, die eine innere Kammer definiert, in der sich Zwischenverbindungen befinden können. Die durch die verlängerten Stützpfosten 302, 304 geleiteten Zwischenverbindungen können als ein beliebiger Typ von Zwischenverbindungen ausgebildet sein, einschließlich Daten- oder Kommunikationszwischenverbindungen, um jedem Einschubschlitz 320 Kommunikationsverbindungen bereitzustellen, Energiezwischenverbindungen, um jeden Einschubschlitz 320 mit Energie zu versorgen, und/oder andere Arten von Zwischenverbindungen.
  • Das Rack 240 enthält in der veranschaulichenden Ausführungsform eine Trägerplattform, auf der ein entsprechender optischer Datenanschluss (nicht gezeigt) montiert ist. Jeder optische Datenanschluss ist mit einem entsprechenden Einschubschlitz 320 assoziiert und ist ausgelegt, in einen optischen Datenanschluss eines entsprechenden Einschubs 400 einzugreifen, wenn der Einschub 400 im entsprechenden Einschubschlitz 320 aufgenommen ist. In einigen Ausführungsformen erfolgen optische Verbindungen zwischen Komponenten (z. B. Einschübe, Racks und Switches) im Rechenzentrum 100 durch eine blind steckbare optische Verbindung. Eine Klappe an jedem Kabel kann beispielsweise verhindern, dass Staub den Leiter im Inneren des Kabels verunreinigt. Beim Anschließen an einen blind steckbaren optischen Verbindungsmechanismus wird die Klappe aufgedrückt, wenn sich das Ende des Kabels dem Verbindungsmechanismus nähert oder in diesen eindringt. Danach kann der optische Leiter in ein Gel im Inneren des Verbindungsmechanismus eindringen, und der optische Leiter eines Kabels kommt im Gel im Inneren des Verbindungsmechanismus mit dem optischen Leiter eines anderen Kabels in Kontakt.
  • Das veranschaulichende Rack 240 enthält auch eine Lüfteranordnung 370, die an die Querstützarme des Racks 240 gekoppelt ist. Die Lüfteranordnung 370 enthält eine oder mehrere Reihen von Kühllüftern 372, die in einer horizontalen Linie zwischen den verlängerten Stützpfosten 302, 304 ausgerichtet sind. In der veranschaulichenden Ausführungsform enthält die Lüfteranordnung 370 eine Reihe von Kühllüftern 372 für jeden Einschubschlitz 320 des Racks 240. Wie oben besprochen enthält keiner der Einschübe 400 irgendein integriertes Kühlsystem in der veranschaulichenden Ausführungsform und die Lüfteranordnung 370 sorgt als solche für Kühlung für jeden im Rack 240 aufgenommenen Einschub 400. Jedes Rack 240 in der veranschaulichenden Ausführungsform enthält auch eine mit jedem Einschubschlitz 320 assoziierte Energieversorgung. Jede Stromversorgung ist an einem der verlängerten Stützarme 312 des Paars 310 von verlängerten Stützarmen 312 gesichert, die den entsprechenden Einschubschlitz 320 definieren. Das Rack 240 kann zum Beispiel eine Stromversorgung enthalten, die an jeden verlängerten Stützarm 312 gekoppelt oder gesichert ist, der sich vom verlängerten Stützpfosten 302 erstreckt. Jede Stromversorgung enthält einen Stromanschluss, der ausgelegt ist, in einen Stromanschluss des Einschubs 400 einzugreifen, wenn der Einschub 400 im entsprechenden Einschubschlitz 320 aufgenommen ist. In der veranschaulichenden Ausführungsform enthält der Einschub 400 keine integrierte Energieversorgung und die im Rack 240 vorgesehenen Energieversorgungen liefern als solche Energie an entsprechende Einschübe 400, wenn sie am Rack 240 montiert sind. Jede Energieversorgung ist ausgelegt, die Leistungsanforderungen für ihren zugehörigen Einschub zu erfüllen, die von Einschub zu Einschub variieren können. Darüber hinaus arbeiten die im Rack 240 vorgesehenen Energieversorgungen unabhängig voneinander. Das heißt, innerhalb eines einzelnen Racks kann eine erste Energieversorgung, die einen Recheneinschub mit Energie versorgt, Energiepegel bereitstellen, die von Energiepegeln verschieden sind, die von einer zweiten Energieversorgung geliefert wird, die einen Beschleunigereinschub mit Energie versorgt. Die Energieversorgungen können auf Einschubebene oder Rackebene steuerbar sein und können lokal durch Komponenten auf dem zugehörigen Einschub oder aus der Ferne gesteuert werden, wie durch einen andren Einschub oder eine Orchestrierungseinheit.
  • Nun auf 6 Bezug nehmend ist der Einschub 400 in der veranschaulichenden Ausführungsform ausgelegt, in einem entsprechenden Rack 240 des Rechenzentrums 100 montiert zu werden, wie oben besprochen. In einigen Ausführungsformen kann jeder Einschub 400 zum Durchführen bestimmter Aufgaben, wie Rechenaufgaben, Beschleunigungsaufgaben, Datenspeicheraufgaben usw., optimiert oder anderweitig konfiguriert sein. Der Einschub 400 kann zum Beispiel als ein Recheneinschub 800 wie unten in Bezug auf 8-9 besprochen, ein Beschleunigungseinschub 1000 wie unten in Bezug auf 10-11 besprochen, ein Speichereinschub 1200 wie unten in Bezug auf 12-13 besprochen oder als ein Einschub ausgebildet sein, der optimiert oder anderweitig ausgelegt ist, um andere spezialisierte Aufgaben durchzuführen, wie ein Arbeitsspeichereinschub 1400, der unten in Bezug auf 14 besprochen wird.
  • Wie oben besprochen enthält der veranschaulichende Einschub 400 ein gehäuseloses Leiterplattensubstrat 602, das verschiedene physische Ressourcen trägt (z. B. elektrische Komponenten), die darauf montiert sind. Es sollte klar sein, dass das Leiterplattensubstrat 602 in dem Sinn „gehäuselos“ ist, dass der Einschub 400 keine Einhausung oder Umhüllung enthält. Vielmehr ist das gehäuselose Leiterplattensubstrat 602 zur lokalen Umgebung hin offen. Das gehäuselose Leiterplattensubstrat 602 kann aus einem beliebigen Material gebildet sein, das fähig ist, die verschiedenen, darauf montierten elektrischen Komponenten zu tragen. In einer veranschaulichenden Ausführungsform ist das gehäuselose Leiterplattensubstrat 602 aus einem FR-4-glasverstärkten Epoxylaminatmaterial geformt. Natürlich können in anderen Ausführungsformen auch andere Materialien verwendet werden, um das gehäuselose Leiterplattensubstrat 602 zu formen.
  • Wie unten ausführlicher besprochen wird, enthält das gehäuselose Leiterplattensubstrat 602 mehrere Merkmale, die die thermalen Kühleigenschaften der verschiedenen elektrischen Komponenten verbessern, die auf dem gehäuselosen Leiterplattensubstrat 602 montiert sind. Wie besprochen enthält das gehäuselose Leiterplattensubstrat 602 keine Einhausung oder Umhüllung, was den Luftstrom über die elektrischen Komponenten des Einschubs 400 durch Reduzieren derjenigen Strukturen verbessern kann, die den Luftstrom behindern können. Da das gehäuselose Leiterplattensubstrat 602 nicht in einem individuellen Gehäuse oder in einer individuellen Umhüllung positioniert ist, gibt es beispielsweise keine vertikal angeordnete Rückwandplatine (z. B. eine Rückplatte des Gestells), die am gehäuselosen Leiterplattensubstrat 602 befestigt ist, die einen Luftstrom über die elektrischen Komponenten verhindern könnte. Darüber hinaus weist das gehäuselose Leiterplattensubstrat 602 eine geometrische Form auf, die ausgelegt ist, die Länge des Luftstrompfads über die elektrischen Komponenten zu reduzieren, die am gehäuselosen Leiterplattensubstrat 602 montiert sind. Das veranschaulichende gehäuselose Leiterplattensubstrat 602 weist zum Beispiel eine Breite 604 auf, die größer als eine Tiefe 606 des gehäuselosen Leiterplattensubstrats 602 ist. In einer bestimmten Ausführungsform weist das gehäuselose Leiterplattensubstrat 602 beispielsweise eine Breite von ungefähr 21 Zoll und eine Tiefe von ungefähr 9 Zoll auf, im Vergleich zu einem typischen Server, der eine Breite von ungefähr 17 Zoll und eine Tiefe von ungefähr 39 Zoll aufweist. Als solcher weist ein Luftstrompfad 608, der von einer Vorderkante 610 des gehäuselosen Leiterplattensubstrats 602 zu einer Hinterkante 612 verläuft, relativ zu typischen Servern eine kürzere Distanz auf, was die thermalen Kühlungsmerkmale des Einschubs 400 verbessern kann. Ferner, obwohl in 6 nicht veranschaulicht, sind die verschiedenen physischen Ressourcen, die am gehäuselosen Leiterplattensubstrat 602 montiert sind, an entsprechenden Positionen montiert, sodass keine zwei elektrischen Komponenten, die wesentliche Wärme erzeugen, einander begleiten, wie unten ausführlicher besprochen wird. Das heißt, keine zwei elektrischen Komponenten, die während des Betriebs merkliche Wärme erzeugen (d. h. größer als eine nominale Wärme, die ausreicht, um die Kühlung anderer elektrischer Komponenten nachteilig zu beeinflussen), sind am gehäuselosen Leiterplattensubstrat 602 linear in einer Reihe zueinander entlang der Richtung des Luftstrompfads 608 montiert (d. h. entlang einer Richtung, die von der Vorderkante 610 zur Hinterkante 612 des gehäuselosen Leiterplattensubstrats 602 verläuft).
  • Wie oben besprochen, enthält der veranschaulichende Einschub 400 eine oder mehrere physische Ressourcen 620, die an einer Oberseite 650 des gehäuselosen Leiterplattensubstrats 602 montiert sind. Obwohl in 6 nur zwei physische Ressourcen 620 gezeigt sind, sollte klar sein, dass der Einschub 400 in anderen Ausführungsformen eine, zwei oder mehr physische Ressourcen 620 enthalten kann. Die physischen Ressourcen 620 können als ein beliebiger Typ von einem Prozessor, einer Steuerung oder einem anderen Rechenschaltkreis ausgebildet sein, der verschiedene Aufgaben wie Rechenfunktionen und/oder Steuern der Funktionen des Einschubs 400 durchführen kann, beispielsweise abhängig vom Typ oder der beabsichtigten Funktionalität des Einschubs 400. Wie unten ausführlicher besprochen wird, können die physischen Ressourcen 620 beispielsweise als Hochleistungsprozessoren in Ausführungsformen, in denen der Einschub 400 als ein Recheneinschub ausgebildet ist, als Beschleunigungs-Coprozessoren oder Schaltkreise in Ausführungsformen, in denen der Einschub 400 als ein Beschleunigungseinschub ausgebildet ist, als Speichersteuerungen in Ausführungsformen, in denen der Einschub 400 als ein Speichereinschub ausgebildet ist, oder eine Gruppe von Arbeitsspeichervorrichtungen in Ausführungsformen ausgebildet sein, in denen der Einschub 400 als ein Arbeitsspeichereinschub ausgebildet ist.
  • Der Einschub 400 enthält auch eine oder mehrere zusätzliche physische Ressourcen 630, die an einer Oberseite 650 des gehäuselosen Leiterplattensubstrats 602 montiert sind. In der veranschaulichenden Ausführungsform enthalten die zusätzlichen physischen Ressourcen eine Netzwerkschnittstellensteuerung (NIC), wie unten ausführlicher besprochen wird. Natürlich können die physischen Ressourcen 630 in anderen Ausführungsformen abhängig vom Typ und der Funktionalität des Einschubs 400 zusätzliche oder andere elektrische Komponenten, Schaltkreise und/oder Vorrichtungen enthalten.
  • Die physischen Ressourcen 620 sind über ein Eingabe/Ausgabe(E/A)-Subsystem 622 kommunikativ an die physischen Ressourcen 630 gekoppelt. Das E/A-Subsystem 622 kann als eine Verschaltung und/oder Komponenten ausgebildet sein, um Eingabe/Ausgabe-Operationen mit den physischen Ressourcen 620, den physischen Ressourcen 630 und/oder anderen Komponenten des Einschubs 400 zu ermöglichen. Das E/A-Subsystem 622 kann beispielsweise als Arbeitsspeichersteuerungshubs, Eingabe/Ausgabe-Steuerungshubs, integrierte Sensorhubs, Firmwarevorrichtungen, Kommunikationsverbindungen (z. B. Punkt-zu-Punkt-Verknüpfungen, Busverbindungen, Drähte, Kabel, Wellenleiter, Lichtleiter, Bahnen auf gedruckten Leiterplatten usw.) und/oder andere Komponenten und Subsysteme ausgebildet sein oder diese anderweitig enthalten, um die Eingabe/Ausgabe-Operationen zu ermöglichen. In der veranschaulichenden Ausführungsform ist das E/A-Subsystem 622 als ein doppelter Datenraten-4(DDR4)-Datenbus oder ein DDR5-Datenbus ausgebildet oder enthält einen solchen anderweitig.
  • In einigen Ausführungsformen kann der Einschub 400 auch eine Ressource-zu-Ressource-Zwischenverbindung 624 enthalten. Die Ressource-zu-Ressource-Zwischenverbindung 624 kann als ein beliebiger Typ von Kommunikationszwischenverbindung ausgebildet sein, der fähig ist, Ressource-zu-Ressource-Kommunikationen zu ermöglichen. In der veranschaulichenden Ausführungsform ist die Ressource-zu-Ressource-Zwischenverbindung 624 als eine Hochgeschwindigkeits-Punkt-zu-Punkt-Zwischenverbindung ausgebildet (z. B. schneller als das E/A-Teilsystem 622). Die Ressource-zu-Ressource-Zwischenverbindung 624 kann zum Beispiel als QuickPath Interconnect (QPI), UltraPath Interconnect (UPI), PCI Express (PCIe) oder eine andere Hochgeschwindigkeits-Punkt-zu-Punkt-Zwischenverbindung ausgebildet sein, die für Ressource-zu-Ressource-Kommunikationen zweckbestimmt ist.
  • Der Einschub 400 enthält auch einen Energieanschluss 640, der ausgelegt ist, in einen entsprechenden Energieanschluss des Racks 240 einzugreifen, wenn der Einschub 400 im entsprechenden Rack 240 montiert ist. Der Einschub 400 empfängt über den Energieanschluss 640 Energie von einer Energieversorgung des Racks 240, um Energie an die verschiedenen elektrischen Komponenten des Einschubs 400 zu liefern. Das heißt, der Einschub 400 enthält keine lokale Energieversorgung (d. h. eine integrierte Energieversorgung), um die elektrischen Komponenten des Einschubs 400 mit Energie zu versorgen. Der Ausschluss einer lokalen oder integrierten Energieversorgung ermöglicht die Reduktion des Gesamtplatzbedarfs des gehäuselosen Leiterplattensubstrats 602, was die thermalen Kühlungsmerkmale der verschiedenen elektrischen Komponenten erhöhen kann, die auf dem gehäuselosen Leiterplattensubstrat 602 montiert sind, wie oben besprochen. In einigen Ausführungsformen sind Spannungsregler auf einer Unterseite 750 (siehe 7) des gehäuselosen Leiterplattensubstrats 602 direkt den Prozessoren 820 (siehe 8) gegenüber platziert, und Energie wird durch Durchkontaktierungen, die durch das Leiterplattensubstrat 602 verlaufen, von den Spannungsreglern zu den Prozessoren 820 geleitet. Eine derartige Konfiguration bietet ein erhöhtes Wärmebudget, zusätzlichen Strom und/oder zusätzliche Spannung und eine bessere Spannungsregelung im Vergleich zu typischen gedruckten Leiterplatten, bei denen Prozessorenergie von einem Spannungsregler teilweise durch gedruckte Leiterbahnen geliefert wird.
  • In einigen Ausführungsformen kann der Einschub 400 auch Montageelemente 642 enthalten, die ausgelegt sind, in einen Montagearm oder einer anderen Struktur eines Roboters einzugreifen, um die Platzierung des Einschubs 600 durch den Roboter in einem Rack 240 zu ermöglichen. Die Montageelemente 642 können als ein beliebiger Typ von physischen Strukturen ausgebildet sein, die dem Roboter ermöglichen, den Einschub 400 zu ergreifen, ohne das gehäuselose Leiterplattensubstrat 602 oder die darauf montierten elektrischen Komponenten zu beschädigen. In einigen Ausführungsformen können die Montageelemente 642 als nicht leitende Anschlussfelder ausgebildet sein, die am gehäuselosen Leiterplattensubstrat 602 befestigt sind. In anderen Ausführungsformen können die Montageelemente als Halterungen, Klammern oder andere ähnliche Strukturen ausgebildet sein, die am gehäuselosen Leiterplattensubstrat 602 befestigt sind. Die spezifische Anzahl, Form, Größe und/oder der spezifische Aufbau des Montageelements 642 kann von der Konstruktion des Roboters abhängen, der ausgelegt ist, den Einschub 400 zu verwalten.
  • Nun auf 7 Bezug nehmend, enthält der Einschub 400 zusätzlich zu den physischen Ressourcen 630, die auf der Oberseite 650 des gehäuselosen Leiterplattensubstrats 602 montiert sind, auch eine oder mehrere Arbeitsspeichervorrichtungen 720, die auf einer Unterseite 750 des gehäuselosen Leiterplattensubstrats 602 montiert sind. Das heißt, das gehäuselose Leiterplattensubstrat 602 ist als eine doppelseitige Leiterplatte ausgebildet. Die physischen Ressourcen 620 sind über das E/A-Subsystem 622 kommunikativ an die Arbeitsspeichervorrichtungen 720 gekoppelt. Die physischen Ressourcen 620 und die Arbeitsspeichervorrichtungen 720 können zum Beispiel über eine oder mehrere Durchkontaktierungen kommunikativ gekoppelt sein, die durch das gehäuselose Leiterplattensubstrat 602 verlaufen. Jede physische Ressource 620 kann in einigen Ausführungsformen kommunikativ an eine andere Gruppe aus einer oder mehreren Arbeitsspeichervorrichtungen 720 gekoppelt sein. Alternativ kann jede physische Ressource 620 in anderen Ausführungsformen kommunikativ an jede Arbeitsspeichervorrichtung 720 gekoppelt sein.
  • Die Arbeitsspeichervorrichtungen 720 können als ein beliebiger Typ von Arbeitsspeichervorrichtung ausgebildet sein, der fähig ist, während eines Betriebs des Einschubs 400 Daten für die physischen Ressourcen 620 zu speichern, wie beispielsweise ein beliebiger Typ von flüchtigem (z. B. dynamischem Arbeitsspeicher mit wahlfreiem Zugriff (DRAM) usw.) oder nichtflüchtigem Arbeitsspeicher. Flüchtiger Arbeitsspeicher kann ein Speichermedium sein, das Energie erfordert, um den Zustand von vom Medium gespeicherten Daten zu bewahren. Nicht einschränkende Beispiele von flüchtigem Arbeitsspeicher können verschiedene Arten von Arbeitsspeicher mit wahlfreiem Zugriff (RAM) wie dynamischen Arbeitsspeicher mit wahlfreiem Zugriff (DRAM) oder statischen Arbeitsspeicher mit wahlfreiem Zugriff (SRAM) enthalten. Ein bestimmter Typ von DRAM, der in einem Arbeitsspeichermodul verwendet werden kann, ist synchroner dynamischer Arbeitsspeicher mit wahlfreiem Zugriff (SDRAM). In bestimmten Ausführungsformen kann der DRAM einer Arbeitsspeicherkomponente einen von JEDEC veröffentlichten Standard erfüllen, wie JESD79F für DDR-SDRAM, JESD79-2F für DDR2-SDRAM, JESD79-3F für DDR3-SDRAM, JESD79-4A für DDR4-SDRAM, JESD209 für Niedrigenergie-DDR (LPDDR), JESD209-2 für LPDDR2, JESD209-3 für LPDDR3 und JESD209-4 für LPDDR4. Derartige Standards (und ähnliche Standards) können als DDR-basierte Standards bezeichnet werden und Kommunikationsschnittstellen der Speichervorrichtungen, die derartige Standards implementieren, können als DDR-basierte Schnittstellen bezeichnet werden.
  • In einer Ausführungsform ist die Arbeitsspeichervorrichtung eine blockadressierbare Arbeitsspeichervorrichtung, wie diejenigen, die auf NAND- oder NOR-Technologien basieren. Ein Block kann eine beliebige Größe haben, wie zum Beispiel unter anderem 2 kB, 4 kB, 8 kB und so weiter. Eine Arbeitsspeichervorrichtung kann auch nichtflüchtige Vorrichtungen zukünftiger Generationen enthalten, wie einen Intel Optane®-Arbeitsspeicher oder andere Byte-adressierbare, in situ beschreibbare nichtflüchtige Arbeitsspeichervorrichtungen. In einer Ausführungsform kann die Arbeitsspeichervorrichtung Arbeitsspeichervorrichtungen sein oder solche enthalten, die Chalkogenglas, NAND-Flashspeicher mit mehreren Schwellenpegeln, NOR-Flashspeicher, Phasenwechselspeicher (PCM) mit einem oder mehreren Pegeln, einen resistiven Arbeitsspeicher, Nanodrahtspeicher, ferroelektrischen Transistorspeicher mit wahlfreiem Zugriff (FeTRAM), antiferroelektrischen Arbeitsspeicher, magnetoresistiven Arbeitsspeicher mit wahlfreiem Zugriff (MRAM), der Memristortechnologie einbindet, resistiven Arbeitsspeicher auf Metalloxidbasis, Sauerstoffleerstellenbasis und Leiterbrückenarbeitsspeicher mit wahlfreiem Zugriff (CB-RAM) oder Spin-Transfer-Torque(STT)-MRAM, eine Vorrichtung auf Spintronik-Magnetübergang-Arbeitsspeicherbasis, eine Vorrichtung auf Magnettunnelübergangsbasis (MTJ-Basis), eine Vorrichtung auf Domänenwand(DW)- und SOT(Spin-Orbit-Transfer)-Basis, eine Arbeitsspeichervorrichtung auf Thyristorbasis oder eine Kombination von beliebigen der obigen oder einen anderen Arbeitsspeicher einsetzen. Die Arbeitsspeichervorrichtung kann den Chip selbst und/oder ein verpacktes Arbeitsspeicherprodukt bezeichnen. In einigen Ausführungsformen kann die Arbeitsspeichervorrichtung eine transistorlose stapelbare Koppelpunkt-Architektur umfassen, in der Arbeitsspeicherzellen am Schnittpunkt von Wortleitungen und Bitleitungen sitzen und individuell adressierbar sind und in der eine Bitspeicherung auf einer Änderung im Bulkwiderstand basiert.
  • Nun auf 8 Bezug nehmend, kann der Einschub 400 als ein Recheneinschub 800 ausgeführt sein. Der Recheneinschub 800 ist optimiert oder anderweitig ausgelegt, um Rechenaufgaben durchzuführen. Natürlich, wie oben besprochen, kann sich der Recheneinschub 800 auf andere Einschübe, wie Beschleunigungseinschübe und/oder Speichereinschübe, stützen, um derartige Rechenaufgaben durchzuführen. Der Recheneinschub 800 enthält verschiedene physische Ressourcen (z. B. elektrische Komponenten), die den physischen Ressourcen des Einschubs 400 ähnlich sind, die in 8 unter Verwendung der gleichen Bezugsziffern identifiziert wurden. Die oben in Bezug auf 6 und 7 bereitgestellte Beschreibung derartiger Komponenten gilt für die entsprechenden Komponenten des Recheneinschubs 800 und wird hierin aus Gründen der Klarheit der Beschreibung des Recheneinschubs 800 nicht beschrieben.
  • Im veranschaulichenden Recheneinschub 800 sind die physischen Ressourcen 620 als Prozessoren 820 ausgebildet. Obwohl in 8 nur zwei Prozessoren 820 gezeigt sind, sollte klar sein, dass der Recheneinschub 800 in anderen Ausführungsformen zusätzliche Prozessoren 820 enthalten kann. Veranschaulichend sind die Prozessoren 820 als Hochleistungsprozessoren 820 ausgebildet und können ausgelegt sein, mit einer relativ hohen Nennleistung zu arbeiten. Obwohl die Prozessoren 820 beim Arbeiten mit größeren Nennleistungen als übliche Prozessoren (die mit ungefähr 155-230 W arbeiten) zusätzliche Wärme generieren, ermöglichen die oben besprochenen verbesserten thermalen Kühlungsmerkmale des gehäuselosen Leiterplattensubstrats 602 den Betrieb bei höherer Leistung. In der veranschaulichenden Ausführungsform sind die Prozessoren 820 beispielsweise ausgelegt, mit einer Nennleistung von mindestens 250 W zu arbeiten. In einigen Ausführungsformen können die Prozessoren 820 ausgelegt sein, mit einer Nennleistung von mindestens 350 W zu arbeiten.
  • In einigen Ausführungsformen kann der Recheneinschub 800 auch eine Prozessor-zu-Prozessor-Zwischenverbindung 842 enthalten. Ähnlich wie die oben besprochene Ressource-zu-Ressource-Zwischenverbindung 624 des Einschubs 400 kann die Prozessor-zu-Prozessor-Zwischenverbindung 842 als ein beliebiger Typ von Kommunikationszwischenverbindung ausgebildet sein, die fähig ist, Kommunikationen der Prozessor-zu-Prozessor-Zwischenverbindung 842 zu ermöglichen. In der veranschaulichenden Ausführungsform ist die Prozessor-zu-Prozessor-Zwischenverbindung 842 als eine Hochgeschwindigkeits-Punkt-zu-Punkt-Zwischenverbindung ausgebildet (z. B. schneller als das E/A-Teilsystem 622). Die Prozessor-zu-Prozessor-Zwischenverbindung 842 kann zum Beispiel als QuickPath Interconnect (QPI), UltraPath Interconnect (UPI) oder eine andere Hochgeschwindigkeits-Punkt-zu-Punkt-Zwischenverbindung ausgebildet sein, die für Prozessor-zu-Prozessor-Kommunikationen (z. B. PCIe) zweckbestimmt ist.
  • Der Recheneinschub 800 enthält auch einen Kommunikationsschaltkreis 830. Der veranschaulichende Kommunikationsschaltkreis 830 enthält eine Netzwerkschnittstellensteuerung (NIC) 832, die auch als eine Host-Fabric-Schnittstelle (HFI) bezeichnet werden kann. Die NIC 832 kann als ein beliebiger Typ von integriertem Schaltkreis, von diskreten Schaltkreisen, Steuerungschips, Chipsätzen, Zusatzplatinen, Tochterkarten, Netzwerkschnittstellenkarten oder anderen Vorrichtungen, die vom Recheneinschub 800 verwendet werden können, um an eine andere Rechenvorrichtung (z. B. an andere Einschübe 400) anzubinden, ausgebildet sein oder einen derartigen Typ anderweitig enthalten. In einigen Ausführungsformen kann die NIC 832 als ein Teil eines Ein-Chip-Systems (SoC) ausgebildet sein, das einen oder mehrere Prozessoren enthält, oder auf einem Mehrchippaket enthalten sein, das auch einen oder mehrere Prozessoren enthält. In einigen Ausführungsformen kann die NIC 832 einen lokalen Prozessor (nicht gezeigt) und/oder einen lokalen Arbeitsspeicher (nicht gezeigt) enthalten, die beide lokal zur NIC 832 sind. In derartigen Ausführungsformen kann der lokale Prozessor der NIC 832 fähig sein, eine oder mehrere der Funktionen des Prozessors 820 durchzuführen. Zusätzlich oder alternativ kann der lokale Arbeitsspeicher der NIC 832 in derartigen Ausführungsformen in eine oder mehrere Komponenten des Recheneinschubs auf Platinenebene, Sockelebene, Chipebene und/oder anderen Ebenen integriert sein.
  • Der Kommunikationsschaltkreis 830 ist kommunikativ an einen optischen Datenanschluss 834 gekoppelt. Der optische Datenanschluss 834 ist ausgelegt, in einen entsprechenden optischen Datenanschluss des Racks 240 einzugreifen, wenn der Recheneinschub 800 im Rack 240 montiert ist. Veranschaulichend enthält der optische Datenanschluss 834 eine Vielzahl von optischen Leitern, die von einer Gegenfläche des optischen Datenanschlusses 834 zu einem optischen Sende-Empfänger 836 führen. Der optische Sende-Empfänger 836 ist ausgelegt, eingehende optische Signale vom rackseitigen optischen Datenanschluss in elektrische Signale umzuwandeln und elektrische Signale in ausgehende optische Signale an den rackseitigen optischen Datenanschluss umzuwandeln. Obwohl der optische Sende-Empfänger 836 in der veranschaulichenden Ausführungsform als einen Teil des optischen Datenanschlusses 834 bildend gezeigt ist, kann er in anderen Ausführungsformen einen Abschnitt des Kommunikationsschaltkreises 830 bilden.
  • In einigen Ausführungsformen kann der Recheneinschub 800 auch einen Erweiterungsanschluss 840 enthalten. In derartigen Ausführungsformen ist der Erweiterungsanschluss 840 ausgelegt, in einen entsprechenden Anschluss eines gehäuselosen Erweiterungs-Leiterplattensubstrats einzugreifen, um dem Recheneinschub 800 zusätzliche physische Ressourcen bereitzustellen. Die zusätzlichen physischen Ressourcen können zum Beispiel von den Prozessoren 820 während des Betriebs des Recheneinschubs 800 verwendet werden. Das gehäuselose Erweiterungs-Leiterplattensubstrat kann im Wesentlichen dem oben besprochenen gehäuselosen Leiterplattensubstrat 602 ähnlich sein und kann verschiedene darauf montierte elektrische Komponenten enthalten. Die bestimmten elektrischen Komponenten, die am gehäuselosen Erweiterungs-Leiterplattensubstrat montiert sind, können von der beabsichtigten Funktionalität des gehäuselosen Erweiterungs-Leiterplattensubstrats abhängen. Das gehäuselose Erweiterungs-Leiterplattensubstrat kann beispielsweise zusätzliche Rechenressourcen, Arbeitsspeicherressourcen und/oder Speicherressourcen bereitstellen. Als solche können die zusätzlichen physischen Ressourcen des gehäuselosen Erweiterungs-Leiterplattensubstrats Prozessoren, Arbeitsspeichervorrichtungen, Speichervorrichtungen und/oder Beschleunigerschaltkreise enthalten, sind jedoch nicht darauf beschränkt, einschließlich, beispielsweise, feldprogrammierbare Gatearrays (FPGA), anwendungsspezifische integrierte Schaltungen (ASICs), Sicherheits-Coprozessoren, Grafikverarbeitungseinheiten (GPUs), Schaltkreise für maschinelles Lernen oder andere spezialisierte Prozessoren, Steuerungen, Vorrichtungen und/oder Schaltkreise.
  • Nun auf 9 Bezug nehmend, wird eine veranschaulichende Ausführungsform des Recheneinschubs 800 gezeigt. Wie gezeigt sind die Prozessoren 820, der Kommunikationsschaltkreis 830 und der optische Datenanschluss 834 an der Oberseite 650 des gehäuselosen Leiterplattensubstrats 602 montiert. Eine beliebige geeignete Befestigungs- oder Montagetechnologie kann verwendet werden, um die physischen Ressourcen des Recheneinschubs 800 am gehäuselosen Leiterplattensubstrat 602 zu montieren. Die verschiedenen physischen Ressourcen können zum Beispiel in entsprechenden Sockeln (z. B. einem Prozessorsockel), Halterungen oder Klammern montiert sein. In einigen Fällen können einige der elektrischen Komponenten direkt durch Löten oder ähnliche Techniken am gehäuselosen Leiterplattensubstrat 602 montiert sein.
  • Wie oben besprochen sind die einzelnen Prozessoren 820 und der Kommunikationsschaltkreis 830 auf der Oberseite 650 des gehäuselosen Leiterplattensubstrats 602 montiert, sodass keine zwei Wärme erzeugenden, elektrischen Komponenten einander begleiten. In der veranschaulichenden Ausführungsform sind die Prozessoren 820 und der Kommunikationsschaltkreis 830 an entsprechenden Positionen auf der Oberseite 650 des gehäuselosen Leiterplattensubstrats 602 montiert, sodass sich keine zwei der physischen Ressourcen linear in einer Reihe mit anderen entlang der Richtung des Luftstrompfads 608 befinden. Es sollte klar sein, dass, obwohl sich der optische Datenanschluss 834 in einer Reihe mit dem Kommunikationsschaltkreis 830 befindet, der optische Datenanschluss 834 während des Betriebs keine oder nominale Wärme erzeugt.
  • Die Arbeitsspeichervorrichtungen 720 des Recheneinschubs 800 sind auf der Unterseite 750 des gehäuselosen Leiterplattensubstrats 602 montiert, wie oben in Bezug auf den Einschub 400 besprochen. Obwohl an der Unterseite 750 montiert, sind die Arbeitsspeichervorrichtungen 720 kommunikativ über das E/A-Subsystem 622 an die Prozessoren 820 gekoppelt, die sich auf der Oberseite 650 befinden. Da das gehäuselose Leiterplattensubstrat 602 als eine doppelseitige Leiterplatte ausgebildet ist, können die Arbeitsspeichervorrichtungen 720 und die Prozessoren 820 kommunikativ durch eine oder mehrere Durchkontaktierungen, Anschlüsse oder andere Mechanismen gekoppelt sein, die durch das gehäuselose Leiterplattensubstrat 602 verlaufen. Jeder Prozessor 820 kann natürlich in einigen Ausführungsformen kommunikativ an eine andere Gruppe aus einer oder mehreren Arbeitsspeichervorrichtungen 720 gekoppelt sein. Alternativ kann jeder Prozessor 820 in anderen Ausführungsformen kommunikativ an jede Arbeitsspeichervorrichtung 720 gekoppelt sein. In einigen Ausführungsformen können die Arbeitsspeichervorrichtungen 720 auf einer oder mehreren Arbeitsspeicherzwischenschichten auf der Unterseite des gehäuselosen Leiterplattensubstrats 602 montiert sein und mit einem entsprechenden Prozessor 820 über eine Kugelgitteranordnung verbunden sein.
  • Jeder der Prozessoren 820 enthält einen daran gesicherten Kühlkörper 850. Aufgrund der Montage der Arbeitsspeichervorrichtungen 720 auf der Unterseite 750 des gehäuselosen Leiterplattensubstrats 602 (sowie der vertikalen Beabstandung der Einschübe 400 im entsprechenden Rack 240) enthält die Oberseite 650 des gehäuselosen Leiterplattensubstrats 602 eine zusätzliche „freie“ Fläche oder einen zusätzlichen „freien“ Raum, der die Verwendung von Kühlkörpern 850 mit einer größeren Größe relativ zu herkömmlichen, in typischen Servern verwendeten Kühlkörpern ermöglicht. Aufgrund der verbesserten thermalen Kühlungsmerkmale des gehäuselosen Leiterplattensubstrats 602 enthält darüber hinaus keiner der Kühlkörper 850 daran befestigte Kühllüfter. Das heißt, jeder der Kühlkörper 850 ist als ein lüfterloser Kühlkörper ausgebildet. In einigen Ausführungsformen können die Kühlkörper 850, die auf den Prozessoren 820 montiert sind, mit dem am Kommunikationsschaltkreis 830 befestigten Kühlkörper aufgrund ihrer größeren Größe in der Richtung des Luftströmungspfads 608 überlappen, wie veranschaulichend durch 9 angedeutet.
  • Nun auf 10 Bezug nehmend, kann der Einschub 400 als ein Beschleunigungseinschub 1000 ausgeführt sein. Der Beschleunigungseinschub 1000 ist ausgelegt, spezialisierte Rechenaufgaben durchzuführen, wie maschinelles Lernen, Verschlüsselung, Hashing oder eine andere rechenintensive Aufgabe. In einigen Ausführungsformen kann ein Recheneinschub 800 zum Beispiel während des Betriebs Aufgaben an den Beschleunigungseinschub 1000 auslagern. Der Beschleunigungseinschub 1000 enthält verschiedene Komponenten, die den Komponenten des Einschubs 400 und/oder des Recheneinschubs 800 ähnlich sind, die in 10 unter Verwendung der gleichen Bezugsziffern identifiziert wurden. Die oben in Bezug auf 6, 7 und 8 bereitgestellte Beschreibung derartiger Komponenten gilt für die entsprechenden Komponenten des Beschleunigungseinschubs 1000 und wird hierin aus Gründen der Klarheit der Beschreibung des Beschleunigungseinschubs 1000 nicht beschrieben.
  • Im veranschaulichenden Beschleunigungseinschub 1000 sind die physischen Ressourcen 620 als Beschleunigungsschaltkreise 1020 ausgebildet. Obwohl in 10 nur zwei Beschleunigungsschaltkreise 1020 gezeigt sind, sollte klar sein, dass der Beschleunigungseinschub 1000 in anderen Ausführungsformen zusätzliche Beschleunigungsschaltkreise 1020 enthalten kann. Wie beispielsweise in 11 gezeigt, kann der Beschleunigungseinschub 1000 in einigen Ausführungsformen vier Beschleunigungsschaltkreise 1020 enthalten. Die Beschleunigungsschaltkreise 1020 können als ein beliebiger Typ von Prozessor, Coprozessor, Rechenschaltkreis oder eine andere Vorrichtung ausgebildet sein, die Rechen- oder Verarbeitungsoperationen durchführen kann. Die Beschleunigungsschaltkreise 1020 können zum Beispiel als Zentralverarbeitungseinheiten, Kerne, feldprogrammierbare Gatearrays (FPGA), anwendungsspezifische integrierte Schaltkreise (ASICs), programmierbare Steuerlogik (PCL), Sicherheits-Coprozessoren, Grafikverarbeitungseinheiten (GPUs), neuromorphe Prozessoreinheiten, Quantencomputer, Schaltkreise für maschinelles Lernen oder andere spezialisierte Prozessoren, Steuerungen, Vorrichtungen und/oder Schaltkreise ausgebildet sein.
  • In einigen Ausführungsformen kann der Beschleunigungseinschub 1000 auch eine Beschleuniger-zu-Beschleuniger-Zwischenverbindung 1042 enthalten. Ähnlich wie die oben besprochene Ressource-zu-Ressource-Zwischenverbindung 624 des Einschubs 600 kann die Beschleuniger-zu-Beschleuniger-Zwischenverbindung 1042 als ein beliebiger Typ von Kommunikationszwischenverbindung ausgebildet sein, die fähig ist, Beschleuniger-zu-Beschleuniger-Kommunikationen zu ermöglichen. In der veranschaulichenden Ausführungsform ist die Beschleuniger-zu-Beschleuniger-Zwischenverbindung 1042 als eine Hochgeschwindigkeits-Prozessor-zu-Prozessor-Zwischenverbindung ausgebildet (z. B. schneller als das E/A-Teilsystem 622). Die Beschleuniger-zu-Beschleuniger-Zwischenverbindung 1042 kann zum Beispiel als QuickPath Interconnect (QPI), UltraPath Interconnect (UPI) oder eine andere Hochgeschwindigkeits-Punkt-zu-Punkt-Zwischenverbindung ausgebildet sein, die für Prozessor-zu-Prozessor-Kommunikationen zweckbestimmt ist. In einigen Ausführungsformen können die Beschleunigungsschaltkreise 1020 mit einem primären Beschleunigungsschaltkreis 1020, der über das E/A-Subsystem 622 mit der NIC 832 und dem Arbeitsspeicher 720 verbunden ist, und einem sekundären Beschleunigungsschaltkreis 1020 in Reihe geschaltet sein, der über einen primären Beschleunigungsschaltkreis 1020 mit der NIC 832 und dem Arbeitsspeicher 720 verbunden ist.
  • Nun auf 11 Bezug nehmend, wird eine veranschaulichende Ausführungsform des Beschleunigungseinschubs 1000 gezeigt. Wie oben besprochen, sind die Beschleunigungsschaltkreise 1020, der Kommunikationsschaltkreis 830 und der optische Datenanschluss 834 an der Oberseite 650 des gehäuselosen Leiterplattensubstrats 602 montiert. Wiederum sind die einzelnen Beschleunigungsschaltkreise 1020 und der Kommunikationsschaltkreis 830 auf der Oberseite 650 des gehäuselosen Leiterplattensubstrats 602 montiert, sodass keine zwei Wärme erzeugenden, elektrischen Komponenten einander begleiten, wie oben besprochen. Die Arbeitsspeichervorrichtungen 720 des Beschleunigungseinschubs 1000 sind auf der Unterseite 750 des gehäuselosen Leiterplattensubstrats 602 montiert, wie oben in Bezug auf den Einschub 600 besprochen. Obwohl an der Unterseite 750 montiert, sind die Arbeitsspeichervorrichtungen 720 kommunikativ über das E/A-Subsystem 622 (z. B. über Durchkontaktierungen) an die Beschleunigungsschaltkreise 1020 gekoppelt, die sich auf der Oberseite 650 befinden. Ferner kann jeder der Beschleunigungsschaltkreise 1020 einen Kühlkörper 1070 enthalten, der größer als ein herkömmlicher, in einem Server verwendeter Kühlkörper ist. Wie oben in Bezug auf die Kühlkörper 870 besprochen, können die Kühlkörper 1070 aufgrund der „freien“ Fläche, die dadurch bereitgestellt wird, dass sich die Arbeitsspeicherressourcen 720 auf der Unterseite 750 des gehäuselosen Leiterplattensubstrats 602 anstatt auf der Oberseite 650 befinden, größer als herkömmliche Kühlkörper sein.
  • Nun auf 12 Bezug nehmend, kann der Einschub 400 als ein Speichereinschub 1200 ausgeführt sein. Der Speichereinschub 1200 ist ausgelegt, Daten in einem zum Speichereinschub 1200 lokalen Datenspeicher 1250 zu speichern. Beispielsweise kann ein Recheneinschub 800 oder ein Beschleunigungseinschub 1000 während des Betriebs Daten im Datenspeicher 1250 des Speichereinschubs 1200 speichern und aus diesem abrufen. Der Speichereinschub 1200 enthält verschiedene Komponenten, die den Komponenten des Einschubs 400 und/oder des Recheneinschubs 800 ähnlich sind, die in 12 unter Verwendung der gleichen Bezugsziffern identifiziert wurden. Die oben in Bezug auf 6, 7 und 8 bereitgestellte Beschreibung derartiger Komponenten gilt für die entsprechenden Komponenten des Speichereinschubs 1200 und wird hierin aus Gründen der Klarheit der Beschreibung des Speichereinschubs 1200 nicht beschrieben.
  • Im veranschaulichenden Speichereinschub 1200 sind die physischen Ressourcen 620 als Speichersteuerungen 1220 ausgebildet. Obwohl in 12 nur zwei Speichersteuerungen 1220 gezeigt sind, sollte klar sein, dass der Speichereinschub 1200 in anderen Ausführungsformen zusätzliche Speichersteuerungen 1220 enthalten kann. Die Speichersteuerungen 1220 können als ein beliebiger Typ von Prozessor, Steuerung oder Steuerschaltkreis ausgebildet sein, der bzw. die fähig ist, die Speicherung und das Abrufen von Daten in den Datenspeicher 1250 auf Grundlage von über den Kommunikationsschaltkreis 830 empfangenen Anforderungen zu steuern. In der veranschaulichenden Ausführungsform sind die Speichersteuerungen 1220 als Prozessoren oder Steuerungen mit relativ niedriger Leistung ausgebildet. In einigen Ausführungsformen können die Speichersteuerungen 1220 zum Beispiel ausgelegt sein, mit einer Nennleistung von ungefähr 75 Watt zu arbeiten.
  • In einigen Ausführungsformen kann der Speichereinschub 1200 auch eine Steuerung-zu-Steuerung-Zwischenverbindung 1242 enthalten. Ähnlich wie die oben besprochene Ressource-zu-Ressource-Zwischenverbindung 624 des Einschubs 400 kann die Steuerung-zu-Steuerung-Zwischenverbindung 1242 als ein beliebiger Typ von Kommunikationszwischenverbindung ausgebildet sein, die fähig ist, Steuerung-zu-Steuerung-Kommunikationen zu ermöglichen. In der veranschaulichenden Ausführungsform ist die Steuerung-zu-Steuerung-Zwischenverbindung 1242 als eine Hochgeschwindigkeits-Prozessor-zu-Prozessor-Zwischenverbindung ausgebildet (z. B. schneller als das E/A-Teilsystem 622). Die Steuerung-zu-Steuerung-Zwischenverbindung 1242 kann zum Beispiel als QuickPath Interconnect (QPI), UltraPath Interconnect (UPI) oder eine andere Hochgeschwindigkeits-Punkt-zu-Punkt-Zwischenverbindung ausgebildet sein, die für Prozessor-zu-Prozessor-Kommunikationen zweckbestimmt ist.
  • Nun auf 13 Bezug nehmend, wird eine veranschaulichende Ausführungsform des Speichereinschubs 1200 gezeigt. In der veranschaulichenden Ausführungsform ist der Datenspeicher 1250 als eine Speichereinhausung 1252, die ausgelegt ist, eine oder mehrere Festkörperlaufwerke (SSDs) 1254 aufzunehmen, ausgebildet oder enthält eine solche Speichereinhausung. Hierzu enthält die Speichereinhausung 1252 eine Anzahl an Montageschlitzen 1256, von denen jeder ausgelegt ist, ein entsprechendes Festkörperlaufwerk 1254 aufzunehmen. Jeder der Montageschlitze 1256 enthält eine Anzahl an Laufwerksführungen 1258, die zusammenarbeiten, um eine Zugangsöffnung 1260 des entsprechenden Montageschlitzes 1256 zu definieren. Die Speichereinhausung 1252 ist so am gehäuselosen Leiterplattensubstrat 602 gesichert, dass die Zugangsöffnungen vom gehäuselosen Leiterplattensubstrat 602 abgewandt sind (d. h., zur Vorderseite dieses zeigen). Als solche sind die Festkörperlaufwerke 1254 zugänglich, während der Speichereinschub 1200 in einem entsprechenden Rack 204 montiert ist. Ein Festkörperlaufwerk 1254 kann beispielsweise aus einem Rack 240 (z. B. über einen Roboter) ausgelagert werden, während der Speichereinschub 1200 im entsprechenden Rack 240 montiert bleibt.
  • Die Speichereinhausung 1252 enthält veranschaulichend sechzehn Montageschlitze 1256 und kann sechzehn Festkörperlaufwerke 1254 montieren und unterbringen. Natürlich kann die Speichereinhausung 1252 in anderen Ausführungsformen ausgelegt sein, zusätzliche oder weniger Festkörperlaufwerke 1254 unterzubringen. Zusätzlich sind die Festkörperlaufwerke in der veranschaulichenden Ausführungsform vertikal in der Speichereinhausung 1252 montiert, aber können in anderen Ausführungsformen in einer unterschiedlichen Ausrichtung in der Speichereinhausung 1252 montiert sein. Jedes Festkörperlaufwerk 1254 kann als ein beliebiger Typ von Datenspeichervorrichtung ausgebildet sein, der Daten langfristig speichem kann. Hierzu können die Festkörperlaufwerke 1254 die oben besprochenen flüchtigen und nichtflüchtigen Arbeitsspeichervorrichtungen enthalten.
  • Wie in 13 gezeigt, sind die Speichersteuerungen 1220, der Kommunikationsschaltkreis 830 und der optische Datenanschluss 834 veranschaulichend an der Oberseite 650 des gehäuselosen Leiterplattensubstrats 602 montiert. Wiederum kann wie oben besprochen eine beliebige geeignete Befestigungs- oder Montagetechnologie verwendet werden, um die elektrischen Komponenten des Speichereinschubs 1200 am gehäuselosen Leiterplattensubstrat 602 zu montieren, einschließlich beispielsweise Sockel (z. B. Prozessorsockel), Halterungen, Klammern, gelötete Verbindungen und/oder andere Montage- oder Sicherungstechniken.
  • Wie oben besprochen sind die einzelnen Speichersteuerungen 1220 und der Kommunikationsschaltkreis 830 auf der Oberseite 650 des gehäuselosen Leiterplattensubstrats 602 montiert, sodass keine zwei Wärme erzeugenden, elektrischen Komponenten einander begleiten. Die Speichersteuerungen 1220 und der Kommunikationsschaltkreis 830 sind zum Beispiel an entsprechenden Positionen auf der Oberseite 650 des gehäuselosen Leiterplattensubstrats 602 montiert, sodass sich keine zwei dieser elektrischen Komponenten linear in einer Reihe zueinander entlang der Richtung des Luftstrompfads 608 befinden.
  • Die Arbeitsspeichervorrichtungen 720 des Speichereinschubs 1200 sind auf der Unterseite 750 des gehäuselosen Leiterplattensubstrats 602 montiert, wie oben in Bezug auf den Einschub 400 besprochen. Obwohl an der Unterseite 750 montiert, sind die Arbeitsspeichervorrichtungen 720 kommunikativ über das E/A-Subsystem 622 an die Speichersteuerungen 1220 gekoppelt, die sich auf der Oberseite 650 befinden. Wiederum, da das gehäuselose Leiterplattensubstrat 602 als eine doppelseitige Leiterplatte ausgebildet ist, können die Arbeitsspeichervorrichtungen 720 und die Speichersteuerungen 1220 kommunikativ durch eine oder mehrere Durchkontaktierungen, Anschlüsse oder andere Mechanismen gekoppelt sein, die durch das gehäuselose Leiterplattensubstrat 602 verlaufen. Jede der Speichersteuerungen 1220 enthält einen daran gesicherten Kühlkörper 1270. Wie oben besprochen, aufgrund der verbesserten thermalen Kühlungsmerkmale des gehäuselosen Leiterplattensubstrats 602 des Speichereinschubs 1200, enthält keiner der Kühlkörper 1270 daran befestigte Kühllüfter. Das heißt, jeder der Kühlkörper 1270 ist als ein lüfterloser Kühlkörper ausgebildet.
  • Nun auf 14 Bezug nehmend, kann der Einschub 400 als ein Arbeitsspeichereinschub 1400 ausgeführt sein. Der Speichereinschub 1400 ist optimiert oder anderweitig ausgelegt, anderen Einschüben 400 (z. B. den Recheneinschüben 800, den Beschleunigungseinschüben 1000 usw.) Zugriff auf einen zum Arbeitsspeichereinschub 1200 lokalen Arbeitsspeicherbestand (z. B. in zwei oder mehr Gruppen 1430, 1432 von Arbeitsspeichervorrichtungen 720) bereitzustellen. Während des Betriebs kann ein Recheneinschub 800 oder ein Beschleunigungseinschub 1000 beispielsweise entfernt unter Verwendung eines logischen Adressraums, der auf physische Adressen in den Arbeitsspeichergruppen 1430, 1432 abbildet, in eine oder mehrere der Arbeitsspeichergruppen 1430, 1432 des Arbeitsspeichereinschubs 1200 schreiben und/oder aus diesen lesen. Der Arbeitsspeichereinschub 1400 enthält verschiedene Komponenten, die den Komponenten des Einschubs 400 und/oder des Recheneinschubs 800 ähnlich sind, die in 14 unter Verwendung der gleichen Bezugsziffern identifiziert wurden. Die oben in Bezug auf 6, 7 und 8 bereitgestellte Beschreibung derartiger Komponenten gilt für die entsprechenden Komponenten des Arbeitsspeichereinschubs 1400 und wird hierin aus Gründen der Klarheit der Beschreibung des Arbeitsspeichereinschubs 1400 nicht wiederholt.
  • Im veranschaulichenden Arbeitsspeichereinschub 1400 sind die physischen Ressourcen 620 als Arbeitsspeichersteuerungen 1420 ausgebildet. Obwohl in 14 nur zwei Arbeitsspeichersteuerungen 1420 gezeigt sind, sollte klar sein, dass der Arbeitsspeichereinschub 1400 in anderen Ausführungsformen zusätzliche Arbeitsspeichersteuerungen 1420 enthalten kann. Die Arbeitsspeichersteuerungen 1420 können als ein beliebiger Typ von Prozessor, Steuerung oder Steuerschaltkreis ausgebildet sein, der bzw. die fähig ist, das Schreiben und Lesen von Daten in die Arbeitsspeichergruppen 1430, 1432 auf Grundlage von über den Kommunikationsschaltkreis 830 empfangenen Anforderungen zu steuern. In der veranschaulichenden Ausführungsform ist jede Arbeitsspeichersteuerung 1420 mit einer entsprechenden Arbeitsspeichergruppe 1430, 1432 verbunden, um in die Arbeitsspeichervorrichtungen 720 innerhalb der entsprechenden Arbeitsspeichergruppe 1430, 1432 zu schreiben und aus diesen zu lesen und alle Berechtigungen (z. B. Lesen, Schreiben usw.) geltend zu machen, die mit dem Einschub 400 verknüpft sind, der eine Anforderung an den Arbeitsspeichereinschub 1400 gesendet hat, einen Arbeitsspeicherzugriffvorgang (z. B. Lesen oder Schreiben) durchzuführen.
  • In einigen Ausführungsformen kann der Arbeitsspeichereinschub 1400 auch eine Steuerung-zu-Steuerung-Zwischenverbindung 1442 enthalten. Ähnlich wie die oben besprochene Ressource-zu-Ressource-Zwischenverbindung 624 des Einschubs 400 kann die Steuerung-zu-Steuerung-Zwischenverbindung 1442 als ein beliebiger Typ von Kommunikationszwischenverbindung ausgebildet sein, die fähig ist, Steuerung-zu-Steuerung-Kommunikationen zu ermöglichen. In der veranschaulichenden Ausführungsform ist die Steuerung-zu-Steuerung-Zwischenverbindung 1442 als eine Hochgeschwindigkeits-Prozessor-zu-Prozessor-Zwischenverbindung ausgebildet (z. B. schneller als das E/A-Teilsystem 622). Die Steuerung-zu-Steuerung-Zwischenverbindung 1442 kann zum Beispiel als QuickPath Interconnect (QPI), UltraPath Interconnect (UPI) oder eine andere Hochgeschwindigkeits-Punkt-zu-Punkt-Zwischenverbindung ausgebildet sein, die für Prozessor-zu-Prozessor-Kommunikationen zweckbestimmt ist. Als solche kann eine Arbeitsspeichersteuerung 1420 in einigen Ausführungsformen über die Steuerung-zu-Steuerung-Zwischenverbindung 1442 auf Arbeitsspeicher zugreifen, der sich in der Arbeitsspeichergruppe 1432 befindet, die mit einer anderen Arbeitsspeichersteuerung 1420 verknüpft ist. In einigen Ausführungsformen besteht eine skalierbare Arbeitsspeichersteuerung aus mehreren kleineren Arbeitsspeichersteuerungen, die hierin als „Chiplet“ bezeichnet werden, auf einem Arbeitsspeichereinschub (z. B. dem Arbeitsspeichereinschub 1400). Die Chiplets können miteinander verbunden sein (z. B. unter Verwendung von EMIB (Embedded Multi-Die Interconnect Bridge)). Die kombinierte Chiplet-Arbeitsspeichersteuerung kann auf eine relativ große Anzahl an Arbeitsspeichersteuerungen und E/A-Anschlüssen hochskalieren (z. B. auf bis zu 16 Arbeitsspeicherkanäle). In einigen Ausführungsformen können die Arbeitsspeichersteuerungen 1420 eine Arbeitsspeicherverschränkung implementieren (z. B. ist eine Arbeitsspeicheradresse auf die Arbeitsspeichergruppe 1430 abgebildet, die nächste Arbeitsspeicheradresse ist auf die Arbeitsspeichergruppe 1432 abgebildet und die dritte Adresse ist auf die Arbeitsspeichergruppe 1430 abgebildet usw.). Die Verschränkung kann innerhalb der Arbeitsspeichersteuerung 1420 verwaltet oder von CPU-Sockeln (z. B. des Recheneinschubs 800) über Netzwerkverbindungen mit den Arbeitsspeichergruppen 1430, 1432 hinweg verwaltet werden und kann die mit dem Durchführen von Arbeitsspeicherzugriffvorgängen assoziierte Latenzzeit im Vergleich zum Zugreifen auf fortlaufende Arbeitsspeicheradressen von der gleichen Arbeitsspeichervorrichtung verbessern.
  • Ferner kann der Arbeitsspeichereinschub 1400 in einigen Ausführungsformen unter Verwendung des Wellenleiteranschlusses 1480 über einen Wellenleiter mit einem oder mehreren anderen Einschüben 400 (z. B. im gleichen Rack 240 oder einem benachbarten Rack 240) verbunden sein. In der veranschaulichenden Ausführungsform sind die Wellenleiter 64-Millimeter-Wellenleiter, die 16 Rx-Leitungen (d. h. Empfangsleitungen) und 16 Tx-Leitungen (d. h. Sendeleitungen) bereitstellen. Jede Leitung ist in der veranschaulichenden Ausführungsform entweder 16 GHz oder 32 GHz. In anderen Ausführungsformen können die Frequenzen unterschiedlich sein. Die Verwendung eines Wellenleiters kann einen Zugriff mit hohem Durchsatz auf den Arbeitsspeicherbestand (z. B. die Arbeitsspeichergruppen 1430, 1432) auf einem anderen Einschub (z. B. einen Einschub 400 im gleichen Rack 240 wie der Arbeitsspeichereinschub 1400 oder einem diesem benachbarten Rack 240) bieten, ohne die Belastung des optischen Datenanschlusses 834 zu erhöhen.
  • Nun auf 15 Bezug nehmend kann ein System zum Ausführen einer oder mehrerer Arbeitslasten (z. B. Anwendungen) in Übereinstimmung mit dem Rechenzentrum 100 implementiert werden. In der veranschaulichenden Ausführungsform enthält das System 1510 einen Orchestratorserver 1520, der als ein verwalteter Knoten ausgebildet sein kann, der eine Rechenvorrichtung (z. B. einen Prozessor 820 auf einem Recheneinschub 800) umfasst, die Verwaltungssoftware (z. B. eine Cloud-Betriebsumgebung wie OpenStack) ausführt, die kommunikativ an mehrere Einschübe 400 gekoppelt ist, die eine große Anzahl an Recheneinschüben 1530 (die z. B. jeweils dem Recheneinschub 800 ähnlich sind), Arbeitsspeichereinschüben 1540 (die z. B. jeweils dem Arbeitsspeichereinschub 1400 ähnlich sind), Beschleunigungseinschüben 1550 (die z. B. jeweils dem Beschleunigungseinschub 1000 ähnlich sind) und Speichereinschüben 1560 (die z. B. jeweils dem Speichereinschub 1200 ähnlich sind) enthalten. Ein oder mehrere der Einschübe 1530, 1540, 1550, 1560 können in einen verwalteten Knoten 1570, zum Beispiel durch den Orchestratorserver 1520, gruppiert sein, um gemeinsam eine Arbeitslast (z. B. eine Anwendung 1532, die in einer virtuellen Maschine oder einem Container ausgeführt wird) auszuführen. Der verwaltete Knoten 1570 kann als eine Anordnung physischer Ressourcen 620, wie Prozessoren 820, Arbeitsspeicherressourcen 720, Beschleunigungsschaltkreise 1020 oder Datenspeicher 1250 vom gleichen oder von anderen Einschüben 400 ausgebildet sein. Ferner kann der verwaltete Knoten vom Orchestratorserver 1520 zu dem Zeitpunkt, zu dem eine Arbeitslast dem verwalteten Knoten zuzuweisen ist, oder zu einem anderen Zeitpunkt eingerichtet, definiert oder „hochgefahren“ werden und kann unabhängig davon existieren, ob derzeit dem verwalteten Knoten irgendwelche Arbeitslasten zugewiesen sind. In der veranschaulichenden Ausführungsform kann der Orchestratorserver 1520 den Einschüben 400 physische Ressourcen 620 selektiv zuordnen und/oder deren Zuordnung aufheben und/oder dem verwalteten Knoten 1570 einen oder mehrere Einschübe 400 als eine Funktion von Dienstqualitätszielen (QoS-Zielen) (z. B. eines Zieldurchsatzes, einer Latenzzeit, einer Zielanzahl von Anweisungen pro Sekunde usw.), die mit einer Dienstgütevereinbarung für die Arbeitslast (z. B. die Anwendung 1532) assoziiert sind, hinzufügen oder von diesem entfernen. Dadurch kann der Orchestratorserver 1520 Telemetriedaten empfangen, die auf Leistungsbedingungen (z. B. Durchsatz, Latenzzeit, Anweisungen pro Sekunde usw.) in jedem Einschub 400 des verwalteten Knotens 1570 hinweisen, und die Telemetriedaten mit den Dienstqualitätszielen vergleichen, um zu ermitteln, ob die Dienstqualitätsziele erfüllt sind. Der Orchestratorserver 1520 kann zusätzlich ermitteln, ob die Zuordnung einer oder mehrerer physischen Ressourcen zum verwalteten Knoten 1570 aufgehoben werden kann, während weiterhin die QoS-Ziele erfüllt werden, wodurch diese physischen Ressourcen zur Verwendung in einem anderen verwalteten Knoten freigegeben werden (um z. B. eine andere Arbeitslast auszuführen). Falls die QoS-Ziele derzeit nicht erfüllt werden, kann der Orchestratorserver 1520 alternativ ermitteln, zusätzliche physische Ressourcen dynamisch zuzuordnen, um bei der Ausführung der Arbeitslast (z. B. der Anwendung 1532) zu helfen, während die Arbeitslast ausgeführt wird. Gleichermaßen kann der Orchestratorserver 1520 ermitteln, die Zuordnung physischer Ressourcen dynamisch von einem verwalteten Knoten aufzuheben, falls der Orchestratorserver 1520 ermittelt, dass eine Aufhebung der Zuordnung der physischen Ressource dazu führen würde, dass QoS-Ziele weiterhin erreicht werden.
  • In einigen Ausführungsformen kann der Orchestratorserver 1520 zusätzlich Trends in der Ressourcennutzung der Arbeitslast (z. B. der Anwendung 1532) identifizieren, zum Beispiel durch Identifizieren von Ausführungsphasen (z. B. Zeitperioden, in denen unterschiedliche Operationen durchgeführt werden, die jeweils unterschiedliche Ressourcennutzungseigenschaften aufweisen) der Arbeitslast (z. B. der Anwendung 1532) und präventives Identifizieren von verfügbaren Ressourcen im Rechenzentrum 100 und Zuordnen dieser zum verwalteten Knoten 1570 (z. B. innerhalb einer vordefinierten Zeitperiode, ab dem Beginn der assoziierten Phase). In einigen Ausführungsformen kann der Orchestratorserver 1520 eine Leistung auf Grundlage von verschiedenen Latenzzeiten und eines Verteilungsschemas modellieren, um Arbeitslasten unter Recheneinschüben und anderen Ressourcen (z. B. Beschleunigungseinschüben, Arbeitsspeichereinschüben, Speichereinschüben) im Rechenzentrum 100 zu verteilen. Der Orchestratorserver 1520 kann zum Beispiel ein Modell einsetzen, das die Leistung von Ressourcen auf den Einschüben 400 (z. B. FPGA-Leistung, Arbeitsspeicherzugriffslatenz usw.) und die Leistung (z. B. Anhäufung, Latenz, Bandbreite) des Pfads durch das Netzwerk zur Ressource (z. B. FPGA) berücksichtigt. Als solcher kann der Orchestratorserver 1520 auf Grundlage der Gesamtlatenzzeit, die mit jeder möglichen, im Rechenzentrum 100 verfügbaren Ressource assoziiert ist, ermitteln, welche Ressource(n) mit welchen Arbeitslasten verwendet werden sollte(n) (z. B. die mit der Durchführung der Ressource selbst assoziierte Latenzzeit, zusätzlich zur Latenzzeit, die mit dem Pfad um das Netzwerk zwischen dem Recheneinschub, der die Arbeitslast ausführt, und dem Einschub 400, auf dem sich die Ressource befindet, assoziiert ist).
  • In einigen Ausführungsformen kann der Orchestratorserver 1520 unter Verwendung von von den Einschüben 400 gemeldeten Telemetriedaten (z. B. Temperaturen, Lüfterdrehzahlen usw.) eine Karte der Wärmeerzeugung im Rechenzentrum 100 erstellen und verwalteten Knoten Ressourcen als eine Funktion der Karte der Wärmeerzeugung und der vorhergesagten Wärmeerzeugung zuordnen, die mit unterschiedlichen Arbeitslasten assoziiert ist, um eine Zieltemperatur und Zielwärmeverteilung im Rechenzentrum 100 beizubehalten. Zusätzlich oder alternativ kann der Orchestratorserver 1520 in einigen Ausführungsformen empfangene Telemetriedaten in ein hierarchisches Modell organisieren, das auf eine Beziehung zwischen den verwalteten Knoten hinweist (z. B. eine räumliche Beziehung wie die physischen Positionen der Ressourcen der verwalteten Knoten innerhalb des Rechenzentrums 100 und/oder eine funktionale Beziehung, wie Gruppierungen der verwalteten Knoten durch die Kunden, für die die verwalteten Knoten Dienste bereitstellen, die Arten der von den verwalteten Knoten üblicherweise durchgeführten Funktionen, verwaltete Knoten, die üblicherweise Arbeitslasten untereinander verteilen oder austauschen, usw.). Auf Grundlage von Unterschieden in den physischen Positionen und Ressourcen in den verwalteten Knoten kann eine bestimmte Arbeitslast unterschiedliche Ressourcennutzungen über die Ressourcen verschiedener verwalteter Knoten hinweg zeigen (z. B. eine unterschiedliche interne Temperatur verursachen, einen unterschiedlichen Prozentsatz von Prozessor- oder Arbeitsspeicherkapazität verwenden). Der Orchestratorserver 1520 kann die Unterschiede auf Grundlage der im hierarchischen Modell gespeicherten Telemetriedaten ermitteln und die Unterschiede in eine Vorhersage von zukünftiger Ressourcennutzung einer Arbeitslast einbeziehen, falls die Arbeitslast von einem verwalteten Knoten einem anderen verwalteten Knoten neu zugewiesen wird, um die Ressourcennutzung im Rechenzentrum 100 genau auszugleichen. In einigen Ausführungsformen kann der Orchestratorserver 1520 Muster in Ressourcennutzungsphasen der Arbeitslasten identifizieren und die Muster verwenden, um eine zukünftige Ressourcennutzung der Arbeitslasten vorherzusagen.
  • Um die Rechenbelastung des Orchestratorservers 1520 und die Datentransferbelastung des Netzwerks zu reduzieren, kann der Orchestratorserver 1520 in einigen Ausführungsformen Selbsttestinformationen an die Einschübe 400 senden, um zu ermöglichen, dass jeder Einschub 400 lokal (z. B. auf dem Einschub 400) ermittelt, ob vom Einschub 400 generierte Telemetriedaten eine oder mehrere Bedingungen erfüllen (z. B. eine verfügbare Kapazität, die einen vordefinierten Schwellwert erfüllt, eine Temperatur, die einen vordefinierten Schwellwert erfüllt, usw.). Jeder Einschub 400 kann dann ein vereinfachtes Ergebnis (z. B. ja oder nein) an den Orchestratorserver 1520 zurückmelden, die der Orchestratorserver 1520 beim Ermitteln der Zuordnung von Ressourcen zu verwalteten Knoten einsetzen kann.
  • 16 zeigt eine Rechenplattform 1600, die unter Verwendung einer Verbindung 1630 auf Inhalte in Arbeitsspeicherpools 1650-0 bis 1650-M zugreifen (z. B. lesen oder schreiben) kann. Es ist anzumerken, dass Arbeitsspeicherpool 1650 auf irgendeinen oder alle der Arbeitsspeicherpools 1650-0 bis 1650-M verweisen kann. Die Rechenplattform 1600 kann Prozessoren 1602-0 bis 1602-N, wobei N eine ganze Zahl gleich 1 oder größer ist, eine Arbeitsspeichersteuerung 1604, einen Zwischenspeicher 1606 und einen Arbeitsspeicher 1608 enthalten oder auf diese zugreifen. In einigen Beispielen können die Prozessoren 1602-0 bis 1602-N eine beliebige Zentralverarbeitungseinheit (CPU), einen beliebigen Kern, eine beliebige Grafikverarbeitungseinheit (GPU), ein beliebiges feldprogrammierbares Gatearray (FPGA) oder einen beliebigen anwendungsspezifischen integrierten Schaltkreis (ASIC). Die Prozessoren 1602-0 bis N können ein Betriebssystem (OS), Dateisystem, Anwendungen oder virtualisierte Ausführungsumgebungen ausführen.
  • Eine virtualisierte Ausführungsumgebung kann zumindest eine virtuelle Maschine oder einen Container enthalten. Eine virtuelle Maschine (VM) kann Software sein, die ein Betriebssystem und eine oder mehrere Anwendungen ausführt. Eine VM kann durch eine Spezifikation, Konfigurationsdateien, eine virtuelle Plattendatei, eine Einstellungsdatei für nichtflüchtigen Arbeitsspeicher mit wahlfreiem Zugriff (NVRAM) und die Protokolldatei definiert sein und wird von den physischen Ressourcen einer Hostrechenplattform gestützt. Eine VM kann ein OS oder eine Anwendungsumgebung sein, die auf Software installiert ist, die dedizierte Hardware imitiert. Der Endbenutzer hat das gleiche Erlebnis auf einer virtuellen Maschine, wie er auf dedizierter Hardware haben würde. Spezialisierte Software, als Hypervisor bezeichnet, emuliert den PC-Client oder die CPU des Servers, Arbeitsspeicher, Festplatte, Netzwerk und andere Hardwareressourcen vollständig, was virtuellen Maschinen ermöglicht, die Ressourcen gemeinsam zu nutzen. Der Hypervisor kann mehrere virtuelle Hardwareplattformen emulieren, die voneinander isoliert sind, was virtuellen Maschinen ermöglicht, Linux® und Windows® Server-Betriebssysteme auf demselben zugrunde liegenden physischen Host auszuführen.
  • Ein Container kann ein Softwarepaket von Anwendungen, Konfigurationen und Abhängigkeiten sein, sodass die Anwendungen auf einer Rechenumgebung zu einer anderen zuverlässig laufen. Container können ein Betriebssystem gemeinsam nutzen, das auf der Serverplattform installiert ist, und als isolierte Prozesse laufen. Ein Container kann ein Softwarepaket sein, das alles beinhaltet, das die Software benötigt, um zu laufen, wie Systemwerkzeuge, Bibliotheken und Einstellungen. Container werden nicht wie herkömmliche Softwareprogramme installiert, was ihnen ermöglicht, von der anderen Software und dem Betriebssystem selbst isoliert zu sein. Die isolierte Natur von Containern bietet mehrere Vorteile. Erstens läuft die Software in einem Container in unterschiedlichen Umgebungen auf die gleiche Weise. Ein Container, der zum Beispiel PHP und MySQL enthält, kann auf sowohl einem Linux-Computer als auch einer Windows-Maschine identisch laufen. Zweitens bieten Container zusätzliche Sicherheit, da die Software das Hostbetriebssystem nicht beeinflusst. Während eine installierte Anwendung Systemeinstellungen ändern kann und Ressourcen modifizieren kann, wie die Windows-Registrierungsdatenbank, kann ein Container nur Einstellungen innerhalb des Containers modifizieren.
  • Beliebige der Prozessoren 1602-0 bis 1602-N können die Arbeitsspeichersteuerung 1604 verwenden, um auf Inhalte im Zwischenspeicher 1606, Arbeitsspeicher 1608 oder Arbeitsspeicherpool 1650 zuzugreifen. Der Zwischenspeicher 1606 kann für einen Prozessor dediziert sein oder unter Prozessoren gemeinsam genutzt werden. Der Zwischenspeicher 1606 kann ein beliebiger Typ von Zwischenspeicher sein, wie Ebene 1, Ebene 2, Ebene 3, ein Zwischenspeicher einer niedrigeren Ebene (LLC), ein flüchtiger naher Arbeitsspeicher, der unter Verwendung eines beliebigen, mit doppelter Datenrate nach JEDEC (DDR) kompatiblen Arbeitsspeicher und einer derartigen Schnittstelle zugänglich ist, oder ein beliebiger Typ von nichtflüchtigem oder persistenten Arbeitsspeicher. Der Arbeitsspeicher 1608 kann ein beliebiger Typ von flüchtigem, nichtflüchtigem oder persistentem Arbeitsspeicher sein. Nicht einschränkende Beispiele von flüchtigem, nichtflüchtigem und persistentem Arbeitsspeicher werden hierin bereitgestellt.
  • In einigen Beispielen kann die Arbeitsspeichersteuerung 1604 ein Austauschen von Inhalten verwalten, die im Zwischenspeicher 1606, Arbeitsspeicher 1608 und einem beliebigen Arbeitsspeicherpool 1650 gespeichert sind. Die Arbeitsspeichersteuerung 1604 kann unter Verwendung von Hardware und/oder von Prozessoren ausgeführter Software ausgebildet sein. Ein hardwaregesteuerter Austausch kann keinen Nachteil eines Änderns von Seitentabellen und Übersetzungspuffer-Shootdowns (TLB) bieten. Ein beliebiger Kern eines Prozessors kann einen TLB verwenden, der Übersetzungen von virtuellen Arbeitsspeicherseiten in physische Arbeitsspeicherseiten speichert. Wenn eine virtuelle Arbeitsspeicherseitenabbildung in einer Seitentabelle modifiziert wird oder wenn ein Hypervisor eine Abbildung einer Gastseite in einem virtuellen Arbeitsspeicher einer virtuellen Maschine aufhebt oder anderweitig modifiziert, wird der TLB für einen Verarbeitungskern entsprechend aktualisiert. In einigen Beispielen wird eine Unterbrechung verwendet, als eine TLB-Shootdownunterbrechung bekannt, die einen Zielprozessor anweist, eine softwaredefinierte Liste von virtuellen Arbeitsspeicherseiteneinträgen mit aufgehobenen Abbildungen zu prüfen und diese Einträge von ihren jeweiligen TLB zu entfernen. Die Zielprozessorkerne können den Eintrag mit aufgehobener Abbildung aus ihren jeweiligen TLB-Tabellen entfernen und ihren Abschluss dem initiierenden Prozessor des TLB-Shootdowns signalisieren.
  • In einigen Ausführungsformen kann ein softwaregesteuerter Austausch von einem beliebigen Prozessor (z. B. einem OS oder Treiber) durchgeführt werden, um im Zwischenspeicher 1606, Arbeitsspeicher 1608 und einem beliebigen Arbeitsspeicherpool 1650 gespeicherte Inhalte zu verwalten.
  • Unter Bezugnahme auf 17 kann die Arbeitsspeichersteuerung 1604 Zugriffsmetadaten für verschiedene Adressen und einen Positionsidentifikator (Tag) beim Ermitteln berücksichtigen, ob Inhalte vom Zwischenspeicher 1606 oder Arbeitsspeicher 1608 in einen beliebigen Arbeitsspeicherpool 1650 auszutauschen sind. Falls beispielsweise Inhalte, die mit mehreren Adressen assoziiert sind, in einem Arbeitsspeicherbereich zu speichern sind und dadurch einen Arbeitsspeicherbereich gemeinsam nutzen, kann die Anzahl von Zugriffen auf eine bestimmte Adresse beim Ermitteln berücksichtigt werden, ob die Inhalte im Zwischenspeicher 1606 oder Arbeitsspeicher 1608 oder im Arbeitsspeicherpool 1650 zu speichern sind. Der Arbeitsspeicherpool 1650 kann eine höhere Inhaltszugriffslatenzzeit als die des Zwischenspeichers 1606 oder Arbeitsspeichers 1608 bieten.
  • In einigen Beispielen kann die Arbeitsspeichersteuerung 1604 ein Austauschen und Speichern von Inhalten zwischen dem Zwischenspeicher 1606 und dem Arbeitsspeicher 1608, zwischen dem Zwischenspeicher 1606 und dem Arbeitsspeicherpool 1650 (egal, ob ein einzelner oder mehrere Server) oder zwischen dem Arbeitsspeicher 1608 und dem Arbeitsspeicherpool 1650 verwalten. Anders ausgedrückt können beliebige Operationen, die in Bezug auf ein Verwalten einer Inhaltsmigration oder Arbeitsspeicherzuordnung im Zwischenspeicher 1606 und Arbeitsspeicher 1608 und einem beliebigen Arbeitsspeicherpool 1650 beschrieben sind, zwischen beliebigen des Zwischenspeichers 1606, Arbeitsspeichers 1608 und Arbeitsspeicherpools 1650 stattfinden.
  • In einigen Ausführungsformen ist der Arbeitsspeicherpool 1650 ein Server und wird von mehreren Prozessoren 1602-0 bis 1602-N gemeinsam genutzt und der Arbeitsspeicher 1608 kann als ein Zwischenspeicher für Inhalte in Arbeitsspeichern des Arbeitsspeicherpools 1650 verwendet werden. Darüber hinaus oder alternativ kann der Zwischenspeicher 1606 als ein Zwischenspeicher für Inhalte in Arbeitsspeichern des Arbeitsspeicherpools 1650 verwendet werden.
  • Einige adressierbare Bereiche des Arbeitsspeichers 1608 können als lokaler Arbeitsspeicher für Prozessoren 1602-0 bis 1602-N verwendet werden und einige adressierbare Bereiche des Arbeitsspeichers 1608 können als ein Zwischenspeicher für entweder inklusives oder exklusives Zwischenspeichern von Inhalten in Verbindung mit einem Arbeitsspeicherpool verwendet werden.
  • In einigen Beispielen kann ein beliebiger Arbeitsspeicher innerhalb des Arbeitsspeicherpools 1650 einen beliebigen Typ von flüchtigem oder nichtflüchtigem Arbeitsspeicher enthalten. Typen von Arbeitsspeicher enthalten unter anderem Arbeitsspeicher mit wahlfreiem Zugriff (RAM), dynamischen RAM (D-RAM), SDRAM mit doppelter Datenrate (DDR), SRAM, T-RAM oder Z-RAM. Ein Beispiel von flüchtigem Arbeitsspeicher enthält DRAM oder irgendeine Variante wie SDRAM. Ein Arbeitsspeicherteilsystem, wie es hierin beschrieben ist, kann mit einer Anzahl an Arbeitsspeichertechnologien kompatibel sein, wie DDR4 (DDR-Version 4, anfängliche Spezifikation im September 2012 von JEDEC veröffentlicht), LPDDR4 (NIEDRIGENERGIE-VERSION 4 MIT DOPPELTER DATENRATE (LPDDR), JESD209-4, ursprünglich von JEDEC im August 2014 veröffentlicht), WIO2 (Breit-E/A 2 (WideoIO2), JESD229-2, ursprünglich von JEDEC im August 2014 veröffentlicht), HBM (ARBEITSSPEICHER-DRAM MIT HOHER BANDBREITE, JESD235, ursprünglich von JEDEC im Oktober 2013 veröffentlicht), DDR5 (DDR-Version 5, derzeit im Gespräch durch JEDEC), LPDDR5 (LPDDR-Version 5, derzeit im Gespräch durch JEDEC), HBM2 (HBM-Version 2, derzeit im Gespräch durch JEDEC) und/oder andere und Technologien, die auf Derivaten oder Erweiterungen dieser Spezifikationen basieren.
  • In einigen Beispielen kann der Arbeitsspeicher nichtflüchtige Typen von Arbeitsspeicher enthalten, der blockadressierbar ist, wie zum Beispiel für NAND- oder NOR-Technologien. Deshalb kann der Arbeitsspeicher auch eine zukünftige Generation von nichtflüchtigem Arbeitsspeicher enthalten, wie einen 3-dimensionalen Koppelpunktarbeitsspeicher (3D XPoint™, der kommerziell von Intel Corporation erhältlich ist), Samsung Z-NAND oder andere byteadressierbare nichtflüchtige Typen von Arbeitsspeicher. Nach einigen Beispielen kann Arbeitsspeicher Typen von nichtflüchtigem Arbeitsspeicher enthalten, die Chalkogenglas, NAND-Flashspeicher mit mehreren Schwellenpegeln, NOR-Flashspeicher, Phasenwechselspeicher (PCM) mit einem oder mehreren Pegeln, einen resistiven Arbeitsspeicher, Nanodrahtspeicher, FeTRAM, MRAM, der Memristortechnologie einbindet, oder STT-MRAM oder eine beliebige Kombination irgendeines von Obigem oder einen anderen Arbeitsspeicher.
  • Verschiedene Ausführungsformen können den Systemhauptarbeitsspeicher 1608 mit zumindest zwei Ebenen an Arbeitsspeicher („2LM“) verwenden, der zwischengespeicherte Teilmengen von Systemplattenspeicher oder Speicher auf SSD-Ebene enthält (zusätzlich zum Beispiel zu Laufzeitdaten). Dieser Hauptarbeitsspeicher enthält eine erste Ebene (die hierin alternativ als „naher Arbeitsspeicher“ bezeichnet wird), die einen kleineren, schnelleren Arbeitsspeicher enthält, der aus beispielsweise DRAM oder anderem flüchtigen Arbeitsspeicher gebildet ist; und eine zweite Ebene (die hierin alternativ als „entfernter Arbeitsspeicher“ bezeichnet wird), die größeren und langsameren (in Bezug auf den nahen Arbeitsspeicher) flüchtigen Arbeitsspeicher (z. B. DRAM) oder nichtflüchtigen Arbeitsspeicher (z. B. Flashspeicher oder byteadressierbaren nichtflüchtigen Arbeitsspeicher (z. B. Intel Optane® oder Samsung Z-NAND®)) enthält. Der entfernte Arbeitsspeicher wird dem Hostbetriebssystem (OS) als „Hauptarbeitsspeicher“ präsentiert, während der nahe Arbeitsspeicher ein Zwischenspeicher für den entfernten Arbeitsspeicher ist, der für das OS transparent ist, wodurch die unten beschriebenen Ausführungsformen als gleich wie Hauptarbeitsspeicherlösungen nach dem Stand der Technik erscheinend vorgelegt werden. Die Verwaltung des Arbeitsspeichers mit zwei Ebenen kann durch eine Kombination von Logik und Modulen erfolgen, die über die Host-Zentralverarbeitungseinheit (CPU) ausgeführt werden. Der nahe Arbeitsspeicher kann für effiziente Verarbeitung über Mittel mit hoher Bandbreite und niedriger Latenz an die Hostsystem-CPU gekoppelt sein. Der entfernte Arbeitsspeicher kann über Mittel mit niedriger Bandbreite und hoher Latenz (im Vergleich zu dem des nahen Arbeitsspeichers) an die CPU gekoppelt sein.
  • Beispielsweise können der Zwischenspeicher 1606, Arbeitsspeicher 1608 und Arbeitsspeicherpool 1650 nach einigen Ausführungsformen schlank zugewiesen werden, sodass Arbeitsspeicherplatz (z. B. adressierbarer Arbeitsspeicherplatz), der einem Prozessor für eine beliebige Verwendung (z. B. eine bestimmte Anwendung, virtuelle Umgebung oder beliebige andere Verwendungen) kleiner ist, als er als zuzuordnend angezeigt wird. In einigen Beispielen wird der einem Prozessor für eine bestimmte Verwendung zuzuordnende Arbeitsspeicher als „schlank zugewiesen“ angesehen. In einigen Beispielen werden Arbeitsspeicherbereiche im Pool 1650 zugeordnet, wenn Inhalte aus dem Zwischenspeicher 1606 von einem Zwischenspeicher (z. B. dem Zwischenspeicher 1606 oder dem Arbeitsspeicher 1608) in den Arbeitsspeicherpool 1650 geschrieben werden oder mit anderen Inhalten im Arbeitsspeicherpool 1650 ausgetauscht werden. Ein Beispiel einer Austauschoperation wird hierin beschrieben.
  • Verschiedene Ausführungsformen sehen eine Zuordnung eines Bereichs des Zwischenspeichers 1606 oder Arbeitsspeichers 1608 (z. B. eine Zwischenspeicherleitung oder ein anderer bemessener Bereich) zur Verwendung durch Inhalte in einem von mehreren adressierbaren Arbeitsspeicherbereichen und einen Code zum Identifizieren vor, ob Inhalte, die mit einem adressierbaren Arbeitsspeicherbereich assoziiert sind, im Zwischenspeicher 1606 (oder Arbeitsspeicher 1608) oder in einer adressierbaren Arbeitsspeicherposition des Arbeitsspeicherpools 1650-0 bis 1650-M gespeichert sind, wobei M eine ganze Zahl ist. Beispielsweise kann eine in Bezug auf 17 beschriebene Tabelle verwendet werden, um eine Zwischenspeicherleitungsadresse mit einem Tag und einem Zugriffsindikator zu assoziieren. Die Tabelle kann als Metadaten im Zwischenspeicher 1606 oder im Arbeitsspeicher 1608 gespeichert sein.
  • Auf 17 Bezug nehmend kann ein Tag einen Code identifizieren, der eine Position einer Adresse im Zwischenspeicher 1606 oder Arbeitsspeicher 1608 oder im gemeinsam genutzten gepoolten Arbeitsspeicher 1650 anzeigt, ob die Zwischenspeicherleitung beschrieben (geschrieben) wurde, ob Inhalte der Zwischenspeicherleitung gültig sind und einen Zugriffsindikator. Direkt abgebildetes Zwischenspeichern kann verwendet werden, wobei Inhalte, die mit Adressbereichen assoziiert sind, in die gleiche Gruppe abbilden. Ein Zugriffsindikator kann eine Anzahl von Malen anzeigen, für die über eine Zeitspanne hinweg auf Inhalte, die mit einer Adresse im Zwischenspeicher assoziiert sind, zugegriffen wurde (z. B. gelesen oder beschrieben wurde). Anders ausgedrückt kann eine Hitze oder Kälte von Daten im Zwischenspeicher durch den Zugriffsindikator gemessen werden und wie hierin beschrieben kann zum Entfernen oder Austauschen von Daten in den Zwischenspeicher 1606, Arbeitsspeicher 1608 oder in gemeinsam genutzten gepoolten Arbeitsspeicher 1650 verwendet werden. Daten, auf die häufiger zugegriffen wird, werden allgemein im Zwischenspeicher 1606 oder Arbeitsspeicher 1608 gespeichert, um eine Latenz des Datenzugriffs zu reduzieren.
  • In einigen Beispielen, falls ein 2-Bit-Positionscode verwendet wird, könnten Inhalte von maximal drei spezifischen Adressen an einer Zwischenspeicherleitungsposition im Zwischenspeicher 1606 oder Arbeitsspeicher 1608 residieren. Falls ein 2-Bit-Positionscode verwendet wird und Inhalte von drei Adressenarbeitsspeicherpositionen A, B und C in einem bestimmten Bereich des Zwischenspeichers 1606 oder Arbeitsspeichers 1608 gespeichert werden, dann kann ein Code 00 anzeigen, dass an einer Arbeitsspeicherposition (z. B. A) beginnende Inhalte im Zwischenspeicher 1606 oder Arbeitsspeicher 1608 gespeichert sind, ein Code 01 kann anzeigen, dass an einer Arbeitsspeicherposition (z. B. B oder C) beginnende Inhalte im Arbeitsspeicherpool 1650 gespeichert sind, und ein Code 10 kann anzeigen, dass an einer Arbeitsspeicherposition (z. B. C oder B) beginnende Inhalte im Arbeitsspeicherpool 1650 gespeichert sind.
  • Falls eine Zwischenspeicherleitung (z. B. 64 Bytes) von Inhalten, die bei Adressen A, B und C beginnen, gemeinsam genutzt wird, und die Zwischenspeicherleitung mit Inhalten von Adresse A belegt ist, aber ein Prozessor Inhalte von Adresse B anfordert, kann eine Austauschoperation stattfinden. Beispielsweise führt die Arbeitsspeichersteuerung 1604 eine Austauschoperation durch, um zu veranlassen, dass die Inhalte von Adresse A aus dem Zwischenspeicher 1606 oder Arbeitsspeicher 1608 entfernt werden, und falls sie modifiziert sind, an eine Arbeitsspeicheradresse im Arbeitsspeicherpool 1650 geschrieben werden. Inhalte von Adresse B können aus dem Arbeitsspeicherpool 1650 gelesen und in die Zwischenspeicherleitung von Zwischenspeicher 1606 geschrieben werden. Andere Granularitäten oder Größen als 64 Bytes können verwendet werden, wie 128 Bytes, 256 Bytes oder andere Mehrfache von 64 Bytes.
  • In einigen Ausführungsformen kann die Arbeitsspeichersteuerung 1604 ausgelegt sein, eine schlanke Zuweisung durch Anwenden entweder von inklusiven oder exklusiven Zwischenspeicherkonfigurationen von Inhalten im Zwischenspeicher 1606, Arbeitsspeicher 1608 und beliebiger Backups im Arbeitsspeicherpool 1650 bereitzustellen. Eine inklusive Zwischenspeicherkonfiguration kann enthalten, dass ein Eintrag in einem Zwischenspeicher auch in einem Arbeitsspeicherpool 1650 gespeichert wird. Eine exklusive Zwischenspeicherkonfiguration kann einen Eintrag in entweder einem Zwischenspeicher oder in einem Arbeitsspeicherpool 1650, aber nicht in beidem bereitstellen.
  • Der Arbeitsspeicherpool 1650 kann einen selektiven Zugriff auf Arbeitsspeicher in Form von doppelreihigen Arbeitsspeichermodulen (DIMMs) bereitstellen. DIMMs können verschiedene Typen von Arbeitsspeicher enthalten, einschließlich von flüchtigen oder nichtflüchtigen Arbeitsspeichertypen. Beispielsweise können in einem Server registrierte DIMM (RDIMM) verwendet werden und ein Puffern von Befehlsadressen, Steuerung, und Takt bereitstellen, bevor die Signale den Arbeitsspeichervorrichtungen bereitgestellt werden. Lastreduzierte DIMM (LRDIMM) verwenden einen Puffer für einen Datenbus, auch um ein Laden vieler Ränge von Arbeitsspeichervorrichtungen zu handhaben. Nicht registrierte DIMM (U-DIMMs) sind nicht gepufferte DIMMs, die keinen separaten Puffer aufweisen, bevor eine Befehlsadresse oder Daten und Kommunikation direkt mit Arbeitsspeichervorrichtungen stattfinden können. Andere Arten von Arbeitsspeichervorrichtungen können verwendet werden. Es ist anzumerken, dass der Arbeitsspeicherpool 1650 kein einzelner Knoten sein muss, aber eine Gruppe von verteilten Arbeitsspeicherpools sein kann, wobei ein zusammengesetzter Arbeitsspeicherpool aus Arbeitsspeicherbereichen mit unterschiedlichen und disaggregierten Arbeitsspeichervorrichtungen gebildet wird, die mit der Schnittstelle 1612 verbunden sind. Beispielsweise können Arbeitsspeicherpools unter Verwendung von hyperkonvergierten Infrastrukturservern (HCI-Servern) oder in einer Gruppe von einem oder mehreren Servern durchgeführt werden, die einen gemeinsam genutzten, verteilten Arbeitsspeicherpool repräsentieren.
  • Eine gemeinsam genutzte Arbeitsspeicherpoolsteuerung 1652 kann ausgelegt sein, Arbeitsspeichervorrichtungen im Arbeitsspeicherpool 1652 Arbeitsspeicherzugriffe (z. B. Lese- oder Schreibvorgänge) bereitzustellen. In einigen Ausführungsformen kann die gemeinsam genutzte Arbeitsspeicherpoolsteuerung 1652 eine Adressenübersetzungseinheit 1654 verwenden, um eine Adresse, die von einem bestimmten Prozessor empfangen wurde, und einen Positionscode in eine physische Arbeitsspeicheradresse in einem Arbeitsspeicher des Pools 1650 zu übersetzen. Falls die Prozessoren 1602-0 und 1602-1 beide beispielsweise die gleiche physische Arbeitsspeicheradresse D und einen Positionscode bereitstellen, kann die Adressenübersetzungseinheit 1654 die Adresse D vom Prozessor 1602-0 in eine physische Adresse und die Adresse D vom Prozessor 1602-1 in eine andere physische Adresse übersetzen.
  • Ein Orchestratorsystem 1670, das kommunikativ an den Arbeitsspeicherpool 1650 gekoppelt ist, kann die Adressenübersetzungseinheit 1654 von einem beliebigen Arbeitsspeicherpool 1650 auslegen, eine von einer bestimmten CPU bereitgestellte Adresse und einen Positionscode mit einer physischen Adresse in einer Arbeitsspeichervorrichtung zu assoziieren. Wenn eine CPU eine Arbeitsspeichertransaktion in den Arbeitsspeicherpool 1650 ausgibt, stellt sie auch einen CPU-Identifikator und einen Positionscode bereit, sodass, falls mehrere CPUs die gleiche Adresse bereitstellen, die Adressenübersetzungseinheit 1654 die richtige physische Adresse identifizieren, die zu verwenden ist, um eine Arbeitsspeichertransaktion von einer CPU abzuschließen. In einigen Beispielen kann die Adressenübersetzungseinheit 1654 als Teil der Rechenplattform 1600 implementiert sein und kann physische Adressenübersetzungen für einen beliebigen Arbeitsspeicher-Poolserver 1650 ausgeben. Es ist anzumerken, dass sich irgendeine Bezugnahme auf eine CPU auf einen beliebigen Typ von Prozessor beziehen kann.
  • Es ist anzumerken, dass Prozessoren zum gemeinsamen Nutzen eines beliebigen Arbeitsspeicherpools 1650 hinzugefügt oder von diesem entfernt werden können. Und es kann mehr als ein DDR-Arbeitsspeicherkanal pro Prozessor und pro Arbeitsspeicherpool 1650 bereitgestellt werden.
  • Der Arbeitsspeicherpool 1650 kann auch eines oder mehrere enthalten von: einem Speicherpool (nichtflüchtigem Arbeitsspeicherpool), Beschleunigern, prozessorausgeführter Software, einer neuronalen Engine, einer beliebigen Vorrichtung sowie anderer hierin bereitgestellter Beispiele, und so weiter. Der Arbeitsspeicherpool 1650 kann zum Beispiel Prozessoren bereitstellen, die hierin beschriebene Fähigkeiten bereitstellen. Prozessoren können zum Beispiel eine Komprimierungsfähigkeit (DC-Fähigkeit), Kryptografiedienste wie Verschlüsselung mit öffentlichem Schlüssel (PKE), einen Chiffre, Hash-/ Authentifizierungfähigkeiten, Entschlüsselung oder andere Fähigkeiten oder Dienste bereitstellen. In einigen Ausführungsformen kann die Zielrechenplattform 150 zusätzlich oder alternativ einen einzelnen oder Mehrkernprozessor, eine Grafikverarbeitungseinheit, eine logische Ausführungseinheit, Zwischenspeicher auf einer einzelnen oder mehreren Ebenen, funktionale Einheiten, die verwendbar sind, um Programme oder Threads unabhängig auszuführen, anwendungsspezifische integrierte Schaltkreise (ASICs), Prozessoren für neuronale Netze (NNPs), programmierbare Steuerlogik und programmierbare Verarbeitungselemente wie feldprogrammierbare Gatearrays (FPGAs) enthalten. Die Zielrechenplattform 150 kann mehrere neuronale Netze, CPUs, Prozessorkerne, Universal-Grafikverarbeitungseinheiten bereitstellen, oder Grafikverarbeitungseinheiten können zur Verwendung durch Modelle für künstliche Intelligenz (KI) oder maschinelles Lernen (ML) verfügbar gemacht werden. Beispielsweise kann das AI-Modell beliebige oder eine Kombination von Folgendem enthalten: einem Schema für bestärkendes Lernen, Q-Lernschema, tiefes Q-Lernen oder Asynchronous Advantage Actor-Critic (A3C), einem kombinatorischen neuronalen Netz, einem rekurrenten kombinatorischen neuronalen Netz oder einem anderen AI- oder ML-Modell. Mehrere neuronale Netze, Prozessorkerne oder Grafikverarbeitungseinheiten können zur Verwendung durch AI- oder ML-Modelle verfügbar gemacht werden. Prozessoren können ein Rechnen im nahen Arbeitsspeicher durchführen, um Daten lokal zur Speicherung der Daten zu verarbeiten, und verarbeitete Daten oder Ergebnisse einem entfernten oder lokalen Arbeitsspeicher oder Prozessor bereitstellen.
  • Die Verbindung 1630 kann Kommunikationen bereitstellen, die mit einem oder mehreren von Folgendem kompatibel oder konform sind: Ethernet (IEEE 802.3), entfernter Speicherdirektzugriff (RDMA), InfiniBand, Internet Wide Area RDMA-Protokoll (iWARP), Quick UDP Internet Connections (QUIC), RDMA over Converged Ethernet (RoCE), Peripheral Component Interconnect (PCIe), Memory-Mapped-I/O(MMIO)-Lesevorgänge/MMIO-Schreibvorgänge, Intel QuickPath Interconnect (QPI), Intel Ultra Path Interconnect (UPI), Intel On-Chip System Fabric (IOSF), Omnipath, Compute Express Link (CXL), HyperTransport, Hochgeschwindigkeits-Fabric, NVLink, Advanced-Microcontroller-Bus-Architecture(AMBA)-Zwischenverbindung, OpenCAPI, Gen-Z, Cache Coherent Interconnect for Accelerators (CCIX), 3GPP Long Term Evolution (LTE) (4G), 3GPP 5G, eine beliebige Spezifikation mit Lade-Speicher-Semantik und Variationen davon. Daten können unter Verwendung eines Protokolls wie NVMe over Fabrics (NVMe-oF) oder NVMe in virtualisierte Speicherknoten kopiert oder gespeichert werden. Die Verbindung 1630 kann Switches, Router, Busse, Zwischenverbindungen enthalten, das Internet oder ein privates Netzwerk verwenden.
  • In einigen Beispielen können Datenbewegungseinheiten (z. B. eine Engine für direkten Speicherzugriff (DMA)), die direkte Kopiervorgänge oder Schreibvorgänge durchführen, von einem beliebigen Prozessor verwendet werden, um Inhalte zwischen dem Zwischenspeicher 1606, dem Arbeitsspeicher 1608 und dem Arbeitsspeicherpool 1650 zu kopieren und Lade-/Speicheroperationen durchzuführen.
  • Die Rechenplattform 1600 und die Arbeitsspeicherpoolserver 1650 können Befehle unter Verwendung von verschlüsselten Kommunikationen zur Sicherheit und Zugriffssteuerung senden und empfangen. Der Orchestrator 1670 kann Schlüssel verwalten, die zur Verschlüsselung und Entschlüsselung für eine Sendung und einen Empfang verwendet werden.
  • 18 zeigt ein Beispiel einer Adressenübersetzung, um einen gleichen Adressenwert von unterschiedlichen Prozessoren zu unterscheiden. Die Adressenübersetzung kann zumindest von einer Rechenplattform, einem Prozessor oder einer Arbeitsspeicherpoolsteuerung durchgeführt werden. In diesem Beispiel kann eine Arbeitsspeicherpoolsteuerung, die mit erteilten Arbeitsspeichertransaktionen in Arbeitsspeichervorrichtungen (z. B. DIMMs) assoziiert ist, eine Adressenübersetzung für Adressen anwenden, die von CPUs empfangen wurden, die die Arbeitsspeichervorrichtungen im Arbeitsspeicherpool gemeinsam nutzen. Ein Orchestratorsystem kann eine Adressenübersetzung einer Adresse von einer bestimmten CPU in eine physische Adresse in einer Arbeitsspeichervorrichtung im Pool so konfigurieren, dass eine gleiche Adresse von unterschiedlichen CPUs auf eindeutige Adressen im Pool abgebildet wird. Beispielsweise kann eine Adresse A von den CPUs 0 und 1 auf Adressen L und N abgebildet werden, die nicht überlappen. In diesem Beispiel stellt eine Poolsteuerung für einen Lesezugriff, bei dem CPUO und CPU1 eine gleiche Adresse A bereitstellen, unterschiedliche physische Adressen zum Datenabruf bereit. Adressen können über mehrere Kanäle in einem Poolserver oder mehreren Poolservern zugeordnet werden. In einigen Beispielen sind Adressen in einem Arbeitsspeicherpool als Reaktion auf eine Schreiboperation zugeordnet.
  • Beispielsweise kann ein Arbeitsspeicherpool mit einer Größe von 1 TB mit einer Blockgröße von 1 GB in 1024 Blöcke aufgeteilt werden. In einigen Beispielen kann eine bestimmte CPU eine zugehörige Tabelle mit Adresseinträgen der Anzahl von Blöcken (z. B. 1024) aufweisen, die auf physische Adressen in einem Arbeitsspeicherpool abgebildet sind. Andere Anzahlen von Einträgen können verwendet werden.
  • In einigen Beispielen kann die Adressenübersetzung einer Adresse auf derselben Vorrichtung oder demselben Mikrochip erfolgen, wie die bzw. der, die bzw. der verwendet wird, um den Arbeitsspeichervorrichtungen des Arbeitsspeicherpools eine Konnektivität eines Rechensystems bereitzustellen, um eine Möglichkeit einer Blockierung zu reduzieren, falls mehrere CPUs gleichzeitig eine Adressenübersetzung anfordern.
  • Ein Verschlüsselungsschema kann verwendet werden, um Arbeitsspeichertransaktionen, die von einer beliebigen CPU empfangen wurden, unter Verwendung eines angegebenen Entschlüsselungsschemas zu entschlüsseln. Für ein beliebiges CPU- und Adressenpaar, bei denen identifiziert wird, dass ihnen erlaubt ist, auf einen Pool zuzugreifen, kann eine physische Adresse im Pool identifiziert werden. Beispielsweise repräsentiert die folgende Tabelle eine mögliche Konfiguration, die von einer Poolsteuerung verwendet werden kann, um ein Entschlüsselungsschema zu ermitteln, das an einer Arbeitsspeichertransaktion zu verwenden ist, zu ermitteln, ob eine CPU und ihre zugehörige Adresse auf einen Arbeitsspeicherpool zugreifen können und welche Adresse im Arbeitsspeicherpool für die Arbeitsspeichertransaktion zu verwenden ist.
    CPU-Identifikator Empfangene Adresse Berechtigung zum Zugriff auf Pool Verschlüsselungsschema Umgewandelte Adresse im Pool
    0 0X00 FF0A Ja 0X00 0000
    0 0X00 1111 Nein
    1 0X00 1111 Ja 0X00 1F00
    ... ... ... ... ...
    X-1 0X00 FF0A Ja 0X00 1100
    X 0X00 FF0A Ja 0X00 1111
  • 19 zeigt eine beispielhafte Operation. In diesem Beispiel sind für Adresse A angeforderte Daten in einem lokalen DDR-angebundenen Arbeitsspeicher gespeichert. Dieses Beispiel veranschaulicht eine Verwendung eines Eintrags, der mit Adresse A assoziiert ist, von CPU0, um eine Position von Daten zu ermitteln und einen Zugriffsindikator (Heiß/kalt-Indikator) zu aktualisieren. Bei 1902 fordert CPU0 Inhalte an, die mit Adresse A assoziiert sind (Laden von „A“ in ein Register). Bei 1904 wird ein Metadateneintrag geprüft, um zu ermitteln, ob Daten für die Adresse A gültig sind und ob Daten im DDR-angebundenen Arbeitsspeicher (Zwischenspeicher) gespeichert sind. Bei 1906 erfolgt eine Aktualisierung eines Zugriffsindikators (z. B. Heiß/kalt-Indikator) für Adresse A von CPU0, um anzuzeigen, dass aufgrund eines jüngsten Zugriffs auf Adresse A zugegriffen wurde (sie z. B. heißer wurde). Bei 1908 werden Daten der CPU0 vom DDR-angebundenen Arbeitsspeicher bereitgestellt. Der Betrieb von CPU1 in Bezug auf einen gemeinsam genutzten Arbeitsspeicherpoolserver kann einer ähnlichen Sequenz für im Arbeitsspeicher gespeicherte Daten folgen.
  • 20 zeigt eine beispielhafte Operation. In diesem Beispiel sind für Adresse A angeforderte Daten nicht in einem lokalen DDR-angebundenen Arbeitsspeicher, sondern einem Arbeitsspeicherpool gespeichert. Bei 2002 gibt CPU0 eine Anforderung nach Inhalten, die mit Adresse A beginnen, in ein lokales Register aus (Laden adr:A lokales Register). Bei 2004 wird ein Tag geprüft, um zu ermitteln, ob Daten für die Adresse A gültig sind und ob Daten im DDR-angebundenen Arbeitsspeicher (Zwischenspeicher) oder in einem Arbeitsspeicherpool gespeichert sind. In diesem Beispiel nutzen Daten für Adressen A und B eine Zwischenspeicherleitungsadresse oder einen Zwischenspeicherleitungsschlitz gemeinsam. Daten für Adresse B befinden sich derzeit im DDR-Zwischenspeicher, sind gültig und wurden beschrieben. Der Zugriffsindikator für die Adressen A und B werden geprüft und Adresse A weist mehr Zugriffe als Adresse B auf. Dementsprechend werden Daten für Adresse B an den Arbeitsspeicherpool gesandt und Daten für Adresse A werden in den Arbeitsspeicher kopiert. In einigen Fällen kann auf Daten für Adresse A von einem gemeinsam genutzten Arbeitsspeicherpool zugegriffen werden und nicht in den Arbeitsspeicher abgerufen werden, falls ermittelt wird, dass auf die Daten für Adresse A weniger als auf die Daten für Adresse B zugegriffen wird.
  • Bei 2006 beginnt ein Austausch von Daten bei Adressen A und B, wobei Daten für Adresse A aus dem Arbeitsspeicherpool abgerufen werden und Daten für Adresse B aus dem Arbeitsspeicher in den Arbeitsspeicherpool kopiert werden. Es ist anzumerken, dass Daten für Adresse B an einer Adresse im Arbeitsspeicherpool gespeichert werden können, die von einem Orchestrator konfiguriert sind. Um auf Daten für Adresse A aus dem Arbeitsspeicherpool zuzugreifen, stellt die CPU0 dem Arbeitsspeicherpool eine Adresse, einen CPUO-Identifikator und einen Positionsidentifikator bereit, um die physische Adresse zu identifizieren, in der die Daten abzurufen sind. Gleichermaßen, um Daten für Adresse B im Arbeitsspeicherpool zu speichern, stellt die CPU0 dem Arbeitsspeicherpool eine Adresse, einen CPUO-Identifikator und einen Positionsidentifikator bereit, um die physische Adresse zu identifizieren, in der die Daten zu speichern sind. Bei 2008 erfolgt eine Aktualisierung eines Zugriffsindikators an sowohl Adresse A, um anzuzeigen, dass auf Adresse A vor Kurzem zugegriffen wurde. Der Betrieb von CPU1 in Bezug auf einen gemeinsam genutzten Arbeitsspeicherpoolserver kann einer ähnlichen Sequenz für im Arbeitsspeicher gespeicherte Daten folgen.
  • 21 zeigt ein Beispiel eines Inhaltszugriffs, wobei Inhalte in einem Zwischenspeicher und auch im Arbeitsspeicherpool gespeichert sind. Anders ausgedrückt ist ein Beispiel eines Inhaltszugriffs für einen inklusiven Fall gezeigt, in dem ein Eintrag in einem Zwischenspeicher auch im Arbeitsspeicherpool gespeichert ist. In diesem Beispiel wird ein 2-Bit-Positionstag verwendet und Inhalte, die in einer mit einem Zwischenspeicher oder nahen Arbeitsspeicher assoziierten Adresse gespeichert sind, weisen eine Kopie in einer von drei verschiedenen Adressen im Arbeitsspeicherpool auf. In einigen Beispielen kann einem Arbeitsspeicherpool der Tag für einen Zugriff auf den Arbeitsspeicherpool mit einer Adresse zusammen mit einem CPU-Identifikator bereitgestellt werden, um zu identifizieren, in welcher der drei Arbeitsspeicheradressen in einem Arbeitsspeicherpool dieser Inhalt gespeichert ist. In einigen Beispielen werden die Inhalte auch in den Arbeitsspeicherpool kopiert, wenn oder nachdem Inhalte in den Zwischenspeicher geschrieben werden. Für einen Schreibvorgang von Inhalten in den Zwischenspeicher oder Arbeitsspeicher findet ein entsprechender Schreibvorgang des Inhalts in einem gepoolten Arbeitsspeicher statt. Lesevorgänge von Inhalten aus dem Zwischenspeicher oder Arbeitsspeicher müssen nicht in den Arbeitsspeicherpool geschrieben werden. Ein Austauschen von Inhalten von nahem Arbeitsspeicher/Zwischenspeicher in den Arbeitsspeicherpool kann auf Grundlage davon durchgeführt werden, dass häufiger zugegriffene Inhalte in den Arbeitsspeicher/Zwischenspeicher kopiert werden und weniger häufig zugegriffene Inhalte in den Arbeitsspeicherpool bewegt werden.
  • In diesem Beispiel werden Tagwerte von 00, 01 und 10 für CPU0 verwendet, um Speicherpositionen für Adresse A zu unterscheiden, sodass, wenn eine Poolsteuerung eine Adressenübersetzung von Adresse A von der CPU0 anwendet, die Adresse A als eine von drei Adressen im Poolarbeitsspeicher unterschieden werden kann. Gleichermaßen werden in diesem Beispiel Tagwerte von 00, 01 und 10 für CPU1 verwendet, um Speicherpositionen für Adresse A zu unterscheiden, sodass, wenn eine Poolsteuerung eine Adressenübersetzung von Adresse A von der CPU1 anwendet, die Adresse A zwischen drei physischen Adressen im Poolarbeitsspeicher unterschieden werden kann. Andere Größen von Positionstags können verwendet werden, um mehr mögliche Positionen zum Speichern von Inhalten zu identifizieren.
  • 22 zeigt ein Beispiel einer Verwendung von Arbeitsspeicher oder Zwischenspeicher und eines Arbeitsspeicherpools, um eine Kopie von Inhalten zu speichern. Anders ausgedrückt ist ein Beispiel eines Inhaltszugriffs für einen exklusiven Fall gezeigt, in dem ein Eintrag entweder im Zwischenspeicher/Arbeitsspeicher oder im Arbeitsspeicherpool gespeichert ist. Ein Positionstag kann verwendet werden, um zu identifizieren, ob Inhalte im Zwischenspeicher/Arbeitsspeicher oder im Arbeitsspeicherpool gespeichert sind. In einigen Beispielen kann einem Arbeitsspeicherpool der Tag für Zugriffe auf den Arbeitsspeicherpool mit einer Adresse zusammen mit einem CPU-Identifikator bereitgestellt werden, um zu identifizieren, in welcher der drei Arbeitsspeicheradressen in einem Arbeitsspeicherpool dieser Inhalt gespeichert ist. Falls der Tag identifiziert, dass sich die Daten im Arbeitsspeicherpool befinden und die Zugriffe auf die Daten hinreichend hoch sind, dann wird ein Austausch durchgeführt, um angeforderte Daten in die Zwischenspeicheradresse zu kopieren und um Daten im Zwischenspeicher, die mit der Zwischenspeicheradresse assoziiert sind, an eine entsprechende Adresse im Arbeitsspeicherpool zu kopieren.
  • In diesem Beispiel werden Tagwerte von 00, 01, 10 und 11 für CPU0 verwendet, um Speicherpositionen für Adresse A zu unterscheiden, sodass die Adresse A als Inhalte im Zwischenspeicher/Arbeitsspeicher oder in einer von drei Adressen im Poolarbeitsspeicher aufweisend unterschieden werden kann. Gleichermaßen werden in diesem Beispiel Tagwerte von 00, 01, 10 und 11 für CPU1 verwendet, um Speicherpositionen für Adresse A zu unterscheiden, sodass Inhalte der Adresse A als im Zwischenspeicher/Arbeitsspeicher oder in einer von drei Adressen im Poolarbeitsspeicher unterschieden werden kann. Für beide Fälle identifiziert ein Tagwert von 00 eine Adresse als mit einem Zwischenspeicher assoziiert, sodass Inhalte, die mit Adresse A von CPU0 assoziiert sind, im Zwischenspeicher gespeichert werden oder Inhalte, die mit Adresse A von CPU1 assoziiert sind, im Zwischenspeicher gespeichert werden, aber an einer unterschiedlichen Position von der von CPU0 verwendeten. In einigen Beispielen kann der Tag eine Teilmenge von Adressbits einer Arbeitsspeicheradresse sein, wie die höchstwertigen 2 Bits. Andere Größen von Positionstags können verwendet werden, um mehr mögliche Positionen zum Speichern von Inhalten zu identifizieren.
  • In diesem Beispiel wird eine bestimmte Adresse in einem Zwischenspeicher von als A, B, C und D identifizierten Adressen gemeinsam genutzt. Anfänglich weisen Inhalte, die mit Position A assoziiert sind, einen Tag von 00 auf und sind im Zwischenspeicher gespeichert; Inhalte, die mit Position B assoziiert sind, weisen einen Tag von 10 auf und sind im Arbeitsspeicherpool gespeichert; Inhalte, die mit Position C assoziiert sind, weisen einen Tag von 11 auf und sind im Arbeitsspeicherpool gespeichert, aber beginnend mit einer von der B oder D verschiedenen Adresse; und Inhalte, die mit Position D assoziiert sind, weisen einen Tag von 01 auf und sind im Arbeitsspeicherpool gespeichert, aber beginnend mit einer von der B oder C verschiedenen Adresse.
  • CPU0 fordert Inhalte an, die bei Adresse B beginnen, aber Inhalte, die bei Adresse D beginnen, befinden sich aktuell in einem mit Adresse D assoziierten Zwischenspeicher. Da zumindest auf Inhalte, die mit Adresse D assoziiert sind, weniger zugegriffen wird als auf Inhalte, die mit Adresse B assoziiert sind, werden Inhalte, die mit Adresse D assoziiert sind, vom Zwischenspeicher in den Arbeitsspeicherpool bei Adresse B kopiert und die Tags für die Adressen D und B werden ausgetauscht, sodass der Tag von B (10) verwendet wird, um eine von drei Positionen zu identifizieren, um Inhalte aus dem Zwischenspeicher zu speichern, die mit Adresse D assoziiert sind, und der Tag von B wird auf 00 aktualisiert, um anzuzeigen, dass die mit Adresse B assoziierten Daten im Zwischenspeicher sind. Es ist anzumerken, dass in diesem Beispiel Tags für die Positionen A und C jeweils 01 bzw. 11 sind, um eine Speicherung von Inhalten für unterschiedliche Positionen im Arbeitsspeicherpool anzuzeigen.
  • Um Inhalte auszutauschen, die mit den Adressen B und D assoziiert sind, stellt CPU0 eine Anforderung bereit, Adresse N mit einem Tag von 10 zu lesen, um Inhalte von Adresse B aus dem Arbeitsspeicherpool zu lesen, um zu unterscheiden, dass Position 10 zu verwenden ist, um Inhalte aus dem Arbeitsspeicherpool zu lesen. CPU0 stellt als Nächstes eine Anforderung, Inhalte in Adresse N mit einem Tag von 10 in den Arbeitsspeicherpool mit Inhalten aus dem mit Adresse D assoziierten Zwischenspeicher zu schreiben. Inhalte von Adresse B werden dem Zwischenspeicher für CPU0 bereitgestellt, der mit Adresse D assoziiert ist, um mit Adresse D assoziiert Inhalte zu überschreiben. Eine Poolsteuerung kann eine Adressenübersetzung verwenden, um eine physische Adresse zu ermitteln, die im Arbeitsspeicherpool zu verwenden ist, um auf Inhalte von Adresse N mit einem Tag von 10 von CPU0 zuzugreifen. Hier dient die Verwendung von Daten und Daten' dazu, um möglicherweise unterschiedliche Daten für den gleichen Adressenidentifikator A, B, C oder D zu unterscheiden.
  • In diesem Beispiel fordert CPU1 Inhalte an, die bei Adresse B beginnen, aber Daten für Adresse A sind in einem mit Adresse D assoziierten Zwischenspeicher gespeichert. Inhalte, die mit Adresse A assoziiert sind, werden aus dem Zwischenspeicher in den Arbeitsspeicherpool bei Adresse M kopiert und die Tags für die Adressen A und B werden ausgetauscht, sodass der Tag von B (10) verwendet wird, um eine von drei Positionen zu identifizieren, um mit Adresse A assoziierte Inhalte aus dem Zwischenspeicher im Arbeitsspeicherpool zu speichern. Der Tag von A wird auf 00 aktualisiert, um anzuzeigen, dass die mit Adresse A assoziierten Daten im Zwischenspeicher sind. Es ist anzumerken, dass in diesem Beispiel Tags für die Positionen C und D jeweils 11 bzw. 01 sind, um eine Speicherung von Inhalten für unterschiedliche Positionen im Arbeitsspeicherpool anzuzeigen.
  • In diesem Beispiel, um Inhalte auszutauschen, die mit den Adressen A und B assoziiert sind, stellt CPU1 eine Anforderung bereit, Adresse M mit einem Tag von 10 zu lesen (dem vormaligen Positionstag für Adresse B), um Inhalte von Adresse B aus dem Arbeitsspeicherpool zu lesen, um zu unterscheiden, dass Position 10 zu verwenden ist, um Inhalte aus dem Arbeitsspeicherpool zu lesen. CPU1 stellt als Nächstes eine Anforderung, Inhalte in Adresse M mit einem Tag von 10 in den Arbeitsspeicherpool mit Inhalten aus dem mit Adresse A assoziierten Zwischenspeicher zu schreiben. Inhalte von Adresse B werden dem Zwischenspeicher für CPU1 bereitgestellt, der mit Adresse D assoziiert ist. Eine Poolsteuerung kann eine Adressenübersetzung verwenden, um eine physische Adresse zu ermitteln, die im Arbeitsspeicherpool zu verwenden ist, um auf Inhalte von Adresse M mit einem Tag von 10 von CPU1 zuzugreifen. Hier dient die Verwendung von Daten und Daten' dazu, um möglicherweise unterschiedliche Daten für den gleichen Adressenidentifikator A, B, C oder D zu unterscheiden.
  • Verschiedene Ausführungsformen stellen eine Art und Weise zum Vermindern von Rechenstillstandzeit bereit, falls irgendein Arbeitsspeicherpool nicht mehr reagiert (z. B. Energie verliert, fehlerhaft ist, eine Konnektivität verliert), um die betroffenen Rechenelemente und virtuellen Ausführungsumgebungen zu reduzieren. Falls zum Beispiel 100 CPUs einen Arbeitsspeicherpool gemeinsam nutzen und falls ein Arbeitsspeicher-DIMM nicht mehr reagiert, dann können 100 CPUs nicht auf Daten zugreifen und die CPUs befinden sich im Leerlauf. Redundanz kann den CPUs ermöglichen, auf einen anderen Arbeitsspeicherpool zuzugreifen.
  • 23 zeigt eine beispielhafte Umgebung zum Spiegeln von Schreiboperationen über zwei oder mehr Arbeitsspeicherpools. In diesem Beispiel weisen CPU0, CPU1 und CPU2 eine Lese/Schreibverbindung mit zwei Arbeitsspeicherpools unter Verwendung von gemeinsam genutzten Arbeitsspeicherpoolsteuerungen (Ctrl1 und Ctrl2) auf. In einigen Beispielen sind einige oder alle der Arbeitsspeicherpools, die von einer CPU verwendet werden, ausgelegt, das gleiche Adressenübersetzungsschema zu verwenden, sodass eine Arbeitsspeichertransaktion, die eine Adresse und einen Positionstag angibt, dieselbe physische Adresse ergibt. Anders ausgedrückt speichern einige oder alle der Arbeitsspeicherpools, die von einer CPU verwendet werden, Inhalte mit einer bestimmten Adresse und einem bestimmten Positionstag an den gleichen physischen Positionen in allen der Arbeitsspeicherpools.
  • Eine CPU-Schreibanforderung kann an zwei Pools gesendet werden, wobei eine Kopie eine gespiegelte Kopie sein kann. Eine CPU-Leseanforderung kann an einen der beiden Arbeitsspeicherpools gehen. In einigen Beispielen, um die Leistung zu verbessern, kann eine Leseoperation zwischen Pools aufgeteilt werden, sodass eine Lesetransaktion über mehrere Arbeitsspeicherpools aufgeteilt werden kann, um parallele Leseoperationen zu ermöglichen, um eine Lesegeschwindigkeit zu erhöhen.
  • Wenn ein Pool einen nicht korrigierbaren Fehler (z. B. nicht korrigierbare Fehlerkorrekturcodierung (ECC)/eine nicht korrigierbare zyklische Redundanzprüfung (CRC)) aufweist, kann eine CPU standardmäßig handeln, Lesevorgänge/Schreibvorgänge nur an den arbeitenden Arbeitsspeicherpool zu senden. Wenn ein Arbeitsspeicherpool einen nicht korrigierbaren Fehler aufweist, können Daten von einem zweiten Pool in den Pool mit dem nicht korrigierbaren Fehler erneut möglicherweise an eine andere physische Adresse geschrieben werden, um zu versuchen, den nicht korrigierbaren Fehler zu beheben.
  • Ein Orchestratorsystem, von dem ein Beispiel früher beschrieben wurde, kann zwei oder mehr Arbeitsspeicherpools auslegen, von einer oder mehreren CPUs verwendet zu werden. Darüber hinaus kann der Orchestrator ein Spiegeln von Inhalten zwischen Arbeitsspeicherpools sowie eine erneute Synchronisierung von Inhalten zwischen den Arbeitsspeicherpools durchführen, um doppelte Kopien zwischen den Arbeitsspeicherpools zu erreichen. Adressenübersetzungsschemata zwischen Spiegelungs-Arbeitsspeicherpools können gleich sein. Ein Spiegeln von mehr als 2 Arbeitsspeicherpools kann angewandt werden.
  • 24 zeigt ein Beispiel von Inhaltsspiegelung. In diesem Beispiel ist eine CPU mit einer einzelnen gemeinsam genutzten Arbeitsspeicherpoolsteuerung verbunden und die gemeinsam genutzte Arbeitsspeicherpoolsteuerung verwaltet ein Duplizieren von Inhalten unter mehreren Arbeitsspeicher-DIMM-Vorrichtungen. In diesem Beispiel, wo Arbeitsspeicher-DIMMs 0 und 1 doppelte Inhalte speichern, wird ein Arbeitsspeicherpool mit der zweifachen Menge an Arbeitsspeicher und zweimal so vielen Arbeitsspeicheranschlüssen gefüllt. Die gemeinsam genutzte Arbeitsspeicherpoolsteuerung kann Schreibvorgänge über zwei Arbeitsspeicheranschlüsse hinweg duplizieren, wobei ein Anschluss der Hauptanschluss und der andere Anschluss der Spiegelanschluss ist. Ein Spiegeln von mehr als 2 Arbeitsspeicherpools kann angewandt werden.
  • Leseoperationen können zwischen dem gespiegelten Paar an Arbeitsspeicher-DIMMs abgewechselt werden. Als Reaktion auf einen nicht korrigierbaren Fehler können die Daten vom alternativen Anschluss gelesen werden. Ein Neuschreiben der nicht korrigierbaren Daten kann unter Verwendung von Daten vom gespiegelten Anschluss in ein anderes Arbeitsspeicher-DIMM durchgeführt werden.
  • 25 zeigt einen beispielhaften Prozess. Der Prozess kann von einer CPU durchgeführt werden, um mit einer Adresse assoziierte Inhalte anzufordern. Bei 2502 wird eine Ladeanforderung mit einer zugehörigen Adresse erteilt. Die CPU kann auch einen CPU-Identifikator angeben, um die CPU von anderen CPUs zu unterscheiden. Die Anforderung kann von einer Arbeitsspeichersteuerung empfangen werden. Bei 2504 greift die CPU auf Inhalte von einem mit der Ladeanforderung assoziierten Register oder einem Zwischenspeicher oder nahen Arbeitsspeicher zu. Beispielsweise können die Inhalte der CPU von einem Zwischenspeicher oder lokalen Arbeitsspeicher oder von einem Arbeitsspeicherpool bereitgestellt werden, der von der CPU mit anderen CPUs gemeinsam genutzt wird. Der der CPU zugeordnete Arbeitsspeicher kann schlank zugewiesen sein, wobei der CPU erlaubt ist, eine Menge an Arbeitsspeicher zu verwenden, aber die der CPU tatsächlich zugeordneten physischen Adressbereiche sind kleiner als die zugeordnete Menge.
  • 26 zeigt einen beispielhaften Prozess. Der Prozess kann als Reaktion auf eine Anforderung durchgeführt werden, auf Inhalte von einem Zwischenspeicher oder Arbeitsspeicher zuzugreifen, und kann durch eines oder mehrere von einer Arbeitsspeichersteuerung, einem Prozessor, einer Schnittstelle zu einer Verbindung oder einer Poolsteuerung durchgeführt werden. Bei 2602 kann auf einen mit einer Arbeitsspeicherzugriffsanforderung assoziierten Metadateneintrag von einer CPU zugegriffen werden, um eine Position von Inhalten zu ermitteln, die von der Arbeitsspeicherzugriffsanforderung referenziert werden. Der Metadateneintrag kann mit einer bestimmten CPU und einer bestimmten Adresse assoziiert sein. Der Metadateneintrag kann im Arbeitsspeicher oder Speicher gespeichert sein. Wenn die Anwendung oder Software, die von der CPU ausgeführt wird, eine schlanke Arbeitsspeicherzuweisung empfängt, kann die Position identifizieren, ob Inhalte im Zwischenspeicher oder in einer oder einer von mehreren Bereichen in einem Arbeitsspeicherpool gespeichert sind. Bei 2604 erfolgt eine Ermittlung, ob ein Zwischenspeicherbereich, der mit der von der Arbeitsspeicheranforderung referenzierten Position assoziiert ist, Inhalte speichert, die mit der von der Arbeitsspeicheranforderung referenzierten Position assoziiert sind. Falls der Zwischenspeicherbereich, der mit der von der Arbeitsspeicheranforderung referenzierten Position assoziiert ist, Inhalte speichert, die mit der von der Arbeitsspeicheranforderung referenzierten Position assoziiert sind, dann folgt 2620, wo Inhalte aus dem Zwischenspeicher gelesen werden und der CPU bereitgestellt werden. Die Inhalte können zum Beispiel in das Register der CPU zum Zugriff durch die von der CPU ausgeführte Software kopiert werden oder auf sie kann aus dem Zwischenspeicher oder nahen Arbeitsspeicher zugegriffen werden.
  • Falls der Zwischenspeicherbereich, der mit der von der Arbeitsspeicheranforderung referenzierten Position assoziiert ist, keine Inhalte speichert, die mit der von der Arbeitsspeicheranforderung referenzierten Position assoziiert sind, dann folgt 2606. Bei 2606 erfolgt eine Ermittlung, ob Inhalte aus dem Zwischenspeicherbereich zu entfernen sind, der mit der der von der Arbeitsspeicheranforderung referenzierten Position assoziiert ist. Beispielsweise kann ein Metadateneintrag, der mit der der von der Arbeitsspeicheranforderung referenzierten Position assoziiert ist, eine Zugriffsebene von an der Position gespeicherten Inhalten anzeigen. Falls auf die Inhalte im Zwischenspeicherbereich häufiger als die angeforderten Inhalte zugegriffen wird und die angeforderten Inhalte im Arbeitsspeicherpool gespeichert sind, dann kann 2630 folgen, wo die angeforderten Inhalte aus dem Arbeitsspeicherpool der anfordernden CPU (z. B. einem CPU-Register) bereitgestellt werden kann, ohne Inhalte aus dem Zwischenspeicherbereich zu entfernen.
  • Falls auf die Inhalte im Zwischenspeicherbereich weniger häufig als die angeforderten Inhalte zugegriffen wird und die angeforderten Inhalte im Arbeitsspeicherpool gespeichert sind, dann kann 2608 folgen. Bei 2608 werden Positionsidentifikatoren für die Inhalte im Zwischenspeicherbereich (entfernte Inhalte) und die angeforderten Inhalte im Arbeitsspeicherpool ausgetauscht. Bei 2610 können die angeforderten Inhalte aus dem Arbeitsspeicherpool im Zwischenspeicherbereich gespeichert werden und Inhalte im Zwischenspeicherbereich an einer möglichen Position im Arbeitsspeicherpool gespeichert werden. Um entfernte Inhalte zum Beispiel in den Arbeitsspeicherpool zu schreiben, stellt eine CPU einen CPU-Identifikator, eine Adresse eines Bereichs, in den in den Arbeitsspeicherpool zu schreiben ist, und einen Positionsidentifikator bereit. Die Arbeitsspeicherpoolsteuerung übersetzt die Arbeitsspeicheranforderung von der CPU in eine physische Adresse auf Grundlage der angegebenen CPU, einer Adresse eines Bereichs und des Positionsidentifikators. In einem schlank zugewiesenen Arbeitsspeicherpool können X Adressen zugeordnet werden, um weniger als X Adressen in der Kombination des Zwischenspeichers und des Arbeitsspeicherpools zu verwenden. Der Positionsidentifikator kann dabei helfen, zu identifizieren, welche Adresse im Arbeitsspeicherpool oder Zwischenspeicher für eine bestimmte Adresse verwendet wird. Der Prozess fährt mit 2630 fort, das früher beschrieben wurde.
  • 27 zeigt einen Prozess. Der Prozess kann von einer Arbeitsspeicherpoolsteuerung durchgeführt werden, um eine Adressraumübersetzung für Arbeitsspeicher-DIMMs in einem oder mehreren Arbeitsspeicherservern bereitzustellen. Bei 2702 werden Adressenübersetzungen in einem Arbeitsspeicherpool bereitgestellt. Beispielsweise können Adressen, die mit einer bestimmten CPU und einem bestimmten Positionsidentifikator assoziiert sind, in einer Nachschlagetabelle zugewiesen sein, die für eine Arbeitsspeicherpoolsteuerung zugänglich ist. Bei 2704 erfolgt eine Ermittlung, ob eine Arbeitsspeichertransaktion empfangen wurde. Falls keine Arbeitsspeichertransaktion empfangen wird, wiederholt sich 2704.
  • Falls eine Arbeitsspeichertransaktion empfangen wird, fährt der Prozess mit 2706 fort, wo eine Adressraumübersetzung stattfindet. Beispielsweise kann eine von einer bestimmten CPU bereitgestellte Adresse und ein Positionsidentifikator verwendet werden, um eine physische Adresse im Arbeitsspeicherpool zu identifizieren. Bei 2708 erfolgt eine Ermittlung, ob die Arbeitsspeichertransaktion eine Schreibanforderung für eine neue übersetzte Adresse ist. Falls die Adresse zum Beispiel noch nicht beschrieben wurde, kann die Poolsteuerung bei 2720 den Arbeitsspeicher zuweisen, um Platz im Arbeitsspeicher bereitzustellen, der mit der Adresse assoziiert ist. Anders ausgedrückt kann der anfordernden CPU oder ausgeführten Software die Adresse zugeordnet werden, aber die tatsächliche physische Adressenzuordnung findet nicht statt, bevor eine Schreiboperation in die physische Adresse (nach der Adressenübersetzung) erfolgt.
  • Falls bei 2708 eine Ermittlung erfolgt, dass die Arbeitsspeichertransaktion keine Schreibanforderung für eine neue übersetzte Adresse ist, dann fährt der Prozess mit 2710 fort. Eine Arbeitsspeichertransaktion, die zum Beispiel keine Schreibanforderung für eine neue übersetzte Adresse ist, kann eine Schreiboperation oder eine Leseoperation an eine vorher beschriebene übersetzte physische Adresse sein.
  • Bei 2710 wird die Arbeitsspeichertransaktion durchgeführt. Falls die Arbeitsspeichertransaktion eine Leseoperation ist, werden Inhalte, die mit der übersetzten Adresse assoziiert sind, der anfordernden CPU bereitgestellt. Falls die Arbeitsspeichertransaktion eine Schreiboperation ist, werden Inhalte, die mit der übersetzten Adresse assoziiert sind, in den Arbeitsspeicherpool geschrieben.
  • 28 zeigt ein System. Das System kann hierin beschriebene Ausführungsformen verwenden, um zumindest hierin beschriebene Technologien zu verwenden, um auf Zwischenspeicher, Arbeitsspeicher und einen Arbeitsspeicherpool gemäß einer schlanken Arbeitsspeicherzuweisung zuzugreifen. Das System 2800 enthält einen Prozessor 2810, der eine Verarbeitung, eine Vorgangsverwaltung und eine Ausführung von Anweisungen für das System 2800 bereitstellt. Der Prozessor 2810 kann eine beliebige Art von Mikroprozessor, einer Zentralprozessoreinheit (CPU), einer Grafikverarbeitungseinheit (GPU), eines Verarbeitungskerns oder einer anderen Verarbeitungshardware, um die Verarbeitung für das System 2800 bereitzustellen, oder eine Kombination von Prozessoren enthalten. Der Prozessor 2810 steuert den Gesamtbetrieb des Systems 2800 kann ein oder mehrere programmierbare Universal- oder Sondermikroprozessoren, digitale Signalprozessoren (DSPs), programmierbare Steuerungen, anwendungsspezifische integrierte Schaltkreise (ASICs), programmierbare Logikvorrichtungen (PLDs) oder Ähnliches oder eine Kombination solcher Vorrichtungen sein oder diese enthalten.
  • In einem Beispiel enthält das System 2800 eine Schnittstelle 2812, die an den Prozessor 2810 gekoppelt ist, die eine Schnittstelle mit höherer Geschwindigkeit oder eine Schnittstelle mit hohem Durchsatz für Systemkomponenten repräsentiert, die Verbindungen mit höherer Bandbreite benötigen, wie ein Arbeitsspeicher-Subsystem 2820 oder Grafikschnittstellenkomponenten 2840 oder Beschleuniger 2842. Die Schnittstelle 2812 repräsentiert einen Schnittstellenschaltkreis, der eine eigenständige Komponente oder auf einem Prozessorchip integriert sein kann. Wo vorhanden, koppelt die Grafikschnittstelle 2840 an Grafikkomponenten zum Bereitstellen einer visuellen Anzeige für einen Benutzer des Systems 2800. In einem Beispiel kann die Grafikschnittstelle 2840 eine hochauflösende (HD) Anzeige ansteuern, die einem Benutzer eine Ausgabe zur Verfügung stellt. Hochauflösung kann eine Anzeige bezeichnen, die eine Pixeldichte von ungefähr 100 ppi (Pixel pro Zoll) oder darüber aufweist, und kann Formate wie volle HD-Auflösung (z. B. 1080p), Retina-Anzeigen, 4K (Ultrahochauflösung oder UHD) oder andere enthalten. In einem Beispiel kann die Anzeige eine Berührungsbildschirmanzeige enthalten. In einem Beispiel generiert die Grafikschnittstelle 2840 eine Anzeige auf Grundlage von Daten, die in einem Arbeitsspeicher 2830 gespeichert sind, oder auf Grundlage von Operationen, die vom Prozessor 2810 ausgeführt werden, oder von beidem. In einem Beispiel generiert die Grafikschnittstelle 2840 eine Anzeige auf Grundlage von Daten, die in einem Arbeitsspeicher 2830 gespeichert sind, oder auf Grundlage von Operationen, die vom Prozessor 2810 ausgeführt werden, oder von beidem.
  • Die Beschleuniger 2842 können eine Auslagerungsengine mit fester Funktion sein, auf die durch einen Prozessor 2810 zugegriffen werden kann oder die von diesem verwendet werden kann. Zum Beispiel kann ein Beschleuniger unter den Beschleunigern 2842 eine Komprimierungsfähigkeit (DC-Fähigkeit), Kryptografiedienste wie Verschlüsselung mit öffentlichem Schlüssel (PKE), einen Chiffre, Hash-/Authentifizierungfähigkeiten, Entschlüsselung oder andere Fähigkeiten oder Dienste bereitstellen. In einigen Ausführungsformen stellt ein Beschleuniger unter den Beschleunigern 2842 zusätzlich oder alternativ Feldauswahlsteuerungsfähigkeiten wie hierin beschrieben bereit. In einigen Fällen können die Beschleuniger 2842 in einen CPU-Sockel (z. B. einem Anschluss an eine Hauptplatine oder Leiterplatte, die eine CPU enthält und eine elektrische Schnittstelle mit der CPU bereitstellt) integriert sein. Beispielsweise können die Beschleuniger 2842 einen einzelnen oder Mehrkernprozessor, eine Grafikverarbeitungseinheit, eine logische Ausführungseinheit, Zwischenspeicher auf einer einzelnen oder mehreren Ebenen, funktionale Einheiten, die verwendbar sind, um Programme oder Threads unabhängig auszuführen, anwendungsspezifische integrierte Schaltkreise (ASICs), Prozessoren für neuronale Netze (NNPs), programmierbare Steuerlogik und programmierbare Verarbeitungselemente wie feldprogrammierbare Gatearrays (FPGAs) enthalten. Die Beschleuniger 2842 können mehrere neuronale Netze, CPUs, Prozessorkerne, Universal-Grafikverarbeitungseinheiten bereitstellen, oder Grafikverarbeitungseinheiten können zur Verwendung durch Modelle für künstliche Intelligenz (KI) oder maschinelles Lernen (ML) verfügbar gemacht werden. Beispielsweise kann das AI-Modell beliebige oder eine Kombination von Folgendem enthalten: einem Schema für bestärkendes Lernen, Q-Lernschema, tiefes Q-Lernen oder Asynchronous Advantage Actor-Critic (A3C), einem kombinatorischen neuronalen Netz, einem rekurrenten kombinatorischen neuronalen Netz oder einem anderen AI- oder ML-Modell. Mehrere neuronale Netze, Prozessorkerne oder Grafikverarbeitungseinheiten können zur Verwendung durch AI- oder ML-Modelle verfügbar gemacht werden.
  • Ein Arbeitsspeicherteilsystem 2820 stellt den Hauptspeicher des Systems 2800 dar und stellt einen Speicher für Code, der vom Prozessor 2810 auszuführen ist, oder für Datenwerte bereit, die beim Ausführen einer Routine zu verwenden sind. Das Arbeitsspeicherteilsystem 2820 kann eine oder mehrere Arbeitsspeichervorrichtungen 2830, wie schreibgeschützten Arbeitsspeicher (ROM), Flashspeicher, eine oder mehrere Varianten von Arbeitsspeicher mit wahlfreiem Zugriff (RAM) wie DRAM, oder andere Arbeitsspeichervorrichtungen oder eine Kombination solcher Vorrichtungen enthalten. Der Arbeitsspeicher 2830 speichert und hostet unter anderem ein Betriebssystem (OS) 2832, um eine Softwareplattform zur Ausführung von Anweisungen im System 2800 bereitzustellen. Zusätzlich können Anwendungen 2834 auf der Softwareplattform des OS 2832 aus dem Arbeitsspeicher 2830 ausgeführt werden. Die Anwendungen 2834 und das OS 2832 können innerhalb einer virtuellen Maschinenumgebung oder Containerumgebung mit individuellen zugeordneten Arbeitsspeicherbereichen ausgeführt werden. Die Anwendungen 2834 repräsentieren Programme, die ihre eigene Betriebslogik aufweisen, um eine Ausführung einer oder mehrerer Funktionen durchzuführen. Prozesse 2836 repräsentieren Agenten oder Routinen, die dem OS 2832 oder einer oder mehreren Anwendungen 2834 oder einer Kombination zusätzliche Funktionen bereitstellen. Das OS 2832, die Anwendungen 2834 und Prozesse 2836 stellen Softwarelogik bereit, um Funktionen für das System 2800 bereitzustellen. In einem Beispiel enthält das Arbeitsspeicherteilsystem 2820 eine Arbeitsspeichersteuerung 2822, die eine Arbeitsspeichersteuerung ist, um Befehle an den Arbeitsspeicher 2830 zu erzeugen und dieser zu erteilen. Es ist klar, dass die Arbeitsspeichersteuerung 2822 ein physischer Teil des Prozessors 2810 oder ein physischer Teil der Schnittstelle 2812 sein könnte. Die Arbeitsspeichersteuerung 2822 kann zum Beispiel eine integrierte Arbeitsspeichersteuerung sein, die auf einen Schaltkreis mit dem Prozessor 2810 integriert ist.
  • Während nicht eigens veranschaulicht, versteht sich, dass das System 2800 einen oder mehrere Busse oder Bussysteme zwischen Vorrichtungen enthalten kann, wie einen Arbeitsspeicherbus, einen Grafikbus, Schnittstellenbusse oder andere. Busse oder andere Signalleitungen können Komponenten miteinander kommunikativ oder elektrisch koppeln, oder die Komponenten sowohl kommunikativ als auch elektrisch koppeln. Busse enthalten physische Kommunikationsleitungen, Punkt-zu-Punkt-Verbindungen, Brücken, Adapter, Steuerungen oder eine andere Verschaltung oder eine Kombination. Busse können beispielsweise einen oder mehrere von einem Systembus, einem Peripheral-Component-Interconnect(PCI)-Bus, einem HyperTransprot- oder Industry-Standard-Architecture(ISA)-Bus, einem Small-Computer-System-Interface(SCSI)-Bus, einem Universal Serial Bus (USB) oder einem Bus nach der Norm 1394 des Institute of Electrical and Electronics Engineers (IEEE) (Firewire) enthalten.
  • In einem Beispiel enthält das System 2800 eine Schnittstelle 2814, die an die Schnittstelle 2812 gekoppelt sein kann. In einem Beispiel repräsentiert die Schnittstelle 2814 einen Schnittstellenschaltkreis, der eigenständige Komponenten und eine integrierte Verschaltung enthalten kann. In einem Beispiel koppeln mehrere Benutzerschnittstellenkomponenten oder periphere Komponenten oder beides an die Schnittstelle 2814. Die Netzwerkschnittstelle 2850 stellt dem System 2800 die Fähigkeit bereit, mit entfernten Vorrichtungen (z. B. Servern oder anderen Computervorrichtungen) über ein oder mehrere Netzwerke zu kommunizieren. Die Netzwerkschnittstelle 2850 kann einen Ethernetadapter, drahtlose Zwischenverbindungskomponenten, Mobilfunknetz-Zwischenverbindungskomponenten, USB (Universal Serial Bus) oder andere verdrahtete oder drahtlose, auf Normen basierende oder proprietäre Schnittstellen enthalten. Die Netzwerkschnittstelle 2850 kann Daten an eine Vorrichtung senden, die sich in demselben Rechenzentrum oder Rack oder in derselben entfernen Vorrichtung befindet, was ein Senden von im Arbeitsspeicher gespeicherten Daten enthalten kann. Die Netzwerkschnittstelle 2850 kann Daten von einer entfernten Vorrichtung empfangen, was ein Speichern der empfangenen Daten in einen Arbeitsspeicher enthalten kann. Verschiedene Ausführungsformen können in Verbindung mit der Netzwerkschnittstelle 2850, dem Prozessor 2810 und dem Arbeitsspeicher-Subsystem 2820 verwendet werden.
  • In einem Beispiel enthält das System 2800 eine oder mehrere Eingabe/Ausgabe(E/A)-Schnittstelle(n) 2860. Die E/A-Schnittstelle 2860 kann eine oder mehrere Schnittstellenkomponenten enthalten, über die ein Benutzer mit dem System 2800 wechselwirkt (z. B. Audio-, alphanumerische, taktile/Berührungs- oder andere Schnittstellen). Eine periphere Schnittstelle 2870 kann eine beliebige Hardwareschnittstelle enthalten, die oben nicht spezifisch erwähnt wurde. Peripheriegeräte bezeichnen allgemein Vorrichtungen, die abhängig mit dem System 2800 verbunden sind. Eine abhängige Verbindung ist eine, bei der das System 2800 die Softwareplattform oder Hardwareplattform oder beides bereitstellt, auf der der Vorgang ausgeführt wird und mit der ein Benutzer wechselwirkt.
  • In einem Beispiel enthält das System 2800 ein Speichersubsystem 2880, um Daten auf nichtflüchtige Weise zu speichern. In einem Beispiel können in bestimmten Systemimplementierungen zumindest bestimmte Komponenten des Speichers 2880 mit Komponenten des Arbeitsspeicher-Subsystems 2820 überlappen. Ein Speichersubsystem 2880 enthält (eine) Speichervorrichtung(en) 2884, die ein beliebiges herkömmliches Medium zum Speichern großer Datenmengen auf nichtflüchtige Weise sein oder ein solches enthalten kann bzw. können, wie eine oder mehrere Magnet-, Festkörper- oder optische Platten oder eine Kombination davon. Der Speicher 2884 hält Code oder Anweisungen und Daten 2886 in einem persistenten Zustand (d. h., der Wert wird trotz Unterbrechung der Energie zum System 2800 beibehalten). Der Speicher 2884 kann allgemein als ein „Arbeitsspeicher“ angesehen werden, obwohl der Arbeitsspeicher 2830 üblicherweise der ausführende oder Betriebsarbeitsspeicher ist, um dem Prozessor 2810 Anweisungen bereitzustellen. Während der Speicher 2884 nichtflüchtig ist, kann der Arbeitsspeicher 2830 flüchtigen Arbeitsspeicher enthalten (d. h., der Wert oder Zustand der Daten ist unbestimmt, falls die Energie zum System 2800 unterbrochen wird). In einem Beispiel enthält das Speichersubsystem 2880 eine Steuerung 2882, um an den Speicher 2884 zu koppeln. In einem Beispiel ist die Steuerung 2882 ein physischer Teil der Schnittstelle 2814 oder des Prozessors 2810 oder kann Schaltkreise oder Logik sowohl im Prozessor 2810 als auch der Schnittstelle 2814 enthalten.
  • Ein flüchtiger Arbeitsspeicher ist ein Arbeitsspeicher, dessen Zustand (und deshalb der darauf gespeicherten Daten) unbestimmt ist, falls Energiezufuhr zur Vorrichtung unterbrochen ist. Ein dynamischer flüchtiger Arbeitsspeicher erfordert ein Auffrischen der in der Vorrichtung gespeicherten Daten, um den Zustand beizubehalten. Ein Beispiel eines dynamischen flüchtigen Arbeitsspeichers enthält DRAM (dynamischen Arbeitsspeicher mit wahlfreiem Zugriff) oder eine Variante wie synchronen DRAM (SDRAM). Ein Arbeitsspeicherteilsystem, wie es hierin beschrieben ist, kann mit einer Anzahl an Arbeitsspeichertechnologien kompatibel sein, wie DDR3 (doppelte Datenrate Version 3, ursprüngliche Version von JEDEC (Joint Electronic Device Engineering Council) vom 27. Juni 2007, DDR4 (DDR-Version 4, anfängliche Spezifikation im September 2012 von JEDEC veröffentlicht), DDR4E (DDR-Version 4), LPDDR3 (Niedrigenergie-DDR-Version 3, JESD209-3B, August 2013 von JEDEC), LPDDR4) LPDDR-Version 4, JESD209-4, ursprünglich von JEDEC im August 2014 veröffentlicht), WIO2 (Breit-Eingabe/Ausgabe-Version 2, JESD229-2, ursprünglich von JEDEC im August 2014 veröffentlicht, HBM (Arbeitsspeicher mit hoher Bandbreite, JESD235, ursprünglich von JEDEC im Oktober 2013 veröffentlicht), LPDDR5 (derzeit im Gespräch durch JEDEC), HBM2 (HBM-Version 2), derzeit im Gespräch durch JEDEC, und/oder andere oder Kombinationen von Arbeitsspeichertechnologien und Technologien, die auf Derivaten oder Erweiterungen dieser Spezifikationen basieren. Die JEDEC-Standards sind auf www.jedec.org verfügbar.
  • Eine nichtflüchtige Arbeitsspeichervorrichtung (NVM-Vorrichtung) ist ein Arbeitsspeicher, dessen Zustand bestimmt ist, auch wenn die Energiezufuhr zur Vorrichtung unterbrochen ist. In einem Beispiel kann die NVM-Vorrichtung eine blockadressierbare Arbeitsspeichervorrichtung umfassen, wie NAND-Technologien oder genauer NAND-Flashspeicher mit mehreren Schwellenpegeln (zum Beispiel eine Einzelpegelzelle („SLC“), eine Mehrpegelzelle („MLC“), Vierpegel-Zelle („QLC“), Dreipegelzelle („TLC“) oder einen anderen NAND). Eine NVM-Vorrichtung kann auch eine byteadressierbare, dreidimensionale in situ beschreibbare Koppelpunkt-Arbeitsspeichervorrichtung oder eine andere byteadressierbare in situ beschreibbare NVM-Vorrichtung (auch als ein persistenter Arbeitsspeicher bezeichnet), wie Phasenwechselspeicher (PCM) mit einem oder mehreren Pegeln oder Phasenwechselspeicher mit einem Schalter (PCMS), NVM-Vorrichtungen, die Chalkogen-Phasenwechselmaterial (zum Beispiel Chalkogenglas) verwenden, einen resistive Arbeitsspeicher, einschließlich auf Metalloxidbasis, Sauerstofffehlstellenbasis und Leiterbrückenarbeitsspeicher mit wahlfreiem Zugriff (CB-RAM), Nanodrahtarbeitsspeicher, ferroelektrischen Arbeitsspeicher mit wahlfreiem Zugriff (FeRAM, FRAM), magnetoresistiven Arbeitsspeicher mit wahlfreiem Zugriff (MRAM), der Memristortechnologie einbindet, Spin-Transfer-Torque(STT)-MRAM, eine Vorrichtung auf Spintronik-Magnetübergangs-Arbeitsspeicherbasis, eine Vorrichtung auf Magnettunnelübergangsbasis (MTJ-Basis), eine Vorrichtung auf Domänenwand(DW)- und SOT(Spin-Orbit-Transfer)-Basis, eine Arbeitsspeichervorrichtung auf Thyristorbasis oder eine Kombination von beliebigem von oben oder einen anderen Arbeitsspeicher umfassen.
  • Eine Energiequelle (nicht gezeigt) stellt den Komponenten des Systems 2800 Energie bereit. Genauer koppelt die Energiequelle üblicherweise an eine oder mehrere Energieversorgungen im System 2800, um die Komponenten des Systems 2800 mit Energie zu versorgen. In einem Beispiel enthält die Energieversorgung einen Wechselstrom-auf-Gleichstrom(AC-DC)-Adapter, der in eine Wandsteckdose zu stecken ist. Eine derartige Wechselstromversorgung kann eine Energiequelle erneuerbarer Energie (z. B. Sonnenenergie) sein. In einem Beispiel enthält die Energiequelle eine Gleichstromquelle, wie einen externen AC-DC-Wandler. In einem Beispiel enthält die Energieversorgung oder die Energiequelle drahtlose Ladehardware, um über eine Nähe zu einem Ladefeld aufzuladen. In einem Beispiel kann die Energiequelle eine interne Batterie, eine Wechselstromversorgung, eine bewegungsbasierte Energieversorgung, eine Solar-Energieversorgung oder eine Brennstoffzellenquelle enthalten.
  • In einem Beispiel kann das System 2800 unter Verwendung von miteinander verbundenen Recheneinschüben mit Prozessoren, Arbeitsspeichern, Speichern, Netzwerkschnittstellen und anderen Komponenten implementiert sein. Hochgeschwindigkeits-Zwischenverbindungen können verwendet werden, wie zum Beispiel PCIe, Ethernet oder optische Zwischenverbindungen (oder eine Kombination davon).
  • Ausführungsformen hierin können in verschiedenen Arten von Rechen- und Netzwerkgeräten implementiert sein, wie Switches, Router, Racks und Bladeserver, wie diejenigen, die in einem Rechenzentrum und/oder einer Serverfarmumgebung eingesetzt werden. Die in Rechenzentren und Serverfarmen verwendeten Server umfassen Serverkonfigurationen in Anordnungen wie rackbasierte Server oder Bladeserver. Diese Server sind in Kommunikation über verschiedene Netzwerkzuweisungen miteinander verbunden, wie einer Partitionierung von Gruppen von Servern in lokale Netzwerke (LANs) mit angemessenen Schalt- und Leitanlagen zwischen den LANs, um ein privates Intranet zu bilden. Cloudhostinganlagen können zum Beispiel üblicherweise große Rechenzentren mit vielen Servern einsetzen. Ein Blade umfasst eine separate Rechenplattform, die ausgelegt ist, Funktionen vom Servertyp durchzuführen, das heißt, ein „Server auf einer Karte“. Dementsprechend enthält ein Blade Komponenten, die in herkömmlichen Servern üblich sind, einschließlich einer gedruckten Hauptplatine (Hauptplatine), die interne Verdrahtung (d. h. Busse) zum Koppeln angemessener integrierter Schaltkreise (ICs) und anderer auf der Platine montierter Komponenten bereitstellt.
  • Verschiedene Beispiele können unter Verwendung von Hardwareelementen, Softwareelementen oder einer Kombination von beidem implementiert sein. In einigen Beispielen können Hardwareelemente Vorrichtungen, Komponenten, Prozessoren, Mikroprozessoren, Schaltkreise, Schaltkreiselemente (z. B. Transistoren, Widerstände, Kondensatoren, Induktoren und so weiter), integrierte Schaltkreise, ASICs, PLDs, DSPs, FPGAs, Arbeitsspeichereinheiten, Logikgatter, Register, Halbleitervorrichtungen, Chips, Mikrochips, Chipsätze und so weiter enthalten. In einigen Beispielen können Softwareelemente Softwarekomponenten, Programme, Anwendungen, Computerprogramme, Anwendungsprogramme, Systemprogramme, Maschinenprogramme, Betriebssystemsoftware, Middleware, Firmware, Softwaremodule, Routinen, Subroutinen, Funktionen, Methoden, Prozeduren, Softwareschnittstellen, APIs, Anweisungssätze, Rechencode, Computercode, Codesegmente, Computercodesegmente, Wörter, Werte, Symbole oder eine beliebige Kombination davon enthalten. Das Ermitteln, ob ein Beispiel unter Verwendung von Hardwareelementen und/oder Softwareelementen implementiert ist, kann in Übereinstimmung mit einer beliebigen Anzahl von Faktoren variieren, wie beispielsweise einer gewünschten Berechnungsrate, von Leistungspegeln, Wärmetoleranzen, einem Verarbeitungszyklusbudget, von Eingangsdatenraten, Ausgangsdatenraten, Arbeitsspeicherressourcen, Datenbusgeschwindigkeiten und anderen Design- oder Leistungsbeschränkungen, wie für eine gegebene Implementierung gewünscht. Es wird angemerkt, dass Hardware-, Firmware- und/oder Softwareelemente gemeinsam oder individuell als „Modul“, „Logik“, „Schaltkreis“ oder „Verschaltung“ bezeichnet werden können. Ein Prozessor kann eine oder mehrere Kombinationen einer Hardwarezustandsmaschine, digitaler Steuerlogik, einer Zentralverarbeitungseinheit oder beliebiger Hardware-, Firmware- und/oder Softwareelemente sein.
  • Einige Beispiele unter Verwendung eines Fabrikats oder mindestens eines computerlesbaren Mediums oder als ein solches implementiert sein. Ein computerlesbares Medium kann ein nicht transitorisches Speichermedium enthalten, um Logik zu speichern. In einigen Beispielen kann das nicht transitorische Speichermedium eine oder mehrere Arten von computerlesbaren Speichermedien enthalten, die elektronische Daten speichern können, einschließlich von flüchtigem Arbeitsspeicher oder nichtflüchtigem Arbeitsspeicher, entfernbarem oder nicht entfernbarem Arbeitsspeicher, löschbarem oder nicht löschbarem Arbeitsspeicher, schreibbarem oder wiederbeschreibbarem Arbeitsspeicher und so weiter. In einigen Beispielen kann die Logik verschiedene Softwareelemente enthalten, wie zum Beispiel Softwarekomponenten, Programme, Anwendungen, Computerprogramme, Anwendungsprogramme, Systemprogramme, Maschinenprogramme, Betriebssystemsoftware, Middleware, Firmware, Softwaremodule, Routinen, Subroutinen, Funktionen, Methoden, Prozeduren, Softwareschnittstellen, API, Anweisungssätze, Rechencode, Computercode, Codesegmente, Computercodesegmente, Wörter, Werte, Symbole oder eine beliebige Kombination davon.
  • Nach einigen Beispielen kann ein computerlesbares Medium ein nicht transitorisches Speichermedium enthalten, um Anweisungen zu speichern oder aufzubewahren, die, wenn sie von einer Maschine, einer Rechenvorrichtung oder einem System ausgeführt werden, die Maschine, die Rechenvorrichtung oder das System veranlassen, Verfahren und/oder Operationen in Übereinstimmung mit den beschriebenen Beispielen durchzuführen. Die Anweisungen können einen beliebigen geeigneten Typ von Code enthalten, wie Quellcode, compilierten Code, interpretierten Code, ausführbaren Code, statischen Code, dynamischen Code und dergleichen. Die Anweisungen können in Übereinstimmung mit einer vordefinierten Computersprache, Art oder Syntax zum Anweisen einer Maschine, einer Rechenvorrichtung oder eines Systems implementiert werden, um eine bestimmte Funktion durchzuführen. Die Anweisungen können unter Verwendung einer beliebigen höheren, systemnahen, objektorientierten, visuellen, compilierten und/oder interpretierten Programmiersprache implementiert werden.
  • Ein oder mehrere Aspekte mindestens eines Beispiels können durch repräsentative Befehle implementiert werden, die auf mindestens einem maschinenlesbaren Medium gespeichert sind, das verschiedene Logik innerhalb des Prozessors repräsentiert, die, wenn sie von einer Maschine, einer Rechenvorrichtung oder einem System gelesen wird, bewirkt, dass die Maschine, die Rechenvorrichtung oder das System Logik erzeugt, um die hierin beschriebenen Techniken durchzuführen. Solche Repräsentationen, als „IP-Kerne“ bekannt, können auf einem greifbaren, maschinenlesbaren Medium gespeichert und an verschiedene Kunden oder Fertigungsanlagen geliefert werden, um in die Fertigungsmaschinen geladen zu werden, die die Logik oder den Prozessor tatsächlich herstellen.
  • Das Auftreten der Phrase „ein einziges Beispiel“ oder „ein Beispiel“ bezieht sich nicht notwendigerweise immer auf das gleiche Beispiel oder die gleiche Ausführungsform. Jeder hierin beschriebene Gesichtspunkt kann mit jedem anderen hierin beschriebenen Gesichtspunkt oder einem ähnlichen Gesichtspunkt kombiniert werden, unabhängig davon, ob die Gesichtspunkte in Bezug auf dieselbe Figur oder dasselbe Element beschrieben sind. Das Aufteilen, Weglassen oder Einschließen von Blockfunktionen, die in den beigefügten Figuren dargestellt sind, lässt nicht darauf schließen, dass die Hardwarekomponenten, Schaltkreise, Software und/oder Elemente zum Implementieren dieser Funktionen notwendigerweise in Ausführungsformen aufgeteilt, weggelassen oder enthalten wären.
  • Einige Beispiele können unter Verwendung des Ausdrucks „gekoppelt“ und „verbunden“ zusammen mit deren Ableitungen beschrieben werden. Diese Begriffe sind nicht notwendigerweise als Synonyme füreinander gedacht. Zum Beispiel können Beschreibungen unter Verwendung der Ausdrücke „verbunden“ und/oder „gekoppelt“ anzeigen, dass zwei oder mehr Elemente in direktem physischem oder elektrischem Kontakt miteinander stehen. Der Ausdruck „gekoppelt“ kann jedoch auch bedeuten, dass zwei oder mehr Elemente nicht in direktem Kontakt miteinander stehen, aber dennoch miteinander zusammenarbeiten oder wechselwirken.
  • Die Begriffe „erster/erste/erstes“, „zweiter/zweite/zweites“ und dergleichen bezeichnen hierin keine Reihenfolge, Menge oder Wichtigkeit, sondern werden vielmehr verwendet, um ein Element von einem anderen zu unterscheiden. Die Begriffe „einer“, „eine“ und „eines“ bezeichnen hierin keine Beschränkung der Menge, sondern bezeichnen die Anwesenheit von mindestens einem der genannten Elemente. Der hierin in Bezug auf ein Signal verwendete Begriff „festgestellt“ bezeichnet einen Zustand des Signals, in dem das Signal aktiv ist und der durch Anlegen eines beliebigen Logikpegels, entweder logische 0 oder logische 1, auf das Signal erzielt werden kann. Die Begriffe „folgen“ oder „nach“ können unmittelbar folgend oder nach einem anderen Ereignis oder anderen Ereignissen folgend bezeichnen. Andere Abfolgen von Schritten können auch nach alternativen Ausführungsformen durchgeführt werden. Ferner können zusätzliche Schritte hinzugefügt oder entfernt werden, abhängig von den bestimmten Anwendungen. Eine beliebige Kombination von Änderungen kann verwendet werden und Durchschnittsfachleute mit dem Vorteil dieser Offenbarung würden die vielen Variationen, Modifikationen und alternativen Ausführungsformen davon verstehen.
  • Disjunktive Sprache wie der Ausdruck „mindestens eines von X, Y oder Z“ wird, sofern nicht ausdrücklich anders angegeben, im Kontext anders verstanden, als allgemein verwendet, um darzustellen, dass ein Element, ein Begriff usw. entweder X, Y oder Z oder eine beliebige Kombination davon (z. B. X, Y und/oder Z) sein können. Deshalb soll und sollte eine derartige disjunktive Sprache im Allgemeinen nicht implizieren, dass bestimmte Ausführungsformen erfordern, dass jeweils mindestens eines von X, mindestens eines von Y oder mindestens eines von Z vorhanden ist. Darüber hinaus sollte Konjunktivsprache wie der Ausdruck „mindestens eines von X, Y und Z“, sofern nicht ausdrücklich anders angegeben, auch als X, Y, Z oder eine beliebige Kombination davon verstanden werden, einschließlich „X, Y und/oder Z“.
  • Nachstehend werden veranschaulichende Beispiele der hierin offenbarten Vorrichtungen, Systeme und Verfahren bereitgestellt. Eine Ausführungsform der Vorrichtungen, Systeme und Verfahren kann eine oder mehrere und eine beliebige Kombination der nachfolgend beschriebenen Beispiele enthalten.
  • Beispiel 1 enthält eine Einrichtung, die eine Schnittstelle zu einem Arbeitsspeicher enthält; eine Schnittstelle zu einem Arbeitsspeicherpool; und eine Arbeitsspeichersteuerung, die an die Schnittstelle zum Arbeitsspeicher und an eine Schnittstelle zum Arbeitsspeicherpool gekoppelt ist, wobei die Arbeitsspeichersteuerung: eine Arbeitsspeichertransaktionsanforderung von einem Prozessor zu empfangen hat, wobei die Arbeitsspeichertransaktionsanforderung eine erste Adresse umfasst, und auf mit der ersten Adresse assoziierte Metadaten zuzugreifen hat, um zu ermitteln, ob mit der Arbeitsspeichertransaktionsanforderung assoziierte Inhalte im Arbeitsspeicher oder Arbeitsspeicherpool gespeichert sind, wobei eine Arbeitsspeicherzuordnung zum Prozessor schlank zugewiesen ist, sodass weniger physischer adressierbarer Arbeitsspeicher als die Arbeitsspeicherzuordnungskonfiguration des Prozessors zwischen dem Arbeitsspeicher und dem Arbeitsspeicherpool zugeordnet ist.
  • Beispiel 2 enthält ein beliebiges Beispiel, wobei mehrere Adressen eine Verwendung eines adressierbaren Bereichs im Arbeitsspeicher und Arbeitsspeicherpool gemeinsam nutzen.
  • Beispiel 3 enthält ein beliebiges Beispiel, wobei die Metadaten einen Positionsindikator umfassen und der Positionsindikator zu identifizieren hat, ob mit der ersten Adresse assoziierte Inhalte im Arbeitsspeicher oder dem Arbeitsspeicherpool gespeichert sind.
  • Beispiel 4 enthält ein beliebiges Beispiel, wobei: die Metadaten einen Zugriffsindikator umfassen, um eine Anzahl von mit der ersten Adresse assoziierten Zugriffen über eine Zeitspanne zu identifizieren.
  • Beispiel 5 enthält ein beliebiges Beispiel und enthält zweite Metadaten für eine zweite Adresse, wobei: die zweiten Metadaten einen Positionsindikator umfassen, um anzuzeigen, ob mit der zweiten Adresse assoziierte Inhalte im Arbeitsspeicher oder im Arbeitsspeicherpool gespeichert sind, und die zweiten Metadaten einen Zugriffsindikator umfassen, um eine Anzahl von mit der zweiten Adresse assoziierten Zugriffen über eine Zeitspanne zu identifizieren.
  • Beispiel 6 enthält ein beliebiges Beispiel, wobei die Arbeitsspeichersteuerung darauf beruht, dass der Positionsindikator der zweiten Metadaten anzeigt, dass mit der zweiten Adresse assoziierte Metadaten im Arbeitsspeicher gespeichert sind, wobei die Arbeitsspeichersteuerung auf Grundlage des mit der ersten Adresse assoziierten Zugriffsindikators und des mit der zweiten Adresse assoziierten Zugriffsindikators zu ermitteln hat, ob mit der zweiten Adresse assoziierte Inhalte zu entfernen sind.
  • Beispiel 7 enthält ein beliebiges Beispiel, wobei als Reaktion auf eine Ermittlung, mit der zweiten Adresse assoziierte Inhalte aus dem Arbeitsspeicher zu entfernen, die Arbeitsspeichersteuerung eine Speicherung von mit der zweiten Adresse assoziierten Inhalten in den Arbeitsspeicherpool zu veranlassen hat und einen Positionsindikator der zweiten Metadaten zu aktualisieren hat, um eine Position von Inhalten der zweiten Adresse als im Arbeitsspeicherpool befindlich zu identifizieren.
  • Beispiel 8 enthält ein beliebiges Beispiel, wobei: mit der ersten Adresse assoziierte Inhalte im Arbeitsspeicher oder im Arbeitsspeicherpool, aber nicht in beiden gespeichert sind.
  • Beispiel 9 enthält ein beliebiges Beispiel, wobei: mit der ersten Adresse assoziierte Inhalte im Arbeitsspeicher und im Arbeitsspeicherpool gespeichert sind.
  • Beispiel 10 enthält ein beliebiges Beispiel und enthält mehrere Arbeitsspeicherpools, die an die Arbeitsspeichersteuerung gekoppelt sind, wobei die Arbeitsspeicherpools eine redundante Speicherung von mit der ersten Adresse assoziierten Inhalten bereitstellen.
  • Beispiel 11 enthält ein beliebiges Beispiel, wobei: auf Grundlage davon, dass die Arbeitsspeichertransaktionsanforderung für die erste Adresse mit im Arbeitsspeicherpool gespeicherten Inhalten assoziiert ist, die Arbeitsspeichersteuerung eine Sendung von einer Arbeitsspeicherpool-Zugriffsanforderung mit einem Identifikator eines anfordernden Prozessors, einem Positionsidentifikator und der ersten Adresse zu veranlassen hat.
  • Beispiel 12 enthält ein beliebiges Beispiel, wobei: mehreren Prozessoren ein Zugriff auf einen gleichen ersten Adresswert zugeordnet ist und wobei eine physische Adresse im Arbeitsspeicherpool auf einer Adressenübersetzung auf Grundlage des Prozessoridentifikators, des Positionsidentifikators und der ersten Adresse beruht.
  • Beispiel 13 enthält ein beliebiges Beispiel, wobei: ein physischer Arbeitsspeicherbereich im Arbeitsspeicherpool als Reaktion auf eine Schreiboperation in den Arbeitsspeicherpool zugeordnet wird.
  • Beispiel 14 enthält ein beliebiges Beispiel, wobei der Arbeitsspeicher eines oder mehrere umfasst von: einem Zwischenspeicher und einer flüchtigen Arbeitsspeichervorrichtung.
  • Beispiel 15 enthält ein beliebiges Beispiel, wobei eine genaue Teilmenge des Arbeitsspeichers für eine schlanke Arbeitsspeicherzuweisung zugeordnet wird.
  • Beispiel 16 enthält ein beliebiges Beispiel und enthält den Arbeitsspeicherpool und einen zweiten Prozessor, wobei der Prozessor und der zweite Prozessor an den Arbeitsspeicherpool gekoppelt sind.
  • Beispiel 17 enthält ein beliebiges Beispiel und enthält den Arbeitsspeicher und den Arbeitsspeicherpool, wobei die Arbeitsspeichersteuerung, der Arbeitsspeicher und der Arbeitsspeicherpool Teil von einem oder mehreren sind von: einem Rechenzentrum, einem Rack, einem Blade oder einer Rechenplattform.
  • Beispiel 18 enthält ein nicht transitorisches computerlesbares Medium, das darauf gespeicherte Anweisungen umfasst, die, falls sie von einem oder mehreren Prozessoren ausgeführt werden, den einen oder die mehreren Prozessoren veranlassen: in einer schlank zugewiesenen Zuordnung in einem Arbeitsspeicher und Arbeitsspeicherpool auf Grundlage von Metadaten eine Adresse zu identifizieren, die mit einer Arbeitsspeichertransaktion assoziiert ist; auf Grundlage der Metadaten, die anzeigen, dass mit der Adresse assoziierte Inhalte im Arbeitsspeicher gespeichert sind, als Reaktion auf die Arbeitsspeichertransaktion auf eine zweite Adresse im Arbeitsspeicher zuzugreifen; und auf Grundlage davon, dass die Metadaten anzeigen, dass mit der Adresse assoziierte Inhalte im Arbeitsspeicher gespeichert sind, die Metadaten, eine Adresse und einen Identifikator eines Prozessors, der die Arbeitsspeichertransaktion in den Arbeitsspeicherpool erteilt hat, für eine Übersetzung in eine dritte Adresse im Arbeitsspeicherpool bereitzustellen.
  • Beispiel 19 enthält ein beliebiges Beispiel, wobei mehrere Adressen eine Verwendung eines adressierbaren Bereichs im Arbeitsspeicher und Arbeitsspeicherpool gemeinsam nutzen.
  • Beispiel 20 enthält ein beliebiges Beispiel, wobei die Metadaten einen Positionsindikator umfassen und der Positionsindikator zu identifizieren hat, ob mit der Adresse assoziierte Inhalte im Arbeitsspeicher oder dem Arbeitsspeicherpool gespeichert sind.
  • Beispiel 21 enthält ein beliebiges Beispiel, wobei mit der Adresse assoziierte Inhalte im Arbeitsspeicher oder im Arbeitsspeicherpool, aber nicht in beiden gespeichert sind.
  • Beispiel 22 enthält ein beliebiges Beispiel, wobei mit der Adresse assoziierte Inhalte sowohl im Arbeitsspeicher als auch im Arbeitsspeicherpool gespeichert sind.

Claims (15)

  1. Einrichtung, umfassend: eine Schnittstelle zu einem Arbeitsspeicher; eine Schnittstelle zu einem Arbeitsspeicherpool; und mindestens eine Arbeitsspeichersteuerung, die an die Schnittstelle zum Arbeitsspeicher und an eine Schnittstelle zum Arbeitsspeicherpool gekoppelt ist, wobei die mindestens eine Arbeitsspeichersteuerung: eine Arbeitsspeichertransaktionsanforderung von mindestens einem Prozessor zu empfangen hat, wobei die Arbeitsspeichertransaktionsanforderung eine erste Adresse umfasst und auf mit der ersten Adresse assoziierte Metadaten zuzugreifen hat, um zu ermitteln, ob mit der Arbeitsspeichertransaktionsanforderung assoziierte Inhalte im Arbeitsspeicher oder Arbeitsspeicherpool gespeichert sind, wobei eine Arbeitsspeicherzuordnung zu zwei oder mehr Prozessoren schlank zugewiesen ist, sodass weniger physischer adressierbarer Arbeitsspeicher als die Arbeitsspeicherzuordnungskonfiguration von zwei oder mehr Prozessoren zwischen dem Arbeitsspeicher und dem Arbeitsspeicherpool zugeordnet ist.
  2. Einrichtung nach Anspruch 1, wobei mehrere Adressen eine Verwendung eines adressierbaren Bereichs im Arbeitsspeicher und Arbeitsspeicherpool gemeinsam nutzen.
  3. Einrichtung nach Anspruch 1, wobei: die Metadaten einen Positionsindikator umfassen und der Positionsindikator zu identifizieren hat, ob mit der ersten Adresse assoziierte Inhalte im Arbeitsspeicher oder dem Arbeitsspeicherpool gespeichert sind, und die Metadaten einen Zugriffsindikator umfassen, um eine Anzahl von mit der ersten Adresse assoziierten Zugriffen über eine Zeitspanne zu identifizieren.
  4. Einrichtung nach Anspruch 1, umfassend zweite Metadaten für eine zweite Adresse, wobei: die zweiten Metadaten einen Positionsindikator umfassen, um anzuzeigen, ob mit der zweiten Adresse assoziierte Inhalte im Arbeitsspeicher oder dem Arbeitsspeicherpool gespeichert sind, und die zweiten Metadaten einen Zugriffsindikator umfassen, um eine Anzahl von mit der zweiten Adresse assoziierten Zugriffen über eine Zeitspanne zu identifizieren.
  5. Einrichtung nach Anspruch 4, wobei: auf Grundlage davon, dass der Positionsindikator der zweiten Metadaten anzeigt, dass mit der zweiten Adresse assoziierte Metadaten im Arbeitsspeicher gespeichert sind, die mindestens eine Steuerung auf Grundlage des mit der ersten Adresse assoziierten Zugriffsindikators und des mit der zweiten Adresse assoziierten Zugriffsindikators zu ermitteln hat, ob mit der zweiten Adresse assoziierte Inhalte zu entfernen sind, und als Reaktion auf eine Ermittlung, mit der zweiten Adresse assoziierte Inhalte aus dem Arbeitsspeicher zu entfernen, die mindestens eine Steuerung eine Speicherung von mit der zweiten Adresse assoziierten Inhalten in den Arbeitsspeicherpool zu veranlassen hat und einen Positionsindikator der zweiten Metadaten zu aktualisieren hat, um eine Position von Inhalten der zweiten Adresse als im Arbeitsspeicherpool befindlich zu identifizieren.
  6. Einrichtung nach Anspruch 5, wobei die mindestens eine Steuerung als Reaktion auf ein Entfernen von mit der zweiten Adresse assoziierten Inhalten aus dem Arbeitsspeicher eine Speicherung von Inhalten in einen verfügbaren adressierbaren Bereich im Arbeitsspeicher zu veranlassen hat.
  7. Einrichtung nach Anspruch 1, wobei: mit der ersten Adresse assoziierte Inhalte im Arbeitsspeicher oder im Arbeitsspeicherpool, aber nicht in beiden gespeichert sind.
  8. Einrichtung nach Anspruch 1, wobei: mit der ersten Adresse assoziierte Inhalte im Arbeitsspeicher und im Arbeitsspeicherpool gespeichert sind.
  9. Einrichtung nach Anspruch 1, ferner umfassend mehrere Arbeitsspeicherpools, die an die mindestens eine Steuerung gekoppelt sind, wobei die Arbeitsspeicherpools eine redundante Speicherung von mit der ersten Adresse assoziierten Inhalten bereitstellen.
  10. Einrichtung nach Anspruch 1, wobei: auf Grundlage davon, dass die Arbeitsspeichertransaktionsanforderung für die erste Adresse mit im Arbeitsspeicherpool gespeicherten Inhalten assoziiert ist, die mindestens eine Steuerung eine Sendung von einer Arbeitsspeicherpool-Zugriffsanforderung mit einem Identifikator eines anfordernden Prozessors, einem Positionsidentifikator und der ersten Adresse zu veranlassen hat.
  11. Einrichtung nach Anspruch 10, wobei mehreren Prozessoren ein Zugriff auf einen gleichen ersten Adresswert zugeordnet ist und wobei eine physische Adresse im Arbeitsspeicherpool auf einer Adressenübersetzung auf Grundlage des Prozessoridentifikators, des Positionsidentifikators und der ersten Adresse beruht.
  12. Einrichtung nach Anspruch 1, ferner umfassend den Arbeitsspeicher und den Arbeitsspeicherpool, wobei der Arbeitsspeicher eines oder mehrere umfasst von: einem Zwischenspeicher und einer flüchtigen Arbeitsspeichervorrichtung und wobei die mindestens eine Steuerung, der Arbeitsspeicher und der Arbeitsspeicherpool Teil von einem oder mehreren sind von: einem Rechenzentrum, einem Rack, einem Blade oder einer Rechenplattform.
  13. Einrichtung nach einem der Ansprüche 1-12, wobei ein physischer Arbeitsspeicherbereich im Arbeitsspeicherpool als Reaktion auf eine Schreiboperation in den Arbeitsspeicherpool zugeordnet wird und wobei eine genaue Teilmenge des Arbeitsspeichers für eine schlanke Arbeitsspeicherzuweisung zugeordnet wird.
  14. Verfahren zum Implementieren von Schritten nach einem der vorhergehenden Ansprüche.
  15. Maschinenlesbarer Speicher, der maschinenlesbare Anweisungen enthält, die bei Ausführung ein Verfahren nach einem der vorangehenden Ansprüche implementieren oder eine Einrichtung nach einem der vorangehenden Ansprüche realisieren.
DE102020130971.6A 2019-12-26 2020-11-24 Schlanke arbeitsspeicherzuweisung unter verwendung von arbeitsspeicherpools Pending DE102020130971A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/727,595 2019-12-26
US16/727,595 US20210200667A1 (en) 2019-12-26 2019-12-26 Memory thin provisioning using memory pools

Publications (1)

Publication Number Publication Date
DE102020130971A1 true DE102020130971A1 (de) 2021-07-01

Family

ID=76310606

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102020130971.6A Pending DE102020130971A1 (de) 2019-12-26 2020-11-24 Schlanke arbeitsspeicherzuweisung unter verwendung von arbeitsspeicherpools

Country Status (3)

Country Link
US (1) US20210200667A1 (de)
CN (1) CN113051188A (de)
DE (1) DE102020130971A1 (de)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210311897A1 (en) 2020-04-06 2021-10-07 Samsung Electronics Co., Ltd. Memory with cache-coherent interconnect
US11631808B2 (en) 2020-12-07 2023-04-18 Rockwell Collins, Inc. System and device including memristor material
US11462267B2 (en) * 2020-12-07 2022-10-04 Rockwell Collins, Inc. System and device including memristor material
US11456418B2 (en) 2020-09-10 2022-09-27 Rockwell Collins, Inc. System and device including memristor materials in parallel
US11469373B2 (en) 2020-09-10 2022-10-11 Rockwell Collins, Inc. System and device including memristor material
US11429518B2 (en) * 2020-12-08 2022-08-30 Microsoft Technology Licensing, Llc Paging in thin-provisioned disaggregated memory
WO2023140911A1 (en) * 2022-01-18 2023-07-27 Microsoft Technology Licensing, Llc. Systems and methods with integrated memory pooling and direct swap caching
WO2023195074A1 (ja) 2022-04-05 2023-10-12 三菱電機株式会社 オーケストレータ装置、通信システム、アプリケーション配置決定方法、制御回路および記憶媒体
CN117009264B (zh) * 2023-09-13 2023-12-19 上海云豹创芯智能科技有限公司 在soc中实现高速内存扩展的方法、系统、芯片及存储介质

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6035377A (en) * 1997-12-17 2000-03-07 Ncr Corporation Method and apparatus for determining memory pages having greatest frequency of access in a non-uniform memory access computer system
US9569459B1 (en) * 2014-03-31 2017-02-14 Amazon Technologies, Inc. Conditional writes at distributed storage services
US9983996B2 (en) * 2015-12-10 2018-05-29 Intel Corporation Technologies for managing cache memory in a distributed shared memory compute system
US9921756B2 (en) * 2015-12-29 2018-03-20 EMC IP Holding Company LLC Method and system for synchronizing an index of data blocks stored in a storage system using a shared storage module
US10769080B2 (en) * 2017-03-30 2020-09-08 Futurewei Technologies, Inc. Distributed and shared memory controller
US10417141B2 (en) * 2017-05-22 2019-09-17 Arm Limited Method and apparatus for hardware management of multiple memory pools
US20200371692A1 (en) * 2019-05-22 2020-11-26 Microsoft Technology Licensing, Llc Memory disaggregation for compute nodes

Also Published As

Publication number Publication date
US20210200667A1 (en) 2021-07-01
CN113051188A (zh) 2021-06-29

Similar Documents

Publication Publication Date Title
DE102020130971A1 (de) Schlanke arbeitsspeicherzuweisung unter verwendung von arbeitsspeicherpools
US20210149812A1 (en) Network interface controller with eviction cache
DE102020125046A1 (de) Konfigurationsschnittstelle zum auslagern von fähigkeiten an eine netzwerkschnittstelle
US11625321B2 (en) Apparatuses and methods for memory address translation during block migration using depth mapping table based on mapping state
DE102020007986A1 (de) Proaktiver daten-vorabruf mit angewandter quality-of-service
US10476670B2 (en) Technologies for providing remote access to a shared memory pool
DE112018004798T5 (de) Technologien für ein bereitstellen von effizientem speicherzugriff auf einem beschleunigerschlitten
DE112020006967T5 (de) Performanceüberwachung für kurzlebige funktionen
US20210019069A1 (en) Memory and storage pool interfaces
TWI646423B (zh) 針對大型共享位址空間之映射機構
DE102020133273A1 (de) Leistungsüberwachung und Ressorcenverwaltung
DE102020130965A1 (de) Technologien für rasches booten mit fehlerkorrekturcode-arbeitsspeicher
DE102020110582A1 (de) TECHNOLOGIEN ZUR AUTOMATISCHEN ARBEITSLASTERKENNUNG UND CACHE-QoS-RICHTLINIENANWENDUNG
DE102020113279A1 (de) Technologien zum managen von burst-bandbreite
DE102022124530A1 (de) Speicherpoolmanagement
CN111752872A (zh) 用于灵活i/o端点加速的技术
DE102020118312A1 (de) Technologien zum verwalten von disaggregierten beschleunigernetzwerken basierend auf remote direct memory access
US11989135B2 (en) Programmable address range engine for larger region sizes
DE102020128675A1 (de) Puffer zum verringern von schreibverstärkung fehlausgerichteter schreiboperationen
DE102022124481A1 (de) Dynamische zuweisung von cache-ressourcen
DE102020114020A1 (de) Technologien zum bereitstellen von effizientem nachrichten-polling
DE102018212476A1 (de) Technologien zum bereitstellen von effizientem pooling für eine hyperkonvergente infrastruktur
DE102018212478A1 (de) Technologien zum bereitstellen eines aufgeteilten speicherpools für vollständige rackkonnektivität