DE102019117475A1 - Cache-kohärente Eingabe-/Ausgabesteuerungen mit hohem Durchsatz - Google Patents

Cache-kohärente Eingabe-/Ausgabesteuerungen mit hohem Durchsatz Download PDF

Info

Publication number
DE102019117475A1
DE102019117475A1 DE102019117475.9A DE102019117475A DE102019117475A1 DE 102019117475 A1 DE102019117475 A1 DE 102019117475A1 DE 102019117475 A DE102019117475 A DE 102019117475A DE 102019117475 A1 DE102019117475 A1 DE 102019117475A1
Authority
DE
Germany
Prior art keywords
data
integrated circuit
interface
processor
cache
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
DE102019117475.9A
Other languages
English (en)
Inventor
Mrigank Shekhar
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 DE102019117475A1 publication Critical patent/DE102019117475A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1048Data bus control circuits, e.g. precharging, presetting, equalising
    • 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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0895Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
    • 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/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0032Serial ATA [SATA]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Advance Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

Es werden Eingabe-/Ausgabesteuerungen und Verfahren zu ihrem Betrieb beschrieben, die Verarbeitungsschaltkreisen Datendienste mit hohem Durchsatz bereitstellen können. Die Eingabe-/Ausgabesteuerungen können cache-kohärente Datenverbindungen und/oder ein Switch-Fabric nutzen, um Datendurchsatz zu verbessern und Latenz bei der Kommunikation zu verringern.

Description

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

