DE102009042868A1 - Verfahren und Vorrichtung für den einfacheren System-Protokoll-Austausch bei nichttransparenten Brücken (NTB) in Back-to-Back-Anordnung - Google Patents
Verfahren und Vorrichtung für den einfacheren System-Protokoll-Austausch bei nichttransparenten Brücken (NTB) in Back-to-Back-Anordnung Download PDFInfo
- Publication number
- DE102009042868A1 DE102009042868A1 DE102009042868A DE102009042868A DE102009042868A1 DE 102009042868 A1 DE102009042868 A1 DE 102009042868A1 DE 102009042868 A DE102009042868 A DE 102009042868A DE 102009042868 A DE102009042868 A DE 102009042868A DE 102009042868 A1 DE102009042868 A1 DE 102009042868A1
- Authority
- DE
- Germany
- Prior art keywords
- bridge
- nontransparent
- register
- shadow registers
- packet
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4221—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0706—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
- G06F11/0709—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a distributed system consisting of a plurality of standalone computer nodes, e.g. clusters, client-server systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/24—Handling requests for interconnection or transfer for access to input/output bus using interrupt
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4027—Coupling between buses using bus bridges
- G06F13/405—Coupling between buses using bus bridges where the bridge performs a synchronising function
- G06F13/4059—Coupling between buses using bus bridges where the bridge performs a synchronising function where the synchronisation uses buffers, e.g. for speed matching between buses
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0751—Error or fault detection not based on redundancy
- G06F11/0754—Error or fault detection not based on redundancy by exceeding limits
- G06F11/0757—Error or fault detection not based on redundancy by exceeding limits by exceeding a time limit, i.e. time-out, e.g. watchdogs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/202—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
- G06F11/2038—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant with a single idle spare processing component
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/202—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
- G06F11/2043—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant where the redundant components share a common memory address space
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)
- Quality & Reliability (AREA)
- Information Transfer Systems (AREA)
- Multi Processors (AREA)
- Computer And Data Communications (AREA)
- Bus Control (AREA)
Abstract
Dual-Host-System und -Verfahren mit nichttransparenten Brücken in Back-to-Back-Anordnung und einer Proxy-Pakete erzeugenden Vorrichtung. Die Proxy-Pakete erzeugende Vorrichtung versetzt die Hosts in die Lage, einander Interrupte erzeugende Pakete zu senden.
Description
- Technisches Gebiet
- Ausführungsformen der Erfindung beziehen sich im Allgemeinen auf eine verteilte Mehrprozessor-Architektur und insbesondere auf Dual-Host-Systeme mit nichttransparenten Brücken in Back-to-Back-Anordnung.
- Hintergrund
- Peripheral Component Interconnect (PCI) ist eine parallele Busarchitektur der zweiten Generation; sie wurde 1992 als Ersatz für den Industry Standard Architecture-Bus (ISA-Bus) entwickelt. Beim PCI-Standard teilen sich alle Geräte denselben bidirektionalen, parallelen 32-Bit-Signalweg (oder 64-Bit-Signalweg). Der PCI-Bus bietet Vorteile gegenüber dem ISA-Bus, darunter Prozessorunabhängigkeit, gepufferte Isolation, Bus-Mastering sowie echten Plug-and-Plag-Betrieb. PCI Express (PCIe) ist eine universelle serielle Ein-/Ausgabe-(I/O)-Verbindung der dritten Generation, die dafür konzipiert ist, den PCI-Bus zu ersetzen. Anstatt ein Bus zu sein, ist PCI Express um serielle Punkt-zu-Punkt-Verbindungen herum strukturiert, die als „Lanes” bezeichnet werden.
- Die serielle Punkt-zu-Punkt-Verbindungsarchitektur von PCI Express eignet sich gut für verteilte Datenverarbeitung mittels eines verteilten Mehrprozessor-Architektur-Modells. Verteilte Prozessoren sind im Allgemeinen dafür optimiert, Datenpaket-Verarbeitungsfunktionen zu realisieren. Anders als bei universellen Zentralprozessoren (Central Processing Units, CPUs), die zur Leistungssteigerung sehr auf Caching angewiesen sind, fehlt bei verteilten Prozessoren der lokale Aspekt bei der Paketverarbeitung sowie der Bedarf an leistungsstarker Ein-/Ausgabe (I/O), der Designer dazu motiviert hat, innovative Architekturen zu entwickeln, um die Verarbeitungslatenz bei gleichzeitiger Paketverarbeitung mit hohen Datenraten zu reduzieren.
- Kurze Beschreibung der Zeichnungen
- Am besten ist die Erfindung zu verstehen, wenn auf die folgende Beschreibung und die sie begleitenden Zeichnungen, die die Ausführungsformen der Erfindung veranschaulichen, Bezug genommen wird.
-
1 ist ein schematisches Diagramm eines Dual-Host-Systems mit einer nichttransparenten Brücke. -
2 ist eine schematische Darstellung der Konfiguration der nichttransparenten Brücke in1 . -
3 ist ein schematisches Diagramm eines Dual-Host-Systems mit zwei nichttransparenten Brücken in Back-to-Back-Anordnung. -
4 ist eine schematische Darstellung der Konfiguration der nichttransparenten Brücke in3 . -
5 ist ein Diagramm der Register-Beziehungen gemäß einer Ausführungsform der Erfindung. -
6 ist ein Diagramm der Register-Beziehungen gemäß einer Ausführungsform der Erfindung. - Detaillierte Beschreibung
- Werden in der Beschreibung und den Ansprüchen die Singularformen „ein”, „eine” oder „der”, „die”, „das” verwendet, schließen diese den Plural mit ein, sofern nicht der Zusammenhang dazu deutlich im Widerspruch steht. Ein „Protokoll” ist ein Satz von Regeln, der das Format, die Syntax und die Reihenfolge von Nachrichten bestimmt, die zwischen mindestens zwei NTB-Subsystemen ausgetauscht werden. Ein „Root-Complex” (RC) ist eine PCI-Express-Baugruppe, die einen Prozessor (oder eine Central Processing Unit (CPU)) und einen Speicher mit der PCI Express-Switch-Fabric verbindet. Der Root-Complex erzeugt für den Prozessor Transaktionsanfragen. Ein „Doorbell-Register” ist ein generisches, typischerweise 16-Bit-Register, das von der Steuerungssoftware zweier NTB-Subsysteme zur Definition eines Protokolltyps verwendet werden kann. Die Doorbell dient als eine Interrupte erzeugende Vorrichtung, um einen der Hosts eines Dual-Host-Systems auf die Aktionen des anderen Hosts aufmerksam zu machen. „Scratchpad-Register” sind ein generischer Satz von typischerweise 32-Bit-Registern, die für systemübergreifende Kommunikation sowie das Speichern von Daten benutzt werden können, die diese Kommunikationen betreffen.
- Eine nichttransparente PCI-Express-Brücke erleichtert die Erweiterung des verteilten Mehrprozessor-Architektur-Modells, indem sie als Gateway zwischen Dual-Host-Systemen fungiert.
1 ist ein schematisches Diagramm, das ein Dual-Host-System-Layout mit einer einzelnen nichttransparenten Brücke104 darstellt.2 zeigt die Konfiguration der nichttransparenten Brücke104 des Dual-Host-Systems in1 . Das in1 dargestellte Dual-Host-System umfasst ein primäres Host-System100A und ein Backup-Host-System100B , die durch eine einzelne nichttransparente Brücke104 verbunden sind. Das primäre Host-System100A umfasst einen primären Prozessor102A in einem primären Root-Complex103A , und das Backup-Host-System100B umfasst einen sekundären Prozessor102B in einem sekundären Root-Complex103B . Die nichttransparente Brücke104 umfasst eine primäre Seite106 , eine sekundäre Seite108 und einen Memory-Mapped-Input/Output-Raum (MMI/O-Raum)110 mit Schattenregistern112 . Die nichttransparente Brücke104 erscheint nach Enumeration auf jedem Host-System100A ,100B als ein PCI-Express-Endpunkt (EP). - Das primäre Host-System
100A und ein Backup-Host-System100B kommunizieren typischerweise miteinander mittels eines Protokolls durch ein Doorbell-Register (nicht gezeigt) und einen Block von Scratchpad-Registern (nicht gezeigt) in dem MMI/O-Raum110 auf der einzelnen nichttransparenten Brücke104 . Das primäre und das sekundäre Host-System100A ,100B verwenden Software, gewöhnlich ein Gerätetreiber, um einander Nachrichten zu senden. Ein Nachrichtentyp könnte eine Heartbeat-Nachricht sein, die die Funktionsfähigkeit der Software anzeigt, die auf den Host-Systemen100A ,100B läuft. Das heißt, wenn eines der Host-Systeme100A ,100B keinen Heartbeat empfängt, würde dies auf ein katastrophales Versagen des anderen Host-Systems100A ,100B hinweisen. Eine Heartbeat-Nachricht wird typischerweise von einem Gerätetreiber geliefert, der die Heartbeat-Protokoll-Nachricht in das oder die Scratchpad-Register und anschließend in das Doorbell-Register schreibt, wodurch dem anderen Host ein Interrupt geliefert wird. Das heißt, der Interrupt benachrichtigt das Host-System100A ,100B , dass die Heartbeat-Nachricht verfügbar ist. Zusätzlich zu den einfachen Heartbeat-Nachrichten kann das Protokoll andere Nachrichtentypen umfassen, wie z. B.: Failover implementieren, Fenster verschieben, Software laden usw. -
3 zeigt ein Dual-Host-System mit zwei nichttransparenten Brücken104A ,104B in einer Back-to-Back-Anordnung (RC---NTB---NTB---RC) gemäß einer Ausführungsform der Erfindung. Wie bei dem in1 gezeigten Dual-Host-System umfasst dieses Dual-Host-System einen primären Host100A mit einem primären Prozessor102A und einem primären Root-Complex103A und einen Backup-Host100B mit einem sekundären Prozessor102B und einem sekundären Root-Complex103B . Das in3 gezeigte Dual-Host-System umfasst jedoch zwei nichttransparente Brücken104A ,104B . - Die Konfigurationen der nichttransparenten Brücken
104A ,104B des Dual-Host-Systems in3 sind in4 dargestellt. Die erste nichttransparente Brücke104A umfasst eine erste primäre Seite106A , eine erste sekundäre Seite108A und einen ersten Memory-Mapped-Input/Output-Raum (MMI/O-Raum)110A mit ersten Schattenregistern112A . Die zweite nichttransparente Brücke104B umfasst eine zweite primäre Seite106B , eine zweite sekundäre Seite108B und einen zweiten Memory-Mapped-Input/Output-Raum (MMI/O-Raum)110B mit zweiten Schattenregistern112B . Die ersten Schattenregister112A umfassen die Doorbell-Register114A und die Scratchpad-Register116A , während die zweiten Schattenregister112B die Doorbell-Register114B und die Scratchpad-Register116B umfassen. Die vorliegende Ausführungsform umfasst außerdem eine Proxy-Pakete erzeugende Vorrichtung120 zwischen den ersten Schattenregistern112A und den zweiten Schattenregistern112B . Die Proxy-Pakete erzeugende Vorrichtung120 wird unten näher erläutert. - Durch die Back-to-Back-Anordnung der ersten und der zweiten nichttransparenten Brücke
104A ,104B entfallen Bus-Enumerations-Probleme, die auftreten, wenn das primäre und das Backup-System100A ,100B nicht zur selben Zeit hochfahren. Eine komplexe Situation kann jedoch in Bezug auf Software auftreten, wenn die nichttransparenten Brücken104A ,104B Back-to-Back angeordnet werden. Die Enumerationssoftware jedes Host-Systems100A ,100B hält an dem Endpunkt der nichttransparenten Brücke an, was dazu führt, dass ein unzugänglicher sekundärer Raum zwischen den sekundären Seiten108A ,108B der zwei Host-Systeme100A ,100B entsteht. Aus diesem Grund „weiß” das primäre Host-System100A nichts von der Doorbell114B und dem Scratchpad116B der nichttransparenten Brücke des sekundären Host-Systems100B . Umgekehrt ist es ebenso. Während Daten zwischen dem primären und dem sekundären Host-System100A ,100B durch die unzugänglichen sekundären PCIe-Räume verschoben werden können, sind Interrupts nicht in der Lage, sich von einem System zum anderen zu bewegen. - Dieses Problem wird durch Ausführungsformen der Erfindung gelöst, indem zwischen den sekundären Seiten
108A ,108B der zwei Host-Systeme100A ,100B eine Proxy-Pakete erzeugende Vorrichtung120 geschaffen wird. Die Proxy-Pakete erzeugende Vorrichtung120 versetzt ein Host-System100A ,100B in die Lage, ein Interrupt erzeugendes PCIe-Paket durch den unzugänglichen MMI/O-Bereich in die gegenüberliegende nichttransparente Brücke104A ,104B zu senden. So erhält jedes Host- System100A ,100B auf wirkungsvolle Weise einen Tunnel in die MMI/O-Räume des anderen Systems110A ,110B . Der Interrupt kann durch Zugreifen auf und Schreiben in die Scratchpad-Register116A ,116B und die Interrupt erzeugenden Doorbell-Register114A ,114B erzeugt werden. - Ein Verfahren gemäß einer Ausführungsform der Erfindung kann mithilfe von
4 erklärt werden. Die Proxy-Pakete erzeugende Vorrichtung120 versetzt jede der Back-to-Back angeordneten nichttransparenten Brücken104A ,104B in die Lage, das „Eigentum” an den Back-to-Back-Schattenregistern112A ,112B auszuhandeln. Wenn sie eine bestätigte Zustandsänderung in einem „gesetzten” Back-to-Back-Schatten-Doorbell-Register114A in der ersten nichttransparenten Brücke104A erkennt, erzeugt die Logik in der ersten nichttransparenten Brücke104A ein Paket (Proxy-Paket) mit einem Posted Memory Write, das die Back-to-Back-Schattenregister112A in den Nutzdaten des verzögerten Speicherschreibbefehls enthält. Die erste nichttransparente Brücke104A sendet weiter das Paket mit dem Posted Memory Write durch den unzugänglichen sekundären Raum. Die zweite nichttransparente Brücke104B dekodiert den Posted Memory Write als ihren eigenen und aktualisiert anschließend ihre lokalen Schatten-Doorbell-Register114B dementsprechend. Die zweite nichttransparente Brücke104B erfasst eine Zustandsänderung des „gesetzten” Back-to-Back-Schatten-Doorbell-Registers114B und erzeugt einen Upstream-Interrupt (zum Beispiel MSI/MSI-X oder INTx), je nachdem, welche Interrupt-Vorrichtung gewählt wird. Ausführungsformen der Erfindung umfassen zusätzlich zu der Proxy-Pakete erzeugenden Vorrichtung120 weitere Register. Beispiele für die zusätzlichen Register werden in den5 und6 gezeigt und in den unten stehenden Beispielen näher erklärt. - Beispiele
- Heartbeat-Protokoll
- In dieser Ausführungsform der Erfindung wird ein Heartbeat-Protokoll von dem primären Host-System
100A zu dem Backup-Host-System100B übertragen. Ein typisches Heartbeat-Protokoll ermöglicht es dem primären Host-System100A , das Backup-Host-System B zu informieren, dass es „lebt und gesund ist”. Mit anderen Worten: Zwischen beiden existiert eine funktionsfähige Verbindung. Obwohl das folgende Beispiel einen Heartbeat von dem primären Host-System100A an das Backup-Host-System100B veranschaulicht, kann das Heartbeat-Protokoll auch bidirektional sein. Das heißt, das Heartbeat-Protokoll kann so konfiguriert werden, dass es Heartbeat-Nachrichten an das primäre Host-System100A und das Backup-Host-System100B sendet und auch von beiden Heartbeat-Nachrichten empfängt. - Im ersten Schritt des Verfahrens setzt das primäre Host-System
100A ein oder mehrere vereinbarte Bit(s) in dem ersten Doorbell-Register114A . Sobald die Hardware des primären Hosts100A erkennt, dass die erste Doorbell114A gesetzt wurde, erzeugt sie einen Posted Memory Write (ein Proxy-Interrupt-Paket). Die erste nichttransparente Brücke104A sendet dann den Posted Memory Write durch den unzugänglichen sekundären Raum an die zweite nichttransparente Brücke104B auf dem Backup-Host-System100B . Die Transaktion wird von der sekundären Seite106B der zweiten nichttransparenten Brücke104B durch das SB01BASE-Fenster der zweiten nichttransparenten Brücke104B in dem Host-System100B empfangen. - Die Hardware der zweiten nichttransparenten Brücke
104B in dem Backup-Host-System100B dekodiert dann den Posted Memory Write als ihren eigenen und setzt die äquivalenten Bits in dem primären Doorbell-Register114B in der zweiten nichttransparenten Brücke104B in dem Backup-Host-System100B . Sobald die zweite nichttransparente Brücke104B erkennt, dass die Bits in dem primären Doorbell-Register114B gesetzt werden, erzeugt sie einen Upstream-Interrupt, abhängig davon, ob INTx oder MSI oder MSI-X aktiviert und nicht maskiert ist. Dieser Interrupt könnte beispielsweise in vorbestimmten periodischen Abständen gesetzt werden, z. B. jede Sekunde. - Offload-Protokoll
- Ein Offload-Protokoll dient dazu, dass das primäre Host-System
100A dem Backup-Host-System100B einen Teil der Paketverarbeitung übertragen kann. Grob definiert, umfasst das Offload-Protokoll drei Hauptschritte, von denen jeder typischerweise mehrere Unterschritte umfasst. Die Hauptschritte umfassen: (1) das Senden der zu verarbeitenden Pakete von dem primären Host-System100A an das Backup-Host-System100B , (2) das Senden einer Nachricht, die verschiedene Informationen über die Pakete enthält – z. B. wo die Pakete in den Speicher geladen wurden, Länge, Art der erforderlichen Verarbeitung usw. – von dem primären Host-System100A an das Backup-Host-System100B und (3) das Senden eines Proxy-Interrupt-Paketes von dem primären Host-System100A an das Backup-Host-System100B , um das Backup-Host-System100B darüber zu informieren, dass Arbeit zu erledigen ist. - Senden der zu verarbeitenden Pakete
- Zuerst schreibt das primäre Host-System
100A die Offload-Pakete in das primäre BAR-2/3-Fenster der ersten nichttransparenten Brücke in dem primären Host-System100A . Die erste nichttransparente Brücke104A überführt dann die Pakete an eine vereinbarte Basisadresse PBAR2XLAT und sendet die Pakete. Die zweite nichttransparente Brücke104B in dem Backup-Host-System100B empfangt die Pakete an derselben Basisadresse SB23BASE (PBAR2XLAT = SB23BASE). Die Pakete werden dann an die Domäne des Backup-Host-Systems100B unter Benutzung von SBAR2XLAT überführt und an den Systemspeicher gesendet. - Senden einer Nachricht, die genau beschreibt, wo Transaktionen in den Speicher geladen wurden, die Länge, die Art der zu erledigenden Arbeit usw.
- Das primäre Host-System
100A schreibt eine vereinbarte Nachricht in die ersten Scratchpad-Register116A in der ersten nichttransparenten Brücke104A in dem primären Host-System100A . Wenn die Hardware in der nichttransparenten Brücke104A einen Schreibvorgang in die Scratchpad-Register116A erkennt, legt sie einen Posted Memory Write zeitlich fest, dessen Ziel das Scratchpad-Register116B in dem Backup-Host-System100B ist – über das Back-to-Back-BAR0XLAT. Die Nachricht wird auf der sekundären Seite der zweiten nichttransparenten Brücke104B auf der gegenüberliegenden Seite des unzugänglichen sekundären Raums durch das SB01BASE-Fenster der zweiten nichttransparenten Brücke104B in dem Backup-Host-System100B empfangen. Die Hardware in der nichttransparenten Brücke104B des Backup-Host-Systems100B dekodiert den Posted Memory Write als ihren eigenen und setzt das oder die gewünschte(n) Scratchpad-Register-Bit(s)116B in der nichttransparenten Brücke104B in dem Backup-Host-System100B . - Senden eines Interrupt-Proxy-Paketes senden, um das Backup-Host-System
100B darüber zu informieren, dass Arbeit zu erledigen ist - Das primäre Host-System
100A setzt ein gewähltes Bit in dem Back-to-Back-Doorbell-Register116A . Die Hardware des primären Host-Systems100A erkennt, dass die Back-to-Back-Doorbell gesetzt wurde, und erzeugt einen Posted Memory Write, den sie durch den unzugänglichen sekundären Raum zu der zweiten nichttransparenten Brücke104B des Backup-Host-Systems100B sendet. Der Posted Memory Write wird von der sekundären Seite108B der nichttransparenten Brücke104B durch das SB01BASE-Fenster der nichttransparenten Brücke104B in dem Backup-Host-System100B empfangen. Die Hardware in der zweiten nichttransparenten Brücke104B dekodiert den Posted Memory Write als ihren eigenen und setzt die äquivalenten Bits in dem primären Doorbell-Register114B . Wenn die Hardware in der zweiten nichttransparenten Brücke104B erkennt, dass das oder die Bit(s) in der primären Doorbell104B gesetzt wird oder werden, erzeugt sie einen Upstream-Interrupt, der darauf beruht, ob INTx oder MSI oder MSI-X aktiviert und nicht maskiert ist. Die Interrupt-Dienstroutine des Backup-Host-Systems100B dekodiert den Interrupt und liest die Nachricht im Scratchpad116B der nichttransparenten Brücke104B des Backup-Host-Systems100B . Diese Nachricht enthält Informationen wie zum Beispiel den Ort und die Länge der zu bearbeitenden Transaktionen und kann beliebige andere relevante Informationen beinhalten, die zur Bearbeitung der Anfrage erforderlich sind. Sobald dies abgeschlossen ist, könnte wahlweise ein Bestätigungspaket an das primäre Host-System100A gesendet werden. - Die hier beschriebenen verschiedenen Ausführungsformen der Erfindung vereinfachen zahlreiche Softwareprobleme bei Dual-Host-Systemen mit nichttransparenten Brücken in Back-to-back-Anordnung. Ohne eine Proxy-Pakete erzeugende Vorrichtung
120 würde die Lösung für das Tunnel-Problem eine hochgradig proprietäre Softwarelösung erfordern, die die ursprüngliche Funktionalität und den ursprünglichen Zweck des Doorbell-Registersatzes114A ,114B und des Scratchpad-Registersatzes116A ,116B im Speicher jedes Systems dupliziert. Ein komplexes Protokoll für die Kommunikation der Treiber untereinander wäre erforderlich. Die Folgen wären erhöhte Komplexität, Probleme mit asynchroner Kommunikation, verminderte Wiederverwendbarkeit und Skalierbarkeit von Software sowie längere Debug-Zyklen. Mit der Proxy-Pakete erzeugenden Vorrichtung120 ist der Gerätetreiber-Entwickler jedoch in der Lage, leichter ein Protokoll zu entwerfen, durch das Heartbeat-Nachrichten und Scratchpad-Daten über die Back-to-Back angeordneten nichttransparenten Brücken104A ,104B übertragen werden können. Beispielhafte Protokollnachrichten, bei denen dies vorteilhaft wäre, sind unter anderem Host-Failover-Anwendungen, Journal-Anwendungen, Checkpoint-Daten und Offload-Berechnungen wie beispielsweise Kryptografie. - Während die Erfindung bezogen auf verschiedene Ausführungsformen der Erfindung beschrieben wurde, wird der Durchschnittsfachmann erkennen, dass die Erfindung nicht auf die beschriebenen Ausführungsformen der Erfindung beschränkt ist, sondern auch mit Abwandlungen und Änderungen im Sinne und innerhalb des Schutzbereichs der angefügten Ansprüche genutzt werden kann. Die Beschreibung ist daher als eine nicht einschränkende Veranschaulichung zu verstehen.
Claims (19)
- Datenverarbeitungssystem, das umfasst: einen ersten Host, der eine erste nichttransparente Brücke umfasst; einen zweiten Host, der eine zweite nichttransparente Brücke umfasst, wobei die erste und die zweite nichttransparente Brücke Back-to-Back angeordnet sind, und eine Proxy-Pakete erzeugende Vorrichtung zwischen der ersten nichttransparenten Brücke und der zweiten nichttransparenten Brücke.
- Datenverarbeitungssystem nach Anspruch 1, wobei die erste nichttransparente Brücke eine erste primäre Seite und eine erste sekundäre Seite umfasst und die zweite nichttransparente Brücke eine zweite primäre Seite und eine zweite sekundäre Seite umfasst und die Proxy-Pakete erzeugende Vorrichtung sich zwischen der ersten sekundären Seite und der zweiten sekundären Seite befindet.
- System nach Anspruch 2, wobei die Proxy-Pakete erzeugende Vorrichtung das erste primäre Host-System
100 und den zweiten Host in die Lage versetzt, einander ein einen Interrupt erzeugendes Paket zu senden. - System nach Anspruch 3, wobei die erste nichttransparente Brücke einen ersten Memory-Mapped-Input-Output-Bereich (MMI/O-Bereich) umfasst und die zweite nichttransparente Brücke einen zweiten MMI/O-Bereich umfasst, wobei das einen Interrupt erzeugende Paket sich von dem ersten in den zweiten MMI/O-Bereich bewegt und umgekehrt.
- System nach Anspruch 4, wobei der erste MMI/O-Bereich eine Vielzahl erster Schattenregister umfasst und der zweite MMI/O-Bereich eine Vielzahl zweiter Schattenregister umfasst und das einen Interrupt erzeugende Paket sich von dem ersten zu dem zweiten Schattenregister bewegt und umgekehrt.
- System nach Anspruch 1, wobei die Proxy-Pakete erzeugende Vorrichtung dafür eingerichtet ist, Heartbeat-, Journal- oder Checkpoint-Datennachrichten zu senden.
- System nach Anspruch 5, wobei die ersten Schattenregister ein erstes Doorbell-Register und/oder ein erstes Scratchpad-Register umfassen und die zweiten Schattenregister ein zweites Doorbell-Register und/oder ein zweites Scratchpad-Register umfassen.
- System nach Anspruch 3, wobei das einen Interrupt erzeugende Paket einen Posted Memory Write umfasst.
- System nach Anspruch 7, wobei die erste nichttransparente Brücke dafür eingerichtet ist, ein Proxy-Paket zu erzeugen, das als Nutzdaten einen Posted Memory Write enthält, und das Proxy-Paket an die zweite nichttransparente Brücke zu senden, wenn die erste nichttransparente Brücke eine bestätigte Zustandsänderung in einem Doorbell-Register in den ersten Schattenregistern erkennt.
- System nach Anspruch 9, wobei die zweite nichttransparente Brücke dafür eingerichtet ist, den Posted Memory Write als ihren eigenen zu dekodieren und die zweiten Schattenregister zu aktualisieren.
- System nach Anspruch 10, wobei die zweite nichttransparente Brücke weiter dafür eingerichtet ist, eine Zustandsänderung eines zweiten Doorbell-Registers in den zweiten Schattenregistern zu erkennen und einen Upstream-Interrupt zu erzeugen.
- Verfahren zum Verbinden von Hosts, das umfasst: das Verbinden einer ersten nichttransparenten Brücke eines ersten Hosts mit einer zweiten nichttransparenten Brücke eines zweiten Hosts durch eine Proxy-Paket-Vorrichtung, wobei die erste und die zweite nichttransparente Brücke eine Back-to-Back-Anordnung aufweisen.
- Verfahren nach Anspruch 12, das weiter das Senden eines Paketes von dem ersten an den zweiten Host umfasst.
- Verfahren nach Anspruch 13, wobei das Proxy-Paket einen Interrupt umfasst. 15. Verfahren nach Anspruch 14, wobei das Paket eine Heartbeat-, Journal- oder Checkpoint-Datennachricht umfasst.
- Verfahren nach Anspruch 14, wobei die erste nichttransparente Brücke ein erstes MMI/O umfasst, das erste Schattenregister umfasst, und die zweite nichttransparente Brücke ein zweites MMI/O mit zweiten Schattenregistern umfasst und das Paket sich von den ersten Schattenregistern zu den zweiten Schattenregistern bewegt.
- Verfahren nach Anspruch 13, das weiter das Initiieren eines Protokolls umfasst.
- Verfahren nach Anspruch 16, das weiter umfasst: das Setzen einer Zustandsänderungsbestätigung in einem gesetzten Register in den ersten Schattenregistern und das Schreiben eines Posted Memory Write, der Nutzdaten umfasst, in die ersten Schattenregister.
- Verfahren nach Anspruch 18, das weiter das Dekodieren des Posted Memory Write in der zweiten nichttransparenten Brücke und das Aktualisieren des zweiten Schattenregisters umfasst.
- Verfahren nach Anspruch 19, das weiter das Erkennen einer Zustandsänderung eines zweiten gesetzten Registers in den zweiten Schattenregistern und das Erzeugen eines Upstream-Interrupts umfasst.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/238,427 US8244951B2 (en) | 2008-09-25 | 2008-09-25 | Method and apparatus to facilitate system to system protocol exchange in back to back non-transparent bridges |
US12/238,427 | 2008-09-25 |
Publications (2)
Publication Number | Publication Date |
---|---|
DE102009042868A1 true DE102009042868A1 (de) | 2010-05-06 |
DE102009042868B4 DE102009042868B4 (de) | 2021-12-23 |
Family
ID=42037622
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE102009042868.2A Active DE102009042868B4 (de) | 2008-09-25 | 2009-09-24 | Verfahren und Vorrichtung für den einfacheren System-Protokoll-Austausch bei nichttransparenten Brücken (NTB) in Back-to-Back-Anordnung |
Country Status (3)
Country | Link |
---|---|
US (3) | US8244951B2 (de) |
CN (1) | CN101814060B (de) |
DE (1) | DE102009042868B4 (de) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8589613B2 (en) * | 2010-06-02 | 2013-11-19 | Intel Corporation | Method and system to improve the operations of an integrated non-transparent bridge device |
JP5930046B2 (ja) * | 2012-08-17 | 2016-06-08 | 富士通株式会社 | 情報処理装置、及び情報処理装置の制御方法 |
JP6052089B2 (ja) * | 2013-07-22 | 2016-12-27 | 富士ゼロックス株式会社 | 複合型コンピュータシステム |
US9465760B2 (en) | 2013-11-18 | 2016-10-11 | Futurewei Technologies, Inc. | Method and apparatus for delivering MSI-X interrupts through non-transparent bridges to computing resources in PCI-express clusters |
US9336173B1 (en) | 2013-12-20 | 2016-05-10 | Microsemi Storage Solutions (U.S.), Inc. | Method and switch for transferring transactions between switch domains |
US10031933B2 (en) * | 2014-03-02 | 2018-07-24 | Netapp, Inc. | Peer to peer ownership negotiation |
MY175303A (en) * | 2014-09-11 | 2020-06-18 | Intel Corp | Apparatus for sideband signaling, method for sideband signaling and system for sideband signaling |
US10572426B2 (en) * | 2015-06-02 | 2020-02-25 | Nxp Usa, Inc. | System-level redundancy in PCI express equipment |
US10599510B2 (en) * | 2015-07-08 | 2020-03-24 | Hitachi, Ltd. | Computer system and error isolation method |
US9860113B2 (en) | 2015-10-21 | 2018-01-02 | International Business Machines Corporation | Using an out-of-band network to reconfigure a bus interface port |
US10817447B2 (en) * | 2016-11-14 | 2020-10-27 | Intel Corporation | Input/output translation lookaside buffer (IOTLB) quality of service (QoS) |
WO2020133841A1 (en) | 2018-12-28 | 2020-07-02 | Huawei Technologies Co., Ltd. | Apparatus and method for locking pcie network having non-transparent bridging |
CN111988191B (zh) * | 2019-05-22 | 2022-03-29 | 北京华为数字技术有限公司 | 一种分布式通信网络的故障检测方法及装置 |
CN111049566B (zh) * | 2019-11-20 | 2022-03-08 | 中国航空工业集团公司西安航空计算技术研究所 | 信息传递方法和机载lrm模块 |
US11216348B2 (en) * | 2020-03-02 | 2022-01-04 | Silicon Motion, Inc. | All flash array server and control method thereof |
US11194678B2 (en) * | 2020-03-02 | 2021-12-07 | Silicon Motion, Inc. | Method and apparatus for performing node information exchange management of all flash array server |
US20230315659A1 (en) * | 2022-03-29 | 2023-10-05 | Mellanox Technologies, Ltd. | Interrupt emulation on network devices |
CN117743240B (zh) * | 2024-02-19 | 2024-04-19 | 井芯微电子技术(天津)有限公司 | 一种具备透明和非透明双模式的PCIe桥设备 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4954988A (en) * | 1988-10-28 | 1990-09-04 | Rockwell International Corporation | Memory device wherein a shadow register corresponds to each memory cell |
US6175888B1 (en) * | 1996-04-10 | 2001-01-16 | International Business Machines Corporation | Dual host bridge with peer to peer support |
US6006301A (en) | 1997-09-30 | 1999-12-21 | Intel Corporation | Multi-delivery scheme interrupt router |
JP2001154982A (ja) | 1999-11-24 | 2001-06-08 | Toshiba Corp | コンピュータシステム |
US6621293B2 (en) * | 2001-05-31 | 2003-09-16 | Koninklijke Philips Electronics N.V. | Integrated circuit arrangement with feature control |
US6728818B2 (en) * | 2001-06-27 | 2004-04-27 | International Business Machines Corporation | Dual storage adapters utilizing clustered adapters supporting fast write caches |
KR100441712B1 (ko) * | 2001-12-29 | 2004-07-27 | 엘지전자 주식회사 | 확장 가능형 다중 처리 시스템 및 그의 메모리 복제 방법 |
JP2005051473A (ja) * | 2003-07-28 | 2005-02-24 | Sony Corp | ネットワーク相互接続装置及びネットワーク相互接続方法、名前解決装置、並びにコンピュータ・プログラム |
US7234004B2 (en) * | 2003-12-19 | 2007-06-19 | International Business Machines Corporation | Method, apparatus and program product for low latency I/O adapter queuing in a computer system |
US7293129B2 (en) * | 2005-04-22 | 2007-11-06 | Sun Microsystems, Inc. | Flexible routing and addressing |
US7694025B1 (en) * | 2006-03-31 | 2010-04-06 | Integrated Device Technology, Inc. | Method and device for base address sorting and entry into base address registers |
US7676625B2 (en) * | 2006-08-23 | 2010-03-09 | Sun Microsystems, Inc. | Cross-coupled peripheral component interconnect express switch |
US7657663B2 (en) * | 2006-12-19 | 2010-02-02 | International Business Machines Corporation | Migrating stateless virtual functions from one virtual plane to another |
US7864788B2 (en) * | 2007-03-13 | 2011-01-04 | Cymphonix Corporation | System and method for bridging proxy traffic in an electronic network |
CN101242371B (zh) * | 2008-03-14 | 2010-11-10 | 杭州华三通信技术有限公司 | 基于PCIe交换架构路由器堆叠的方法、系统和装置 |
-
2008
- 2008-09-25 US US12/238,427 patent/US8244951B2/en not_active Expired - Fee Related
-
2009
- 2009-09-24 DE DE102009042868.2A patent/DE102009042868B4/de active Active
- 2009-09-25 CN CN200910253073.0A patent/CN101814060B/zh not_active Expired - Fee Related
-
2012
- 2012-08-09 US US13/570,889 patent/US8996780B2/en not_active Expired - Fee Related
-
2015
- 2015-03-27 US US14/671,947 patent/US9594717B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US8244951B2 (en) | 2012-08-14 |
US20150199294A1 (en) | 2015-07-16 |
US20100074264A1 (en) | 2010-03-25 |
CN101814060B (zh) | 2014-03-05 |
DE102009042868B4 (de) | 2021-12-23 |
US8996780B2 (en) | 2015-03-31 |
CN101814060A (zh) | 2010-08-25 |
US20130042045A1 (en) | 2013-02-14 |
US9594717B2 (en) | 2017-03-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE102009042868B4 (de) | Verfahren und Vorrichtung für den einfacheren System-Protokoll-Austausch bei nichttransparenten Brücken (NTB) in Back-to-Back-Anordnung | |
DE112008001957B4 (de) | Systeme und Verfahren zum Verbessern der Leistungsfähigkeit eines routfähigen Netzwerks | |
DE68913914T2 (de) | Multiprozessorsystem mit Vervielfältigung von globalen Daten. | |
DE60212626T2 (de) | Endknotenunterteilung mittels lokaler identifikatoren | |
DE69507636T2 (de) | Ein rechnersystem mit einer brücke zwischen bussen | |
DE112013003723B4 (de) | Hochleistungsfähige physikalische Kopplungsstrukturschicht | |
DE3127349C2 (de) | ||
DE69727856T2 (de) | Multiprozessorsystem mit Konsistenzfehler-Registrierung mit entsprechendem Verfahren | |
DE69108434T2 (de) | Mehrgruppen-Signalprozessor. | |
DE102006062802B4 (de) | Informationsverarbeitungssystem und Verfahren zum Steuern von mehreren Hot Plug Vorgängen | |
DE112013003766T5 (de) | Schnelles Entzerren beim Verlassen eines Niedrigenergie-Teilbreite-Hochgeschwindigkeitsverbindungszustands | |
DE3909948A1 (de) | Mikrocomputersystem mit mehrfachbus und buszuteilung | |
DE112013007732T5 (de) | PCI-Express-Erweiterungen | |
DE102009061252B3 (de) | Vorrichtung, Verfahren und System zur Verarbeitung einer Transaktion auf einem PCI-Bus mittels eines Root-Komplexes | |
DE69726302T2 (de) | Busschnittstellensteuerungsschaltung | |
DE3114961A1 (de) | Datenverarbeitungssystem | |
DE4417068A1 (de) | Verfahren und Einrichtung zum Betreiben eines Einzel-Prozessor-Computersystems als Mehr-Prozessor-System | |
DE60123134T2 (de) | Verfahren und vorrichtung für einen rekonfigurierbaren prozessor | |
DE102020110879A1 (de) | System, Vorrichtung und Verfahren zur Speicherspiegelung in einer gepufferten Speicherarchitektur | |
DE112018004220T5 (de) | Speicherzugriffs-Vermittlersystem mit anwendungsgesteuerter Unterstützung für frühzeitige Schreibbestätigung | |
DE10045916A1 (de) | Methode und System zum Implementieren eines Remstat-Protokolls und Einbeziehung und Nicht-Einbeziehung von L1-Daten im L2-Cache zur Verhinderung einer gegenseitigen Lesesperre | |
DE112007003722B4 (de) | Modifizieren von Systemroutinginformationen in linkbasierenden Systemen | |
DE60217132T2 (de) | Vorrichtung zur erhaltung der producer-consumer anordnung entlang einer ungeordneten schnittstelle | |
DE102020115989A1 (de) | Dynamische Präsentation von Zwischenverbindungsprotokollfähigkeitsstrukturen | |
DE69919584T2 (de) | Betriebsmittelsteuerung in einer datenverarbeitungsanlage |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OP8 | Request for examination as to paragraph 44 patent law | ||
R016 | Response to examination communication | ||
R016 | Response to examination communication | ||
R018 | Grant decision by examination section/examining division | ||
R020 | Patent grant now final |