DE112013005044T5 - Ausführen von eingehenden PCIE-Schreiboperationen in einen Speicher und Partnereinrichtungen per Dualcast - Google Patents

Ausführen von eingehenden PCIE-Schreiboperationen in einen Speicher und Partnereinrichtungen per Dualcast Download PDF

Info

Publication number
DE112013005044T5
DE112013005044T5 DE112013005044.7T DE112013005044T DE112013005044T5 DE 112013005044 T5 DE112013005044 T5 DE 112013005044T5 DE 112013005044 T DE112013005044 T DE 112013005044T DE 112013005044 T5 DE112013005044 T5 DE 112013005044T5
Authority
DE
Germany
Prior art keywords
address
pcie
system memory
write request
incoming
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.)
Granted
Application number
DE112013005044.7T
Other languages
English (en)
Other versions
DE112013005044B4 (de
Inventor
Jayakrishna Guddeti
Luke Chang
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 DE112013005044T5 publication Critical patent/DE112013005044T5/de
Application granted granted Critical
Publication of DE112013005044B4 publication Critical patent/DE112013005044B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges
    • G06F13/404Coupling between buses using bus bridges with address mapping
    • 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
    • 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 Hardware Design (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

Verfahren und Vorrichtungen zur Unterstützung des Ausführens von eingehenden Systemspeicherschreiboperationen von PCIe-Einrichtungen in einen Speicher und eine PCIe-Partnereinrichtung per Dualcast. Eine eingehende Systemspeicherschreibanforderung von einer ersten PCIe-Einrichtung wird an einem PCIe-Stammkomplex empfangen, und die Speicheradresse wird überprüft, um zu bestimmen, ob sie innerhalb eines Adressfensters für Dualcast-Operationen fällt. Wenn dies der Fall ist, wird eine E-/A-Schreibanforderung aus der eingehenden Systemspeicherschreibanforderung erzeugt und an eine zweite PCIe-Einrichtung gesendet, die mit dem Adressfenster assoziiert ist. Während eines Parallelbetriebs wird die eingehende Original-Systemspeicherschreibanforderung an einen Systemagenten weitergeleitet, der so konfiguriert ist, dass er solche Schreibanforderungen empfängt.

Description

  • Technisches Gebiet
  • Das Gebiet der Erfindung betrifft im Allgemeinen Computersysteme und insbesondere, aber nicht ausschließlich, das Ausführen von eingehenden Schreiboperationen von PCIe-Einrichtungen in Speicher- und Partnereinrichtungen per Dualcast.
  • Stand der Technik
  • Computersysteme setzen typischerweise eine oder mehrere Zwischenverbindungen ein, um Kommunikation zwischen Systemkomponenten, wie beispielsweise zwischen Prozessoren und einem Speicher, zu ermöglichen. Zwischenverbindungen und/oder Erweiterungsschnittstellen können auch verwendet werden, um fest eingebaute und Add-on-Einrichtungen, wie beispielsweise E-/A(Eingabe-/Ausgabe)-Einrichtungen und Erweiterungskarten und dergleichen zu unterstützen. Für viele Jahre nach der Einführung des Personalcomputers war die Hauptform einer Zwischenverbindung ein paralleler Bus. Parallelbusstrukturen wurden sowohl für interne Datenübertragungen als auch Erweiterungsbusse, wie beispielsweise ISA (Industry Standard Architecture), MCA (Micro Channel Architecture), EISA (Extended Industry Standard Architecture) und VESA Local Bus, verwendet. In den frühen 1990iger Jahren führte die Intel Corporation den PCI(Peripheral Component Interconnect)-Computerbus ein. PCI verbesserte frühere Bustechnologien nicht nur durch Erhöhen der Busgeschwindigkeit, sondern auch durch Einführen von automatischer Konfiguration und transaktionsbasierten Datenübertragungen unter Verwendung von gemeinsam genutzten Adress- und Datenleitungen.
  • Im Laufe der Zeit nahmen die Taktraten von Computerprozessoren schneller zu als die Taktraten von parallelen Bussen. Als Ergebnis wurden Arbeitsauslastungen von Computern häufiger durch Zwischenverbindungsengpässe als durch die Prozessorgeschwindigkeit beschränkt. Obwohl parallele Busse die Übertragung einer großen Menge von Daten (z. B. 32 oder sogar 64 Bits gemäß PCI-X) bei jedem Zyklus unterstützen, werden ihre Taktraten durch Zeitverschiebungsüberlegungen beschränkt, die zu einer praktischen Grenze für die maximale Busgeschwindigkeit führen. Um dieses Problem zu überwinden, wurden serielle Hochgeschwindigkeits-Zwischenverbindungen entwickelt. Beispiele für frühe serielle Zwischenverbindungen umfassen Serial ATA, USB (Universal Serial Bus), FireWire und RapidIO.
  • Eine andere serielle Standardzwischenverbindung, die weit verbreitet ist, ist PCI Express, auch PCIe genannt, die im Jahre 2004 gemäß dem Standard PCIe 1.0 eingeführt wurde. PCIe wurde entwickelt, um ältere PCI- oder PCI-X-Standards zu ersetzen und gleichzeitig Legacy-Unterstützung bereitzustellen. PCIe setzt serielle Punkt-zu-Punkt-Links anstelle einer gemeinsam genutzten Parallelbusarchitektur ein. Jeder Link unterstützt einen Punkt-zu-Punkt-Kommunikationskanal zwischen zwei PCIe-Ports unter Verwendung einer oder mehrerer Lanes, wobei jede Lane einen bidirektionalen seriellen Link umfasst. Die Lanes werden physisch unter Verwendung einer Kreuzschienen-Switch-Architektur geleitet, welche Kommunikation zwischen mehreren Einrichtungen gleichzeitig unterstützt. Infolge der ihr innewohnenden Vorteile hat PCIe PCI als die vorherrschende Zwischenverbindung in den heutigen Personalcomputern abgelöst. PCIe ist ein Industriestandard, der von der PCI-SIG (Special Interest Group) verwaltet wird.
  • Vor kurzem hat die PCI-SIG eine Standardspezifikation für PCIe-Multicast hinzugefügt. Gemäß der PCIe-Multicast-Spezifikation, die in Abschnitt 6.14 der PCI Express® Basisspezifikation Revision 3.0 Version 1.0 definiert ist, kann eine PCIe-Initiatoreinrichtung unter Verwendung einer einzigen Schreibtransaktion in mehrere PCIe-Ziele schreiben. Die PCIe-Multicast-Spezifikation definiert jedoch nicht, wie Schreiboperationen unter Verwendung einer einzigen Schreibtransaktion von einer PCIe-Initiatoreinrichtung gleichzeitig in einen Systemspeicher und in eine PCIe-Partnereinrichtung implementiert werden sollen. Außerdem fügt die PCIe-Multicast-Spezifikation Komplexitäten zu verschiedenen PCIe-Einrichtungen hinzu, die konfiguriert werden müssen, um diese zusätzliche Funktionalität zu unterstützen. Im Gegensatz dazu wäre es vorteilhaft, Dualcast in einen Systemspeicher und eine PCI-Partnereinrichtung auf eine Weise durchführen zu können, die eine minimale Auswirkung auf die an solchen Transaktionen beteiligten Instanzen hat.
  • Kurze Beschreibung der Zeichnungen
  • Die vorstehenden Aspekte und viele der dazugehörigen Vorteile dieser Erfindung werden durch Bezugnahme auf die folgende ausführliche Beschreibung in Verbindung mit den beiliegenden Zeichnungen besser verständlich, wobei sich gleiche Bezugszeichen in allen Ansichten auf gleiche Teile beziehen, sofern nicht anders angegeben.
  • 1 ist eine grafische Darstellung einer generischen PCIe-Architektur;
  • 2 ist eine grafische Darstellung, welche die Schichten eines PCIe-Stapels und Einzelheiten von Paketierung/Depaketierung auf jeder Schicht veranschaulicht;
  • 3 ist eine Kombination eines schematischen Blocks und eines Nachrichtenflussdiagramms, welche das Ausführen einer eingehenden Speicherschreibtransaktion in einen Systemspeicher und in eine PCIe-Partnereinrichtung per Dualcast gemäß einer Ausführungsform veranschaulicht;
  • 4 veranschaulicht Dualcast eines beispielhaften Eingangsschreibtransaktionsstroms;
  • 5 ist eine schematische Darstellung, welche Einzelheiten eines 3-DW- und 4-DW-Speicheranforderungsheaders veranschaulicht, der mit einem 3-DW- oder 4-DW-Speicheranforderungs-Transaktionsschichtpaket assoziiert ist; und
  • 6 ist ein schematisches Blockdiagramm, welches ausgewählte Komponenten einer beispielhaften Prozessor- und Plattformkonfiguration veranschaulicht, über welche Aspekte der hierin offenbarten Ausführungsformen implementiert werden können.
  • Beschreibung der Ausführungsformen
  • Es werden hierin Ausführungsformen von Verfahren und Vorrichtungen zur Unterstützung des Ausführens von eingehenden Schreiboperationen von PCIe-Einrichtungen in Speicher- und PCIe-Partnereinrichtungen per Dualcast beschrieben. In der folgenden Beschreibung werden zahlreiche spezifische Einzelheiten dargelegt, um ein umfassendes Verständnis von Ausführungsformen der Erfindung zu vermitteln. Für einen Fachmann ist jedoch zu erkennen, dass die Erfindung auch ohne eine oder mehrere der spezifischen Einzelheiten oder mit anderen Verfahren, Komponenten, Materialien usw. realisiert werden kann. In anderen Fällen werden allgemein bekannte Strukturen, Materialien oder Operationen weder dargestellt noch ausführlich beschrieben, um eine Verkomplizierung von Aspekten der Erfindung zu vermeiden.
  • Die Bezugnahme auf „eine bestimmte Ausführungsform” oder „eine beliebige Ausführungsform” bedeutet die gesamte Spezifikation hindurch, dass ein bestimmtes Merkmal, eine bestimmte Struktur oder eine bestimmte Charakteristik, die in Verbindung mit der Ausführungsform beschrieben wird, in mindestens einer Ausführungsform der vorliegenden Erfindung enthalten ist. Demnach bezieht sich das Vorkommen der Ausdrücke „in einer bestimmten Ausführungsform” oder „in einer beliebigen Ausführungsform” an verschiedenen Stellen in der gesamten Spezifikation nicht unbedingt immer auf die gleiche Ausführungsform. Außerdem können die jeweiligen Merkmale, Strukturen oder Charakteristiken in einer oder mehreren Ausführungsformen in geeigneter Weise kombiniert werden.
  • Die hierin offenbarten Ausführungsformen betreffen Verfahren und Vorrichtungen zur Unterstützung des Ausführens von eingehenden Schreiboperationen von PCIe-Einrichtungen in Speicher- und PCIe-Partnereinrichtungen per Dualcast. Zum besseren Verständnis von Aspekten der Ausführungsformen wird die folgende kurze Erörterung einer generischen PCIe-Architektur bereitgestellt, die in 1 veranschaulicht ist.
  • Kern der PCIe-Architektur ist ein PCIe-Stammkomplex (RC) 100, der mit einem Prozessor 102 und einem Speicher 104 gekoppelt ist. Der PCIe-RC 100 ist so dargestellt, dass er drei Stammports 106-1, 106-2 und 106-3 umfasst. Der Stammport 106-1 ist über einen PCIe-Link 110 und einen PCIe-Port 112 mit einem PCIe-Endpunkt 108 verbunden. Der Stammport 106-2 ist mit einer PCIe-zu-PCI/PCI-X-Brücke 114 verbunden, die als Schnittstelle zwischen PCIe und einer Mehrzahl von PCI/PCI-X-Einrichtungen 116 verwendet wird. Der Stammport 106-3 ist über einen PCIe-Link 118 und einen PCIe-Port 120 mit einem Switch 116 verbunden. Der Switch 116 ist so dargestellt, dass er mit einem Paar von Legacy-Endpunkten 122 und 124 und einem Paar von PCIe-Endpunkten 126 und 128 verbunden ist. Diese Verbindungen werden durch die PCIe-Links 130, 132, 134 und 136 sowie die Ports 138, 140, 142, 144, 146, 148, 150 und 152 ermöglicht.
  • Ein Stammkomplex bezeichnet den Stamm einer E-/A(Eingangs-/Ausgangs)-Hierarchie, der das CPU/Speicher-Subsystem mit E/A verbindet. Wie in 1 veranschaulicht, kann ein Stammkomplex einen oder mehrere PCIe-Ports unterstützen. Jede Schnittstelle definiert einen getrennten Hierarchiebereich. Jeder Hierarchiebereich kann aus einem einzigen Endpunkt oder einer Subhierarchie bestehen, die einen oder mehrere Switch-Komponenten und Endpunkte enthält. Ein Stammkomplex kann optional ein Leiten von Partner-zu-Partner-Transaktionen zwischen Hierarchiebereichen unterstützen.
  • Endpunkt bezieht sich auf einen Funktionstyp, welcher entweder in seinem eigenen Namen oder im Namen einer anderen Nicht-PCIe-Einrichtung (einer anderen als einer PCI-Einrichtung oder Host-CPU), z. B. eines an PCIe angeschlossenen Grafikcontrollers oder eines PCIe-USB-Hostcontrollers, der Requester oder Completer einer PCIe-Transaktion sein kann. Endpunkte werden entweder als Legacy-, PCIe- oder im Stammkomplex integrierte Endpunkte klassifiziert.
  • PCIe unterstützt Punkt-zu-Punkt-Zwischenverbindung unter Verwendung von seriellen Links, die aus einer oder mehreren Lanes für jedes Senden und Empfangen bestehen. Ein PCIe-Link weist mindestens eine Lane auf – eine Lane stellt einen Satz von differenziellen Signalpaaren dar (ein Paar zum Senden, ein Paar zum Empfangen). Zum Skalieren der Bandbreite kann ein Link mehrere Lanes aggregieren, die mit xN bezeichnet werden, wobei N eine beliebige der unterstützten Linkbreiten sein kann. Zum Beispiel umfassen PCIe-Links ab der PCIe 3.0 Spezifikation Operationen für x1, x2, x4, x8, x12, x16 und x32 Lane-Breiten. Während der Hardware-Initialisierung wird jeder PCIe-Link nach einer Aushandlung von Lane-Breiten und Betriebsfrequenzen durch die beiden Agenten auf jeder Seite des Links aufgebaut.
  • Die grafische Darstellung 200 von 2 stellt Einzelheiten des PCIe-Schichtprotokolls und der TLP(Transaktionsschichtpaket)-Paketierung/-Depaketierung dar. Gemäß PCIe werden Daten zwischen zwei PCIe-Endpunkten oder -Ports, wie durch eine Einrichtung A und eine Einrichtung B dargestellt, in Paketform übertragen. Wie bereits erwähnt, umfassen PCIe-Links Punkt-zu-Punkt-Zwischenverbindungen mit einer einzigen oder mehreren Lanes. Außerdem sind die Punkt-zu-Punkt-Zwischenverbindungen in unidirektionalen Punkt-zu-Punkt-Zwischenverbindungspaaren in entgegengesetzten Richtungen konfiguriert, derart dass jedes Linkpaar bidirektionale Kommunikation unterstützt. Übertragungen gehen von einem Sender oder Transmitter ab und werden von einem Empfänger empfangen. Daten, die gesendet werden, werden über einen Sende(Tx)-Pfad gesendet, und entsprechende Daten werden über einen Empfangs(Rx)-Pfad empfangen. Die zwei Hauptklassen von Paketen, die zwischen PCIe-Einrichtungen ausgetauscht werden, sind Transaktionsschichtpakete (TLPs für engl. Transaction Lager Packets) auf der höheren Ebene und Link-Aufrechterhaltungspakete auf der niedrigen Ebene, genannt Data-Link-Schicht-Pakete (DLLPs für engl. Data Link Layer Packets). Zusammen befähigen die verschiedenen TLPs und DLLPs zwei PCIe-Einrichtungen zum zuverlässigen Durchführen von Speicher-, E-/A- und Konfigurationsraumtransaktionen und Verwenden von Nachrichten zum Auslösen von Leistungsverwaltungsereignissen, Erzeugen von Unterbrechungen, Melden von Fehlern usw.
  • Die drei unteren Schichten des PCIe-Standards umfassen eine Transaktionsschicht, eine Data-Link-Schicht und eine physikalische (PHY) Schicht. Demgemäß ist jede der Einrichtungen A und B so dargestellt, dass sie eine Transaktionsschicht (Block) 204, eine Data-Link-Schicht (Block) 206 und eine physikalische Schicht (Block) 208 umfasst. Eine Initiatoreinrichtung (z. B. Einrichtung A in diesem Beispiel) erzeugt Daten 210, die an eine Empfängereinrichtung (z. B. Einrichtung B) gesendet werden sollen und dann von den PCIe-Schichten paketiert und über den Link gesendet werden. Im Kontext einer PCIe-Transaktion wird er Initiator Requester genannt, und der Empfänger wird Completer genannt.
  • Auf der Transaktionsschicht werden die Daten zu einem oder mehreren Paketen paketiert, die ein Paketformat 212 aufweisen, das einen Header (HDR), die Paketnutzdaten (Data) und einen Digest umfasst. Auf der Data-Link-Schicht wird eine Reihenfolgenummer (SeqNum) zum Anfang des Pakets hinzugefügt, während gleichzeitig ein CRC-Wert an das Ende angehängt wird, um ein Paketformat 214 zu bilden. Das Paketformat wird auf der physikalischen Schicht durch Hinzufügen von STP- und Endkontroll(K)-Zeichen weiter erweitert, um ein Paketformat 216 zu bilden. Dann wird das Paket über den Link gesendet, um vom Empfänger (Einrichtung B) unter Verwendung der umgekehrten Reihenfolge verarbeitet zu werden, um schließlich die Originaldaten 210 zu ergeben.
  • 3 stellt eine beispielhafte Implementierung des Ausführens von eingehenden Speicherschreiboperationen per Dualcast gemäß einer Ausführungsform dar. Die Kernfunktionalität zum Unterstützen von Dualcast wird über einen PCIe-Dualcast-Logikblock 300 in einem PCIe-Stammkomplex 302 implementiert. Der PCIe-Stammkomplex ist so dargestellt, dass er zwei Stammports 304 und 306 umfasst, mit welchen jeweilige PCIe-Einrichtungen 308 und 310 (auch als PCIe-Einrichtungen 1 und 2 beschriftet und bezeichnet) über PCIe-Links 1 und 2 in Kommunikation verbunden sind. Die grafische Darstellung von 3 umfasst ferner einen Systemagenten 312 und einen Systemspeicher 314.
  • Die PCIe-Einrichtung 308 erzeugt ein Transaktionsschichtpaket (TLP) 316, das eine eingehende (System)speicherschreiboperation umfasst, die einen PCIe-Header 318 und Daten 320 umfasst, die zwei Cache-Zeilen umfassen. Das TLP 316 wird von der PCIe-Einrichtung 308 über den PCIe-Link 1 an den PCIe-Stammkomplex 302 weitergeleitet, wo es am Stammport 304 empfangen und zum PCIe-Dualcast-Logikblock 300 weitergeleitet wird. In Reaktion auf den Empfang des TLPs 316 überprüft der PCIe-Dualcast-Logikblock 300 den PCIe-Header 318 des Pakets und identifiziert es basierend auf einem entsprechenden Wert in einem Typ-Feld (siehe 5 für weitere Einzelheiten von TLP-Header-Feldern) als eine eingehende Schreiboperation in den Speicher.
  • Gemäß Aspekten der hierin offenbarten Ausführungsformen werden Operationen zum Durchführen von Dualcast von selektiven eingehenden PCIe-Speicherschreiboperationen, die an Systemspeicheradressen innerhalb entsprechender Adressfenster (z. B. Bereichen von Adressen) adressiert sind, durch den PCIe-Dualcast-Logikblock 300 ermöglicht. In einer Ausführungsform wird eine Liste 322 von Adressen für eingehende Dualcast-Schreiboperationen eingesetzt, um zu bestimmen: a) ob Dualcast-Operationen anwendbar sind; b) wenn dies der Fall ist, welche PCIe-Einrichtung der Dualcast(Partner)-Zieleinrichtung entspricht; und c) wie Adressübersetzung implementiert werden soll. Wie veranschaulicht, umfasst die Liste 322 von Adressen für eingehende Dualcast-Schreiboperationen mehrere Adressbereiche, die jeweilige Adressfenster 324 umfassen. Im Allgemeinen können die Adressbereiche unter Verwendung von Volladressen (worunter z. B. 32-Bit- oder 64-Bit-Volladressen zu verstehen sind, die den Bereich für jede Adresse definieren), unter Verwendung einer Basisadresse in Kombination mit Adress-Offsets oder unter Verwendung eines anderen Schemas explizit definiert werden, über welches Adressfenster spezifiziert und abgeleitet werden können. Zum Beispiel setzt die beispielhafte Zuordnung, die durch die Liste 322 von Adressen für eingehende Dualcast-Schreiboperationen veranschaulicht ist, eine Basisadresse plus Adressbereiche ein, die von der Basisadresse versetzt (offset) sind. In einer Ausführungsform weist jeder Offset-Adressbereich eine feste Größe auf, und der Offset-Adressbereich ist einfach ein Vielfaches eines ganzzahligen Multiplikators der festen Größe. Zum Beispiel weisen die beiden oberen Adressbereiche in der Liste 322 von Adressen für eingehende Dualcast-Schreiboperationen eine Größe von 1000 auf und sind numerisch benachbart. Wie durch den letzten Bereich n000–n999 veranschaulicht, könnten diese Bereiche einfach durch eine ganze Zahl n definiert werden. Um den Adressbereich abzuleiten, würde die ganze Zahl n mit der nominalen Adressfenstergröße multipliziert. Außerdem könnten die gleiche ganze Zahl n eine entsprechende PCIe-Partnereinrichtung definieren, für welche das Adressfenster gilt, obwohl dies nicht erforderlich ist, da Zuordnungen zwischen Adressfenstern und PCIe-Partnereinrichtungen explizit definiert werden können. Zusätzlich zu Adressfenstern fester Größe können auch Adressfenster veränderlicher Größe implementiert werden.
  • Im veranschaulichten Beispiel von 3 umfasst der PCIe-Header 316 Adressfelddaten (nicht dargestellt), welche anzeigen, dass die Startadresse für die Cache-Zeilen, welche die Daten 320 umfassen, im Bereich der Basisadresse + 2000–2999 ist. Dies führt zu einem Adress-„Treffer” für die Liste 322 von eingehenden Dualcast-Schreiboperationen, so dass Dualcast der eingehenden Speicherschreiboperation durchzuführen ist. In Fällen, in welchen die Adresse nicht innerhalb eines Dualcast-Adressfensters fällt, das für eine PCIe-Partnereinrichtung definiert ist, wird die Speicherschreibtransaktion in der herkömmlichen Weise als Unicast-Transaktion abgewickelt.
  • Gemäß einer Ausführungsform erzeugt das Ausführen einer eingehenden Speicherschreiboperation per Dualcast eine Replik eines Original-TLPs entsprechend der eingehenden Speicherschreiboperation mit einem Header, der eine E-/A-Schreibtransaktion spezifiziert, die an die PCIe-Partnereinrichtung adressiert ist, die mit der Treffer-Adresse assoziiert ist. Dies ist in 3 als TLP 316a veranschaulicht, wobei 'a' zu TLP 316 hinzugefügt ist, um auf die Ähnlichkeit zwischen den beiden Paketen hinzuweisen. Es ist zu erwähnen, dass TLP 316 und TLP 316a nicht vollkommen identisch sind, da identische Pakete identische Header haben und demnach ans gleiche Ziel (wie durch die Header-Adressinformationen definiert) weitergeleitet würden. Stattdessen sind Daten in anwendbaren Feldern des Paket-Headers 318a von TLP 316a so abgeändert, dass TLP 316a zur entsprechenden PCIe-Einrichtung geleitet wird, wie durch die Liste 322 von Adressen für eingehende Dualcast-Schreiboperationen definiert.
  • Zurück zur Liste 322 von Adressen für eingehende Dualcast-Schreiboperationen zeigt die Zuordnung für den PCIe-Paket-Header an, dass er einer eingehenden Speicherschreiboperation mit einer Startadresse im Bereich der Basisadresse + 2000–2999 entspricht, der die PCIe-Zieleinrichtung als Einrichtung 2 (d. h. PCIe-Einrichtung 310) identifiziert. Demgemäß werden Daten im PCIe-Header 318a erzeugt, um eine E-/A-Schreibanforderung zur PCIe-Einrichtung 310 zuzuordnen.
  • In einer Ausführungsform wird ein 32-Bit-Adressraum für PCIe-E-/A-Einrichtungen verwendet, während ein 64-Bit-Adressraum für den Systemspeicher verwendet wird. Demgemäß wird ein Mechanismus zum Übersetzen der 64-Bit-Speicheradresse (entsprechend der Cache-Zeilenstartadresse) in eine 32-Bit-Adresse eingesetzt, die dem Speicher in einer anwendbaren PCIe-Partnerzieleinrichtung zugeordnet wird. In einer Ausführungsform werden die Basisadressund Offset-Adressbereiche derart konfiguriert, dass die Adressfenster für die PCIe-Zieleinrichtungen den Offsets entsprechen, die von den entsprechenden Speicheradressen im Systemspeicher verwendet werden. Zum Beispiel weist das Betriebssystem einer Plattform typischerweise Abschnitte des Systemspeichers der Plattform für jede von mehreren PCIe-Einrichtungen zu, die während des Systemstarts aufgezählt werden. Die Größe der Speicherzuweisung für eine bestimmte PCIe-Einrichtung hängt im Allgemeinen vom jeweiligen Typ der PCIe-Einrichtung ab, wobei einigen Klassen von Einrichtungen größere Blöcke als anderen zugewiesen werden.
  • Ein Beispiel dieses Adressierschemas ist in 5 veranschaulicht. Der obere TLP-Header (4-DW-Header 500) in der grafischen Darstellung zeigt Einzelheiten von Feldern für einen 64-Bit-Speicheranforderungsheader, der vier Doppelwörter (4 DW) einsetzt. Der untere TLP-Header (3-DW-Header 502) in der grafischen Darstellung zeigt Einzelheiten von Feldern für einen 32-Bit-Speicheranforderungsheader, der drei Doppelwörter (3 DW) einsetzt. Ein ähnliches 3-DW-Adressierschema wird für PCIe-E-/A-Anforderungen verwendet, wobei der Unterschied zwischen einer Speicheranforderung und einer E-/A-Anforderung durch den Wert im Typ-Feld definiert wird. In einer Ausführungsform spezifiziert die Adresse, die im Adressfeld [63:32] beginnend bei Byte 8 des 4-DW-Headers 500 spezifiziert ist, die Basisadresse der eingehenden Speicherschreibanforderung. Indessen sind Adressen, die in den Adressfeldern [31:2] sowohl des 4-DW-Headers 500 als auch des 3-DW-Headers 502 spezifiziert sind, identisch und definieren jeweils die Offset-Adresse der Schreiboperation und die 32-Bit-Adresse der E-/A-Schreiboperation für die PCIe-Zieleinrichtung.
  • Zurück zu 3 werden vom PCIe-Dualcast-Logikblock 300 in Verbindung mit dem Bestimmen von anwendbaren Adressen und der PCIe-Zieleinrichtung Operationen zum Erzeugen von Dualcast-TLPs durchgeführt. Das Original-TLP 316 ist eine eingehende Speicherschreiboperation, und demgemäß wird dieses TLP auf die herkömmliche Weise (vom Standpunkt von Plattformkomponenten zum Ermöglichen solcher Transaktionen) verarbeitet. Demgemäß wird das Original-TLP 316 (oder eine Kopie von TLP 316) vom PCIe-Dualcast-Logikblock 300 an den Systemagenten 312 weitergeleitet. Der Systemagent 312 veranschaulicht einen Systemspeicheragenten und/oder andere Systeminstanzen, der/die (nach Bedarf) zum Übersetzen von eingehenden Speicherschreibanforderungen von PCIe-Einrichtungen, die über PCI-Zwischenverbindungen unter Verwendung des PCIe-Protokolls gesendet werden, in ein anwendbares Protokoll zum Unterstützen von entsprechenden Systemspeicherschreibtransaktionen verwendet wird/werden.
  • In Abhängigkeit von der jeweiligen Architektur der Plattform und/oder der CPU (d. h. des Prozessors) kann auf den Systemspeicher unter Verwendung der PCIe direkt zugegriffen werden oder nicht. Zum Beispiel unterstützen einige Architekturen das DMI(Direct Memory Interface)-Protokoll, welches PCIe einsetzt, aber ein Zwischentransportprotokoll zwischen dem PCIe-Stammkomplex und einem DMI-Agenten verwenden kann, der wiederum mit einer Speichersteuerung kommuniziert, welche die Interaktion mit dem Systemspeicher zum Unterstützen von Speichertransaktionen steuert. Üblicher ist es, dass ein anderer Typ von Zwischenverbindung und/oder Protokoll zum Abwickeln von Speichertransaktionen verwendet wird, wie beispielsweise die Architektur, die im Folgenden unter Bezugnahme auf 6 beschrieben wird. Ein wichtiger Grund für die Verwendung eines anderen Protokolls für Speichertransaktionen ist die Notwendigkeit zur Unterstützung von Kohärenz. Daher wird in modernen Prozessorarchitekturen ein kohärentes Protokoll, wie beispielsweise QuickPath Interconnect® (QPI) von der Intel® Corporation, verwendet. Es kann sogar Implementierungen geben, bei welchen ein kohärentes Protokoll, wie beispielsweise QPI, über PCIe-Zwischenverbindungsverdrahtung implementiert ist. In allen diesen Fällen müssen die TLPs an einem bestimmten Punkt neu formatiert werden, um ein anderes Protokoll als PCIe zu unterstützen, um die Durchführung der Speichertransaktion zu ermöglichen. Obwohl in 3 der Einfachheit und Klarheit halber als Einzelblock dargestellt, stellt der Systemagent 312 demgemäß eine einzelne oder eine Kombination von Schnittstellen und/oder Agenten zwischen dem PCIe-Stammkomplex 302 und dem Systemspeicher 314 zum Ausführen dieser Funktion dar.
  • Für Architekturen, die ein anderes Protokoll für Speichertransaktionen als PCIe einsetzen, werden der Header und die Nutzdaten des TLPs 316 gemäß dem Speichertransaktionsprotokoll neu formatiert, um ein Speichertransaktionspaket 326 zu bilden, das einen Speichertransaktionsheader 328 umfasst. Die Transaktionsnutzdaten (z. B. die Daten 320, die zwei Cache-Zeilen umfassen) bleiben indessen gleich. Das Endergebnis der ersten Hälfte der PCIe-Dualcast-Operation ist, dass die Nutzdaten (z. B. Cache-Zeilendaten) eines eingehenden Speicherschreib-TLPs (316), das von einer PCIe-Einrichtung (308) abgeht, an einer durch den PCIe-Header (318) des TLPs definierten Adresse in den Systemspeicher geschrieben werden.
  • Die zweite Hälfte der PCIe-Dualcast-Operation wird eingesetzt, um ein TLP mit replizierten Daten zu erzeugen, das an eine PCIe-Partnereinrichtung gerichtet wird, die in diesem Fall die PCIe-Einrichtung 310 ist. Demgemäß erzeugt der PCIe-Dualcast-Logikblock 300 ein TLP 316a mit einem PCIe-Header 318a, der eine neu zugeordnete Adresse enthält, die aus der Liste 322 von Adressen für eingehende Dualcast-Schreiboperationen abgeleitet ist, und die innerhalb des Adressfensters ist, das für die PCIe-Einrichtung 2 (d. h. PCIe-Einrichtung 310) definiert ist. Das TLP 316a wird dann über den Stammport 306 über den PCIe-Link 2 zur PCIe-Einrichtung 310 geleitet und an der PCIe-Einrichtung 310 in der herkömmlichen Weise behandelt, die zum Behandeln von E-/A-Schreib-TLPs verwendet wird. Wie dargestellt, ist das Ergebnis, dass die Daten 320, welche die Cache-Zeilen-Originaldaten umfassen, in einen entsprechenden Abschnitt des Einrichtungsspeichers 330 der PCIe-Einrichtung 310 geschrieben werden.
  • 4 stellt ein Beispiel einer Eingangsschreibtransaktion dar, die zwei TLPs, 400 und 402, umfasst, die in einer ähnlichen Weise verarbeitet werden wie der, die zuvor für TLP 316 beschrieben wurde. TLP 400 umfasst einen PCIe-Header HDR1 und Daten, welche Cache-Zeilen CL1A und CL1B umfassen, während TLP 402 einen PCIe-Header HDR2 und Daten umfasst, welche Cache-Zeilen CL2A und CL2B umfassen. Wenn TLP 400 am PCIe-Dualcast-Logikblock 300 empfangen und verarbeitet wird, wird eine Kopie von TLP 400 (oder einfach die Instanz des Original-TLPs 400) mit Daten, welche die Cache-Zeilen CL1A und CL1B umfassen, an den Systemagenten 312 weitergeleitet, welcher jegliche anwendbare Neuformatierung ermöglicht, um eine Speicherschreibtransaktion zu erzeugen, um die Cache-Zeilen CL1A und CL1B an der in HDR1 spezifizierten Speicheradresse in den Systemspeicher 314 zu schreiben. Gleichzeitig (d. h. während des im Wesentlichen gleichen Zeitrahmens) wird ein zweites TLP mit einem modifizierten Header HDR1a, welcher der Adresse der PCIe-Einrichtung 310 zugeordnet ist, und mit Daten, welche die Cache-Zeilen CL1A und CL1B umfassen, aus TLP 400 erzeugt und über den Stammport 306 und den PCIe-Link 2 an die PCIe-Einrichtung 310 gesendet. Eine ähnliche Verarbeitung wird für TLP 402 durchgeführt, wie veranschaulicht, mit der Ausnahme, dass in diesem Fall die anwendbaren Header HDR2 und HDR2a sind, und die anwendbaren Cache-Zeilendaten CL2A und CL2B sind. Darüber hinaus würde eine ähnliche Verarbeitung für nachfolgende TPLs in einem typischen Eingangsschreibtransaktionsstrom implementiert, der zum Schreiben in mehrere Cache-Zeilen oder einen Block des Systemspeichers verwendet wird.
  • Im Allgemeinen kann der PCIe-Dualcast-Logikblock 322 in einem PCIe-Stammkomplex in verschiedenen Typen von Plattformarchitekturen und/oder Prozessoren implementiert werden. Historisch wurden PCIe-Stammkomplexe in einen E-/A-Chipsatz eingebaut, der außerhalb einer CPU war. Heutige Prozessorarchitekturen umfassen jedoch typischerweise Systemchip(SoC)-Architekturen, welche chipintegrierte Logik und Schaltungsanordnung zum Implementieren eines PCIe-Stammkomplexes und entsprechender Schnittstellen und Agenten umfassen. Ein Beispiel einer Plattformarchitektur, die einen SoC-Prozessor umfasst, der einen PCIe-Stammkomplex 302 implementiert, der einen PCIe-Dualcast-Logikblock 322 umfasst, ist in 6 dargestellt.
  • Die Plattformarchitektur 600 stellt einen 8-Kern-Prozessor 601 dar, welcher Prozessorkerne 602 (bezeichnet als Core0 bis Core7) umfasst, die über Knoten 608 und eine Ring-Zwischenverbindung 610 mit jeweiligen Zwischenspeicherkästchen 604 (bezeichnet als Cbo 0 bis 7, auch CBOXes (für engl. caching boxes) genannt) und Caches der letzten Ebene (LLCs für engl. last level caches) 606 (bezeichnet als LLC0 bis LLC7) gekoppelt sind. Über entsprechende Knoten sind an die Ring-Zwischenverbindung 610 auch ein QPI-Agent 612, ein integrierter E-/A(IIO für engl. Integrated Input/Output)-Block 614 und ein Home-Agent 616 angeschlossen. Der Home-Agent 616 ist mit einer Speichersteuerung 618 gekoppelt, die zum Zugreifen auf den Systemspeicher 314 über einen oder mehrere Speicherkanäle 620 verwendet wird. Der QPI-Agent 612 ist so dargestellt, dass er mit einem Paar von QPI-Links 622 und 624 gekoppelt ist, die es dem Prozessor 601 ermöglichen, über QPI mit anderen Plattformkomponenten (nicht dargestellt) zu kommunizieren.
  • Im Allgemeinen sind die Komponenten des Prozessors 801 über verschiedene Typen von Zwischenverbindungen miteinander verbunden, die der Einfachheit halber als zweispitzige Pfeile dargestellt sind. Wie bereits erwähnt, setzt der Prozessor 801 in einer Ausführungsform eine Ring-Zwischenverbindung 810 ein. Optional können die Prozessorkerne und zugehörigen Komponenten und Agenten über eine Zwischenverbindungs-Fabric (z. B. eine vermaschte 2D-Zwischenverbindung) verbunden sein. Die Zwischenverbindungen können Punkt-zu-Punkt-Zwischenverbindungen (z. B. QPI, PCIe, chipintegriertes Intel System Fabric (IOSF), Open Core Protocol (OCP) usw.) sowie Busse und andere Typen von Zwischenverbindungsstrukturen umfassen.
  • Der IIO-Block in SoC-Prozessoren ist so konfiguriert, dass er E-/A-Schnittstellenoperationen ähnlich jenen ausführt, die von einem E-/A-Chip oder -Chipsatz in einer herkömmlichen Northbridge/Southbridge-Plattformarchitektur ausgeführt werden. Statt dass diese Funktionen jedoch durch einen separaten Chip oder Chipsatz ausgeführt werden, der über eine externe Zwischenverbindung mit einem Prozessor gekoppelt ist, werden sie nun durch Schaltungsanordnung und Logik implementiert, die in die Prozessorpackung (d. h. den SoC) selbst eingebettet ist. Neben anderen Vorteilen unterstützt dies höhere Bandbreiten, als bei herkömmlichen externen Zwischenverbindungen verfügbar sind.
  • Ausgewählte Funktionsblöcke sind für den IIO-Block 614 in 6 dargestellt. Diese umfassen eine/n DMI-Agenten bzw. -Schnittstelle 626, der/die einen Port 628 umfasst, der mit einem DMI-x4-Link 630 gekoppelt ist. Der IIO-Block umfasst einen PCIe-Agenten 631, der mit einem PCIe-Stammkomplex 302 gekoppelt ist, der einen PCIe-Dualcast-Stammlogikblock 300 umfasst, und PCIe-Stammports 630, 632 und 634. Der PCIe-Stammport 630 stellt eine Schnittstelle zu einem PCIe-x8-Link 636 bereit. Die PCIe-Stammports 632 und 634 stellen PCIe-Schnittstellen zu PCIe-x16-Links 638 und 640 bereit, die jeweils mit PCIe-Ports 642 und 644 an PCIe-Einrichtungen 646 und 648 verbunden sind.
  • Gemäß der Plattformarchitektur 600 wird eine eingehende Speicherschreiboperation, die für eine Cache-Zeile im Systemspeicher 314 bestimmt ist, auf die folgende Art und Weise abgewickelt. Die eingehende Speicherschreiboperation wird als ein TLP an einem der PCIe-Stammports 630, 632 oder 634 empfangen und an den PCIe-Dualcast-Logikblock 300 weitergeleitet. In Reaktion auf ein Bestimmen, dass das TLP eine eingehende Speicherschreiboperation ist, die an eine Cache-Zeile mit einer Adresse innerhalb eines Adressraums des Systemspeichers 312 adressiert ist, wird eine kohärente QPI-Speicherschreibtransaktion zum Schreiben in eine Cache-Zeile im Systemspeicher 314 durch den PCI-Agenten 321 erzeugt und auf dem Ring 610 angeordnet, wo sie zum Home-Agenten 616 geleitet wird. Der Home-Agent 616 enthält Cache-Zuordnungsinformationen, die eine aktuelle Cache-Ebene und einen aktuellen Cache für jede Cache-Zeile mit einer Adresse identifizieren, welche dem Adressraum des Systemspeichers 314 zugeordnet ist, derart dass die eingehenden Speicherschreibdaten in den entsprechenden Speicherort geschrieben werden. Zum Beispiel kann eine gültige Kopie einer Cache-Zeile im Systemspeicher angeordnet oder könnte in einem LLC oder in einem L1- oder L2-Cache zwischengespeichert werden, der mit einem Kern assoziiert ist. Zusätzlich zum Home-Agenten 616 kann der Prozessor 601 auch andere Zwischenspeicher-Agenten (in 6 nicht dargestellt) einsetzen, um Cache-Kohärenzoperationen zu ermöglichen. Demgemäß werden der Speicherort einer gültigen Kopie und der Zustand der Cache-Zeile durch den Home-Agenten 616 und/oder andere Zwischenspeicheragenten unter Verwendung von anwendbaren Kohärenznachrichten entsprechend dem QPI-Protokoll, wie beispielsweise Speicherschnüffelnachrichten, bestimmt. Das Endergebnis ist, dass die gültige Kopie der Cache-Zeile aktualisiert wird und, wenn die Aktualisierung der Cache-Zeile zu einer modifizierten Cache-Zeile führt, eine Kopie der modifizierten Cache-Zeile in den Systemspeicher geschrieben wird.
  • Wie bereits erwähnt, wird viel von der Funktionalität zum Ermöglichen des Ausführens von eingehenden Schreiboperationen in einen Speicher per Dualcast durch den PCIe-Dualcast-Logikblock 300 implementiert. Typischerweise würde diese Funktionalität unter Verwendung von eingebetteter Logik implementiert, die einem Funktionsblock des PCIe-Stammkomplexes oder dergleichen in einer integrierten Schaltung oder einem SoC, wie beispielsweise dem Prozessor 601, entspricht. Techniken zum Einbetten von Logik in Funktionsblöcke auf Prozessoren und dergleichen sind auf dem Fachgebiet der Prozessoren allgemein bekannt, weshalb zusätzliche Einzelheiten dazu hierin nicht bereitgestellt werden.
  • Gemäß verschiedenen Ausführungsformen können die ersten und zweiten PCIe-Einrichtungen (das heißt, die Ursprungseinrichtung der eingehenden Systemspeicherschreiboperation und die Empfangseinrichtung der Dualcast-Schreibanforderung) Einrichtungen umfassen, für welche im Speicher zugeordneter E-/A-Raum verwendet wird. Zum Beispiel können die Einrichtungen ein Paar von Netzschnittstellensteuerungen (NICs für engl. Network Interface Controllers), Speichersteuerungen oder Infiniband-Host-Adapter umfassen.
  • Die hierin offenbarten Ausführungsformen von PCIe-Dualcast stellen bedeutende Vorteile gegenüber bestehenden Techniken bereit. Insbesondere reduziert die Technik PCIe-Eingangsbandbreite. Gemäß dem PCIe-Dualcast-Ansatz wird eine einzelne Speicherschreiboperation als eine eingehende Transaktion empfangen, und der Stammkomplex repliziert diese Schreibdaten in zwei Orte: in das Originalziel (den Speicher) und in eine Partnereinrichtung. Gemäß dem aktuellen Ansatz würde die PCIe-Einrichtung die Schreibdaten zweimal replizieren müssen, was die Bandbreite verdoppelt. Zum Beispiel würde eine Einrichtung unter Verwendung von Dualcast 5 GB/s PCIe-Bandbreite benötigen, während der herkömmliche Ansatz 10 GB/s benötigen würde.
  • Obwohl einige Ausführungsformen in Bezug auf bestimmte Implementierungen beschrieben wurden, sind gemäß einigen Ausführungsformen andere Implementierungen möglich. Außerdem muss die Anordnung und/oder die Reihenfolge von Elementen oder anderen Merkmalen, die in den Zeichnungen veranschaulicht sind und/oder hierin beschrieben werden, nicht in der konkret dargestellten und beschriebenen Art und Weise angeordnet sein. Gemäß einigen Ausführungsformen sind viele andere Anordnungen möglich. Die Dualcast-Technik ist außerdem transparent für die PCIe-Einrichtungen, was bedeutet, dass die Technik ohne Erweiterung von bestehenden PCIe-Einrichtungen oder ihre Einrichtungstreiber implementiert werden kann (es ist zu erwähnen, dass der PCIe-Stammkomplex selbst erweitert wird, um Dualcast zu unterstützen). Dies steht in krassem Gegensatz zur vorgeschlagenen PCIe-Multicast-Technik, die eine Modifikation einer oder mehrerer der PCIe-Einrichtungen und Treiber erfordert.
  • In den Figuren hierin können Elemente in einigen Fällen jeweils das gleiche Bezugszeichen oder ein verschiedenes Bezugszeichen aufweisen, um darauf hinzuweisen, dass die dargestellten Elemente ähnlich und/oder verschieden sein könnten. Ein Element kann jedoch flexibel genug sein, um verschiedene Implementierungen zu haben und mit einigen oder allen der hierin dargestellten oder beschriebenen Architekturen zusammenzuwirken. Die verschiedenen Elemente, die in den Figuren dargestellt sind, können gleich oder verschieden sein. Welches Element als ein erstes Element und welches als ein zweites Element bezeichnet wird, ist willkürlich.
  • In der Beschreibung und/oder den Ansprüchen können die Begriffe „gekoppelt” und „verbunden” zusammen mit ihren Ableitungen verwendet werden. Es versteht sich von selbst, dass diese Begriffe nicht als Synonyme zueinander gedacht sind. Vielmehr kann in bestimmten Ausführungsformen „verbunden” verwendet werden, um anzuzeigen, dass zwei oder mehr Elemente in direktem physischem oder elektrischem Kontakt zueinander stehen. „Gekoppelt” kann bedeuten, dass zwei oder mehr Elemente in direktem physischem oder elektrischem Kontakt stehen. „Gekoppelt” kann jedoch auch bedeuten, dass zwei oder mehr Elemente nicht in direktem Kontakt zueinander stehen, aber dennoch zusammenwirken und/oder miteinander interagieren.
  • Ein Algorithmus wird hierin und im Allgemeinen als eine selbständige Folge von Handlungen oder Operationen angesehen, die zu einem gewünschten Ergebnis führen. Diese umfassen physikalische Handhabung von physikalischen Größen. Üblicherweise, wenn auch nicht notwendigerweise, können die Größen die Form von elektrischen oder magnetischen Signalen annehmen, die gespeichert, übertragen, kombiniert, verglichen oder anderweitig gehandhabt werden können. Es hat sich manchmal als praktisch erwiesen, grundsätzlich aus Gründen des allgemeinen Gebrauchs, sich auf diese Signale als Bits, Werte, Elemente, Symbole, Zeichen, Terme, Zahlen oder dergleichen zu beziehen. Es versteht sich jedoch von selbst, dass alle diese und ähnliche Ausdrücke mit den entsprechenden physikalischen Größen zu assoziieren und lediglich praktische Bezeichnungen sind, die auf diese Größen angewendet werden.
  • Einige Ausführungsformen können in einer von Hardware, Firmware und Software oder einer Kombination davon implementiert sein. Einige Ausführungsformen können außerdem als Anweisungen implementiert sein, die auf einem maschinenlesbaren Medium gespeichert sind und die von einer Computerplattform ausgelesen und ausgeführt werden können, um die hierin beschriebenen Operationen auszuführen. Ein maschinenlesbares Medium kann jeden Mechanismus zum Speichern oder Senden von Informationen in einer Form umfassen, die von einer Maschine (z. B. einem Computer) gelesen werden kann. Zum Beispiel kann ein maschinenlesbares Medium Festwertspeicher (ROM für engl. read only memory); Direktzugriffsspeicher (RAM für engl. random access memory); Magnetplatten-Speichermedien; ein optisches Speichermedium; Flash-Speichereinrichtungen usw. umfassen.
  • Eine Ausführungsform ist eine Implementierung oder ein Beispiel der Erfindungen. Die Bezugnahme auf „eine bestimmte Ausführungsform”, „eine beliebige Ausführungsform”, „einige Ausführungsformen” oder „andere Ausführungsformen” in der Spezifikation bedeutet, dass ein bestimmtes Merkmal, eine bestimmte Struktur oder eine bestimmte Charakteristik, die in Verbindung mit den Ausführungsformen beschrieben wird, in mindestens einigen Ausführungsformen, aber nicht unbedingt in allen Ausführungsformen der Erfindungen enthalten ist. Die verschiedentlich auftretenden Begriffe „eine beliebige Ausführungsform”, „eine bestimmte Ausführung” oder „einige Ausführungsformen” beziehen sich nicht unbedingt alle auf die gleichen Ausführungsformen.
  • Es müssen nicht alle der hierin beschriebenen und dargestellten Komponenten, Merkmale, Strukturen, Charakteristiken usw. in einer bestimmten Ausführungsform oder bestimmten Ausführungsformen enthalten sein. Wenn die Spezifikation angibt, dass Komponenten, Merkmale, Strukturen oder Charakteristiken enthalten sein „mögen”, „könnten” oder „können”, müssen diese bestimmten Komponenten, Merkmale, Strukturen oder Charakteristiken nicht enthalten sein. Wenn die Spezifikation oder ein Anspruch sich auf „ein” Element bezieht, bedeutet dies nicht, dass nur eines des Elements vorhanden ist. Wenn die Spezifikation oder ein Anspruch sich auf „ein zusätzliches” Element bezieht, schließt dies nicht aus, dass mehr als eines des zusätzlichen Elements vorhanden ist.
  • Die vorstehende Beschreibung von beispielhaften Ausführungsformen der Erfindung, einschließlich der Beschreibung in der Zusammenfassung, will nicht erschöpfend sein oder die Erfindung auf die konkreten offenbarten Formen beschränken. Obwohl hierin spezifische Ausführungsformen der Erfindung und Beispiele dafür zu Veranschaulichungszwecken beschrieben werden, sind verschiedene gleichwertige Modifikationen innerhalb des Schutzbereichs der Erfindung möglich, wie für die Fachleute zu erkennen ist.
  • Diese Modifikationen können an der Erfindung angesichts der zuvor ausführlich dargelegten Beschreibung vorgenommen werden. Die in den folgenden Ansprüchen verwendeten Begriffe sollten nicht dahingehend ausgelegt werden, dass sie die Erfindung auf die spezifischen Ausführungsformen beschränken, die in der Spezifikation und den Zeichnungen offenbart werden. Vielmehr soll der Schutzbereich der Erfindung vollkommen durch die folgenden Ansprüche bestimmt werden, welche gemäß den festgelegten Anspruchsauslegungslehren auszulegen sind.

