DE112017006704T5 - Systemspeicher mit punkt-zu-punkt-verbindung, die komprimierten verkehr transportiert - Google Patents

Systemspeicher mit punkt-zu-punkt-verbindung, die komprimierten verkehr transportiert Download PDF

Info

Publication number
DE112017006704T5
DE112017006704T5 DE112017006704.9T DE112017006704T DE112017006704T5 DE 112017006704 T5 DE112017006704 T5 DE 112017006704T5 DE 112017006704 T DE112017006704 T DE 112017006704T DE 112017006704 T5 DE112017006704 T5 DE 112017006704T5
Authority
DE
Germany
Prior art keywords
point
memory
memory controller
controller
main 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
DE112017006704.9T
Other languages
English (en)
Inventor
Kirk S. Yap
Daniel F. Cutter
Vinodh Gopal
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 DE112017006704T5 publication Critical patent/DE112017006704T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4063Device-to-bus coupling
    • G06F13/4068Electrical coupling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/36Flow control; Congestion control by determining packet size, e.g. maximum transfer unit [MTU]
    • H04L47/365Dynamic adaptation of the packet size

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Human Computer Interaction (AREA)

Abstract

Es wird eine Vorrichtung beschrieben. Die Vorrichtung beinhaltet eine Hauptspeichersteuerung mit einer Punkt-zu-Punkt-Verbindungsschnittstelle zum Koppeln mit einer Punkt-zu-Punkt-Verbindung. Die Punkt-zu-Punkt-Verbindung hat Systemspeicherverkehr zwischen der Hauptspeichersteuerung und einem Hauptspeicher zu transportieren. Die Hauptspeichersteuerung beinhaltet mindestens eines von Komprimierungslogikschaltung zum Komprimieren von Schreibinformationen vor Übertragung über die Verbindung; Dekomprimierungslogikschaltung zum Dekomprimieren von Leseinformationen nachdem sie von der Verbindung empfangen wurden.

