-
HINTERGRUND
-
Die vorliegende Offenbarung betrifft Eingabe-/Ausgabe- bzw. E/A-Steuerungen, die von Verarbeitungsschaltkreisen in elektronischen Systemen verwendet werden können.
-
Der vorliegende Abschnitt soll den Leser in verschiedene Aspekte der Technik in Bezug auf verschiedene Aspekte der vorliegenden Offenbarung einführen, die nachfolgend beschrieben und/oder beansprucht werden. Es wird davon ausgegangen, dass die vorliegende Besprechung hilfreich sein wird, um dem Leser Hintergrundinformationen bereitzustellen, um ein besseres Verständnis der verschiedenen Aspekte der vorliegenden Offenbarung zu erleichtern. Dementsprechend versteht sich, dass diese Aussagen in dieser Hinsicht aufzufassen sind, und nicht als Zulassungen des Stands der Technik.
-
Elektronische Systeme, die Daten verarbeiten, wie etwa u.a. Datenzentralenserver, Maschinenlernsysteme, neuronale Netzwerke, künstliche Intelligenzsysteme, Datenbanksysteme und Telekommunikationssysteme, können durch Verwendung von kommunikativ mit E/A-Steuerungen gekoppelten Datenverarbeitungsschaltkreisen arbeiten. Zum Beispiel kann ein Prozessor Daten von einem Netzwerk unter Verwendung eines Netzwerkadapters senden und empfangen. Als ein anderes Beispiel kann ein Prozessor unter Verwendung einer Speichersteuerung Daten in einer Speicherungsvorrichtung speichern und/oder daraus abrufen. Mit zunehmender Verarbeitungsgeschwindigkeit und Kapazität der Verarbeitungsschaltkreise kann die Kapazität der E/A-Steuerungen ein Begrenzungsfaktor bei der Gesamtleistungsfähigkeit der elektronischen Systeme werden. Dementsprechend können verbesserter Durchsatz, erhöhte Bandbreite und Vergrößerung der in E/A-Steuerungen implementierten Funktionen die Leistungsfähigkeit von Operationen von elektronischen Datenverarbeitungssystemen drastisch verbessern.
-
Figurenliste
-
Verschiedene Aspekte der vorliegenden Offenbarung können bei Durchsicht der folgenden ausführlichen Beschreibung und unter Bezugnahme auf die Zeichnungen besser verständlich werden. Es zeigen:
- 1 eine Blockdarstellung einer elektronischen Vorrichtung, die Eingabe-/Ausgabe- bzw. E/A-Steuerungen mit hohem Durchsatz verwenden kann, gemäß einer Ausführungsform;
- 2 eine Blockdarstellung eines Systems, das eine cache-kohärente Speichersteuerung mit hohem Durchsatz verwendet, gemäß einer Ausführungsform;
- 3 eine Blockdarstellung eines Systems, das eine cache-kohärente Speicherungssteuerung mit hohem Durchsatz mit einem Switch-Fabric verwendet, gemäß einer Ausführungsform;
- 4 eine Blockdarstellung eines Systems, das eine cache-kohärente Speicherungssteuerung mit hohem Durchsatz mit einem integrierten Switch-Fabric verwendet, gemäß einer Ausführungsform;
- 5 ein Flussdiagramm für ein Verfahren zum Initialisieren eines Datenverarbeitungssystems mit einer E/A-Steuerung gemäß einer Ausführungsform;
- 6 ein Flussdiagramm für ein Verfahren zum Senden von Daten von Verarbeitungsschaltkreisen unter Verwendung der E/A-Steuerung mit hohem Durchsatz und von Funktionsmodulen gemäß einer Ausführungsform; und
- 7 ein Flussdiagramm für ein Verfahren zum Empfangen von Daten von Verarbeitungsschaltkreisen unter Verwendung der E/A-Steuerung mit hohem Durchsatz und von Funktionsmodulen gemäß einer Ausführungsform.
-
AUSFÜHRLICHE BESCHREIBUNG SPEZIFISCHER AUSFÜHRUNGSFORMEN
-
Im Folgenden werden eine oder mehrere spezifische Ausführungsformen beschrieben. Einer prägnanten Beschreibung dieser Ausführungsformen halber werden in der Patentschrift nicht alle Merkmale einer tatsächlichen Implementierung beschrieben. Es versteht sich, dass bei der Entwicklung beliebiger solcher tatsächlicher Implementierungen wie bei jedem technischen oder Designprojekt zahlreiche implementierungsspezifische Entscheidungen getroffen werden müssen, um die spezifischen Ziele der Entwickler zu erreichen, wie etwa Einhaltung von systembezogenen und unternehmensbezogenen Beschränkungen, die von einer Implementierung zur anderen variieren können. Außerdem versteht sich, dass solche Entwicklungsbemühungen komplex und zeitaufwendig sein könnten, aber dennoch für Durchschnittsfachleute mit dem Nutzen der vorliegenden Offenbarung ein routinemäßiges Unterfangen des Entwurfs, der Fabrikation und Herstellung wären.
-
Viele elektronische Systeme können zum Verarbeiten und Transformieren von Daten Verarbeitungsschaltkreise verwenden, wie etwa Prozessor(en), einen oder mehrere Mikrocontroller, programmierbare Logikvorrichtungen oder anwendungsspezifische integrierte Schaltungen, die Datenverarbeitungsfunktionen implementieren. Beispiele für solche Systeme wären Datenzentralen, Datenbanken, Internet-Server, künstliche Intelligenzsysteme, Maschinenlernsysteme, neuronale Netzwerke, Server für Mobilanwendungen und andere ähnliche Systeme. In solchen Systemen können die Verarbeitungsschaltkreise Eingabe-/Ausgabe- bzw. E/A-Steuerungen verwenden, die Datenaustausch zwischen den Verarbeitungsschaltkreisen und E/A-Vorrichtungen erleichtern können. Beispiele für E/A-Steuerungen wären Netzwerksteuerungen (z.B. Ethernet-Steuerungen, drahtlose Adapter), serielle Datensteuerungen (z.B. USB-Steuerungen (Universal Serial Bus)), parallele Datensteuerungen (z.B. PCIe-Steuerungen (Peripheral Component Interconnect Express)) und Steuerungen von nichtflüchtigen Medien (z.B. SATA-Steuerungen (Serial AT Attachment), NVMe (Non-Volatile Memory Express)). Beispiele für nichtflüchtige Speicherungsmedien, die durch Steuerungen nichtflüchtiger Medien gesteuert werden können, wären SSD-Laufwerke (Solid-State Drive), RAMdisks (Random Access Memory Disks) und HD (Festplatten).
-
Während des Betriebs dieser elektronischen Systeme können die Verarbeitungsschaltkreise eine Betriebsspeichervorrichtung (z.B. eine Speichervorrichtung außerhalb des Prozessors, wie etwa in einer RAM-Vorrichtung (Direktzugriffsspeicher) oder in einer DRAM-Vorrichtung (dynamischer Direktzugriffsspeicher)) oder einen lokalen Speicher (z.B. einen lokalen Cache) als Arbeitsspeicher verwenden. Auf Daten in den Verarbeitungsschaltkreisen angewandte Modifikationen können anfänglich auf die Daten in diesem Arbeitsspeicher angewandt werden. In bestimmten Systemen können Daten auch in Funktionsmodulen verarbeitet werden. In der vorliegenden Besprechung können sich Funktionsmodule auf Funktionsschaltkreise beziehen, die Hard- oder Soft-Logik implementieren, die sich außerhalb des Prozessors befinden und implementiert sein können und verwendet werden können, um die Datenverarbeitungslast in den Verarbeitungsschaltkreisen zu verringern. Beispiele für Funktionen, die „außerhalb des Prozessors“ (d.h. in der E/A-Steuerung) durch Funktionsmodule ausgeführt werden können, wären Komprimierung, Verschlüsselung, Header-Parsen, Header-Verarbeitung, Protokollcodierung und/oder -decodierung und/oder Zeitstempelung. In diesen Systemen können die Operationen „außerhalb des Prozessors“ die Daten auch modifizieren.
-
Die „außerhalb des Prozessors“ modifizierten Daten können mit dem Arbeitsspeicher des Prozessors geteilt werden. Hier beschriebene Ausführungsformen betreffen E/A-Steuerungssysteme (z.B. integrierte Schaltungen, die Switch-Steuerungen umfassen), die erweiterte Cache-Kohärenzdomänen verwenden können, die direkte Interaktion zwischen diesen Funktionseinheiten und dem Prozessor-Arbeitsspeicher erlauben. Außerdem können die E/A-Steuerungssysteme Switch-Fabrics umfassen, die effizientes Routing zwischen Prozessor, E/A-Vorrichtungen und Funktionsmodulen bereitstellen können. Die hier beschriebenen Ausführungsformen können Vorteile bereitstellen, wie eine Verringerung der Anzahl der Datenaustauschvorgänge zwischen Betriebsspeicher und der E/A-Steuerung, eine Vergrößerung der Bandbreite und des Durchsatzes für Funktionsmodule in den E/A-Steuerungen und eine Verringerung der Latenz zwischen den Verarbeitungsschaltkreisen und E/A-Vorrichtungen, neben anderen Dingen.
-
Angesichts des Obigen ist 1 eine Darstellung einer elektronischen Vorrichtung 100, die in einem Datenverarbeitungssystem verwendet werden kann. Die elektronische Vorrichtung 100 kann einer von mehreren Knoten des Datenverarbeitungssystems sein. Die elektronische Vorrichtung 100 kann eine integrierte Schaltung 102, die E/A-Steuerungen bereitstellen kann, sowie Funktionsmodule umfassen. Die integrierte Schaltung 102 kann in einem oder mehreren PLD (programmierbare Logikvorrichtungen), einem FPGA (Field Programmable Gate Arrays), ASIC (anwendungsspezifischen integrierten Schaltungen) und/oder hybriden Vorrichtungen implementiert werden, die gehärtete Schaltkreise und programmierbares Fabric umfassen.
-
Die E/A-Steuerungen und Funktionsmodule können als ein weicher Block von geistigem Eigentum (IP - Intellectual Property) oder als ein harter IP-Block implementiert werden. In der vorliegenden Beschreibung können sich Funktionsmodule auf Logikblöcke oder Logikfunktionen beziehen, die zum Ausführen von Datenoperationen verwendet werden können. Beispiele für Funktionsmodule wären Module, die Komprimierungsoperationen, Dekomprimierungsoperationen, Verschlüsselungsoperationen, Entschlüsselungsoperationen, mathematische Transformationen (z.B. Fouriertransformation, Faltungen oder Matrixmultiplikation), Filterung und/oder eine Kombination der mehreren Operationen ausführen können. Die integrierte Schaltung 102 kann auch Sendeempfänger, Empfänger und/oder Sender zum Austausch von Daten mit dem Prozessor 104, dem lokalen Betriebsspeicher 106 und/oder einer oder mehreren E/A-Vorrichtungen 108 umfassen.
-
Die elektronische Vorrichtung 100 kann einen Prozessor 104 umfassen, der wie oben besprochen Operationen an Daten ausführen kann. Der Prozessor 104 kann ein Vielzweckprozessor sein, der unter Verwendung von in einem Speicher gespeicherten computerlesbaren Anweisungen an Daten operieren kann. Der Prozessor 104 kann unter Verwendung einer oder mehrerer Prozessorvorrichtungen implementiert werden, die einen oder mehrere Verarbeitungskerne aufweisen können. Der Prozessor 104 kann auch einen lokalen Cache umfassen, der Informationen und/oder Anweisungen lokal speichert, um die Geschwindigkeit seines Betriebs zu vergrößern. Der Prozessor 104 kann auch mit einem Betriebsspeicher 106 gekoppelt sein, der zum Speichern von Informationen und/oder Anweisungen, die verarbeitet werden, verwendet werden kann. Der Betriebsspeicher 106 kann als eine oder mehrere flüchtige Speichervorrichtungen mit niedriger Latenz und niedrigen Zugriffszeiten (z.B. RAM- und/oder DRAM-Vorrichtungen) implementiert werden. Die elektronische Vorrichtung 100 kann unter Verwendung eines SoC (System-on-Chip) implementiert werden, das die integrierte Schaltung 102, den Prozessor 104 und/oder den Betriebsspeicher 106 umfasst. Die elektronische Vorrichtung 100 kann auch als ein System implementiert werden, das eine PCB (Leiterplatte) oder ein Motherboard aufweist, das Kopplung mit der integrierten Schaltung 102, dem Prozessor 104, dem Betriebsspeicher 106 und/oder einem SoC mit beliebigen dieser Komponenten bereitstellt.
-
Wie oben besprochen kann die elektronische Vorrichtung 100 mit einer oder mehreren E/A-Vorrichtungen 108 kommunizieren. Beispiele für E/A-Vorrichtungen 108 wären Netzwerkvorrichtungen, serielle Datenverbindung, parallele Datenverbindungen, nichtflüchtige Speicherungsvorrichtungen und/oder drahtlose Vorrichtungen. E/A-Steuerungen, die in der integrierten Schaltung 102 implementiert werden können, können zur Bereitstellung von Konnektivität zwischen dem Prozessor 104 und den E/A-Vorrichtungen 108 verwendet werden. Wie nachfolgend ausführlich erläutert wird, können die E/A-Steuerungen in der integrierten Schaltung 102 cache-kohärente Domänen umfassen, die Zugriff mit niedriger Latenz auf die E/A-Vorrichtungen 108 erleichtern können. Die integrierte Schaltung 102 kann auch Funktionsmodule umfassen, die der E/A-Steuerung Datendienste bereitstellen können (z.B. Komprimierung, Verschlüsselung, Header-Parsen), wodurch die Bandbreite und der Durchsatz zwischen den E/A-Vorrichtungen 108 und dem Prozessor 104 vergrößert werden können. Bei einigen Ausführungsformen kann die integrierte Schaltung 102 ein Switch-Fabric zur Erleichterung des Routens von Daten zwischen dem Prozessor, der E/A-Steuerung und den Funktionsmodulen umfassen.
-
Eine Darstellung in 2 zeigt die Datenarchitektur für ein System 140, die mit der elektronischen Vorrichtung 100 von 1 implementiert werden kann. Das System 140 kann einen Prozessor 104 und einen Betriebsspeicher 106 umfassen. Das System 140 umfasst außerdem eine integrierte Schaltung 102, die Zugang zu einem nichtflüchtigen Speicherungsspeicher 142 bereitstellen kann. Zu diesem Zweck kann die integrierte Schaltung 102 eine Speicherungssteuerung 144 umfassen. Die integrierte Schaltung 102 kann auch einen Cache-Speicher 146 umfassen.
-
Der Cache-Speicher 146 in der integrierten Schaltung 102 kann zusammen mit dem Betriebsspeicher 106 und dem lokalen Cache in dem Prozessor 104 ein Teil einer cache-kohärenten Domäne 148 sein. Die Speicherelemente (d.h. der Betriebsspeicher 106, der Cache-Speicher 146, der lokale Cache in dem Prozessor 104) können geteilte Speichersegmente replizieren, auf die die integrierte Schaltung 102 und/oder der Prozessor 104 zugreifen können. Bei einer Modifikation etwaiger Daten in der cache-kohärenten Domäne durch die integrierte Schaltung 102 oder durch den Prozessor 104 können die Repliken der geteilten Speichersegmente aktualisiert werden. Auf diese Weise kann der geteilte Speicher in der cache-kohärenten Domäne 148 stimmig sein, und die elektronische Vorrichtung 100 kann Probleme durch Rennbedingungen während der Datenverarbeitung verhindern. Um die cache-kohärente Domäne 148 aufrechtzuerhalten, können die Datenverbindung 152 zwischen dem Prozessor 104 und dem Betriebsspeicher 106 und die Datenverbindung 154 zwischen dem Prozessor 104 und dem Cache-Speicher 146 ein cache-kohärentes Protokoll (z.B. das Core-Cache-Schnittstellenprotokoll (CCI-P)) einhalten.
-
Um E/A-Konnektivität bereitzustellen, kann die integrierte Schaltung 102 über eine Datenverbindung 156 mit dem Speicherungsspeicher 142 verbunden sein. Die Datenverbindung 156 kann eine Datenverbindung hoher Bandbreite zum Transfer von Daten sein. Der Speicherungsspeicher 142 kann auch direkt über eine Steuerverbindung 158 durch den Prozessor 104 gesteuert werden. Bei einigen Ausführungsformen kann die Steuerverbindung 158 durch die integrierte Schaltung 102 geroutet werden. Beispielsweise kann der Speicherungsspeicher 142 eine NVMe-kompatible Vorrichtung sein. Die Datenverbindung 156 und die Steuerverbindung 158 können über eine PCIe-Schnittstelle der integrierten Schaltung 102 implementiert werden. Bei einigen Ausführungsformen kann die Datenverbindung 156 die Steuerverbindung zwischen der integrierten Schaltung 102 und dem Speicherungsspeicher 142 bereitstellen. Steueranweisungen vom Prozessor 104 an den Speicherungsspeicher 142 können unter Verwendung der PCIe-Schnittstelle durch die Steuerverbindung 158 bereitgestellt werden. Im Gegensatz dazu können Datenaustauschvorgänge zwischen dem Prozessor 104 und dem Speicherungsspeicher 142 unter Verwendung der Datenverbindung 154, die cache-kohärent sein kann, und der Datenverbindung 156 stattfinden.
-
Die Darstellung 180 von 3 zeigt eine Ausführungsform für die integrierte Schaltung 102. Die Darstellung 180 zeigt auch die Verbindungen zwischen dem Prozessor 104, dem Betriebsspeicher 106 und dem Speicherungsspeicher 142. Die integrierte Schaltung 102 kann eine Speicherungssteuerung 144 umfassen, die Zugang zu dem Speicherungsspeicher 142 bereitstellen kann, und sich über eine Datenverbindung 156 mit ihr verbinden. Die Speicherungssteuerung 144 kann eine SATA-Steuerung und/oder eine NVMe-Steuerung sein. Die integrierte Schaltung 102 kann eine cache-kohärente Schnittstelle 182 umfassen. Die cache-kohärente Schnittstelle 182 kann einen Cache 184 umfassen, wie oben besprochen. Die integrierte Schaltung 102 kann eine zweite Schnittstelle 186 aufweisen, die zum Beispiel eine PCIe-Schnittstelle sein kann. Die cache-kohärente Schnittstelle 182 kann unter Verwendung einer cache-kohärenten Verbindung 192 mit dem Prozessor 104 verbunden werden. Die Schnittstelle 186 kann unter Verwendung einer Verbindung 194, die eine PCIe-Verbindung sein kann, mit dem Prozessor 104 verbunden werden.
-
Die integrierte Schaltung 102 kann auch ein Funktionsmodul 202 umfassen. Das Funktionsmodul 202 kann Funktionalitäten oder Dienste bereitstellen, die Daten transformieren, wie etwa Datenkomprimierung und/oder -dekomprimierung, Verschlüsselung und/oder Entschlüsselung, Beschleuniger mathematischer Operationen (z.B. Matrixsummierung, Matrixmultiplikation), Datensortierung, Signalverarbeitung (z.B. Fouriertransformationen, Filterung), Paket-Parsen (z.B. Ethernet-Paket-Parsen) und Fehlerdetektion und/oder Fehlerkorrektur (z.B. Prüfsumme, CRC (Cyclic Redundancy Checking), T10DIF (T10-Datenintegritätsfeld). Allgemeiner kann das Funktionsmodul 202 Operationen bereitstellen, die „außerhalb des Prozessors“ ausgeführt werden können, um die Leistungsfähigkeit der elektronischen Vorrichtung 100 zu beschleunigen. Das Funktionsmodul 202 kann als ein weicher IP-Block oder als harter IP-Block implementiert werden. Es sollte beachtet werden, dass die integrierte Schaltung 102 mehrere Funktionsmodule aufweisen kann, und dass ein einzelner IP-Block mehrere Funktionen implementieren kann.
-
Wie oben besprochen kann der Prozessor 104 Steueranweisungen über die Schnittstelle 186 direkt zu dem Speicherungsspeicher 142 senden. Die Schnittstelle 186 kann über eine interne PCIe-Verbindung 196 Befehle direkt zu der Speicherungssteuerung 144 senden. Außerdem kann die Schnittstelle 186 auch eine Datenverbindung 198 aufweisen, die Daten zu dem Funktionsmodul 202 routet. Deshalb kann bei der in der Darstellung 180 gezeigten Ausführungsform der Prozessor 104 unter Verwendung einer Schnittstelle 186, die ein PCIe-Schnittstelle sein kann, mit dem Funktionsmodul 202 und dem Speicherungsspeicher 142 kommunizieren. In Systemen mit einer veralteten Codebasis (z.B. aufgerüsteten Systemen) kann die Verwendung der Schnittstelle 186 Rückwärtskompatibilität erlauben.
-
Es sollte beachtet werden, dass durch Verwendung der Schnittstelle 186 der Prozessor 104 und/oder der Betriebsspeicher 106 die Daten mehrmals berühren (d.h. mit ihnen in Interaktion treten) können. Zum Beispiel können, um Anweisungen auszuführen, um Datenverarbeitung in dem Funktionsmodul 202 durchzuführen, gefolgt von Schreiben der Daten in den Speicherungsspeicher 142 unter Verwendung der Schnittstelle 186, die Daten über die Schnittstelle 186 von dem Prozessor 104 und/oder Betriebsspeicher 106 zu dem Funktionsmodul 202 gehen, zu dem Prozessor 104 und/oder Betriebsspeicher 106 zurückkommen, über die Schnittstelle 186 zu dem Speicherungsspeicher 142 gesendet und zu der Speicherungssteuerung 144 gesendet werden. Die Verwendung der cache-kohärenten Schnittstelle 182 kann die Anzahl der Berührungen (d.h. Interaktionen zwischen Daten und dem Prozessor 104 oder Betriebsspeicher 106), die für diese Operation durchgeführt werden, aufgrund der Verwendung der cache-kohärenten Schnittstelle 182 und eines Switch-Fabric 204 wie nachfolgend dargelegt verringern.
-
Die cache-kohärente Schnittstelle 182 kann Daten über die cache-kohärente Verbindung 192 empfangen. Die cache-kohärente Schnittstelle 182 kann über eine interne Verbindung 212 mit dem Switch-Fabric 204 gekoppelt sein. Bei einigen Ausführungsformen kann die interne Verbindung 212 auch ein Cache-Kohärenzprotokoll einhalten, und folglich kann das Switch-Fabric 204 Teil der Cache-Kohärenzdomäne sein. Das Switch-Fabric 204 kann auch über eine Verbindung 214 mit dem Funktionsmodul 202 und über die Verbindung 216 mit der Speicherungssteuerung 144 gekoppelt sein. Außerdem kann das Switch-Fabric 204 Datenroutinganweisungen von dem Prozessor 104 oder von anderer Logik in der integrierten Schaltung 102 empfangen. In einem Beispiel, in dem der Prozessor 104 Anweisungen zum Verarbeiten von Daten in dem Funktionsmodul 202 und zum Schreiben der Daten in den Speicherungsspeicher 142 ausführt, können die Daten von dem Prozessor 104 und/oder Betriebsspeicher 106 unter Verwendung des Switch-Fabric 204 von der Schnittstelle zu dem Funktionsmodul 202 geroutet werden. Bei Abschluss des Prozesses durch das Funktionsmodul 202 kann das Switch-Fabric 204 verwendet werden, um die Daten direkt zu der Speicherungssteuerung 144 zu routen, ohne dass sie zu dem Prozessor 104 und/oder Betriebsspeicher 106 gesendet werden. Die Verringerung der Anzahl der Berührungen durch den Prozessor 104 und/oder Betriebsspeicher 106 aufgrund des direkten Routens unter Verwendung des Switch-Fabric 204 kann Latenz im System verringern.
-
Das in der Darstellung 180 gezeigte System kann auch den Durchsatz von Daten von dem Prozessor 104 zu dem Speicherungsspeicher 142 unter Verwendung von Komprimierung vergrößern. In bestimmten Architekturen können die cache-kohärente Verbindung 192 und/oder die Verbindung 194 höhere Bandbreite als die Datenverbindung 156 aufweisen. In einem solchen System kann die integrierte Schaltung 102 ein Funktionsmodul 202 aufweisen, das Datenkomprimierungs- und -dekomprimierungsfunktionen implementiert, die zu einer Zunahme des Speicherungsdurchsatzes führen können. Zum Beispiel kann die cache-kohärente Verbindung 192 eine Bandbreitenkapazität von 12 Gbps aufweisen, und die Datenverbindung 156 weist auf kann eine Bandbreitenkapazität von 6 Gbps aufweisen. Ohne jegliche Komprimierung kann dementsprechend die Bandbreite der Datenverbindung 156 die Bandbreite zwischen dem Speicherungsspeicher 142 und dem Prozessor 104 begrenzen.
-
Durch Verwendung eines Funktionsmoduls 202, das einen Komprimierungsalgorithmus implementiert, kann die effektive Bandbreite der Datenverbindung 156 vergrößert werden. Zum Beispiel können während eines Schreibprozesses durch die integrierte Schaltung 102 mit 12 Gbps empfangene Daten nach Komprimierung mit einem Verhältnis von 2:1 unter Verwendung einer 6-Gbps-Datenverbindung übertragen werden. Anders ausgedrückt kann die effektive Bandbreite der Datenverbindung 156 (z.B. die unkomprimierte Bandbreite) gemäß einem Faktor des durch das Funktionsmodul 202 bereitgestellten Komprimierungsverhältnisses zunehmen. Dementsprechend kann die niedrigere Bandbreite der Datenverbindung 156 effektiv vergrößert werden. Außerdem sollte beachtet werden, dass in einem solchen System der Speicherungsspeicher 142 effektiv erweitert werden kann, da die gespeicherten Daten in komprimierter Form vorliegen.
-
Die Verwendung der cache-kohärenten Schnittstelle 182 kann auch die Geschwindigkeit des Zugriffs auf Daten durch den Prozessor 104 vergrößern. Wenn zum Beispiel ein Prozessor 104 Ersetzung von Daten in seiner Kohärenzdomäne durch Daten in dem Speicherungsspeicher 142 anfordert, kann die integrierte Schaltung 102 die Daten aus dem Speicherungsspeicher 142 abrufen und die Ersetzung direkt im Cache 184 durchführen. Die aktualisierten Daten können dem Prozessor 104 direkt zugänglich werden, ohne einen zusätzlichen Schritt des Transferierens der aktualisierten Daten in den Betriebsspeicher 106, was eine Verzögerung beim Datenzugriff verringern kann.
-
Eine Darstellung 220 von 4 zeigt eine andere Ausführungsform für die integrierte Schaltung 102. Die Darstellung 220 zeigt auch die Verbindungen von der integrierten Schaltung 102 mit dem Prozessor 104, dem Betriebsspeicher 106 und mit dem Speicherungsspeicher 142. Wie in 3 kann die integrierte Schaltung 102 eine Speicherungssteuerung 144 umfassen, die Zugriff auf den Speicherungsspeicher 142 bereitstellen kann, und kann sich über eine Datenverbindung 156 mit ihr verbinden. In der integrierten Schaltung 102 der Darstellung 220 kann die integrierte Schaltung 102 eine vereinigte Schnittstelle 224 aufweisen. Die vereinigte Schnittstelle 224 kann einen Cache 184 umfassen, wie oben besprochen. Die vereinigte Schnittstelle 224 kann durch eine cache-kohärente Verbindung 192 und durch eine zweite Verbindung 194 (z.B. eine PCIe-Verbindung) mit dem Prozessor 104 verbunden sein. Die vereinigte Schnittstelle 224 kann die von den zwei Verbindungen 192 und 194 empfangenen Daten koordinieren. Bei einigen Ausführungsformen hat nur die cache-kohärente Verbindung 192 direkten Zugriff auf den Cache 184.
-
In dem in der Darstellung 220 gezeigten System kann die integrierte Schaltung 102 ein einziges Switch-Fabric 222 aufweisen. Das einzige Switch-Fabric 222 kann dafür programmiert sein, Daten zwischen der vereinigten Schnittstelle 224 über die Verbindung 234, dem Funktionsmodul 202 über die Verbindung 232 und der Speicherungssteuerung 144 über die Verbindung 236 zu routen. Die Steuerung des Datenroutings in dem einzigen Switch-Fabric 222 kann mittels Anweisungen stattfinden, die von dem Prozessor 104 und/oder Logik in der integrierten Schaltung 102 empfangen werden. In dem durch die Darstellung 220 gezeigten System kann die Anwesenheit der vereinigten Schnittstelle 224 und des einzigen Switch-Fabric 222 integriertes Routing von Daten erleichtern und Rennbedingungen zwischen dem Prozessor 104, dem Funktionsmodul 202 und in der Speicherungssteuerung 144 verhindern und die Möglichkeit von Datenverfälschung verringern.
-
Die Anwesenheit des einzigen Switch-Fabric 222 und der vereinigten Schnittstelle 224 mit einem Cache 184 kann auch den Durchsatz vergrößern und die Latenz zwischen dem Prozessor 104 und dem Speicherungsspeicher 142 verringern. Wenn zum Beispiel der Prozessor 104 Anweisungen zum Verarbeiten von Daten in dem Funktionsmodul 202 und zum Schreiben von Daten in den Speicherungsspeicher 142 ausführt, können die Daten von dem Prozessor 104 und/oder Betriebsspeicher 106 anfänglich durch die vereinigte Schnittstelle 224 zu dem Funktionsmodul 202 geroutet und durch das einzige Switch-Fabric 222 geroutet werden. Bei Abschluss des Prozesses durch das Funktionsmodul 202 kann das einzige Switch-Fabric 222 dann die Daten direkt zu der Speicherungssteuerung 144 routen, ohne einen zusätzlichen Schritt des Sendens der Daten zu dem Prozessor 104 und/oder Betriebsspeicher 106. Das direkte Routen von Daten von dem Funktionsmodul 202 zu dem Speicherungsspeicher 142 kann Latenz in den Operationen des Systems verringern.
-
Das in der Darstellung 220 dargestellte System kann auch vergrößerten Durchsatz von Daten von dem Prozessor 104 zu dem Speicherungsspeicher 142 unter Verwendung von Komprimierung erlauben. In bestimmten Architekturen können die cache-kohärente Verbindung 192 und/oder die Verbindung 194 kombiniert oder getrennt eine höhere Bandbreite als die Datenverbindung 156 aufweisen, die mit dem Speicherungsspeicher 142 koppelt. In einem solchen System kann die integrierte Schaltung 102 ein Funktionsmodul 202 aufweisen, das Datenkomprimierungs- und -dekomprimierungsfunktionen zur Vergrößerung der Speicherungsbandbreite implementiert. Zum Beispiel können die Verbindungen 192 und/oder 194 eine Bandbreitenkapazität von 12 Gbps aufweisen, und die Datenverbindung 156 weist auf kann eine Bandbreitenkapazität von 6 Gbps aufweisen. Folglich kann die Bandbreite der Datenverbindung 156 beim Speicherungsdurchsatz für den Prozessor 104 ein Begrenzungsfaktor sein. Ein Funktionsmodul 202, das einen Komprimierungsalgorithmus implementiert, kann die effektive Bandbreite der Datenverbindung 156 vergrößern. Zum Beispiel können während eines Schreibprozesses durch die integrierte Schaltung 102 mit 12 Gbps empfangene Daten nach einer 2:1-Komprimierung unter Verwendung einer Datenverbindung mit 6 Gbps übertragen werden. Deshalb kann die Komprimierung effektiv die Bandbreite der Datenverbindung 156 vergrößern (z.B. die unkomprimierte Bandbreite) wird in diesem Beispiel verdoppelt. Durch Verwendung von Komprimierung während der Übertragung wie oben besprochen kann der Speicherungsspeicher 142 außerdem eine vergrößerte effektive Speicherungskapazität aufweisen, da die gespeicherten Daten in komprimierter Form vorliegen.
-
Angesichts des Obigen zeigt 250 von 5 ein Verfahren 250 zur Initialisierung eines Systems, wie etwa der elektronischen Vorrichtung 100 von 1. Initialisierung der elektronischen Vorrichtung 100 kann in Kasten 252 stattfinden. Ein Boot-Prozess des BIOS (Basic Input/Output System) in Kasten 254 kann Initialisierungsanweisungen in den Prozessor laden. Initialisierungsanweisungen im BIOS können Anweisungen zur Kommunikation mit verbundener Hardware umfassen, die Initialisierung von E/A-Steuerungen umfassen können, in Kästen 256, 258 und 260. In Kasten 256 kann die E/A-Steuerung heraufgefahren werden. In Kasten 258 können die E/A-Steuerungen durch Rücksetzen des Zustands ihrer Register und/oder Speicherbanken auf eine Anfangsposition initialisiert werden. In Kasten 260 kann die E/A-Steuerung Operationen zum Detektieren und Herstellen einer Verbindung mit den E/A-Vorrichtungen, die an die E/A-Steuerungen angeschlossen sind, ausführen.
-
Nach dem BIOS-Booten kann ein Betriebssystem (OS), das in dem Prozessor läuft, in Kasten 262 initialisiert werden. Während dieses Prozesses können E/A-Vorrichtungen (z.B. die in Kasten 260 detektierte E/A-Vorrichtung) und/oder E/A-Steuerungen (z.B. die in Kasten 256 heraufgefahrene Steuerung) durch den Prozessor detektiert werden, wie in Kasten 264 dargestellt. Nach dem OS-Booten können die Funktionsmodule (z.B. Beschleuniger-Funktionseinheiten (AFU)) in Kasten 266 geladen werden. Bei einigen Ausführungsformen kann das Laden von Kasten 266 durch eine Umkonfiguration eines programmierbaren Fabric mit Soft-IP in der integrierten Schaltung stattfinden. Bei einigen Ausführungsformen kann das Laden von Kasten 266 durch die Bereitstellung von Stromversorgung (z.B. Aktivierung eines Takt-Baums, Schalten einer Stromschiene) für das Funktionsmodul stattfinden. Bei einigen Ausführungsformen kann das Laden der Funktionsmodule (Kasten 266) während der Initialisierung der E/A-Steuerung (Kästen 256, 258 und 260) stattfinden. Am Ende des Initialisierungsprozesses des Verfahrens 250 kann das Funktionsmodul für Verwendung im Datenpfad zwischen dem Prozessor und der E/A-Steuerung verfügbar werden.
-
Das Verfahren 280 zum Schreiben von Daten von einem Prozessor in eine Speicherungsvorrichtung, wie in dem Flussdiagramm von 6 dargestellt, zeigt die Verwendung von Beschleunigern im E/A-Datenpfad. In einem Kasten 282 kann der Prozessor den Schreibprozess durch Senden von Daten zu der integrierten Schaltung, die eine Steuerung aufweist, einleiten. Der Prozessor kann auch Verwendung eines Funktionsmoduls (z.B. AFU) im Datenpfad anfordern (Entscheidungsblock 284). Wenn das Funktionsmodul nicht verwendet wird, können die durch die integrierte Schaltung empfangenen Daten durch das Switch-Fabric zu der Speicherungsvorrichtung geroutet werden (Kasten 286). Wenn das Funktionsmodul verwendet wird, können die durch die integrierte Schaltung empfangenen Daten anfänglich zu dem Funktionsmodul geroutet werden (Kasten 288). Das Funktionsmodul kann die Daten verarbeiten.
-
Bei Abschluss kann der Prozessor eine Angabe empfangen, dass die Daten bereit für weitere Verarbeitung sind (Kasten 290). Das Funktionsmodul kann Abschluss durch Aktualisieren eines Status in einem geteilten Speicher (z.B. einer Abschlusswarteschlange, einem Flag, einer Registerbank) angeben, der sich in der Kohärenzdomäne befinden kann und durch den Prozessor abgefragt werden kann. Das Funktionsmodul kann auch ein Interrupt zu dem Prozessor senden, um Abschluss anzugeben. Nach dem Empfang einer Benachrichtigung über den Abschluss kann der Prozessor Routen der Daten von dem Funktionsmodul zu der Speicherungsvorrichtung anfordern (Kasten 292). Der in dem Verfahren 280 beschriebene Prozess routet nicht unbedingt die verarbeiteten Daten nach Abschluss zurück zu dem Prozessor und/oder dem Betriebsspeicher, was die Latenz bei der Kommunikation verringern kann. Außerdem kann wie oben besprochen die Verwendung des Komprimierungsdienstes in der Funktionseinheit wie hier beschrieben die effektive Bandbreite und die effektive Speicherung in der Speichervorrichtung aufgrund von Komprimierung vergrößern.
-
Das Verfahren 300 zum Lesen von Daten von einem Prozessor in eine Speicherungsvorrichtung, das in dem Flussdiagramm von 7 dargestellt ist, zeigt die Verwendung von Beschleunigern im E/A-Datenpfad während eines Leseprozesses. In einem Kasten 302 kann der Prozessor den Schreibprozess durch Anfordern von Daten für die integrierte Schaltung, die eine Steuerung aufweist, einleiten. Eine solche Anforderung kann eine Angabe der Adresse und/oder des Inhaltstyps der angeforderten Daten umfassen. Der Prozessor kann auch Verwendung eines Funktionsmoduls (z.B. AFU) im Datenpfad anfordern (Entscheidungsblock 304). Bei einigen Ausführungsformen kann die Anforderung in Entscheidungsblock 304 in der E/A-Steuerung stattfinden. Zum Beispiel kann die E/A-Steuerung einen Header der empfangenen Daten parsen und ein Feld identifizieren, das Verschlüsselung, Komprimieren oder eine gewisse andere Modifikation angibt, die durch ein Funktionsmodul oder einen Dienst der integrierten Schaltung verarbeitet werden kann. In einem solchen System kann die E/A-Steuerung die Verwendung eines Funktionsblocks im Entscheidungsblock 304 anfordern.
-
Wenn das Funktionsmodul nicht verwendet wird, können die durch die integrierte Schaltung von dem Speicherungslaufwerk empfangenen Daten durch das Switch-Fabric zu der Speicherungsvorrichtung geroutet werden (Kasten 306). Wenn das Funktionsmodul verwendet wird, können die durch die integrierte Schaltung empfangenen Daten anfänglich zu dem Funktionsmodul geroutet werden (Kasten 308). Das Funktionsmodul kann die Daten verarbeiten. Wie im Schreibprozess besprochen, kann der Prozessor eine Angabe empfangen, dass die Daten bereit für weitere Verarbeitung sind (Kasten 310).
-
Das Funktionsmodul kann Abschluss durch Aktualisieren eines Status in einem geteilten Speicher (z.B. einer Abschlusswarteschlange) angeben, der sich in der Kohärenzdomäne befinden und somit durch den Prozessor abgefragt werden kann. Das Funktionsmodul kann auch ein Interrupt zu dem Prozessor senden, um Abschluss anzugeben. Nach der Angabe des Abschlusses kann der Prozessor Routen der Daten von dem Funktionsmodul zu dem Prozessor anfordern (Kasten 312). Der in dem Verfahren 300 beschriebene Prozess kann verwendet werden, um Daten unter Verwendung existierender Funktionseinheiten und abnehmender Verarbeitungsanforderungen im Voraus zu verarbeiten. Außerdem kann wie oben besprochen die Verwendung eines Dekomprimierungsdienstes in der Funktionseinheit wie hier beschrieben die effektive Bandbreite und die effektive Speicherung in der Speichervorrichtung ohne Zunahme der Prozessorressourcenanforderungen vergrößern.
-
Die Verwendung der hier beschriebenen Ausführungsformen kann Vorteile bereitstellen, zu denen gehört, dass es dem Prozessor und Funktionsmodulen und Datenverarbeitungsbeschleunigern erlaubt wird, in den selben Speicherungsdaten gleichzeitig zu operieren, ohne Datenstimmigkeit zu verlieren, die Anzahl der Berührungen von Daten durch den Prozessor und Betriebsspeicher zu verringern, den E/A-Durchsatz durch Verwendung zusätzlicher Datenverbindungen und/oder von Komprimierung zu vergrößern, die Latenz bei Datentransfers zu verringern, sowie verminderten Stromverbrauch durch den Prozessor und/oder verbesserte Energiegleichgewichte zwischen Prozessor und zugeordneten E/A-Steuerungen.
-
Während die in der vorliegenden Offenbarung dargelegten Ausführungsformen verschiedenen Modifikationen und alternativen Formen zugänglich sein können, wurden beispielhaft in den Zeichnungen spezifische Ausführungsformen gezeigt und hier ausführlich beschrieben. Es versteht sich jedoch, dass die Offenbarung nicht auf die konkreten offenbarten Formen beschränkt sein soll. Die Offenbarung soll alle Modifikationen, Äquivalente und Alternativen abdecken, die in den Gedanken und Schutzumfang der Offenbarung fallen, so wie er durch die folgenden angefügten Ansprüche definiert wird.