DE102019108798A1 - Hochbandige verbindungsschicht für kohärente nachrichten - Google Patents

Hochbandige verbindungsschicht für kohärente nachrichten Download PDF

Info

Publication number
DE102019108798A1
DE102019108798A1 DE102019108798.8A DE102019108798A DE102019108798A1 DE 102019108798 A1 DE102019108798 A1 DE 102019108798A1 DE 102019108798 A DE102019108798 A DE 102019108798A DE 102019108798 A1 DE102019108798 A1 DE 102019108798A1
Authority
DE
Germany
Prior art keywords
flit
data
link layer
logic
memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102019108798.8A
Other languages
English (en)
Inventor
Ishwar AGARWAL
Peeyush Purohit
Nitish Paliwal
Archana Srinivasan
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 DE102019108798A1 publication Critical patent/DE102019108798A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/0877Cache access modes
    • 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
    • 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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4063Device-to-bus coupling
    • G06F13/4068Electrical coupling
    • G06F13/4086Bus impedance matching, e.g. termination
    • 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/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Information Transfer Systems (AREA)
  • Bus Control (AREA)
  • Computer And Data Communications (AREA)

Abstract

Systeme, Verfahren und Vorrichtungen können eine Verbindungsschichtlogik zum Identifizieren, durch eine Verbindungsschichtvorrichtung, von ersten Daten, die in einem ersten Protokollformat vom Speicher empfangen werden, Identifizieren, durch die Verbindungsschichtvorrichtung, von zweiten Daten, die in einem zweiten Protokollformat vom Cache empfangen werden, Multiplexen, durch die Verbindungsschichtvorrichtung, eines Teils der ersten Daten und eines Teils der zweiten Daten, um gemultiplexte Daten zu erzeugen, und Generieren, durch die Verbindungsschichtvorrichtung, einer Flusssteuereinheit (Flit, Flow Control Unit), die die gemultiplexten Daten aufweist, aufweisen.