Claims (27)

  1. Verfahren, umfassend: Empfangen einer eingehenden Systemspeicherschreibanforderung von einer ersten PCIe(Peripheral Component Interconnect Express)-Einrichtung; und Ausführen einer Schreibanforderung, die der eingehenden Systemspeicherschreibanforderung entspricht, in jedes von einem Systemspeicher und einer zweiten PCIe-Einrichtung per Dualcast.
  2. Verfahren nach Anspruch 1, ferner umfassend: Erzeugen basierend auf der eingehenden Systemspeicherschreibanforderung einer E-/A(Eingangs-/Ausgangs)-Schreibanforderung für die zweite PCIe-Einrichtung; und Weiterleiten einer von der eingehenden Systemspeicheranforderung oder einer Kopie davon an einen Agenten, der so konfiguriert ist, dass er eingehende Systemspeicheranforderungen von einer PCIe-Einrichtung empfängt.
  3. Verfahren nach Anspruch 2, ferner umfassend: Übersetzen einer Adresse, die der eingehenden Systemspeicherschreibanforderung entspricht, in eine Adresse, die einer E-/A-Schreibanforderung für die zweite PCIe-Einrichtung entspricht.
  4. Verfahren nach Anspruch 2, ferner umfassend ein Definieren von Adressfenstern, für welche bei eingehenden Systemspeicherschreibanforderungen Dualcast implementiert werden soll, wobei jedes Adressfenster einen Bereich von Systemspeicheradressen umfasst, für welche eine eingehende Systemspeicherschreibanforderung mit einer Adresse innerhalb des Bereichs in eine PCIe-Einrichtung, die mit dem Adressfenster assoziiert ist, per Dualcast ausgeführt werden soll.
  5. Verfahren nach Anspruch 4, wobei mindestens ein Adressfenster durch einen Adress-Offset und einen Adressbereichs-Offset vom Adress-Offset definiert wird, wobei das Verfahren ferner umfasst: Überprüfen von Adressinformationen der eingehenden Systemspeicherschreibanforderung; Bestimmen eines Offsets entsprechend den Adressinformationen; Bestimmen eines Adress-Offsets von der Adresse; und Anwenden der Adresse, die als die Adresse für die E-/A-Schreibanforderung bestimmt wird.
  6. Verfahren nach Anspruch 5, wobei die eingehende Systemspeicherschreibanforderung ein erstes Adressfeld und ein zweites Adressfeld umfasst, und der Offset im ersten Adressfeld definiert wird.
  7. Verfahren nach Anspruch 2, wobei die eingehende Systemspeicherschreibanforderung Daten, die einer ersten Cache-Zeile entsprechen, und eine 64-Bit-Adresse umfasst, die eine Systemspeicheradresse für die erste Cache-Zeile identifiziert, und wobei die E-/A-Schreibanforderung eine 32-Bit-Adresse umfasst, die eine Adresse identifiziert, an welcher Daten, die der ersten Cache-Zeile entsprechen, in die zweite PCIe-Einrichtung geschrieben werden sollen.
  8. Verfahren nach Anspruch 1, ferner umfassend ein Einsetzen von Logik in einem PCIe-Stammkomplex, um das Ausführen von eingehenden Systemspeicherschreibanforderungen per Dualcast zu ermöglichen.
  9. Verfahren nach Anspruch 1, wobei jede der ersten und zweiten PCIe-Einrichtungen eine Partnereinrichtung ist.
  10. Verfahren nach Anspruch 1, wobei jede der ersten und zweiten PCIe-Einrichtungen eine Netzschnittstellensteuerung (NIC) umfasst.
  11. Verfahren nach Anspruch 1, wobei jede der ersten und zweiten PCIe-Einrichtungen eine Speichersteuerung umfasst.
  12. Verfahren nach Anspruch 1, wobei jede der ersten und zweiten PCIe-Einrichtungen einen Infiniband-Host-Bus-Adapter umfasst.
  13. Einrichtung, umfassend Logik, die konfiguriert ist zum: Empfangen einer eingehenden Systemspeicherschreibanforderung von einer ersten PCIe(Peripheral Component Interconnect Express)-Einrichtung; und Ausführen einer Schreibanforderung, die der eingehenden Systemspeicherschreibanforderung entspricht, in jedes von einem Systemspeicher und einer zweiten PCIe-Einrichtung per Dualcast.
  14. Einrichtung nach Anspruch 13, ferner umfassend Logik, die konfiguriert ist zum: Erzeugen basierend auf der eingehenden Systemspeicherschreibanforderung einer E-/A(Eingangs-/Ausgangs)-Schreibanforderung für die zweite PCIe-Einrichtung; und Weiterleiten einer von der eingehenden Systemspeicheranforderung oder einer Kopie davon an einen Agenten, der so konfiguriert ist, dass er eingehende Systemspeicheranforderungen von einer PCIe-Einrichtung empfängt.
  15. Einrichtung nach Anspruch 13, ferner umfassend Logik, die konfiguriert ist zum: Übersetzen einer Adresse, die der eingehenden Systemspeicherschreibanforderung entspricht, in eine Adresse, die einer E-/A-Schreibanforderung für die zweite PCIe-Einrichtung entspricht.
  16. Einrichtung nach Anspruch 13, wobei die Einrichtung einen Prozessor umfasst.
  17. Einrichtung nach Anspruch 13, wobei die Einrichtung einen PCIe-Stammkomplex umfasst.
  18. System, umfassend: einen Prozessor; Systemspeicher, der funktionell mit dem Prozessor gekoppelt ist; und erste und zweite PCIe(Peripheral Component Interconnect Express)-Einrichtungen, die funktionell mit dem Prozessor gekoppelt sind; wobei der Prozessor Dualcast-Logik umfasst, die so konfiguriert ist, dass sie eine eingehende Systemspeicherschreibanforderung von der ersten PCIe-Einrichtung empfangt und eine Schreibanforderung, die der eingehenden Systemspeicherschreibanforderung entspricht, in den Systemspeicher und die zweite PCIe-Einrichtung per Dualcast ausführt.
  19. System nach Anspruch 18, wobei der Prozessor einen PCIe-Stammkomplex umfasst, in welchem die Dualcast-Logik implementiert ist.
  20. System nach Anspruch 18, wobei die Dualcast-Logik konfiguriert ist zum: Erzeugen basierend auf der eingehenden Systemspeicherschreibanforderung einer E-/A(Eingangs-/Ausgangs)-Schreibanforderung für die zweite PCIe-Einrichtung; und Weiterleiten einer von der eingehenden Systemspeicheranforderung oder einer Kopie davon an einen Agenten im Prozessor, der so konfiguriert ist, dass er eingehende Systemspeicheranforderungen von einer PCIe-Einrichtung empfängt.
  21. System nach Anspruch 20, wobei die Dualcast-Logik ferner so konfiguriert ist, dass sie eine Adresse, die der eingehenden Systemspeicherschreibanforderung entspricht, in eine Adresse übersetzt, die einer E-/A-Schreibanforderung für die zweite PCIe-Einrichtung entspricht.
  22. System nach Anspruch 20, wobei die eingehende Systemspeicherschreibanforderung Daten, die einer ersten Cache-Zeile entsprechen, und eine 64-Bit-Adresse umfasst, die eine Systemspeicheradresse für die erste Cache-Zeile identifiziert, und wobei die E-/A-Schreibanforderung eine 32-Bit-Adresse umfasst, die eine Adresse identifiziert, an welcher Daten, die der ersten Cache-Zeile entsprechen, in die zweite PCIe-Einrichtung geschrieben werden sollen.
  23. System nach Anspruch 18, wobei der Prozessor ferner Zuordnungsinformationen umfasst, welche Adressfenster definieren, für welche bei eingehenden Systemspeicherschreibanforderungen Dualcast implementiert werden soll, wobei jedes Adressfenster einen Bereich von Systemspeicheradressen umfasst, für welche eine eingehende Systemspeicherschreibanforderung mit einer Adresse innerhalb des Bereichs in eine PCIe-Einrichtung, die mit dem Adressfenster assoziiert ist, per Dualcast ausgeführt werden soll.
  24. System nach Anspruch 22, wobei mindestens ein Adressfenster durch einen Adress-Offset und einen Adressbereichs-Offset vom Adress-Offset definiert wird, und die Dualcast-Logik ferner konfiguriert ist zum: Überprüfen von Adressinformationen der eingehenden Systemspeicherschreibanforderung; Bestimmen eines Offsets entsprechend den Adressinformationen; Bestimmen eines Adress-Offsets von der Adresse; und Anwenden der Adresse, die als die Adresse für die E-/A-Schreibanforderung bestimmt wird.
  25. System nach Anspruch 18, wobei jede der ersten und zweiten PCIe-Einrichtungen eine Netzschnittstellensteuerung (NIC) umfasst.
  26. System nach Anspruch 18, wobei jede der ersten und zweiten PCIe-Einrichtungen eine Speichersteuerung umfasst.
  27. Verfahren nach Anspruch 18, wobei jede der ersten und zweiten PCIe-Einrichtungen einen Infiniband-Host-Bus-Adapter umfasst.
