-
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
-