Description

  • QUERVERWEIS AUF VERWANDTE ANMELDUNG
  • Diese Anmeldung beansprucht den Vorteil der vorläufigen US-Anmeldung Nr. 62/667,230 , eingereicht am 4. Mai 2018, deren gesamter Inhalt durch Bezugnahme hierin aufgenommen ist.
  • HINTERGRUND
  • Beim Computing ist ein Cache eine Komponente, die Daten speichert, so dass zukünftige Anforderungen für diese Daten schneller bedient werden können. Beispielsweise könnten im Cache gespeicherte Daten das Ergebnis einer früheren Berechnung oder das an anderer Stelle gespeicherte Duplikat von Daten sein. Im Allgemeinen kann ein Cache-Hit auftreten, wenn die angeforderten Daten im Cache gefunden werden, während ein Cache-Miss auftreten kann, wenn die angeforderten Daten nicht im Cache gefunden werden. Cache-Hits werden durch das Lesen von Daten aus dem Cache bedient, was typischerweise schneller als das Neuberechnen eines Ergebnisses oder das Lesen aus einem langsameren Datenspeicher ist. Somit kann eine Steigerung der Effizienz oft erreicht werden, indem mehr Anforderungen vom Cache bedient werden.
  • Figurenliste
    • 1 ist eine schematische Darstellung eines vereinfachten Blockschaltbilds eines Systems mit einem seriellen Punkt-zu-Punkt-Interconnect zum Verbinden von I/O-Vorrichtungen in einem Computersystem gemäß einer Ausführungsform.
    • 2 ist eine schematische Darstellung eines vereinfachten Blockschaltbilds eines geschichteten Protokollstapels gemäß einer Ausführungsform.
    • 3 ist eine schematische Darstellung einer Ausführungsform eines Transaktionsdeskriptors.
    • 4 ist eine schematische Darstellung einer Ausführungsform einer seriellen Punkt-zu-Punkt-Verbindung.
    • 5 ist eine schematische Darstellung eines Verarbeitungssystems, das einen verbundenen Beschleuniger gemäß Ausführungsformen der vorliegenden Offenbarung aufweist.
    • 6 ist eine schematische Darstellung eines beispielhaften Rechensystems gemäß Ausführungsformen der vorliegenden Offenbarung.
    • 7A ist eine schematische Darstellung eines beispielhaften Flit-Formats mit einer festen Breite und einer 16-Bit zyklischen Redundanzprüfung (CRC, Cyclic Redundancy Check) gemäß Ausführungsformen der vorliegenden Offenbarung.
    • 7B ist eine schematische Darstellung einer All-Data-Flit gemäß Ausführungsformen der vorliegenden Offenbarung.
    • 8A ist eine schematische Darstellung einer beispielhaften Flit-Packumgebung 800 gemäß Ausführungsformen der vorliegenden Offenbarung.
    • 8B-E veranschaulichen beispielhafte Flit-Package-Szenarien gemäß Ausführungsformen der vorliegenden Offenbarung.
    • 9A ist ein Prozessflussdiagramm zum Packen und Decodieren einer verketteten Flit, die wenigstens eine All-Data-Flit gemäß Ausführungsformen der vorliegenden Offenbarung aufweist.
    • 9B ist ein Prozessflussdiagramm zum Packaging und Decodieren eines All-Data-Packages gemäß Ausführungsformen der vorliegenden Offenbarung.
    • 10A ist ein Blockschaltbild eines Prozessors, der gemäß verschiedenen Ausführungsformen mehr als einen Kern aufweisen kann, einen integrierten Speichercontroller aufweisen kann und integrierte Grafik aufweisen kann.
    • 10B stellt ein Blockschaltbild eines Systems gemäß einer Ausführungsform der vorliegenden Offenbarung dar.
    • 11 stellt ein Blockschaltbild eines ersten spezielleren beispielhaften Systems gemäß einer Ausführungsform der vorliegenden Offenbarung dar.
    • 12 stellt ein Blockschaltbild eines zweiten spezielleren beispielhaften Systems 1300 gemäß einer Ausführungsform der vorliegenden Offenbarung dar.
    • 13 stellt ein Blockschaltbild eines SoC gemäß einer Ausführungsform der vorliegenden Offenbarung dar.
    • 14 ist ein Blockschaltbild, das die Verwendung eines Softwarebefehlswandlers zum Konvertieren von binären Befehlen in einem Quellbefehlssatz in binäre Befehle in einem Zielbefehlssatz gemäß Ausführungsformen der Offenbarung gegenüberstellt.
  • DETAILLIERTE BESCHREIBUNG
  • In der folgenden Beschreibung werden zahlreiche spezielle Details dargelegt, wie beispielsweise Beispiele von speziellen Typen von Prozessoren und Systemkonfigurationen, speziellen Hardwarestrukturen, speziellen Architektur- und Mikroarchitekturdetails, speziellen Registerkonfigurationen, speziellen Befehlstypen, speziellen Systemkomponenten, speziellen Prozessorpipelinestufen, speziellen Interconnect-Schichten, speziellen Paket-/Transaktionskonfigurationen, speziellen Transaktionsnamen, speziellen Protokollaustauschen, speziellen Verbindungsbreiten, speziellen Implementierungen und Operationen usw. um ein gründliches Verständnis der vorliegenden Offenbarung zu vermitteln. Es kann jedoch für Fachleute auf dem Gebiet offensichtlich sein, dass diese speziellen Details nicht zum Umsetzen des Gegenstands der vorliegenden Offenbarung verwendet werden müssen. In anderen Fällen wurde eine sehr detaillierte Beschreibung von bekannten Komponenten oder Verfahren vermieden, wie beispielsweise von speziellen und alternativen Prozessorarchitekturen, speziellen Logikschaltungen/Code für beschriebene Algorithmen, speziellem Firmwarecode, Low-Level-Interconnect-Betrieb, speziellen Logikkonfigurationen, speziellen Fertigungstechniken und - materialien, speziellen Compiler-Implementierungen, speziellem Ausdruck von Algorithmen in Code, speziellen Abschalt- und Gating-Techniken/Logik und anderen speziellen Betriebsdetails des Computersystems, um die vorliegende Offenbarung nicht unnötig zu verschleiern.
  • In der folgenden detaillierten Beschreibung wird auf die beigefügten Zeichnungen Bezug genommen, die einen Teil hiervon bilden, wobei gleiche Bezugszeichen durchweg gleiche Teile bezeichnen, und in denen als Veranschaulichung Ausführungsformen gezeigt sind, die umgesetzt werden können. Es versteht sich, dass andere Ausführungsformen verwendet werden können und strukturelle oder logische Änderungen vorgenommen werden können, ohne vom Schutzbereich der vorliegenden Offenbarung abzuweichen. Die folgende detaillierte Beschreibung ist daher nicht in einem einschränkenden Sinne aufzufassen, und der Schutzbereich der Ausführungsformen wird durch die beigefügten Beispiele und ihre Äquivalente definiert.
  • Aspekte der Offenbarung sind in der beigefügten Beschreibung offenbart. Alternative Ausführungsformen der vorliegenden Offenbarung und ihre Äquivalente können ausgearbeitet werden, ohne vom Wesen oder Schutzbereich der vorliegenden Offenbarung abzuweichen. Es ist zu beachten, dass gleiche Elemente, die nachstehend offenbart sind, in den Zeichnungen durch gleiche Bezugszeichen angezeigt sind.
  • Verschiedene Operationen können als mehrere diskrete Aktionen oder Operationen der Reihe nach beschrieben sein, und zwar auf eine Weise, die für das Verständnis des Gegenstands der Beispiele äußerst hilfreich ist. Die Reihenfolge der Beschreibung darf jedoch nicht so ausgelegt werden, als impliziere sie, dass diese Operationen notwendigerweise von der Reihenfolge abhängig sind. Insbesondere können diese Operationen möglicherweise nicht in der Reihenfolge der Präsentation durchgeführt werden. Beschriebene Operationen können in einer anderen Reihenfolge als die beschriebene Ausführungsform durchgeführt werden. Verschiedene zusätzliche Operationen können durchgeführt werden und/oder beschriebene Operationen können in zusätzlichen Ausführungsformen weggelassen werden.
  • Für die Zwecke der vorliegenden Offenbarung hat der Ausdruck „A und/oder B“ die Bedeutung (A), (B) oder (A und B). Für die Zwecke der vorliegenden Offenbarung hat der Ausdruck „A, B und/oder C“ die Bedeutung (A), (B), (C), (A und B), (A und C), (B und C) oder (A, B und C).
  • In der Beschreibung können die Ausdrücke „in einer Ausführungsform“ oder „in Ausführungsformen“ verwendet werden, die sich jeweils entweder auf eine oder mehrere der gleichen oder verschiedene Ausführungsformen beziehen können. Ferner sind die Begriffe „umfassend“, „einschließlich“, „aufweisend“ und dergleichen, wie in Bezug auf Ausführungsformen der vorliegenden Offenbarung verwendet, bedeutungsgleich.
  • Wie hierin verwendet, kann sich der Begriff „Schaltungen“ auf eine anwendungsspezifische integrierte Schaltung (ASIC, Application Specific Integrated Circuit), eine elektronische Schaltung, einen Prozessor (gemeinsam genutzt, dediziert oder Gruppe) und/oder Speicher (gemeinsam genutzt, dediziert oder Gruppe), die bzw. der eines oder mehrere Software- oder Firmwareprogramme ausführt, eine kombinatorische Logikschaltung und/oder andere geeignete Komponenten, welche die beschriebene Funktionalität bereitstellen, oder einen Teil davon beziehen oder solche umfassen.
  • Obwohl die folgenden Ausführungsformen unter Bezugnahme auf Energieerhaltung, Energieeffizienz, Verarbeitungseffizienz und so weiter in speziellen integrierten Schaltungen, wie beispielsweise Rechenplattformen oder Mikroprozessoren, beschrieben sein können, sind andere Ausführungsformen auf andere Typen von integrierten Schaltungen und Logikvorrichtungen anwendbar. Ähnliche Techniken und Lehren von hierin beschriebenen Ausführungsformen können auf andere Typen von Schaltungen oder Halbleitervorrichtungen angewendet werden, die auch aus derartigen Merkmalen Nutzen ziehen können. Beispielsweise sind die offenbarten Ausführungsformen nicht auf Server-Computersysteme, Desktop-Computersysteme, Laptops, Ultrabooks™ beschränkt, sondern können auch in anderen Vorrichtungen, wie beispielsweise Handheld-Vorrichtungen, Smartphones, Tablets, anderen dünnen Notebooks, System-on-a-Chip(SOC)-Vorrichtungen und eingebetteten Anwendungen verwendet werden. Einige Beispiele von Handheld-Vorrichtungen umfassen zelluläre Telefone, Internetprotokollvorrichtungen, Digitalkameras, persönliche digitale Assistenten (PDAs) und Handheld-PCs. Hier können ähnliche Techniken für ein Hochleistungs-Interconnect angewendet werden, um die Leistung in einem Low-Power-Interconnect zu erhöhen (oder sogar Strom zu sparen). Eingebettete Anwendungen umfassen typischerweise einen Mikrocontroller, einen digitalen Signalprozessor (DSP), ein System-on-a-Chip, Netzcomputer (NetPC), Set-Top-Boxen, Netz-Hubs, Weitverkehrsnetz(WAN, Wide Area Network)-Switches oder jedes andere System, welches die im Folgenden gelehrten Funktionen und Operationen ausführen kann. Darüber hinaus sind die hierin beschriebenen Vorrichtungen, Verfahren und Systeme nicht auf physikalische Rechenvorrichtungen beschränkt, sondern können sich auch auf Softwareoptimierungen zur Energieerhaltung und -effizienz beziehen. Wie möglicherweise aus der nachfolgenden Beschreibung ohne Weiteres hervorgeht, können die hierin beschriebenen Ausführungsformen von Verfahren, Vorrichtungen und Systemen (einerlei, ob in Bezug auf Hardware, Firmware, Software oder eine Kombination davon) als unerlässlich für eine Zukunft angesehen werden, in welcher umweltfreundliche Technik und Leistungsüberlegungen im Gleichgewicht sind.
  • Mit zunehmendem Fortschritt von Rechensystemen werden die Komponenten darin komplexer. Die Interconnect-Architektur zum Koppeln von und Kommunizieren zwischen den Komponenten hat auch an Komplexität zugenommen, um zu gewährleisten, dass der Bandbreitenbedarf für einen optimalen Komponentenbetrieb erfüllt wird. Ferner verlangen verschiedene Marktsegmente eine Anpassung verschiedener Aspekte von Interconnect-Architekturen an die jeweiligen Märkte. Beispielsweise benötigen Server eine höhere Leistung, während das mobile Ökosystem manchmal imstande ist, für Stromeinsparungen Gesamtleistung zu opfern. Dennoch ist es ein besonderes Ziel der meisten Fabrics, die höchstmögliche Leistung bei maximaler Stromeinsparung bereitzustellen. Ferner können eine Vielfalt von verschiedenen Interconnects potenziell vom hierin beschriebenen Gegenstand Nutzen ziehen.
  • Die Peripheral-Component-Interconnect(PCI)-Express(PCIe)-Interconnect-Fabric-Architektur und die QuickPath Interconnect(QPI)-Fabric-Architektur können neben anderen Beispielen gemäß einem oder mehreren der hierin beschriebenen Prinzipien potenziell verbessert werden, neben anderen Beispielen. Beispielsweise ist ein Hauptziel von PCIe, Komponenten und Vorrichtungen von verschiedenen Anbietern zu ermöglichen, in einer offenen Architektur zusammenzuwirken, die mehrere Marktsegmente umfasst: Clients (Desktops und mobile), Server (Standard und Enterprise) und eingebettete und Kommunikationsvorrichtungen. PCI Express ist ein Hochleistungs-Allzweck-I/O-Interconnect, das für eine große Vielfalt von zukünftigen Rechen- und Kommunikationsplattformen definiert ist. Einige PCI-Attribute, wie beispielsweise das Nutzungsmodell, die Load/Store-Architektur und Softwareschnittstellen, wurden durch die Revisionen hindurch beibehalten, wohingegen frühere parallele Busimplementierungen durch eine hochskalierbare, vollständig serielle Schnittstelle ersetzt wurden. Die neueren Versionen von PCI Express nutzen Fortschritte in Punkt-zu-Punkt-Interconnects, Switch-basierter Technologie und paketiertem Protokoll, um neue Leistungsniveaus und Merkmale bereitzustellen. Strommanagement, Dienstgüte (QoS, Quality of Service), Hot-Plug/Hot-Swap-Unterstützung, Datenintegrität und Fehlerbehandlung gehören zu den weiterentwickelten Merkmalen, die von PCI Express unterstützt werden. Obwohl sich die primäre Erörterung hierin auf eine neue High-Performance-Interconnect(HPI)-Architektur bezieht, können Aspekte der hierin beschriebenen Offenbarung auf andere Interconnect-Architekturen angewendet werden, wie beispielsweise eine PCIe-konforme Architektur, eine QPI-konforme Architektur, eine MIPI-konforme Architektur, eine Hochleistungsarchitektur oder eine andere bekannte Interconnect-Architektur.
  • Unter Bezugnahme auf 1 ist eine Ausführungsform einer Fabric veranschaulicht, die aus Punkt-zu-Punkt-Verbindungen besteht, die einen Satz von Komponenten miteinander verbinden. Das System 100 weist einen Prozessor 105 und einen Systemspeicher 110 auf, der mit dem Controller-Hub 115 gekoppelt ist. Der Prozessor 105 kann ein beliebiges Verarbeitungselement einschließen, wie beispielsweise einen Mikroprozessor, einen Host-Prozessor, einen eingebetteten Prozessor, einen Coprozessor oder einen anderen Prozessor. Der Prozessor 105 ist über einen Front-Side-Bus (FSB) 106 mit dem Controller-Hub 115 gekoppelt. In einer Ausführungsform ist der FSB 106 ein serielles Punkt-zu-Punkt-Interconnect, wie unten beschrieben. In einer anderen Ausführungsform weist die Verbindung 106 eine serielle differentielle Interconnect-Architektur auf, die mit verschiedenen Interconnect-Standards konform ist.
  • Der Systemspeicher 110 schließt eine beliebige Speichervorrichtung ein, wie beispielsweise einen Direktzugriffsspeicher (RAM, Random Access Memory), einen nichtflüchtigen (NV, Non-Volatile) Speicher oder einen anderen Speicher, auf den Vorrichtungen im System 100 zugreifen können. Der Systemspeicher 110 ist über die Speicherschnittstelle 116 mit dem Controller-Hub 115 gekoppelt. Beispiele einer Speicherschnittstelle schließen eine Double-Data-Rate(DDR)-Speicherschnittstelle, eine Zweikanal-DDR-Speicherschnittstelle und eine dynamische RAM(DRAM)-Speicherschnittstelle ein.
  • In einer Ausführungsform kann der Controller-Hub 115 einen Root-Hub, Root-Complex oder Root-Controller einschließen, wie beispielsweise in einer PCIe-Zwischenverbindungshierarchie. Beispiele des Controller-Hubs 115 schließen einen Chipsatz, einen Speichercontroller-Hub (MCH, Memory Controller Hub), eine Northbridge, einen Interconnect-Controller-Hub (ICH), eine Southbridge und einen Root-Controller/Hub ein. Oft bezieht sich der Begriff Chipsatz auf zwei physikalisch getrennte Controller-Hubs, z. B. einen Speichercontroller-Hub (MCH, Memory Controller Hub), der mit einem Interconnect-Controller-Hub (ICH) gekoppelt ist. Man beachte, dass gegenwärtige Systeme oft den im Prozessor 105 integrierten MCH einschließen, während der Controller 115 mit I/O-Vorrichtungen in einer ähnlichen Weise kommunizieren soll, wie dies nachfolgend beschrieben ist. In einigen Ausführungsformen wird das Peer-to-Peer-Routing optional durch den Root-Complex 115 unterstützt.
  • Hier ist der Controller-Hub 115 über die serielle Verbindung 119 mit dem Switch/Bridge 120 gekoppelt. Die Eingabe/Ausgabe-Module 117 und 121, die auch als Schnittstellen/Ports 117 und 121 bezeichnet werden können, können einen geschichteten Protokollstapel einschließen/implementieren, um eine Kommunikation zwischen dem Controller-Hub 115 und dem Switch 120 bereitzustellen. In einer Ausführungsform können mehrere Vorrichtungen mit dem Switch 120 gekoppelt sein.
  • Der Switch/die Bridge 120 leitet Pakete/Nachrichten von der Vorrichtung 125 stromaufwärts, d. h. eine Hierarchie nach oben in Richtung von einem Root-Complex, zum Controller-Hub 115 und stromabwärts, d. h. eine Hierarchie nach unten weg von einem Root-Controller, vom Prozessor 105 oder Systemspeicher 110 zur Vorrichtung 125. Der Switch 120 wird in einer Ausführungsform als eine logische Baugruppe von mehreren virtuellen PCI-zu-PCI-Bridge-Vorrichtungen bezeichnet. Die Vorrichtung 125 weist eine beliebige interne oder externe Vorrichtung oder Komponente auf, die mit einem elektronischen System gekoppelt werden soll, wie beispielsweise eine I/O-Vorrichtung, einen Netzschnittstellencontroller (NIC, Network Interface Controller), eine Erweiterungskarte, einen Audioprozessor, einen Netzprozessor, eine Festplatte, eine Speichervorrichtung, ein CD/DVD-ROM, einen Monitor, einen Drucker, eine Maus, eine Tastatur, einen Router, eine tragbare Speichervorrichtung, eine Firewire-Vorrichtung, eine Universal-Serial-Bus(USB)-Vorrichtung, einen Scanner und andere Eingabe/Ausgabe-Vorrichtungen. Oft wird eine derartige Vorrichtung im PCIe-Sprachgebrauch als ein Endpunkt bezeichnet. Obwohl dies nicht speziell gezeigt ist, kann eine Vorrichtung 125 eine Bridge (z. B. eine PCIe-zu-PCI/PCI-X-Bridge) aufweisen, um Legacy- oder andere Versionen von Vorrichtungen oder Interconnect-Fabrics zu unterstützen, die von derartigen Vorrichtungen unterstützt werden.
  • Der Grafikbeschleuniger 130 kann auch über die serielle Verbindung 132 mit dem Controller-Hub 115 gekoppelt sein. In einer Ausführungsform ist der Grafikbeschleuniger 130 mit einem MCH gekoppelt, der mit einem ICH gekoppelt ist. Der Switch 120 und dementsprechend die I/O-Vorrichtung 125 wird dann mit dem ICH gekoppelt. Die I/O-Module 131 und 118 sollen auch einen geschichteten Protokollstapel implementieren, um zwischen dem Grafikbeschleuniger 130 und dem Controller-Hub 115 zu kommunizieren. Ähnlich der obigen MCH-Erörterung kann ein Grafikcontroller oder der Grafikbeschleuniger 130 selbst im Prozessor 105 integriert sein.
  • Mit Bezug auf 2 wird eine Ausführungsform eines geschichteten Protokollstapels veranschaulicht. Der geschichtete Protokollstapel 200 kann eine beliebige Form eines geschichteten Kommunikationsstapels aufweisen, wie beispielsweise einen QPI-Stapel, einen PCIe-Stapel, einen High-Performance-Computing-Interconnect(HPI)-Stapel der nächsten Generation oder einen anderen geschichteten Stapel. In einer Ausführungsform kann der Protokollstapel 200 die Transaktionsschicht 205, die Verbindungsschicht 210 und die physikalische Schicht 220 aufweisen. Eine Schnittstelle, wie beispielsweise die Schnittstellen 117, 118, 121, 122, 126 und 131 in 1, können als Kommunikationsprotokollstapel 200 repräsentiert werden. Die Repräsentation als ein Kommunikationsprotokollstapel kann auch als ein Modul oder eine Schnittstelle bezeichnet werden, die einen Protokollstapel implementiert/einschließt.
  • Pakete können verwendet werden, um Informationen zwischen Komponenten zu kommunizieren. Pakete können in der Transaktionsschicht 205 und Datenverbindungsschicht 210 ausgebildet werden, um die Informationen von der sendenden Komponente zur empfangenden Komponente zu tragen. Wenn die gesendeten Pakete durch die anderen Schichten fließen, werden sie um zusätzliche Informationen erweitert, die zum Behandeln der Pakete bei diesen Schichten verwendet werden. Auf der Empfangsseite findet der umgekehrte Prozess statt und Pakete werden von ihrer Repräsentation der physikalischen Schicht 220 in die Repräsentation der Datenverbindungsschicht 210 und schließlich (für Transaktionsschichtpakete) in die Form, die von der Transaktionsschicht 205 der Empfangsvorrichtung verarbeitet werden kann, umgewandelt.
  • In einer Ausführungsform kann die Transaktionsschicht 205 eine Schnittstelle zwischen dem Verarbeitungskern einer Vorrichtung und der Interconnect-Architektur bereitstellen, wie beispielsweise der Datenverbindungsschicht 210 und der physikalischen Schicht 220. In dieser Hinsicht kann eine Hauptverantwortung der Transaktionsschicht 205 das Assemblieren und Disassemblieren von Paketen (d. h. Transaktionsschichtpaketen oder TLPs (Transaction Layer Packets)) einschließen. Die Transaktionsschicht 205 kann auch eine Credit-basierte Flusssteuerung für TLPs verwalten. In einigen Implementierungen können gesplittete Transaktionen verwendet werden, d. h. Transaktionen mit Anforderung und Antwort, die zeitlich getrennt sind, wodurch eine Verbindung anderen Verkehr tragen kann, während die Zielvorrichtung Daten für die Antwort sammelt, neben anderen Beispielen.
  • Eine Credit-basierte Flusssteuerung kann verwendet werden, um virtuelle Kanäle und Netze unter Verwendung der Interconnect-Fabric zu realisieren. In einem Beispiel kann eine Vorrichtung eine anfängliche Menge an Credits für jeden der Empfangspuffer in der Transaktionsschicht 205 ankündigen. Eine externe Vorrichtung am entgegengesetzten Ende der Verbindung, wie beispielsweise der Controller-Hub 115 in 1, kann die Anzahl der Credits zählen, die von jedem TLP verbraucht werden. Eine Transaktion kann gesendet werden, falls die Transaktion einen Credit-Grenzwert nicht überschreitet. Beim Empfangen einer Antwort wird eine Menge an Credits wiederhergestellt. Ein Beispiel eines Vorteils eines derartigen Credit-Schemas ist, dass die Latenz der Credit-Rückgabe die Leistung nicht beeinträchtigt, vorausgesetzt, dass der Credit-Grenzwert nicht erreicht wird, neben anderen potenziellen Vorteilen.
  • In einer Ausführungsform können vier Transaktionsadressräume einen Konfigurationsadressraum, einen Speicheradressraum, einen Eingabe/Ausgabe-Adressraum und einen Nachrichtenadressraum einschließen. Speicherraumtransaktionen schließen eine oder mehrere Leseanforderungen und Schreibanforderungen zum Übertragen von Daten zu/von einem speicherabgebildeten Ort ein. In einer Ausführungsform sind Speicherraumtransaktionen fähig, zwei verschiedene Adressformate zu verwenden, z. B. ein kurzes Adressformat, wie beispielsweise eine 32-Bit-Adresse, oder ein langes Adressformat, wie beispielsweise eine 64-Bit-Adresse. Konfigurationsraumtransaktionen können für einen Zugriff auf den Konfigurationsraum verschiedener Vorrichtungen verwendet werden, die mit dem Interconnect verbunden sind. Transaktionen zum Konfigurationsraum können Leseanforderungen und Schreibanforderungen einschließen. Nachrichtenraumtransaktionen (oder einfach Nachrichten) können auch definiert werden, um eine In-Band-Kommunikation zwischen Interconnect-Agenten zu unterstützen. Daher kann die Transaktionsschicht 205 in einer beispielhaften Ausführungsform den Paket-Header/die Nutzlast 206 zusammenstellen.
  • Beispiele für Datenverbindungsschichtvorrichtungen können Bridges, Repeater, Switches usw. einschließen. Eine Bridge kann einem Repeater ähnlich sein, mit Zusatzfunktionalität zum Filtern von Inhalt durch Lesen der MAC-Adressen von Quelle und Ziel. Eine Bridge wird auch verwendet, um zwei Vorrichtungen oder Systeme oder Netze miteinander zu verbinden, die mit dem gleichen Protokoll arbeiten, oder in einigen Ausführungsformen verschiedenen Protokollen, die zu einer einzelnen Flit gemultiplext sind. Ein Switch ist eine Multi-Port-Bridge mit einem Puffer und einem Design, das seine Effizienz (eine große Anzahl von Ports bedeutet weniger Verkehr) und Leistung steigern kann. Der Schalter ist eine Datenverbindungsschichtvorrichtung. Der Switch kann vor dem Weiterleiten von Daten eine Fehlerprüfung durchführen, was ihn sehr effizient macht, da er keine fehlerhaften Pakete weiterleitet und nur gute Pakete selektiv zum korrekten Port weiterleitet. Mit anderen Worten teilt ein Switch die Kollisionsdomäne von Hosts auf, aber die Broadcast-Domäne bleibt gleich.
  • Kurz Bezug nehmend auf 3 ist eine beispielhafte Ausführungsform eines Transaktionsschichtpaketdeskriptors veranschaulicht. In einer Ausführungsform kann der Transaktionsdeskriptor 300 ein Mechanismus zum Tragen von Transaktionsinformationen sein. In dieser Hinsicht unterstützt der Transaktionsdeskriptor 300 die Identifizierung von Transaktionen in einem System. Andere potenziellen Verwendungen umfassen das Verfolgen von Modifikationen der Standardtransaktionsordnung und Assoziieren von Transaktionen mit Kanälen. Zum Beispiel kann der Transaktionsdeskriptor 300 das Feld für die globale Identifizierung 302, das Attributfeld 304 und das Kanalidentifizierungsfeld 306 aufweisen. Im veranschaulichten Beispiel ist das Feld für die globale Identifizierung 302 mit dem Feld für die lokale Transaktionsidentifizierung 308 und dem Feld für die Quellenidentifizierung 310 dargestellt. In einer Ausführungsform ist die globale Transaktionsidentifizierung 302 für alle ausstehenden Anforderungen eindeutig.
  • Gemäß einer Implementierung ist das Feld für die lokale Transaktionsidentifizierung 308 ein Feld, das von einem anfordernden Agenten generiert wird, und kann für alle ausstehenden Anforderungen eindeutig sein, die einen Abschluss für diesen anfordernden Agenten erfordern. Ferner identifiziert die Quellenidentifizierung 310 in diesem Beispiel den Anfordereragenten innerhalb einer Interconnect-Hierarchie eindeutig. Dementsprechend stellt das Feld für die lokale Transaktionsidentifizierung 308 zusammen mit der Quellen-ID 310 eine globale Identifizierung einer Transaktion innerhalb einer Hierarchiedomäne bereit.
  • Das Attributfeld 304 gibt Eigenschaften und Beziehungen der Transaktion an. In dieser Hinsicht wird das Attributfeld 304 potenziell verwendet, um zusätzliche Informationen bereitzustellen, die eine Modifikation der Standardbehandlung von Transaktionen ermöglicht. In einer Ausführungsform weist das Attributfeld 304 ein Prioritätsfeld 312, ein Reserviert-Feld 314, ein Ordnungsfeld 316 und ein No-Snoop-Feld 318 auf. Hier kann das Prioritätsunterfeld 312 von einem Initiator modifiziert werden, um der Transaktion eine Priorität zuzuweisen. Das Reserviertes-Attribut-Feld 314 bleibt für die zukünftige oder vom Lieferanten definierte Verwendung reserviert. Mögliche Nutzungsmodelle, die Prioritäts- oder Sicherheitsattribute verwenden, können unter Verwendung des Reserviertes-Attribut-Felds implementiert werden.
  • In diesem Beispiel wird das Ordnungsattributfeld 316 verwendet, um optionale Informationen zu liefern, die den Typ der Ordnung vermitteln, der die Standardordnungsregeln modifizieren kann. Gemäß einer beispielhaften Implementierung bedeutet ein Ordnungsattribut von „0“, dass Standardordnungsregeln gelten sollen, während ein Ordnungsattribut von „1“ eine zwanglose Ordnung bezeichnet, wobei Schreibvorgänge Schreibvorgänge in die gleiche Richtung passieren können und Leseabschlüsse Schreibvorgänge in die gleiche Richtung passieren können. Das Snoop-Attributfeld 318 wird verwendet, um zu bestimmen, ob Transaktionen gesnoopt werden. Wie gezeigt, identifiziert das Kanal-ID-Feld 306 einen Kanal, mit dem eine Transaktion assoziiert ist.
  • Zurückkehrend zur Erörterung von 2 kann eine Verbindungsschicht 210, die auch als Datenverbindungsschicht 210 bezeichnet wird, als Zwischenstufe zwischen der Transaktionsschicht 205 und der physikalischen Schicht 220 wirken. In einer Ausführungsform ist eine Zuständigkeit der Datenverbindungsschicht 210 das Bereitstellen eines zuverlässigen Mechanismus zum Austauschen von Transaktionsschichtpaketen (TLPs, Transaction Layer Packets) zwischen zwei Komponenten auf einer Verbindung. Eine Seite der Datenverbindungsschicht 210 akzeptiert TLPs, die von der Transaktionsschicht 205 zusammengestellt wurden, wendet eine Paketsequenzidentifizierung 211, d. h. eine Identifizierungsnummer oder Paketnummer, an, berechnet einen Fehlererkennungscode, d. h. CRC 212, und wendet ihn an und überreicht die modifizierten TLPs an die physikalische Schicht 220 zum Senden über eine physikalische an eine externe Vorrichtung.
  • In einem Beispiel weist die physikalische Schicht 220 einen logischen Teilblock 221 und einen elektrischen Teilblock 222 zum physikalischen Senden eines Pakets an eine externe Vorrichtung auf. Hier ist der logische Teilblock 221 für die „digitalen“ Funktionen der physikalischen Schicht 221 zuständig. In dieser Hinsicht kann der logische Teilblock einen Sendeabschnitt zum Vorbereiten ausgehender Informationen, die vom physikalischen Teilblock 222 gesendet werden, und einen Empfangsabschnitt zum Identifizieren und Vorbereiten empfangener Informationen, bevor diese zur Verbindungsschicht 210 geleitet werden, aufweisen.
  • Der physikalische Block 222 schließt einen Sender und einen Empfänger ein. Dem Sender werden vom logischen Teilblock 221 Symbole geliefert, die der Sender serialisiert und weiter an eine externe Vorrichtung sendet. Dem Empfänger werden die serialisierten Symbole von einer externen Vorrichtung geliefert, und er wandelt die empfangenen Signale in einen Bitstrom um. Der Bitstrom wird deserialisiert und zum logischen Teilblock 221 geleitet. In einem Ausführungsbeispiel wird ein 8b/10b-Sendecode verwendet, wobei Zehn-Bit-Symbole gesendet/empfangen werden. Hier werden Spezialsymbole verwendet, um ein Paket mit Frames 223 zu versehen. Zusätzlich stellt der Empfänger in einem Beispiel auch einen Symboltakt bereit, der aus dem eingehenden seriellen Strom wiederhergestellt ist.
  • Wie oben angegeben, obwohl die Transaktionsschicht 205, die Verbindungsschicht 210 und die physikalische Schicht 220 in Bezug auf eine spezielle Ausführungsform eines Protokollstapels (wie beispielsweise PCIe-Protokollstapel) erörtert werden, ist ein geschichteter Protokollstapel nicht derart begrenzt. Tatsächlich kann ein beliebiges geschichtetes Protokoll eingeschlossen/implementiert sein und die hierin erörterten Merkmale übernehmen. Als ein Beispiel kann ein Port/eine Schnittstelle, dargestellt als ein geschichtetes Protokoll, einschließen: (1) eine erste Schicht zum Zusammenstellen von Paketen, d. h. eine Transaktionsschicht; eine zweite Schicht zum Sequenzieren von Paketen, d. h. eine Verbindungsschicht; und eine dritte Schicht zum Senden der Pakete, d. h. eine physikalische Schicht. Als ein spezielles Beispiel wird ein geschichtetes Hochleistungs-Interconnect-Protokoll, wie hierin beschrieben, verwendet.
  • Als Nächstes wird unter Bezugnahme auf 4 eine beispielhafte Ausführungsform einer seriellen Punkt-zu-Punkt-Fabric veranschaulicht. Eine serielle Punkt-zu-Punkt-Verbindung kann einen beliebigen Sendepfad zum Senden von seriellen Daten aufweisen. In der gezeigten Ausführungsform kann eine Verbindung zwei differentiell angesteuerte Niederspannungssignalpaare aufweisen: ein Sendepaar 406/411 und ein Empfangspaar 412/407. Dementsprechend weist die Vorrichtung 405 eine Sendelogik 406 zum Senden von Daten an die Vorrichtung 410 und Empfangslogik 407 zum Empfangen von Daten von der Vorrichtung 410 auf. Mit anderen Worten sind zwei Sendepfade, d. h. die Pfade 416 und 417, und zwei Empfangspfade, d. h. die Pfade 418 und 419, in einigen Implementierungen einer Verbindung eingeschlossen.
  • Ein Sendepfad bezieht sich auf einen beliebigen Pfad zum Senden von Daten, wie beispielsweise eine Sendeleitung, eine Kupferleitung, eine optische Leitung, einen drahtlosen Kommunikationskanal, eine Infrarot-Kommunikationsverbindung oder einen anderen Kommunikationspfad. Eine Verbindung zwischen zwei Vorrichtungen, beispielsweise der Vorrichtung 405 und der Vorrichtung 410, wird als Link bezeichnet, wie beispielsweise Link 415. Eine Verbindung kann eine Lane unterstützen - wobei jede Lane einen Satz von differentiellen Signalpaaren repräsentiert (ein Paar zum Senden, ein Paar zum Empfangen). Um die Bandbreite zu skalieren, kann eine Verbindung mehrere mit xN bezeichnete Lanes aggregieren, wobei N eine unterstützte Verbindungsbreite ist, wie beispielsweise 1, 2, 4, 8, 12, 16, 32, 64 oder breiter.
  • Ein differentielles Paar kann sich auf zwei Sendepfade beziehen, wie beispielsweise die Leitungen 416 und 417, um differentielle Signale zu senden. Als ein Beispiel, wenn die Leitung 416 von einem niedrigen Spannungspegel zu einem hohen Spannungspegel umschaltet, d. h. eine steigende Flanke, kann die Leitung 417 von einem hohen Logikpegel zu einem niedrigen Logikpegel ansteuern, d. h. eine abfallende Flanke. Differentielle Signale zeigen potenziell bessere elektrische Eigenschaften, wie beispielsweise eine bessere Signalintegrität, d. h. Kreuzkopplung, Spannungsüberschwingung/-unterschwingung, Klingeln, neben anderen beispielhaften Vorteilen. Dies ermöglicht ein besseres Zeitsteuerungsfenster, das schnellere Sendefrequenzen ermöglicht.
  • INTEL® Accelerator Link (IAL) oder andere Technologien (z. B. GenZ, CAPI) definieren eine Allzweck-Speicherschnittstelle, die es ermöglicht, dass Speicher, der mit einer diskreten Vorrichtung, beispielsweise einem Beschleuniger, assoziiert ist, als kohärenter Speicher dient. In vielen Fällen können die diskrete Vorrichtung und der assoziierte Speicher eine verbundene Karte oder in einem von dem/den Kernprozessor(en) getrennten Gehäuse sein. Das Ergebnis der Einführung eines vorrichtungsassoziierten kohärenten Speichers ist, dass der Vorrichtungsspeicher nicht eng mit der CPU oder Plattform gekoppelt ist. Von einer plattformspezifischen Firmware kann nicht erwartet werden, dass sie die Vorrichtungsdetails kennt. Aus Gründen der Modularität und Interoperabilität müssen die Speicherinitialisierungszuständigkeiten fair zwischen plattformspezifischer Firmware und vorrichtungsspezifischer Firmware/Software aufgeteilt werden.
  • Diese Offenbarung beschreibt eine Erweiterung der bestehenden Intel-Accelerator-Link(IAL)-Architektur. IAL verwendet eine Kombination aus drei separaten Protokollen, die als IAL.io, IAL.cache und IAL.mem bekannt sind, um das Bias-Based-Coherency-Modell von IAL (im Folgenden „Coherence Bias Model“) zu implementieren. Das Coherence Bias Model kann eine hohe Leistung in Beschleunigern ermöglichen, während gleichzeitig der Kohärenz-Overhead minimiert wird.
  • IAL.io ist ein PCIe-kompatibles Protokoll für die Eingabe/Ausgabe (I/O, Input/Output), das von IAL für Funktionalitäten wie Discovery, Konfiguration, Initialisierung, Interrupts, Fehlerbehandlung, Adressübersetzungsdienst usw. verwendet wird. IAL.io ist von Natur aus nicht kohärent, unterstützt variable Nutzlastgrößen und folgt den PCIe-Ordnungsregeln. Die Funktionalität von IAL.io ist der von Intel On-Chip System Fabric (IOSF) ähnlich. IOSF ist ein zum Multiplexen neu gepacktes PCIe-Protokoll, das für die Discovery, den Registerzugriff, Interrupts usw. verwendet wird.
  • IAL.mem ist ein I/O-Protokoll, das vom Host für den Zugriff auf Daten aus einem an eine Vorrichtung angeschlossenen Speicher verwendet wird. IAL.mem ermöglicht, dass ein an eine Vorrichtung angeschlossener Speicher auf den systemkohärenten Adressraum abgebildet wird. IAL.mem weist auch eine Snoop- und Metadaten-Semantik auf, um die Kohärenz für vorrichtungsseitige Caches zu verwalten. IAL.mem ist ähnlich wie SMI3, das Speicherflüsse steuert.
  • IAL.cache ist ein I/O-Protokoll, das von der Vorrichtung verwendet wird, um Daten, die zwischengespeichert werden können, von einem an einem Host angeschlossenen Speicher anzufordern. IAL.cache ist nicht gepostet und ungeordnet und unterstützt Cache-Zeilengranulare Nutzlastgrößen. IAL.cache ist dem Intra-Die-Interconnect(IDI)-Protokoll ähnlich, das für kohärente Anforderungen und Speicherflüsse verwendet wird.
  • Diese Offenbarung verwendet an IAL angeschlossenen Speicher (IAL.mem-Protokoll) als eine beispielhafte Implementierung, kann jedoch auch auf andere Technologien erweitert werden, beispielsweise auf solche, die vom GenZ-Konsortium oder der CAPI- oder OpenCAPI-Spezifikation, CCIX, NVLink usw. verbreitet werden. IAL baut auf PCIe auf und fügt Unterstützung für einen kohärenten Speicheranschluss hinzu. Im Allgemeinen können die hierin beschriebenen Systeme, Vorrichtungen und Programme jedoch andere Typen von Eingabe/Ausgabe-Bussen verwenden, die das Anschließen von kohärentem Speicher ermöglichen.
  • 5 ist eine schematische Darstellung eines Verarbeitungssystems 500, das einen verbundenen Beschleuniger gemäß Ausführungsformen der vorliegenden Offenbarung aufweist. Das Verarbeitungssystem 500 kann eine Host-Vorrichtung 501 und eine verbundene Vorrichtung 530 aufweisen. Die verbundene Vorrichtung 530 kann eine diskrete Vorrichtung sein, die über ein IAL-basiertes Interconnect oder durch ein anderes ähnliches Interconnect verbunden ist. Die verbundene Vorrichtung 530 kann in ein und dasselbe Gehäuse wie die Host-Vorrichtung 501 integriert sein oder in einem separaten Gehäuse untergebracht sein.
  • Die Host-Vorrichtung 501 kann einen Prozessorkern 502 (als CPU 502 bezeichnet) aufweisen. Der Prozessorkern 502 kann einen oder mehrere Hardwareprozessoren aufweisen. Der Prozessorkern 502 kann mit dem Speichermodul 505 gekoppelt sein. Das Speichermodul 505 kann einen verschachtelten Double-Data-Rate(DDR)-Speicher, wie beispielsweise die Dual-Inline-Speichermodule DIMM1 506 und DIMM2 508, aufweisen, kann jedoch auch mehr Speicher und/oder andere Typen von Speicher aufweisen. Die Host-Vorrichtung 501 kann einen Speichercontroller 504 aufweisen, der in einer oder einer Kombination von Hardware, Software oder Firmware implementiert ist. Der Speichercontroller 504 kann Logikschaltungen aufweisen, um den Datenfluss zwischen der Host-Vorrichtung 501 und dem Speichermodul 505 zu verwalten.
  • Eine verbundene Vorrichtung 530 kann über ein Interconnect mit der Host-Vorrichtung 501 gekoppelt sein. Als ein Beispiel kann die verbundene Vorrichtung 530 die Beschleuniger ACC1 532 und ACC2 542 aufweisen. Der ACC1 532 kann einen Speichercontroller MC1 534 aufweisen, der einen kohärenten Speicher ACC1_MEM 536 steuern kann. Der ACC2 542 kann einen Speichercontroller MC2 544 aufweisen, der einen kohärenten Speicher ACC2_MEM 546 steuern kann. Die verbundene Vorrichtung 530 kann weitere Beschleuniger, Speicher usw. aufweisen. ACC1_MEM 536 und ACC2_MEM 546 können ein kohärenter Speicher sein, der vom Host-Prozessor verwendet wird; ähnlich kann das Speichermodul 505 auch ein kohärenter Speicher sein. ACC1_MEM 536 und ACC2_MEM 546 können einen Host-verwalteten Vorrichtungsspeicher (HDM, Host-Managed Device Memory) sein oder diesen aufweisen.
  • Die Host-Vorrichtung 501 kann Softwaremodule 520 zum Durchführen einer oder mehrerer Speicherinitialisierungsprozeduren aufweisen. Die Softwaremodule 520 können ein Betriebssystem (BS) 522, Plattformfirmware (FW) 524, einen oder mehrere BS-Treiber 526 und einen oder mehrere EFI-Treiber 528 aufweisen. Die Softwaremodule 520 können eine Logik aufweisen, die auf nichtflüchtigen maschinenlesbaren Medien ausgeführt ist, und können Befehle aufweisen, die bei einer Ausführung bewirken, dass das eine oder die mehreren Softwaremodule den kohärenten Speicher ACC1_MEM 536 und ACC2_MEM 546 initialisieren.
  • Beispielsweise kann die Plattformfirmware 524 die Größe des kohärenten Speichers ACC1_MEM 536 und ACC2_MEM 546 und grobe Eigenschaften des Speichers frühzeitig während des Hochfahrens über Standardhardwareregister oder unter Verwendung eines Designated Vendor-Specific Extended Capability Register (DVSEC) bestimmen. Die Plattformfirmware 524 bildet den Vorrichtungsspeicher ACC1_MEM 536 und ACC2_MEM 546 in kohärente Adressräume ab. Die Vorrichtungsfirmware oder -software 550 führt die Initialisierung des Vorrichtungsspeichers durch und signalisiert die Plattformfirmware 524 und/oder die Systemsoftware 520 (z. B. BS 522). Die Vorrichtungsfirmware 550 kommuniziert dann über das Softwareprotokoll detaillierte Speichereigenschaften an die Plattformfirmware 524 und/oder Systemsoftware 520 (z. B. BS 522).
  • 6 veranschaulicht ein Beispiel einer Betriebsumgebung 600, die für verschiedene Ausführungsformen repräsentativ sein kann. Die in 6 dargestellte Betriebsumgebung 600 kann eine Vorrichtung 602 aufweisen, die betriebsfähig ist, um Verarbeitungs- und/oder Speicherfähigkeiten bereitzustellen. Beispielsweise kann die Vorrichtung 602 ein Beschleuniger oder eine Prozessorvorrichtung sein, die kommunikativ mit einem Host 612 über ein Interconnect 650 gekoppelt ist, das ein einzelnes Interconnect, ein einzelner Bus, eine einzelne Trace usw. sein kann. Die Vorrichtung 602 und der Host 612 können über die Verbindung 650 kommunizieren, um zu ermöglichen, dass Daten und Nachrichten dazwischen übertragen werden. In einigen Ausführungsformen kann die Verbindung 650 betriebsfähig sein, um mehrere Protokolle und die Kommunikation von Daten und Nachrichten über die mehreren Interconnect-Protokolle zu unterstützen. Beispielsweise kann die Verbindung 650 verschiedene Interconnect-Protokolle unterstützen, einschließlich eines nicht kohärenten Interconnect-Protokolls, eines kohärenten Interconnect-Protokolls und eines Speicher-Interconnect-Protokolls, ohne darauf beschränkt zu sein. Nicht einschränkende Beispiele für unterstützte Interconnect-Protokolle können PCI, PCle, USB, IDI, IOSF, SMI, SMI3, IAL.io, IAL.cache und IAL.mem und/oder dergleichen einschließen. Beispielsweise kann die Verbindung 650 ein kohärentes Interconnect-Protokoll (beispielsweise IDI), ein Speicher-Interconnect-Protokoll (beispielsweise SMI3) und ein nicht kohärentes Interconnect-Protokoll (beispielsweise IOSF) unterstützen.
  • In Ausführungsformen kann die Vorrichtung 602 eine Beschleunigerlogik 604 mit Schaltungen 605 aufweisen. In einigen Fällen können die Beschleunigerlogik 604 und Schaltungen 605 Verarbeitungs- und Speicherfähigkeiten bereitstellen. In einigen Fällen können die Beschleunigerlogik 604 und Schaltungen 605 zusätzliche Verarbeitungsfähigkeiten in Verbindung mit den vom Host 612 bereitgestellten Verarbeitungsfähigkeiten bereitstellen. Beispiele für die Vorrichtung 602 können Produzent-Konsument-Vorrichtungen, Produzent-Konsument-Plus-Vorrichtungen, softwaregestützte Vorrichtungssspeichervorrichtungen, autonome Vorrichtungsspeichervorrichtungen und Giant-Cache-Vorrichtungen umfassen, wie zuvor erörtert. Die Beschleunigerlogik 604 und Schaltungen 605 können die Verarbeitungs- und Speicherfähigkeiten basierend auf der Vorrichtung bereitstellen. Beispielsweise können die Beschleunigerlogik 604 und Schaltungen 605 unter Verwendung von Interconnects miteinander kommunizieren, wobei beispielsweise ein kohärentes Interconnect-Protokoll (beispielsweise IDI) für verschiedene Funktionen verwendet wird, wie beispielsweise kohärente Anforderungen und Speicherflüsse mit dem Host 612 über die Schnittstellenlogik 606 und Schaltungen 607. Die Schnittstellenlogik 606 und Schaltungen 607 können basierend auf den Nachrichten und Daten für die Kommunikation ein Interconnect-Protokoll bestimmen. In einem anderen Beispiel können die Beschleunigerlogik 604 und Schaltungen 605 eine Kohärenzlogik aufweisen, die Bias-Modus-Informationen aufweist oder auf diese zugreift. Die Beschleunigerlogik 604 mit Kohärenzlogik kann die Zugriffs-Bias-Modus-Informationen und zugehörigen Nachrichten und Daten mit dem Host 612 unter Verwendung eines Speicher-Interconnect-Protokolls (beispielsweise SMI3) über die Schnittstellenlogik 606 und Schaltungen 607 kommunizieren. Die Schnittstellenlogik 606 und Schaltungen 607 können basierend auf den Daten und Nachrichten für die Kommunikation bestimmen, das Speicher-Interconnect-Protokoll zu verwenden.
  • Zusätzlich können die Schnittstellenlogik 606, die Schaltungen 607 oder ein anderer Teil der Vorrichtung 602 einen Rollover-Zähler zum Zählen eines Rollover-Werts aufweisen. Der Rollover-Wert ist eine Zählung, die von den Verbindungsschichten des Senders und Empfängers der Vorrichtung 602 (d. h. TX- und RX-Komponenten der Schnittstellenlogik 606 und Schaltungen 607) aufrechterhalten wird. Der Rollover-Wert ist eine Zählung diskretisierter Datenmengen, die mit einer Datenübertragung assoziiert sind.
  • In einigen Ausführungsformen können die Beschleunigerlogik 604 und Schaltungen 605 Befehle aufweisen und verarbeiten, die ein nicht kohärentes Interconnect nutzen, wie beispielsweise ein Fabric-basiertes Protokoll (beispielsweise IOSF) und/oder ein Peripheral-Component-Interconnect-Express(PCIe)-Protokoll. In verschiedenen Ausführungsformen kann ein nicht kohärentes Interconnect-Protokoll für verschiedene Funktionen genutzt werden, einschließlich Discovery, Registerzugriff (beispielsweise Register der Vorrichtung 602), Konfiguration, Initialisierung, Interrupts, Direktspeicherzugriff und/oder Adressübersetzungsdiensten (ATS, Address Translation Services), ohne darauf beschränkt zu sein. Man beachte, dass die Vorrichtung 602 verschiedene Beschleunigerlogik 604 und Schaltungen 605 zum Verarbeiten von Informationen aufweisen kann und auf dem Typ der Vorrichtung basieren kann, z. B. Produzent-Konsument-Vorrichtungen, Produzent-Konsument-Plus-Vorrichtungen, softwaregestützte Vorrichtungssspeichervorrichtungen, autonome Vorrichtungsspeichervorrichtungen und Giant-Cache-Vorrichtungen. Darüber hinaus und wie zuvor erörtert, können die Vorrichtung 602 einschließlich der Schnittstellenlogik 606, der Schaltungen 607, der Protokollwarteschlange(n) 609 und des Multiprotokoll-Multiplexers 608 abhängig vom Typ der Vorrichtung gemäß einem oder mehreren Protokollen, z. B. nicht kohärenten, kohärenten und Speicher-Interconnect-Protokollen, kommunizieren. Die Ausführungsformen sind nicht auf diese Weise beschränkt.
  • In verschiedenen Ausführungsformen kann der Host 612 dem Prozessor 105 ähnlich sein, wie in 1 erörtert, und weist ähnliche oder die gleichen Schaltungen auf, um eine ähnliche Funktionalität bereitzustellen. Der Host 612 kann betriebsfähig mit dem Hostspeicher 626 gekoppelt sein und kann eine Kohärenzlogik (oder Kohärenz- und Cache-Logik) 614 aufweisen, die eine Cachehierarchie aufweisen kann und einen Cache der niedrigeren Ebene (LLC, Lower Level Cache) aufweisen kann. Die Kohärenzlogik 614 kann unter Verwendung verschiedener Interconnects mit der Schnittstellenlogik 622 einschließlich Schaltungen 623 und einem oder mehreren Kernen 618a-n kommunizieren. In einigen Ausführungsformen kann die Kohärenzlogik 614 die Kommunikation über ein oder mehrere von einem kohärenten Interconnect-Protokoll und einem Speicher-Interconnect-Protokoll ermöglichen. In einigen Ausführungsformen kann der kohärente LLC eine Kombination aus wenigstens einem Teil des Hostspeichers 626 und Beschleunigerspeichers 610 aufweisen. Die Ausführungsformen sind nicht auf diese Weise beschränkt.
  • Der Host 612 kann eine Buslogik 616 aufweisen, die eine PCIe-Logik sein kann oder aufweisen kann. In verschiedenen Ausführungsformen kann die Buslogik 616 über Interconnects unter Verwendung eines nicht kohärenten Interconnect-Protokolls (beispielsweise IOSF) und/oder eines Peripheral-Component-Interconnect-Express(PCIe oder PCI-E)-Protokolls kommunizieren. In verschiedenen Ausführungsformen kann der Host 612 eine Mehrzahl von Kernen 618a-n aufweisen, die jeweils einen Cache aufweisen. In einigen Ausführungsformen können die Kerne 618a-n Intel® Architecture(IA)-Kerne aufweisen. Jeder der Kerne 618a-n kann über Interconnects mit der Kohärenzlogik 614 kommunizieren. In einigen Ausführungsformen können die mit den Kernen 618a-n gekoppelten Interconnects und die Kohärenz- und Cache-Logik 614 ein kohärentes Interconnect-Protokoll (beispielsweise IDI) unterstützen. In verschiedenen Ausführungsformen kann der Host-Prozessor eine Vorrichtung 620 aufweisen, die betriebsfähig ist, um mit der Buslogik 616 über ein Interconnect zu kommunizieren. In einigen Ausführungsformen kann die Vorrichtung 620 eine 1/0-Vorrichtung, wie beispielsweise eine PCIe-1/0-Vorrichtung, aufweisen.
  • In Ausführungsformen kann der Host 612 eine Schnittstellenlogik 622 und Schaltungen 623 aufweisen, um eine Multiprotokoll-Kommunikation zwischen den Komponenten des Hosts 612 und der Vorrichtung 602 zu ermöglichen. Die Schnittstellenlogik 622 und Schaltungen 623 können die Kommunikation von Nachrichten und Daten zwischen dem Host 612 und der Vorrichtung 602 gemäß einem oder mehreren Interconnect-Protokollen, z. B. einem nicht kohärenten Interconnect-Protokoll, einem kohärenten Interconnect-Protokoll und einem Speicher-Interconnect-Protokoll, dynamisch verarbeiten und ermöglichen. In Ausführungsformen können die Schnittstellenlogik 622 und Schaltungen 623 ein einzelnes Interconnect, eine einzelne Verbindung oder einen einzelnen Bus unterstützen, die in der Lage sind, Daten und Nachrichten gemäß der Mehrzahl von Interconnect-Protokollen dynamisch zu verarbeiten.
  • In einigen Ausführungsformen kann die Schnittstellenlogik 622 mit einem Multiprotokoll-Multiplexer 624 mit einer oder mehreren Protokollwarteschlangen 625 zum Senden und Empfangen von Nachrichten und Daten mit der Vorrichtung 602 mit dem Multiprotokoll-Multiplexer 608 und auch mit einer oder mehreren Protokollwarteschlangen 609 gekoppelt sein. Die Protokollwarteschlangen 609 und 625 können protokollspezifisch sein. Somit kann jedes Interconnect-Protokoll mit einer bestimmten Protokollwarteschlange assoziiert werden. Die Schnittstellenlogik 622 und Schaltungen 623 können Nachrichten und Daten verarbeiten, die unter Verwendung des Multiprotokoll-Multiplexers 624 von der Vorrichtung 602 empfangen und an die Vorrichtung 602 gesendet werden. Wenn beispielsweise eine Nachricht gesendet wird, können die Schnittstellenlogik 622 und Schaltungen 623 die Nachricht gemäß einem der Interconnect-Protokolle basierend auf der Nachricht verarbeiten. Die Schnittstellenlogik 622 und Schaltungen 623 können die Nachricht an den Multiprotokoll-Multiplexer 624 und einen Verbindungscontroller senden. Der Multiprotokoll-Multiplexer 624 oder Arbitrator kann die Nachricht in einer Protokollwarteschlange 625 speichern, die protokollspezifisch sein kann. Der Multiprotokoll-Multiplexer 624 und Verbindungscontroller können basierend auf der Ressourcenverfügbarkeit in protokollspezifischen Protokollwarteschlangen der Protokollwarteschlangen 609 am Multiprotokoll-Multiplexer 608 an der Vorrichtung 602 bestimmen, wann die Nachricht an die Vorrichtung 602 zu senden ist. Beim Empfangen einer Nachricht kann der Multiprotokoll-Multiplexer 624 die Nachricht basierend auf der Nachricht in eine protokollspezifische Warteschlange von Warteschlangen 625 platzieren. Die Schnittstellenlogik 622 und Schaltungen 623 können die Nachricht gemäß einem der Interconnect-Protokolle verarbeiten.
  • In Ausführungsformen können die Schnittstellenlogik 622 und Schaltungen 623 die Nachrichten und Daten zu und von der Vorrichtung 602 dynamisch verarbeiten. Beispielsweise können die Schnittstellenlogik 622 und Schaltungen 623 einen Nachrichtentyp für jede Nachricht bestimmen und bestimmen, welches Interconnect-Protokoll von einer Mehrzahl von Interconnect-Protokollen zum Verarbeiten jeder der Nachrichten verwendet wird. Zum Verarbeiten der Nachrichten können verschiedene Interconnect-Protokolle genutzt werden.
  • Zusätzlich können die Schnittstellenlogik 622, die Schaltungen 623 oder ein anderer Teil des Hosts 612 einen Rollover-Zähler zum Zählen eines Rollover-Werts aufweisen. Der Rollover-Wert ist eine Zählung, die von den Verbindungsschichten des Senders und Empfängers der Vorrichtung 612 (d. h. TX- und RX-Komponenten der Schnittstellenlogik 622 und Schaltungen 623) aufrechterhalten wird. Der Rollover-Wert ist eine Zählung diskretisierter Datenmengen, die mit einer Datenübertragung assoziiert sind.
  • In einem Beispiel kann die Schnittstellenlogik 622 eine Nachricht zum Kommunizieren über das Interconnect 650 erkennen. In Ausführungsformen kann die Nachricht von einem Kern 618 oder einer anderen 1/0-Vorrichtung 620 generiert worden sein und zur Kommunikation mit einer Vorrichtung 602 dienen. Die Schnittstellenlogik 622 kann einen Nachrichtentyp für die Nachricht bestimmen, wie beispielsweise einen nicht kohärenten Nachrichtentyp, einen kohärenten Nachrichtentyp und einen Speichernachrichtentyp. In einem speziellen Beispiel kann die Schnittstellenlogik 622 bestimmen, ob eine Nachricht, z. B. eine Anforderung, eine I/0-Anforderung oder eine Speicheranforderung für eine gekoppelte Vorrichtung basierend auf einem Lookup in einem Adressabbild ist. Falls eine mit der Nachricht assoziierte Adresse als eine I/0-Anforderung abgebildet wird, kann die Schnittstellenlogik 622 die Nachricht unter Verwendung eines nicht kohärenten Interconnect-Protokolls verarbeiten und die Nachricht an einen Verbindungscontroller und den Multiprotokoll-Multiplexer 624 als eine nicht kohärente Nachricht zur Kommunikation an die gekoppelte Vorrichtung senden. Der Multiprotokoll-Multiplexer 624 kann die Nachricht in einer für ein Interconnect-Protokoll spezifischen Warteschlange von Protokollwarteschlangen 625 speichern und veranlassen, dass die Nachricht an die Vorrichtung 602 gesendet wird, wenn Ressourcen bei der Vorrichtung 602 verfügbar sind. In einem anderen Beispiel kann die Schnittstellenlogik 622 bestimmen, dass eine mit der Nachricht assoziierte Adresse anzeigt, dass die Nachricht eine Speicheranforderung ist, basierend auf einem Lookup in der Adresstabelle. Die Schnittstellenlogik 622 kann die Nachricht unter Verwendung des Speicher-Interconnect-Protokolls verarbeiten und die Nachricht an den Verbindungscontroller und Multiprotokoll-Multiplexer 624 zur Kommunikation an die gekoppelte Vorrichtung 602 senden. Der Multiprotokoll-Multiplexer 624 kann die Nachricht in einer für ein Interconnect-Protokoll spezifischen Warteschlange von Protokollwarteschlangen 625 speichern und veranlassen, dass die Nachricht an die Vorrichtung 602 gesendet wird, wenn Ressourcen bei der Vorrichtung 602 verfügbar sind.
  • In einem anderen Beispiel kann die Schnittstellenlogik 622 bestimmen, dass eine Nachricht eine kohärente Nachricht ist, basierend auf einer oder mehreren durchgeführten Cache-Kohärenz- und Speicherzugriffsaktionen. Insbesondere kann der Host 612 eine kohärente Nachricht oder Anforderung empfangen, die von der gekoppelten Vorrichtung 602 bezogen wird. Eine oder mehrere der Cache-Kohärenz- und Speicherzugriffsaktionen können durchgeführt werden, um die Nachricht zu verarbeiten, und basierend auf diesen Aktionen kann die Schnittstellenlogik 622 bestimmen, dass eine Nachricht, die in Reaktion auf die Anforderung gesendet wird, eine kohärente Nachricht ist. Die Schnittstellenlogik 622 kann die Nachricht gemäß dem koheränten Interconnect-Protokoll verarbeiten und die koheränte Nachricht an den Verbindungscontroller und Multiprotokoll-Multiplexer 624 zum Senden an die gekoppelte Vorrichtung 602 senden. Der Multiprotokoll-Multiplexer 624 kann die Nachricht in einer für ein Interconnect-Protokoll spezifischen Warteschlange von Warteschlangen 625 speichern und veranlassen, dass die Nachricht an die Vorrichtung 602 gesendet wird, wenn Ressourcen bei der Vorrichtung 602 verfügbar sind. Die Ausführungsformen sind nicht auf diese Weise beschränkt.
  • In einigen Ausführungsformen kann die Schnittstellenlogik 622 einen Nachrichtentyp einer Nachricht basierend auf einer mit der Nachricht assoziierten Adresse, einer durch die Nachricht veranlassten Aktion, Informationen innerhalb der Nachricht, z. B. einer Identifizierung, einer Quelle der Nachricht, einem Ziel einer Nachricht und so weiter, bestimmen. Die Schnittstellenlogik 622 kann empfangene Nachrichten basierend auf der Bestimmung verarbeiten und die Nachricht zur weiteren Verarbeitung an die entsprechende Komponente vom Host 612 senden. Die Schnittstellenlogik 622 kann eine an die Vorrichtung 602 zu sendende Nachricht basierend auf der Bestimmung verarbeiten und die Nachricht zur weiteren Verarbeitung an einen Verbindungscontroller (nicht gezeigt) und Multiprotokoll-Multiplexer 624 senden. Die Nachrichtentypen können für Nachrichten bestimmt werden, die sowohl vom Host 612 gesendet als auch von diesem empfangen werden.
  • Aktuelle IAL-Architekturen können eine Kombination aus drei separaten Protokollen, die als IAL.io, IAL.cache und IAL.mem bekannt sind, verwenden, um das Bias-Based-Coherency-Modell von IAL (fortan als „Coherence Bias Model“ bezeichnet) zu implementieren. Das Coherence Bias Model kann Beschleunigern ermöglichen, eine hohe Leistung zu erreichen, während gleichzeitig der Kohärenz-Overhead minimiert wird.
  • In Ausführungsformen kann die IAL-Architektur wenigstens fünf Typen von Beschleunigermodellen unterstützen, wie nachstehend definiert.
    Beschleunigerklasse Beschreibung Beispiele
    Produzent-Konsument Grundlegende PCIe-Vorrichtungen Netzbeschleuniger Krypto Komprimierung
    Produzent-Konsument - Plus PCIe-Vorrichtungen mit zusätzlicher Funktionalität Beispiel: Spezielle Datenoperationen wie Atomik Storm Lake Data Center Fabric Infiniband HBA
    SW-gestützter Vorrichtungsspeicher Beschleuniger mit angeschlossenem Speicher Verwendungen, bei denen Software-„Datenplatzierung“ zweckmäßig ist Diskrete FPGA Grafik
    Autonomer Vorrichtungsspeicher Beschleuniger mit angeschlossenem Speicher Dense Computation Offload
    Verwendungen, bei denen Software-„Datenplatzierung“ nicht zweckmäßig ist GPGPU
    Giant-Cache Beschleuniger mit angeschlossenem Speicher Dense Computation Offload
    Verwendungen, bei denen der Daten-Footprint größer als der angeschlossene Speicher ist GPGPU
  • Diese Offenbarung beschreibt Systeme, Vorrichtungen und Verfahren für Verbindungsschichten mit hoher Effizienz (z. B. > 90 %) für kohärente Datenübertragungen in Cache-Zeilen-Größe (z. B. 64B). Diese Effizienz maximiert die erreichbare Verbindungsbandbreite, während gleichzeitig eine niedrige Latenz aufrechterhalten wird. Basierend auf Aspekten der vorliegenden Offenbarung kann IAL aufgrund eines oder mehrerer der folgenden 4 Faktoren eine hohe Effizienz und niedrige Latenz erreichen:
    • 1. Hohe Breite der Flusssteuereinheit (Flit, Flow Control Unit): IAL-Flits können unabhängig von der Verbindungsbreite der Eingabe/Ausgabe (I/O, Input/Output) auf 528 Bit bemessen werden, wodurch sich die Kosten der zyklischen Redundanzprüfung (CRC, Cyclic Redundancy Checking) über eine größere Nutzlast amortisieren.
    • 2. Sub-Flit-Multiplexing mehrerer Protokolle: Es kann die Fähigkeit genutzt werden, Nachrichten von mehreren Protokollen auf derselben Flit dynamisch zu mischen und abzugleichen.
    • 3. All-Data-Flit-Formate: Es kann die Fähigkeit genutzt werden, Flits ohne Header zu senden.
    • 4. Multi-Data-Header: Es kann die Fähigkeit genutzt werden, mehrere nicht miteinander in Beziehung stehende Datenübertragungen miteinander zu verketten, wodurch der Header-Overhead für jede Übertragung amortisiert wird.
  • Die Verbindungsbandbreite ist ein Leistungsindex, anhand dessen konkurrierende Standards bewertet werden können. I/O-Standards, wie beispielsweise Peripheral Component Interconnect Express (PCIe), können Nutzlastgrößen von bis zu 4 Kilobyte (KB) unterstützen, wodurch der I/O-Standard eine Effizienz von etwa 95 % erreicht. Die Nutzlastgrößen kohärenter Transporte können jedoch auf eine viel kleinere Cache-Zeilen-Granularität beschränkt sein (64B). Dies kann ein Begrenzer für die Verbindungseffizienz und maximal erreichbare Bandbreite sein. Die hierin beschriebenen Techniken können die Lücke zwischen den PCIe-Levels der Verbindungseffizienz und kohärenten Transporten erheblich reduzieren. Hocheffiziente Verbindungen, wie die hierin beschriebenen, können in bandbreitenempfindlichen Anwendungen verwendet werden, wie beispielsweise Direktspeicherzugriff (DMA, Direct Memory Access). In der folgenden Tabelle kann sich BW auf die Bandbreite beziehen, und GT/s kann sich auf Gigatransfers pro Sekunde beziehen.
    Übertragungstyp Verbindungseffizienz BW (32-GT/s-Verbindung)
    IAL.$ - Host-zu-Vorrichtung-Daten 94% 60,4
    IAL.$ - Vorrichtung-zu-Host-Daten 94% 60,4
    IAL.Mem - Slave-zu-Master-Daten 91 % 58,5
    IAL.Mem - Master-zu-Slave-Daten 80% 51,2
  • Feste Flit-Breite mit 16-Bit-CRC
  • Ein Beispiel des generischen Formats der IAL.cache- und IAL.mem-Flusssteuereinheit (Flit, Flow Control Unit) ist in 7A gezeigt. 7A ist eine schematische Darstellung eines beispielhaften Flit-Formats 700 mit einer festen Breite und einer 16-Bit zyklischen Redundanzprüfung (CRC, Cyclic Redundancy Check) gemäß Ausführungsformen der vorliegenden Offenbarung. In Ausführungsformen kann die IAL. cache- und IAL.mem-Flit-Größe auf 528 Bit festgelegt werden, von denen 512 Bit Nutzlast 702 sind und 16 Bit eine rollierende zyklische Redundanzprüfung (CRC, Cyclic Redundancy Check) 704 sind. Die Flit-Größe kann sich unabhängig von der Breite der physikalischen Verbindung oder Bifurkation nicht ändern. Die feste Flit-Größe mit 16 CRC-Bits amortisiert die CRC-Kosten über eine große Nutzlast, ohne die Fehlererkennungs- oder -korrekturfähigkeit zu beeinträchtigen. Alle Einzel-, Doppel- und Dreifach-Bit-Fehler und einige 4-Bit-Fehler können erkannt und unter Verwendung von Replay korrigiert werden.
  • Sub-Flit-Multiplexing mehrerer Protokolle
  • Wie aus 7A ersichtlich ist, kann die Flit in gleich große Slots (z. B. Header-Slot 712 und generische Slots 714, 716 und 718) unterteilt werden. Der Header-Slot 712 kann Header-Informationen enthalten, einschließlich der Definition von Nachrichten auf Protokollebene, die im Rest des Header-Slots sowie den anderen Slots in der Flit enthalten sind. Die IAL.cache- und IAL.mem-Protokolle können sich eine gemeinsame Verbindungsschicht teilen. Nachrichten und Datenübertragungen von beiden Protokollen können in einer gemeinsam genutzten Flit in einem dynamischen Packformat gemultiplext werden, das ein gemeinsames Nutzen niedriger Granularität von Flit-Slots ermöglicht und gleichzeitig flexibel genug ist, dass ein einzelnes aktives Protokoll die volle Bandbreite erhält. Da Nachrichten von den beiden Protokollen in eine Sub-Slot-Granularität gepackt werden, kann dies eine maximale Flit-Nutzung ermöglichen.
  • Kurz zurückkehrend zu 6 kann der Multiprotokoll-MUX 608 verwendet werden, um Daten und Nachrichten sowohl von den IAL.cache- als auch IAL.mem-Protokollen (oder in anderen Ausführungsformen den IDI- und SMI3+-Protokollen oder anderen ähnlichen Protokollen) zu multiplexen.
  • All-Data-Flit-Formate
  • Für hocheffiziente Datenübertragungen können IAL.cache und IAL.mem ein Flit-Format ohne Header-Slot verwenden, wie in 7B gezeigt. 7B ist eine schematische Darstellung einer All-Data-Flit 750 gemäß Ausführungsformen der vorliegenden Offenbarung. Jeder Slot 762, 764, 766 und 768 enthält nur Daten und trägt keinen Header, und abgesehen von CRC kann die All-Data-Flit 750 die Verbindungsnutzung maximieren. Da der Empfänger jedoch keinen Header zum Decodieren der All-Data-Flit 750 empfängt, wird hierin für diesen Zweck ein Verfolgungsmechanismus beschrieben. Der Verfolgungsmechanismus kann auf dem Konzept des „Rollovers“ basieren. Ein Rollover ist eine Zählung von Daten-Chunks, die mit einer gegebenen Übertragung assoziiert sind und die sowohl von den Sender(Tx)- als auch Empfänger(Rx)-Verbindungsschichten aufrechterhalten werden können. Immer wenn der Tx 512b an zu sendenden Daten aufweist, wie durch eine Rollover-Zählung angezeigt, kann der Tx eine All-Data-Flit 750 senden. Da der Rx die empfangenen Nachrichten verfolgt, kann der Rx ähnlich einen Shadow der Tx-Rollover-Zählung aufrechterhalten. Unter Verwendung dieser Zählung kann er deterministisch wissen, wann eine All-Data-Flit 750 erwartet wird. Die Tx- und Rx-Komponenten können Teil der Schnittstellenhardware und -software sein, wie beispielsweise die Schnittstellenlogik 606 und die Schnittstellenlogik 622.
  • Ein Empfänger (Rx) empfängt eine Flit mit nichts außer Daten (d. h. eine All-Data-Flit ohne Header-Informationen). Der Rx muss einige Informationen haben, die dem Empfänger helfen zu verstehen, was er empfängt. Der Rx hält einen Rollover aufrecht, der eine Zählung ist, die sowohl von rx als auch von tx der Anzahl von Daten-Chunks beibehalten wird, die mit einer gegebenen Übertragung assoziiert sind. Immer wenn der Tx 512b an zu sendenden Daten aufweist, wie durch die Tx-Rollover-Zählung angezeigt, sendet der Tx eine All-Data-Flit 750. Aufgrund dieser Regel verfolgt der Rx Nachrichten, die er empfängt, z. B. durch Aufrechterhalten einer Shadow-Zählung des Tx-Rollovers. Der Rx kann ein Rollover verwenden, um zwischen einer vorherigen Übertragung, die einen Header enthielt, und einer nachfolgenden Übertragung, die eine All-Data-Flit ist, zu unterscheiden. Auf diese Weise kann ein Rx eine All-Data-Flit ohne zusätzliche Informationen decodieren. Die Rollover-Zählung ändert sich dynamisch, wenn die Daten über die Verbindung zwischen einem Tx und dem Rx übertragen werden.
  • Während Replay-Szenarien (beispielsweise aufgrund eines CRC-Fehlers) muss eine Steuer-Flit möglicherweise von einer All-Data-Flit unterschieden werden. Dies kann durch Erzeugen von Sequenzen von Steuer-Flits erfolgen, die der Empfänger ohne Aliasing-Möglichkeit decodieren kann. Beispielsweise kann eine Sequenz oder Reihe von Steuer-Flits durch den Rx als ein Replay-Szenario interpretiert werden.
  • Multi-Data-Header(MDH)-Flits
  • 8A ist eine schematische Darstellung einer beispielhaften Flit-Packumgebung 800 gemäß Ausführungsformen der vorliegenden Offenbarung. In Ausführungsformen kann die IAL.cache- und IAL.mem-Verbindungsschicht die Fähigkeit aufweisen, mehrere All-Data-Flits miteinander zu verketten. Dies kann für Daten-Streaming-Verwendungen, wie beispielsweise große DMA-Übertragungen, nützlich sein. Das Konzept besteht hier darin, dass die Daten-Header, die mit mehreren separaten Übertragungen assoziiert sind, eng in einen gemeinsamen Header-Slot gepackt werden können. Danach können alle nachfolgenden Slots und Flits nur die Daten enthalten, die mit diesen Headern assoziiert sind. Dies kann den Overhead der Header-Informationen über eine viel größere Nutzlast amortisieren. Ein Beispiel hierfür ist nachstehend diagrammatisch gezeigt. Jedes „DH“ repräsentiert einen Daten-Header, und jedes „DC“ repräsentiert eine 16-Byte-Übertragung, die mit dem Header assoziiert ist.
  • 8A veranschaulicht einen Satz von Cache-Daten-Arrays 802 und Mem-Daten-Arrays 812. Die Cache-Daten-Arrays 802 weisen ein Cache-Daten-Header-Array 804 und 4x16B-Cache-Daten-Chunk-Arrays 806 auf. Die Mem-Daten-Arrays 812 weisen ein Mem-Daten-Header-Array 814 und 4x16B-Mem-Daten-Chunk-Arrays 816 auf. Das Cache-Daten-Header-Array 804 und das Mem-Daten-Header-Array 814 können jeweils Datentransaktionsinformationen akkumulieren und können abhängig von der Anzahl von vollständigen Cache-Zeilen von Daten, die in ihnen vorhanden sind, entweder eine „Anstehend“- oder „Mehrere anstehend“-Nachricht generieren. Das Cache-Daten-Header-Array 804 und das Mem-Daten-Header-Array 814 können eine „Anstehend“- oder „Mehrere anstehend“-Nachricht an eine Flit-Packentscheidungslogik 820 senden. Die Flit-Packentscheidungslogik 820 (oder Flit-Packer 820) kann in Hardware, Software oder einer Kombination von Hardware und Software implementiert werden.
  • Der Flit Packer 820 kann die Semantik optimieren, so dass mehrere Daten-Header zusammen gepackt werden können. Der Flit-Packer 820 kann von den empfangenen Header-Informationen vom Cache-Daten-Header-Array 804 und Mem-Daten-Header-Array 814 in Multi-Data-Header(MDH)-Slot-Formattypen übersetzen, die zum Tragen mehrerer Daten-Header definiert sind. Ein Beispiel eines MDH-Slot-Formats ist in Flit-ID 0 852 in 8B gezeigt, die Daten-Header (DH0, DH1, DH2 und DH3) einschließt. Der Flit-Packer 820 kann dann die Cache- und Mem-Daten-Chunks in freie Slots basierend auf der Anordnung der Header innerhalb des Header-Slots packen. In einigen Fällen sind die Flits All-Data-Flits. Beispielsweise ist die Flit 0 852 eine Flit mit Header in 8B, die den MDH mit den Headern DH0, DH1, DH2 und DH3 sowie DC0_0, DC0_1 und DC0_2 aufweist. Flit 1 854a ist eine All-Data-Flit, die den Dateninhalt DC0_3, DC1_0, DC1_1 und DC1_2 aufweist. Weitere Details zu 8B werden nachstehend beschrieben.
  • Abhängig von der Anzahl der gepackten Daten-Header muss der Flit-Packer 4x16B-Daten-Chunk-Übertragungen planen, die mit den Daten-Headern assoziiert sind, während ihre Rangordnung beibehalten wird. Die Arrays sind so konstruiert, dass gleichzeitige Zugriffsfähigkeiten für bis zu 4 Daten-Header und individuelle Steuerbarkeit zum Lesen und Steuern von jedem der 4x16B-Daten-Chunks möglich sind.
  • Verkettete Datenübertragungen können zu einer oder mehreren All-Data-Flits führen, die über die Verbindung gesendet werden müssen. Ein Fernempfänger muss das MDH-Slot-Format decodieren und einen Rollover-Zähler aufrechterhalten, um zu bestimmen, wie viele All-Data-Flits der Flit folgen würden, die Daten-Header-Informationen enthält.
  • 8B-E veranschaulichen die beispielhaften Flit-Package-Szenarien 850, 860, 870 und 880 gemäß Ausführungsformen der vorliegenden Offenbarung. Die in 8B-E gezeigten Beispiele sind beispielhaft und können angewendet werden, um eine Anzahl von Daten-Headern, die zusammen gepackt werden können, sowie ihre Position (Slot-Nr.) innerhalb der Flit abzudecken.
  • 8B veranschaulicht ein erstes beispielhaftes Flit-Packaging-Szenario 850 gemäß Ausführungsformen der vorliegenden Offenbarung. In diesem ersten Beispiel packt ein Sender Header und Chunks von Daten in Flits, die miteinander verkettet sind. Der Sender kann den Flit-Packer 820 verwenden, um vier Daten-Header (DH0, DH1, DH2 und DH3) in einen einzelnen Slot einer Flit mit Header (in diesem Fall Slot 0 von Flit 0 852) zu packen. Flit 0 852 ist eine Flit mit Header in 8B, die den MDH mit den Headern DH0, DH1, DH2 und DH3 in Slot 0 sowie DC0_0 in Slot 1, DC0 _1 in Slot 2 und DC0 2 in Slot 3 aufweist. Flit 1 854a ist eine All-Data-Flit, die den Dateninhalt DC0_3, DC1_0, DC1_1 und DC1_2 jeweils in Slots 0-3 aufweist. Flit 2 854b und Flit 3 854c sind auch All-Data-Flits, ähnlich wie Flit 1 854a. Flit 4 856 ist eine Flit mit Header, die andere Txn-Typen in verschiedenen Slots sowie den Rest der DC3-Daten (DC3 3) in Slot 1 aufweist.
  • 8C veranschaulicht ein zweites beispielhaftes Flit-Packaging-Szenario 860 gemäß Ausführungsformen der vorliegenden Offenbarung. In diesem zweiten Beispiel packt ein Sender Header und Chunks von Daten in Flits, die miteinander verkettet sind. Der Sender kann den Flit-Packer 820 verwenden, um zwei Daten-Header (DH0 und DH1) in einen einzelnen Slot einer Flit mit Header (in diesem Fall Slot 0 von Flit 0 862) zu packen. Flit 0 862 ist eine Flit mit Header in 8C, die den MDH mit den Headern DH0 und DH1 in Slot 0 sowie DC0 0 in Slot 1, DC0_1 in Slot 2 und DC0_2 in Slot 3 aufweist. Flit 1 864 ist eine All-Data-Flit, die den Dateninhalt DC0_3, DC1_0, DC1_1 und DC1_2 jeweils in Slots 0-3 aufweist. Flit 3 866 ist eine Flit mit Header, die andere Txn-Typen in verschiedenen Slots sowie den Rest der DC1-Daten (DC1_3) in Slot 1 aufweist.
  • 8D veranschaulicht ein erstes beispielhaftes Flit-Packaging-Szenario 870 gemäß Ausführungsformen der vorliegenden Offenbarung. In diesem dritten Beispiel packt ein Sender Header und Chunks von Daten in Flits, die miteinander verkettet sind. Der Sender kann den Flit-Packer 820 verwenden, um vier Daten-Header (DH0, DH1, DH2 und DH3) in einen einzelnen Slot einer Flit mit Header (in diesem Fall Slot 2 von Flit 0 872) zu packen. Flit 0 852 ist eine Flit mit Header in 8D, die den MDH mit den Headern DH0, DH1, DH2 und DH3 in Slot 2 sowie DC0 0 in Slot 3 aufweist. Andere Txn-Daten können in Slots 0 und 1 sein. Flit 1 874a ist eine All-Data-Flit, die den Dateninhalt DC0_1, DC0_2, DC0_3 und DC1_0 jeweils in Slots 0-3 aufweist. Flit 2 874b und Flit 3 874c sind auch All-Data-Flits, ähnlich wie Flit 1 874a. Flit 4 876 ist eine Flit mit Header, die andere Txn-Typen in Slot 0 sowie DC3_1 in Slot 1, DC3_2 in Slot 2 und DC3_3 in Slot 3 aufweist.
  • 8E veranschaulicht ein zweites beispielhaftes Flit-Packaging-Szenario 880 gemäß Ausführungsformen der vorliegenden Offenbarung. In diesem zweiten Beispiel packt ein Sender Header und Chunks von Daten in Flits, die miteinander verkettet sind. Der Sender kann den Flit-Packer 820 verwenden, um zwei Daten-Header (DH0 und DH1) in einen einzelnen Slot einer Flit mit Header (in diesem Fall Slot 2 von Flit 0 882) zu packen. Flit 0 882 ist eine Flit mit Header in 8E, die den MDH mit den Headern DH0 und DH1 in Slot 2 sowie DC0 0 in Slot 3 aufweist. Andere Txn-Daten können in Slots 0 und 1 sein. Flit 1 884 ist eine All-Data-Flit, die den Dateninhalt DC0_1, DC0_2, DC0_3 und DC1_0 jeweils in Slots 0-3 aufweist. Flit 3 886 ist eine Flit mit Header, die andere Txn-Typen in Slot 0 sowie DC1_1 in Slot 1, DC1_2 in Slot 2 und DC1_3 in Slot 3 aufweist.
  • 9A ist ein Prozessflussdiagramm 900 zum Packen und Decodieren von verketteten Flits, die wenigstens eine All-Data-Flit gemäß Ausführungsformen der vorliegenden Offenbarung aufweist. Eine Verbindungsschichtvorrichtung kann erste Daten identifizieren, die in einem ersten Protokollformat empfangen werden (902). Die Verbindungsschichtvorrichtung kann zweite Daten identifizieren, die in einem zweiten Protokollformat empfangen werden (904). Wenigstens ein Teil der ersten Daten kann mit wenigstens einem Teil der zweiten Daten in ein erstes einzelnes Steuerfluss-Package gemultiplext werden (906). Wenigstens ein anderer Teil der ersten Daten kann mit wenigstens einem anderen Teil der zweiten Daten in ein zweites einzelnes Steuerfluss-Package gemultiplext werden (908). Die ersten und zweiten einzelnen Steuerfluss-Packages können verkettet werden (910). Die verketteten ersten und zweiten einzelnen Steuerfluss-Packages können gesendet werden (912).
  • 9B ist ein Prozessflussdiagramm 950 zum Packaging und Decodieren eines All-Data-Packages gemäß Ausführungsformen der vorliegenden Offenbarung. Ein Senderelement kann bestimmen, dass ein Sender eine vorbestimmte Datenmenge zum Senden aufweist, basierend auf einer Zählung (952). Das Senderelement kann Header-Informationen für die Daten in einen einzelnen Slot eines Steuerfluss-Packages packen (954). Das Senderelement kann die vorbestimmte Datenmenge in ein Package packen, das keinen Header aufweist, und das Package an einen Empfänger senden (956).
  • Ein Empfängerelement kann das Package vom Sender empfangen (958). Das Empfängerelement kann bestimmen, dass das Package ein All-Data-Package ist, basierend auf einer Shadow-Zählung, die mit dem Empfänger aufrechterhalten wird (960). Der Empfänger kann das All-Data-Package decodieren (962).
  • 10A-14 sind Blockschaltbilder von beispielhaften Computerarchitekturen. Andere in der Technik bekannte Systemdesigns und Konfigurationen für Laptops, Desktops, Handheld-PCs, persönliche digitale Assistenten, Engineering-Arbeitsstationen, Server, Netzvorrichtungen, Netz-Hubs, Schalter, eingebettete Prozessoren, digitale Signalprozessoren (DSPs), Grafikvorrichtungen, Videospielvorrichtungen, Set-Top-Boxen, Mikrocontroller, Mobiltelefone, tragbare Mediaplayer, Handheld-Vorrichtungen und verschiedene andere elektronische Vorrichtungen sind auch geeignet, um die in dieser Offenbarung beschriebenen Verfahren durchzuführen. Im Allgemeinen sind eine große Vielzahl von Systemen oder elektronischen Vorrichtungen, die in der Lage sind, einen Prozessor und/oder andere Ausführungslogik, wie hierin offenbart, zu integrieren, allgemein geeignet.
  • 10A ist ein Blockschaltbild eines Prozessors 1000, der gemäß verschiedenen Ausführungsformen mehr als einen Kern aufweisen kann, einen integrierten Speichercontroller aufweisen kann und integrierte Grafik aufweisen kann. Die Kästchen mit durchgezogenen Linien in 10A veranschaulichen einen Prozessor 1000 mit einem einzelnen Kern 1002A, einem Systemagenten 1010 und einem Satz von einer oder mehreren Buscontrollereinheiten 1016; während die optionale Hinzufügung der Kästchen mit gestrichelten Linien einen alternativen Prozessor 1000 mit mehreren Kernen 1002A-N, einem Satz von einer oder mehreren integrierten Speichercontrollereinheiten 1014 in der Systemagenteinheit 1010 und Spezialzwecklogik 1008 veranschaulicht.
  • Somit können unterschiedliche Implementierungen des Prozessors 1000 Folgendes umfassen: 1) eine CPU mit der Spezialzwecklogik 1008, bei der es sich um integrierte grafische und/oder wissenschaftliche (Durchsatz-) Logik handelt (die einen oder mehrere Kerne aufweisen kann), und die Kerne 1002A-N, bei denen es sich um einen oder mehrere Allzweckkerne handelt (z. B. Allzweck-In-Order-Kerne, Allzweck-Out-of-Order-Kerne oder eine Kombination der beiden); 2) einen Coprozessor mit den Kernen 1002A-N, bei denen es sich um eine große Anzahl von Spezialzweckkernen handelt, die primär für grafische und/oder wissenschaftliche (Durchsatz-) Logik beabsichtigt sind; und 3) einen Coprozessor mit den Kernen 1002A-N, bei denen es sich um eine große Anzahl von Allzweck-In-Order-Kernen handelt. Somit kann der Prozessor 1000 ein Allzweckprozessor, Coprozessor oder Spezialzweckprozessor sein, wie beispielsweise ein Netz- oder Kommunikationsprozessor, eine Komprimierungs- und/oder Dekomprimierungs-Engine, ein Grafikprozessor, eine Allzweck-Grafikverarbeitungseinheit (GPGPU, General Purpose Graphics Processing Unit), ein Coprozessor mit hohem Durchsatz und vielen integrierten Kernen (MIC, Many Integrated Cores) (der z. B. 30 oder mehr Kerne aufweist), ein eingebetteter Prozessor oder andere feste oder konfigurierbare Logik, die logische Operationen durchführt. Der Prozessor kann auf einem oder mehreren Chips implementiert sein. Der Prozessor 1000 kann ein Teil von einem oder mehreren Substraten sein und/oder auf einem oder mehreren Substraten implementiert sein, und zwar unter Verwendung von jeder einer Reihe von Prozesstechnologien, wie beispielsweise BiCMOS, CMOS oder NMOS.
  • In verschiedenen Ausführungsformen kann ein Prozessor eine beliebige Anzahl von Verarbeitungselementen aufweisen, die symmetrisch oder asymmetrisch sein können. In einer Ausführungsform bezieht sich ein Verarbeitungselement auf Hardware oder Logik, um einen Software-Thread zu unterstützen. Beispiele für Hardwareverarbeitungselemente umfassen: eine Thread-Einheit, einen Thread-Slot, einen Thread, eine Prozesseinheit, einen Kontext, eine Kontexteinheit, einen logischen Prozessor, einen Hardware-Thread, einen Kern und/oder ein beliebiges anderes Element, das in der Lage ist, einen Zustand für einen Prozessor zu halten, wie beispielsweise einen Ausführungszustand oder Architekturzustand. Mit anderen Worten bezieht sich ein Verarbeitungselement in einer Ausführungsform auf beliebige Hardware, die in der Lage ist, unabhängig mit Code assoziiert zu sein, wie beispielsweise einem Software-Thread, einem Betriebssystem, einer Anwendung oder einem anderen Code. Ein physikalischer Prozessor (oder Prozessorsockel) bezieht sich typischerweise auf eine integrierte Schaltung, die potenziell eine beliebige Anzahl von anderen Verarbeitungselementen, wie beispielsweise Kerne oder Hardware-Threads, aufweist.
  • Ein Kern kann sich auf eine Logik beziehen, die auf einer integrierten Schaltung angeordnet ist, die in der Lage ist, einen unabhängigen Architekturzustand aufrechtzuerhalten, wobei jeder unabhängig aufrechterhaltene Architekturzustand mit wenigstens einigen dedizierten Ausführungsressourcen assoziiert ist. Ein Hardware-Thread kann sich auf eine beliebige Logik beziehen, die auf einer integrierten Schaltung angeordnet ist, die in der Lage ist, einen unabhängigen Architekturzustand aufrechtzuerhalten, wobei sich die unabhängig aufrechterhaltenen Architekturzustände den Zugriff auf Ausführungsressourcen teilen. Wie ersichtlich ist, überschneidet sich die Linie zwischen der Nomenklatur eines Hardware-Threads und eines Kerns, wenn bestimmte Ressourcen gemeinsam genutzt werden und andere mit einem Architekturzustand assoziiert sind. Dennoch werden ein Kern und ein Hardwarethread oftmals von einem Betriebssystem als einzelne logische Prozessoren betrachtet, wobei das Betriebssystem in der Lage ist, Operationen auf jedem logischen Prozessor individuell zu planen.
  • Die Speicherhierarchie weist eine oder mehrere Cache-Ebenen innerhalb der Kerne, einen Satz von einer oder mehreren gemeinsam genutzten Cache-Einheiten 1006 und externen Speicher (nicht gezeigt) gekoppelt mit dem Satz von integrierten Speichercontrollereinheiten 1014 auf. Der Satz gemeinsam genutzter Cache-Einheiten 1006 kann einen oder mehrere Caches der mittleren Ebene, wie beispielsweise Level 2 (L2), Level 3 (L3), Level 4 (L4) oder andere Cache-Ebenen, einen Last-Level-Cache (LLC) und/oder Kombinationen davon aufweisen. Obgleich in einer Ausführungsform eine ringbasierte Interconnect-Einheit 1012 die Spezialzwecklogik (z. B. integrierte Grafiklogik) 1008, den Satz gemeinsam genutzter Cache-Einheiten 1006 und die Systemagenteinheit 1010/integrierte(n) Speichercontrollereinheit(en) 1014 miteinander verbindet, können alternative Ausführungsformen eine beliebige Anzahl von wohlbekannten Techniken zum Verbinden derartiger Einheiten verwenden. In einer Ausführungsform wird die Kohärenz zwischen einer oder mehreren Cache-Einheiten 1006 und den Kernen 1002A-N aufrechterhalten.
  • In einigen Ausführungsformen sind einer oder mehrere der Kerne 1002A-N zum Multithreading in der Lage. Der Systemagent 1010 weist diejenigen Komponenten auf, die die Kerne 1002A-N koordinieren und betreiben. Die Systemagenteinheit 1010 kann beispielsweise eine Stromsteuereinheit (PCU, Power Control Unit) und eine Anzeigeeinheit aufweisen. Die PCU kann Logik und Komponenten darstellen oder diese einschließen, die zum Regulieren des Stromzustands der Kerne 1002A-N und der Spezialzwecklogik 1008 benötigt werden. Die Anzeigeeinheit dient der Ansteuerung von einer oder mehreren extern verbundenen Anzeigen.
  • Die Kerne 1002A-N können in Bezug auf den Architekturbefehlssatz homogen oder heterogen sein; das heißt, zwei oder mehr der Kerne 1002A-N können zur Ausführung des gleichen Befehlssatzes in der Lage sein, während andere nur zur Ausführung einer Teilmenge dieses Befehlssatzes oder eines unterschiedlichen Befehlssatzes in der Lage sein können.
  • 10B stellt ein Blockschaltbild eines Systems 1050 gemäß einer Ausführungsform der vorliegenden Offenbarung dar. Das System 1050 kann einen oder mehrere Prozessoren 1052, 1054 aufweisen, die mit einem Controller-Hub 1056 gekoppelt sind. In einer Ausführungsform weist der Controller-Hub 1056 einen Grafikspeichercontroller-Hub (GMCH, Graphics Memory Controller Hub) 1058 und einen Eingabe/Ausgabe-Hub (IOH, Input/Output Hub) 1060 (die sich auf separaten Chips oder demselben Chip befinden können) auf; der GMCH 1058 weist Speicher- und Grafikcontroller auf, die mit dem Speicher 1062 und einem Coprozessor 1064 gekoppelt sind; der IOH 1060 koppelt Vorrichtungen zur Eingabe/Ausgabe (I/O, Input/Output) 1066 mit dem GMCH 1058. Alternativ sind einer oder beide der Speicher- und Grafikcontroller innerhalb des Prozessors integriert (wie hierin beschrieben), der Speicher 1062 und der Coprozessor 1064 sind direkt mit dem Prozessor 1052 gekoppelt, und der Controller-Hub 1020 ist ein einzelner Chip mit dem IOH 1060.
  • Die optionale Natur zusätzlicher Prozessoren 1054 ist in 10B mit unterbrochenen Linien dargestellt. Jeder Prozessor 1052, 1054 kann einen oder mehrere der hierin beschriebenen Verarbeitungskerne aufweisen und kann eine Version des Prozessors 1000 sein.
  • Der Speicher 1062 kann beispielsweise dynamischer Direktzugriffsspeicher (DRAM, Dynamic Random Access Memory), Phasenwechselspeicher (PCM, Phase Change Memory), ein anderer geeigneter Speicher oder eine beliebige Kombination davon sein. Der Speicher 1062 kann beliebige geeignete Daten speichern, wie beispielsweise Daten, die von den Prozessoren 1052, 1054 verwendet werden, um die Funktionalität des Computersystems 1050 bereitzustellen. Beispielsweise können Daten, die mit Programmen assoziiert sind, die ausgeführt werden, oder Dateien, auf die die Prozessoren 1052, 1054 zugreifen, im Speicher 1062 gespeichert werden. In verschiedenen Ausführungsformen kann der Speicher 1062 Daten und/oder Sequenzen von Befehlen speichern, die von den Prozessoren 1052, 1054 verwendet oder ausgeführt werden.
  • In wenigstens einer Ausführungsform kommuniziert der Controller-Hub 1056 mit dem/den Prozessor(en) 1052, 1054 über einen Multi-Drop-Bus, wie beispielsweise einen Frontside-Bus (FSB), eine Punkt-zu-Punkt-Schnittstelle, wie beispielsweise QuickPath Interconnect (QPI), oder eine ähnliche Verbindung 1095.
  • In einer Ausführungsform ist der Coprozessor 1064 ein Spezialzweckprozessor, wie beispielsweise ein MIC-Prozessor mit hohem Durchsatz, ein Netz- oder Kommunikationsprozessor, eine Komprimierungs- und/oder Dekomprimierungs-Engine, ein Grafikprozessor, eine GPGPU, ein eingebetteter Prozessor oder dergleichen. In einer Ausführungsform kann der Controller-Hub 1056 einen integrierten Grafikbeschleuniger aufweisen.
  • Es kann eine Vielzahl von Unterschieden zwischen den physikalischen Ressourcen 1052, 1054 in Bezug auf ein Spektrum von Leistungsmetriken geben, einschließlich architektureller, mikroarchitektureller, thermischer und Stromverbrauchseigenschaften und dergleichen.
  • In einer Ausführungsform führt der Prozessor 1052 Befehle aus, die Datenverarbeitungsoperationen eines allgemeinen Typs steuern. Innerhalb der Befehle können Coprozessorbefehle eingebettet sein. Der Prozessor 1052 erkennt diese Coprozessorbefehle als einen Typ, der durch den angeschlossenen Coprozessor 1064 ausgeführt werden sollte. Dementsprechend gibt der Prozessor 1052 diese Coprozessorbefehle (oder Steuersignale, die Coprozessorbefehle repräsentieren) auf einem Coprozessorbus oder einem anderen Interconnect an den Coprozessor 1064 aus. Der/die Coprozessor(en) 1045 akzeptiert/akzeptieren die empfangenen Coprozessorbefehle und führt/führen diese aus.
  • 11 stellt ein Blockschaltbild eines ersten spezielleren beispielhaften Systems 1100 gemäß einer Ausführungsform der vorliegenden Offenbarung dar. Wie in 11 gezeigt, ist das Multiprozessorsystem 1100 ein Punkt-zu-Punkt-Interconnect-System, und es weist einen ersten Prozessor 1170 und einen zweiten Prozessor 1180 gekoppelt über ein Punkt-zu-Punkt-Interconnect 1150 auf. Jeder der Prozessoren 1170 und 1180 kann eine Version des Prozessors 1000 sein. In einer Ausführungsform der Offenbarung sind die Prozessoren 1170 und 1180 jeweils die Prozessoren 1110 und 1115, während der Coprozessor 1138 der Coprozessor 1145 ist. In einer anderen Ausführungsform sind die Prozessoren 1170 und 1180 jeweils der Prozessor 1110 und der Coprozessor 1145.
  • Die Prozessoren 1170 und 1180 sind einschließlich der integrierten Speichercontroller(IMC, Integrated Memory Controller)-Einheiten 1172 bzw. 1182 gezeigt. Der Prozessor 1170 weist als Teil seiner Buscontrollereinheiten auch die Punkt-zu-Punkt(P-P)-Schnittstellen 1176 und 1178 auf; ähnlich weist der zweite Prozessor 1180 die P-P-Schnittstellen 1186 und 1188 auf. Die Prozessoren 1170, 1180 können Informationen über eine Punkt-zu-Punkt(P-P)-Schnittstelle 1150 unter Verwendung der P-P-Schnittstellenschaltungen 1178, 1188 austauschen. Wie in 11 gezeigt, koppeln die IMCs 1172 und 1182 die Prozessoren mit jeweiligen Speichern, nämlich einem Speicher 1132 und einem Speicher 1134, bei denen es sich um Teile des Hauptspeichers lokal angeschlossen an die jeweiligen Prozessoren handeln kann.
  • Die Prozessoren 1170, 1180 können jeweils über die einzelnen P-P-Schnittstellen 1152, 1154 unter Verwendung der Punkt-zu-Punkt-Schnittstellenschaltungen 1176, 1194, 1186, 1198 Informationen mit einem Chipsatz 1190 austauschen. Der Chipsatz 1190 kann optional über eine Hochleistungsschnittstelle 1139 Informationen mit dem Coprozessor 1138 austauschen. In einer Ausführungsform ist der Coprozessor 1138 ein Spezialzweckprozessor, wie beispielsweise ein MIC-Prozessor mit hohem Durchsatz, ein Netz- oder Kommunikationsprozessor, eine Komprimierungs- und/oder Dekomprimierungs-Engine, ein Grafikprozessor, eine GPGPU, ein eingebetteter Prozessor oder dergleichen.
  • Ein gemeinsam genutzter Cache (nicht gezeigt) kann in jedem der Prozessoren eingeschlossen sein oder sich außerhalb beider Prozessoren befinden, ist jedoch über ein P-P-Interconnect mit den Prozessoren verbunden, so dass die lokalen Cache-Informationen von einem der oder beiden Prozessoren im gemeinsam genutzten Cache gespeichert werden können, falls ein Prozessor in einen niedrigen Strommodus geschaltet wird.
  • Der Chipsatz 1190 kann über eine Schnittstelle 1196 mit einem ersten Bus 1116 gekoppelt sein. In einer Ausführungsform kann der erste Bus 1116 ein Peripheral-Component-Interconnect(PCI)-Bus oder ein Bus, wie beispielsweise ein PCI-Express-Bus oder ein anderer I/O-Interconnect-Bus der dritten Generation, sein, obwohl der Schutzbereich der vorliegenden Offenbarung nicht darauf beschränkt ist.
  • Wie in 11 gezeigt, können verschiedene I/O-Vorrichtungen 1114 mit dem ersten Bus 1116 gekoppelt sein, zusammen mit einer Busbrücke 1118, die den ersten Bus 1116 mit einem zweiten Bus 1120 koppelt. In einer Ausführungsform sind ein oder mehrere zusätzliche Prozessoren 1115, wie beispielsweise Coprozessoren, MIC-Prozessoren mit hohem Durchsatz, GPGPUs, Beschleuniger (wie beispielsweise Grafikbeschleuniger oder Digitalsignalverarbeitungs(DSP, Digital Signal Processing)-Einheiten), feldprogrammierbare Gate-Arrays oder ein beliebiger anderer Prozessor, mit dem ersten Bus 1116 gekoppelt. In einer Ausführungsform kann der zweite Bus 1120 ein Bus mit geringer Anschlusszahl (LPC, Low Pin Count) sein. In einer Ausführungsform können verschiedene Vorrichtungen mit einem zweiten Bus 1120 gekoppelt sein, einschließlich beispielsweise einer Tastatur und/oder Maus 1122, Kommunikationsvorrichtungen 1127 und einer Speichereinheit 1128, wie beispielsweise einem Plattenlaufwerk oder einer anderen Massenspeichervorrichtung, die Befehle/Code und Daten 1130 aufweisen kann. Ferner kann ein Audio-I/O 1124 mit dem zweiten Bus 1120 gekoppelt sein. Man beachte, dass andere Architekturen durch diese Offenbarung in Betracht gezogen werden. Beispielsweise kann ein System anstelle der Punkt-zu-Punkt-Architektur aus 11 einen Multi-Drop-Bus oder eine andere derartige Architektur implementieren.
  • 12 stellt ein Blockschaltbild eines zweiten spezielleren beispielhaften Systems 1200 gemäß einer Ausführungsform der vorliegenden Offenbarung dar. Ähnliche Elemente in 11 und 12 tragen ähnliche Bezugszeichen, und bestimmte Aspekte aus 11 wurden in 12 weggelassen, um zu vermeiden, dass andere Aspekte aus 12 verschleiert werden.
  • 12 veranschaulicht, dass die Prozessoren 1270, 1280 den integrierten Speicher und die I/O-Steuerlogik (CL, Control Logic) 1272 bzw. 1282 aufweisen können. Somit umfassen die CLs 1272, 1282 integrierte Speichercontrollereinheiten und I/O-Steuerlogik. 12 veranschaulicht, dass nicht nur die Speicher 1232, 1234 mit der CL 1272, 1282 gekoppelt sind, sondern dass auch die I/O-Vorrichtungen 1214 mit der Steuerlogik 1272, 1282 gekoppelt sind. Die Legacy-I/O-Vorrichtungen 1215 sind mit dem Chipsatz 1290 gekoppelt.
  • 13 stellt ein Blockschaltbild eines SoC 1300 gemäß einer Ausführungsform der vorliegenden Offenbarung dar. Außerdem sind Kästchen mit gestrichelten Linien optionale Merkmale auf fortschrittlicheren SoCs. In 13 ist/sind eine/die Interconnect-Einheit(en) 1302 gekoppelt mit: einem Anwendungsprozessor 1608, der einen Satz von einem oder mehreren Kernen 902A-N und eine/die gemeinsam genutzte(n) Cache-Einheit(en) 906 aufweist; einer Systemagenteinheit 910; einer/den Buscontrollereinheit(en) 916; einer/den integrierten Speichercontrollereinheit(en) 914; einem Satz von einem oder mehreren Coprozessoren 1320, die integrierte Grafiklogik, einen Bildprozessor, einen Audioprozessor und einen Videoprozessor aufweisen können; einer statischen Direktzugriffsspeicher(SRAM, Static Random Access Memory)-Einheit 1610; einer Direktspeicherzugriff(DMA, Direct Memory Access)-Einheit 1332; und einer Anzeigeeinheit 1626 zum Koppeln mit einer oder mehreren externen Anzeigen. In einer Ausführungsform umfasst/umfassen der/die Coprozessor(en) 1320 einen Spezialzweckprozessor, wie beispielsweise einen Netz- oder Kommunikationsprozessor, eine Komprimierungs- und/oder Dekomprimierungs-Engine, eine GPGPU, einen MIC-Prozessor mit hohem Durchsatz, einen eingebetteten Prozessor oder dergleichen.
  • In einigen Fällen kann ein Befehlswandler verwendet werden, um einen Befehl von einem Quellbefehlssatz in einen Zielbefehlssatz zu konvertieren. Beispielsweise kann der Befehlswandler übersetzen (z. B. unter Verwendung von statischer Binärübersetzung, dynamischer Binärübersetzung einschließlich dynamischer Kompilierung), morphen, emulieren oder anderweitig einen Befehl in einen oder mehrere andere Befehle konvertieren, die durch den Kern verarbeitet werden sollen. Der Befehlswandler kann in Software, Hardware, Firmware oder einer Kombination davon implementiert sein. Der Befehlswandler kann auf einem Prozessor, außerhalb eines Prozessors oder teilweise auf und teilweise außerhalb eines Prozessors sein.
  • 14 ist ein Blockschaltbild, das die Verwendung eines Softwarebefehlswandlers zum Konvertieren von binären Befehlen in einem Quellbefehlssatz in binäre Befehle in einem Zielbefehlssatz gemäß Ausführungsformen der Offenbarung gegenüberstellt. In der veranschaulichten Ausführungsform ist der Befehlswandler ein Softwarebefehlswandler, obwohl der Befehlswandler alternativ in Software, Firmware, Hardware oder verschiedenen Kombinationen davon implementiert sein kann. 14 zeigt, dass ein Programm in einer Hochsprache 1402 unter Verwendung eines x86-Compilers 1404 kompiliert werden kann, um x86-Binärcode 1406 zu generieren, der von einem Prozessor mit wenigstens einem x86-Befehlssatzkern 1416 nativ ausgeführt werden kann. Der Prozessor mit wenigstens einem x86-Befehlssatzkern 1416 repräsentiert einen beliebigen Prozessor, der im Wesentlichen die gleichen Funktionen wie ein Intel-Prozessor mit wenigstens einem x86-Befehlssatzkern durchführen kann durch kompatibles Ausführen oder anderweitiges Verarbeiten (1) eines wesentlichen Teils des Befehlssatzes des Intel x86-Befehlssatzkerns oder (2) von Objektcodeversionen von Anwendungen oder anderer Software, die abgezielt sind, um auf einem Intel-Prozessor mit wenigstens einem x86-Befehlssatzkern zu laufen, um im Wesentlichen das gleiche Ergebnis wie ein Intel-Prozessor mit wenigstens einem x86-Befehlssatzkern zu erzielen. Der x86-Compiler 1404 repräsentiert einen Compiler, der betriebsfähig ist, um x86-Binärcode 1406 (z. B. Objektcode) zu generieren, der mit oder ohne zusätzliche Verlinkungsverarbeitung auf dem Prozessor mit wenigstens einem x86-Befehlssatzkern 1416 ausgeführt werden kann. Ähnlich zeigt 14, dass das Programm in der Hochsprache 1402 unter Verwendung eines alternativen Befehlssatz-Compilers 1408 kompiliert werden kann, um alternativen Befehlssatz-Binärcode 1410 zu generieren, der von einem Prozessor ohne wenigstens einen x86-Befehlssatzkern 1414 nativ ausgeführt werden kann (z. B. einem Prozessor mit Kernen, die den MIPS-Befehlssatz von MIPS Technologies aus Sunnyvale, CA ausführen und/oder die den ARM-Befehlssatz von ARM Holdings aus Sunnyvale, CA ausführen). Der Befehlswandler 1412 wird verwendet, um den x86-Binärcode 1406 in Code umzuwandeln, der vom Prozessor ohne x86-Befehlssatzkern 1414 nativ ausgeführt werden kann. Es ist unwahrscheinlich, dass dieser konvertierte Code der gleiche wie der alternative Befehlssatz-Binärcode 1410 ist, da ein Befehlswandler, der hierzu in der Lage ist, schwer herzustellen ist; jedoch wird der konvertierte Code die allgemeine Operation erzielen und aus Befehlen vom alternativen Befehlssatz bestehen. Somit repräsentiert der Befehlswandler 1412 Software, Firmware, Hardware oder eine Kombination davon, die durch Emulierung, Simulation oder einen beliebigen anderen Prozess einem Prozessor oder einer anderen elektronischen Vorrichtung, die keinen x86-Befehlssatzprozessor oder -kern aufweist, ermöglicht, den x86-Binärcode 1406 auszuführen
  • Ein Design kann verschiedene Stufen durchlaufen, von der Erstellung über die Simulation bis hin zur Fertigung. Daten, die ein Design repräsentieren, können das Design in einer Reihe von Möglichkeiten repräsentieren. Als Erstes kann die Hardware, wie es bei Simulationen von Nutzen ist, unter Verwendung einer Hardwarebeschreibungssprache (HDL, Hardware Description Language) oder einer anderen Funktionsbeschreibungssprache repräsentiert werden. Zusätzlich kann in einigen Stufen des Designprozesses ein Modell auf Schaltungsebene mit Logik- und/oder Transistor-Gates hergestellt werden. Ferner erreichen die meisten Designs in einer Stufe eine Datenebene, welche die physikalische Anordnung von verschiedenen Vorrichtungen im Hardwaremodell repräsentiert. In dem Fall, wo herkömmliche Halbleiterfertigungstechniken verwendet werden, können die Daten, die das Hardwaremodell repräsentieren, die Daten sein, die das Vorhandensein oder die Abwesenheit verschiedener Merkmale auf unterschiedlichen Maskenschichten bei Masken angeben, die zum Herstellen der integrierten Schaltung verwendet werden. In einigen Implementierungen können derartige Daten in einem Datenbankdateiformat gespeichert werden, wie beispielsweise dem Graphic Data System II (GDS II), dem Open Artwork System Interchange Standard (OASIS) oder einem ähnlichen Format.
  • In einigen Implementierungen können softwarebasierte Hardwaremodelle und HDL- und andere Funktionsbeschreibungssprachenobjekte Registerübertragungssprachen(RTL, Register Transfer Language)-Dateien aufweisen, neben anderen Beispielen. Derartige Objekte können maschinell parsierbar sein, so dass ein Designtool das HDL-Objekt (oder Modell) akzeptieren kann, das HDL-Objekt in Bezug auf Attribute der beschriebenen Hardware parsen kann und eine physikalische Schaltung und/oder ein On-Chip-Layout vom Objekt bestimmen kann. Die Ausgabe des Designtools kann verwendet werden, um die physikalische Vorrichtung herzustellen. Beispielsweise kann ein Designtool Konfigurationen von verschiedenen Hardware- und/oder Firmwareelementen vom HDL-Objekt bestimmen, wie beispielsweise Busbreiten, Register (einschließlich Größen und Typen), Speicherblöcke, physikalische Verbindungspfade, Fabric-Topologien, neben anderen Attributen, die implementiert werden würden, um das im HDL-Objekt modellierte System zu realisieren. Designtools können Tools zum Bestimmen der Topologie und Fabric-Konfigurationen vom System-on-Chip (SoC) und anderen Hardwarevorrichtungen aufweisen. In einigen Fällen kann das HDL-Objekt als Basis zum Entwickeln von Modellen und Designdateien verwendet werden, die von Fertigungsanlagen zur Herstellung der beschriebenen Hardware verwendet werden können. In der Tat kann ein HDL-Objekt selbst als eine Eingabe für die Fertigungssystemsoftware bereitgestellt werden, um die Herstellung der beschriebenen Hardware zu veranlassen.
  • In jeder Repräsentation des Designs können die Daten, die das Design repräsentieren, in einer beliebigen Form eines maschinenlesbaren Mediums gespeichert werden. Ein Speicher oder eine magnetische oder optische Speichereinrichtung, wie beispielsweise eine Platte, kann das maschinenlesbare Medium zum Speichern von Informationen sein, die über eine optische oder elektrische Welle, moduliert oder anderweitig generiert zum Senden derartiger Informationen, gesendet werden. Wenn eine elektrische Trägerwelle, die den Code oder das Design anzeigt oder trägt, gesendet wird, wird in dem Maß, wie Kopieren, Puffern oder erneutes Senden des elektrischen Signals durchgeführt wird, eine neue Kopie erstellt. Somit kann ein Kommunikationsanbieter oder ein Netzanbieter einen Gegenstand, wenigstens vorübergehend, auf einem konkreten, maschinenlesbaren Medium speichern, wie beispielsweise Informationen, die in eine Trägerwelle codiert werden, wodurch Techniken von Ausführungsformen der vorliegenden Offenbarung verkörpert werden.
  • In verschiedenen Ausführungsformen kann ein Medium, das eine Repräsentation des Designs speichert, für ein Fertigungssystem bereitgestellt werden (z. B. ein Halbleiterfertigungssystem, das in der Lage ist, eine integrierte Schaltung und/oder verwandte Komponenten herzustellen). Die Designrepräsentation kann das System anweisen, eine Vorrichtung herzustellen, die in der Lage ist, eine beliebige Kombination der oben beschriebenen Funktionen durchzuführen. Beispielsweise kann die Designrepräsentation das System anweisen, welche Komponenten hergestellt werden sollen, wie die Komponenten miteinander gekoppelt werden sollten, wo die Komponenten auf der Vorrichtung platziert werden sollten und/oder welche anderen geeigneten Spezifikationen für die herzustellende Vorrichtung gelten.
  • Somit können ein oder mehrere Aspekte wenigstens einer Ausführungsform durch repräsentative Befehle implementiert sein, die auf einem maschinenlesbaren Medium gespeichert sind, das verschiedene Logik innerhalb des Prozessors repräsentiert, die, wenn sie durch eine Maschine gelesen werden, die Maschine veranlassen, Logik zum Durchführen der hierin beschriebenen Techniken herzustellen. Derartige Repräsentationen, oft als „IP-Kerne“ bezeichnet, können auf einem nichtflüchtigen, konkreten, maschinenlesbaren Medium gespeichert sein und an verschiedene Kunden oder Fertigungseinrichtungen geliefert werden, um sie in die Fertigungsmaschinen zu laden, welche die Logik oder den Prozessor herstellen.
  • Ausführungsformen der hierin offenbarten Mechanismen können in Hardware, Software, Firmware oder einer Kombination derartiger Implementierungsansätze implementiert sein. Die Ausführungsformen der Offenbarung können als Computerprogramme oder Programmcode, die auf programmierbaren Systemen ausgeführt werden, die wenigstens einen Prozessor, ein Speichersystem (einschließlich flüchtiger und nichtflüchtiger Speicher- und/oder Speichereinrichtungselemente), wenigstens eine Eingabevorrichtung und wenigstens eine Ausgabevorrichtung umfassen, implementiert sein.
  • Programmcode, wie beispielsweise der Code 1130, der in 11 veranschaulicht ist, kann auf Eingabebefehle angewandt werden, um die hierin beschriebenen Funktionen durchzuführen und Ausgabeinformationen zu generieren. Die Ausgabeinformationen können in bekannter Art und Weise auf eine oder mehrere Ausgabevorrichtungen angewandt werden. Zum Zweck dieser Anmeldung weist ein Verarbeitungssystem ein beliebiges System auf, das einen Prozessor aufweist, wie beispielsweise einen Digitalsignalprozessor (DSP), einen Mikrocontroller, eine anwendungsspezifische integrierte Schaltung (ASIC, Application Specific Integrated Circuit) oder einen Mikroprozessor.
  • Der Programmcode kann in einer prozeduralen oder objektorientierten höheren Programmiersprache zum Kommunizieren mit einem Verarbeitungssystem implementiert sein. Der Programmcode kann auch, falls gewünscht, in Assembler- oder Maschinensprache implementiert sein. In der Tat sind die hierin beschriebenen Mechanismen in ihrem Umfang nicht auf eine bestimmte Programmiersprache beschränkt. In verschiedenen Ausführungsformen kann die Sprache eine kompilierte oder interpretierte Sprache sein.
  • Die vorstehend dargelegten Ausführungsformen von Verfahren, Hardware, Software, Firmware oder Code können über Befehle oder Code implementiert werden, die auf einem maschinenzugänglichen, maschinenlesbaren, computerzugänglichen oder computerlesbaren Medium gespeichert sind und die von einem Verarbeitungselement ausgeführt werden können (oder anderweitig zugänglich sind). Ein maschinenzugängliches/-lesbares Medium weist einen beliebigen Mechanismus auf, der Informationen in einer Form bereitstellt (d. h. speichert und/oder sendet), die von einer Maschine, wie beispielsweise einem Computer oder elektronischen System, gelesen werden können. Ein maschinenzugängliches Medium umfasst zum Beispiel einen Direktzugriffsspeicher (RAM, Random-Access Memory), wie beispielsweise ein statisches RAM (SRAM) oder ein dynamisches RAM (DRAM); ROM; ein magnetisches oder optisches Speichermedium; Flash-Speichervorrichtungen; elektrische Speichervorrichtungen; optische Speichervorrichtungen; akustische Speichervorrichtungen; andere Form von Speichervorrichtungen zum Halten von Informationen, die von transitorischen (ausgebreiteten) Signalen empfangen werden (z. B. Trägerwellen, Infrarotsignale, Digitalsignale); usw., die von den nichtflüchtigen Medien unterschieden werden sollen, die Informationen davon empfangen können.
  • Befehle, die verwendet werden, um Logik zum Durchführen von Ausführungen der Offenbarung zu programmieren, können innerhalb eines Speichers im System, wie beispielsweise innerhalb eines DRAM, Caches, Flash-Speichers oder anderen Speichers, gespeichert werden. Ferner können die Befehle über ein Netz oder durch andere computerlesbare Medien verteilt werden. Demnach kann ein maschinenlesbares Medium einen beliebigen Mechanismus zum Speichern oder Senden von Informationen in einer Form, die von einer Maschine (z. B. einem Computer) gelesen werden kann, einschließen, wie beispielsweise, ohne darauf beschränkt zu sein, Floppy-Disks, optische Platten, CD-Nur-Lese-Speicher (CD-ROMs, Compact Disc Read-Only Memory) und magnetooptische Platten, Nur-Lese-Speicher (ROMs, Read-Only Memory), Direktzugriffspeicher (RAM, Random Access Memory), löschbare programmierbare Nur-Lese-Speicher (EPROM, Erasable Programmable Read-Only Memory), elektrisch löschbare programmierbare Nur-Lese-Speicher (EEPROM, Electrically Erasable Programmable Read-Only Memory), magnetische oder optische Karten, Flash-Speicher oder einen konkreten maschinenlesbaren Speicher, der beim Senden von Informationen über das Internet durch elektrische, optische, akustische oder andere Formen von ausgebreiteten Signalen (z. B. Trägerwellen, Infrarotsignalen, Digitalsignalen usw.) verwendet wird. Dementsprechend umfasst das computerlesbare Medium alle Typen von konkreten maschinenlesbaren Medien, die zum Speichern oder Senden von elektronischen Befehlen oder Informationen in einer Form geeignet sind, die von einer Maschine (z. B. einem Computer) gelesen werden kann.
  • Eine Logik kann verwendet werden, um eine beliebige Funktionalität der verschiedenen Komponenten zu implementieren. „Logik“ kann sich auf Hardware, Firmware, Software und/oder Kombinationen davon beziehen, um eine oder mehrere Funktionen durchzuführen. Als ein Beispiel weist eine Logik Hardware auf, wie beispielsweise einen Mikrocontroller oder Prozessor, der mit einem nichtflüchtigen Medium zum Speichern von Code assoziiert ist, der so angepasst ist, dass er durch den Mikrocontroller oder Prozessor ausgeführt wird. Daher bezieht sich die Bezugnahme auf eine Logik in einer Ausführungsform auf die Hardware, die speziell so ausgebildet ist, dass sie den Code, der auf einem nichtflüchtigen Medium gehalten werden soll, erkennt und/oder ausführt. Ferner bezieht sich die Verwendung einer Logik in einer anderen Ausführungsform auf das nichtflüchtige Medium, das den Code einschließt, der speziell so angepasst ist, dass er durch den Mikrocontroller ausgeführt werden soll, um vorbestimmte Operationen durchzuführen. Und folglich kann sich der Begriff „Logik“ (in diesem Beispiel) in noch einer anderen Ausführungsform auf die Kombination der Hardware und des nichtflüchtigen Mediums beziehen. In verschiedenen Ausführungsformen kann die Logik einen Mikroprozessor oder ein anderes Verarbeitungselement aufweisen, das zum Ausführen von Softwarebefehlen, diskreter Logik, betriebsfähig ist, wie beispielsweise eine anwendungsspezifische integrierte Schaltung (ASIC, Application Specific Integrated Circuit), eine programmierte Logikvorrichtung, wie beispielsweise ein feldprogrammierbares Gate-Array (FPGA), eine Speichervorrichtung mit Befehlen, Kombinationen von Logikvorrichtungen (z. B. wie auf einer gedruckten Leiterplatte) oder andere geeignete Hardware und/oder Software. Eine Logik kann ein oder mehrere Gates oder andere Schaltungskomponenten aufweisen, die beispielsweise durch Transistoren implementiert sein können. In einigen Ausführungsformen kann eine Logik auch vollständig als Software verkörpert sein. Software kann als ein Softwarepaket, ein Code, Befehle, Befehlssätze und/oder Daten ausgeführt sein, die auf nichtflüchtigen computerlesbaren Speichermedien aufgezeichnet sind. Firmware kann als Code, Befehle oder Befehlssätze und/oder Daten ausgeführt sein, die in (z. B. nichtflüchtigen) Speichervorrichtungen fest codiert sind. Logikgrenzen, die als getrennt veranschaulicht sind, variieren üblicherweise oftmals und überschneiden sich potenziell. Beispielsweise können eine erste und eine zweite Logik Hardware, Software, Firmware oder eine Kombination davon miteinander teilen, während sie eine gewisse unabhängige Hardware, Software oder Firmware potenziell für sich behalten.
  • Die Verwendung des Ausdrucks „zum“ oder „ausgelegt zum“ bezieht sich in einer Ausführungsform auf das Anordnen, Zusammenstellen, Herstellen, Zum-Verkauf-anbieten, Importieren und/oder Designieren einer Vorrichtung, Hardware, Logik oder eines Elements zum Durchführen einer designierten oder bestimmten Aufgabe. In diesem Beispiel ist eine Vorrichtung oder ein Element davon, die bzw. das nicht in Betrieb ist, dennoch „ausgebildet zum“ Durchführen einer designierten Aufgabe, falls sie/es zum Durchführen der designierten Aufgabe konzipiert, gekoppelt und/oder verbunden ist. Als rein veranschaulichendes Beispiel kann ein Logik-Gate während des Betriebs eine 0 oder eine 1 bereitstellen. Aber ein Logik-Gate, das „ausgebildet ist zum“ Bereitstellen eines Freigabesignals für einen Takt, schließt nicht jedes potenzielle Logik-Gate ein, das eine 1 oder 0 bereitstellen kann. Stattdessen ist ein Logik-Gate eines, das derart gekoppelt ist, dass die Ausgabe von 1 oder 0 während des Betriebs zum Freigeben des Takts ist. Man beachte abermals, dass der Begriff „ausgebildet zum“ keinen Betrieb erfordert, sondern stattdessen den Akzent auf den latenten Zustand einer Vorrichtung, einer Hardware und/oder eines Elements setzt, wobei die Vorrichtung, die Hardware und/oder das Element im latenten Zustand so konzipiert sind, dass sie/es eine bestimmte Aufgabe ausführt, wenn die Vorrichtung, die Hardware und/oder das Element in Betrieb sind.
  • Ferner beziehen sich die Ausdrücke „in der Lage zum“ und/oder „betriebsfähig zum“ in einer Ausführungsform auf eine Vorrichtung, eine Logik, eine Hardware und/oder ein Element, welche(s) derart konzipiert ist, dass sie/es die Verwendung der Vorrichtung, der Logik, der Hardware und/oder des Elements in einer spezifizierten Art und Weise ermöglicht. Man beachte, dass sich, wie zuvor, die Verwendung von „zum“, „in der Lage zum“ und/oder „betriebsfähig zum“ auf den latenten Zustand einer Vorrichtung, einer Logik, einer Hardware und/oder eines Elements bezieht, wobei die Vorrichtung, die Logik, die Hardware und/oder das Element nicht in Betrieb, aber derart konzipiert sind, dass sie/es die Verwendung einer Vorrichtung in einer spezifizierten Art und Weise ermöglicht.
  • Ein Wert, wie hierin verwendet, schließt jede bekannte Repräsentation einer Zahl, eines Zustands, eines logischen Zustands oder eines binären logischen Zustands ein. Die Verwendung von Logikpegeln, Logikwerten oder logischen Werten bezieht sich häufig auch auf 1 en und 0en, die einfach binäre Logikzustände repräsentieren. Beispielsweise bezieht sich eine 1 auf einen hohen Logikpegel und eine 0 auf einen niedrigen Logikpegel. In einer Ausführungsform kann eine Speicherzelle, wie beispielsweise eine Transistor- oder Flash-Zelle, in der Lage sein, einen einzelnen logischen Wert oder mehrere logische Werte zu halten. Es wurden jedoch andere Repräsentationen von Werten in Computersystemen verwendet. Beispielsweise kann die Dezimalzahl Zehn auch als ein Binärwert von 1010 und ein hexadezimaler Buchstabe A repräsentiert werden. Daher schließt ein Wert jede Repräsentation von Informationen ein, die in einem Computersystem gehalten werden können.
  • Darüber hinaus können Zustände durch Werte oder Teile von Werten repräsentiert werden. Als ein Beispiel kann ein erster Wert, wie beispielsweise eine logische Eins, einen Standard- oder Anfangszustand repräsentieren, während ein zweiter Wert, wie beispielsweise eine logische Null, einen Nicht-Standardzustand repräsentieren kann. Zusätzlich beziehen sich die Begriffe „rückgesetzt“ und „gesetzt“ in einer Ausführungsform jeweils auf einen Standard- und einen aktualisierten Wert bzw. Zustand. Beispielsweise umfasst ein Standardwert potenziell einen hohen logischen Wert, d. h. rückgesetzt, während ein aktualisierter Wert potenziell einen niedrigen logischen Wert umfasst, d. h. gesetzt. Man beachte, dass eine beliebige Kombination von Werten verwendet werden kann, um eine beliebige Anzahl von Zuständen zu repräsentieren.
  • Die Systeme, Verfahren, Computerprogrammprodukte und Vorrichtungen können eines oder eine Kombination der folgenden Beispiele einschließen:
  • Beispiel 1 kann eine Computervorrichtung einschließen, umfassend eine Speichervorrichtung; eine Cache-Vorrichtung; und eine Verbindungsschichtkomponente, die mit der Speichervorrichtung und der Cache-Vorrichtung gekoppelt ist, wobei die Verbindungsschichtkomponente dient zum Identifizieren von ersten Daten, die von der Speichervorrichtung empfangen werden, wobei die ersten Daten von einem ersten Protokollformat sind; Identifizieren von zweiten Daten, die von der Cache-Vorrichtung empfangen werden, wobei die zweiten Daten von einem zweiten Protokollformat sind; und Generieren einer Flusssteuereinheit (Flit, Flow Control Unit) zum Senden basierend auf den ersten Daten und den zweiten Daten, wobei die Flit eine Größe von 528 Bit aufweist.
  • Beispiel 2 kann die Computervorrichtung von Beispiel 1 einschließen, wobei das Generieren der Flit das Multiplexen eines Teils der ersten Daten und eines Teils der zweiten Daten zum Generieren der Flit beinhaltet.
  • Beispiel 3 kann die Computervorrichtung von Beispiel 1 einschließen, wobei die Flit 512 Bit für die Nutzlast und 16 Bit für die zyklische Redundanzprüfung aufweist.
  • Beispiel 4 kann die Computervorrichtung von Beispiel 3 einschließen, wobei die 512 Bit aus einem Teil der ersten Daten und einem Teil der zweiten Daten bestehen.
  • Beispiel 5 kann die Computervorrichtung von Beispiel 1 einschließen, wobei die Flit in Slots gleicher Größe unterteilt ist, und wobei ein erster Slot der Flit Header-Informationen enthält.
  • Beispiel 6 kann die Computervorrichtung von Beispiel 1 einschließen, wobei die Verbindungsschichtkomponente eine Senderverbindungsschicht und eine Empfängerverbindungsschicht aufweist, und wobei die Senderverbindungsschicht einen Rollover beibehält und die Empfängerverbindungsschicht einen Shadow-Rollover, der dem Rollover entspricht, beibehält.
  • Beispiel 7 kann die Computervorrichtung von Beispiel 6 einschließen, wobei die Flit eine All-Data-Flit umfasst, wobei die Senderverbindungsschicht die Flit sendet, und wobei die Empfängerverbindungsschicht bestimmt, wann eine All-Data-Response-Flit basierend auf dem Senden der Flit durch die Senderverbindungsschicht und dem Shadow-Rollover zu erwarten ist.
  • Beispiel 8 kann die Computervorrichtung von Beispiel 1 einschließen, wobei die Flit eine All-Data-Flit umfasst.
  • Beispiel 9 kann die Computervorrichtung von Beispiel 1 einschließen, wobei die Flit eine erste Flit ist, wobei die erste Flit einen ersten Teil der ersten Daten und einen ersten Teil der zweiten Daten einschließt, wobei die Verbindungsschichtkomponente ferner eine zweite Flit generieren soll, die einen zweiten Teil der ersten Daten und einen zweiten Teil der zweiten Daten einschließt, wobei die erste Flit einen Header aufweist, der mit der ersten Flit und der zweiten Flit assoziiert ist, wobei die zweite Flit eine All-Data-Flit umfasst, und wobei die zweite Flit nach der ersten Flit gesendet werden soll.
  • Beispiel 10 kann die Computervorrichtung von Beispiel 1 einschließen, wobei die Verbindungsschichtkomponente Flit-Packer-Schaltungen umfasst.
  • Beispiel 11 kann die Computervorrichtung von Beispiel 1 einschließen, wobei die Verbindungsschichtkomponente eine Bridge oder einen Switch umfasst.
  • Beispiel 12 kann ein Verfahren einschließen, umfassend das Identifizieren, durch eine Verbindungsschicht, von ersten Daten, die in einem ersten Protokollformat empfangen werden; Identifizieren, durch die Verbindungsschicht, von zweiten Daten, die in einem zweiten Protokollformat empfangen werden; Multiplexen, durch die Verbindungsschicht, eines Teils der ersten Daten und eines Teils der zweiten Daten, um gemultiplexte Daten zu erzeugen; und Generieren, durch die Verbindungsschicht, einer Flusssteuereinheit (Flit, Flow Control Unit), die die gemultiplexten Daten aufweist.
  • Beispiel 13 kann das Verfahren von Beispiel 12 einschließen, wobei die Flit eine Größe von 528 Bit aufweist.
  • Beispiel 14 kann das Verfahren von Beispiel 12 einschließen, wobei die Flit 512 Bit für die Nutzlast und 16 Bit für die zyklische Redundanzprüfung aufweist, und wobei die Nutzlast die gemultiplexten Daten aufweist.
  • Beispiel 15 kann das Verfahren von Beispiel 14 einschließen, wobei die Nutzlast aus den gemultiplexten Daten besteht.
  • Beispiel 16 kann das Verfahren von Beispiel 12 einschließen, wobei die Flit in Slots gleicher Größe unterteilt ist, und wobei ein erster Slot der Flit Header-Informationen enthält.
  • Beispiel 17 kann das Verfahren von Beispiel 12 einschließen, ferner umfassend das Beibehalten, durch eine Senderverbindungsschicht der Verbindungsschicht, eines Rollovers; und Beibehalten, durch eine Empfängerverbindungsschicht der Verbindungsschicht, eines Shadow-Rollovers, der dem Rollover entspricht.
  • Beispiel 18 kann das Verfahren von Beispiel 17 einschließen, ferner umfassend das Senden, durch die Senderverbindungsschicht, der Flit, wobei die Flit eine All-Data-Flit umfasst; und Bestimmen, durch die Empfängerverbindungsschicht, wann eine All-Data-Response-Flit basierend auf dem Senden der Flit durch die Senderverbindungsschicht und dem Shadow-Rollover zu erwarten ist.
  • Beispiel 19 kann das Verfahren von Beispiel 12 einschließen, wobei die Flit eine All-Data-Flit umfasst.
  • Beispiel 20 kann das Verfahren von Beispiel 12 einschließen, wobei der Teil der ersten Daten ein erster Teil der ersten Daten ist, wobei der Teil der zweiten Daten ein erster Teil der zweiten Daten ist, wobei die gemultiplexten Daten erste gemultiplexte Daten sind, wobei die Flit eine erste Flit ist, und wobei das Verfahren ferner umfasst: Multiplexen, durch die Verbindungsschicht, eines zweiten Teils der ersten Daten und eines zweiten Teils der zweiten Daten, um zweite gemultiplexte Daten zu erzeugen; Generieren, durch die Verbindungsschicht, einer zweiten Flit, die die zweiten gemultiplexten Daten aufweist, wobei die zweite Flit eine All-Data-Flit umfasst, und wobei die erste Flit Header-Informationen aufweist, die mit der ersten Flit und der zweiten Flit assoziiert sind; Senden, durch die Verbindungsschicht, der ersten Flit; und Senden, durch die Verbindungsschicht, der zweiten Flit nach der ersten Flit.
  • Beispiel 21 ist ein System, umfassend eine Sendervorrichtung, die einen Speicher zum Speichern von Daten, einen Cache zum Zwischenspeichern von Daten, Verbindungsschichtlogik, die wenigstens teilweise in Hardware implementiert ist, und Multiplexerlogik, die wenigstens teilweise in Hardware implementiert ist, umfasst; und eine Empfängervorrichtung, die eine Decodervorrichtung zum Decodieren von Datenpaketen, die vom Sender empfangen werden, umfasst. Die Verbindungsschichtlogik dient zum Identifizieren, durch eine Verbindungsschichtvorrichtung, von ersten Daten, die in einem ersten Protokollformat vom Speicher empfangen werden; Identifizieren, durch die Verbindungsschichtvorrichtung, von zweiten Daten, die in einem zweiten Protokollformat vom Cache empfangen werden; Multiplexen, durch die Verbindungsschichtvorrichtung, eines Teils der ersten Daten und eines Teils der zweiten Daten, um gemultiplexte Daten zu erzeugen; und Generieren, durch die Verbindungsschichtvorrichtung, einer Flusssteuereinheit (Flit, Flow Control Unit), die die gemultiplexten Daten aufweist.
  • Beispiel 22 kann den Gegenstand von Beispiel 21 einschließen, wobei die Flit eine Größe von 528 Bit aufweist.
  • Beispiel 23 kann den Gegenstand von Beispiel 21 oder 22 einschließen, wobei die Flit 512 Bit für die Nutzlast und 16 Bit für die zyklische Redundanzprüfung aufweist, und wobei die Nutzlast die gemultiplexten Daten aufweist.
  • Beispiel 24 kann den Gegenstand von Beispiel 23 einschließen, wobei die Nutzlast aus den gemultiplexten Daten besteht.
  • Beispiel 25 kann den Gegenstand von Beispiel 21 einschließen, wobei die Flit in Slots gleicher Größe unterteilt ist, und wobei ein erster Slot der Flit Header-Informationen enthält.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 62667230 [0001]

