DE102014117462A1 - Poolen von Speicherressourcen über mehrere Knoten hinweg - Google Patents

Poolen von Speicherressourcen über mehrere Knoten hinweg Download PDF

Info

Publication number
DE102014117462A1
DE102014117462A1 DE102014117462.3A DE102014117462A DE102014117462A1 DE 102014117462 A1 DE102014117462 A1 DE 102014117462A1 DE 102014117462 A DE102014117462 A DE 102014117462A DE 102014117462 A1 DE102014117462 A1 DE 102014117462A1
Authority
DE
Germany
Prior art keywords
memory
storage
node
nodes
shared memory
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
DE102014117462.3A
Other languages
English (en)
Inventor
Debendra Das Sharma
Mohan J. Kumar
Balin T. Fleischer
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 DE102014117462A1 publication Critical patent/DE102014117462A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • 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
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
    • 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/061Improving I/O performance
    • 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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5011Pool

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)
  • Software Systems (AREA)
  • Memory System (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

Ein Apparat zum Poolen von Speicherressourcen über mehrere Knoten hinweg wird hierin beschrieben. Der Apparat schließt einen gemeinsamen Speicher-Controller, in welchem jeder der mehreren Knoten mit einem gemeinsamen Speicher-Controller verbunden ist. Der Apparat enthält einen Speicherpool der mit einem gemeinsamen Speicher-Controller verbunden ist, in welchem ein Teil des Speicherpools jedem der mehreren Knoten zugeteilt ist.

Description

  • Technisches Gebiet
  • Diese Offenbarung bezieht sich generell auf Speicherressourcen in einem Mehrknotensystem. Genauer gesagt, bezieht sich die Offenbarung auf das Poolen von Speicherressourcen über mehrere Knoten hinweg.
  • Hintergrund
  • Ein System kann verschiedene Knoten beinhalten, die alle eine bestimmte Funktion erfüllen. Das System enthält, aber ist nicht beschränkt auf, ein Netzwerk oder Rack-Serversystem und dergleichen. In einigen Fällen können die verschiedenen Knoten zusammenarbeiten, um eine ähnliche Aufgabe fertigzustellen. Die Knoten können auch verschiedene Aufgaben ohne Bezug auf die Aufgaben erfüllen, die von anderen Knoten des Systems erfüllt werden. Das System könnte auch Ressourcen wie Rechenressourcen, Speicherressourcen und Eingangs-/Ausgangsressourcen (E/A) beinhalten. Wenn ein Prozess innerhalb eines Knotens des Netzwerks versucht auf eine Speicheranfrage zuzugreifen, kann auf Speichermanagementanfragen eines E/A-Stacks zugegriffen werden, um die Speicheranforderung zu vollenden.
  • Kurze Beschreibung der Zeichnungen
  • Die folgende detaillierte Beschreibung kann besser verstanden werden unter Bezugnahme auf die begleitenden Zeichnungen, welche spezifische Beispiele einer Vielzahl von Objekten und Merkmalen der offengelegten Materie beinhalten.
  • 1 ist ein Blockdiagramm eines Knoten 100, der auf gepoolte Speicherressourcen zugreifen kann;
  • 2 ist eine Illustration eines Mehrknotensystems mit Zugang zu gepooltem/disaggregierten Speicher durch einen oder mehrere gemeinsame Speicher-Controller (Shared Memory Controllers – SMC);
  • 3 ist eine Illustration eines disaggregierten Speichers, der jedem Knoten für verschiedene Aufgaben zugeteilt ist; und
  • 4 ist ein Prozess-Flussdiagramm zum Poolen von Speicherressourcen über mehrere Knoten hinweg.
  • In der gesamten Offenbarung und in den Figuren werden dieselben Bezugsnummern verwendet, um auf gleiche Komponenten und Merkmale zu verweisen. Nummern der 100-Serie beziehen sich auf Merkmale, die ursprünglich in 1 zu finden sind, Nummern der 200-Serie beziehen sich auf Merkmale, die ursprünglich in 2 zu finden sind, usw.
  • Beschreibung der Ausführungsformen
  • In einem Mehrknotensystem, kann eine Reihe von Ressourcen dynamisch an verschiedene Knoten zugewiesen werden, abhängig von der Nachfrage an jedem Knoten. Wie oben besprochen, wird auf Speicherressourcen typischerweise durch einen E/A-Stack, wie das Transmission Control Protocol und Internet Protocol (TCP/IP) oder InfiniBand (IB) zugegriffen. Die Benutzung eines E/A-Stacks zur Unterstützung von Speicherdienstleistungen bezieht eine Vielzahl von Schichten von Softwareinteraktion ein. Zum Beispiel ist der E/A-Stack einbezogen, während Ladevorgängen, Speichervorgängen, Lesevorgängen, Schreibvorgängen, Nachfragevorgängen. Als ein Ergebnis, kann der Speicherzugang eines Knotens unter übermäßiger Wartezeit und Engpässen leiden, die aus der Nutzung des E/A-Stacks resultieren. Selbst wenn ein System einen Speicherserver einschließt, benötigt der E/A-Stack immernoch zugeordneten Speicher an jedem Knoten, um auf den Speicherserver zuzugreifen.
  • Hierin beschriebene Ausführungsformen beziehen sich auf das Poolen von Speicherressourcen über mehrere Knoten hinweg. In Ausführungsformen ist jeder Knoten eines Mehrknotensystems mit einem oder mehreren gemeinsamen Speicher-Controllern verbunden. Jeder Knoten ist mit einem oder mehreren gemeinsamen Speicher-Controllern verbunden. Jeder gemeinsame Speicher-Controller ist mit einem Speicherpool verbunden, welcher eine Kombination aus Dynamic Random Access Memory (DRAM), Festkörperlaufwerk (Solid State Drive – SSD), oder jedem anderen nichtflüchtigen Speicher (Non-Volatile Memory – NVM) oder Speichertechnologie sein kann. Der gemeinsame Speicher-Controller stellt sowohl lade- und speicherbasierten linearen Speicherzugriff unter Nutzung von flüchtigem und nicht-flüchtigem Speicher als auch Blockmodus-Speicherzugriff zu jedem Knoten bereit. Jeder Knoten greift auf den Teil des Speicherpools zu, der diesem spezifischen Knoten zugeteilt ist. In einigen Ausführungsformen ist jeder Knoten eines Mehrknotensystems mit einem oder mehreren gemeinsamen Speicher-Controllern gekoppelt, welche wiederum mit einem Speicherpool gekoppelt sind.
  • In der folgenden Beschreibung und den Ansprüchen können die Begriffe „gekoppelt” und „verbunden” gemeinsam mit ihren Ableitungen verwendet sein. Es sollte selbstverständlich sein, dass diese Begriffe nicht als Synonyme füreinander zu verstehen sind. Vielmehr kann bei bestimmten Ausführungsformen „verbunden” verwendet werden, um anzuzeigen, dass zwei oder mehr Elemente in direktem physischen oder elektrischen Kontakt miteinander stehen. „Gekoppelt” kann bedeuten, dass zwei oder mehr Elemente in direktem physischen oder elektrischen Kontakt stehen. Jedoch kann „gekoppelt” auch bedeuten, dass zwei oder mehr Elemente nicht in direktem Kontakt miteinander sind, trotzdem aber miteinander arbeiten oder interagieren.
  • Einige Ausführungsformen können in einer oder einer Kombination von Hardware, Firmware und Software implementiert werden. Einige Ausführungsformen können auch als auf einem maschinenlesbaren Medium gespeicherte Anweisungen implementiert werden, die von einer Computerplattform gelesen und ausgeführt werden können, um die hier beschriebenen Operationen auszuführen. Ein maschinenlesbares Medium kann jeden Mechanismus für das Speichern oder Senden von Information in einer durch eine Maschine (z. B. ein Computer) lesbaren Form enthalten. Zum Beispiel kann ein maschinenlesbares Medium u. a. Read Only Memory (ROM), Random Access Memory (RAM), Magnetplattenspeichermedien, optische Speichermedien, Flash-Speicher-Geräte beinhalten. Eine Ausführungsform ist eine Implementierung oder ein Beispiel. Die Bezugnahme auf „eine Ausführungsform”, „einige Ausführungsformen”, „verschiedene Ausführungsformen” oder „andere Ausführungsformen” bedeutet, dass eine bestimmte Funktion, Struktur oder ein bestimmtes Merkmal, die/das im Zusammenhang mit den Ausführungsformen beschrieben wird, in mindestens einigen Ausführungsformen, aber nicht notwendigerweise allen Ausführungsformen der Erfindungen eingeschlossen ist. Die verschiedenen Aufführungen von „eine Ausführungsform” oder „einige Ausführungsformen” beziehen sich nicht notwendigerweise auf dieselben Ausführungsformen. Elemente oder Aspekte einer Ausführungsform können mit Elementen oder Aspekten einer anderen Ausführungsform kombiniert werden.
  • Nicht alle Komponenten, Funktionen, Strukturen, Merkmale usw., die hier beschrieben und gezeigt sind, müssen in einer bestimmten Ausführungsform oder Ausführungsformen enthalten sein. Wenn die Beschreibung einer Komponente, eines Merkmals, einer Struktur oder einer Charakteristik aussagt, dass sie/es enthalten sein „kann” oder „könnte”, dann ist es zum Beispiel für diese bestimmte Komponente, ein bestimmtes Merkmal, eine bestimmte Struktur oder Charakteristik nicht erforderlich, enthalten zu sein. Wenn in der Beschreibung oder den Ansprüchen Bezug auf „ein” Element genommen wird, bedeutet das nicht, dass es nur eines von diesem Element gibt. Wenn die Beschreibung oder die Ansprüche Bezug auf „ein zusätzliches” Element nehmen, schließt das nicht aus, dass es dort mehr als ein zusätzliches Element gibt.
  • Es ist zu beachten, dass, obwohl einige Ausführungsformen in Bezugnahme auf bestimmte Implementierungen beschrieben wurden, sind andere Implementierungen gemäß einiger Ausführungsformen möglich. Zusätzlich brauchen die Anordnung und/oder Reihenfolge von Schaltelementen oder anderen Merkmalen, die in den Zeichnungen gezeigt und/oder hier beschrieben sind, nicht auf die bestimmte gezeigte und beschriebene Weise angeordnet sein. Viele andere Anordnungen sind gemäß einiger Ausführungsformen möglich.
  • Bei jedem in einer Figur gezeigten System können die Elemente in einigen Fällen jeweils dieselbe Referenznummer oder eine unterschiedliche Referenznummer aufweisen, um anzudeuten, dass die repräsentierten Elemente unterschiedlich und/oder ähnlich sein könnten. Ein Element kann jedoch flexibel genug sein, um unterschiedliche Implementierungen zu haben und es kann mit einigen oder allen hier dargestellten oder beschriebenen Systemen funktionieren. Die verschiedenen in den Figuren dargestellten Elemente können dieselben Elemente oder sie können unterschiedlich sein. Welches ein erstes Element genannt wird und welches ein zweites Element, ist willkürlich.
  • 1 ist ein Blockdiagramm eines Knotens 100, der auf gepoolte Speicherressourcen zugreifen kann. Der Knoten 100 kann u. a. zum Beispiel ein Laptop, Computer, Desktop-Computer, Tablet-Computer, mobiles Gerät, Server oder Blade-Server sein. In einigen Beispielen ist ein Knoten jedes beliebige Gerät, dass in der Lage ist, über ein Mehrknotensystem hinweg mit einem anderen Knoten zu kommunizieren. Dementsprechend ist in einigen Beispielen das Mehrknotensystem ein Netzwerk von Knoten, wo jeder Knoten jedes beliebige Gerät ist, dass in der Lage ist, über das Netzwerk hinweg zu kommunizieren. Zusätzlich ist in einigen Beispielen der Mehrknoten ein Server in einem Rack-Serversystem. Der Knoten 100 kann eine zentralen Verarbeitungseinheit (Central Processing Unit – CPU) 102 beinhalten, die dazu konfiguriert ist gespeicherte Anweisungen auszuführen. Die CPU 102 kann ein Einkernprozessor, ein Mehrkernprozessor, ein Computercluster oder jede beliebige Anzahl anderer Konfigurationen sein. In einigen Fällen kann die CPU 102 und andere Komponenten des Knotens 100 als ein System an Chip (SOC) implementiert werden. Zudem kann der Knoten 100 mehr als eine CPU 102 beinhalten. Die Anweisungen, die von der CPU 102 ausgeführt werden, können benutzt werden, um das Poolen von Speicherressourcen über mehrere Knoten hinweg zu ermöglichen.
  • Der Knoten 100 kann außerdem einen Grafikprozessor (graphics processing unit – GPU) 104 beinhalten. Wie dargestellt, kann die CPU 102 über Bus 106 mit der GPU 104 verbunden sein. Dennoch können sich die CPU 102 und die GPU 104 in einigen Ausführungsformen auf dem selben Chip befinden. Die GPU 104 kann dazu konfiguriert werden, eine beliebige Anzahl von Grafikoperationen innerhalb des Knotens 100 auszuführen. Die GPU 104 kann zum Beispiel dazu konfiguriert werden, grafische Bilder, grafische Frames, Videos oder ähnliches darstellen oder manipulieren, um von einem Benutzer des Knotens 100 angezeigt zu werden. Dennoch enthält der Knoten 100 in einigen Fällen keine GPU 104.
  • Die CPU 102 kann auch durch den Bus 106 durch einen CPU Eingang/Ausgang (E/A) verbunden werden. In Ausführungsformen wird die CPU E/A 108 so gebraucht, dass CPU 102 auf gepoolten Speicher in einem Mehrknotensystem zugreifen kann. Die CPU 102 kann auf den gepoolten Speicher zugreifen ohne innerhalb des Knotens 100 zugeteilten Speicher einzuschließen. Weiterhin kann der CPU E/A 108 auf gepoolten Speicher innerhalb des Mehrknotensystem ohne die Nutzung von Kommunikations- und Networkingprotokollen, wie Transmission Control Protocol and Internet Protocol (TCP/IP) und InfiniBand (IB), zugreifen. In Ausführungsformen wird ein Link, wie z. B. eine Plattsmouth (PLM) Link 110 benutzt, um jeden Knoten mit einem gemeinsamen Speicher-Controller zu verbinden, der mit auf Speichersemantik basierten Protokollen auf einer seriellen Verbindung läuft. Eine Peripheral Component Interconnect Express (PCIe) Link 112 kann benutzt werden, um die CPU 102 mit einem Netzwerk zu verbinden.
  • Die CPU 102 kann außerdem über Bus 106 mit einer Eingangs-/Ausgangsschnittstelle (E/A) 114 verbunden werden, um den Knoten 100 mit einem oder mehreren E/A-Geräten 116 zu verbinden. Die E/A-Geräte 116 können z. B. eine Tastatur und ein Zeigegerät umfassen, wobei das Zeigegerät u. a. ein Touchpad oder einen Touchscreen umfassen kann. Die E/A-Geräte 116 können eingebaute Komponenten des Knotens 100 sein oder sie können Geräte sein, die extern mit Knoten 100 verbunden sind. CPU 102 kann über Bus 106 mit einer Displayschnittstelle 118 verbunden werden, um den Knoten 100 mit einem Anzeigegerät 120 zu verbinden. Das Anzeigegerät 120 kann einen Anzeigebildschirm beinhalten, der eine eingebaute Komponente des Knotens 100 ist. Das Anzeigegerät 120 kann außerdem u. a. einen Computermonitor, ein Fernsehgerät oder einen Projektor beinhalten, der extern mit Knoten 100 verbunden ist.
  • Das Blockdiagramm von 1 soll nicht anzeigen, dass der Knoten 100 alle von den in 1 darstellten Komponenten beinhalten muss. Außerdem kann der Knoten 100 je nach Details der spezifischen Implementierung eine beliebige Anzahl von zusätzlichen, in 1 nicht dargestellten Komponenten beinhalten. Weiterhin kann der Knoten 100 weniger Komponenten beinhalten, als die in 1 illustrierten. Zum Beispiel kann der Knoten 100 nicht eine GPU 104, E/A Geräteschnittstelle 114 oder Anzeigeschnittstelle 118 einschließen. 2 ist eine Illustration eines Mehrknotensystems 200. Das Mehrknotensystem kann einen gepoolten Speicher 202 beinhalten. Der gepoolte Speicher 202 kann jede andere Art von Speichertechnologie, wie z. B. Random Access Memory (RAM), Read Only Memory (ROM), Flash-Speicher oder jedes andere geeignete Speichersystem beinhalten. Der gepoolte Speicher 202 kann beispielsweise ein Dynamic Random Access Memory (DRAM) beinhalten. Der gepoolte Speicher 202 kann auch physischer Speicher, wie eine Festplatte, ein optisches Laufwerk, ein Thumbdrive oder eine Reihe von Laufwerken oder jede beliebige Kombination derselben sein. In einigen Ausführungsformen enthält der gepoolte Speicher DIMMs (Dual In-line Memory Module). In einigen Fällen können diese DIMMs die nächste Generation von auf nichtflüchtigen Speichern(Non-Volatile Memory – NVM)-basierenden DIMMs sein, was eine größere Speicherkapazität und sowohl beständige als auch volatile Speichercharakteristika ermöglicht. Zusätzlich kann in Ausführungsformen ein DIMM mit einem anderen Formfaktor ersetzt werden, der eine Sammlung von einem oder mehreren Speichergeräten ist. Das Konzept des gepoolte Speichers 202 kann auf verschiedene Server (z. B. Cloud Computing, Enterprise), High-Performance-Computing und Clientnutzung, anwendbar sein. Auf den gepoolten Speicher kann durch einen gemeinsamen Speicher-Controller 204 zugegriffen werden. Obwohl ein gemeinsamer Speicher-Controller 204 illustriert ist, kann das System 200 jede beliebige Anzahl von gemeinsamen Speicher-Controllern haben. Der gemeinsame Speicher-Controller 204 kann mehrere DIMMS hosten. Der gemeinsame Speicher-Controller 204 kann Double Date Rate (DDR) Busse, transaktionale DDR (DDR-T) Busse und andere Links/Busse unterstützen, die Verbindungen mit verschiedenen Speichern ermöglichen, die in den Speicherpool 202 eingeschlossen werden können, einschließlich DRAM und nichtflüchtigen DIMM (NVDIMM). Der gepoolte Speicher kann auch eine andere Speicherhierarchie, wie den zweistufigen Speicher (two level memory – 2LM) unterstützen, indem er die ”Far Memory” hostet, und damit die Memory-Side-Caching-Fähigkeit im integrierten Speicherkontroller (integrated Memory Controller – iMC) auf jedem Knoten übernimmt.
  • Ein Knoten 100A und ein Knoten 100B sind auch im System eingeschlossen. Obwohl das System 200 zwei mit dem gemeinsamen Speicher-Controller verbundene Knoten illustriert, kann jede beliebige Anzahl von Knoten direkt mit mehreren gemeinsamen Speicher-Controllern verbunden werden. Die Knoten 100A und 100B können sich mit dem gemeinsamen Speicher-Controller 204 verbinden, um auf den gepoolten Speicher 202 zuzugreifen. Ein Plattsmouth (PLM) Link wird benutzt, um jeden Knoten mit einem gemeinsamen Speicher-Controller zu verbinden. Der PLM kann beide Speichersemantiken mit optionalen Verzeichnisinformationen unterstützen, die in bestehenden Speicherprotokollen von Intel, wie z. B. dem SMI3 und oder einem E/A-Protokoll mit Lade- und Speicherfunktion, wie z. B. dem Peripheral Component Interconnect Express (PCIe) Protokoll vorhanden sind. In Ausführungsformen kann jeder Link, der Speichersemantiken und ein E/A-Protokoll unter Nutzung einer gemeinsamen Reihe von Pins unterstützen kann, benutzt werden, um einen Knoten mit einem gemeinsamen Speicher-Controller zu verbinden. In Ausführungsformen kann der PLM durch die Nutzung einer physikalen Ebene der PCIe-Architektur implementiert werden. Zusätzlich zur E/A-Funktionalität, die durch die PCIe-Architektur ermöglicht wird, werden direkte Speichersemantiken unter Nutzung gemeinsamer PCIe-Pins ermöglicht. Die Speichersemantiken ermöglichen es jedem Knoten mit dem Speicherpool zu kommunizieren, als ob er direkt mit dem Speicherpool verbunden wäre. Zum Beispiel kann der PLM Directory Information, Speicheradressenstellen und Blockspeicherstellen auf einer gemeinsamen Reihe von PCIe-Pins schicken. Auf diese Art kann der Knoten einen Standardlink benutzen, um Zugriff zu jedem beliebigen Speicher, der mit dem gemeinsamen Speicher-Controller verbunden ist, zu erhalten. Der Knoten kann ohne jegliche Re-Validierung des gepoolten Speichers aktualisiert werden, da die Verbindung zwischen dem Knoten und dem Speicherpool konstant bleibt. Zusätzlich können Speicherupgradezyklen unabhängig von CPU-Upgradezyklen sein. Zum Beispiel kann der Speicherpool nach mehreren CPU-Upgrades ersetzt werden, was dem Kunden erhebliche Kosten erspart.
  • In Ausführungsformen können mehrere gemeinsame Speicher-Controller miteinander durch PLM Links verbunden werden. Mehrere gemeinsame Speicher-Controller können auch miteinander durch einen herkömmlichen Netzwerk-Stack wie Ethernet, Infiniband, StormLake und so weiter verbunden werden, solange die Netzwerkhardware in der Lage ist, Datenpakete oder Flusskontrollziffern (flow control digits – Flits) zu den gemeinsamen Speicher-Controllern am Ziel zu liefern. Besonders die herkömmliche Netzwerkhardware kann unabhängige virtuelle Spuren nutzen, um Servicequalität für das PLM-Protokoll zu ermöglichen. In jedem Fall ermöglicht/ermöglichen einer oder mehrere gemeinsame Speicher-Controller direkten Speicherzugriff durch Hardware ohne softwareinduzierte Wartezeit.
  • Zusätzlich dazu können sich der gemeinsame Speicher-Controller 204 und die Knoten 100A und 100B mit dem Netzwerkverbindungsblock 206 verbinden. In einigen Ausführungsformen ist der Netzwerkverbindungsblock ein Network Interface Controller (NIC), der dazu konfiguriert werden kann, die Knoten 100A und 100B und jeden der gemeinsamen Speicher-Controller 204 mit einem Netzwerk 208 zu verbinden. Das Netzwerk 208 kann eine Festnetzverbindung, eine kabelloses Netzwerk oder ein Mobilfunknetzwerk sein. Das Netzwerk 208 kann unter anderem ein Wide Area Network (WAN, Weitverkehrsnetz), ein Local Area Network (LAN, lokales Netzwerk) oder das Internet sein. Zum Beispiel kann Netzwerk 208 ein 3GPP LTE Netzwerk oder ein WiFi Netzwerk sein. Dementsprechend sind die Knoten 100A und Knoten 100B nicht auf die Art der Verbindung begrenzt. Stattdessen können die Knoten sich mit verschiedenen Ressourcen unter Nutzung mehrerer Links verbinden. In einigen Fällen, gibt das Netzwerk 208 Zugriff auf zusätzliche Speichergeräte und Speicherlaufwerke und der gemeinsame Speicher-Controller 204 kann das Netzwerk 208 benutzen, um die zusätzlichen Speichergeräte und Speicherlaufwerke zuzuteilen.
  • 3 ist eine Illustration eines disaggregierten/gepoolten Speichers, der verschiedenen Knoten zugeteilt ist. Ein Speicher 202 kann an einen gemeinsamen Speicher-Controller gekoppelt sein. Jeder der Knoten 100A, 100B und 100C benutzen den gemeinsamen Speicher-Controller um auf den gepoolten Speicher 202 zuzugreifen. In 3 ist der gepoolte Speicher ist als Tray nichtflüchtigen Speichers (NVM) illustriert, wie z. B. Tray nichtflüchtigen Speichers (NVM), der in Rack-Serversystemen eingeschlossen ist. Der Tray nichtflüchtigen Speichers (NVM) schließt eine Illustration eines disaggregierten Speichers 300 ein.
  • Der gepoolte 202 Speicher kann standard flüchtige DRAM DIMMs oder nichtflüchtige DIMMs (NVDIMMs) beinhalten. Wenn NVDIMMs benutzt werden, um den Speicherpool zu bauen, kann der Speicher als ein Speichergerät funktionieren. Dementsprechend kann auf den Speicherpool unter Nutzung von Speicherblöcken zugegriffen werden, da es ein typisches Speichergerät anstatt ein linearer Speicherzugriff ist, der auf Datenbytes linear zugreift. In einigen Ausführungsformen ist der disaggregierte Speicher 300 in drei Arten von Speicher partitioniert: einem Fernspeicher (far memory – FM) 306, einem peristenten Speicher (persistent memory – PM) 304 und einem Blockspeicher (block memory – BM) 302. Der FM stellt den herkömmlichen flüchtigen Speicher dar, wie die einem Knoten zugehörigen Speicherinhalte verloren gehen, nachdem der Knoten aufgrund von Ausschalten, systemmanagementinduzierter Resets usw. zurückgesetzt wird. Auf den PM wird als regulärer Speicher direkt von der CPU unter Nutzung des traditionellen Lade-/Speichermodells zugegriffen. Dennoch werden Speicherinhalte über Resets/Ausschalten hinweg erhalten. Jeder der FM 306 und PM 304 können durch Memory-Side-Caching basierter Architektur ermöglicht werden. Der Speicherpool 202 kann auf variable Art in FM 306, PM 304 und BM 302 eingeteilt werden. Der BM 302 ist Speicher, der ähnlich dem ist, der im Speichergerät enthalten ist. Auf den BM 302 wird durch Operationen zugegriffen, die Speicherblöcke nutzen, indem er auf einen Softwaredriver im Knoten zugreift.
  • Der gemeinsame Speicher-Controller steuert die Teilung des Speichers zwischen FM 306, PM 304 und BM 302. Der gemeinsame Speicher-Controller steuert auch die Zuteilung des Speichers zu jedem Knoten. Dementsprechend wird jedem der Knoten 100A, 100B und 100C ein Teil des disaggregierten Speichers 300 zugeteilt. Der gemeinsame Speicher-Controller kann Register enthalten, die die Speicherteilung durchführen, welche für jede Speicherregion jedes Knotens gemappt werden können. Die Speicherregion jedes Knotens kann im Fall eines Blockspeichers eine E/A oder MMIO (memory mapped I/O [E/A]) zugängliche Region sein. In einigen Fällen kann die Speichermenge, die jedem Knoten zugeteilt ist, durch einen Tray-/Rackmanagement Stack verändert werden. Weiterhin kann in einigen Fällen der Speicher, der mit einem ersten gemeinsamen Speicher-Controller verbunden ist auch einem Knoten zugewiesen werden, der nicht direkt mit dem ersten gemeinsamen Speicher-Controller verbunden ist. Wenn Speicher in einem ersten, entfernten gemeinsamen Speicher-Controller zu einem Knoten gemappt werden kann, erhält ein zweiter, lokaler gemeinsamer Speicher-Controller die Adressinformation für den entfernten gemeinsamen Speicher-Controller aufrecht, um die Zugriffe angemessen zu routen.
  • In Ausführungsformen wird jeder der Knoten einem oder mehreren virtuellen DIMMs (VDIMMs) zugewiesen, basierend auf der Anzahl von Knotenpartitionen, die der Knoten erhält. Der VDIMM kann einer teilweiser DIMM sein oder der VDIMM kann mehrere physische DIMMs (voll und/oder teilweise) umspannen. Knotenidentifikationen (IDs) können jedem VDIMM durch einen oder mehrere gemeinsame Speicher-Controller zugewiesen werden, so dass sie Requests/Responses zu unabhängigen Knoten vereindeutigt werden können. Es ist zu beachten, dass die gleichen Knoten-IDs durch die gemeinsamer Speicher-Controller/Inter-SMC-Links (SMC = Shared Memory Controller = gemeinsamer Speicher-Controller) hinweg aufrechterhalten werden, um den gemeinsamen Speicher-Controller und den Knoten innerhalb des gemeinsamer Speicher-Controllers zu identifizieren, woher der Request kam und/oder die Response, die dahin geliefert werden muss. Durch den VDIMM nehmen die Knoten andere Knoten nicht wahr, die den physischen Speicher und Speichergeräte mit ihm teilen, die die VDIMM bilden. Der Knoten kann jede Operation auf dem VDIMM-Level durchführen, wie einen Reset, Hot-Add und Hot-Remove. Der eine oder die mehreren gemeinsamen Speicher-Controller nehmen die VDIMMs wahr, die jedem Knoten zugeteilt sind und jeder gemeinsamer Speicher-Controller steuert die Befehle, die es für die VDIMMs empfängt. Der gemeinsamer Speicher-Controller erhält die Knoten-ID zusammen mit der Adresse oder VDIMM-Nummer aufrecht, so dass der gemeinsamer Speicher-Controller diese benutzen kann, um zwischen Speicherzugang und verschiedenen Knoten zu vereindeutigen.
  • Obwohl der die Knotenpartitionen als benachbarte Speichergebiete illustriert sind, können die Knotenpartitionen innerhalb des Speicherpools nicht benachbart sein. Weiterhin, obwohl die Knotenpartitionen als zu einem Tray nichtflüchtigen Speichers gehörend illustriert sind, der von einem gemeinsamen Speicher-Controller kontrolliert wird, können die Knotenpartitionen 300 Speicher darstellen, der aus mehreren gemeinsamen Speicher-Controllern aggregiert wird, die auf einen oder mehrere Ort(e) zugreifen kann, die jede Art von Speicher oder Speichergerät beinhalten. Zum Beispiel können die Knotenpartitionen auch Speicher beinhalten, auf die über einen Netzwerkchip zugegriffen werden kann.
  • 4 ist ein Prozess-Flussdiagramm zum Poolen von Speicherressourcen über mehrere Knoten hinweg. Bei Block 402 ist ein Speicherpool durch den Rack-/Traycontroller einer Reihe von Knoten zugeteilt, die entweder direkt mit dem gemeinsamen Speicher-Controller verbunden sind oder durch ein entfernten gemeinsamer Speicher-Controller verbunden sind. Es ist zu beachten, dass Block 402 Speicher über mehrere gemeinsame Speicher-Controller hinweg zuweisen kann. In einigen Fällen, ist der Speicherpool in Fernspeicher, persistenten Speicher und Blockspeicher eingeteilt. Bei Block 404 ist der zugeteilte Speicherpool zur Speicherregion jedes Knotens gemappt. Wenn die Systemsoftware eines Knotens (wie z. B. BIOS/OS/VMM) Speicher anfordert (Fernspeicher, persistenten Speicher und/oder Blockspeicher), teilt der Rack-/Traycontroller den angeforderten Speicher aus dem Speicherpool, wie in Block 402 beschrieben, zu. In dem Prozess, stellt der Knoten seine Kennfeldinformationen für den angeforderten Speicher bereit und der Rack-/Traycontroller stellt den/die gemeinsamen Speicher-Controller mit der angemessenen Kennfeldinformation aus der Perspektive des Knotens auf. Jeder gemeinsame Speicher-Controller speichert auch Informationen bezüglich dazu, wie jeder Knoten den gesamte gepoolte Speicher-Adressraum mappt. Bei Block 406 kann jeder Knoten direkt auf seinen zugeteilten Teil des Speicherpools zugreifen, indem er einen gemeinsamen Speicher-Controller ohne zusätzlichen Software-Overhead nutzt. Das Poolen von Speicher ermöglicht es, dass Daten von Knoten ohne Message-Passing und Kopieren von Daten gemeinsam benutzt werden können. Zusätzlich dazu können die gegenwärtigen Techniken dazu in der Lage sein, Speicher effizienter zu benutzen und physische Speichergeräte können zwischen mehreren Knoten geteilt werden, wobei jeder Knoten nicht wahrnimmt, dass das physische Speichergerät gemeinsam benutzt wird, da jeder Knoten nur auf den Speicher zugreifen kann, der ihm zugeteilt ist. Dies ist eine kosteneffektive Zuteilung von Speicher, die teilweise DIMM-Zuweisung an die Knoten ermöglicht, welche als Speicherkapazitätserweiterungen nützlich sind. Das Poolen von Speicher ermöglicht eine höhere Rechendichte, da der Speicher, der zum Rechnen benutzt wird von anderem Speicher disaggregiert ist. Auf diese Art kann mehr Speicher im Mehrknotensystem frei für Rechenknoten sein.
  • In einigen Fällen kann der gemeinsamen Speicher-Controller flexible Speicherzuteilung basierend auf Nachfrage von anderen Knoten ermöglichen. In einem solchen Szenario kann Speicherzuteilung sich basierend auf einer von jedem Knoten ausgeführten Arbeitslast verändern. Die Speicherzuteilung kann einem Knoten durch eine Memory Map zugewiesen werden. Weiterhin ermöglicht Speicherpooling, verglichen mit anderen Systemen ohne Speicherpooling größere Energieeffizienz, da jeder Knoten nicht mit der maximalen Speicherkapazität überversorgt ist, die er brauchen könnte.
  • Zusätzlich dazu kann in einigen Fällen ein Speicherserver genutzt werden, um Speicher zu poolen. In einem solchen Szenario kann ein Knoten zusätzlichen Speicher enthalten, den er anderen Knoten bereitstellt, basierend auf deren Nachfrage. Der zusätzliche Speicher kann entsprechend einem Betriebssystem oder der Nachfrage virtueller Maschinen bereitgestellt werden. Speicher-Clustering kann auch durch ein in-memory Datenraster verfügbar sein. Weiterhin können Replikationsdienstleistungen durch die gegenwärtigen Techniken für persistenten Speicher innerhalb von oder über Trays hinweg ermöglicht werden. In unserem Gebrauch kann nichtflüchtiger Speicher als beides – flüchtiger Hauptspeicher (FM) und nichtflüchtiger Speicher, wiederum als beides – memory-mapped (PM) und als ein block-mapped E/A-Gerät (BM) genutzt werden. Als Ergebnis kann der nichtflüchtige Speicher als ein Speicher gemappt, im Gegensatz zu einem E/A-Gerät gemappt werden, was Performanceauswirkungen hat. Den nichtflüchtigen Speicher als nichtflüchtigen Speicher zu mappen, während der nichtflüchtige Speicher als Speichergerät benutzt wird, ermöglicht Replikationsdienstleistungen, die mit herkömmlichen Speichergeräten nicht geboten werden.
  • BEISPIEL 1
  • Ein Apparat zum Poolen von Speicherressourcen über mehrere Knoten hinweg wird hierin beschrieben. Der Apparat einhält einen gemeinsamer Speicher-Controller und einen Speicherpool. Jeder Knoten der mehreren Knoten ist mit dem gemeinsamen Speicher-Controller verbunden. Der Speicherpool, der mit dem gemeinsamen Speicher-Controller verbunden ist, in welchem ein Teil des Speicherpools jedem der mehreren Knoten zugeteilt ist.
  • Der Apparat kann eine Pluralität von gemeinsamen Speicher-Controllern beinhalten und jeder der mehreren Knoten kann mit einem oder mehreren der Pluralität von gemeinsamen Speicher-Controllern verbunden sein. Der gemeinsame Speicher-Controller kann durch einen Plattsmouth Link, einem Link der beides – Speichersemantiken und ein E/A-Protokoll unterstützt verbunden werden, indem er eine gemeinsame Reihe von Pins, einen Netzwerk-Stack oder eine Kombination derselben nutzt. Zusätzlich kann eine Plattsmouth Link dazu benutzt werden, jeden Knoten mit einem gemeinsamen Speicher-Controller zu verbinden. Ein Link der beides – Speichersemantiken und ein E/A-Protokoll unterstützt, indem er eine gemeinsame Reihe von Pins nutzt, kann benutzt werden, um jeden Knoten mit dem gemeinsamen Speicher-Controller zu verbinden. Der Speicherpool kann Dynamic Random Access Memory (DRAM), Festkörperlaufwerk (Solid State Drive – SSD) oder jeden anderen nichtflüchtigen Speicher oder Speichertechnologie oder Kombination derselben enthalten. Der gemeinsamer Speicher-Controller kann lade- und speicherbasierten linearen Speicherzugriff bereitstellen. Weiterhin kann der gemeinsame Speicher-Controller Blockmoduszugang zu jedem dem Knoten zugehörigen Speicherteil geben und der Speicherpool kann DIMMs enthalten, die nichtflüchtigen, auf DIMMs basierenden Speicher der nächsten Generation mit einer großen Kapazität beinhalten.
  • BEISPIEL 2
  • Ein System wird hierin beschrieben. Das System enthält einen Bladeserver mit eine oder mehreren Knoten und einem gemeinsamen Speicher-Controller. Der gemeinsame Speicher-Controller ist mit einer Pluralität von Knoten und einem Speicherpool gekoppelt und der gemeinsame Speicher-Controller steuert Speicherdienstleistungen zwischen dem Speicherpool und der der Pluralität von Knoten auf eine Art, dass die Pluralität von Knoten auf den Speicherpool ohne Nutzung der E/A-Funktionalität zugreifen kann.
  • Das System kann eine Pluralität von gemeinsamen Speicher-Controllern enthalten, in welchem jeder Knoten oder Pluralität von Knoten verbunden mit einem oder mehreren der Pluralität von gemeinsamen Speicher-Controllern ist. Jeder gemeinsame Speicher-Controller kann mit anderen gemeinsamen Speicher-Controllern durch einen Plattsmouth Link, einen Link der beides – Speichersemantiken und ein E/A-Protokoll unterstützt, indem es eine gemeinsame Reihe von Pins, einen Netzwerk-Stack oder eine Kombination derselben nutzt. Weiterhin kann ein Plattsmouth Link benutzt werden um jeden Knoten mit einem gemeinsamen Speicher-Controller zu verbinden. Ein Link der beides – Speichersemantiken und ein E/A-Protokoll unterstützt, indem er eine gemeinsame Reihe von Pins nutzt, kann benutzt werden, um jeden Knoten mit dem gemeinsamen Speicher-Controller zu verbinden. Der Speicherpool kann einen Dynamic Random Access Memory (DRAM), Festkörperlaufwerk (Solid State Drive – SSD) oder andere nichtflüchtige Speicher (NVM) oder Speichertechnologie oder jede Kombination derselben beinhalten. Der Speicherpool kann auch cloud-basierte Speichergeräte und Speicherlaufwerke beinhalten.
  • BEISPIEL 3
  • Eine Methode des Poolens von Speicherressourcen über mehrere Knoten hinweg wird hierin beschrieben. Die Methode beinhaltet auch die Zuteilung eines Teils von gepoolten Speicher in eine Art von Speicher. Die Methode schließt auch das Mappen des zugeteilten Teils der Speicherpools zu der Speicherregion jedes Knotens ein. Weiterhin schließt die Methode das Zugreifen auf den zugeteilten Teil der Speicherpool für jeden Knoten unter Nutzung eines gemeinsamen Speicher-Controller ein.
  • Ein gemeinsamer Speicher-Controller kann Register enthalten und die Zuteilung des Speicherpools durchführen. Der Speicher eines gemeinsamen Speicher-Controller kann einem Knoten zugewiesen werden, der nicht direkt mit dem gemeinsamen Speicher-Controller verbunden ist. Zusätzlich dazu kann die virtuelle DIMM (VDIMM) ein teilweiser DIMM sein. Weiterhin kann der VDIMM mehrere physische DIMMs, Speichergeräte oder Speicherlaufwerke überspannen.
  • Bei der vorstehenden Beschreibung sind verschiedene Ausführungsformen des offenbarten Gegenstandes beschrieben worden. Zum Zwecke der Erklärung wurden spezifische Anzahlen, Systeme und Konfigurationen dargelegt, um ein gründliches Verständnis des Gegenstandes bereitzustellen. Es ist jedoch für einen Fachmann, der den Vorteil dieser Offenbarung hat, selbstverständlich, dass der Gegenstand ohne die spezifischen Details umgesetzt werden kann. In anderen Fällen wurden wohl bekannte Merkmale, Komponenten oder Module weggelassen, vereinfacht, kombiniert oder aufgeteilt, um den offenbarten Gegenstand nicht in den Hintergrund rücken zu lassen.
  • Verschiedene Ausführungsformen des offenbarten Gegenstandes können in Hardware, Firmware, Software oder Kombinationen davon implementiert sein, und können unter Bezugnahme auf oder in Verbindung mit Programmcode, wie z. B. Befehlen, Funktionen, Verfahrensweisen, Datenstrukturen, Logik, Anwendungsprogrammen, Designdarstellungen oder Formaten zur Simulation, Emulation und Herstellung eines Designs beschrieben werden, die, wenn von einer Maschine darauf zugegriffen wird, dazu führen, dass die Maschine Aufgaben ausführt, wobei abstrakte Datentypen oder hardwarenaher Zusammenhang definiert wird oder ein Ergebnis erzeugt wird.
  • Für Simulationen, kann Programm-Code Hardware verkörpern, in dem eine Hardwarebeschreibungssprache oder andere funktionale Beschreibungssprache genutzt wird, die essentiell ein Modell davon liefert, wie erwartet wird, dass sich entwickelte Hardware verhält. Der Programm-Code kann Assembler- oder Maschinensprache oder Daten sein, die übersetzt und/oder interpretiert werden können. Zudem ist es in dem Fachgebiet üblich, davon zu sprechen, dass Software in der einen oder anderen Form aktiv wird oder ein Ergebnis bewirkt. Solche Ausdrücke sind lediglich eine Weise, die Ausführung von Programm-Code durch ein Verarbeitungssystem, die einen Prozessor zum Ausführen einer Aktion oder zum Erzeugen eines Ergebnisses veranlasst, in abgekürzter Weise anzugeben.
  • Programm-Code kann zum Beispiel in flüchtigem und nichtflüchtigem Speicher gespeichert werden, wie Speichergeräten und/oder einem dazugehörigen maschinenlesbaren oder maschinenzugänglichen Medium, einschließlich Festkörperspeichern, Festplatten, Disketten, optischen Speichermedien, Bändern, Flash-Speichern, Memory-Sticks, digitalen Videodisketten, DVDs (Digital Versatile Disks) usw. und auch exotischeren Medien, wie maschinenzugänglichen, den biologischen Zustand erhaltenden Speicher. Ein maschinenlesbares Medium kann u. a. jeden beliebigen materiellen Mechanismus zum Speichern, Übermitteln oder Empfangen von Informationen in einer Form, die von einer Maschine lesbar ist, wie z. B. Antennen, Lichtleitfasern, Kommunikationsschnittstellen usw., beinhalten. Programm-Code kann in Form von Paketen, seriellen Daten, parallelen Daten usw. übermittelt werden und kann in einem komprimierten oder verschlüsselten Format benutzt werden.
  • Programm-Code kann in Programmen implementiert werden, die auf programmierbaren Maschinen, wie mobilen oder stationären Computern, Personal Digital Assistents (PDAs), Set-Top-Boxen, Handys und Pagern und anderen elektronischen Geräten ausgeführt werden können, die alle einen Prozessor, vom Prozessor lesbaren flüchtigen und/oder nichtflüchtigen Speicher und wenigstens ein Eingabegerät und/oder ein oder mehrere Ausgabegerät(en) haben. Programm-Code kann auf die Daten angewandt werden, die unter Benutzen des Eingabegerätes eingegeben werden, um die beschriebenen Ausführungsformen auszuführen und Ausgabeinformationen zu erzeugen. Die Ausgabeinformationen können auf ein oder mehrere Ausgabegeräte angewendet werden. Jemand, der in dieser Kunst normal bewandert ist, kann verstehen, dass Ausführungsformen des offenbarten Gegenstandes auf verschiedenen Computersystemkonfigurationen ausgeführt werden können, einschließlich Multiprozessor- oder Multikernprozessorensystemen und allgegenwärtigen Computern (pervasive computers) oder Miniaturcomputern, die in praktisch allen Geräten eingebettet werden können. Ausführungsformen des offenbarten Gegenstandes können auch in verteilten Computerumgebungen in die Praxis umgesetzt werden, wo Aufgaben von entfernten Verarbeitungsgeräten ausgeführt werden können, die durch ein Kommunikationsnetzwerk verknüpft sind.
  • Obwohl Operationen als sequentieller Prozess beschrieben werden können, können einige der Operationen in der Tat parallel, gleichzeitig und/oder in einer verteilten Umgebung und mit lokal und/oder fern gespeichertem Programm-Code für Zugang durch Einkernprozessor- oder Mehrkernprozessormaschinen, ausgeführt werden. Außerdem kann in einigen Ausführungsformen die Reihenfolge von Operationen umgeordnet sein, ohne von der Idee des offenbarten Gegenstandes abzuweichen. Programm-Code kann durch oder in Verbindung mit eingebetteten Controllern benutzt werden.
  • Während der offenbarte Gegenstand unter Bezugnahme auf veranschaulichende Ausführungsformen beschrieben wurde, soll diese Beschreibung nicht einschränkend ausgelegt werden. Verschiedene Modifikationen der veranschaulichenden Ausführungsformen sowie anderer Ausführungsformen des Gegenstandes, der Fachleuten, die der offenbarte Gegenstand betrifft, offensichtlich ist, sollen als im Umfang des offenbarten Gegenstandes einbegriffen erachtet werden.

Claims (25)

  1. Ein Apparat zum Poolen von Speicherressourcen über mehrere Knoten hinweg, umfassend: einen gemeinsamen Speicher-Controller, in welchem jeder der mehreren Knoten mit einem gemeinsamen Speicher-Controller verbunden ist; und einem Speicherpool, der mit dem gemeinsamen Speicher-Controller verbunden ist, in welchem ein Teil des Speicherpools jedem der mehreren Knoten zugeteilt ist.
  2. Der Apparat von Anspruch 1, in welchem der Apparat eine Pluralität von gemeinsamen Speicher-Controllern enthält, in welcher jeder der mehreren Knoten mit einem oder mehreren der Pluralität von gemeinsamen Speicher-Controllern verbunden ist.
  3. Der Apparat von Anspruch 1, in welchem der gemeinsame Speicher-Controller durch einen Plattsmouth Link, einem Link der beides – Speichersemantiken und ein E/A-Protokoll unterstützt, verbunden ist, indem er eine gemeinsame Reihe von Pins, einen Netzwerk-Stack oder eine Kombination derselben nutzt.
  4. Der Apparat von Anspruch 1, in welchem ein Plattsmouth Link genutzt wird, um jeden Knoten mit dem gemeinsamen Speicher-Controller zu verbinden.
  5. Der Apparat von Anspruch 1, in welchem ein Link der beides – Speichersemantiken und ein E/A-Protokoll unterstützt und ein gemeinsame Reihe von Pins genutzt wird, um jeden Knoten mit dem gemeinsamen Speicher-Controller zu verbinden.
  6. Der Apparat von Anspruch 1, in welchem der gemeinsame Speicher-Controller lade- und speicherbasierten linearen Speicherzugriff bereitstellt.
  7. Der Apparat von Anspruch 1, in welchem der gemeinsame Speicher-Controller Blockmoduszugriff zu dem jedem Knoten zugehörigen Speicherteil gibt.
  8. Der Apparat von Anspruch 1, in welchem der Speicherpool nichtflüchtigen, auf DIMMs basierenden Speicher der nächsten Generation mit einer großen Kapazität enthält.
  9. System, umfassend: einen Bladeserver mit einem oder mehreren Knoten; einen gemeinsamen Speicher-Controller, in welchem der gemeinsame Speicher-Controller mit einer Pluralität von Knoten und einem Speicherpool gekoppelt ist, wobei der gemeinsame Speicher-Controller die Speicherdienstleistungen zwischen dem Speicherpool und der Pluralität von Knoten so steuert, dass die Pluralität von Knoten auf den Speicherpool ohne die Nutzung von E/A Funktionalität zugreifen können.
  10. Das System von Anspruch 9, in welchem das System eine Pluralität von gemeinsamen Speicher-Controllern enthält, in welchem jeder Knoten der Pluralität von Knoten mit einem oder mehreren der Pluralität von gemeinsamen Speicher-Controllern verbunden ist.
  11. Das System von Anspruch 10, in welchem jeder gemeinsame Speicher-Controller mit anderen gemeinsamen Speicher-Controllern durch einen Plattsmouth Link, einem Link der beides – Speichersemantiken und ein E/A-Protokoll unterstützt, gekoppelt ist, indem es eine gemeinsame Reihe von Pins, einen Netzwerk-Stack oder eine Kombination derselben nutzt.
  12. Das System von Anspruch 9, in welchem ein Plattsmouth Link benutzt wird, um jeden Knoten mit dem gemeinsamen Speicher-Controller zu verbinden.
  13. Eine Methode zum Poolen von Speicherressourcen über mehrere Knoten hinweg, die Methode umfassend: die Zuteilung eines Teils von gepooltem Speicher in eine Art von Speicher; das Mappen des zugeteilten Teils des Speicherpools zur Speicherregion jedes Knotens; und das Zugreifen auf den zugeteilten Teil des Speicherpools für jeden Knoten unter Nutzung eines gemeinsamen Speicher-Controllers.
  14. Die Methode von Anspruch 13, in welchem ein gemeinsamer Speicher-Controller Register enthält und die Zuteilung des Speicherpools durchführt.
  15. Die Methode von Anspruch 13, in welchem der Speicher eines gemeinsamen Speicher-Controllers einem Knoten zugewiesen wird, die nicht direkt mit dem gemeinsamen Speicher-Controller verbunden ist.
  16. Die Methode von Anspruch 13, in welchem der virtuelle DIMM (VDIMM) ein teilweiser DIMM ist.
  17. Ein Apparat zum Poolen von Speicherressourcen über mehrere Knoten hinweg, umfassend: ein Mittel zum Verbinden mehrerer Knoten und zum bereitstellen von Zugriff auf einen Speicherpool; und ein Mittel zum Zuteilen von Speicherpool an jeden der mehreren Knoten.
  18. Der Apparat von Anspruch 17, in welchem das Mittel zum Verbinden mehrerer Knoten und der Bereitstellung von Zugriff auf einen Speicherpool lade- und speicherbasierten linearen Speicherzugriff ermöglicht, indem beides – flüchtiger und nichtflüchtiger Speicher und Blockmodusspeicherzugriff auf jeden Knoten genutzt wird.
  19. Der Apparat von Anspruch 17, in welchem das Mittel zum Verbinden mehrerer Knoten einen Plattsmouth Link, einen Link der beides – Speichersemantiken und ein E/A-Protokoll unterstützt, indem er eine gemeinsame Reihe von Pins, ein Netzwerk-Stack oder jede Kombination derselben benutzt, um mehrere Knoten zu verbinden.
  20. Der Apparat von Anspruch 17, in welchem das Mittel für das Verbinden mehrerer Knoten ein eine seriellen Verbindung ist.
  21. Ein materieller maschinenlesbares Medium, welches Code umfasst, der, wenn er ausgeführt wird, verursacht, dass der Prozessor: einen Teil des gepoolten Speichers einer Art Speicher zuteilen den zugeteilten Teil des Speicherpools zu Speicherregion jedes Knotens mapped; und auf den zugeteilten Teil des Speicherpools für jeden Knoten unter Nutzung eines gemeinsamen Speicher-Controllers zugreift.
  22. Das materielle, maschinenlesbare Medium von Anspruch 21, in welchem ein gemeinsamer Speicher-Controller Register beinhaltet und die Zuteilung des Speicherpools durchführt.
  23. Das materielle, maschinenlesbare Medium von Anspruch 21, in welchem der Speicher eines gemeinsamen Speicher-Controllers einem Knoten zugewiesen wird, der nicht direkt mit dem gemeinsamen Speicher-Controller verbunden ist.
  24. Das materielle, maschinenlesbare Medium von Anspruch 21 in welchem der virtuelle DIMM (VDIMM) ein teilweiser DIMM ist.
  25. Das materielle, maschinenlesbare Medium von Anspruch 21, in welchem der VDIMM mehrere physische DIMMs, Speichergeräte oder Speicherlaufwerke überspannt.
DE102014117462.3A 2013-12-27 2014-11-27 Poolen von Speicherressourcen über mehrere Knoten hinweg Pending DE102014117462A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/142,697 2013-12-27
US14/142,697 US9977618B2 (en) 2013-12-27 2013-12-27 Pooling of memory resources across multiple nodes

Publications (1)

Publication Number Publication Date
DE102014117462A1 true DE102014117462A1 (de) 2015-07-02

Family

ID=53372166

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102014117462.3A Pending DE102014117462A1 (de) 2013-12-27 2014-11-27 Poolen von Speicherressourcen über mehrere Knoten hinweg

Country Status (4)

Country Link
US (1) US9977618B2 (de)
CN (1) CN104750559B (de)
CA (1) CA2872019A1 (de)
DE (1) DE102014117462A1 (de)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9250831B1 (en) * 2013-03-14 2016-02-02 Inphi Corporation Isolated shared memory architecture (iSMA)
US10545909B2 (en) * 2014-04-29 2020-01-28 Hewlett Packard Enterprise Development Lp Computing system management using shared memory
US9547892B2 (en) 2014-05-06 2017-01-17 Kla-Tencor Corporation Apparatus and methods for predicting wafer-level defect printability
JP6840129B2 (ja) * 2015-08-10 2021-03-10 ケーエルエー コーポレイション ウエハレベル欠陥の転写性を予測する装置および方法
US10395361B2 (en) 2015-08-10 2019-08-27 Kla-Tencor Corporation Apparatus and methods for inspecting reticles
US10348574B2 (en) * 2015-08-17 2019-07-09 Vmware, Inc. Hardware management systems for disaggregated rack architectures in virtual server rack deployments
US20170060436A1 (en) * 2015-09-02 2017-03-02 Intel Corporation Technologies for managing a reserved high-performance memory region of a solid state drive
US20170212835A1 (en) * 2016-01-22 2017-07-27 Samsung Electronics Co., Ltd. Computing system with memory management mechanism and method of operation thereof
US9811281B2 (en) 2016-04-07 2017-11-07 International Business Machines Corporation Multi-tenant memory service for memory pool architectures
US11153223B2 (en) * 2016-04-07 2021-10-19 International Business Machines Corporation Specifying a disaggregated compute system
US10171375B2 (en) 2016-04-21 2019-01-01 International Business Machines Corporation Constructing computing systems with flexible capacity of resources using disaggregated systems
US10162770B2 (en) 2016-06-30 2018-12-25 Intel Corporation Virtual machine migration in rack scale systems
US10394475B2 (en) 2017-03-01 2019-08-27 International Business Machines Corporation Method and system for memory allocation in a disaggregated memory architecture
US10606487B2 (en) 2017-03-17 2020-03-31 International Business Machines Corporation Partitioned memory with locally aggregated copy pools
US10820442B2 (en) * 2018-06-05 2020-10-27 Hewlett Packard Enterprise Development Lp Modular server architectures
FR3082029B1 (fr) * 2018-06-05 2020-07-10 Thales Controleur de partage de ressources d'une plate-forme informatique et procede associe de partage des ressources
US20220066928A1 (en) * 2020-09-02 2022-03-03 Microsoft Technology Licensing, Llc Pooled memory controller for thin-provisioning disaggregated memory
US11853798B2 (en) 2020-09-03 2023-12-26 Microsoft Technology Licensing, Llc Disaggregated memory pool assignment
US20210149803A1 (en) * 2020-12-23 2021-05-20 Francesc Guim Bernat Methods and apparatus to enable secure multi-coherent and pooled memory in an edge network
KR102591315B1 (ko) * 2021-03-22 2023-10-20 한국전자통신연구원 클러스터 시스템의 메모리 통합 관리 방법 및 장치

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040210736A1 (en) 2003-04-18 2004-10-21 Linden Minnick Method and apparatus for the allocation of identifiers
US20080148095A1 (en) * 2006-12-14 2008-06-19 Motorola, Inc. Automated memory recovery in a zero copy messaging system
WO2010002411A1 (en) 2008-07-03 2010-01-07 Hewlett-Packard Development Company, L.P. Memory server
EP2579158A1 (de) * 2010-05-27 2013-04-10 Fujitsu Limited Speichersystem und speicherschnittstellenvorrichtung

Also Published As

Publication number Publication date
CN104750559A (zh) 2015-07-01
US20150186069A1 (en) 2015-07-02
CA2872019A1 (en) 2015-06-27
CN104750559B (zh) 2019-10-11
US9977618B2 (en) 2018-05-22

Similar Documents

Publication Publication Date Title
DE102014117462A1 (de) Poolen von Speicherressourcen über mehrere Knoten hinweg
DE102014117465B4 (de) Unterstützter kohärenter gemeinsamer Speicher
DE112018004798T5 (de) Technologien für ein bereitstellen von effizientem speicherzugriff auf einem beschleunigerschlitten
DE112011101633B4 (de) Virtualisierung und dynamische Ressourcenzuweisung berücksichtigendes Neuordnen von Speicherebenen
DE102020125046A1 (de) Konfigurationsschnittstelle zum auslagern von fähigkeiten an eine netzwerkschnittstelle
DE102018006890A1 (de) Technologien zur Verarbeitung von Netzpaketen durch einen intelligenten Netzwerk-Schnittstellenkontroller
DE102016100902A1 (de) Verfahren zum dynamischen Zuteilen von Ressourcen von konfigurierbaren Datenverarbeitungsressourcen
DE112017003682T5 (de) Technologien zur ressourcenzuweisung innerhalb eines selbstverwalteten knotens
DE102020118307A1 (de) Proaktiver daten-vorabruf mit angewandter quality-of-service
EP2786258B1 (de) System, computer-implementiertes verfahren und computerprogrammprodukt zur direkten kommunikation zwischen hardwarebeschleunigern in einem computercluster
DE112017004808T5 (de) Dynamische zuteilung virtueller cpu-kerne
DE102022104207A1 (de) Pooling von Netzwerkverarbeitungsressourcen
DE102020118494A1 (de) Technologien zur behandlung einer latenzbasierten dienstebenenvereinbarung in fern-direktspeicherzugriffsnetzen
DE112011100392T5 (de) Ressourcenaffinität durch dynamisches hinzufügen oder entfernen von warteschlangenpaaren für netzadapter mit software zur empfangsseitigen skalierung (rss)
DE102019102883A1 (de) Technologien zum Bewegen von Arbeitslasten zwischen Hardwarewarteschlangenmanagern
DE102013209643B4 (de) Mechanismus für optimierte Nachrichtenaustauschdatenübertragung zwischen Nodelets innerhalb eines Plättchens
DE112020004181T5 (de) Bereitstellen eines direkten datenzugriffs zwischen beschleunigern und speicher in einer datenverarbeitungsumgebung
DE102010044529A1 (de) Autonome Subsystem-Architektur
DE102020133273A1 (de) Leistungsüberwachung und Ressorcenverwaltung
DE102022124530A1 (de) Speicherpoolmanagement
DE102010044531A1 (de) Autonome Speicherarchitektur
DE102020132767A1 (de) Verwaltung der Dienstgüte (QoS) eines Speichersystems
DE102020103521A1 (de) Minimieren der Nutzung von Hardware-Zählern bei getriggerten Operationen für kollektive Kommunikation
DE102022129936A1 (de) Techniken zur Erweiterung des Systemspeichers durch Nutzung des verfügbaren Gerätespeichers
DE102020113279A1 (de) Technologien zum managen von burst-bandbreite

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0012000000

Ipc: G06F0015167000

R016 Response to examination communication