Description

  • Inanspruchnahme der Priorität
  • Diese Anmeldung beansprucht die Priorität gemäß 35 U.S.C. § 365(c) gegenüber der am 30. Dezember 2016 eingereichten US-Anmeldung Nr. 15/395,032 mit dem Titel „SYSTEM MEMORY HAVING POINT-TO-POINT LINK THAT TRANSPORTS COMPRESSED TRAFFIC“, die hierin in ihrer Gesamtheit durch Bezugnahme aufgenommen wird.
  • Gebiet der Erfindung
  • Das Gebiet der Erfindung betrifft im Allgemeinen Rechensysteme und insbesondere einen Systemspeicher mit einer Punkt-zu-Punkt-Verbindung, die komprimierten Verkehr transportiert.
  • Hintergrund
  • Entwickler von Rechensystemen sind zunehmend an der Verbesserung der Effizienz der von ihnen entworfenen Systeme interessiert. Systemspeicher, der auch als Hauptspeicher bezeichnet wird, wird zunehmend zu einem Bereich, in dem Effizienzverbesserungen erzielt werden können.
  • Figurenliste
  • Ein besseres Verständnis der vorliegenden Erfindung ergibt sich aus der folgenden ausführlichen Beschreibung in Verbindung mit den folgenden Zeichnungen, in denen:
    • 1 ein Rechensystem mit einem Systemspeicher mit mehreren Ebenen zeigt;
    • 2 eine Hauptspeichersteuerung und eine Fernspeichersteuerung zeigt;
    • 3 eine Hauptspeichersteuerung mit Komprimierungslogikschaltung und Dekomprimierungslogikschaltung zeigt;
    • 4a, 4b und 4c unterschiedliche Ausführungsformen zeigen, die die Hauptspeichersteuerung der 3 beinhalten;
    • 5 ein Rechensystem zeigt.
  • Ausführliche Beschreibung
  • Systemspeicher mit mehreren Ebenen
  • Eine der Möglichkeiten, Leistung von Systemspeicher zu verbessern, ist es, einen Systemspeicher mit mehreren Ebenen zu haben. 1 zeigt eine Ausführungsform eines Rechensystems 100 mit einem mehrstufigen oder mehrebenigen Systemspeicher 112. Gemäß verschiedener Ausführungsformen kann ein kleinerer, schnellerer Nahspeicher 113 als ein Zwischenspeicher („Cache“) für einen größeren Fernspeicher 114 genutzt werden.
  • Die Verwendung von Zwischenspeicherspeichern („Cache-Speicher“) für Rechensysteme ist weithin bekannt. In dem Fall, in dem Nahspeicher 113 als ein Zwischenspeicher verwendet wird, wird Nahspeicher 113 zum Speichern einer zusätzlichen Kopie jener Datenobjekte im Fernspeicher 114 verwendet, von denen erwartet wird, dass sie von dem Rechensystem häufiger abgerufen werden. Der Nahspeicherzwischenspeicher 113 hat niedrigere Zugriffszeiten als die niedrigstufigere Fernspeicher 114 Region. Durch Speichern der häufiger abgerufenen Objekte im Nahspeicher 113 wird der Systemspeicher 112 als schneller betrachtet, weil das System häufig Objekte liest, die in schnellerem Nahspeicher 113 gespeichert sind. Für eine Implementierung unter Verwendung von Rückschreibtechnik kann die Kopie der Datenobjekte im Nahspeicher 113 Daten enthalten, die von der zentralen Verarbeitungseinheit (CPU) aktualisiert wurden und sie sind somit aktueller als die Daten im Fernspeicher 114. Der Prozess des Zurückschreibens von als „dirty“ klassifizierten Zwischenspeichereinträgen in Fernspeicher 114 stellt sicher, dass solche Änderungen nicht verloren gehen.
  • Gemäß manchen Ausführungsformen weist der Nahspeicher 113 beispielsweise reduzierte Zugriffszeiten auf, da er über eine höhere Taktrate als der Fernspeicher 114 verfügt. Hier kann der Nahspeicher 113 eine schnellere (z.B. niedrigere Zugriffszeit), flüchtige Systemspeichertechnologie (z.B. Hochleistung Dynamic Random Accesss Memory (DRAM)) und/oder Static Random Access (SRAM) Speicherzellen, die zusammen mit der Speichersteuerung 116 angeordnet sind, sein. Im Gegensatz dazu kann Fernspeicher 114 entweder eine flüchtige Speichertechnologie sein, die mit einer langsameren Taktrate implementiert ist (z.B. eine DRAM-Komponente, die einen langsameren Takt empfängt), oder beispielsweise eine nichtflüchtige Speichertechnologie, die langsamer (z.B. längere Zugriffszeit) als flüchtiger/DRAM-Speicher, oder welche Technologie auch immer für den Nahfeldspeicher verwendet wird, ist.
  • Fernspeicher 114 kann beispielsweise eine aufkommende nichtflüchtige Direktzugriffsspeichertechnologie umfassen, wie etwa, um einige Möglichkeiten zu nennen, einen phasenwechselbasierten Speicher, eine dreidimensionale Koppelpunktspeichervorrichtung oder andere Byte-adressierbare nichtflüchtige Speichervorrichtungen, „Write-in-place“ nichtflüchtige Hauptspeichervorrichtungen, Speichervorrichtungen, die Chalkogenid verwenden, Flash-Speicher mit einer oder mehreren Ebenen, mehrstufigen Flash-Speicher, einen ferroelektrisch basierten Speicher (z.B. FRAM), einen magnetbasierten Speicher (z.B. MRAM), einen Spin-Transfer-Speicher (z.B. STT-RAM), einen widerstandbasierten Speicher (z.B. ReRAM), einen Memristorbasierten Speicher, Universalspeicher, Ge2Sb2Te Speicher, programmierbaren Metallisierungszellenspeicher, amorphen Zellenspeicher, Ovshinsky-Speicher usw.
  • Solche aufkommenden flüchtigen Direktzugriffsspeichertechnologien verfügen typischerweise über eine gewisse Kombination des Folgenden: 1) höhere Speicherdichten als DRAM (z.B. indem sie in dreidimensionalen (3D) Schaltstrukturen konstruiert sind (z.B. eine Crosspoint 3D Schaltstruktur)); 2) niedrigere Leistungsverbrauchsdichten als DRAM (z.B. weil sie nicht aktualisiert werden müssen); und/oder 3) Zugriffslatenz, die zwar langsamer als DRAM ist, aber immer noch schneller als herkömmliche nichtflüchtige Speichertechnologien, wie etwa FLASH. Letztere Merkmale erlauben insbesondere die Verwendung diverser aufkommender adressierbarer nichtflüchtiger Speichertechnologien in einer Hauptsystemspeicherrolle eher als in einer herkömmlichen Massenspeicherrolle (was die herkömmliche Architekturposition für nichtflüchtigen Speicher ist).
  • Ungeachtet dessen, ob Fernspeicher 114 aus einer flüchtigen oder nichtflüchtigen Speichertechnologie besteht, wirkt in diversen Ausführungsformen Fernspeicher 114 insofern als ein echter Systemspeicher, als dass er feinkörnigere Datenzugriffe (z.B. Zwischenspeicherzeilen) unterstützt, anstatt von größerbasierten Zugriffen, die herkömmlichen nichtflüchtigen Massenspeichern zugeordnet sind (z.B. Solid State Drive (SSD), Festplattenlaufwerke (HDD)) und/oder anderweitig als ein (z.B. Byte) adressierbarer Speicher wirken, von denen aus der Programmcode, der von dem bzw. den Prozessor(en) der CPU ausgeführt wird, arbeitet. Fernspeicher 114 kann jedoch ineffizient sein, wenn darauf für eine geringe Anzahl aufeinanderfolgender Bytes (z.B. weniger als 128 Bytes) Daten zugegriffen wird; die Auswirkungen davon können durch das Vorhandensein des Nahspeichers 113 gemindert werden, der als Zwischenspeicher arbeitet, der dazu in der Lage ist, solche Anforderungen effizient zu bearbeiten.
  • Weil Nahspeicher 113 als ein Zwischenspeicher wirkt, darf Nahspeicher 113 keinen formalen Adressraum aufweisen. Vielmehr definiert Fernspeicher 114 in manchen Fällen den individuell adressierbaren Speicherraum des Hauptspeichers des Rechensystems. In diversen Ausführungsformen wirkt Nahspeicher 113 als ein Zwischenspeicher für Nahspeicher 114, anstatt als ein CPU-Zwischenspeicher letzter Stufe zu wirken. Im Allgemeinen ist ein CPU-Zwischenspeicher für die Bedienung von CPU-Transaktionen optimiert und fügt anderen Speicherbenutzern, wie etwa Direct Memory Access (DMA) fähige Vorrichtungen in einem Peripheral Control Hub (PCH), signifikante Strafen hinzu (wie etwa Cache-Snoop-Overhead und Cache-Eviction-Flows im Falle eines Treffers). Im Gegensatz dazu ist ein speicherseitiger Zwischenspeicher so entworfen, dass er Zugriffe, die an den Systemspeicher gerichtet sind, ungeachtet dessen bearbeitet, ob sie von der CPU, von dem Peripheral Control Hub oder von irgendeiner anderen Vorrichtung, wie etwa einer Anzeigesteuerung, eingehen.
  • In verschiedenen Ausführungsformen können die Speichersteuerung 116 und/oder Nahspeicher 113 lokale Zwischenspeicherinformationen (nachfolgend als „Metadaten“ bezeichnet) beinhalten, so dass die Speichersteuerung 116 bestimmen kann, ob im Nahspeicher 113 für eine eingehende Speicheranforderung ein Zwischenspeicher-Treffer oder Zwischenspeicher-Miss aufgetreten ist. Die Metadaten können ebenfalls im Nahspeicher 113 gespeichert sein.
  • In dem Fall einer eingehenden Schreibanforderung schreibt die Speichersteuerung 116, wenn ein Cache-Hit vorliegt, die Daten (z.B. eine 64-Byte CPU-Zwischenspeicherzeile), die der Anforderung zugeordnet sind, direkt über die im Nahspeicher 113 zwischengespeicherte Version. Ebenso schreibt die Speichersteuerung 116, in dem Fall eines Zwischenspeicher-Miss, in einer Ausführungsform die Daten, die der Anforderung zugeordnet sind, auch in Nahspeicher 113; potenziell erst nachdem jedwede fehlende Teile der Daten, die für die Zusammenstellung der Mindestgröße der Daten erforderlich sind, die in Metadaten als im Nahspeicher 113 als gültig markiert werden können, in einer Technik, die als „Underfill“ bekannt ist, aus dem Fernspeicher 114 eingeholt wurden. Falls der Eintrag in dem Nahspeicherzwischenspeicher 113, in den der Inhalt zu schreiben ist, jedoch einer unterschiedlichen Systemspeicheradresse zugewiesen wurde und neuere Daten enthält, als die, die in dem Fernspeicher 114 gehalten werden (d.h. sie sind „dirty“), müssen die Daten, die den Eintrag belegen, aus dem Nahspeicher 113 entfernt und in Fernspeicher 114 geschrieben werden.
  • In dem Fall einer eingehenden Leseanforderung reagiert die Speichersteuerung 116, wenn ein Cache-Treffer vorliegt, auf die Anforderung durch Lesen der Version der Zwischenspeicherzeile aus Nahspeicher 113 und deren Bereitstellung an den Anforderer. Im Gegensatz dazu liest die Speichersteuerung 116, wenn ein Cache-Miss vorliegt, die angeforderte Zwischenspeicherzeile aus Fernspeicher 114 und stellt dem Anforderer nicht nur die Zwischenspeicherzeile bereit, sondern schreibt auch eine andere Kopie der Zwischenspeicherzeile in den Nahspeicher 113. In vielen Fällen ist die Datenmenge, die von Fernspeicher 114 angefordert wird, und die Datenmenge, die in Nahspeicher 113 geschrieben wird, größer als die von der eingehenden Leseanforderung angeforderte. Die Verwendung einer größeren Datengröße aus Fernspeicher oder zu Nahspeicher erhöht die Wahrscheinlichkeit eines Zwischenspeichertreffers für eine nachfolgende Transaktion zu einem nahegelegenen Speicherort.
  • Im Allgemeinen können Zwischenspeicherzeilen von Nahspeicher und/oder Fernspeicher auf unterschiedlichen Granularitätsebenen geschrieben und/oder gelesen werden (z.B. treten Schreib- und/oder Lesevorgänge nur auf Zwischenspeicherzeilengranularität auf (und z.B. Byte-Adressierbarkeit für Schreib- und/oder Lesevorgänge wird intern innerhalb der Speichersteuerung gehandhabt), Byte-Granularität (z.B. echte Byte-Adressierbarkeit, bei der die Speichersteuerung nur ein identifiziertes eines oder mehrere Byte(s) innerhalb einer Zwischenspeicherzeile schreibt und/oder liest) oder Granularitäten dazwischen auf). Beachten Sie außerdem, dass die Größe der Zwischenspeicherzeile, die innerhalb des Nahspeichers und/oder Fernspeichers aufrechterhalten wird, größer sein kann als die Zwischenspeicherzeilengröße, die von Zwischenspeichern auf CPU-Ebene aufrechterhalten wird. Unterschiedliche Arten von Nahspeicher-Zwischenspeicherarchitektur sind möglich (z.B. Direct Mapped, Set Associative usw.).
  • Die physische Implementierung von Nahspeicher und Fernspeicher in bestimmten Systemen kann von der Ausführungsform abweichen. DRAM-Nahspeichervorrichtungen können beispielsweise mit einem ersten Speicherkanal gekoppelt sein, während aufkommende nichtflüchtige Speichervorrichtungen mit einem anderen Speicherkanal gekoppelt sein können. In noch anderen Ausführungsformen können die Nahspeicher- und Fernspeichervorrichtungen über einen gleichen Speicherkanal mit der hostseitigen Speichersteuerung kommunizieren. Die Nahspeicher- und/oder Fernspeichervorrichtungen können in einem oder mehreren gleichen Halbleiterchippaket(en) als die Prozessorkerne und Speichersteuerung integriert sein, oder sie können außerhalb des oder der Halbleiterchippaket(e) integriert sein.
  • In einem bestimmten Ansatz kann Nahspeicher mit der hostseitigen Speichersteuerung durch eine Punkt-zu-Punkt-Verbindung 221 gekoppelt werden (oder ist gekoppelt), wie einer Peripheral Component Interconnect Express (PCIe) Punkt-zu-Punkt-Verbindung mit einem Satz von Spezifikationen, der von der Peripheral Component Interconnect Special Interest Group (PCI-SIG) veröffentlicht wurde (wie z.B. unter https://pcisig.com/specifications/pciexpress/ verfügbar). Wie beispielsweise in 2 beobachtet, kann Fernspeicher 214 direkt mit einer Fernspeichersteuerung 220 gekoppelt werden und eine Punkt-zu-Punkt-Verbindung 221 koppelt die Fernspeichersteuerung 220 mit der hostseitigen Hauptspeichersteuerung 216.
  • Die Fernspeichersteuerung 220 führt verschiedene Aufgaben durch, die beispielsweise spezifisch für aufkommende nichtflüchtige Speichervorrichtungen sind, die für Fernspeichervorrichtungen 214 verwendet werden können. Zum Beispiel kann die Fernspeichersteuerung 220 Signale auf die Fernspeichervorrichtungen 214 anwenden, die spezielle Spannungen und/oder Zeitgeberanforderungen aufweisen, sie können die Bewegung/Rotation von häufiger zugegriffenen Daten zu weniger häufig zugegriffenen Speicherzellen verwalten (transparent für den Systemspeicher des Systems, der die Organisation aus Perspektive der Prozessorkerne unter einem Prozess adressiert, der als „Leveling“ bekannt ist) und/oder Gruppen schlechter Speicherzellen identifizieren und ihre zukünftige Nutzung verhindern (auch als „Bad Block Management“ bekannt).
  • Die Punkt-zu-Punkt-Verbindung 221 zu der Fernspeichersteuerung 220 kann ein Primärmechanismus eines Rechensystems zum Tragen von Fernspeicherverkehr zu/von der hostseitigen (Haupt-)Speichersteuerung 216 sein und/oder das System kann mehrere Fernspeichersteuerungen und entsprechende Fernspeichervorrichtungen als Speichererweiterungs-„Plugins“ zulassen.
  • In verschiedenen Ausführungsformen können die Speichererweiterungs-Plugin-Lösungen mit Punkt-zu-Punkt-Verbindungen implementiert sein (z.B. eine PCIe-Verbindung pro Plugin). Nicht erweiterter Fernspeicher (der als Teil des grundsätzlichen Originalsystems bereitgestellt wird) kann mit Punkt-zu-Punkt-Verbindungen (z.B. Dual-In-Line-Memory Module (DIMM) Karten mit Nahspeichervorrichtungen, Fernspeichervorrichtungen oder einer Kombination aus Nah- und Fernspeichervorrichtungen können in einen Double Data Rate (DDR) Speicherkanal, der von der Hauptspeichersteuerung ausgeht, gesteckt werden) implementiert sein oder nicht.
  • Fernspeicherkomprimierung/Dekomprimierung zur Verbesserung der Verbindungseffizienz
  • Ein Problem bei der Verbindung einer Hauptspeichersteuerung 216 mit einer Fernspeichersteuerung 220, wie in 2 beobachtet, ist die Bandbreite der Punkt-zu-Punkt-Verbindung 221 angesichts der Größe/Kapazität des Fernspeichers und der Anzahl von Verarbeitungskernen, die Zugriff auf den Fernspeicher wünschen können. In dem Fall eines großen Mehrkernprozessorsystems kann jeder Verarbeitungskern Zugriff auf Fernspeicher wünschen. In Systemen, in denen mehrere Multiprozessorsysteme auf Chips (SoCs) miteinander gekoppelt sind, kann der Speichersteuerung jedes SoC ein eigenes eindeutiges „Slice“ des Systemspeicheradressraums zugewiesen werden und jeder Verarbeitungskern jedes SoC ist dazu in der Lage, auf jedes Systemspeicher-Slice jedes SoC zuzugreifen.
  • Somit kann die Anzahl der Verarbeitungskerne, die Zugriff auf eine bestimmte Speichersteuerung und ihre entsprechenden Fernspeichervorrichtungen suchen, recht groß sein, und, wie in dem vorstehenden Abschnitt erwähnt, können beispielsweise dreidimensionale aufkommende Technologien, die als Fernspeichervorrichtungen verwendet werden, viel größere Speicherdichten aufweisen als herkömmlicher DRAM. Die Kombination zahlreicher Verarbeitungskerne, die große Datenmengen nutzen, die im Fernspeicher gehalten werden, kann der Generierung extrem großer Verkehrsmengen über die Punkt-zu-Punkt-Verbindung 221 entsprechen.
  • Es ist daher denkbar, dass die Verbindung 221 einen Engpass in dem System darstellen könnte, wo Software, die auf den Verarbeitungskernen ausgeführt wird, langsamer ausgeführt wird, weil die Verarbeitungskerne häufig auf Anweisungen/Daten aus dem Fernspeicher warten, die wegen der Langsamkeit der Verbindung 221 verzögert werden. Das Problem wird nur noch verschärft, wenn Eingabe und/oder Ausgabe (I/O) Verkehr (z.B. zwischen Fernspeicher und einem oder mehreren Netzwerkadapter(n)) und Grafikverkehr (z.B. zwischen Fernspeicher und einer Grafikverarbeitungseinheit (GPU)) berücksichtigt werden.
  • Eine Lösung ist, wie in 3 beobachtet, das Implementieren einer Form der Komprimierung 331 am übertragenden Ende der Hauptspeichersteuerung 316, die komprimierte Daten an die Fernspeichersteuerung 320 über die Verbindung 321 überträgt, und/oder eine Form der der Dekomprimierung 322 am empfangenden Ende der Hauptspeichersteuerung 316 aufweist, die komprimierte Daten empfängt, die von der Fernspeichersteuerung über die Verbindung 321 gesendet werden.
  • Bei dieser Anordnung transportiert die Verbindung 321 per Definition komprimierte Informationen von der Hauptspeichersteuerung 316 zu der Fernspeichersteuerung 320 und/oder von der Fernspeichersteuerung 320 zu der Hauptspeichersteuerung 316. Der Transport der komprimierten Informationen über Verbindung 321 entspricht einem unmittelbaren Anstieg realisierter Bandbreite der Verbindung 321, weil die Verbindung 321 dazu in der Lage ist, mehr Informationen für eine feste Baudrate zu transportieren.
  • In einer Ausführungsform ist die Verbindung 321 konfiguriert, Pakete einer bestimmten Größe oder eines bestimmten Größenbereichs von der Hauptspeichersteuerung 316 zu der Fernspeichersteuerung 320 zu übertragen. Die Komprimierung 331, die von der Hauptspeichersteuerung 316 in verschiedenen Ausführungsformen durchgeführt wird, versucht zwei oder mehr Schreibzwischenspeicherzeilen von Daten in ein einzelnes Paket zu komprimieren. In einer Ausführungsform ist die Paketgröße ungefähr einer vollwertigen Zwischenspeicherzeile entsprechend. Somit bietet Komprimierung von Inhalt von zwei oder mehr Schreibzwischenspeicherzeilen in ein einzelnes Paket eine unmittelbare Verbindungsleistungsverbesserung im Vergleich zu einem System ohne Komprimierung.
  • Insbesondere die Größe des Pakets, die ein Merkmal der Verbindungstechnologie ist, wirkt sich auf die Anzahl der Zwischenspeicherzeilen von Informationen aus, die komprimiert werden sollten, um eine effektive Bandbreitenverbesserung zu realisieren. Wenn die Paketstruktur beispielsweise nominal groß genug ist, um zwei vollständige Zwischenspeicherzeilen von Informationen zu halten, dann wäre eine effektive Bandbreitenverbesserung realisiert, wenn drei oder mehr Zwischenspeicherzeilen von Informationen in ein einzelnes Paket komprimiert werden können. Somit sollte generell Sende- (Tx) Komprimierung 331 dazu in der Lage sein, mehr Zwischenspeicherzeilen von Informationen in ein einzelnes Paket zu komprimieren als ansonsten ohne Komprimierung erzielbar wäre.
  • In verschiedenen Ausführungsformen kann die Paketgröße, wie vorstehend erläutert, variiert werden. Hier setzt sich, wie in der Technik bekannt, eine Verbindung, wie etwa Verbindung 321, aus verschiedenen Ebenen zusammen, wie etwa eine physikalische Ebene, eine Datenverbindungsebene über der physikalischen Ebene und eine Transaktionsebene über der Datenverbindungsebene. In verschiedenen Ausführungsformen unterstützen eines von Datenverbindung und Transaktionsebenen oder beides Pakete variabler Größe (die PCIe Transaktionsebene unterstützt beispielsweise variable Paketgröße).
  • In verschiedenen Ausführungsformen wird, anstatt mehr als eine Zwischenspeicherzeile in ein einzelnes Paket zu komprimieren, eine einzelne Zwischenspeicherzeile in ein kleineres Paket komprimiert als ansonsten ohne die Komprimierung realisiert werden würde und die Datenverbindung und/oder Transaktionsebene unterstützt die reduzierte Paketgröße. In diesem Fall sendet das System kleinere Pakete als ein System ohne Komprimierung, bei dem beide System nur eine Zwischenspeicherzeile pro Paket beinhalten. Verbindungsbandbreitenverbesserung wird in diesem Fall immer noch aus den gleichen Gründen, wie oben angeführt, realisiert (es werden mehr Informationen für eine gleich Baudrate transportiert).
  • In noch anderen Ausführungsformen kann die Speichersteuerung, aufgrund der variablen Paketgröße, dynamisch eine oder mehrere komprimierte Cachezeile(en) (nicht nur mehr als eine komprimierte Zwischenspeicherzeile) in einem einzelnen Paket platzieren. Das heißt beispielsweise, manche Pakete können nur eine komprimierte Zwischenspeicherzeile beinhalten, während andere Pakete mehr als eine komprimierte Zwischenspeicherzeile beinhalten können und mehrere solcher Pakete haben alle eine unterschiedliche Größe.
  • Hier verstehen sich unterschiedliche nicht komprimierte Zwischenspeicherzeilendatenmuster als dazu fähig, unterschiedliche Komprimierungsbeträge zu haben (manche Datenmuster lassen extreme Komprimierung zu, während andere Datenmuster nur eine gewisse Komprimierung zulassen). Somit kann der Komprimierungsbetrag pro Zwischenspeicherzeile eine gewisse Variabilität aufweisen und mit beispielsweise variablen Paketgrößen die Größen der komprimierten Zwischenspeicher und die Anzahl komprimierter Zwischenspeicherzeilen pro Paket kann über eine längere Laufzeit des Systems stark variieren.
  • Weiterhin kann die Speichersteuerung ausgelegt sein, keine Komprimierung für eine oder mehrere Zwischenspeicherzeile(n) bereitzustellen (z.B. in Abhängigkeit von dem Anforderer/Benutzer, dem Kern, der die Systemspeicheranforderung ausgegeben hat, usw.). Somit kann die Verbindung während ihrer Laufzeit eine Mischung von Paketen mit nicht komprimierten Zwischenspeicherzeilen und Pakete mit komprimierten Zwischenspeicherzeilen transportieren, wobei zumindest die Pakete mit komprimierten Zwischenspeicherzeilen in Größe variieren können und/oder unterschiedlich viele komprimierte Zwischenspeicherzeilen enthalten (einschließlich einer komprimierten Zwischenspeicherzeile pro Paket).
  • Zur Vereinfachung geht die folgende Diskussion davon aus, dass mehr als eine Zwischenspeicherzeile in ein einzelnes Paket komprimiert wurden. Der Leser sollte anerkennen, dass sich jedwede Informationen oder Prozesse in der folgenden Diskussion, die sich an die Handhabung von mehr als einer komprimierten Zwischenspeicherzeile pro Paket richten, für diejenigen Pakete erübrigen, die nur eine komprimierte Zwischenspeicherzeile enthalten.
  • Empfangs (Rx) Dekomprimierung 332 an dem empfangenden Ende der Speichersteuerung arbeitet auf ähnliche Weise, um ein einzelnes Lese-Reaktionspaket zu erweitern, das von der Steuerung des Fernspeichers 320 über die Verbindung 316 in mehreren Lesezwischenspeicherzeilen gesendet wird, wobei eine oder mehrere der wiederhergestellten Zwischenspeicherzeile(n) an eine oder mehrere anfordernde Entitäten (z.B. Prozessorkern(e), GPU(s), Netzwerkadapter usw.) bereitgestellt werden, die eine oder mehrere Leseanforderungen ausgegeben haben, die veranlasst haben, dass das Paket, das von der Verbindung empfangen wurde, abgerufen wurde.
  • 4a bis 4c zeigen unterschiedliche Ausführungsformen zum Implementieren des grundsätzlichen Entwurfansatzes in 3. Wie in 4a beobachtet, dekomprimiert die Fernspeichersteuerung 420, nachdem von der Hauptspeichersteuerung 416 Tx-Komprimierung 431 durchgeführt und ein Paket, das zwei oder mehr komprimierte Schreibzwischenspeicherzeilen enthält, das über die Verbindung 421 gesendet wurde, die komprimierten Zwischenspeicherzeilen, die in dem Paket enthalten sind, was in Rx-Dekomprimierung 433 resultiert und schreibt die dekomprimierten Zwischenspeicherzeilen in die Fernspeichervorrichtungen 414. In einer Ausführungsform ist die Systemspeicheradresse jeder konstituierenden Zwischenspeicherzeile in dem Paket als Metadaten in dem Paket beinhaltet, so dass die Fernspeichersteuerung 420 die Systemspeicheradresse für jede individuelle dekomprimierte Zwischenspeicherzeile verstehen und sie entsprechend in den Fernspeichervorrichtungen 414 speichern kann.
  • In dem Fall eines Lesevorgangs, insbesondere zu Zeiten hohen Verkehrsaufkommens, werden mehrere Leseanforderungen von der Hauptspeichersteuerung 416 an die Fernspeichersteuerung 420 gesendet (hier können z.B. mehrere Leseanforderungen in einem einzelnen Paket enthalten sein, das von der Hauptspeichersteuerung 416 an die Fernspeichersteuerung 420 gesendet wird). Die Fernspeichersteuerung 420 ruft bei Empfang der Anforderungen die angeforderten Zwischenspeicherzeilen ab und platziert sie in einer Outbound-Warteschlange 435 innerhalb der Fernspeichersteuerung 420. Komprimierungslogik 434 in der Fernspeichersteuerung 420 versucht dann zwei oder mehr Outbound-Zwischenspeicherzeilen in der Outbound-Warteschlange 435 zur Aufnahme in einem einzelnen Paket zu komprimieren, das dann von der Fernspeichersteuerung 420 an die Hauptspeichersteuerung 416 über die Verbindung 421 gesendet wird.
  • In einer Ausführungsform enthält das Paket einige Metadaten, die angeben, welche angeforderten Lesezwischenspeicherzeilen in dem Paket enthalten sind. In einer Ausführungsform enthält beispielsweise jede Leseanforderung, die von der Hauptspeichersteuerung an die Fernspeichersteuerung gesendet wird, eine eindeutige ID, die die Systemspeicheradresse jeder angeforderten Zwischenspeicherzeile sein kann, aber nicht zwangsläufig sein muss. Als Teil der von der Fernspeichersteuerung 420 durchgeführten Leseanforderungsbearbeitung enthält das Paket, wenn zwei oder mehr Lesezwischenspeicherzeilen in ein gleiches Lesereaktionspaket komprimiert werden, Metadaten, die die eindeutigen IDs seiner konstituierenden komprimierten Zwischenspeicherzeilen enthalten, so dass die Hauptspeichersteuerung 416 bei Empfang des Lesereaktionspakets dazu in der Lage ist, zu identifizieren, welche ihrer ausstehenden Leseanforderungen in dem neu empfangenen Paket bereitgestellt wurden.
  • Im Allgemeinen kann das Paket, für Pakete, die entweder von der Hauptspeichersteuerung 416 (an die Fernspeichersteuerung 420) oder an die Hauptspeichersteuerung 416 (von der Fernspeichersteuerung 420) gesendet werden, Metadaten enthalten, die die Grenzen der Paketnutzlast zwischen den unterschiedlichen Zwischenspeicherzeilen, die in dem Paket enthalten sind, angeben. Insbesondere dekomprimiert die Fernspeichersteuerung 420 in dem Ansatz in 4a, wie vorstehend diskutiert, Schreibzwischenspeicherzeilen vollständig, bevor sie in den Fernspeichervorrichtungen 414 gespeichert werden. Das heißt, dekomprimierte Zwischenspeicherzeilen werden physikalisch in den Fernspeichervorrichtungen 414 gespeichert.
  • 4b zeigt eine andere Implementierung, die komprimierte Zwischenspeicherzeilen in den Fernspeichervorrichtungen 414 speichert, anstatt dekomprimierte Zwischenspeicherzeilen wie in der gerade vorstehend unter Bezugnahme auf 4a beschriebenen Ausführungsform. Hier, wie in 4b beobachtet, und ähnlich dem Ansatz in 4a, empfängt die Fernspeichersteuerung 420 ein Paket, das komprimierte Schreibzwischenspeicherzeilen enthält, und dekomprimiert die Zwischenspeicherzeilen, um Rx-Dekomprimierung 433 zu produzieren, beispielsweise mehrere Schreibzwischenspeicherzeilen und deren entsprechende Systemspeicheradressen. Die Fernspeichersteuerung 420 platziert die dekomprimierten Schreibzwischenspeicherzeilen in einer Inbound-Schreib-Warteschlange 436.
  • Die Fernspeichersteuerung 420 führt dann Tx-Komprimierung 438 des Inhaltes der zwei oder mehr individuellen Schreibzwischenspeicherzeilen in der Inbound-Warteschlange 436 durch, was in einer einzelnen Zwischenspeicherzeile resultiert, und speichert die einzelne Zwischenspeicherzeile dann in die Fernspeichervorrichtungen 414. Als Teil des physikalischen Speicherns einer komprimierten Zwischenspeicherzeile aktualisiert die Fernspeichersteuerung eine „Address-Indirection-Tabelle“ (AIT) 437, was eine Tabelle ist, die erfasst, welche Systemspeicheradressen ihre Zwischenspeicherzeileninhalte in welchen physikalischen Speicheradressenpositionen der Fernspeichervorrichtungen 414 gespeichert haben. In diesem Fall wird die AIT 437 aktualisiert, um anzugeben, dass die jeweiligen Systemspeicheradressen der konstituierenden Zwischenspeicherzeilen einer komprimierten Zwischenzeile an einer gleichen physikalischen Speicheradresse der Fernspeichervorrichtungen 414 gespeichert sind.
  • In einer anderen Ausführungsform platziert die Fernspeichersteuerung 420, anstatt einer Dekomprimierung 433 der Zwischenspeicherzeilen, die in einem Paket enthalten sind, das von der Hauptspeichersteuerung 416 empfangen wurde, und Platzieren der dekomprimierten Zwischenspeicherzeilen in einer Inbound-Warteschlange 436, die Paketnutzlast, die die komprimierten Zwischenspeicherzeilen enthält, einfach in der Inbound-Warteschlange 436. Die Nutzlast, die die komprimierten Zwischenspeicherzeilen enthält, wird dann verwendet, um mindestens eine Zwischenspeicherzeile zu konsumieren, die von der Inbound-Warteschlange 436 in die Fernspeichervorrichtungen 414 geschrieben wird (Tx-Komprimierung 438 wird nicht durchgeführt). Das heißt, Zwischenspeicherzeilen, die in dem Paket zusammen komprimiert sind, das von der Hauptspeichersteuerung 416 empfangen wird, werden auch zusammen komprimiert als eine Zwischenspeicherzeile in Fernspeichervorrichtungen 414 gespeichert.
  • Hier werden die in dem Paket enthaltenen Meta von der Fernspeichersteuerung 420 verarbeitet, um die individuelle Systemspeicheradresse für jede konstituierende Zwischenspeicherzeile in dem Paket zu identifizieren. Durch Erkennen der Systemspeicheradresse für jede konstituierende Zwischenspeicherzeile ist die Fernspeichersteuerung dazu in der Lage, die AIT 437 zu aktualisieren, wenn die Paketnutzlast als eine Zwischenspeicherzeile in die Fernspeichervorrichtungen 414 geschrieben werden. Das heißt, die Systemspeicheradressen der Zwischenspeicherzeilen, die in einem gleichen Paket enthalten sind, werden zu der gleichen physikalischen Speicheradresse der Fernspeichervorrichtungen 414 in der AIT 437 abgebildet.
  • In dem Fall einer Leseanforderung, die die Systemspeicheradresse der gewünschten Zwischenspeicherzeile spezifiziert, führt die Fernspeichersteuerung 420 einen Nachschlagevorgen in der AIT 437 durch, um die komprimierte Zwischenspeicherzeile in Fernspeichervorrichtungen 414 abzurufen, die den komprimierten Inhalt der angeforderten Zwischenspeicherzeile enthält. In einer Ausführungsform wird die Zwischenspeicherzeile, die die Anforderungszwischenspeicherzeile enthält, aus den Fernspeichervorrichtungen 414 gelesen und dekomprimiert. In einer Ausführungsform wird nur die angeforderte Zwischenspeicherzeile in die Outbound-Warteschlange 435 eingegeben. Lesedienstverarbeitung, wie vorstehend unter Bezugnahme auf 4a beschrieben, wird dann durchgeführt, einschließlich Tx-Komprimierung 434 der Outbound-Zwischenspeicherzeilen durch die Fernspeichersteuerung 420, so dass komprimierte Zwischenspeicherzeilen über die Verbindung 421 von der Fernspeichersteuerung 420 an die Hauptspeichersteuerung 416 gesendet werden.
  • In einer anderen Ausführungsform dekomprimiert die Fernspeichersteuerung 420 die individuellen Zwischenspeicherzeilen, die in einer komprimierten Zwischenspeicherzeile, die aus Fernspeichervorrichtungen 414 gelesen werden, nicht. Stattdessen bleibt solch komprimierter Inhalt in der Fernspeichersteuerung 420 komprimiert und wird von der Fernspeichersteuerung 420 an die Hauptspeichersteuerung in dem gleichen komprimierten Format übertragen, in dem er im physikalischen Speicher gespeichert war (somit werden Rx-Dekomprimierung 439 und Tx-Komprimierung 434 nicht durchgeführt). Die komprimierten Zwischenspeicherzeilen können in der Output-Warteschlange 435 platziert und in Pakete gepackt werden, die mehrere komprimierte Zwischenspeicherzeilen enthalten, die an die Hauptspeichersteuereinrichtung 416 gesendet werden.
  • In einer weiteren Ausführungsform wird der Inhalt einer komprimierten Zwischenspeicherzeile, der aus Fernspeichervorrichtungen 414 gelesen wird (und daher mehrere komprimierte Zwischenspeicherzeilen mit Informationen enthält), in seiner Gesamtheit in einem Paket gesendet, das von der Fernspeichersteuerung an die Hauptspeichersteuerung gesendet wird (d.h. Zwischenspeicherzeilen, die zusammen in dem physikalischen Speicher komprimiert sind, werden ebenfalls in dem gleichen Paket zusammen komprimiert an die Hauptspeichersteuerung gesendet).
  • In noch anderen Ausführungsformen kann die Fernspeichersteuerung 420 einen lokalen Zwischenspeicher 440 beinhalten, um komprimierte oder dekomprimierte Zwischenspeicherzeilen zu halten, die nicht das Ziel der Leseanforderung waren. Gehen Sie beispielsweise von einer Situation aus, in der drei Zwischenspeicherzeilen mit Informationen in eine einzelne Zwischenspeicherzeile komprimiert werden, die in den Fernspeichervorrichtungen 414 gespeichert ist. Wenn eine nachfolgende Leseanforderung von der Fernspeichersteuerung 420 für nur eine der drei Zwischenspeicherzeilen empfangen wird, werden eine Zwischenspeicherzeile, die den komprimierten Inhalt der gewünschten Zwischenspeicherzeile enthält, und zwei andere Zwischenspeicherzeilen aus den Fernspeichervorrichtungen 414 abgerufen.
  • Die anderen beiden nicht angeforderten Zwischenspeicherzeilen können daher im lokalen Zwischenspeicher 440 der Speichersteuerung platziert werden, beispielsweise in einem komprimierten oder dekomprimierten Format. Wenn kurz darauf eine nachfolgende Leseanforderung für eine dieser beiden Zwischenspeicherzeilen empfangen wird, kann die Leseanforderung von der Fernspeichersteuerung 420 direkt aus dem lokalen Zwischenspeicher bearbeitet werden, ohne dass ein Lesevorgang in die Fernspeichervorrichtungen 414 durchgeführt werden muss.
  • Somit beinhaltet eine Leseanforderung, die von der Fernspeichersteuerung 420 verarbeitet wird, in einer Ausführungsform, dass die Fernspeichersteuerung einen Nachschlagevorgang in dem lokalen Zwischenspeicher 440 der Speichersteuerung für die angeforderte Zwischenspeicherzeile durchführt, bevor sie eine Leseanforderung an die Fernspeichervorrichtungen 414 einreicht. In verschiedenen Ausführungsformen kann der lokale Zwischenspeicher 440 in seiner Größe begrenzt sein, so dass der lokale Zwischenspeicher 440 im Durchschnitt nicht angeforderte Zwischenspeicherzeilen nur für einen begrenzten Zeitraum hält, bevor sie aus dem lokalen Zwischenspeicher 440 entfernt werden, um Raum für neue nicht angeforderte Zwischenspeicherzeilen zu schaffen. Somit kann die Größe des lokalen Zwischenspeichers 440 in verschiedenen Ausführungsformen so bemessen sein, dass er, beispielsweise während nominaler Verkehrsflüsse, nicht angeforderte Zwischenspeicherzeilen für einen Zeitraum hält, der ungefähr der Zeitdauer entspricht, in der eine Anforderung nach einem nicht angeforderten Zwischenspeicher empfangen werden sollte, wenn die Grundsätze räumlicher und/oder zeitlicher Lokalität gelten.
  • 4c zeigt eine andere Ausführungsform, in der die Fernspeichersteuerung 420 keine Komprimierung oder Dekomprimierung durchführt. Hier wird die AIT 437 von der Hauptspeichersteuerung 416 aufrecht erhalten. Wenn der Inhalt mehrerer Zwischenspeicherzeilen über Tx-Komprimierung 431 von der Hauptspeichersteuerung 416 in die Nutzlast eines einzelnen Pakets komprimiert wird, korrelieren die Systemspeicheradressen dieser Zwischenspeicherzeilen mit einer gleichen Fernspeichersystemspeicheradresse für Fernspeichervorrichtungen 414 in der AIT 437. Das Paket mit den komprimierten Zwischenspeicherzeilen wird dann an die Fernspeichersteuerung 420 mit der gleichen Fernspeichersystemspeicheradresse für Fernspeichervorrichtungen 414 gesendet. Die Fernspeichersteuerung 420 speichert die Paketnutzlast, beispielsweise als eine einzelne Schreibzwischenspeicherzeile, in die Fernspeichervorrichtungen 414 an der spezifizierten Adresse.
  • Wenn eine Leseanforderung von der Hauptspeichersteuerung 416 empfangen wird, wird ein Nachschlagevorgang in der AIT 437 durchgeführt, um die Fernspeicheradresse für die angeforderte Zwischenspeicherzeile zu identifizieren. Eine Leseanforderung, die die Fernspeichersystemspeicheradresse enthält, wird von der Hauptspeichersteuerung 416 an die Fernspeichersteuerung 420 gesendet. Die Fernspeichersteuerung 420 verwendet die Fernspeichersystemspeicheradresse, um die Fernspeicherzwischenspeicherzeile abzurufen, die die komprimierte angeforderte Zwischenspeicherzeile enthält (sowie andere komprimierte Zwischenspeicherzeilen). Die Fernspeicherzwischenspeicherzeile wird dann, beispielsweise als eine Nutzlast innerhalb eines Pakets, von der Fernspeichersteuerung 420 an die Hauptspeichersteuerung 416 gesendet.
  • Die Hauptspeichersteuerung 416 führt Rx-Dekomprimierung 432 der Fernspeicherzwischenspeicherzeile durch, um die angeforderte Zwischenspeicherzeile abzurufen und leitet die angeforderte Zwischenspeicherzeile an die anfordernde Entität (z.B. einen Verarbeitungskern) weiter. In verschiedenen Ausführungsformen kann die Hauptspeichersteuerung 416 einen lokalen Zwischenspeicher beinhalten, der ähnlich arbeitet wie der lokale Zwischenspeicher 440 der Fernspeichersteuerung 420, der direkt vorstehend unter Bezugnahme auf 4b diskutiert wurde.
  • Obwohl die vorstehende Diskussion nur PCIe als eine Verbindungstechnologie erwähnt, ist es zweckmäßig, darauf hinzuweisen, dass auch andere Arten von Verbindungen verwendet werden können (z.B. Quick Path Interconnect (QPI) oder Ultra Path Interconnect (UPI) von Intel Corporation of Santa Clara, California, USA). Es ist auch zweckmäßig darauf hinzuweisen, dass obwohl vorstehend diskutierte Ausführungsformen komprimierten Verkehr über die Verbindung in beide Richtungen (von Hauptspeichersteuerung zu Fernspeichersteuerung und von Fernspeichersteuerung zu Hauptspeichersteuerung) beschrieben haben, Verkehr in anderen Ausführungsformen in nur einer Richtung über die Verbindung komprimiert werden kann. In solchen Fällen müssen jedoch korrekte Komprimierungs-/Dekomprimierungsflüsse zwischen den beiden Steuerungen vorliegen (wenn beispielsweise Verkehr in die Richtung von der Hauptspeichersteuerung zu der Fernsteuervorrichtung komprimiert ist, aber nicht in der Richtung von der Fernspeichersteuerung zu der Hauptspeichersteuerung, muss eine gewisse Form der Dekomprimierung an der Fernspeichersteuerung existieren).
  • Obwohl sich die vorstehende Diskussion auf ein Beispiel konzentriert, das nur eine einzelne Verbindung zwischen der hostseitigen Hauptspeichersteuerung und der Fernspeichersteuerung zeigt, kann es in verschiedenen Ausführungsformen mehrere Verbindungen geben, die von der Hauptspeichersteuerung ausgehen, beispielsweise jeweilige Fernspeichersteuerungen. Hier kann ein einzelner Komprimierungs- und/oder Dekomprimierungsblock innerhalb der Hauptspeichersteuerung die Komprimierung und/oder Dekomprimierung aller solcher multipler Kanäle handhaben oder jeder Kanal kann seinen eigenen dedizierten Komprimierungs- und/oder Dekomprimierungsblock haben oder es kann eine gewisse Mischform zwischen diesen beiden Extremen implementiert werden (z.B. ein erster Block handhabt die Komprimierung und/oder Dekomprimierung für ein erstes Paar von Verbindungen, ein zweiter Block handhabt die Komprimierung und/oder Dekomprimierung für ein zweites Paar von Verbindungen usw.).
  • Obwohl die vorstehende Diskussion sich auf ein Beispiel konzentriert, in dem der komprimierte Verkehr Informationen zu/von nicht flüchtigen Fernspeichervorrichtungen in einem Rechensystem mit mehreren Ebenen transportiert, sollte der Leser verstehen, dass solch eine Verbindung auch in anderen Anordnungen verwendet werden könnte (z.B. eine Verbindung, die mit Nahspeicher gekoppelt ist, eine Verbindung, die nicht Teil eines Systemspeichers mit mehreren Ebenen ist, eine Verbindung, die mit flüchtigen Speichervorrichtungen gekoppelt ist, usw.).
  • Die vorstehend beschriebene Komprimierung und/oder Dekomprimierung kann mit jedweder Kombination dedizierter Hardwarelogikschaltungen implementiert werden, wie etwa benutzerdefinierten fest verdrahteten Logikschaltungen, programmierbaren Logik-Arrays (PLA), programmierbaren Logikvorrichtungen (PLD) oder feldprogrammierbaren Gate-Array (FPGA) Logikschaltungen. Alternativ oder in Kombination kann eine Form von Programmcodeausführung verwendet werden, um die Komprimierung und/oder Dekomprimierung zu implementieren. In diesem Fall beinhaltet die Schaltungsanordnung jedwede Art von Logikschaltung, die dazu fähig ist, Programmcode auszuführen (z.B. Steuereinrichtung, Microcontroller, eingebetteter Microcontroller, digitaler Signalprozessor (DSP), eingebetteter Prozessor usw.). Die Nachschlagelogik der AIT-Tabelle kann auch mit jedweder der vorstehend beschriebenen Logikschaltungen implementiert werden. Die Tabelleneinträge können mit einer Register- oder Speicherschaltung (z.B. SRAM) implementiert werden.
  • 5 zeigt eine Darstellung eines beispielhaften Rechensystems 500, wie etwa ein Personal-Computing-System (z.B. Desktop oder Laptop) oder ein mobiles oder handgehaltenes Rechensystem, wie etwa ein Tabletgerät oder Smartphone, oder ein größeres Rechensystem, wie etwa ein Server-Rechensystem. Wie in 5 beobachtet, kann das grundlegende Rechensystem eine zentrale Verarbeitungseinheit 501 beinhalten (die beispielsweise eine Vielzahl von Universalverarbeitungskernen und eine Hauptspeichersteuerung, die auf einem Anwendungsprozessor oder Mehrkernprozessor angeordnet sein können, beinhalten kann), Systemspeicher 502, eine Anzeige 503 (z.B. Touchscreen, Flachbildschirm), eine lokale verdrahtete Punkt-zu-Punkt-Verbindung (z.B. USB) Schnittstelle 504, diverse Netzwerk I/O Funktionen 505 (wie etwa eine Ethernet-Schnittstelle und/oder mobiles Modem-Subsystem), eine drahtloses lokales Netzwerk (z.B. WiFi) Schnittstelle 506, eine drahtlose Punkt-zu-Punkt-Verbindung (z.B. Bluetooth) Schnittstelle 507 und eine Global Positioning System Schnittstelle 508, diverse Sensoren 509_1 bis 509_N (z.B. eines oder mehrere von einem Gyroskop, einem Beschleunigungsmesser, einem Magnetometer, einem Temperatursensor, einem Drucksensor, einem Luftfeuchtigkeitssensor usw.), eine Kamera 510, eine Batterie 511, eine Leistungsverwaltungssteuereinheit 512, einen Lautsprecher und Mikrofon 513 und einen Audio-Coder/Decoder 514.
  • Ein Anwendungsprozessor oder Mehrkernprozessor 550 kann einen oder mehrere Universalverarbeitungskern(e) 515 innerhalb seiner CPU 501 beinhalten, eine oder mehrere Grafikverarbeitungseinheit(en) 516, eine Speicherverwaltungsfunktion 517 (z.B. eine Speichersteuerung) und eine I/O-Steuerfunktion 518. Die Universalverarbeitungskerne 515 führen typischerweise das Betriebssystem und Anwendungssoftware des Rechensystems aus. Die Grafikverarbeitungseinheiten 516 führen typischerweise grafikintensive Funktionen aus, beispielsweise zum Erzeugen von Grafikinformationen, die auf der Anzeige 503 dargestellt werden. Die Speichersteuerfunktion 517 steht in Schnittstellenverbindung mit dem Systemspeicher 502. Der Systemspeicher 502 kann ein Systemspeicher mit mehreren Ebenen sein.
  • Die Speicherfunktion 517 kann eine Hauptspeichersteuerung und Fernspeichersteuerung beinhalten, die Komprimierungssystemspeicherverkehr zwischen einander, wie vorstehend beschrieben, transportieren.
  • Jede von der Touchscreenanzeige 503, den Kommunikationsschnittstellen 504-507, der GPS-Schnittstelle 508, den Sensoren 509, der Kamera 510 und dem Lautsprecher-/Mikrofoncodec 513, 514 lassen sich als verschiedene Formen von I/O (Eingabe und/oder Ausgabe) relativ zu dem Gesamtrechensystem sehen, einschließlich, sofern zutreffend, auch einer integrierten Peripherievorrichtung (z.B. die Kamera 510). In Abhängigkeit von der Implementierung können verschiedene eine dieser I/O-Komponenten in dem Anwendungsprozessor/Mehrkernprozessor 550 integriert sein oder sich außerhalb des Chips oder außerhalb des Pakets des Anwendungsprozessors/Mehrkernprozessors 550 befinden. Der Massenspeicher des Rechensystems kann mit nicht flüchtigem Speicher 520 implementiert sein, der mit der I/O-Steuereinrichtung 518 gekoppelt sein kann (die hierin auch als eine periphere Steuerzentrale bezeichnet sein kann).
  • Ausführungsformen der Erfindung können verschiedene Prozesse beinhalten, wie vorstehend dargelegt. Die Prozesse können in maschinenausführbaren Anweisungen verkörpert sein. Die Anweisungen können verwendet werden, um einen Universal- oder Spezialprozessor zu veranlassen, bestimmte Prozesse durchzuführen. Alternativ können diese Prozesse von spezifischen Hardwarekomponenten durchgeführt werden, die festverdrahtete Logik zum Durchführen der Prozesse enthalten, oder durch eine Kombination aus Software oder anweisungsprogrammierten Computerkomponenten oder benutzerdefinierten Hardwarekomponenten, wie etwa anwendungsspezifische integrierte Schaltungen (ASIC), programmierbare Logikvorrichtungen (PLD), programmierbare Logik-Arrays (PLAs) oder feldprogrammierbare Gate-Array (FPGA).
  • Elemente der vorliegenden Erfindungen können auch als ein maschinenlesbares Medium zum Speichern der maschinenausführbaren Anweisungen bereitgestellt werden. Das maschinenlesbare Medium kann Floppy-Disketten, optische Platten, CD-ROMs und magnetoptische Platten, FLASH-Speicher, ROMs, RAMs, EPROMs, EEPROMs, magnetische oder optische Karten, Verbreitungsmedien oder eine andere Art von Medien/maschinenlesbarem Medium, die bzw. das für das Speichern elektronischer Anweisungen geeignet sind bzw. ist, beinhalten, ist aber nicht hierauf beschränkt. Die vorliegende Erfindung kann beispielsweise als ein Computerprogramm heruntergeladen werden, das von einem dezentralen Computer (z.B. einem Server) zu einem anfordernden Computer (z.B. einem Client) in Form von Datensignalen, die in einer Trägerwelle oder einem anderen Verbreitungsmedium verkörpert sind, über eine Kommunikationsverbindung (z.B. ein Modem oder eine Netzwerkverbindung) übertragen werden kann.
  • Es wurde vorstehend eine Vorrichtung beschrieben, die eine Punkt-zu-Punkt-Verbindungsschnittstelle zum Koppeln mit einer Punkt-zu-Punkt-Verbindung beinhaltet. Die Punkt-zu-Punkt-Verbindung dient dazu, Systemspeicherverkehr zwischen der Hauptspeichersteuerung und einem Hauptspeicher zu transportieren. Die Hauptspeichersteuerung beinhaltet mindestens eines von: Komprimierungslogikschaltung zum Komprimieren von Schreibinformationen vor der Übertragung über die Verbindung; Dekomprimierungslogikschaltung zum Dekomprimieren von Leseinformationen nachdem sie von der Verbindung empfangen wurden.
  • In mindestens einer Ausführungsform beinhaltet die Hauptspeichersteuerung sowohl die Komprimierungslogikschaltung als auch die Dekomprimierungslogikschaltung. In mindestens einer Ausführungsform dient die Punkt-zu-Punkt-Verbindung dazu, Pakete mit einer Nutzlastgröße, die für eine erste Anzahl nicht komprimierter Zwischenspeicherzeilen ausgelegt ist, zu übertragen, und die Komprimierungslogikschaltung dient dazu, eine zweite Anzahl nicht komprimierter Zwischenspeicherzeilen in die Nutzlast eines zu übertragenden Pakets zu komprimieren, wobei die zweite Anzahl größer ist als die erste Anzahl.
  • In mindestens einer Ausführungsform ist die Punkt-zu-Punkt-Verbindung dazu in der Lage, Pakete variabler Größe zu übertragen, und mindestens manche Pakete tragen nur eine einzelne komprimierte Zwischenspeicherzeile. In mindestens einer Ausführungsform beinhaltet die Hauptspeichersteuerung eine Adress-Indirection-Tabellen-Schaltung zum Korrelieren von Systemspeicheradressen von Zwischenspeicherzeilen, die in eine gleiche Zwischenspeicherzeile zusammen komprimiert sind. In mindestens einer Ausführungsform beinhaltet die Hauptspeichersteuerung einen lokalen Zwischenspeicher, um Zwischenspeicherzeilen, die von der Dekomprimierungslogikschaltung dekomprimiert, aber von einer Leseanforderung nicht angefordert wurden, zu halten.
  • Es wurde auch eine andere Vorrichtung beschrieben, die eine Steuerung eines nicht flüchtigen Speichers beinhaltet, einschließlich einer Punkt-zu-Punkt-Verbindungsschnittstelle zum Koppeln mit einer Punkt-zu-Punkt-Verbindung. Die Punkt-zu-Punkt-Verbindung dient dazu, Systemspeicherverkehr eines Systemspeichers mit mehreren Ebenen zwischen einer Hauptspeichersteuerung und der Steuerung des nicht flüchtigen Speichers zu transportieren. Die Steuerung des nicht flüchtigen Speichers hat in Schnittstellenverbindung mit dem nicht flüchtigen Speicher des Systemspeichers mit mehreren Ebenen zu stehen. Die Steuerung des nicht flüchtigen Speichers beinhaltet mindestens eines von: i) Komprimierungslogikschaltung zum Komprimieren von Schreibinformationen vor dem Schreiben in den nicht flüchtigen Speicher; ii) Komprimierungslogikschaltung zum Komprimieren von Leseinformationen vor Übertragen über die Punkt-zu-Punkt-Verbindung zu der Hauptspeichersteuerung; iii) Dekomprimierungslogik zum Dekomprimieren von Leseinformationen, die aus dem nicht flüchtigen Speicher gelesen werden; iv) Dekomprimierungslogikschaltung zum Dekomprimieren von Schreibinformationen, die von der Punkt-zu-Punkt-Verbindung empfangen wurden.
  • In einer Ausführungsform beinhaltet die Steuerung des nicht flüchtigen Speichers ii) und iii) oben. In einer weiteren Ausführungsform beinhaltet die Steuerung des nicht flüchtigen Speichers i), ii), iii) und iv) oben.
  • In einer Ausführungsform beinhaltet die Steuerung des nicht flüchtigen Speichers eine Outbound-Warteschlange, die die Punkt-zu-Punkt-Verbindung der Steuerung des nicht flüchtigen Speichers der Hauptspeichersteuerungsrichtung zuführt. In einer weiteren Ausführungsform dient die Outbound-Warteschlange dazu, komprimierte Lesezwischenspeicherzeilen in die Warteschlange zu stellen.
  • In einer Ausführungsform beinhaltet die Steuerung des nicht flüchtigen Speichers eine Inbound-Warteschlange, die Schreibinformationen dem nicht flüchtigen Speicher zuführt. In einer weiteren Ausführungsform dient die Inbound-Warteschlange dazu, Paketnutzlasten, die komprimierte Lesezwischenspeicherzeilen umfasst, in die Warteschlange zu stellen.
  • In einer Ausführungsform beinhaltet die Steuerung des nicht flüchtigen Speichers eine Address-Indirection-Tabellen-Schaltung zum Korrelieren von Systemspeicheradressen von Zwischenspeicherzeilen, die in eine gleiche Zwischenspeicherzeile, die in dem nicht flüchtigen Speicher gespeichert ist, zusammen komprimiert sind. In einer Ausführungsform beinhaltet die Steuerung des nicht flüchtigen Speichers einen lokalen Zwischenspeicher, um Zwischenspeicherzeilen zu halten, die von der Dekomprimierungslogikschaltung von iii) dekomprimiert, aber nicht von einer Leseanforderung angefordert wurden.
  • In einer Ausführungsform besteht der nicht flüchtige Speicher aus jedwedem von: a) Phasenwechselspeicher; b) Chalkogenid; c) ferroelektrisch basiertem Speicher (z.B. FRAM); d) einem magnetbasierten Speicher (z.B. MRAM); e) einem Spin-Transfer-Speicher (z.B. STT-RAM); f) einem widerstandsbasiertem Speicher (z.B. ReRAM); g) einem Memristor-basiertem Speicher;
  • Ovshinsky-Speicher.
  • Ein Rechensystem umfasst eine oder beide der Vorrichtungen, die ebenfalls beschrieben wurden.
  • Es wurde auch ein Verfahren beschrieben. Das Verfahren beinhaltet Durchführen von mindestens einem des Folgenden durch eine Speichersteuerung: i) Komprimieren ersten Systemspeicherverkehrs vor Senden des ersten Systemspeicherverkehrs über eine erste Punkt-zu-Punkt-Verbindung in Richtung einer ersten Systemspeichervorrichtung; ii) Dekomprimieren zweiten Systemspeicherverkehrs nach Empfangen des zweiten Systemspeicherverkehrs von einer zweiten Punkt-zu-Punkt-Verbindung, die den zweiten Systemspeicherverkehr von einer zweiten Systemspeichervorrichtung empfangen hat; iii) Dekomprimieren dritten Systemspeicherverkehrs nach Empfangen des dritten Systemspeicherverkehrs von einer dritten Punkt-zu-Punkt-Verbindung, die den dritten Systemspeicherverkehr von einer Hauptspeichersteuerung empfangen hat; iv) Komprimieren vierten Systemspeicherverkehrs vor Senden des vierten Systemspeicherverkehrs über eine vierte Punkt-zu-Punkt-Verbindung in Richtung einer Hauptspeichervorrichtung.
  • In einer Ausführungsform befindet sich die Steuerung zwischen mindestens einem von: a) der ersten Punkt-zu-Punkt-Verbindung und der ersten Systemspeichervorrichtung; b) der zweiten Punkt-zu-Punkt-Verbindung und der zweiten Systemspeichervorrichtung.
  • In einer Ausführungsform ist mindestens eines von der ersten Systemspeichervorrichtung und der zweiten Systemspeichervorrichtung eine nicht flüchtige Speichervorrichtung. In einer weiteren Ausführungsform besteht die nicht flüchtige Speichervorrichtung aus jedwedem von: a) einem Phasenwechselspeicher; b) Chalkogenid; c) einem ferroelektrisch basiertem Speicher (z.B. FRAM); d) einem magnetbasierten Speicher (z.B. MRAM); e) einem Spin-Transfer-Speicher (z.B. STT-RAM); f) einem widerstandsbasiertem Speicher (z.B. ReRAM); g) einem Memristor-basiertem Speicher; h) Ovshinsky-Speicher.
  • In der vorstehenden Spezifikation wurde die Erfindung unter Bezugnahme auf spezifische beispielhafte Ausführungsformen davon beschrieben. Es ist jedoch offensichtlich, dass diverse Modifikationen und Veränderungen daran vorgenommen werden können, ohne dass von dem breiteren Geist und Umfang der Erfindung, wie in den beigefügten Ansprüchen dargelegt, abgewichen werden würde. Die Spezifikation und Zeichnungen müssen dementsprechend in einem veranschaulichenden und nicht in einem einschränkenden Sinne aufgefasst werden.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 15395032 [0001]

