-
HINTERGRUND
-
Ein Dual-Inline-Speichermodul (DIMM) umfasst eine Reihe dynamischer Direktzugriffsspeicher-IC-Schaltkreise. Solche Module können auf einer Schaltplatte montiert sein und zur Verwendung in Computergeräten bestimmt sein. Eine zentrale Verarbeitungseinheit (CPU) in einem Computergerät kann auf den DIMM zugreifen, um die Lese- oder Schreibvorgänge auszuführen.
-
Ein flüchtiger Speicher ist eine Art Computerspeicher, dessen Inhalt gelöscht wird, wenn das System ausgeschaltet oder unterbrochen wird. Zum Beispiel, ist ein dynamischer Direktzugriffsspeicher (DRAM) ein Typ eines flüchtigen Speichers. Ein nichtflüchtiger Speicher ist eine Art Computerspeicher, der gespeicherte Informationen auch nach dem Aus- und Wiedereinschalten des Stroms (d. H. Ausschalten und Wiedereinschalten) speichern kann. Beispiele für nichtflüchtige Speicher umfassen Nur-Lese-Speicher (ROM), Flash-Speicher usw. DIMMs können flüchtige oder nichtflüchtige Speicher sein.
-
Figurenliste
-
Es wird nun auf die Zeichnungen Bezug genommen, in denen gleiche Bezugszeichen durchgehend entsprechende Teile darstellen:
- 1 zeigt ein Blockdiagramm eines Datenverarbeitungsbereich, in dem ein Initiatorknoten mit einem Zielknoten gekoppelt ist, wobei sowohl flüchtige Speicher-DIMMs als auch nichtflüchtige Speicher-DIMMs mit dem Zielknoten gekoppelt sind, gemäß bestimmten Ausführungsformen.
- 2 zeigt ein Blockdiagramm, das eine Speicheradressenkarte des Initiatorknotens zeigt, gemäß bestimmten Ausführungsformen;
- 3 zeigt ein Flussdiagramm, das Operationen zeigt, die von dem Initiatorknoten ausgeführt werden, gemäß bestimmten Ausführungsformen;
- 4 zeigt ein Blockdiagramm, das Komponenten des Initiatorknotens und von dem Zielknoten zeigt, gemäß bestimmten Ausführungsformen;
- 5 zeigt ein Blockdiagramm, das eine Adresskarte für physische Adressen des Initiatorknotens und eine Adresskarte für physische Systemadressen von dem Zielknoten zeigt, gemäß bestimmten Ausführungsformen;
- 6 zeigt ein Flussdiagramm, der Operationen die vom Initiatorknoten und dem Zielknoten ausgeführt werden, gemäß bestimmten Ausführungsformen;
- 7 zeigt ein Blockschaltdiagramm einer bevorzugte Ausführungsform bei der Verarbeitung für Speicherzugriffsanforderungen, gegenüber I/O-Vorrichtungs-Zugriffsanforderungen, gemäß bestimmten Ausführungsformen;
- 8 zeigt ein Blockdiagramm, das beispielhafte Opcodes zeigt,
entsprechend verschiedener Datenarten, gemäß bestimmten Ausführungsformen;
- 9 zeigt ein Flussdiagramm, das Operationen zeigt, die von einer Steuerung im Initiatorknoten ausgeführt wird, gemäß bestimmten Ausführungsformen;
- 10 zeigt ein Blockdiagramm einer Vorrichtung, die den Initiatorknoten und den Zielknoten aufweist, gemäß bestimmten Ausführungsformen.
-
GENAUE BESCHREIBUNG
-
Ein Computersystem kann einen CPU-Komplex umfassen, der mit mehreren flüchtigen Speicher-DIMMs und mehreren nichtflüchtigen DIMMs in Verbindung steht. Während erwartet wird, dass die in den flüchtigen Speicher-DIMMs gespeicherten Daten bei Stromausfall oder bei einem Austausch des CPU-Komplexes verloren gehen, wird erwartet, dass die in den nichtflüchtigen Speicher-gespeicherten Daten bei einem Stromausfall oder bei einem Austausch des CPU-Komplexes im DMS gespeichert werden.
-
In bestimmten Computersystemen, in denen der durch die flüchtigen Speicher-DIMMs bereitgestellte Speicher und die nichtflüchtigen Speicher-DIMMs miteinander vermischt sind, können die Computersysteme schwerer zu bedienen sein, obwohl ein Computersystem mit höherer Leistung durch das Mischen der DIMMs erreicht werden kann. Zum Beispiel kann ein Verschachteln von Speicher, durch den Speicheradressen gleichmäßig über Speicherbänke verteilt werden, dazu führen, dass solche DIMMs nach dem Entfernen der DIMMs in einer bestimmten Reihenfolge ausgetauscht werden müssen, wobei ein Entfernen und Ersetzen der DIMMs durch einen Austausch von Komponenten wie des CPU-Komplexes des Computersystems notwendig gemacht werden können.
-
Um die Wartung solcher Computersysteme zu erleichtern, werden in bestimmten Ausführungsformen flüchtige Speicher-DIMMs und nichtflüchtige Speicher-DIMMs durch ein Koppeln der flüchtigen Speicher-DIMMs und der nichtflüchtigen Speicher-DIMMs an eine Fabric-Speicher-Expander und durch ein Koppeln einer Fabric-Speicher-Expander mittels eines Fabrics an den CPU-Komplex, von einem CPU-Komplex mechanisch getrennt. In solchen Ausführungsformen kann der Austausch von Komponenten, beispielsweise eines CPU-Komplexes, ohne ein Entfernen und ein Ersetzen der DIMMs durchgeführt werden.
-
In der nachfolgenden detaillierten Beschreibung wird Bezug auf die beiliegenden Zeichnungen genommen, die einen Teil derselben bilden und die etliche Ausführungen zeigen. Es sollte darauf hingewiesen werden, dass andere Ausführungsbeispiele verwendet werden können und strukturelle oder logische Änderungen ausgeführt werden können.
-
1 zeigt ein Blockdiagramm einer Datenverarbeitungsumgebung 100, in der ein Initiatorknoten 102 mit einem Zielknoten 104 gekoppelt ist, wobei sowohl flüchtige Speicher-DIMMs 106 als auch nichtflüchtige Speicher-DIMMs 108 mit dem Zielknoten 104 gekoppelt sind, gemäß bestimmten Ausführungsformen . In bestimmten Ausführungsformen kann der Initiatorknoten 102 mit mehr als einem Zielknoten gekoppelt sein. Während in 1 die flüchtigen und nichtflüchtigen DFMMs getrennt sind, kann in bestimmten Ausführungsformen ein einzelner DIMM sowohl flüchtigen als auch nichtflüchtigen Speicher umfassen.
-
In bestimmten Ausführungsformen kann der Initiatorknoten 102 einen CPU-Komplex umfassen, der einen oder mehrere Kerne umfasst. Der Initiatorknoten 102 kann über einen Fabric 110 mit niedriger Latenzzeit an den Zielknoten 104 gekoppelt sein, wobei der Zielknoten 104 eine Fabric-Speicher-Expander sein kann.
-
Ein flüchtiger Speicher ist ein Speichermedium, das Strom benötigt, um den Status der auf dem Medium gespeicherten Daten aufrechtzuerhalten. Beispiele für flüchtige Speicher können verschiedene Arten von Direktzugriffsspeichern (RAM) umfassen, beispielsweise einen dynamischen Direktzugriffsspeicher (DRAM) oder einen statischen Direktzugriffsspeicher (SRAM). Ein bestimmter DRAM-Typ, der in einem Speichermodul (zum Beispiel einem DFMM) verwendet werden kann, ist ein synchroner dynamischer Direktzugriffsspeicher (SDRAM). In bestimmten Ausführungsformen können die flüchtigen Speicher-DIMMs 106 DFMMs der Version 4 (DDR4) mit doppelter Datenrate oder eine beliebige andere Art von Technologien für flüchtigen Speicher umfassen. In bestimmten Ausführungsformen entspricht ein DRAM der flüchtigen Speicher-DIMMs 106 einem von JEDEC verkündeten Standard, wie beispielsweise JESD79F für DDR-SDRAM (Double Data Rate), JESD79-2F für DDR2-SDRAM, JESD79-3F für DDR3-SDRAM oder JESD79-4A für DDR4-SDRAM (diese Standards sind unter www.jedec.org verfügbar). Solche Standards (und ähnliche Standards) können bezeichnet werden als DDR-basierte Standards. Die flüchtigen Speicher-DIMMs 106 können in bestimmten Ausführungsformen aus anderen Versionen von DDR-Speicher bestehen, einschließlich DDR-Speichern, die auf zukünftigen Versionen von JEDEC-DDR-Standards, basieren.
-
Die nichtflüchtigen Speicher-DIMMs 108 können in bestimmten Ausführungsformen aus nichtflüchtigen integrierten Speicherschaltkreisen bestehen, wobei ein nichtflüchtiger Speicher ein Speichermedium ist, das keine Energie benötigt, um den Zustand der durch das Speichermedium gespeicherten Daten aufrechtzuerhalten. In bestimmten Ausführungsformen sind die nichtflüchtigen Speicher-DIMMs 108 elektronisch kompatibel und mit einem DDR4 pin-kompatibel, während in anderen Ausführungsformen die nichtflüchtigen Speicher-DIMMs 108 nicht mit einem DDR4 oder anderen Technologien pin-kompatibel sein müssen und auf einem anderen Formfaktor als einem DDR4 oder andere Technologien, basieren können. In bestimmten Ausführungsformen können die nichtflüchtigen Speicher-DIMMs 108 aus einem Triple Level Cell (TLC) -NAND oder einem anderen Typ von NAND [z. B. Single Level Cell (SLC), einem Multi Level Cell (MLC), einem Quad Level Cell (QLC) bestehen) usw.] oder aus einer anderen Art von nichtflüchtigem Speicherkomplex. In anderen Ausführungsformen können die nichtflüchtigen Speicher-DIMMs 108 bestimmte andere Arten von nichtflüchtigen Speichern, beispielsweise einen NOR-Speicher oder einen anderen geeigneten nichtflüchtigen Speicher, umfassen. Nicht einschränkende Beispiele eines nichtflüchtigen Speichers können einen beliebigen oder eine Kombination aus folgenden umfassen: Festkörperspeicher [wie z. B. ein planarer oder dreidimensionaler (3D) NAND-Flash-Speicher oder ein NOR-Flash-Speicher], Speichervorrichtungen, die Chalkogenid-Phasenänderungsmaterial verwenden (z. B. Chalkogenidglas) ), byteadressierbare nichtflüchtige Speichereinheiten, ferroelektrische Speicher, Siliziumoxid-Nitridoxid-Silizium (SONOS) -Speicher, Polymerspeicher (z. B. ferroelektrischer Polymerspeicher), dreidimensionaler (3D) Crosspoint-Speicher,
einen Ferroelektrischen Direktzugriffsspeicher (Fe-TRAM), einen Ovonischen Speicher, einen Nanodrahtspeicher einen elektrisch löschbaren programmierbaren Nur-Lese-Speicher (EEPROM), andere verschiedene Arten von nichtflüchtigen Direktzugriffsspeichern (RAMs) und einen magnetischen Speicher. In einigen Ausführungsformen kann der 3D-Kreuzungspunktspeicher eine Transistor-lose stapelbare Kreuzungspunktarchitektur umfassen, in der Speicherzellen an einer Kreuzung von Wortleitungen und Bitleitungen sitzen und individuell adressierbar sind und in der die Bitspeicherung auf einer Änderung von Volumenwiderstand basiert. In bestimmten Ausführungsformen kann ein DIMM mit einem nichtflüchtigen Speicher einen oder mehrere Standards erfüllen, die vom Joint Electron Device Engineering Council (JEDEC), wie JESD218, JESD219, JESD220-1, JESD223B, JESD223-1 oder veröffentlicht wurden
andere geeignete Standards (die hier zitierten JEDEC-Standards sind unter www.jedec.org erhältlich).
-
Der Initiatorknoten 102 kann auch einen lokalen Speicher 112 umfassen, der mit dem Initiatorknoten verbunden ist, wobei der lokale Speicher ein flüchtiger Speicher sein kann, der im Vergleich zu dem Speicher, der das Speichern in dem Initiatorknoten 102 über die flüchtigen Speicher-DIMMs 106 und den flüchtigen Speicher-DIMMs 108 möglich gemacht hat, relativ klein ist. Die nichtflüchtigen Speicher-DIMMs 108 können als ein nichtflüchtiger Remote-Speicher fungieren, und die flüchtigen Speicher-DIMMs 106 können als ein entfernter flüchtiger Remote-Speicher für den Initiatorknoten 102 im Gegensatz zu dem lokalen Speicher 112 des Speichers des Initiatorknotens 102 dienen.
-
In bestimmten Ausführungsformen kann der Initiatorknoten 102 oder der Initiatorknoten 101 in Kombination mit dem Zielknoten 104 zusammengesetzt sein aus irgendeiner geeigneten
-
Computervorrichtungen, wie beispielsweise ein Personalcomputer, ein Mainframe, ein Telefoniegerät, ein Smartphone, ein Speichercontroller, ein Blade-Computer, ein Prozessor mit Speicher usw. Der Initiatorknoten 102 kann als ein Host bezeichnet werden, ein Host-Computing System oder als ein Computergerät. Zusätzlich zu oder anstelle des Fabrics 110 kann der Initiatorknoten 102 mit dem Zielknoten 104 über einen Bus kommunizieren (z. B. Peripheral Component Interconnect (PCle), Serial Advanced Technology Attachment (SATA), eine Serial Attached Small Computersystem-Schnittstelle (SAS)) oder ein Netzwerk wie das Internet, ein Storage Area Network (SAN), ein Local Area Network (LAN) usw. Weitere Informationen zur SATA-Spezifikation finden Sie in der Publikation „Serial ATA Specification, Revision 3.2, veröffentlicht im August 2013 von SATA International Organization (SATA-IO), Beaverton, OR. In einem anderen Beispiel können die Schnittstellen- und/oder Verbindungsprotokolle für eine Kommunikation zwischen dem Initiatorknoten 102 und dem Zielknoten 104 einem NVMe (nichtflüchtiger Speicher-Hostcontroller-Interface-Express) entsprechen und/oder damit kompatibel sein. Weitere Details zu NVMe finden Sie in der Veröffentlichung „NVM Express™, Revision 1.2“, die am 3. November 2014 von der NVM Express™ Work Group veröffentlicht wurde, und/oder früheren und / oder späteren Versionen dieser Spezifikation (NVM Express ist eine Marke) von NVM Express, Inc.).
-
In bestimmten Ausführungsformen kann ein Betriebssystem 114 in der Datenverarbeitungsumgebung 100 ausgeführt werden, wobei das Betriebssystem 114 verwendet werden kann, um Operationen zu steuern, die vom Initiatorknoten 102 und von dem Steuerknoten 104 ausgeführt werden.
-
2 zeigt ein Blockdiagramm 200, das eine Speicheradressenkarte 202 des Initiatorknotens 102 zeigt, gemäß bestimmten Ausführungsformen. Die Speicheradressenkarte 202 des Initiatorknotens 102 zeigt den für den Initiatorknoten 102 verfügbaren Adressraum des Speichers.
-
Die Speicheradresskarte 202 beinhaltet einen Adressbereich, der als nichtflüchtiger Remote-Speicheradressbereich 204 bezeichnet wird, der eine logische Darstellung eines physischen nichtflüchtigen Speichers ist, der mit dem Zielknoten 104 gekoppelt ist, wobei der physische nichtflüchtige Speicher durch die nichtflüchtigen Speicher-DIMMs 108 bereitgestellt wird, die mit dem Zielknoten 104 gekoppelt sind.
-
Die Speicheradressenkarte 202 beinhaltet einen Adressbereich, der als flüchtiger Remote-Speicheradressenbereich 206 bezeichnet wird, der eine logische Darstellung eines physischen flüchtigen Speichers ist, der mit dem Zielknoten 104 gekoppelt ist, wobei der physkalische flüchtige Speicher durch die nichtflüchtigen Speicher-DIMMs 106 bereitgestellt wird, die mit dem Zielknoten 104 gekoppelt sind.
-
Zusätzlich weist die Speicheradressenkarte 202 auch einen Adressbereich, der als der lokale Speicheradressenbereich 208 bezeichnet wird, der eine logische Darstellung des physischen lokalen Speichers 112 ist, der mit dem Initiatorknoten 102 gekoppelt ist, auf. In bestimmten Ausführungsformen kann ein lokaler Speicher des Initiatorknotens als ein Cache für einen Speicher von dem Zielknoten agieren und in solchen Ausführungsformen kann der lokale Speicheradressenbereich 208 nicht als Teil der Initiatorspeicheradressenkarte 202 fungieren.
-
Es sollte erwähnt werden, dass der nichtflüchtige Remote-Speicheradressenbereich 204 und der flüchtige Remote-Speicheradressenbereich 206 zusammen den Speicher darstellen, der von dem Zielknoten 104 für den Initiatorknoten 102 bereitgestellt wird, wobei der Speicher, der von dem Zielknoten 104 für den Initiatorknoten 102 bereitgestellt wird, als ein Zielknotenspeicher 210 bezeichnet wird. Der Zielknotenspeicher 210 wird während einer Systeminitialisierung in die Speicheradressenkarte 202 eingestellt, wobei eine Systeminitialisierung der Vorgang des Initialisierens des Initiatorknotens 102 während des eines Startvorgangs ist, während dessen der Initiatorknoten 102 eine Kommunikation mit dem Zielknoten 104 aufbaut. In bestimmten Ausführungsformen, in denen der Initiatorknoten 102 mit mehreren Zielknoten gekoppelt ist, kann der Initiatorknoten 102 den vielen Zielknoten über die Initiatorspeicheradressenkarte 202 unterstützen.
-
3 zeigt ein Flussdiagramm 300, das Operationen zeigt, die von dem Initiatorknoten 102 ausgeführt werden, gemäß bestimmten Ausführungsformen.
-
Die Steuerung beginnt bei Block 302, in dem der Initiatorknoten 102 dafür konfiguriert ist, mit dem Zielknoten 104 zu kommunizieren, der mit einem Speicher gekoppelt ist (z. B. den flüchtigen Speicher-DIMMs 104 und / oder den nichtflüchtigen Speicher-DEVIMs 108). Zur Systeminitialisierungszeit wird eine Speicheradressenkarte 202 des Initiatorknotens 102 erzeugt (bei Block 304), um Adressen zu aufzunehmen, die dem Speicher zugehören, an den der Zielknoten 104 gekoppelt ist. Der Initiatorknoten 102 greift (bei Block 306) auf den mit dem Zielknoten 104 gekoppelten Speicher zu, indem er die Speicheradressenkarte 202 des Initiatorknotens 102 verwendet.
-
In bestimmten Ausführungsformen kann das Hot-Plugging von dem Zielknoten 104 in der Computerumgebung 100 unterstützt werden, wobei Hot-Plugging das Hinzufügen einer Komponente zu einem laufenden Computersystem ohne eine wesentliche Unterbrechung des Betriebs des Computersystems ist und das Hot-Plugging keinen Neustart des Computersystems erfordert. In solchen Ausführungsformen kann der Initiatorknoten 102, wenn sich der Zielknoten 104 im Hot-Plug-Betrieb befindet, die Initiatorspeicheradressenkarte 202 während einer Laufzeit konfigurieren und/oder aktualisieren und die konfigurierte und / oder aktualisierte Initiatorspeicheradressenkarte 202 dem Betriebssystem 114 mitteilen. In bestimmten Ausführungsformen können DIMM-Schnittstellen oder ein Managementcontroller wie ein Baseboard Management Controller (BMC) verwendet werden, um das Betriebssystem 114 zu benachrichtigen, dass ein neuer Speicher verfügbar ist, wobei der neue Speicher vom Zielknoten 104 bereitgestellt wird.
-
4 zeigt ein Blockdiagramm 400, das Komponenten des Initiatorknotens 102 und von dem Zielknoten 104 zeigt, gemäß bestimmten Ausführungsformen.
-
Der Initiatorknoten 102 kann einen Mehrkernprozessor umfassen, der aus mehreren Kernen 402, 404 besteht, wobei ein Kern eine unabhängige Verarbeitungseinheit ist, die Programmbefehle liest und ausführt. Der Initiatorknoten kann auch eine oder mehrere I/O-Vorrichtungen 405 umfassen. Der Initiatorknoten 102 kann eine Vielzahl von Komponenten umfassen, die in Hardware eingebaut sind (oder alternativ über eine Kombination aus Hardware, Software und / oder Firmware), wobei zu der Vielzahl von Komponenten ein Cache-Agent 406, ein integrierter Speichercontroller 408 (es sollte erwähnt werden, dass in bestimmten Ausführungsformen ein Speichercontroller, der nicht integriert ist, anstelle des integrierten Speichercontrollers 408 verwendet werden kann), einen Fabric-Speichercontroller 412 und ein Fabric Controller 414. Der Cache-Agent 406, der integrierte Speichercontroller 408, der Fabric-Speichercontroller 412 und der Fabric-Controller 414 können auch als ein Initiator-Cache-Agent 406, als ein initiatorntegrierter Speichercontroller 408, als ein Initiator-Fabric-Speichercontroller 412 bezeichnet werden bzw. eine Initiator-Fabric-Steuerung 414. In bestimmten Ausführungsformen ist der Caching-Agent 406 möglicherweise nicht vorhanden, wenn nur eine einzige integrierte Speichersteuerung vorhanden ist, weil der Caching-Agent 406 bestimmen kann, an welche von einer Vielzahl von integrierten Speichercontrollern eine Anfrage weitergeleitet werden soll, wenn mehr als ein integrierter Speichercontroller vorhanden ist in dem Initiatorknoten 402 vorhanden ist. In bestimmten Ausführungsformen kann der integrierte Speichercontroller 408 anstelle des Initiatorknotens 102 außerhalb des Initiatorknotens 102 sein, anstatt den integrierten Speichercontroller 108 intern im Initiatorknoten 102 zu haben. Während eine Vielzahl von Komponenten 406, 408, 412, 414 des Initiatorknotens 102 in verschiedenen Blöcken dargestellt sind, können in alternativen
-
Ausführungsformen die von einer oder mehreren der Vielzahl von Komponenten 406, 408, 412, 414 ausgeführten Funktionen von einer einzigen Komponente ausgeführt werden.
-
Der Zielknoten 104 kann eine Fabric-Speicher-Expander umfassen, die aus einer Vielzahl von Kernen 416, 418 besteht. Der Zielknoten 104 kann auch eine Vielzahl von Komponenten umfassen, die in eine Hardware eingebaut sind (oder alternativ über eine Kombination aus Hardware, Software und Software und/oder Firmware), wobei die Vielzahl von Komponenten eine integrierte Speichersteuerung 422, eine Fabric-Speichersteuerung 426 und eine Fabric-Steuerung 428 umfasst. Auf die integrierte Speichersteuerung 422, die Fabric-Speichersteuerung 426 und die Fabric-Steuerung 428, sowie auf die integrierte Zielspeichersteuerung 422, die Zielstrukturspeichersteuerung 426 und die Zielstruktursteuerung 428 wird entsprechend Bezug genommen. Während eine Vielzahl von Komponenten 422, 426 von dem Zielknoten 104 in verschiedenen Blöcken gezeigt ist, können in alternativen Ausführungsformen die Funktionen, die von einer oder von mehreren der Vielzahl von Komponenten 422, 426 ausgeführt werden, von einer einzelnen Komponente ausgeführt werden.
-
Die integrierte Speichersteuerung 408 des Initiatorknotens 102 hat drei Kanäle 429, 430, 432, an denen die Kanäle 429, 430 verwendet werden, um
mit dem lokalen Speicher 112 zu kommunizieren, der in den DIMM-Schlitze 434, 436 und 432 enthalten ist, und ein Kanal 432 verwendet wird, um mit der Fabricspeichersteuerung 412 des Initiatorknotens 102 zu kommunizieren, wobei die Fabricspeichersteuerung 412 des Initiatorknotens 102 mit dem Zielknoten 104 über die Fabric Steuerung 414 des Initiatorknotens 102 kommuniziert, um auf den Speicher des flüchtigen Speicher-DIMMs und der in den Schlitzen 440, 442 platzierten nichtflüchtigen Speicher-DIMMs zuzugreifen, die mit der integrierten Speichersteuerung 422 von dem Zielknoten 104 gekoppelt sind,
die integrierte Speichersteuerung 422 von dem Zielknoten 104 kommuniziert über Kanal 444 mit dem flüchtigen Speicher DIMM 106 auf Steckplatz 440 und über Kanal 446 mit dem nichtflüchtigen Speicher DIMM 108 auf Steckplatz 442.
-
5 zeigt ein Blockdiagramm 500, das eine physische Systemadresskarte 502 des Initiatorknotens 102 und eine physische Systemadresskarte 504 von dem Zielknoten 104 zeigt, gemäß bestimmten Ausführungsformen. Die physische Adressenkarte des Systems 502 des Initiatorknotens 102 wird auch als physische Adressenspeicherkarte des Initiators oder als physische Karte des Initiatorsystems bezeichnet. Die physische Adressenkarte 504 von dem Zielknoten 102 wird auch als physische Zielspeicheradressenkarte oder physische Zielsystemkarte bezeichnet.
-
Die physische Speicheradressenkarte 502 des Initiatorknotens 102 ist analog zu der in Block 200 von 2 beschriebenen. Die physische Speicheradressenkarte 502 des Initiatorknotens 102 aufweist Adressen für den Zielknotenspeicher (durch das Bezugszeichen 506 gezeigt) und Adressen für den lokalen Speicher des Initiatorknotens (durch das Bezugszeichen 508 gezeigt). Der Zielknotenspeicher 506 entspricht der physischen DIMM-Vorrichtungsadresse von dem Zielknoten 104, wobei sich der Speicher aller DIMMs von dem Zielknoten 104 im Adressbereich für den Zielknotenspeicher 506 befindet. Der lokale Speicher des Initiatorknotens (Bezugszeichen 508) entspricht dem physischen Adressbereich der DIMM-Vorrichtung des lokalen Speichers des Initiatorknotens 102. Ein Versatz 510 von der Startadresse von dem Zielknotenpeichers 504 gibt die physische Adresse der DFMM-Vorrichtung an.
-
Die physische Speicheradressenkarte 504 von dem Zielknoten 104 weist Adressen für den flüchtigen Speicher von dem Zielknoten (durch das Bezugszeichen 512 gezeigt) und die Adresse des nichtflüchtigen Speichers von dem Zielknoten (durch das Bezugszeichen 514 gezeigt) auf und sie umfasst Adressbereiche, die dem flüchtigen Speicher-DIMM 106 bzw. dem nichtflüchtigen Speicher-DIMM 108 entsprechen.
-
Daher weist die physische Speicheradressenkarte 502 des Initiatorknotens 102 eine Adresse für den Speicher von dem Zielknoten 104 auf, und die physische Speicheradressenkarte 504 von dem Zielknoten 104 aufweist die Adressen des flüchtigen und nichtflüchtigen Speichers und ist mit dem Zielknoten 104 gekoppelt. Die gestrichelten Linien 516, 518 zeigen, wie der Speicheradressenbereich eines Zielknotens Teil der Speicheradressenkarte des Initiatorknotens wird.
-
Der Initiatorknoten 102 kann Informationen über die Speichergröße von dem Zielknoten 104 und den Speichertyp von dem Zielknoten 104 über eine Vielzahl von Mechanismen in verschiedenen Computerumgebungen sichern. In bestimmten Ausführungsformen kann der Baseboard-Verwaltungscontroller (BMC) des Initiatorknotens mit dem BMC von dem Zielknoten kommunizieren, um die Informationen über die Speichergröße und den Typ des Speichers von dem Zielknoten 102 zu sichern. In einer anderen Ausführungsform kann ein Pod-Manager (PODM) in einer Die-Rack-Scale-Design-Architektur mit dem gepoolten System
-
Management Engine (PSME) und/oder dem BMC von dem Zielknoten 104 kommunizieren und liefert die Speicherkarteninformationen an den Initiatorknoten 102 über den BMC oder PSME des Initiatorknotens 102. In noch einer anderen Ausführungsform wird eine Systemmanagementbus (SMBus) -Verbindung zwischengeschaltet; der Initiatorknoten 102 und der Zielknoten 104 können verwendet werden, um die Speichergröße und den Typ des Speichers von dem Zielknoten 104 zu sichern. In einer anderen Ausführungsform kann der Zielknoten 104 seine Informationen über die Speichergröße und den Typ des Speichers an einen vorbestimmten Netzwerk-Server übermitteln; der Netzwerkspeicher und der Initiatorknoten 102 können die Informationen aus dem vorbestimmten Netzwerkspeicher lesen. In anderen Ausführungsformen kann der Zielknoten 104 selbst einen Speicherbereich finden. Wenn der Zielknoten 104 beispielsweise einen Zielsystemspeicherbereich von einem als „2GB - 1MB-Bereich“ bezeichneten repräsentativen Bereich bis zu einem als „2GB-Bereich“ bezeichneten repräsentativen Bereich verwendet, um die Speicherbereiche und Speichertypen (flüchtig oder dauerhaft) zu umfassen, dann kann der Initiatorknoten 102 vorübergehend einen 2-GB-Speicherbereich einrichten und mit dem „2-GB-1-MB-Bereich“ zum „2-GB-Bereich“ von dem Zielknoten 104 kommunizieren, um die Zielspeicherzuordnungseinstellungen zu sichern und die Speicheradresse des Initiatorknotens neu zu konfigurieren Bereiche, um die Speicheradressbereiche von dem Zielknoten abzudecken.
-
6 zeigt ein Flussdiagramm 600, das Operationen zeigt, die von dem Initiatorknoten 102 und dem Zielknoten 104 ausgeführt werden, gemäß bestimmten Ausführungsformen. In 6 sind die Initiatorknotenoperationen 602, die von dem Initiatorknoten 102 ausgeführt werden, links von der gestrichelten Linie 604 gezeigt, und die Zielknotenoperationen 606, die von dem Zielknoten 104 ausgeführt werden, sind rechts von der gestrichelten Linie 604 gezeigt.
-
Eine Steuerung beginnt bei Block 608, in dem ein Kern 402 oder eine I/O-Vorrichtung 405 eine Zugriffsanforderung für das physische Adressieren des Systems erzeugt und die Anforderung für das physische Adressieren des Systems an den Initiator-Caching-Agenten 406 gesendet wird. Der Initiator-Caching-Agent 406 leitet (bei Block 610) die Anforderung der physischen Systemadresse an die in den Initiator integrierte Speichersteuerung 408 weiter.
-
Der in den Initiator integrierte Speichercontroller 408 konvertiert (in Block 614) die physische Adressanforderung des Systems in eine physische DIMM-Vorrichtungsadresse (d. H. einen Versatz 510 in dem Adressbereich, der dem „Speicher von dem Zielknoten“ entspricht, in der physischen Adresszuordnung des Initiators) und sendet die physische DIMM-Vorrichtungsadresse an den Initiator-Fabric-Speichercontroller 412. Der Initiator-Fabric-Speichercontroller 412 empfängt die physische DIMM-Geräteadresse vom Initiatorintegrierten Speichercontroller 408 und konvertiert (bei Block 616) die physische Adresse des DIMM-Geräts in das System physische Adresse von dem Zielknoten 104. Der physische Adressbereich des Systems von dem Zielknoten kann über eine Verwaltungssteuerung oder durch Zuweisung eines physischen Adressbereichs des Systems im Zielknoten 104 oder durch Senden einer Zielsystemkonfigurationsleseanforderung abgerufen werden. Wenn mehrere integrierte Speichercontrollerkanäle oder integrierte Initiatorspeichercontroller verwendet werden, um die Bandbreite zu erhöhen, kann der physische Adressbereich von dem Zielknotenystems unter den integrierten Initiatorspeichercontrollern aufgeteilt werden.
-
Die Steuerung geht weiter zu Block 618, in dem die Initiator-Fabric-Speichersteuerung 412 eine Systemanforderungsanfrage für den Zugriff auf eine physische Adresse über den Fabric-Controller 414 an den Zielknoten 104 sendet. Die Ziel-Fabric-Speichersteuerung 426 decodiert (bei Verriegelung 620) die ankommende Nachricht in eine SpeicherzugriffsAnforderung der physischen Adresse des Zielsystems.
-
Die Steuerung geht weiter zu Block 622, indem die Ziel-Fabric-Speichersteuerung 426 eine physische Adresse des Zielsystems an die integrierte Zielspeichersteuerung 422 weiterleitet, die eine Antwort an die Ziel-Fabric-Speichersteuerung 426 sendet, nachdem der Zugriff auf die physische Adresse des Zielsystems entsprechend den DIMMs gesichert ist Der Ziel-Fabric-Speichercontroller 426 sendet dann (bei Block 624) die empfangene Antwort an den Initiatorknoten 102.
-
Beim Empfangen der Antwort des physischen Systems des Initiators 102 über die Fabric-Steuerung 414, schreibt die Initiator-Fabric-Speichersteuerung 412 (bei Block 626) die Antwort des physischen Systems des Initiators 408 zurück. Die integrierte Initiator-Speichersteuerung 408 sendet (bei Block 628) die Antwort der physischen Systemadresse an den Initiator-Caching-Agent 406. Der Initiator-Caching-Agent 406 sendet (bei Block 630) die Antwort der physischen Systemadresse an den initiierenden Kern 402 oder die I/O-Vorrichtung 405.
-
Daher zeigen 1 - 6 bestimmte Ausführungsformen, in denen eine Initiator-Fabric-Speichersteuerung 412 als ein Bote fungiert, um die physische Adresse eines Systems des Initiatorknotens 102 in die physische Systemadresse von dem Zielknoten 104 zu konvertieren und die Nachricht an den Zielknoten 104 zu senden. In dem Zielknoten 104 decodiert der Ziel-Fabric-Speichercontroller 426 die Anforderung für den Zugriff auf eine physische Systemadresse und führt einen Speicherzugriff auf die physische Systemadresse von dem Zielknoten 104 durch. Die resultierende Antwort wird an den Initiator-Fabric-Speichercontroller 412 des Initiator-Knotens 102 zurückgesendet.
-
7 zeigt ein Blockdiagramm 700, das zeigt, dass der Initiatorknoten 102 eine Speicherzugriffsanforderung-Vorzugsbehandlung gegenüber Eingangs / Ausgangs (I/O)-Zugriffsanforderungen bereitstellt, gemäß bestimmten Ausführungsformen bereitstellt.
-
Eine Vielzahl von Speicherzugriffsanforderungen 702, 704 und eine Vielzahl von I/O-Anforderungen 706, 708 können für den Initiatorknoten 102 erzeugt werden. Da I/O-Anforderungen im Allgemeinen warten können, während Speicheranforderungen so schnell wie möglich bearbeitet werden müssen, gibt der Initiatorknoten 102 den Speicherzugriffsanforderungen 702 gegenüber den I/O-Anforderungen 706, 708 über den Caching-Agent 406, die integrierte Speichersteuerung 408 und die Initiator-Fabric-Speichersteuerung 412, den Vorzug.
-
8 zeigt ein Blockdiagramm 800, das beispielhafte Opcodes zeigt, die verschiedenen Datentypen entsprechen, gemäß bestimmten Ausführungsformen. Ein Opcode ist der Teil einer Maschinensprachanweisung, der eine auszuführende Operation angibt. Neben dem Opcode selbst geben die meisten Maschinensprachanweisungen auch die Daten an, die sie verarbeiten sollen, und zwar in Form von Operanden.
-
Vier beispielhafte Opcodes 802, 804, 806, 808 sind in 8 gezeigt. Opcode
802 wird verwendet, um Daten anzuzeigen, bei denen alle Bits auf Null gesetzt sind (Bezugszeichen 810). Der Opcode 804 wird verwendet, um Daten anzuzeigen, bei denen alle Bits auf Eins gesetzt sind (Bezugszeichen 812). Der Opcode 806 wird verwendet, um Daten mit bestimmten sich wiederholenden Mustern anzuzeigen, beispielsweise einem wiederholten „01“ -Muster (Bezugszeichen 814). Der Opcode 808 wird verwendet, um komprimierte Daten anzuzeigen (Bezugszeichen 816). Der Initiatorknoten 102 und der Zielknoten 104 interpretieren die Operationscodes, um die Anzahl der zum Lesen oder Schreiben von Daten erforderlichen Operationen zu reduzieren.
-
Wenn beispielsweise in bestimmten Ausführungsformen eine Adresse gesendet und von 64 Datenbytes gefolgt wird, dann verwenden die beispielhaften Opcodes 802, 804, 806, die für alle Nullen, alle Einsen oder wiederholten Muster verwendet werden; die gesamten 64 Datenbytes müssen nicht gesendet werden. Zusätzlich, wenn der Opcode 808 anzeigt, dass komprimierte Daten in den 64 Datenbytes umfassen sind, werden mehr als 64 Datenbytes empfangen, wenn die komprimierten Daten nicht komprimiert werden. Als ein Ergebnis wird die gesamte Lese- und Schreibzeit gegenüber Systemen verbessert, die solche beispielhaften Operationscodes nicht umfassen.
-
9 zeigt ein Flussdiagramm 900, das Operationen zeigt, die von der Initiator-Fabric-Speichersteuerung 412, die in dem Initiatorknoten 102 umfassen ist, ausgeführt wird, gemäß bestimmten Ausführungsformen.
-
Die Steuerung beginnt bei Block 902, in dem der Initiator-Knoten 102 in Reaktion auf einen Empfang einer Zugriffsanforderung zum Zugriff auf eine physische Systemadresse des Initiatorknotens 102 von einem Kern oder einer I/O-Vorrichtung die physische Systemadresse in eine physische Adresse einer DEVIM-Vorrichtung umwandelt. Die Steuerung geht weiter zu Block 904, in dem der Initiatorknoten 102 die physische DIMM-Vorrichtungsadresse in eine physische Systemadresse von dem Zielknoten 104 konvertiert.
-
Der Initiatorknoten 102 sendet (bei Block 906) eine Nachricht an den Zielknoten 104, um dem System zu ermöglichen, in Reaktion auf das Umwandeln der physischen DIMM-Vorrichtungsadresse in die physische Systemadresse von dem Zielknoten 104, auf die physische Adresse von dem Zielknoten zuzugreifen.
-
Der Initiatorknoten 102 empfängt (bei Block 908) eine Antwort von dem Zielknoten 104, wobei die Antwort von dem Zielknoten 104 auf dem Zugriff auf eine oder mehreren DIMM-Vorrichtungen 106, 108 über die an den Zielknoten 104 gesendete physische Systemadresse basiert Die Antwort wird (bei Block 910) an den Kern oder die I/O-Vorrichtung weitergeleitet, von dem die Anforderung zum Zugriff auf die phyisische Systemadresse empfangen wurde.
-
Daher zeigen 1 bis 9 bestimmte Ausführungsformen, bei denen ein Initiatorknoten 102 auf die flüchtigen und nichtflüchtigen Speicher-DIMMs zugreift, die mit einem Zielknoten 104 gekoppelt sind. Bevorzugt werden Speicherzugriffe über I/O-Zugriffe bereitgestellt. Darüber hinaus werden spezielle Opcodes für die Kommunikation bestimmter Datenmuster und für komprimierte Daten verwendet.
-
Die beschriebenen Vorgänge können als ein Verfahren, Gerät oder Computerprogrammprodukt unter Verwendung von Standardprogrammierungs- und / oder Engineeringtechniken durchgeführt werden, um Software, Firmware, Hardware oder eine Kombination davon zu erzeugen.
-
Die beschriebenen Operationen können als Code implementiert werden, der in einem „computerlesbaren Speichermedium“ gehalten wird, wobei ein Prozessor den Code von dem computerlesbaren Medium lesen und ausführen kann. Das computerlesbare Speichermedium umfasst mindestens eine elektronische Schaltung, Speichermaterialien, anorganische Materialien, organische Materialien, biologische Materialien, eine Hülle, ein Gehäuse, eine Ummantelung und Hardware. Ein computerlesbares Speichermedium kann ein magnetisches Speichermedium (z. B. Festplattenlaufwerke, Disketten, Band usw.), einen optischen Speicher (CD-ROMs, DVDs, optische Disketten usw.) umfassen, ist jedoch nicht beschränkt auf flüchtige und nichtflüchtige Speichervorrichtungen (z. B. EEPROMs, ROMs, PROMs, RAMs, DRAMs, SRAMs, Flash)
-
Speicher, Firmware, programmierbare Logik usw.), Solid State Devices (SSD) usw. Der Code, der die beschriebenen Operationen implementiert, kann ferner in einer Hardwarelogik implementiert sein, die in einem Hardwaregerät implementiert ist (z. B. einem integrierten Schaltungschip, Programmable Gate Array (PGA), Application Specific Integrated Circuit (ASIC) usw.). Ferner kann der Code, der die beschriebenen Operationen implementiert, in „Übertragungssignalen“ implementiert sein, wo Übertragungssignale sich durch den Raum oder durch ein Übertragungsmedium ausbreiten können, wie etwa eine optische Faser, Kupferdraht usw. Die Übertragungssignale, in denen der Code oder die Logik codiert ist kann ferner ein drahtloses Signal, eine Satellitenübertragung, Funkwellen, Infrarotsignale, Bluetooth usw. umfassen. Der auf einem computerlesbaren Speichermedium eingebettete Programmcode kann in Form von Übertragungssignalen von einer Sendestation oder einem Computer zu einer Empfangsstation oder gesendet werden Computer. Ein computerlesbares Speichermedium besteht nicht nur aus Übertragungssignalen. Der Fachmann wird erkennen, dass an dieser Konfiguration viele Modifikationen vorgenommen werden können und dass der Herstellungsartikel ein geeignetes informationstragendes Medium umfassen kann, das aus dem Stand der Technik bekannt ist.
-
Ein Computerprogrammcode zum Ausführen von Operationen für Aspekte der bestimmten Ausführungsformen kann in einer beliebigen Kombination von einer oder mehreren Programmiersprachen geschrieben sein. Blöcke des Flussdiagramms und Blockdiagramme können durch Computerprogrammanweisungen implementiert werden.
-
10 zeigt ein Blockdiagramm eines Systems 1000, das sowohl den Initiatorknoten 102 als auch den Zielknoten 104 gemäß bestimmter Ausführungsformen beinhaltet. Zum Beispiel kann das System 1000 in bestimmten Ausführungsformen ein Computer (z.B. ein Laptop, ein Desktop-Computer, ein Tablet, ein Mobiltelefon oder ein anderes geeignetes Rechengerät) sein, der den Initiatorknoten 102 und den Zielknoten 104 im System 1000 beinhaltet. Zum Beispiel kann in bestimmten Ausführungsformen das System 1000 ein Computer mit einer Vielzahl von Racks sein, wobei jedes Rack den Initiatorknoten 102, den Zielknoten 104, den flüchtigen Speicher DIMMs 106 und den nichtflüchtigen Speicher DIMMs 108 beinhaltet. Das System 1000 kann eine Schaltung 1002 umfassen, die in bestimmten Ausführungsformen mindestens einen Prozessor 1004 umfassen kann. Das System 1000 kann auch einen Speicher 1006 (z.B. eine flüchtige Speichervorrichtung) und einen Speicher 1008 umfassen. Der Speicher 1008 kann das Solid-State-Laufwerk 102 oder andere Laufwerke oder Vorrichtungen mit einer nichtflüchtigen Speichervorrichtung (z.B. EEPROM, ROM, PROM, Flash, Firmware, programmierbare Logik, etc.) umfassen. Der Speicher 1008 kann auch ein Magnetplattenlaufwerk, ein optisches Plattenlaufwerk, ein Bandlaufwerk usw. umfassen. Der Speicher 1008 kann eine interne Speichervorrichtung, eine angeschlossene Speichervorrichtung und/oder eine netzwerkfähige Speichervorrichtung umfassen. Das System 1000 kann eine Programmlogik 1010 mit dem Code 1012 umfassen, die in den Speicher 1006 geladen und vom Prozessor 1004 oder der Schaltung 1002 ausgeführt werden kann. In bestimmten Ausführungsformen kann die Programmlogik 1010 mit dem Code 1012 im Speicher 1008 gespeichert werden. In bestimmten anderen Ausführungsformen kann die Programmlogik 1010 in der Schaltung 1002 implementiert werden. Während 10 die Programmlogik 1010 getrennt von den anderen Elementen darstellt, kann die Programmlogik 1010 daher im Speicher 1006 und/oder in der Schaltung 1002 implementiert werden. Das System 1000 kann auch eine Display 1014 umfassen (z.B. eine Flüssigkristall-Display (LCD), eine Leuchtdioden-Display (LED), eine Kathodenstrahlröhren-Display (CRT), eine Touchscreen-Display oder eine andere geeignete Display). Das System 1000 kann auch eine oder mehrere Eingabevorrichtungen 1016 umfassen, wie beispielsweise eine Tastatur, eine Maus, einen Joystick, ein Trackpad oder andere geeignete Eingabevorrichtungen). Andere Komponenten oder Vorrichtungen, die über die in 10 dargestellten hinausgehen, befinden sich ebenfalls im System 1000.
-
Bestimmte Ausführungsformen können sich auf ein Verfahren beziehen, bei der eine Person oder eine automatisierte Verarbeitung Berechnungsbefehlen vorgibt, den computerlesbaren Code in ein Computersystem integriert, wobei der Code in Kombination mit dem Computersystem die Operationen der beschriebenen Ausführungsformen ausführen kann.
-
Die Ausdrücke „eine Ausführungsform“, „Ausführungsform“, „Ausführungsformen“, „die Ausführungsform“, „die Ausführungsformen“, “
eine oder mehrere Ausführungsformen“, „einige“ Ausführungsformen „und“ eine Ausführungsform „bedeuten“ eine oder mehrere (aber nicht alle) “
-
Ausführungsformen "sofern nicht ausdrücklich anders angegeben.
-
Die Ausdrücke „einschließlich“, „umfassend“, „haben“ und Variationen davon bedeuten „einschließlich, aber nicht beschränkt auf“, sofern nicht ausdrücklich etwas anderes angegeben ist.
-
Die Aufzählung der Elemente bedeutet nicht, dass sich einzelne oder alle Elemente gegenseitig ausschließen, sofern nicht ausdrücklich etwas anderes angegeben ist.
-
Die Ausdrücke „ein“, „eine“ und „der“ bedeuten „ein oder mehrere“, sofern nicht ausdrücklich etwas anderes angegeben ist.
-
Geräte, die miteinander kommunizieren, müssen nicht ständig miteinander kommunizieren, sofern dies nicht ausdrücklich anders angegeben ist. Darüber hinaus können Geräte, die miteinander kommunizieren, direkt oder indirekt über einen oder mehrere Zwischenstücke kommunizieren.
-
Eine Beschreibung einer Ausführungsform mit mehreren Komponenten, die miteinander kommunizieren, bedeutet nicht, dass alle diese Komponenten erforderlich sind. Im Gegenteil, es werden verschiedene optionale Komponenten beschrieben, um eine große Vielfalt möglicher Ausführungsformen zu zeigen.
-
Obwohl Prozessschritte, Verfahrensschritte, Algorithmen oder dergleichen in einer sequentiellen Reihenfolge beschrieben werden können, können solche Prozesse, Verfahren und Algorithmen so konfiguriert sein, dass sie in alternativer Reihenfolge arbeiten. Mit anderen Worten, eine Reihenfolge oder Reihenfolge von Schritten, die möglicherweise beschrieben werden, gibt nicht notwendigerweise eine Anforderung an, dass die Schritte in dieser Reihenfolge ausgeführt werden müssen. Die hier beschriebenen Verfahrensschritte können in beliebiger praktischer Reihenfolge durchgeführt werden. Ferner können einige Schritte gleichzeitig ausgeführt werden
-
Wenn ein einzelnes Gerät oder ein einzelner Gegenstand hier beschrieben wird, ist es ohne weiteres ersichtlich, dass mehr als ein Gerät/Gegenstand (unabhängig davon, ob sie zusammenarbeiten oder nicht) anstelle eines einzelnen Geräts / Gegenstands verwendet werden können. Wenn hier mehr als eine Vorrichtung oder ein Gegenstand beschrieben wird (unabhängig davon, ob sie zusammenarbeiten oder nicht), ist es ohne weiteres ersichtlich, dass eine einzelne Vorrichtung/ein einzelner Gegenstand anstelle der mehr als der einer Vorrichtung oder des einen Gegenstand oder eine andere Anzahl von Vorrichtungen/Gegenständen anstelle der angezeigten Anzahl von Geräten oder Programmen verwendet werden können. Die Funktionalität und/oder die Merkmale einer Vorrichtung können alternativ durch eine oder mehrere andere Vorrichtungen verkörpert sein, die nicht ausdrücklich als solche Funktionalität / Merkmale beschrieben werden. Somit müssen andere Ausführungsformen die Vorrichtung selbst nicht umfassen.
-
Zumindest bestimmte Operationen, die möglicherweise in den Figuren dargestellt wurden, zeigen bestimmte Ereignisse, die in einer bestimmten Reihenfolge auftreten. In alternativen Ausführungsformen können bestimmte Operationen in einer anderen Reihenfolge ausgeführt, modifiziert oder entfernt werden. Darüber hinaus können Schritte zu der oben beschriebenen Logik hinzugefügt werden und dennoch den beschriebenen Ausführungsformen entsprechen. Ferner können hierin beschriebene Operationen sequentiell erfolgen oder bestimmte Operationen können parallel verarbeitet werden. Des Weiteren können Operationen von einer einzelnen Verarbeitungseinheit oder von verteilten Verarbeitungseinheiten ausgeführt werden.
-
Die vorangehende Beschreibung verschiedener Ausführungsformen wurde zum Zwecke der Veranschaulichung und Beschreibung vorgelegt. Sie soll nicht vollständig sein oder auf die genauen offenbarten Formen beschränkt sein. In Anbetracht der obigen Lehren sind viele Modifikationen und Variationen möglich.
-
Beispiele
-
Die folgenden Beispiele betreffen weitere Ausführungsformen.
-
Beispiel 1 ist ein Verfahren zum Speicherzugriff. Ein Initiatorknoten ist dafür konfiguriert, mit einem Zielknoten zu kommunizieren, der mit einem Speicher gekoppelt ist. Zur Systeminitialisierungszeit wird eine Speicheradressenkarte des Initiatorknotens erzeugt, die Adressen aufweist, die dem Speicher zugehören, an den der Zielknoten gekoppelt ist. Der Initiatorknoten greift auf den mit dem Zielknoten gekoppelten Speicher zu, indem er die Speicheradressenkarte des Initiatorknotens verwendet.
-
Im Beispiel 2 kann der Gegenstand von Beispiel 1 umfassen, dass der mit dem Zielknoten gekoppelte Speicher einen flüchtigen Speicher und/oder einen nichtflüchtigen Speicher umfasst.
-
In Beispiel 3 kann der Gegenstand von Beispiel 2 umfassen, dass der flüchtige Speicher und der nichtflüchtige Speicher in einer oder mehreren dualen Inline-Speichermodul-(DIMM)-Vorrichtungen umfassen, wobei die Adressen, die dem Speicher zugehören, mit dem der Zielknoten gekoppelt ist, physikalische Adressen von DFMM-Vorrichtungen umfassen, wobei das Beispiel ferner, in Antwort auf ein Empfangen einer Zugriffsanforderung auf eine physische Systemadresse des Initiatorknotens von einem Kern oder einer Input/Output-(I/O)-Vorrichtung; das Konvertieren der physikalischen Systemadresse in eine physikalische DIMM-Vorrichtungsadresse und das Konvertieren einer physikalischen DIMM-Vorrichtungsadresse in eine physikalische Systemadresse des Zielknotens in Reaktion auf das Empfangen einer Anforderung zum Zugreifen auf eine physikalische Systemadresse des Initiatorknotens von einer Kern- oder Ein-/Ausgabe-(I/O)-Vorrichtung und das Senden einer Nachricht an den Zielknoten, in Antwort auf das Konvertieren der physikalischen DIMM-Vorrichtungsadresse in die physikalische Systemadresse von dem Zielknoten,, um auf die physikalische Systemadresse von dem Zielknoten zuzugreifen,
-
In Beispiel 4 kann der Gegenstand von Anspruch 3 das Empfangen einer Antwort vom Zielknoten, wobei die Antwort vom Zielknoten auf dem Zugriff auf die eine oder die mehreren DIMM-Vorrichtungen über die an den Zielknoten die physikalische Systemadresse gesendet wurde, basiert und das Weiterleiten der Antwort an den Kern oder die I/O-Vorrichtung, von der die Anforderung zum Zugriff auf die physikalische Systemadresse empfangen wurde, umfassen.
-
Im Beispiel 5 kann der Gegenstand von Beispiel 2 umfassen, dass der Initiatorknoten in Reaktion auf ein Hot-Plugging von dem Zielknoten, die Speicheradressenkarte des Initiatorknotens während der Laufzeit konfiguriert oder aktualisiert und die konfigurierte oder aktualisierte Speicheradressenkarte des Initiatorknotens ein Betriebssystem benachrichtigt, wobei: der Initiatorknoten einen zentralen Verarbeitungskomplex mit einer Vielzahl von Kernen umfasst; der Zielknoten umfasst einen Fabric-Speicher-Expander; der flüchtige Speicher umfasst ein flüchtiges Speicher-DIMM; und der nichtflüchtige Speicher umfasst ein nichtflüchtiges Speicher-DIMM.
-
Im Beispiel 6 kann der Gegenstand von Beispiel 1 umfassen, dass der Initiatorknoten Speicherzugriffsanforderungen für I/O-Anforderungen priorisiert.
-
Im Beispiel 7 kann der Gegenstand von Beispiel 1 umfassen, dass unterschiedliche Opcodes, die unterschiedlichen Datenmustern entsprechen, zur Kommunikation zwischen dem Initiatorknoten und dem Zielknoten verwendet werden.
-
Im Beispiel 8 kann der Gegenstand von Beispiel 1 umfassen, dass ein ausgewählter Opcode zum Anzeigen komprimierter Daten für die Kommunikation zwischen dem Initiatorknoten und dem Zielknoten verwendet wird.
-
Beispiel 9 ist ein System zum Speicherzugriff. Das System umfasst einen Initiatorknoten; einen Zielknoten, der mit dem Initiatorknoten gekoppelt ist und einen Speicher, der mit dem Zielknoten gekoppelt ist, wobei der Initiatorknoten zum: Kommunizieren mit dem Zielknoten, der mit dem Speicher zu einer Systeminitialisierungszeit gekoppelt ist, zum Erzeugen einer Speicheradressenkarte des Initiatorknotens, um Adressen zu aufzunehmen, die dem Speicher zugehören, an den der Zielknoten gekoppelt ist; und für den Zugriff auf den mit dem Zielknoten verbundenen Speicher unter Verwendung der Speicheradressenkarte des Initiatorknotens konfigurierbar ist.
-
Im Beispiel 10 kann der Gegenstand von Beispiel 9 umfassen, dass der Speicher, der mit dem Zielknoten gekoppelt ist, zumindestens einen von einem flüchtigen Speicher und einem nichtflüchtigen Speicher aufweist.
-
In Beispiel 11 kann der Gegenstand von Beispiel 10 umfassen, dass der flüchtige Speicher und der nichtflüchtige Speicher in einer oder mehreren Dual-Inline-Speichermodul-Einheiten (DIMM-Vorrichtungen) umfassen sind, wobei die Adressen
dem Speicher entsprechen, an den der Zielknoten gekoppelt ist, der physische DIMM-Vorrichtungsadressen umfasst und in dem der Initiatorknoten ferner, in Reaktion auf das Empfangen einer Anforderung zum Zugreifen auf eine physische Systemadresse des Initiatorknotens von einem Kern oder eines Eingabe/Ausgabe (I/O)-Geräts, zum Konvertieren der physischen Adresse des Systems in eine physische Adresse eines DIMM-Geräts und zum Konvertieren der physischen DIMM-Vorrichtungsadresse in eine physische Systemadresse von dem Zielknotenvon dem Zielknoten und zum Senden einer Nachricht an den Zielknoten, um, in Reaktion auf das Umwandeln der physischen DIMM-Vorrichtungsadresse in die physische Systemadresse von dem Zielknotenvon dem Zielknoten auf die physische Systemadresse von dem Zielknotenvon dem Zielknoten zuzugreifen, konfigurierbar ist.
-
In Beispiel 12 kann der Gegenstand von Beispiel 11 umfassen, dass der Initiatorknoten ferner konfigurierbar ist, um eine Antwort vom Zielknoten zu empfangen, wobei die Antwort vom Zielknoten auf dem Zugriff auf eine oder mehrere DIMM-Vorrichtungen über die an den Zielknoten gesendete physikalische Systemadresse basiert; und um die Antwort an den Kern oder die I/O-Vorrichtung weiterzuleiten, von der die Zugriffsanforderung auf die physikalische Systemadresse empfangen wurde.
-
Im Beispiel 13 kann der Gegenstand von Beispiel 10 umfassen, dass der Initiatorknoten in Reaktion auf ein Hot-Plugging von dem Zielknotenvon dem Zielknoten Operationen ausführen kann, um die Speicheradressenkarte des Initiatorknotens während der Laufzeit zu konfigurieren oder zu aktualisieren und das Betriebssystem über die konfigurierte oder aktualisierte Speicheradressenkarte des Initiatorknotens zu informieren, wobei der Initiatorknoten einen zentralen Verarbeitungskomplex mit mehreren Kernen besitzt; der Zielknoten umfasst einen Fabric-Speicher-Expander umfasst der flüchtige Speicher ein flüchtiges Speicher-DIMM umfasst und der nichtflüchtige Speicher ein nichtflüchtiges Speicher-DIMM umfasst.
-
Im Beispiel 14 kann der Gegenstand von Beispiel 9 umfassen, dass der Initiatorknoten Speicherzugriffsanforderungen für I/O-Anforderungen priorisiert.
-
Im Beispiel 15 kann der Gegenstand von Beispiel 9 umfassen, dass unterschiedliche Opcodes, die unterschiedlichen Datenmustern entsprechen, zur Kommunikation zwischen dem Initiatorknoten und dem Zielknoten verwendet werden.
-
Im Beispiel 16 kann der Gegenstand von Beispiel 9 umfassen, dass ein ausgewählter Opcode zum Anzeigen komprimierter Daten für die Kommunikation zwischen dem Initiatorknoten und dem Zielknoten verwendet wird.
-
Beispiel 17 ist ein System für den Speicherzugriff. Das System umfasst ein Display; einen mit dem Display gekoppelten Initiatorknoten; einen mit dem Initiatorknoten gekoppelten Zielknoten; und einen mit dem Zielknoten gekoppelten Speicher, wobei der Initiatorknoten konfiguriert ist, um: mit dem Zielknoten zu kommunizieren, der mit dem Speicher gekoppelt ist; zum Zeitpunkt der Systeminitialisierung eine Speicheradresskarte des Initiatorknotens zu erzeugen, um Adressen aufzunehmen, die dem Speicher zugehören, mit dem der Zielknoten gekoppelt ist; und auf den mit dem Zielknoten gekoppelten Speicher zuzugreifen, indem die Speicheradresskarte des Initiatorknotens verwendet wird.
-
Im Beispiel 18 kann der Gegenstand von Beispiel 17 umfassen, dass der Speicher, der mit dem Zielknoten gekoppelt ist, zumindestens einen von einem flüchtigen Speicher und einem nichtflüchtigen Speicher aufweist.
-
In Beispiel 19 kann der Gegenstand von Beispiel 18 umfassen, dass der flüchtige Speicher und der nichtflüchtige Speicher in einer oder mehreren Dual-Inline-Speichermodul-Einheiten (DIMM-Vorrichtungen) beinhaltet sind, wobei die Adressen dem Speicher entsprechen, an den der Zielknoten gekoppelt ist, der physische DIMM-Vorrichtungsadressen umfasst und in dem der Initiatorknoten ferner, in Antwort auf das Empfangen einer Zugriffsanforderung zum Zugreifen auf eine physische Systemadresse des Initiatorknotens von einem Kern oder eines Eingabe/Ausgabe (I/O)-Geräts, zum Konvertieren der physischen Adresse des Systems in eine physische Adresse eines DIMM-Geräts und zum Konvertieren der physischen DIMM-Vorrichtungsadresse in eine physische Systemadresse von dem Zielknoten und zum Senden einer Nachricht an den Zielknoten, um, in Reaktion auf das Umwandeln der physischen DIMM-Vorrichtungsadresse in die physische Systemadresse von dem Zielknoten auf die physische Systemadresse von dem Zielknoten zuzugreifen, konfigurierbar ist.
-
In Beispiel 20 kann der Gegenstand von Beispiel 19 umfassen, dass der Initiatorknoten ferner konfigurierbar ist, um eine Antwort vom Zielknoten zu empfangen, wobei die Antwort vom Zielknoten auf dem Zugriff auf eine oder mehrere DIMM-Vorrichtungen über die an den Zielknoten gesendete physikalische Systemadresse basiert; und um die Antwort an den Kern oder die I/O-Vorrichtung weiterzuleiten, von der die Anforderung zum Zugriff auf die physikalische Systemadresse empfangen wurde.
-
Im Beispiel 21 kann der Gegenstand von Beispiel 18 umfassen, dass der Initiatorknoten in Reaktion auf ein Hot-Plugging von dem Zielknoten Operationen ausführen kann, um die Speicheradressenkarte des Initiatorknotens während der Laufzeit zu konfigurieren oder zu aktualisieren, und ein Betriebssystem über die konfigurierte oder aktualisierte Speicheradressenkarte des Initiatorknotens zu informieren, wobei: der Initiatorknoten einen zentralen Verarbeitungskomplex mit einer Vielzahl von Kernen besitzt; der Zielknoten einen Fabric-Speicher-Expander umfasst; der flüchtige Speicher ein flüchtiges Speicher-DIMM umfasst; und der nichtflüchtige Speicher ein nichtflüchtiger Speicher-DIMM umfasst.
-
Im Beispiel 22 beinhaltet der Gegenstand von Beispiel 17 ferner, dass der Initiatorknoten Speicherzugriffsanforderungen für I/O-Anforderungen priorisiert.
-
In Beispiel 23 beinhaltet der Gegenstand von Beispiel 17 ferner, dass für die Kommunikation zwischen dem Initiatorknoten und dem Zielknoten verschiedene Opcodes verwendet werden, die unterschiedlichen Mustern in Daten entsprechen.
-
Im Beispiel 24 beinhaltet der Gegenstand von Beispiel 17 ferner, dass ein ausgewählter Opcode zum Anzeigen komprimierter Daten für die Kommunikation zwischen dem Initiatorknoten und dem Zielknoten verwendet wird.
-
Beispiel 25 ist ein System zum Speicherzugriff, wobei die Systeme Mittel zum Konfigurieren eines Initiatorknotens, um mit einem Zielknoten zu kommunizieren, der mit einem Speicher gekoppelt ist, Mittel zum Erzeugen einer Speicheradresskarte des Initiatorknotens zum Zeitpunkt der Systeminitialisierung, um Adressen aufzunehmen, die dem Speicher zugehören, mit dem der Zielknoten gekoppelt ist und Mittel zum Zugriff durch den Initiatorknoten auf den mit dem Zielknoten gekoppelten Speicher unter Verwendung der Speicheradresskarte des Initiatorknotens umfassen.