Claims (26)

  1. Beansprucht wird:
  2. Integrierte Schaltung, umfassend: eine Schnittstelle, ausgelegt zur Kopplung mit Verarbeitungsschaltkreisen, wobei die Schnittstelle einen Cache-Speicher umfasst und wobei die Schnittstelle ausgelegt ist zur Kopplung mit den Verarbeitungsschaltkreisen unter Verwendung einer cache-kohärenten Datenverbindung, die ein cache-kohärentes Protokoll umfasst; eine Eingabe-/Ausgabesteuerung, ausgelegt zur Kopplung mit einer Eingabe-/ Ausgabevorrichtung; Funktionsschaltkreise, ausgelegt zum Ausführen mindestens einer ersten Datenoperation; und ein Switch-Fabric, ausgelegt zum Routen von Daten zwischen dem Cache-Speicher der Schnittstelle und den Funktionsschaltkreisen, der Schnittstelle und der Eingabe-/Ausgabesteuerung oder den Funktionsschaltkreisen und der Eingabe-/Ausgabesteuerung.
  3. Integrierte Schaltung nach Anspruch 1, wobei die erste Datenoperation eine Komprimierungsoperation, eine Dekomprimierungsoperation, eine Verschlüsselungsoperation, eine Entschlüsselungsoperation, eine Fehlerprüfoperation oder eine mathematische Transformation oder eine beliebige Kombination davon umfasst.
  4. Integrierte Schaltung nach Anspruch 1 oder 2, wobei die integrierte Schaltung ein programmierbares Fabric umfasst, das die Schnittstelle, die Eingabe-/Ausgabesteuerung, die Funktionsschaltkreise oder das Switch-Fabric oder eine beliebige Kombination davon umfasst.
  5. Integrierte Schaltung nach einem der Ansprüche 1-3, wobei die Schnittstelle eine PCIe-Schnittstelle (Peripheral Component Interface Express) umfasst.
  6. Integrierte Schaltung nach einem der Ansprüche 1-4, wobei die Eingabe-/Ausgabesteuerung eine NVMe-Steuerung (Non-Volatile Memory Extended) umfasst und wobei die Eingabe-/Ausgabevorrichtung eine nichtflüchtige Speichervorrichtung umfasst.
  7. Integrierte Schaltung nach einem der Ansprüche 1-5, wobei das Switch-Fabric über eine zweite cache-kohärente Datenverbindung, die das Cache-kohärente Protokoll umfasst, mit dem Cache-Speicher der Schnittstelle gekoppelt ist.
  8. Integrierte Schaltung nach Anspruch 6, die eine zur Kopplung mit den Verarbeitungsschaltkreisen ausgelegte zweite Schnittstelle umfasst.
  9. Elektronische Vorrichtung, umfassend: einen Prozessor; eine Speicherungsvorrichtung; und eine integrierte Schaltung, umfassend: eine mit dem Prozessor gekoppelte Schnittstelle; eine mit der Speicherungsvorrichtung gekoppelte Speicherungssteuerung; zur Ausführung einer ersten Datenoperation ausgelegte Funktionsschaltkreise; und ein Switch-Fabric, ausgelegt zum Routen von Daten zwischen der Schnittstelle, der Speicherungsvorrichtung und den Funktionsschaltkreisen.
  10. Elektronische Vorrichtung nach Anspruch 8, wobei die Speicherungsvorrichtung eine HD (Festplatte), ein SSD-Laufwerk (Solid-State Drive) oder eine RAMdisk (Random Access Memory Disk) oder eine beliebige Kombination davon umfasst.
  11. Elektronische Vorrichtung nach Anspruch 8 oder 9, wobei die Speicherungssteuerung eine NVMe-Steuerung (Non-Volatile Memory Express), eine SATA-Steuerung (Serial AT Adaptor) oder beides umfasst.
  12. Elektronische Vorrichtung nach einem der Ansprüche 8-10, die eine die integrierte Schaltung mit dem Prozessor koppelnde erste Datenverbindung und eine die integrierte Schaltung mit der Speicherungsvorrichtung koppelnde zweite Datenverbindung umfasst, wobei eine erste Bandbreite der ersten Datenverbindung höher als eine Bandbreite der zweiten Datenverbindung ist, wobei die Funktionsschaltkreise ausgelegt sind zum Ausführen einer Komprimierungsoperation und Dekomprimierungsoperation.
  13. Elektronische Vorrichtung nach Anspruch 11, wobei der Prozessor ausgelegt ist zum Schreiben von Daten in die Speicherungsvorrichtung durch: Senden der Daten zu der Schnittstelle; Routen der Daten von der Schnittstelle zu den Funktionsschaltkreisen unter Verwendung des Switch-Fabric; Anfordern des Ausführens der Komprimierungsoperation über den Daten in den Funktionsschaltkreisen; und Routen der Daten von den Funktionsschaltkreisen zu der Speicherungssteuerung unter Verwendung des Switch-Fabric.
  14. Elektronische Vorrichtung nach Anspruch 11, wobei der Prozessor ausgelegt ist zum Lesen von Daten aus der Speicherungsvorrichtung durch: Anfordern von Daten von der Speicherungsvorrichtung über die Speicherungssteuerung; Routen der Daten von der Speicherungssteuerung zu den Funktionsschaltkreisen unter Verwendung des Switch-Fabric; Anfordern des Ausführens der Dekomprimierungsoperation über den Daten in den Funktionsschaltkreisen; und Routen der Daten von den Funktionsschaltkreisen zu der Schnittstelle unter Verwendung des Switch-Fabric.
  15. Elektronische Vorrichtung nach einem der Ansprüche 8-10, wobei die Funktionsschaltkreise ausgelegt sind zum Ausführen einer Fehlerdetektions- oder F ehlerkorrekturoperation.
  16. Elektronische Vorrichtung nach einem der Ansprüche 8-10 oder 14, die eine cache-kohärente Domäne umfasst, die den Prozessor und einen Cache der Schnittstelle umfasst.
  17. Elektronische Vorrichtung nach Anspruch 15, die einen mit dem Prozessor gekoppelten Betriebsspeicher umfasst, wobei die cache-kohärente Domäne den Betriebsspeicher umfasst.
  18. Elektronische Vorrichtung nach einem der Ansprüche 8-10, 14 oder 15, die ein SoC (System on Chip) umfasst, das den Prozessor und die integrierte Schaltung umfasst.
  19. Elektronische Vorrichtung nach einem der Ansprüche 8-10, 14, 15 oder 17, wobei die integrierte Schaltung ein FPGA (Field Programmable Gate Array) oder ein ASIC (anwendungsspezifische integrierte Schaltung) umfasst.
  20. Verfahren, umfassend: Senden von Daten von einem Prozessor zu einer Schnittstelle einer integrierten Schaltung unter Verwendung einer ersten Datenverbindung, die eine erste Bandbreite umfasst; Anfordern von einem Switch-Fabric der integrierten Schaltung, die Daten erste Daten zu Funktionsschaltkreisen der integrierten Schaltung zu routen; Anfordern einer Komprimierung der Daten von den Funktionsschaltkreisen; Empfangen einer Benachrichtigung des Abschlusses der Komprimierung der Daten durch die Funktionsschaltkreise von der integrierten Schaltung; und Anfordern von dem Switch-Fabric der integrierten Schaltung, die Daten von den Funktionsschaltkreisen zu einer unter Verwendung einer zweiten Datenverbindung mit der integrierten Schaltung gekoppelten Speicherungsvorrichtung zu routen, wobei die zweite Datenverbindung eine zweite Bandbreite umfasst, die kleiner als die erste Bandbreite ist.
  21. Verfahren nach Anspruch 19, das Anfordern einer Fehlerprüfoperation der Daten von den Funktionsschaltkreisen umfasst.
  22. Verfahren nach Anspruch 19 oder 20, umfassend: Anfordern von dem Switch-Fabric der integrierten Schaltungsvorrichtung, die Daten von der Speicherungsvorrichtung zu den Funktionsschaltkreisen zu routen; und Anfordern von dem Switch-Fabric der integrierten Schaltungsvorrichtung, die Daten von den Funktionsschaltkreisen zu dem Prozessor zu routen.
  23. Verfahren nach einem der Ansprüche 19-21, das Anfordern von den Funktionsschaltkreisen, eine Dekomprimierungsoperation über den Daten auszuführen, umfasst.
  24. Verfahren nach einem der Ansprüche 19-22, wobei sich der Prozessor und ein Cache der Schnittstelle in einer cache-kohärenten Domäne befinden.
  25. Verfahren nach einem der Ansprüche 19-23, das Anfordern von den Funktionsschaltkreisen, eine Fehlerprüfoperation auszuführen, umfasst.
  26. Verfahren nach einem der Ansprüche 19-24, wobei die integrierte Schaltung ein FPGA (Field Programmable Gate Array) oder ein ASIC (anwendungsspezifische integrierte Schaltung) umfasst.