Claims (20)

  1. Vorrichtung, umfassend: eine Hauptspeichersteuerung, eine Punkt-zu-Punkt-Verbindungsschnittstelle zum Koppeln mit einer Punkt-zu-Punkt-Verbindung umfassend, wobei die Punkt-zu-Punkt-Verbindung Systemspeicherverkehr zu transportieren hat, wobei die Hauptspeichersteuerung mindestens eines umfasst von: Komprimierungslogikschaltung zum Komprimieren von Schreibinformationen vor Übertragen über die Verbindung; Dekomprimierungslogikschaltung zum Dekomprimieren von Leseinformationen nach Empfangen von der Verbindung.
  2. Vorrichtung nach Anspruch 1, wobei die Hauptspeichersteuerung sowohl die Komprimierungslogikschaltung als auch die Dekomprimierungslogikschaltung umfasst.
  3. Vorrichtung nach Anspruch 1, wobei die Punkt-zu-Punkt-Verbindung Pakete mit einer Nutzlastgröße, die für eine erste Anzahl nicht komprimierter Zwischenspeicherzeilen ausgelegt ist, zu übertragen hat, und die Komprimierungslogikschaltung eine zweite Anzahl nicht komprimierter Zwischenspeicherzeilen in die Nutzlast eines zu übertragenden Pakets zu komprimieren hat, wobei die zweite Anzahl größer ist als die erste Anzahl.
  4. Vorrichtung nach Anspruch 1, wobei die Punkt-zu-Punkt-Verbindung dazu in der Lage ist, Pakete variabler Größe zu übertragen, und mindestens manche Pakete nur eine einzelne komprimierte Zwischenspeicherzeile tragen.
  5. Vorrichtung nach Anspruch 1, wobei die Hauptspeichersteuerung eine Address-Indirection-Tabellen-Schaltung zum Korrelieren von Systemspeicheradressen von Zwischenspeicherzeilen, die in eine gleiche Zwischenspeicherzeile zusammen komprimiert sind, umfasst.
  6. Vorrichtung nach Anspruch 1, wobei die Hauptspeichersteuerung einen lokalen Zwischenspeicher umfasst, um Zwischenspeicherzeilen, die von der Dekomprimierungslogikschaltung dekomprimiert, aber von einer Leseanforderung nicht angefordert wurden, zu halten.
  7. Vorrichtung, umfassend: eine Steuerung eines nicht flüchtigen Speichers, eine Punkt-zu-Punkt-Verbindungsschnittstelle zum Koppeln mit einer Punkt-zu-Punkt-Verbindung umfassend, wobei die Punkt-zu-Punkt-Verbindung Systemspeicherverkehr eines Systemspeichers mit mehreren Ebenen zwischen einer Hauptspeichersteuerung und der Steuerung des nicht flüchtigen Speichers zu transportieren hat, wobei die Steuerung des nicht flüchtigen Speichers in Schnittstellenverbindung mit nicht flüchtigem Speicher des Systemspeichers mit mehreren Ebenen zu stehen hat, wobei die Steuerung des nicht flüchtigen Speichers mindestens eines umfasst von: i) Komprimierungslogikschaltung zum Komprimieren von Schreibinformationen vor Schreiben in den nicht flüchtigen Speicher; ii) Komprimierungslogikschaltung zum Komprimieren von Leseinformationen vor Übertragen über die Punkt-zu-Punkt-Verbindung an die Hauptspeichersteuerung; iii) Dekomprimierungslogikschaltung zum Dekomprimieren von Leseinformationen, die aus dem nicht flüchtigen Speicher gelesen wurden; iv) Dekomprimierungslogikschaltung zum Dekomprimieren von Schreibinformationen, die von der Punkt-zu-Punkt-Verbindung empfangen wurden.
  8. Vorrichtung nach Anspruch 7, wobei die Steuerung des nicht flüchtigen Speichers ii) und iii) oben umfasst.
  9. Vorrichtung nach Anspruch 8, wobei die Steuerung des nicht flüchtigen Speichers i), ii), iii) und iv) oben umfasst.
  10. Vorrichtung nach Anspruch 7, wobei die Steuerung des nicht flüchtigen Speichers eine Outbound-Warteschlange umfasst, die die Punkt-zu-Punkt-Verbindung in der Steuerung des nicht flüchtigen Speichers der Hauptspeichersteuerungsrichtung zuführt.
  11. Vorrichtung nach Anspruch 10, wobei die Outbound-Warteschlange komprimierte Lesezwischenspeicherzeilen in die Warteschlange zu stellen hat.
  12. Vorrichtung nach Anspruch 7, wobei die Steuerung des nicht flüchtigen Speichers eine Inbound-Warteschlange umfasst, die Schreibinformationen dem nicht flüchtigen Speicher zuführt.
  13. Vorrichtung nach Anspruch 12, wobei die Inbound-Warteschlange Paketnutzlasten, die komprimierte Lesezwischenspeicherzeilen umfassen, in die Warteschlange zu stellen hat.
  14. Vorrichtung nach Anspruch 7, wobei die Steuerung des nicht flüchtigen Speichers eine Address-Indirection-Tabellen-Schaltung zum Korrelieren von Systemspeicheradressen von Zwischenspeicherzeilen umfasst, die in eine gleiche Zwischenspeicherzeile, die in dem nicht flüchtigen Speicher gespeichert ist, zusammen komprimiert sind.
  15. Vorrichtung nach Anspruch 7, wobei die Steuerung des nicht flüchtigen Speichers einen lokalen Zwischenspeicher umfasst, um Zwischenspeicherzeilen, die von der Dekomprimierungslogikschaltung von iii) dekomprimiert, aber von einer Leseanforderung nicht angefordert wurden, zu halten.
  16. Rechensystem, umfassend: einen oder mehrere Verarbeitungskern/e; einen Systemspeicher mit mehreren Ebenen; eine Punkt-zu-Punkt-Verbindung; eine Hauptspeichersteuerung, eine Punkt-zu-Punkt-Verbindungsschnittstelle zum Koppeln mit der Punkt-zu-Punkt-Verbindung umfassend, wobei die Punkt-zu-Punkt-Verbindung Systemspeicherverkehr des Systemspeichers mit mehreren Ebenen zwischen der Hauptspeichersteuerung und einer Steuereinrichtung, die mit nicht flüchtigem Speicher des Systemspeichers mit mehreren Ebenen in Schnittstellenverbindung steht, zu transportieren hat, wobei die Hauptspeichersteuerung mindestens eines umfasst von: Komprimierungslogikschaltung zum Komprimieren von Schreibinformationen vor Übertragen über die Verbindung; Dekomprimierungslogikschaltung zum Dekomprimieren von Leseinformationen nach Empfangen von der Verbindung.
  17. Rechensystem nach Anspruch 16, wobei die Steuereinrichtung, die in Schnittstellenverbindung mit dem nicht flüchtigen Speicher steht, ferner mindestens eines umfasst von: i) Komprimierungslogikschaltung zum Komprimieren von Schreibinformationen vor Schreiben in den nicht flüchtigen Speicher; ii) Komprimierungslogikschaltung zum Komprimieren von Leseinformationen vor Übertragen über die Punkt-zu-Punkt-Verbindung an die Hauptspeichersteuerung; iii) Dekomprimierungslogikschaltung zum Dekomprimieren von Leseinformationen, die aus dem nicht flüchtigen Speicher gelesen wurden; iv) Dekomprimierungslogikschaltung zum Dekomprimieren von Schreibinformationen, die von der Punkt-zu-Punkt-Verbindung empfangen wurden.
  18. Vorrichtung nach Anspruch 17, wobei die Steuereinrichtung einen lokalen Zwischenspeicher umfasst, um Zwischenspeicherzeilen, die von der Dekomprimierungslogikschaltung von iii) oben dekomprimiert, aber von einer Leseanforderung nicht angefordert wurden, zu halten.
  19. Rechensystem nach Anspruch 16, wobei entweder die Hauptspeichersteuerung oder die Steuereinrichtung eine Address-Indirection-Tabellen-Schaltung zum Korrelieren von Systemspeicheradressen von Zwischenspeicherzeilen umfasst, die in eine gleiche Zwischenspeicherzeile, die in dem nicht flüchtigen Speicher gespeichert ist, zusammen komprimiert sind.
  20. Rechensystem nach Anspruch 16, wobei die Hauptspeichersteuerung einen lokalen Zwischenspeicher umfasst, um Zwischenspeicherzeilen, die von der Dekomprimierungslogikschaltung dekomprimiert, aber von einer Leseanforderung nicht angefordert wurden, zu halten.