Claims (25)

  1. Vorrichtung, umfassend: eine Speichervorrichtung; eine Cache-Vorrichtung; und eine Verbindungsschichtkomponente, die mit der Speichervorrichtung und der Cache-Vorrichtung gekoppelt ist, wobei die Verbindungsschichtkomponente dient zum: Identifizieren von ersten Daten, die von der Speichervorrichtung empfangen werden, wobei die ersten Daten von einem ersten Protokollformat sind; Identifizieren von zweiten Daten, die von der Cache-Vorrichtung empfangen werden, wobei die zweiten Daten von einem zweiten Protokollformat sind; und Generieren einer Flusssteuereinheit (Flit, Flow Control Unit) zum Senden basierend auf den ersten Daten und den zweiten Daten, wobei die Flit eine Größe von 528 Bit aufweist.
  2. Vorrichtung nach Anspruch 1, wobei das Generieren der Flit das Multiplexen eines Teils der ersten Daten und eines Teils der zweiten Daten zum Generieren der Flit beinhaltet.
  3. Vorrichtung nach Anspruch 1, wobei die Flit 512 Bit für die Nutzlast und 16 Bit für die zyklische Redundanzprüfung aufweist.
  4. Vorrichtung nach Anspruch 3, wobei die 512 Bit aus einem Teil der ersten Daten und einem Teil der zweiten Daten bestehen.
  5. Vorrichtung nach Anspruch 1, wobei die Flit in Slots gleicher Größe unterteilt ist, und wobei ein erster Slot der Flit Header-Informationen enthält.
  6. Vorrichtung nach Anspruch 1, wobei die Verbindungsschichtkomponente eine Senderverbindungsschicht und eine Empfängerverbindungsschicht aufweist, und wobei die Senderverbindungsschicht einen Rollover beibehält und die Empfängerverbindungsschicht einen Shadow-Rollover, der dem Rollover entspricht, beibehält.
  7. Vorrichtung nach Anspruch 6, wobei die Flit eine All-Data-Flit umfasst, wobei die Senderverbindungsschicht die Flit sendet, und wobei die Empfängerverbindungsschicht bestimmt, wann eine All-Data-Response-Flit basierend auf dem Senden der Flit durch die Senderverbindungsschicht und dem Shadow-Rollover zu erwarten ist.
  8. Vorrichtung nach Anspruch 1, wobei die Flit eine All-Data-Flit umfasst.
  9. Vorrichtung nach Anspruch 1, wobei die Flit eine erste Flit ist, wobei die erste Flit einen ersten Teil der ersten Daten und einen ersten Teil der zweiten Daten einschließt, wobei die Verbindungsschichtkomponente ferner eine zweite Flit generieren soll, die einen zweiten Teil der ersten Daten und einen zweiten Teil der zweiten Daten einschließt, wobei die erste Flit einen Header aufweist, der mit der ersten Flit und der zweiten Flit assoziiert ist, wobei die zweite Flit eine All-Data-Flit umfasst, und wobei die zweite Flit nach der ersten Flit gesendet werden soll.
  10. Vorrichtung nach Anspruch 1, wobei die Verbindungsschichtkomponente Flit-Packer-Schaltungen umfasst.
  11. Vorrichtung nach Anspruch 1, wobei die Verbindungsschichtkomponente eine Bridge oder einen Switch umfasst.
  12. Verfahren, umfassend: Identifizieren, durch eine Verbindungsschichtvorrichtung, von ersten Daten, die in einem ersten Protokollformat empfangen werden; Identifizieren, durch die Verbindungsschichtvorrichtung, von zweiten Daten, die in einem zweiten Protokollformat empfangen werden; Multiplexen, durch die Verbindungsschichtvorrichtung, eines Teils der ersten Daten und eines Teils der zweiten Daten, um gemultiplexte Daten zu erzeugen; und Generieren, durch die Verbindungsschichtvorrichtung, einer Flusssteuereinheit (Flit, Flow Control Unit), die die gemultiplexten Daten aufweist.
  13. Verfahren nach Anspruch 12, wobei die Flit eine Größe von 528 Bit aufweist.
  14. Verfahren nach Anspruch 12, wobei die Flit 512 Bit für die Nutzlast und 16 Bit für die zyklische Redundanzprüfung aufweist, und wobei die Nutzlast die gemultiplexten Daten aufweist.
  15. Verfahren nach Anspruch 14, wobei die Nutzlast aus den gemultiplexten Daten besteht.
  16. Verfahren nach Anspruch 12, wobei die Flit in Slots gleicher Größe unterteilt ist, und wobei ein erster Slot der Flit Header-Informationen enthält.
  17. Verfahren nach Anspruch 12, ferner umfassend: Beibehalten, durch eine Senderverbindungsschicht der Verbindungsschicht, eines Rollovers; und Beibehalten, durch eine Empfängerverbindungsschicht der Verbindungsschicht, eines Shadow-Rollovers, der dem Rollover entspricht.
  18. Verfahren nach Anspruch 17, ferner umfassend: Senden, durch die Senderverbindungsschicht, der Flit, wobei die Flit eine All-Data-Flit umfasst; und Bestimmen, durch die Empfängerverbindungsschicht, wann eine All-Data-Response-Flit basierend auf dem Senden der Flit durch die Senderverbindungsschicht und dem Shadow-Rollover zu erwarten ist.
  19. Verfahren nach Anspruch 12, wobei die Flit eine All-Data-Flit umfasst.
  20. Verfahren nach Anspruch 12, wobei der Teil der ersten Daten ein erster Teil der ersten Daten ist, wobei der Teil der zweiten Daten ein erster Teil der zweiten Daten ist, wobei die gemultiplexten Daten erste gemultiplexte Daten sind, wobei die Flit eine erste Flit ist, und wobei das Verfahren ferner umfasst: Multiplexen, durch die Verbindungsschicht, eines zweiten Teils der ersten Daten und eines zweiten Teils der zweiten Daten, um zweite gemultiplexte Daten zu erzeugen; Generieren, durch die Verbindungsschicht, einer zweiten Flit, die die zweiten gemultiplexten Daten aufweist, wobei die zweite Flit eine All-Data-Flit umfasst, und wobei die erste Flit Header-Informationen aufweist, die mit der ersten Flit und der zweiten Flit assoziiert sind; Senden, durch die Verbindungsschicht, der ersten Flit; und Senden, durch die Verbindungsschicht, der zweiten Flit nach der ersten Flit.
  21. System, umfassend: eine Sendervorrichtung, umfassend: einen Speicher zum Speichern von Daten, einen Cache zum Zwischenspeichern von Daten, Verbindungsschichtlogik, die wenigstens teilweise in Hardware implementiert ist, und Multiplexerlogik, die wenigstens teilweise in Hardware implementiert ist; eine Empfängervorrichtung, umfassend: eine Decodervorrichtung zum Decodieren von Datenpaketen, die vom Sender empfangen werden; wobei die Verbindungsschichtlogik dient zum: Identifizieren, durch eine Verbindungsschichtvorrichtung, von ersten Daten, die in einem ersten Protokollformat vom Speicher empfangen werden; Identifizieren, durch die Verbindungsschichtvorrichtung, von zweiten Daten, die in einem zweiten Protokollformat vom Cache empfangen werden; Multiplexen, durch die Verbindungsschichtvorrichtung, eines Teils der ersten Daten und eines Teils der zweiten Daten, um gemultiplexte Daten zu erzeugen; und Generieren, durch die Verbindungsschichtvorrichtung, einer Flusssteuereinheit (Flit, Flow Control Unit), die die gemultiplexten Daten aufweist.
  22. System nach Anspruch 21, wobei die Flit eine Größe von 528 Bit aufweist.
  23. System nach Anspruch 21, wobei die Flit 512 Bit für die Nutzlast und 16 Bit für die zyklische Redundanzprüfung aufweist, und wobei die Nutzlast die gemultiplexten Daten aufweist.
  24. System nach Anspruch 23, wobei die Nutzlast aus den gemultiplexten Daten besteht.
  25. System nach Anspruch 21, wobei die Flit in Slots gleicher Größe unterteilt ist und wobei ein erster Slot der Flit Header-Informationen enthält.