DE102019117475.9A 2018-06-28 2019-06-28 Cache-kohärente Eingabe-/Ausgabesteuerungen mit hohem Durchsatz Pending DE102019117475A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/022,327 2018-06-28
US16/022,327 US11308005B2 (en) 2018-06-28 2018-06-28 Cache coherent, high-throughput input/output controller

Publications (1)

Publication Number Publication Date
DE102019117475A1 true DE102019117475A1 (de) 2020-01-02

Family

ID=65231791

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102019117475.9A Pending DE102019117475A1 (de) 2018-06-28 2019-06-28 Cache-kohärente Eingabe-/Ausgabesteuerungen mit hohem Durchsatz

Country Status (2)

Country Link
US (1) US11308005B2 (de)
DE (1) DE102019117475A1 (de)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210021202A (ko) 2019-08-14 2021-02-25 삼성전자주식회사 직렬로 연결된 전자 장치들 사이의 레이턴시를 감소시키기 위한 컴퓨팅 시스템
DE102020110559A1 (de) 2019-08-14 2021-02-18 Samsung Electronics Co., Ltd. Rechensystem zur Reduzierung von Latenz zwischen seriell verbundenen elektronischen Vorrichtungen

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7404021B2 (en) * 2000-11-17 2008-07-22 Aristos Logic Corporation Integrated input/output controller
US20080052463A1 (en) * 2006-08-25 2008-02-28 Nagabhushan Chitlur Method and apparatus to implement cache-coherent network interfaces
FR3064865B1 (fr) * 2017-03-29 2020-10-30 Acklio Procede d'apprentissage d'un contexte de compression/decompression, dispositif, systeme et produit programme d'ordinateur correspondants.

Also Published As

Publication number Publication date
US20190042491A1 (en) 2019-02-07
US11308005B2 (en) 2022-04-19

Similar Documents

Publication Publication Date Title
DE102014117465B4 (de) Unterstützter kohärenter gemeinsamer Speicher
DE102019122363A1 (de) Programmierbare doppelreihige arbeitsspeichermodul-beschleunigerkarte (dimm-beschleunigerkarte)
DE102017113576B4 (de) Auf PCI Express basierender Speichereinsatz mit Zweifachport, der Einzelport-Speichercontroller enthält
DE112020006859T5 (de) Beibehaltung von speicher-namensraum-identifizierern für die migration von virtualisierten ausführungsumgebungen im laufenden betrieb
DE102011076894B9 (de) Persistenter Speicher für einen Hauptspeicher eines Prozessors
DE102011076895B4 (de) Cachekohärenzprotokoll für persistente Speicher
DE112017003702T5 (de) Speicherschlitten für ein Datenzentrum
DE102018213430A1 (de) Beschleuniger mit geringer Latenzzeit
DE102014109519A1 (de) Techniken zum Replizieren von Daten zwischen Speicherservern
DE102010044529B4 (de) Autonomes speicher-sub-system mit hardwarebeschleuniger
DE102014117463A1 (de) Datenkohärenzmodell und Protokoll auf Cluster-Ebene
DE2619159A1 (de) Fehlererkennungs- und korrektureinrichtung
DE102020116316A1 (de) Prioritätsbasierte batterie-zuordnung für ressourcen während leistungsausfall
DE60025788T2 (de) Flexibles Mehrzweck-Ein/Ausgabesystem
DE112014000442T5 (de) Auf Einzelmikroregler beruhendes Management mehrerer Rechenknoten
DE102019117794A1 (de) Speichervorrichtungen, die heterogene Prozessoren umfassen, welche sich Speicher teilen, und Verfahren zu deren Betrieb
DE102004024130B4 (de) Speichersystem und Verfahren zum Betrieb eines Speichersystems
DE102020132767A1 (de) Verwaltung der Dienstgüte (QoS) eines Speichersystems
DE102022124530A1 (de) Speicherpoolmanagement
DE102019117475A1 (de) Cache-kohärente Eingabe-/Ausgabesteuerungen mit hohem Durchsatz
DE112020003004T5 (de) Dma-scatter- und gather-operationen für nicht zusammenhängenden speicher
DE112021001470T5 (de) Konfigurieren von datenverarbeitungsknoten in einer dreidimensionalen netztopologie
DE102022107778A1 (de) Adressübersetzung an einer zielnetzwerk-schnittstellenvorrichtung
DE102020131677A1 (de) Prozessorgesteuerte modifikation programmierbarer logikvorrichtungen
DE112007000688T5 (de) Fehlerverwaltungstopologien