DE112017006704.9T 2016-12-30 2017-11-13 Systemspeicher mit punkt-zu-punkt-verbindung, die komprimierten verkehr transportiert Pending DE112017006704T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/395,032 US10445261B2 (en) 2016-12-30 2016-12-30 System memory having point-to-point link that transports compressed traffic
US15/395,032 2016-12-30
PCT/US2017/061374 WO2018125400A1 (en) 2016-12-30 2017-11-13 System memory having point-to-point link that transports compressed traffic

Publications (1)

Publication Number Publication Date
DE112017006704T5 true DE112017006704T5 (de) 2019-09-12

Family

ID=62710718

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112017006704.9T Pending DE112017006704T5 (de) 2016-12-30 2017-11-13 Systemspeicher mit punkt-zu-punkt-verbindung, die komprimierten verkehr transportiert

Country Status (4)

Country Link
US (1) US10445261B2 (de)
CN (1) CN110023922B (de)
DE (1) DE112017006704T5 (de)
WO (1) WO2018125400A1 (de)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10290348B1 (en) * 2018-02-12 2019-05-14 Sandisk Technologies Llc Write-once read-many amorphous chalcogenide-based memory
US20190243780A1 (en) * 2019-04-10 2019-08-08 Vinodh Gopal Scalable application-customized memory compression
US11062507B2 (en) * 2019-11-04 2021-07-13 Apple Inc. Compression techniques for pixel write data
US20200226066A1 (en) * 2020-03-27 2020-07-16 Intel Corporation Apparatus and method for efficient management of multi-level memory
JP2022021026A (ja) 2020-07-21 2022-02-02 キオクシア株式会社 メモリシステムおよびコマンドをフェッチする方法
US11792303B1 (en) * 2022-09-30 2023-10-17 International Business Machines Corporation Fast clear memory of system memory