DE102019108798.8A 2018-05-04 2019-04-04 Hochbandige verbindungsschicht für kohärente nachrichten Pending DE102019108798A1 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201862667230P 2018-05-04 2018-05-04
US62/667,230 2018-05-04
US16/141,729 US10614000B2 (en) 2018-05-04 2018-09-25 High bandwidth link layer for coherent messages
US16/141,729 2018-09-25

Publications (1)

Publication Number Publication Date
DE102019108798A1 true DE102019108798A1 (de) 2019-11-07

Family

ID=65806727

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102019108798.8A Pending DE102019108798A1 (de) 2018-05-04 2019-04-04 Hochbandige verbindungsschicht für kohärente nachrichten

Country Status (3)

Country Link
US (2) US10614000B2 (de)
CN (2) CN110442534A (de)
DE (1) DE102019108798A1 (de)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190004990A1 (en) 2017-07-01 2019-01-03 Stephen R. Van Doren Techniques to support mulitple interconnect protocols for an interconnect
US11005715B2 (en) * 2018-12-21 2021-05-11 T-Moblle USA, Inc. Latency-sensitive network-traffic quality of service
US11036658B2 (en) * 2019-01-16 2021-06-15 Advanced Micro Devices, Inc. Light-weight memory expansion in a coherent memory system
US10817462B1 (en) * 2019-04-26 2020-10-27 Xilinx, Inc. Machine learning model updates to ML accelerators
US11182313B2 (en) 2019-05-29 2021-11-23 Intel Corporation System, apparatus and method for memory mirroring in a buffered memory architecture
CN112217851B (zh) * 2019-07-12 2023-05-12 西安诺瓦星云科技股份有限公司 数据传输方法、数据传输装置以及电子设备
US11150814B2 (en) * 2019-10-28 2021-10-19 International Business Machines Corporation Utilizing a link interface for performing partial write operations to memory
US11734105B2 (en) * 2020-07-06 2023-08-22 International Business Machines Corporation Efficient error reporting in a link interface
US20220342841A1 (en) * 2021-12-22 2022-10-27 Swadesh Choudhary Die-to-die adapter

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB0221464D0 (en) * 2002-09-16 2002-10-23 Cambridge Internetworking Ltd Network interface and protocol
US8683572B1 (en) * 2008-01-24 2014-03-25 Dunti Llc Method and apparatus for providing continuous user verification in a packet-based network
WO2013085501A1 (en) * 2011-12-07 2013-06-13 Intel Corporation Multiple transaction data flow control unit for high-speed interconnect
US9479196B2 (en) * 2012-10-22 2016-10-25 Intel Corporation High performance interconnect link layer
US9804989B2 (en) * 2014-07-25 2017-10-31 Micron Technology, Inc. Systems, devices, and methods for selective communication through an electrical connector
US9900260B2 (en) * 2015-12-10 2018-02-20 Arm Limited Efficient support for variable width data channels in an interconnect network
WO2018075984A1 (en) * 2016-10-21 2018-04-26 Northeastern University Method and apparatus for wireless communications
US20190004990A1 (en) 2017-07-01 2019-01-03 Stephen R. Van Doren Techniques to support mulitple interconnect protocols for an interconnect