DE112013005044.7T 2012-10-19 2013-06-17 Verfahren, einrichtung, vorrichtung und system zum ausführen von eingehenden pcie-schreiboperationen in einen speicher und partnereinrichtungen per dualcast Active DE112013005044B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/656,134 US9189441B2 (en) 2012-10-19 2012-10-19 Dual casting PCIE inbound writes to memory and peer devices
US13/656,134 2012-10-19
PCT/US2013/046108 WO2014062247A1 (en) 2012-10-19 2013-06-17 Dual casting pcie inbound writes to memory and peer devices

Publications (2)

Publication Number Publication Date
DE112013005044T5 true DE112013005044T5 (de) 2015-08-06
DE112013005044B4 DE112013005044B4 (de) 2023-08-03

Family

ID=50486402

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112013005044.7T Active DE112013005044B4 (de) 2012-10-19 2013-06-17 Verfahren, einrichtung, vorrichtung und system zum ausführen von eingehenden pcie-schreiboperationen in einen speicher und partnereinrichtungen per dualcast

Country Status (4)

Country Link
US (1) US9189441B2 (de)
CN (1) CN104641360B (de)
DE (1) DE112013005044B4 (de)
WO (1) WO2014062247A1 (de)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9189441B2 (en) 2012-10-19 2015-11-17 Intel Corporation Dual casting PCIE inbound writes to memory and peer devices
US9135200B2 (en) 2013-06-28 2015-09-15 Futurewei Technologies, Inc. System and method for extended peripheral component interconnect express fabrics
US10684973B2 (en) 2013-08-30 2020-06-16 Intel Corporation NUMA node peripheral switch
US9558148B2 (en) * 2014-04-30 2017-01-31 Intel Corporation Method to optimize network data flows within a constrained system
US9378103B2 (en) * 2014-05-19 2016-06-28 Avago Technologies General Ip (Singapore) Pte. Ltd. Coordination techniques for redundant array of independent disks storage controllers
US9824041B2 (en) 2014-12-08 2017-11-21 Datadirect Networks, Inc. Dual access memory mapped data structure memory
US9710421B2 (en) * 2014-12-12 2017-07-18 Intel Corporation Peripheral component interconnect express (PCIe) card having multiple PCIe connectors
KR102219759B1 (ko) 2015-01-09 2021-02-25 삼성전자주식회사 저장 장치, 그것을 포함하는 데이터 저장 시스템 및 그것의 동작 방법
US9842082B2 (en) 2015-02-27 2017-12-12 Intel Corporation Dynamically updating logical identifiers of cores of a processor
JP2016206951A (ja) * 2015-04-22 2016-12-08 富士通株式会社 電子装置及び電子装置の制御方法
US20160371222A1 (en) * 2015-06-22 2016-12-22 Qualcomm Incorporated COHERENCY DRIVEN ENHANCEMENTS TO A PERIPHERAL COMPONENT INTERCONNECT (PCI) EXPRESS (PCIe) TRANSACTION LAYER
KR20170048114A (ko) * 2015-10-26 2017-05-08 삼성전자주식회사 저장 장치 및 저장 장치에 의해 기록 명령이 수행되는 방법
US9996273B1 (en) 2016-06-30 2018-06-12 EMC IP Holding Company LLC Storage system with data durability signaling for directly-addressable storage devices
US9996291B1 (en) * 2016-07-29 2018-06-12 EMC IP Holding Company LLC Storage system with solid-state storage device having enhanced write bandwidth operating mode
CN111897751A (zh) * 2017-01-26 2020-11-06 华为技术有限公司 一种数据传输的方法、装置、设备和系统
US10423563B2 (en) * 2017-10-13 2019-09-24 International Business Machines Corporation Memory access broker system with application-controlled early write acknowledgment support and identification of failed early write acknowledgment requests to guarantee in-order execution of memory requests of applications
CN110377221A (zh) * 2018-04-13 2019-10-25 北京忆恒创源科技有限公司 双端口固态存储设备及其数据处理方法
US10585827B1 (en) 2019-02-05 2020-03-10 Liqid Inc. PCIe fabric enabled peer-to-peer communications
US11126554B2 (en) * 2019-03-22 2021-09-21 Intel Corporation Prefetching write permissions into address translation cache
US20200328879A1 (en) * 2019-08-13 2020-10-15 Intel Corporation Secure communications over computer buses
US11176063B2 (en) * 2019-11-01 2021-11-16 EMC IP Holding Company LLC Optimized use of processor memory for I/O operations
US20210255973A1 (en) * 2020-12-17 2021-08-19 Intel Corporation Stream routing and ide enhancements for pcie
US11537313B1 (en) * 2021-08-11 2022-12-27 EMC IP Holding Company LLC Dual cast mirroring from host devices

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7657692B2 (en) 1999-08-04 2010-02-02 Super Talent Electronics, Inc. High-level bridge from PCIE to extended USB
US20020161907A1 (en) * 2001-04-25 2002-10-31 Avery Moon Adaptive multi-protocol communications system
US7668165B2 (en) 2004-03-31 2010-02-23 Intel Corporation Hardware-based multi-threading for packet processing
US7487284B2 (en) 2006-07-28 2009-02-03 Intel Corporation Transaction flow and ordering for a packet processing engine, located within an input-output hub
US8271604B2 (en) 2006-12-19 2012-09-18 International Business Machines Corporation Initializing shared memories for sharing endpoints across a plurality of root complexes
JP2012507783A (ja) * 2008-10-30 2012-03-29 エルエスアイ コーポレーション ストレージコントローラのデータ再配分
US8386750B2 (en) * 2008-10-31 2013-02-26 Cray Inc. Multiprocessor system having processors with different address widths and method for operating the same
US20110238909A1 (en) 2010-03-29 2011-09-29 Pankaj Kumar Multicasting Write Requests To Multiple Storage Controllers
WO2011141956A1 (en) * 2010-05-11 2011-11-17 Hitachi, Ltd. Storage device and method of controlling storage device
US8645746B2 (en) * 2010-12-03 2014-02-04 International Business Machines Corporation Cable redundancy and failover for multi-lane PCI express IO interconnections
US8589723B2 (en) 2010-12-22 2013-11-19 Intel Corporation Method and apparatus to provide a high availability solid state drive
JP5833756B2 (ja) * 2012-03-23 2015-12-16 株式会社日立製作所 二重化共有メモリアクセス方法と二重化共有メモリアクセス方法を用いたストレージ装置
US9280504B2 (en) * 2012-08-24 2016-03-08 Intel Corporation Methods and apparatus for sharing a network interface controller
US9189441B2 (en) 2012-10-19 2015-11-17 Intel Corporation Dual casting PCIE inbound writes to memory and peer devices