Family Cites Families (68)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1100540A (zh) 1994-08-18 1995-03-22 奥克利系统公司 压缩的基本输入/输出系统
US6035432A (en) 1997-07-31 2000-03-07 Micron Electronics, Inc. System for remapping defective memory bit sets
US5912839A (en) 1998-06-23 1999-06-15 Energy Conversion Devices, Inc. Universal memory element and method of programming same
US6275907B1 (en) * 1998-11-02 2001-08-14 International Business Machines Corporation Reservation management in a non-uniform memory access (NUMA) data processing system
US7889544B2 (en) 2004-04-05 2011-02-15 Super Talent Electronics, Inc. High-speed controller for phase-change memory peripheral device
US6292874B1 (en) 1999-10-19 2001-09-18 Advanced Technology Materials, Inc. Memory management method and apparatus for partitioning homogeneous memory and restricting access of installed applications to predetermined memory ranges
US8171204B2 (en) 2000-01-06 2012-05-01 Super Talent Electronics, Inc. Intelligent solid-state non-volatile memory device (NVMD) system with multi-level caching of multiple channels
US20050010811A1 (en) 2003-06-16 2005-01-13 Zimmer Vincent J. Method and system to support network port authentication from out-of-band firmware
US7512750B2 (en) * 2003-12-31 2009-03-31 Intel Corporation Processor and memory controller capable of use in computing system that employs compressed cache lines' worth of information
US7257693B2 (en) 2004-01-15 2007-08-14 Intel Corporation Multi-processor computing system that employs compressed cache lines' worth of information and processor capable of use in said system
US7475174B2 (en) 2004-03-17 2009-01-06 Super Talent Electronics, Inc. Flash / phase-change memory in multi-ring topology using serial-link packet interface
US20050273584A1 (en) 2004-06-07 2005-12-08 Wisecup George D Locating environment variables in non-volatile memory
US7590918B2 (en) 2004-09-10 2009-09-15 Ovonyx, Inc. Using a phase change memory as a high volume memory
US7412564B2 (en) * 2004-11-05 2008-08-12 Wisconsin Alumni Research Foundation Adaptive cache compression system
US8473673B2 (en) 2005-06-24 2013-06-25 Hewlett-Packard Development Company, L.P. Memory controller based (DE)compression
US20070005922A1 (en) 2005-06-30 2007-01-04 Swaminathan Muthukumar P Fully buffered DIMM variable read latency
US7437510B2 (en) * 2005-09-30 2008-10-14 Intel Corporation Instruction-assisted cache management for efficient use of cache and memory
US7600078B1 (en) 2006-03-29 2009-10-06 Intel Corporation Speculatively performing read transactions
US7913147B2 (en) 2006-05-08 2011-03-22 Intel Corporation Method and apparatus for scrubbing memory
CN100451987C (zh) 2006-05-23 2009-01-14 北京金元龙脉信息科技有限公司 对计算机bios固件进行安全风险检测的系统和方法
US7756053B2 (en) 2006-06-30 2010-07-13 Intel Corporation Memory agent with error hardware
US7493439B2 (en) 2006-08-01 2009-02-17 International Business Machines Corporation Systems and methods for providing performance monitoring in a memory system
US8051253B2 (en) 2006-09-28 2011-11-01 Virident Systems, Inc. Systems and apparatus with programmable memory control for heterogeneous main memory
US7930513B2 (en) 2006-11-04 2011-04-19 Virident Systems Inc. Writing to asymmetric memory
WO2008131058A2 (en) 2007-04-17 2008-10-30 Rambus Inc. Hybrid volatile and non-volatile memory device
US20080270811A1 (en) 2007-04-26 2008-10-30 Super Talent Electronics Inc. Fast Suspend-Resume of Computer Motherboard Using Phase-Change Memory
US8429493B2 (en) 2007-05-12 2013-04-23 Apple Inc. Memory device with internal signap processing unit
US8145893B2 (en) 2007-10-26 2012-03-27 Intel Corporation Hot-plugging a memory device
US20090313416A1 (en) 2008-06-16 2009-12-17 George Wayne Nation Computer main memory incorporating volatile and non-volatile memory
CN101620539B (zh) 2008-07-01 2013-12-25 联想(北京)有限公司 开关机方法和计算机
US8331857B2 (en) 2009-05-13 2012-12-11 Micron Technology, Inc. Wireless interface to program phase-change memories
US8250282B2 (en) 2009-05-14 2012-08-21 Micron Technology, Inc. PCM memories for storage bus interfaces
US8504759B2 (en) 2009-05-26 2013-08-06 Micron Technology, Inc. Method and devices for controlling power loss
US20100306453A1 (en) 2009-06-02 2010-12-02 Edward Doller Method for operating a portion of an executable program in an executable non-volatile memory
US9123409B2 (en) 2009-06-11 2015-09-01 Micron Technology, Inc. Memory device for a hierarchical memory architecture
US8626997B2 (en) 2009-07-16 2014-01-07 Micron Technology, Inc. Phase change memory in a dual inline memory module
US8341387B2 (en) 2009-08-18 2012-12-25 Dell Products, Lp System and method to manipulate a system setting when booting an information handling system
US20110060869A1 (en) 2009-09-08 2011-03-10 Ocz Technology Group, Inc. Large capacity solid-state storage devices and methods therefor
CN102576333B (zh) * 2009-10-05 2016-01-13 马维尔国际贸易有限公司 非易失性存储器中的数据高速缓存
KR101602939B1 (ko) 2009-10-16 2016-03-15 삼성전자주식회사 불휘발성 메모리 시스템 및 그것의 데이터 관리 방법
US8914568B2 (en) 2009-12-23 2014-12-16 Intel Corporation Hybrid memory architectures
US8612809B2 (en) 2009-12-31 2013-12-17 Intel Corporation Systems, methods, and apparatuses for stacked memory
US20110208900A1 (en) 2010-02-23 2011-08-25 Ocz Technology Group, Inc. Methods and systems utilizing nonvolatile memory in a computer system main memory
KR20110131781A (ko) 2010-05-31 2011-12-07 삼성전자주식회사 위치정보의 정확도 확인방법 및 장치
US8838935B2 (en) 2010-09-24 2014-09-16 Intel Corporation Apparatus, method, and system for implementing micro page tables
US8649212B2 (en) 2010-09-24 2014-02-11 Intel Corporation Method, apparatus and system to determine access information for a phase change memory
US8612676B2 (en) 2010-12-22 2013-12-17 Intel Corporation Two-level system main memory
US8462577B2 (en) 2011-03-18 2013-06-11 Intel Corporation Single transistor driver for address lines in a phase change memory and switch (PCMS) array
US8462537B2 (en) 2011-03-21 2013-06-11 Intel Corporation Method and apparatus to reset a phase change memory and switch (PCMS) memory cell
US8607089B2 (en) 2011-05-19 2013-12-10 Intel Corporation Interface for storage device access over memory bus
US8605531B2 (en) 2011-06-20 2013-12-10 Intel Corporation Fast verify for phase change memory with switch
US8463948B1 (en) 2011-07-01 2013-06-11 Intel Corporation Method, apparatus and system for determining an identifier of a volume of memory
CN103946813B (zh) 2011-09-30 2017-08-25 英特尔公司 基于使用统计量追踪的远存储器访问信号的生成
US9298606B2 (en) 2011-09-30 2016-03-29 Intel Corporation Statistical wear leveling for non-volatile system memory
WO2013048483A1 (en) 2011-09-30 2013-04-04 Intel Corporation Platform storage hierarchy with non-volatile random access memory having configurable partitions
CN107608910B (zh) 2011-09-30 2021-07-02 英特尔公司 用于实现具有不同操作模式的多级存储器分级结构的设备和方法
EP2761472B1 (de) 2011-09-30 2020-04-01 Intel Corporation Speicherkanal zur unterstützung von nah- und fern-speicherzugriffen
US9430372B2 (en) 2011-09-30 2016-08-30 Intel Corporation Apparatus, method and system that stores bios in non-volatile random access memory
US9600416B2 (en) 2011-09-30 2017-03-21 Intel Corporation Apparatus and method for implementing a multi-level memory hierarchy
WO2013048485A1 (en) 2011-09-30 2013-04-04 Intel Corporation Autonomous initialization of non-volatile random access memory in a computer system
EP3346386B1 (de) 2011-09-30 2020-01-22 Intel Corporation Nichtflüchtiger direktzugriffsspeicher (nvram) als ersatz für herkömmlichen massenspeicher
US20130166672A1 (en) * 2011-12-22 2013-06-27 International Business Machines Corporation Physically Remote Shared Computer Memory
US9311228B2 (en) 2012-04-04 2016-04-12 International Business Machines Corporation Power reduction in server memory system
US9274951B2 (en) 2013-05-31 2016-03-01 Altera Corporation Cache memory controller for accelerated data transfer
US9292449B2 (en) 2013-12-20 2016-03-22 Intel Corporation Cache memory data compression and decompression
US9355038B2 (en) 2014-09-11 2016-05-31 Qualcomm Incorporated Cache bank spreading for compression algorithms
US10204047B2 (en) * 2015-03-27 2019-02-12 Intel Corporation Memory controller for multi-level system memory with coherency unit
CN107925418B (zh) * 2015-05-21 2021-06-01 零点科技公司 用于混合式数据压缩和解压缩的方法、设备和系统