Also Published As

Publication number Publication date
US11366773B2 (en) 2022-06-21
US20190095363A1 (en) 2019-03-28
CN110442534A (zh) 2019-11-12
US10614000B2 (en) 2020-04-07
US20200334179A1 (en) 2020-10-22
CN112631959A (zh) 2021-04-09

Similar Documents

Publication Publication Date Title
DE102019108798A1 (de) Hochbandige verbindungsschicht für kohärente nachrichten
DE102019108376A1 (de) Sequenz zur Aushandlung und Aktivierung von Flexbus-Protokollen
DE112013001360B4 (de) Vorrichtung, verfahren und system zum bereitstellen einer kopplungsstruktur-linkschicht
DE102018004327A1 (de) Systeme und Verfahren zum Zugreifen auf Massenspeicher als Arbeitsspeicher
DE102018006756A1 (de) Beschleuniger-Fabric
DE112017005002T5 (de) Verbindungsphysikalischer schichtschnittstellenadapter
DE102020120102A1 (de) Globale dauerhafte Speicherleerung
DE112017006557T5 (de) Bimodale phy für geringe latenz in hochgeschwindigkeitsverbindungswegen
DE112013005044B4 (de) Verfahren, einrichtung, vorrichtung und system zum ausführen von eingehenden pcie-schreiboperationen in einen speicher und partnereinrichtungen per dualcast
DE102018006546A1 (de) Plattformschnittstellenschicht und protokoll für beschleuniger
DE112015006961T5 (de) Verbindungsfehlerdetektion in mehrfachchipgehäusen
DE102018006797A1 (de) Kohärente Speichereinrichtungen über PCIe
DE112016005910T5 (de) Architechtur für Software-Definierten Interconnect-Switch
DE102019127892A1 (de) Sichern eines Plattform-Links mit Verschlüsselung
DE112020006859T5 (de) Beibehaltung von speicher-namensraum-identifizierern für die migration von virtualisierten ausführungsumgebungen im laufenden betrieb
DE102018006890A1 (de) Technologien zur Verarbeitung von Netzpaketen durch einen intelligenten Netzwerk-Schnittstellenkontroller
DE102019109119A1 (de) Host-verwalteter kohärenter gerätespeicher
DE112013007724T5 (de) Gemeinsame Benutzung von Speicher und I/O-Diensten zwischen Knoten
DE112013007726T5 (de) Verbesserungen eines Zwischenverbindungs-Retimers
DE112017006523T5 (de) Retimer mit kurzer latenzzeit
DE102022104207A1 (de) Pooling von Netzwerkverarbeitungsressourcen
DE112016002909T5 (de) Flexible Interconnect-Architektur
DE102018127751A1 (de) Einheitlicher Adressraum für mehrere Verbindungen
DE202010018100U1 (de) Vorrichtung für ID-basierte Ströme über PCI-Express
DE112016006065T5 (de) Spekulative nummerierung von adressräumen für bus-einrichtungsfunktionen

Legal Events

Date Code Title Description
R130 Divisional application to

Ref document number: 102019009225

Country of ref document: DE