Also Published As

Publication number Publication date
DE112013005044B4 (de) 2023-08-03
US20140115223A1 (en) 2014-04-24
CN104641360B (zh) 2018-10-26
WO2014062247A1 (en) 2014-04-24
US9189441B2 (en) 2015-11-17
CN104641360A (zh) 2015-05-20

Similar Documents

Publication Publication Date Title
DE112013005044B4 (de) Verfahren, einrichtung, vorrichtung und system zum ausführen von eingehenden pcie-schreiboperationen in einen speicher und partnereinrichtungen per dualcast
DE102018006756A1 (de) Beschleuniger-Fabric
DE102009022550B4 (de) Vorrichtung und System zum Bereitstellen eines PCI (Peripheral Component Interconnect)-kompatiblen Protokolls auf Transaktionsebene für ein Ein-Chip-System (SoC)
DE60213616T2 (de) Eine allgemeine eingabe-/ausgabearchitektur, protokoll und entsprechende verfahren zur umsetzung der flusssteuerung
DE112013007767B3 (de) Vorrichtung und system zur verbesserten nutzung von datenverbindungen
DE102018006797A1 (de) Kohärente Speichereinrichtungen über PCIe
DE60212626T2 (de) Endknotenunterteilung mittels lokaler identifikatoren
DE102018006546A1 (de) Plattformschnittstellenschicht und protokoll für beschleuniger
DE102018004327A1 (de) Systeme und Verfahren zum Zugreifen auf Massenspeicher als Arbeitsspeicher
DE112011103207T5 (de) Implementierung eines Quickpath Interconnect-Protokolls auf einer PCIe-Schnittstelle
DE112008001957B4 (de) Systeme und Verfahren zum Verbessern der Leistungsfähigkeit eines routfähigen Netzwerks
DE112017005002T5 (de) Verbindungsphysikalischer schichtschnittstellenadapter
DE112016005910T5 (de) Architechtur für Software-Definierten Interconnect-Switch
DE112017006557T5 (de) Bimodale phy für geringe latenz in hochgeschwindigkeitsverbindungswegen
DE112010001467B4 (de) Steuerung von Blöcken einer On-Die-System-Struktur
DE60216299T2 (de) Allgemeine eingabe-/ausgabearchitektur und entsprechende verfahren zur bereitstellung virtueller kanäle
DE112008002019T5 (de) Auslagern von Eingabe/Ausgabe (I/O)-Virtualisierungsarbeitsgängen an einem Prozessor
DE102018127751A1 (de) Einheitlicher Adressraum für mehrere Verbindungen
DE102015102692A1 (de) Verfahren zum Optimieren von Netzdatenströmen in einem eingeschränkten System
DE112013003766T5 (de) Schnelles Entzerren beim Verlassen eines Niedrigenergie-Teilbreite-Hochgeschwindigkeitsverbindungszustands
DE202010018020U1 (de) Opportunistische Verbesserung einer MMIO-Anfrageabwicklung aufgrund eines Zielberichts von Raumerfordernissen
DE112016006065T5 (de) Spekulative nummerierung von adressräumen für bus-einrichtungsfunktionen
DE112014006490T5 (de) Verfahren, Vorrichtung und System zur Regelung von Leistung ungenutzter Hardware einer Linkschnittstelle
DE102018006852A1 (de) Verfahren, Vorrichtung und System für eine ThunderBolt-basierte Anzeigetopologie für duale Grafiksysteme
DE112013000808T5 (de) Dekodierdaten zur schnellen Dekodierung von Adressen von PCI-Express-Multifunktionseinheiten

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R016 Response to examination communication
R016 Response to examination communication
R018 Grant decision by examination section/examining division