Also Published As

Publication number Publication date
CN110023922A (zh) 2019-07-16
US10445261B2 (en) 2019-10-15
US20180189202A1 (en) 2018-07-05
CN110023922B (zh) 2023-12-05
WO2018125400A1 (en) 2018-07-05

Similar Documents

Publication Publication Date Title
DE112017006704T5 (de) Systemspeicher mit punkt-zu-punkt-verbindung, die komprimierten verkehr transportiert
US11908546B2 (en) In-memory lightweight memory coherence protocol
DE112020001833T5 (de) Netzwerkschnittstelle für Datentransport in heterogenen Rechenumgebungen
DE112011106078B4 (de) Verfahren, Vorrichtung und System zur Implementierung eines mehrstufigen Arbeitsspeichers mit Direktzugriff
DE102018006756A1 (de) Beschleuniger-Fabric
DE102011076895B4 (de) Cachekohärenzprotokoll für persistente Speicher
DE102009032076B4 (de) Erfüllung von Speicherordnungsanforderungen zwischen Teillesevorgängen und Nicht-Snoop-Zugriffen
DE112011106013T5 (de) System und Verfahren für den intelligenten Datentransfer von einem Prozessor in ein Speicheruntersystem
DE102018113447A1 (de) Speichervorrichtung zum Koppeln mit einem Host und Verfahren zum Betreiben des Hosts und der Speichervorrichtung
DE102018006797A1 (de) Kohärente Speichereinrichtungen über PCIe
DE112012006227B4 (de) Systeme und verfahren für den remotezugriff auf den direkten speicher mit reduzierter latenzzeit
DE102009031497A1 (de) Erfüllung der Speicher-Ordering-Anforderungen zwischen Partial-Write- und Non-Snoop-Zugriffen
DE102018110012A1 (de) Speichervorrichtung, die in der Lage ist Jobs ohne Eingreifen eines Prozessors zu verwalten
DE102020103570A1 (de) Host-definierte bandbreitenzuweisung für ssd-aufgaben
DE102019108798A1 (de) Hochbandige verbindungsschicht für kohärente nachrichten
DE112010001467T5 (de) Steuerung von Blöcken einer On-Die-System-Struktur
DE112017001658T5 (de) Behandlung von fehleranfälligen Cache-Zeilen-Slots eines speicherseitigen Caches eines Multilevel-Systemspeichers
DE102019120573A1 (de) Technologien zur rechnerischen speicherung über ablade-kernel-erweiterungen
DE102019112291A1 (de) Verbessertes speicherungsmodell für ein computersystem mit persistentem systemspeicher
DE112017003203T5 (de) Mehr-ebenen-systemspeicher mit near-memory-scrubbing basierend auf vorhergesagter far-memory-leerlaufzeit
DE10213839A1 (de) DMA-Mechanismus für einen Hochgeschwindigkeitspaketbus
DE102022107778A1 (de) Adressübersetzung an einer zielnetzwerk-schnittstellenvorrichtung
DE112020000183T5 (de) Speicherungsklassenspeicherzugriff
DE102021122233A1 (de) Beschleuniger-controller-hub
DE102018110704A1 (de) Speicherungsvorrichtung für ein vorausgehendes Verwalten einer Schreibdaten zuzuweisenden physischen Adresse