DE112012005991T5 - Skalierbare gemeinsame Referenztaktungsarchitektur unter Verwendung einer getrennten, einzigen Taktquelle für Blade- und Rack-Server - Google Patents

Skalierbare gemeinsame Referenztaktungsarchitektur unter Verwendung einer getrennten, einzigen Taktquelle für Blade- und Rack-Server Download PDF

Info

Publication number
DE112012005991T5
DE112012005991T5 DE112012005991.3T DE112012005991T DE112012005991T5 DE 112012005991 T5 DE112012005991 T5 DE 112012005991T5 DE 112012005991 T DE112012005991 T DE 112012005991T DE 112012005991 T5 DE112012005991 T5 DE 112012005991T5
Authority
DE
Germany
Prior art keywords
qpi
blade
reference clock
server
link
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.)
Withdrawn
Application number
DE112012005991.3T
Other languages
English (en)
Inventor
Inho Kim
Choupin Huang
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 DE112012005991T5 publication Critical patent/DE112012005991T5/de
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • G06F1/10Distribution of clock signals, e.g. skew
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • G06F1/12Synchronisation of different clock signals provided by a plurality of clock generators

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)

Abstract

Skalierbare, gemeinsame Referenztaktungsarchitektur und Verfahren für Blade- und Rack-Server Es wird eine gemeinsame Referenztaktquelle konfiguriert, um synchronisierte Takteingangssignale für eine Vielzahl von Blades in einem Blade-Server oder Server in einem Rack-Server bereitzustellen. Die Referenztaktsignale werden dann für Taktoperationen in Verbindung mit seriellen Verbindungslinks zwischen Blades und/oder Servern, z. B. QuickPath Interconnect(QPI)-Links oder PCIe-Links, verwendet. Die seriellen Verbindungslinks können über elektrische oder optische Kabel zwischen Blades und Servern weitergeleitet werden. Der gemeinsame Referenztaktausgang und das Verbindungsschema zwischen Blades oder Servern ist skalierbar, sodass die Vielzahl von Blades oder Servern in Kommunikation miteinander verbunden werden können. Darüber hinaus werden, wenn QPI-Links verwendet werden, kohärente Speichertransaktionen über Blades oder Server bereitgestellt, die die Verwendung feingekörnter Parallelität für parallele Verarbeitungsanwendungen ermöglichen.

Description

  • GEBIET DER ERFINDUNG
  • Das Gebiet der Erfindung bezieht sich im Allgemeinen auf Computersysteme und, insbesondere, aber nicht ausschließlich, auf gemeinsame Referenztaktimplementierungen für die Unterstützung von Kommunikationslinks zwischen Server-Blades und Rack-Servern.
  • INFORMATIONEN ZUM STAND DER TECHNIK
  • Die Zahl der Computer- und Modellierungsprobleme, die durch Parallel Computing gelöst werden, steigt ständig. Parallel Computing ist eine Form der Computerverarbeitung, bei der Berechnungen gleichzeitig mithilfe mehrerer Verarbeitungsressourcen ausgeführt werden, die auf Basis des Prinzips arbeiten, dass große Probleme häufiger in kleinere aufgeteilt werden können, die dann gleichzeitig („parallel”) gelöst werden. Dies wird normalerweise erreicht, indem das Problem in unabhängige Teile aufgeteilt wird, sodass jedes Verarbeitungselement seinen Teil des Algorithmus gleichzeitig mit den anderen ausführen kann. Die Verarbeitungselemente können vielfältig sein und Ressourcen wie einen einzelnen Computer mit mehreren Prozessoren, vernetzte und/oder geclusterte Computer, Spezialhardware oder jede Kombination des oben gesagten umfassen.
  • Es gibt verschiedene Hardware-/Systemarchitekturen, die für die meisten Parallel Computing-Aufgaben eingesetzt werden, z. B. symmetrisches Multiprocessing, Mehrkernprozessoren, massiv parallele Computersysteme und netzwerkbasierte Architekturen, die mehrere lokal geclusterte oder geografisch verteilte Computer nutzen. Symmetrisches Multiprocessing (SMP) umfasst eine Mehrprozessor-Computerhardwarearchitektur, bei der zwei oder mehr identische Prozessoren mit einem einzigen, gemeinsamen Hauptspeicher verbunden sind und durch eine einzige BS-Instanz gesteuert werden. Viele der heutigen Multiprozessorsysteme nutzen eine SMP-Architektur. Bei Mehrkernprozessoren werden die Steuerung der Speicherzugriffe zu den Prozessorkernen und den damit verbundenen Cache-Ebenen ähnlich wie bei SMP verwaltet, wobei jeder Kern als getrennter Prozessor behandelt wird. Massiv parallele Computersystemarchitekturen werden häufig von Supercomputern genutzt. Diese Systeme können eine Vielzahl von Prozessoren und/oder mehrere Prozessor-Blades oder Server mit physisch getrennten Speicherressourcen nutzen. Netzwerkbasierte Architekturen nutzen normalerweise entweder einen lokalen Cluster aus Computern oder Servern oder ein Netzwerk geografisch verteilter Computer (auch verteiltes Rechnen genannt). Ein Computercluster kann zum Beispiel über einen Blade-Server oder Rack-Server mit Blades oder Modulen implementiert werden, die über Netzwerkverbindungen verbunden sind. Inzwischen können Hunderte, Tausende oder noch größere Zahlen geografisch verteilter Computer eingesetzt werden, um spezielle Aufgaben parallel durchzuführen, z. B. Probleme mithilfe eines MapReduce-Rahmens zu lösen.
  • Einer der wichtigsten Aspekte von parallelen Verarbeitungsarchitekturen ist die Datenkohärenz, die nötig ist, um sicherzustellen, dass die mehreren Verarbeitungselemente während laufender Operationen auf gültige Kopien der Datenobjekte zugreifen. Für SMP-Architekturen und Mehrkernprozessoren wird Datenkohärenz normalerweise über Speicherkohärenzschemata implementiert, z. B. durch Verwendung des bekannten MESI-Speicherkohärenzprotokolls (Mutual Exclusive, Shared, Invalid) oder ähnlicher Protokolle. Es gibt außerdem Techniken für die Sicherstellung der Datenkohärenz für verteilte Architekturen auf gröberer Granularitätsebene als unter SMP- oder Mehrkernprozessor-Systemen.
  • Ein weiterer wichtiger Aspekt der parallelen Verarbeitung ist die Skalierbarkeit. Die Leistungsskalierbarkeit einer bestimmten Architektur ist im Allgemeinen eine nichtlineare Funktion, da sie sich auf die Anzahl der Verarbeitungselemente bezieht, die zum großen Teil durch Datenzugriffsengpässe und Datenübertragungslatenzen bestimmt wird. Die schnellsten Architekturen (in Bezug auf den Datenzugriff) nutzen System-on-a-Chip(SoC)- oder Chip-Multi-Processor(CMP)-Konfigurationen mit mehreren Prozessorkernen, z. B. den 48-Kern Single-Chip-Computer (SCC) der Intel® Corporation. Die Datenzugriffsgeschwindigkeit wird zu einem großen Teil durch die Verwendung von sehr schnellen Verbindungen und Protokollen erleichtert, die kohärente Speichertransaktionen unterstützen (z. B. QuickPath® Interconnect oder QPI von Intel). Auch wenn SoCs und CMPs sehr schnelle, kohärente Speichertransaktionen unterstützen, ist ihre Skalierbarkeit in Bezug auf Verarbeitungselemente grundsätzlich auf die Anzahl der Kerne beschränkt, die sie nutzen.
  • Am entgegengesetzten Ende der Skala befinden sich verteilte Rechenarchitekturen. Dieser Ansatz bietet (theoretisch) unendliche Skalierbarkeit (in Bezug auf die Anzahl der Verarbeitungselemente), hat aber inhärente Latenzen, die die praktische Datengranularität funktionell begrenzen, die für die Durchführung paralleler Operationen verwendet werden kann. Als Folge ist der Grad der Parallelität bei verteilten Rechenarchitekturen relativ gering. Dazwischen liegen massiv parallele Architekturen und geclusterte Blade-/Serverarchitekturen. Diese haben inhärente Prozessorskalierbarkeit (innerhalb praktischer Grenzen auf Grund von Platz- und Wärmeüberlegungen) und bieten im Allgemeinen hohe Leistung. Jedoch ist die Leistung des Datenzugriffs und der Parallelität über Blades und/oder Server mithilfe vernetzter Links erheblich geringer als dies von SoCs und CMPs bereitgestellt wird, während die Verfügbarkeit von Supercomputern für die meisten Benutzer auf Grund der Kosten ausscheidet.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Die oben angesprochenen Aspekte und viele der damit verbundenen Vorteile in dieser Erfindung werden in der nachfolgenden ausführlichen Beschreibung verdeutlicht und in den dazugehörigen Zeichnungen für ein besseres Verständnis dargestellt, wobei gleiche Bezugszeichen zu den gleichen Teilen in den verschiedenen Ansichten gehören, wenn es nicht anderweitig angegeben ist:
  • 1 zeigt die Schichten des QPI-Protokollstapels.
  • 2 ist ein schematisches Diagramm, das die Struktur eines QPI-Links in voller Breite veranschaulicht.
  • 3 veranschaulicht eine Ausführungsform eines gemeinsamen Referenztaktschemas zur Unterstützung serieller Verbindungslinks zwischen Blades in einem Blade-Server.
  • 4 veranschaulicht eine Ausführungsform eines gemeinsamen Referenztaktschemas zur Unterstützung serieller Verbindungslinks zwischen Servern in Rack-Servern.
  • 5 ist ein schematisches Blockdiagramm, das eine Ausführungsform der Implementierung einer QPI-Verbindung von Blade zu Blade mithilfe einer Takt-Synthesizer-Platine veranschaulicht, die gemeinsame Referenztaktsignale zu vier Server-Blades liefert.
  • 5a ist ein schematisches Blockdiagramm, das eine Ausführungsform der Implementierung einer PCIe-Verbindung von Blade zu Blade mithilfe einer Takt-Synthesizer-Platine veranschaulicht, die gemeinsame Referenztaktsignale zu vier Server-Blades liefert.
  • 6 ist ein schematisches Blockdiagramm einer Systemarchitektur zur Unterstützung kohärenter Speichertransaktionen über Server-Blades oder Rack-Server mithilfe von QPI-Links zwischen Server-Blades oder Rack-Servern.
  • 6a ist ein schematisches Blockdiagramm einer Variante der Systemarchitektur von 6, die einen entsprechenden QPI-Knoten an jeder QPI-Schnittstelle nutzt.
  • 6b ist ein schematisches Blockdiagramm, das weitere Details der Systemarchitektur in 6 veranschaulicht.
  • 6c ist ein schematisches Blockdiagramm, das weitere Details der Systemarchitektur in 6a veranschaulicht.
  • 6d ist ein schematisches Blockdiagramm einer Systemarchitektur zur Unterstützung der Kommunikation zwischen Server-Blades und Rack-Servern mithilfe von PCIe-Links.
  • 7 ist ein schematisches Block- und Nachrichtenflussdiagramm, das ein Heim-Snoop-Speicherkohärenzschema veranschaulicht, das über vier Server-Blades gemäß einer Ausführungsform implementiert ist.
  • 8 ist ein Diagramm, das die Schichten des PCIe-Protokolls veranschaulicht.
  • 9 ist ein schematisches Diagramm, das die Struktur eines x16 PCIe-Links veranschaulicht und
  • 10 ist ein schematisches Diagramm, das die Struktur eines x4 PCIe-Links veranschaulicht.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Ausführungsformen von skalierbaren, gemeinsamen Referenztaktungsarchitekturen und Verfahren für Blade- und Rack-Server sind hierin beschrieben. In der folgenden Beschreibung werden zahlreiche spezielle Details (wie Verwendung von QPI- und PCIe-Links, die auf Weiterleitungstaktungs- bzw. eingebetteter Taktungsarchitektur basieren) ausgeführt, um ein gründliches Verständnis von Ausführungsformen der Erfindung bereitzustellen. Ein Fachmann wird jedoch erkennen, dass die Erfindung ohne eines oder mehrere der spezifischen Details oder mit anderen Verfahren, Komponenten, Materialien usw. umgesetzt werden kann. In anderen Fällen sind wohlbekannte Strukturen, Materialien oder Operationen nicht gezeigt oder ausführlich beschrieben, um zu verhindern, dass erfindungsgemäße Ausführungsformen in den Hintergrund rücken.
  • Verweise in dieser Beschreibung auf „eine Ausführungsform” bedeuten, dass ein bestimmtes Merkmal, eine Struktur oder ein Charakteristikum, das/die in Verbindung mit der Ausführungsform beschrieben wird, zumindest in einer Ausführungsform der vorliegenden Erfindung enthalten ist. Somit beziehen sich die Verwendungen des Ausdrucks „in einer Ausführungsform” an verschiedenen Stellen in dieser gesamten Beschreibung nicht notwendigerweise alle auf dieselbe Ausführungsform. Des Weiteren können die bestimmten Merkmale, Strukturen oder Charakteristika auf jegliche geeignete Weise in einer oder mehreren Ausführungsformen kombiniert sein.
  • In Übereinstimmung mit Aspekten der hierin offenbarten Ausführungsformen sind Techniken angegeben, die die Skalierung von clusterartigen, verteilten Verarbeitungsumgebungen wie Blade-Servern und Rack-Servern erleichtern, und gleichzeitig feinkörnige Parallelität unterstützen. Dieser Fortschritt wird teilweise durch Erweiterung eines Cache-Kohärenzprotokolls im Prozessor und eine Linkarchitektur zur Unterstützung sehr schneller kohärenter Speichertransaktionen der Speicherressourcen erleichtert, die auf mehreren Blade-Server- und/oder Rack-Server-Platinen verteilt sind. In einer Ausführungsform ist das Cache-Kohärenzprotokoll Intel QuickPath® Interconnect (QPI-Protokoll). Um besser zu verstehen, wie dieses implementiert wird, wird der folgende kurze Überblick des QPI gegeben.
  • Überblick über QuickPath Interconnect
  • QPI-Transaktionen werden durch paketierte Nachrichten ermöglicht, die über ein Mehrschichtprotokoll transportiert werden. Wie in 1 dargestellt, umfassen die Schichten eine physische Schicht, eine Linkschicht, eine Routingschicht und eine Protokollschicht. Auf der physischen Schicht werden Daten in 20-Bit-Phits (physischen Einheiten) ausgetauscht, wenn die volle Breite der 20 Bahnen genutzt wird, die in 2 dargestellt ist. Optional können reduzierte Bahnenbreiten genutzt werden, z. B. 10 oder 5 Bahnen. Auf der Linkschicht werden Phits in 80-Bit-Flits (Flusssteuerungseinheiten) zusammengefasst. Auf der Protokollschicht werden Nachrichten zwischen Agenten mithilfe eines paketbasierten Transports übertragen.
  • Die physische Schicht definiert die physische Struktur der Verbindung und ist für die Behandlung der Details der Operation der Signale bei einem bestimmten Link zwischen zwei Agenten verantwortlich. Diese Schicht verwaltet die Datenübertragung auf den Signalkabeln, z. B. elektrische Ebenen, Timing-Aspekte und logische Probleme in Verbindung mit dem Senden und Empfangen einzelner Informationsbits über die parallelen Bahnen. Wie in 2 dargestellt, besteht die physische Konnektivität jedes Verbindungslinks aus zwanzig Differenzialsignalpaaren plus einem Differenzialweiterleitungstakt. Jeder Port unterstützt ein Linkpaar, das aus zwei unidirektionalen Links besteht, um die Verbindung zwischen zwei Komponenten durchzuführen. Dies unterstützt Verkehr in beide Richtungen gleichzeitig.
  • Komponenten mit QPI-Ports kommunizieren mithilfe eines Paars unidirektionaler Punkt- zu-Punkt-Links, die als Linkpaar definiert sind, wie in 2 dargestellt. Jeder Port umfasst eine Übertragungslinkschnittstelle (Tx) und eine Empfangslinkschnittstelle (Rx). Für das veranschaulichte Beispiel hat Komponente A einen Tx-Port der mit einem Rx-Port von Komponente B verbunden ist. Ein unidirektionaler Link überträgt von Komponente A zu Komponente B und der andere Link überträgt von Komponente B zu Komponente A. Der Übertragungslink und der Empfangslink sind in Bezug auf einen spezifischen QPI-Agenten definiert. Der Übertragungslink von Komponente A überträgt Daten vom Tx-Port von Komponente A zum Rx-Port von Komponente B.
  • Die zweite Schicht über dem Protokollstapel ist die Linkschicht, die für zuverlässige Datenübertragung und Flusssteuerung verantwortlich ist. Die Linkschicht sorgt auch für Virtualisierung des physischen Kanals in mehrere virtuelle Kanäle und Nachrichtenklassen. Wenn die Initialisierung und das Training der physischen Schicht abgeschlossen ist, arbeitet ihr logischer Unterblock unter der Anweisung der Linkschicht, die für die Flusssteuerung verantwortlich ist. Ab dem Betriebspunkt dieses Links kommuniziert der logische Unterblock mit der Linkschicht auf Flit-Granularität (80 Bit) und überträgt Flits über den Link mit Phit-Granularität (20 Bit). Ein Flit besteht aus einer Ganzzahl Phits, wobei ein Phit als die Zahl der Bits definiert ist, die in einem Einzeitsintervall (unit interval, UI) übertragen wird. Zum Beispiel überträgt und empfängt ein QPI-Link in voller Breite ein komplettes Flit mithilfe von vier Phits.
  • Jedes Flit beinhaltet 72 Bit Nutzdaten und 8 Bit CRC (Cylic Redundancy Check/Zyklische Redundanzprüfung).
  • Die Routingschicht ist dafür verantwortlich, sicherzustellen, dass Nachrichten an ihre richtigen Ziele gesendet werden. Sie liefert den Rahmen für die Weiterleitung von Paketen durch die Verbindungsstruktur. Wenn eine Nachricht, die von der Linkschicht nach oben weitergegeben wurde, für einen Agenten in einem anderen Gerät gedacht ist, leitet die Routingschicht sie zum richtigen Link für das Weitersenden weiter. Alle Nachrichten, die für Agenten auf dem lokalen Gerät gedacht sind, werden zur Protokollschicht nach oben weitergegeben.
  • Die Protokollschicht hat mehrere Funktionen. Sie verwaltet die Cache-Kohärenz der Schnittstelle mithilfe eines Write-back-Protokolls. Sie hat außerdem einen Satz an Regeln für die Verwaltung nicht kohärenter Nachrichtenübermittlung. Nachrichten werden auf Protokollebene mithilfe von Paketen zwischen Agenten übertragen. Die Protokollschicht verwaltet die Lieferung von Nachrichten über mehrere Links unter Beteiligung mehrerer Agenten in mehreren Geräten. Die Cache-Kohärenz des Systems über verteilte Caches und Speichercontroller wird von verteilten Agenten aufrechterhalten, die an kohärenten Speicherplatztransaktionen teilnehmen, die Regeln unterliegen, die von der Protokollschicht definiert wurden. Das QPI-Kohärenzprotokoll unterstützt sowohl Heim-Snoop- (unten näher beschreiben) als auch Quell-Snoop-Verhaltensweisen.
  • Gemeinsamer Referenztakt für serielle Verbindungslinks
  • Wie oben angegeben, nutzt QPI einen Differenzialweiterleitungstakt, wie in 2 durch Weiterg. Takt an der übertragenden Komponente und Empf. Takt an der empfangenden Komponente dargestellt. Obwohl die Taktsignale weitergeleitet werden, gilt die Anforderung, das beide Seiten des Links in Bezug auf einen gemeinsamen Referenztakt synchronisiert sind. Dies ist in 2 als ein Referenztakt 200 und ein Frequenzmultiplikator 202 dargestellt, der verwendet wird, um die Referenztaktfrequenz auf eine höhere Frequenz zu multiplizieren, die von einem QPI-Link verwendet wird. Zum Beispiel arbeitet der Referenztakt in einer Ausführungsform mit 100 oder 133 MHz, während die Taktrate des QPI-Links (Weiterg. Takt) 2,4, 2,93, 3,2 oder 4,0 GHz ist.
  • QPI wurde ursprünglich für die Verbindung von Prozessorkernen und anderen Funktionsblöcken in SoC-Architekturen im Prozessor entwickelt. Als Folge haben QPI-Ports bei SoCs einfachen Zugriff auf einen gemeinsamen Referenztakt, da es ein oder mehrere Referenztaktsignale (und entsprechende multiplizierte Taktungssignale) gibt, die auf dem SoC-Chip selbst verfügbar sind.
  • Ein zusätzlicher Aspekt einer QPI (im Vergleich zu vielen anderen Verbindungen) ist, dass, da das QPI-Protokoll schichtenbasiert ist, es Netzwerkfunktionalität unterstützt, zum Beispiel das Routing Von Nachrichten zwischen Agenten mithilfe eines adressbasierten Schemas. Da QPI inhärente Netzwerkfunktionalität hat, gibt es keine physische Beschränkung in Bezug darauf, wo sich ein QPI-Port befindet, solange die anderen QPI-Linkkriterien erfüllt sind. Dies beinhaltet geeignete Signalpfade für die Unterstützung der physischen QPI-Schicht, die definierte Timing-Anforderungen umfasst. Insbesondere ist ein gemeinsames Referenztaktsignal an beiden Enden eines QPI-Links erforderlich, der sowohl interne Links (z. B. SoC-intern) als auch externe Links (d. h. Links, die getrennte Komponenten physisch verbinden) umfasst.
  • Im Zusammenhang mit einem Blade-Server können externe QPI-Links zwischen Blades mithilfe von Kupfer-Traces implementiert werde, die über einer Mid-Plane oder Backplane verlegt werden. Dieses Schema hat jedoch auf Grund der gemeinsamen Referenztaktanforderung und Routing-Trace-Beschränkungen eine begrenzte Skalierbarkeit. Da die Referenztakt-Timing-Anforderungen sehr eng sind z. B. der maximale Zeitunterschied zwischen den Referenztakteingängen an den entgegengesetzten Enden eines QPI-Links ist sehr gering), muss die Länge der Kupfer-Traces von einer gemeinsamen Referenztaktquelle zu den QPI-Port-Schnittstellen angepasst werden (in erheblichem Maß, je nach verschiedenen Parametern, z. B. Referenztaktfrequenz, Linkfrequenz, Trace-Länge usw.). Aus praktischer Sicht ist die Anzahl der Blades oder Serverplatinen, die in Kommunikation über QPI-Links mithilfe des Mid-Plane- oder Backplane-Schemas verknüpft werden können, begrenzt, z. B. zwei Blades oder Platinen – sobald zusätzliche Blades oder Platinen hinzugefügt werden müssen, erhöht sich die Routing-Komplexität der Traces (sowie die Anzahl der Traces und des entsprechenden benötigten Platzes auf den Blades/Platinen und der Mid-Plane oder Backplane) erheblich. Daher ist dieser Ansatz keine praktikable Lösung für die Skalierbarkeit von QPI-Links zwischen Blades oder zwischen Platinen in Blade-Servern und Rack-Servern.
  • Gemäß Aspekten der Ausführungsformen hierin werden Techniken für die Unterstützung größerer Skalierbarkeit von QPI-Links zwischen Blades und zwischen Platinen in Blade-Servern und Rack-Servern offenbart. Ein Aspekt der Techniken bezieht sich auf die Bereitstellung gemeinsamer Referenztaktsignale an den QPI-Ports oder -Schnittstellen.
  • 3 und 4 zeigen entsprechende Ausführungsformen gemeinsamer Referenztaktschemata zur Unterstützung serieller Verbindungslinks (z. B. QPI-Links) zwischen Blade-Servern und Servern in Rack-Servern. Wie in 3 dargestellt, hat ein Taktsynthesizer 300 acht Referenztaktausgänge, die mit einem entsprechenden Blade 302 in einem Blade-Server 304 verbunden sind. Jedes Taktsignal umfasst ein Differenzialsignal, das über ein zweiadriges (z. B. koaxiales) Kabel 306 übertragen wird. 4 stellt ein gemeinsames Referenztaktschema für einen Rack-Server 400 dar, der vier Server 402 beinhaltet. In dieser Konfiguration liefert ein Takt-Synthesizer 404 vier Referenztaktsignale zu den entsprechenden Rack-Servern 402 über zweiadrige Kabel 406.
  • Die Verlegung der Kabel 306 und 406, die verwendet werden, um die Referenztaktsignale in 3 und 4 zu übertragen, ist vereinfacht und wird verwendet, um Verbindungen auf Blockebene darzustellen. Wie oben erörtert, ist die Timing-Anforderung des Referenztaktsignals sehr eng. Demgemäß wird dies in einer Ausführungsform mithilfe derselben (d. h. im Wesentlichen gleichen) Kabellänge vom Takt-Synthesizer 300 oder 404 zu jedem der Blades 302 oder Server 402 behandelt. Ein alternatives Schema ist die Kombination einer Kabellänge mit einem Signalausbreitungsverzögerungselement, sodass die Signalausbreitungsverzögerung zwischen dem Takt-Synthesizer und den Blades 302 oder Servern 402 im Wesentlichen gleich ist.
  • 5 zeigt Details einer Ausführungsform einer Implementierung einer QPI-Verbindung von Blade-zu-Blade mithilfe einer Takt-Synthesizer-Platine 500, die gemeinsame Referenztaktsignale zu vier Blades 502-0, 502-1, 502-2 und 502-3 (auch mit Blade 0, Blade 1, Blade 2 und Blade 3 gekennzeichnet) liefert. Takt-Synthesizer-Platine 500 beinhaltet einen Takt-Synthesizer-Chip 504, der an ein Kristall gekoppelt ist 506, das ein Differenzialtaktsignal liefert, das in einen Differenzialpuffer 508 eingegeben wird. Im Allgemeinen wird Kristall 506 von einem Takt-Synthesizer-Chip 504 verwendet, um ein Differenzialtaktsignal mit einer Frequenz zu erzeugen, die eine Funktion der physischen Frequenz des Kristalls ist, die sehr stabil ist.
  • Takt-Synthesizer-Chip 504 kann einen von verschiedenen Takt-Synthesizer-Chips umfassen, die üblicherweise für die Erzeugung von Referenztaktsignalen verwendet werden. In einer Ausführungsform ist Takt-Synthesizer-Chip 504 mit der Taktspezifikation CK420BQ von Intel konform und produziert eine Ausgangsfrequenz von 100 MHz oder 133 MHz. Je nach Zahl der Differenzialtakt-Ausgangssignalpaare, die vom Takt-Synthesizer-Chip 504 erzeugt werden, kann Differenzialpuffer 508 verwendet werden oder nicht. Zum Beispiel liefert ein Takt-Synthesizer-Chip wie der Silego SLG84901 vier CPU-Differenzialtaktausgänge. Demgemäß wäre für eine Implementierung mit vier Platinen kein Differenzialpuffer 508 erforderlich. Jedoch würde bei Implementierungen, die gemeinsame Taktsignale für mehr als die Anzahl der vom Takt-Synthesizer-Chip gelieferten Differenzialtakt-Signalausgaben liefern, ein Mittel für die Replikation des Differenzialtaktsignals implementiert werden. Es gibt verschiedene Arten von Differenzialpuffern, die verwendet werden können, z. B. ein DB1900Z, 9DB1200, DB800Q usw. Takt-Synthesizer-Platine 500 enthält außerdem einen entsprechenden Kabelanschluss für jedes Differenzialausgangssignal, z. B. einen Koaxialanschluss für Koaxialkabel.
  • Jedes der Blades 502-0, 502-1, 502-2 und 502-3 ist ähnlich konfiguriert, wie in 5 veranschaulicht, wobei ähnliche Komponenten dieselbe Basisreferenznummer teilen und unterschiedliche Suffixes die Komponenten angeben, die miteinander verbunden sind (z. B., 5xx-0, 5xx-1, 5xx-2, 5xx-3). Demgemäß gilt, dass, auch wenn die folgende Beschreibung für Blade 502-0 gilt, selbstverständlich ist, dass Blades 502-1, 502-2 und 502-3 jeweils ähnliche Komponenten haben. In der veranschaulichten Ausführungsform umfasst Blade 502-0 eine CPU 510-0, einen Interposer 512-0, einen CPU-Steckplatz 514-0, einen Differenzialpuffer 516-0, einen 2:1-Multiplexer (mux) 518-0 und einen Onboard-Takt-Synthesizer-Chip 520-0 mit einem verbundenen Kristall. Differenzialpuffer 516-0 wird verwendet, um das Differenzialreferenztaktsignal zu replizieren, das von einem Takt-Synthesizer-Chip 520-0 produziert wird, oder ein empfangenes externes Referenztaktsignal von der Takt-Synthesizer-Platine 500, und um das replizierte Taktsignal für verschiedene Blade-Komponenten bereitzustellen. Diese Komponenten können die Referenztaktsignale, die sie empfangen, über interne Frequenzmultiplikatoren ändern, oder solche Frequenzmultiplikatoren können auf Blade 502-0 als eine oder mehrere getrennte Komponenten implementiert werden (nicht dargestellt).
  • Beim herkömmlichen Betrieb werden Onboard-Takt-Synthesizer-Chips 520-0, 520-1, 520-2 und 520-3 verwendet, um ein gemeinsames Referenztaktsignal für verschiedene Komponenten auf entsprechenden Blades 502-0, 502-1, 502-2 und 502-3 bereitzustellen. Jedoch ermöglichen 2:1-Muxes 518-0518-3 die Bereitstellung des Referenztaktsignals für die Blades entweder durch einen Onboard-Takt-Synthesizer-Chip oder über ein externes Referenztaktsignal, das z. B. von der Takt-Synthesizer-Platine 500 erzeugt wird. Demgemäß nutzen, wenn die 2:1-Muxes 518-0518-3 jeweils so geschaltet werden, dass sie ein externes Referenztaktsignal nutzen, das von der Takt-Synthesizer-Platine 500 bereitgestellt wird, die Komponenten auf jedem der Blades 502-0502-3 ein gemeinsames Referenztaktsignal, das über die Blades synchronisiert wird. Alternativ werden in einer Ausführungsform die gemeinsamen Referenztakte von der Takt-Synthesizer-Platine 500 direkt zu den Differenzialpuffern der einzelnen Blades 502-0502-3 geliefert, sodass keine 2:1-Muxes und keine Onboard-Takt-Synthesizer nötig sind. Demgemäß sind in dieser Ausführungsform keine 2:1-Muxes 518-0518-3 und Onboard-Takt-Synthesizer 520-0520-3 vorhanden.
  • CPU 510-0 u Interposer 512-0 sind jeweils mit einer entsprechenden QPI-Schnittstelle (I/F) 522-0 und 524-0 dargestellt. Außerdem ist Interposer 512-0 mit einer Elektro-zu-Opto(E zu O)-Schnittstelle 526-0 dargestellt, die in einer Ausführungsform implementiert ist. In einer alternativen Konfiguration wird die Elektro-zu-Opto-Schnittstelle 526-0 durch einen elektrischen Anschluss ersetzt, der so konfiguriert ist, dass er mit einem verdrahteten Verbindungskabel statt einem optischen Kabel gekoppelt ist.
  • Nach Montage ist Interposer 512-0 zwischen CPU 510-0 und CPU-Steckplatz 514-0 zwischengeschaltet. Bei einer normalen Installation, die keinen Interposer nutzt, wird eine Vielzahl von Pins an der Unterseite von CPU 510-0 in eine ähnliche Vielzahl passender Anschlusselemente (z. B. Pinbuchsen) an Steckplatz 514-0 gesteckt. Ein Teil der Funktionalität von Interposer 512-0 besteht darin, dieselben Verbindungen in einer gestapelten Konfiguration zu ermöglichen. Demgemäß hat die Oberfläche von Interposer 512-0 eine Vielzahl von Pinbuchsen, die elektrisch mit einer Vielzahl von Pins an der Unterseite des Interposers gekoppelt sind. Demgemäß sind, wenn Interposer 512-0 in CPU-Steckplatz 514-0 installiert ist und CPU 510-0 in Interposer 512-0 installiert ist, die elektrischen Verbindungen ähnlich, wie wenn CPU 510-0 in CPU-Steckplatz 514-0 direkt installiert wäre. In einer alternativen Ausführungsform kann ein Interposer oder eine Leiterplatte/ein Substrat mit ähnlicher Funktionalität mit einem Server oder einer Serverplatine außer einem CPU-Steckplatz gekoppelt werden, wobei der entsprechende Interposer-Schaltkreis elektrisch mit QPI-Schnittstelle 522-0 über elektrische Traces verbunden ist, die auf der Platine verlegt sind.
  • Interposer 512-0 ist des Weiteren so konfiguriert, dass er eine Schnittstelle zur QPI-Schnittstelle 522-0 von CPU 510-0 liefert und eine optische oder verdrahtete Kabelschnittstelle zur QPI-Schnittstelle 522-0 liefert. QPI-Schnittstelle 522-0 ist für zwei Aspekte einer QPI-Schnittstelle für CPU 510-0 repräsentativ. Der erste entspricht einer Logik und einem Schaltkreis, die in CPU 510-0 eingebettet sind, die einem QPI-Schnittstellenblock entsprechen, wie unten näher beschrieben. Der zweite Aspekt ist ein Satz von Pins, die eine externe QPI-Schnittstelle umfassen, um die Signalisierung der physischen QPI-Schicht an Komponenten außerhalb der CPU 510-0 zu unterstützen. In ähnlicher Weise ist QPI-Schnittstelle 524-0 auf Interposer 512-0 für eine Satz Buchsen repräsentativ, die so konfiguriert sind, dass sie zu entsprechenden Pins auf CPU 510-0 passen, die der externen QPI-Schnittstelle entsprechen. QPI-Schnittstelle 524-0 kann des Weiteren zusätzliche Aspekte umfassen, z. B. Puffer und damit verbundene Logik und/oder Signalkonditionierung für die Ermöglichung der QPI-Verbindungsfunktionalität, wie unten näher ausgeführt.
  • Elektrische QPI-Signale werden von der QPI-Schnittstelle 524-0 zur Elektro-zu-Opto-Schnittstelle 526-0 auf Interposer 512-0 weitergeleitet. In einer Ausführungsform umfasst Interposer 512-0 eine Mehrschicht-Leiterplatte und die Signale werden über entsprechende Draht-Traces weitergeleitet, die in der Leiterplatte eingebettet sind. Andere Arten von Substraten können ebenfalls verwendet werden. Elektro-zu-Opto-Schnittstelle 526-0 ist so konfiguriert, dass sie elektrische Signale, die von QPI-Schnittstelle 524-0 empfangen werden, in optische Signale für die ausgehende Übertragung über ein optisches Kabel umwandelt, das mit der Elektro-zu-Opto-Schnittstelle 526-0 gekoppelt ist, und eingehende optische Signale, die über das optische Kabel (oder ein getrenntes optisches Kabel, je nach Kabelimplementierung) in elektrische Signal umwandelt. In einer Ausführungsform werden optische Signale und damit verbundene optische Kabel statt elektrische Signale und elektrische Kabel verwendet, um EMI-Effekte (elektromagnetische Störung) zu verringern. Es ist zu beachten, dass die Elektro-zu-Opto-Schnittstelle 526-0 des Weiteren entsprechende optische Anschlüsse beinhaltet, die für den Anschluss an optische Kabel konfiguriert sind.
  • Wie oben angegeben, werden in einer weiteren Ausführungsform elektrische Signale und Verkabelung statt optischer Signale und Verkabelung für die Links zwischen Blades verwendet. Demgemäß sind in dieser Ausführungsform entsprechende QPI-Linkkabel und Schnittstellen einschließlich entsprechender Anschlüsse für das Anschließen 512-0 montiert (nicht dargestellt). Bei einer Ausführungsform werden Twinaxkabel verwendet.
  • 5 stellt des Weiteren eine Vielzahl von QPI-Kabeln dar, die zwischen Interposern 512-0512-3 auf Blades 502-0502-3 gekoppelt sind. Diese beinhalten QPI-Kabel 530, 532, 534, 536, 538 und 540, die sowohl optische als auch elektrische Kabel veranschaulichen. 5 stellt eine beispielhafte Konfiguration dar, bei der Blades 502-0502-3 jeweils in Kommunikation mit jedem anderen Blade über einen QPI-Link verknüpft sind. Jedoch können auch andere Konfigurationen eingesetzt werden. Im Allgemeinen kann ein bestimmtes Blade, das an parallelen Verarbeitungsoperationen beteiligt ist, mit einem oder mehreren beteiligten Blades mithilfe entsprechender QPI-Links verknüpft sein. In einer Ausführungsform ist eine Vielzahl von Blades in einer Verkettung verknüpft, wobei jedes Blade über entsprechende QPI-Links mit zwei anderen Blades verbunden ist. So kann jedes Blade mit jedem andere Blade über QPI-Links kommunizieren, die ein oder mehrere Hops umfassen. Wenn die Verkettung geschlossen ist, kann weitere Leistung durch eine Verringerung der Anzahl der Hops für verschiedene Transaktionen erreicht werden.
  • Neben dem Einsatz und der Verlegung von Kabeln zwischen Interposern können andere Konfigurationen verwendet werden. In einer Ausführungsform wird ein Kabelsegment von einem Interposer zu einem Kabelanschluss oder einer Reihe von Anschlüssen verlegt, die außerhalb eines Blades oder Servers montiert sind, oder unterstützt sonst eine externe Verbindung mit dem Blade oder Server, wenn das Blade oder der Server in einer entsprechenden Blade-Servergehäuse oder einem Server-Rack installiert ist. In einer weiteren Ausführungsform, die keinen Interposer nutzt, sind Signal-Traces in der Hauptplatine eines Blades oder Servers von Pinouts im Steckplatz eingebettet, die dem Satz der QPI-Schnittstellenpins in der CPU entsprechen, und entweder mit einem Anschluss im Blade oder Server oder mit einem externen Anschluss (oder sonst einer Kombination der beide) verknüpft. Als Option kann eine Elektro-zu-Opto-Schnittstellenkomponente operativ zwischen den Signal-Traces und einem entsprechenden optischen Kabelanschluss oder einer Reihe von Anschlüssen gekoppelt sein, mit denen ein optisches Kabel oder optische Kabel bei Installation gekoppelt werden.
  • Beispielhafte Blade- und Systemarchitektur
  • 6 zeigt eine Systemarchitektur 600 die so konfiguriert sein kann, dass sie kohärente Speichertransaktionen über Server-Blades oder Rack-Server mithilfe von QPI-Links zwischen den Server-Blades oder Rack-Servern unterstützt. Systemarchitektur 600 ist eine Veranschaulichung einer fortschrittlichen Systemarchitektur mit SoC-Prozessoren (CPUs), die mehrere Prozessorkerne 602 unterstützen, die jeweils mit einem entsprechenden Knoten 604 auf einer Ringverbindung gekoppelt sind, die hierin mit Ring2 und Ring3 gekennzeichnet und benannt sind (entsprechend den CPUs, die in CPU-Steckplätzen von Blades 2 bzw. 3 installiert sind). Zur Einfachheit sind die Knoten für jede der Ring2- und Ring3-Verbindungen als in einer einzelnen Linie verbunden dargestellt. Wie in Detail 606 dargestellt, beinhaltet in einer Ausführungsform jede dieser Ringverbindungen vier getrennte Sätze an „Drähten” oder elektrischen Pfaden, die jeden Knoten verbinden, wodurch vier Ringe mit jeweils Ringt und Ring3 gebildet werden. In der tatsächlichen Praxis gibt es mehrere physische elektronische Pfade, die jedem Draht entsprechen, der veranschaulicht ist. Für Fachleute ist selbstverständlich, dass die Verwendung einer einzelnen Linie, um die Verbindungen hierin zu zeigen, zur Einfachheit und Klarheit erfolgt, da jede besondere Verbindung einen oder mehrere elektrische Pfade nutzen kann.
  • Im Kontext der Systemarchitektur 600 kam ein Cache-Kohärenzschema durch Verwendung unabhängiger Nachrichtenklassen implementiert werden. Unter einer Ausführungsform einer Ringverbindungsarchitektur können unabhängige Nachrichtenklassen durch Nutzung der entsprechenden Drähte für jede Nachrichtenklasse implementiert werden. Zum Beispiel umfasst in der vorher erwähnten Ausführungsform jeder Ring2 und Ring3 vier Ringpfade oder Drähte, die hierin als AD, AK, IV und BL gekennzeichnet und genannt sind. Demgemäß sind sie, da die Nachrichten über getrennte physische Verbindungspfade gesendet werden, aus Sicht der Übertragungsschicht unabhängig voneinander.
  • In einer Ausführungsform werden Daten zwischen Knoten auf zyklische Weise weitergegeben. Zum Beispiel werden für jeden realen oder logischen Taktzyklus (der sich über einen oder mehrere tatsächliche reale Taktzyklen erstrecken kann) Daten von einem Knoten zu einem benachbarten Knoten im Ring weitergegeben. In einer Ausführungsform können verschiedene Daten und Signale sowohl im Uhrzeigersinn als auch entgegen dem Uhrzeigersinn rund um den Ring wandern. Im Allgemeinen können die Knoten in Ring2 und Ring3 gepufferte und ungepufferte Knoten umfassen. In einer Ausführungsform sind mindestens einige der Knoten in Ring2 und Ring3 ungepuffert.
  • Jeder Ring2 und Ring3 beinhaltet eine Vielzahl von Knoten 604. Jeder mit Cbo n (wobei n eine Zahl ist) gekennzeichnete Knoten ist ein Knoten, der einem Prozessorkern entspricht, der dieselbe Zahl teilt n (wie durch die Engine-Nummer der Kerns n gekennzeichnet). Es gibt auch andere Arten von Knoten, die in Systemarchitektur 600 dargestellt sind, z. B. QPI-Knoten 3-0 und 2-0, einen IIO-Knoten und PCIe-Knoten. In der veranschaulichten Ausführungsform ist QPI-Knoten 3-0 operativ mit den beiden QPI-Agenten 3-0 und 3-1 gekoppelt und QPI-Knoten 2-0 ist mit den QPI-Agenten 2-0 und 2-1 gekoppelt. Der IIO-Knoten ist operativ mit einer Eingangs-/Ausgangsschnittstelle 610 gekoppelt. In ähnlicher Weise sind PCIe-Knoten operativ mit PCIe-Schnittstellen 612 und 614 gekoppelt. Des Weiteren sind eine Reihe von Knoten dargestellt, die mit „X” markiert sind. Diese Knoten werden für Timing-Zwecke verwendet. Es ist zu beachten, dass die QPI-, IIO-, PCIe- und X-Knoten nur beispielhaft für eine Implementierungsarchitektur sind, während andere Architekturen mehr oder weniger jedes Knotentyps oder überhaupt keine Knoten haben können. Darüber hinaus können andere Arten von Knoten (nicht dargestellt) ebenfalls implementiert werden.
  • QPI-Agenten 3-0, 3-1, 2-0 und 2-1 beinhalten jeweils Schaltkreis und Logik für die Ermöglichung der Übertragung von QPI-Paketen zwischen QPI-Agenten und den QPI-Knoten, mit denen sie gekoppelt sind. Dieser Schaltkreis umfasst Eintritts- und Austrittspuffer, die als Eintrittspuffer 616, 618, 620 und 622 und Austrittspuffer 624, 626, 628 und 630 dargestellt sind.
  • Systemarchitektur 600 zeigt außerdem zwei zusätzliche QPI-Agenten 0-1 und 1-1, die jeweils QPI-Knoten auf Ringen von CPUs entsprechen, die in entsprechenden Interposern und Steckplätzen auf Server-Blades 0 und 1 installiert sind (sowohl Ringe als auch Knoten sind nicht dargestellt). Wie zuvor umfasst jeder QPI-Agent Eintritts- und Austrittspuffer, die als Eintrittspuffer 632 und 634 und Austrittspuffer 636 und 638 dargestellt sind. Weitere Details der Systemarchitektur 600 und einer Systemarchitektur 600a, die alle vier Rings0–3 zeigt, sind in 6a–c dargestellt.
  • Systemarchitektur 600 stellt des Weiteren drei QPI-Links von Blade zu Blade 601, 603 und 605 sowie externe gemeinsame Referenztaktsignale 607 dar. Es gibt außerdem einen ähnlichen QPI-Link von Bade zu Blade zwischen Blade 0 und Blade 1, der in 6 nicht dargestellt ist (nähere Informationen zu diesen QPI-Links siehe 6a–c). Wie oben beschrieben, kann ein Server-Blade oder Rack so konfiguriert werden, dass es ein externes Referenztaktsignal statt eines onboard generierten Referenztaktsignals als Referenztaktsignal für das Blade oder den Server verwendet. Als Folge wird, wenn mehrere Blades oder Server synchronisierte externe Referenztaktsignale (wie von der Takt-Synthesizer-Platine 500 aus 5 bereitgestellt), verwenden, das QPI-Timing an den entgegengesetzten Enden der QPI-Links von Blade zu Blade 601, 603 und 605 ebenfalls synchronisiert, sodass Nachrichten möglich sind, die dem QPI-Protokoll und der physischen Schicht entsprechen, die über diese QPI-Links übertragen werden.
  • Im Kontext der Aufrechterhaltung der Cache-Kohärenz in einer Mehrprozessor-(oder Mehrkern-)Umgebung werden verschiedene Mechanismen genutzt, um sicherzustellen, dass die Daten nicht beschädigt werden. Zum Beispiel erhält bei Systemarchitektur 600 jeder der Prozessorkerne 602, der einer bestimmten CPU entspricht, Zugriff auf einen gemeinsamen Speicher, der mit dieser CPU verbunden ist, wie durch Speicher 640-3 oder 640-2 dargestellt, der normalerweise aus einem oder mehreren Banken dynamischem Direktzugriffspeicher (dynamic random access memory, DRAM) besteht. Zur Einfachheit ist der Schaltkreis der Speicherschnittstelle für die Ermöglichung der Verbindung zum gemeinsamen Speicher nicht dargestellt. Stattdessen sind die Prozessorkerne in jedem der Ring2 bzw. Ring3 dargestellt, die über einen Heimagentenknoten 2 (HA 2) und einen Heimagentenknoten 3 (HA 3) mit dem Speicher verbunden sind. Außerdem kann der Schaltkreis der Speicherschnittstelle im Allgemeinen einen chipinternen Speichercontroller oder einen chipexternen (d. h. außerhalb des CPU SoC-Chips) Speichercontroller enthalten, der mit einem chipexternen Speicher gekoppelt ist. Außerdem befindet sich der DRAM-Speicher selbst außerhalb des Chips.
  • Da jeder der Prozessorkerne seinen jeweiligen Code ausführt, werden verschiedene Speicherzugriffe durchgeführt. Wie allgemein bekannt ist, nutzen moderne Prozessoren eine oder mehrere Ebenen Speichercache, um zwischengespeicherte Speicherzeilen naher bei den Kernen zu speichern und so einen schnelleren Zugriff auf solchen Speicher zu ermöglichen. Dies beinhaltet jedoch das Kopieren des Speichers aus dem gemeinsamen (d. h. Haupt-)Speicher zu einem lokalen Cache, das heißt, mehrere Kopien derselben Speicherzeile können im System vorhanden sein. Um die Speicherintegrität aufrechtzuerhalten, wird ein Cache-Kohärenzprotokoll genutzt. Unter dem bekannten MESI-Cache-Kohärenzprotokoll wird, wenn ein Prozessor (oder Kern) eine erste Kopie einer Speicherzeile von einem Hauptspeicher in seinen lokalen Cache durchführt, ein Mechanismus genutzt, um die Cache-Zeile als Exklusiv (E) zu kennzeichnen, sodass ein anderer Kern, der versucht, auf dieselbe Speicherzeile zuzugreifen, weiß, dass er keinen exklusiven Zugriff auf die Speicherzeile hat. Wenn zwei oder mehr Kerne Kopien derselben Cache-Zeile haben und die Daten in der Zeile nicht geändert wurden (d. h. die Daten in den Caches sind dieselben wie die Zeile im Hauptspeicher), sind die Cache-Zeilen im geteilten (shared, S) Zustand. Sobald an den Daten im lokalen Cache eine Änderung vorgenommen wird, wird die Zeile für diesen Cache als modifiziert (M) gekennzeichnet, und die anderen Kopien der Zeile werden als ungültig (invalid, I) gekennzeichnet, da sie den geänderten Zustand der Daten für diese Zeile nicht mehr widerspiegeln. Der Zustand kehrt zu Exklusiv zurück, sobald der Wert in der geänderten Cache-Zeile wieder in den Hauptspeicher geschrieben wird.
  • Die Intel® Corporation führte vor kurzem einen neuen Zustand Weiterleitung (forward, F) ein, der zu einem modifizierten MESI-Cache-Kohärenzprotokoll hinzugefügt wurde, dem so genannten MESIF-Cache-Kohärenzprotokoll. Der Zustand F gibt an, dass ein Cache als designierter Antwortender bei allen Anfragen für die bestimmte Zeile agiert. In einem System mit Caches, die das MESI-Protokoll nutzen, erhält eine Cache-Zeilenanforderung, die von mehreren Caches empfangen wird, die eine Zeile im Zustand S enthalten, mehrere Antworten. In einem System mit Caches, die das MESIF-Protokoll nutzen, wird eine Cache-Zeilenanforderung jedoch nur von dem Cache beantwortet, der die Zeile im Zustand F enthält.
  • Es ist zu beachten, dass die MESI- und MESIF-Protokolle Beispiele von Cache-Kohärenzprotokollen sind und diese daher nicht einschränkend sind, sondern hierin verwendet werden, um die Verwendung beispielhafter Nachrichtenklassen zu erklären, die Nachrichten entsprechen, die rund um Ringe und über Server-Blades und Rack-Server in Übereinstimmung mit den hierin offenbarten Architekturen übertragen werden.
  • Es ist außerdem gängige Praxis, mehrere Cache-Ebenen zu haben, wobei die Caches, die dem Prozessorkern am nächsten sind, die größte Latenz und die geringste Größe haben, und die Caches, die weiter weg sind, größer sind, aber mehr Latenz haben. Eine typische Konfiguration kann zum Beispiel Caches erster und zweiter Ebene nutzen, die üblicherweise als L1- und L2-Caches bezeichnet werden. Eine andere häufige Konfiguration kann des Weiteren einen Cache dritter Ebene oder L3-Cache nutzen.
  • Im Kontext von Systemarchitektur 600 wird der Cache auf oberster Ebene als Last Level Cache oder LLC bezeichnet. Der LLC für einen bestimmten Kern kann z. B. normalerweise einen L3-Cache beinhalten, wenn L1- und L2-Caches ebenfalls genutzt werden, oder einen L2-Cache, wenn der einzige andere Cache ein L1-Cache ist. Selbstverständlich könnte dies auf weitere Cache-Ebenen ausgeweitet werden, wobei der LLC der letzten (d. h. höchsten) Cache-Ebene entspricht.
  • In der veranschaulichten Konfiguration von 6 beinhaltet jeder Prozessorkern 602 eine Verarbeitungs-Engine 642, die mit einem L1- oder L1/L2-Cache 644 gekoppelt ist, der für diesen Kern „privat” ist. Dagegen ist jeder Prozessorkern außerdem zusammen mit einer „Scheibe” eines verteilten LLC 646 angeordnet, wobei jeder der anderen Kerne Zugriff auf alle verteilten Scheiben hat. Unter einer Ausführungsform ist der verteilte LLC physisch unter N-Kernen verteilt, die N-Blöcke verwenden, die durch entsprechende Adressbereiche aufgeteilt sind. Unter diesem Verteilungsschema kommunizieren alle N-Kerne mit allen N-LLC-Scheiben unter Verwendung eines Adressen-Hash, um die „Heim”-Scheibe für alle angegebenen Adressen zu finden. Ein geeigneter Verbindungsschaltkreis wird für die Ermöglichung der Kommunikation zwischen den Kernen und Scheiben verwendet, jedoch zur Einfachheit und Klarheit ist ein solcher Schaltkreis nicht in 6 dargestellt.
  • Wie weiter veranschaulicht ist jeder der Knoten 604 in System 600 mit einem Cache-Agenten 648 verbunden, der so konfiguriert ist, dass er eine Nachrichtenübermittlung in Verbindung mit Signal- und Dateninitiierung und Empfang in Verbindung mit einem Cache-Kohärenzprotokoll durchführt, das vom System implementiert ist, wobei jeder Cache-Agent 648 mit dem Cache verbundene Operationen behandelt, die Adressen entsprechen, die seinem angeordneten LLC 646 zugeordnet sind. Außerdem nutzt in einer Ausführungsform jeder der Heimagenten HA2 und HA3 entsprechende Cache-Filter 650 und 652 und die verschiedenen Caching- und Heimagenten greifen auf die Cache-Zeilen-Nutzungsdaten und aktualisieren sie, die in einem entsprechenden Verzeichnis 654-2 und 654-3 gespeichert sind, das in einem Teil des gemeinsamen Speichers 640-2 und 640-3 implementiert ist. Für Fachleute ist selbstverständlich, dass andere Techniken für die Aufrechterhaltung der Informationen verwendet werden können, die die Cache-Zeilennutzung betreffen.
  • 6a zeigt eine Systemarchitektur 600a, die weitere Details der CPUs darstellt, die so konfiguriert sind, dass sie in Blades 0 und 1 installiert werden, zusammen mit Details eines vierten CPU QPI-Link von Blade zu Blade 609 und den damit verbundenen QPI-Agenten und Puffern. Verschiedene Details jedes Ring2 und Ring3 wurden entfernt (gegenüber 6), um die vier internen Ringverbindungen (Ring0, Ring1, Ring2 und Ring3) in derselben ZeichnungsFig. darzustellen, es ist jedoch selbstverständlich, dass jeder Ring0 und Ring1 ähnliche Komponenten wie Ring2 und Ring3 haben kann, die in 6 dargestellt sind. Wie zuvor beinhaltet jeder Ring0 und Ring1 Knoten mit der Kennzeichnung Cbo n (z. B. Cbo 18 und Cbo 23 in Ring0 und Cbo 24 und 28 in Ring2), mit denen die verbundenen Prozessorkerne und damit verbundenen Cache-Komponenten gekoppelt sind, einschließlich L1-, L2- und LLC-Caches mit entsprechenden Agenten. Außerdem beinhaltet jeder Ring0 und Ring1 entsprechende Heimagenten HA 0 und HA 1, die implementiert sind, um kohärente Speicheroperationen auf die hierin erörterte Weise zu unterstützen.
  • Die Konfiguration des CPU QPI-Link von Blade zu Blade 609 ist ähnlich den CPU QPI-Links von Blade zu Blade 601, 603 und 605, die in 6 dargestellt und oben erörtert sind. In diesem Fall unterstützt der CPU QPI-Link von Blade zu Blade die Übertragung von QPI-Signalen zwischen QPI-Knoten 0-1 auf Ring0 und CPI-Knoten 1-0 auf Ring1, wie von QPI-Agenten 0-0 und 1-0, Eintrittspuffern 656 und 658 und Austrittspuffern 660 und 662 dargestellt.
  • Es ist zu beachten, dass in Systemarchitektur 600a die Sätze der QPI-Agenten und Schnittstellen für ein bestimmtes Blade operativ mit getrennten QPI-Knoten statt mit einem gemeinsamen QPI-Knoten gekoppelt sind. Dies ist eine alternative Konfiguration zur Verwendung eines einzelnen QPI-Knotens, der operativ mit zwei QPI-Agenten gekoppelt ist. 6a zeigt des Weiteren gestrichelte Ellipsen, in denen Paare von QPI-Knoten eingeschlossen sind (z. B. QPI-Knoten 0-0 und 0-1, 1-0 und 1-1 usw.). Dies soll veranschaulichen, dass, auch wenn dies zur Veranschaulichung als getrennte Knoten dargestellt ist, diese Knoten tatsächlich als einzelne Knoten implementiert sein können, ähnlich wie in 6 dargestellt.
  • Komponenten in Verbindung mit den QPI-Links von Blade zu Blade sind in 6b klarer dargestellt, die eine abstrakte Ansicht von System 600 darstellt, und in 6c, die eine abstrakte Ansicht von System 600a darstellt. Wie zu sehen ist, verknüpfen QPI-Links von Blade zu Blade 601, 603, 605 und 609 die internen Ringverbindungen Ring0, Ring1, Ring und Ring3, sodass die Kombination aus QPI-Links von Blade zu Blade und den internen Ringen der CPUs eine größere Ringverbindungsstruktur bilden. Bei dieser Methode können Knoten in einer bestimmten CPU mit Knoten in jeder anderen der CPUs mithilfe eines gemeinsamen Protokolls kommunizieren, das in diesem Beispiel QPI ist.
  • 6b und 6c zeigen des Weiteren eine Vielzahl von QPI-Schnittstellen 660, die jeweils einen logischen Block 662 und einen physischen Block 664 umfassen. Die logischen Blöcke 662 stellen Schaltkreis und Logik zur Unterstützung der Schnittstelle dar, einschließlich eines QPI-Agenten. Dagegen stellen die physischen Blöcke 664 die physische Verbindung am Ende der Links dar, z. B. entsprechende Anschlüsse und Verkabelung. Außerdem können physische Blöcke 664 des Weiteren Elektro-zu-Opto-Schnittstellen oder verdrahtete Kabelschnittstellen darstellen, wie für die bestimmte Konfiguration zutreffend, die implementiert ist.
  • Beispielhafte Implementierung der Aufrechterhaltung der Cache-Kohärenz zwischen Speichern in getrennten Blade, auf die über QPI-Links von Blade zu Blade zugegriffen wird.
  • Eines der inhärenten Merkmale von QPI ist die Unterstützung für kohärente Speichertransaktionen. Dies wird über entsprechende Nachrichten in Verbindung mit Speichertransaktionen implementiert, die von den oberen Schichten des QPI-Protokolls behandelt werden. Die Nachrichten werden den entsprechenden Agenten mithilfe von Paketen mitgeteilt, wie von der QPI-Protokollschicht definiert. Die folgenden Nachrichtenklassen, die in TABELLE 1 dargestellt sind, werden vom QPI-Protokoll genutzt.
    Name Abk. Ordnung Nutzdaten
    Snoop SNP Keine Nein
    Heim HOM Für Adresse erforderlich Nein
    Nicht-Daten-Reaktion NDR Keine Nein
    Datenreaktion DRS Keine Ja
    Nicht kohärenter Standard NCS Keine Nein
    Nicht kohärenter Bypass NCB Keine Ja
    TABELLE 1
  • Die Anforderungen und Reaktionsnachrichten betreffen entweder den kohärenten Systemspeicherplatz oder werden für nicht kohärente Transaktionen verwendet (z. B. Konfiguration, speicherzugeordnete E/A, Interrupts und Nachrichten zwischen Agenten).
  • Die Cache-Kohärenz des Systems über verteilte Caches und integrierte Speichercontroller wird von verteilten Agenten aufrechterhalten, die an kohärenten Speicherplatztransaktionen teilnehmen, die Regeln unterliegen, die von der Protokollschicht definiert wurden. Das QPI-Kohärenzprotokoll ermöglicht sowohl Heim-Snoop- als auch Quell-Snoop-Verhaltenweisen. Die Heim-Snoop-Verhaltensweise ist für größere Skalierbarkeit optimiert, während Quell-Snoop für geringere Latenz optimiert ist. Letzteres wird hauptsächlich in kleineren Systemen verwendet, wo die geringere Anzahl an Agenten für eine relativ geringe Menge an Snoop-Verkehr sorgt.
  • Größere Systeme mit mehr Snoop-Agenten könnten eine erhebliche Menge an Snoop-Verkehr entwickeln und würden daher von einem Heim-Snoop-Betriebsmodus profitieren. Als Teil des Kohärenzschemas implementiert das QPI-Protokoll das bekannte MESI(Modified, Exclusive, Shared, and Invalid)-Protokoll und führt optional einen neuen F-Zustand (Weiterleiten) ein.
  • In einer Ausführungsform implementiert das QPI-Protokoll ein modifiziertes Format des MESI-Kohärenzprotokolls. Das MESI-Standardprotokoll hält jede Cache-Zeile in einem von vier Zuständen: modifiziert, exklusiv, geteilt oder ungültig. Außerdem wurde ein neuer, schreibgeschützter Weiterleiten-Zustand eingeführt, um saubere Zeilenweiterleitung von Cache zu Cache zu ermöglichen. Eigenschaften dieser Zustände sind in TABELLE 2 unten zusammengefasst. Nur ein Agent kann zu einem bestimmten Zeitpunkt eine Zeile in diesem F-Zustand haben, die anderen Agenten können Kopien im S-Zustand haben. Auch wenn eine Cache-Zeile in diesem Zustand weitergeleitet wurde, muss der Heimagent trotzdem mit einem Abschluss antworten, um die Stilllegung der Ressourcen zu erlauben, die die Transaktion verfolgen. Die Übertragungen von Cache zu Cache bieten jedoch einen latenzarmen Pfad für die Rücksendung anderer Daten als der aus dem Speicher des Heimagenten.
    Zustand Clean (Sauber)/Dirty Kann schreiben? Kann weiterleiten? Kann übergehen zu?
    M – Modifiziert Dirty Ja Ja -
    E – Exklusiv Clean Ja Ja MSIF
    S – Geteilt Clean Nein Nein I
    I – Ungültig - Nein Nein -
    F – Weiterleiten Clean Nein Ja SI
    TABELLE 2
  • Das QPI-Kohärenzprotokoll besteht aus zwei verschiedenen Arten von Agenten: Caching-Agent und Heimagent. Ein Prozessor hat normalerweise beide Arten von Agenten und möglicherweise mehrere Agenten jedes Typs.
  • Ein Caching-Agent stellt eine Entität dar, die Transaktionen in kohärentem Speicher initiieren und die Kopien in ihrer eigenen Cache-Struktur behalten kann. Der Caching-Agent ist durch die Nachrichten definiert, die er einlassen kann und die ihm entspringen können, gemäß der Verhaltensweise, die im Cache-Kohärenzprotokoll definiert ist. Ein Caching-Agent kann außerdem anderen Caching-Agenten Kopien der kohärenten Speicherinhalte bereitstellen.
  • Ein Heimagent stellt eine Entität daß, die kohärente Transaktionen bedient, einschließlich Handshaking, das mit Caching-Agenten nötig ist. Ein Heimagent überwacht einen Teil des kohärenten Speichers. Eine Heimagentenlogik sind nicht ausdrücklich Speicher-Controller-Schaltungen für Hauptspeicher, sondern kann die zusätzliche QPI-Logik sein, die die Kohärenz für einen gegebenen Adressraum aufrechterhält. Sie ist verantwortlich für ein Verwalten der Konflikte, die unter den unterschiedlichen Caching-Agenten auftreten können. Sie stellt die geeigneten Daten und Besitzantworten bereit, wie es von einem gegebenen Fluss der Transaktion erforderlich ist.
  • Gemäß einer Ausführungsform werden kohärente Speichertransaktionen über die Verwendung des QPI-Protokolls über QPI-Links von Blade zu Blade unterstützt. Zum Beispiel kann ein kohärentes Speicherschema so über Blades implementiert werden, dass Caching-Agenten in den verschiedenen CPUs auf Speicher von Speichern sowohl in der CPU des Caching-Agenten als auch anderer CPUs in verschiedenen Blades zugreifen und gleichzeitig die Speicherkohärenz aufrechterhalten kann.
  • Heim-Snoop-Beispiel
  • Die Heim-Snoop-Kohärenz-Verhaltensweise definiert, dass der Heimagent für das Snooping von anderen Caching-Agenten verantwortlich ist. Der grundlegende Fluss für eine Nachricht umfasst bis zu vier Operationen, wie in dem Beispiel von 7 dargestellt, wobei die dargestellten Ringe den Ringverbindungen Ring0, Ring1, Ring2 und Ring3 in den entsprechenden Prozessoren (CPUs) entsprechen, die in Systemarchitektur 600a dargestellt sind. In diesem Beispiel wird eine vereinfachte Leseanforderung an eine Adresse, die von einem Remote-Agenten verwaltet wird, durchgeführt, wobei ein Agent 700 der anfordernde Caching-Agent ist, der mit einem Knoten 1 in Ring0, Ring1 und Ring3 gekoppelt ist, einen oder mehrere Caching-Agenten umfasst, und Ring2 einen Heimagenten 2 umfasst, der der Heimagent für die Cache-Zeile ist. Außerdem hat ein Agent bei Knoten 3 in Ring3 eine Kopie von Cache-Zeile 702 im Zustand M, E oder F.
  • In einer ersten Operation gibt Caching-Agent 700 eine Anforderung an den Heimagenten 2 aus, der den fraglichen Speicher verwaltet. Im Allgemeinen verwaltet jeder Prozessor einen entsprechenden Teil eines gemeinsamen Speichers, normalerweise über ein Zuordnen des Adressbereichs oder Ähnliches. In der Zwischenzeit hält jeder Heimagent eine Verzeichnisstruktur (wie als Abbild 704 dargestellt) aufrecht, die verwendet wird, um nachzuverfolgen, welche Agenten Cache-Zeilen enthalten, die einem Speicher entsprechen, den der Heimagent verwaltet. Außerdem pflegen die Caching-Agenten ein Speicherabbild, das identifiziert, welcher Heimagent mit welchem Speicherbereich oder welchen Speicherbereichen verbunden ist. Außerdem beinhaltet jeder Prozessor normalerweise Einrichtungen für die Abstrahierung des physischen Speicherabbilds vom logischen Speicherabbild, die im Betriebssystem vorhanden sind, um Funktionen wie Speicherspiegelung, erneute Speicherabbildung zu unterstützen (z. B. angesichts erkannter Speicherfehler).
  • Außerdem prüft in einer zweiten Operation Heimagent 2 seine Verzeichnisstruktur, um einen Snoop an den Caching-Agenten zu richten, der als eine Cache-Zeile enthaltend identifiziert wurde, die der Speicheradresse in der Anforderung entspricht. In diesem Beispiel gibt die Verzeichnisstruktur in Abbild 704 an, dass Agent 3 die Cache-Zeile enthält, und somit sendet Heimagent 2 eine Snoop-Anforderung an Agent 3.
  • Als Reaktion auf die Snoop-Anforderung sendet Caching-Agent 3 eine Antwort zurück an Heimagent 2 mit dem Status der Adresse in einer dritten Operation. In diesem Beispiel hat Agent 3 eine Kopie von Cache-Zeile 702 im richtigen Zustand und liefert daher eine Kopie der Cache-Zeilendaten an Agent 1. Agent 3 antwortet außerdem auf Heimagent 2 und gibt an, dass er die Daten an Agent 1 gesendet hat. Der Heimagent löst alle Konflikte auf und gibt, falls nötig, die Daten an den ursprünglich anfordernden Cache-Agenten zurück (nachdem er zuerst geprüft hat, ob die Daten von einem anderen Caching-Agenten geliefert wurden, was in diesem Fall der Fall war) und die Transaktion wird abgeschlossen. Dies ist in einer vierten Operation gezeigt, wobei Heimagent 2 eine Nachricht an Agent 1 liefert, die angibt, dass die Transaktion abgeschlossen ist.
  • Die Implementierung der QPI-Heim-Snoop-Verhaltensweise beinhaltet normalerweise eine Verzeichnisstruktur, um den Snoop an die spezifischen Caching-Agenten zu richten, die eine Kopie der Daten haben können. Dies hat den Effekt, dass die Anzahl von Snoops und Snoop-Antworten reduziert wird, mit denen der Heimagent auf der Verbindungsstruktur umgehen muss. Dies ist bei Systemen sehr nützlich, die eine große Anzahl von Agenten haben, obwohl dies zu Lasten der Latenz und Komplexität geht. Deshalb ist ein Heim-Snoop auf Systeme gerichtet, die für eine große Anzahl von Agenten optimiert sind.
  • Daten werden zwischen Entitäten mithilfe einer Kombination aus Ringsegmenten in Ringen 0-3 und QPI-Links von Blade zu Blade 601, 603, 605 und 609 übertragen. In dem in 7 veranschaulichten Beispiel werden alle Übertragungen (durch breite gestrichtelte Linien mit einem Pfeil dargestellt, der zur empfangenden Entität weist) so dargestellt, dass sie im Uhrzeigersinn durch die Ringe und QPI-Links gehen. Dies dient jedoch nur der Veranschaulichung, da Ringe sowohl im Uhrzeigersinn als auch entgegen dem Uhrzeigersinn durchlaufen werden können, und eine bestimmte Datenübertragung kann das Durchlaufen eines Rings in eine Richtung und das Durchlaufen anderer Ringe in entgegengesetzter Richtung umfassen.
  • Zum Beispiel erfolgt während der ersten Operation eine Datenübertragung von Knoten 1 in Ring0 zu Heimagent 2 in Ring2. Dieses veranschaulichte Durchlaufen beginnt bei Knoten 1 und durchläuft Ring0 im Uhrzeigersinn, bis es QPI-Knoten 0-1 erreicht (siehe detailliertere Ansicht in 6c), der der Austrittspunkt für die Übertragung zum QPI-Knoten 1-0 über den QPI-Link von Blade zu Blade 609 ist. Die Übertragung wird dann im Uhrzeigersinn rund um Ring1 geleitet, bis sie QPI-Knoten 1-1 erreicht, wo sie zur CPU in Blade 2 (entsprechend Ring2) über den QPI-Link von Blade zu Blade 603 quert. Die Übertragung wird dann im Uhrzeigersinn rund um Ring2 geleitet, bis sie Heimagent 2 erreicht. Die anderen Datenübertragungen sind auf ähnliche Weise veranschaulicht.
  • PCI-Verbindungslinks von Blade zu Blade unter Verwendung eines gemeinsamen Referenztakts
  • Neben der Unterstützung für QPI-Verbindungslinks von Blade zu Blade und Server zu Server kann das gemeinsame Referenztaktschema auch für andere Arten von Verbindungslinks implementiert werden, die für die Verwendung gemeinsamer Referenztakte konfiguriert werden können. Diese können im Allgemeinen serielle Hochgeschwindigkeitsverbindungen umfassen, die zurzeit vorhanden sind, zukünftige Versionen solcher Links oder zukünftige serielle Verbindungslinks, die noch nicht vorhanden sind. Ein solches Beispiel sind PCIe-Links (Peripheral Component Interconnect Express).
  • Wie QPI unterstützt PCIe eine Punkt-zu-Punkt-Verbindung mithilfe serieller Links, die aus einer oder mehreren Bahnen für jedes Senden und Empfangen bestehen. Ein PCIe-Link hat mindestens eine Bahn – jede Bahn stellt einen Satz von Differenzialsignalpaaren dar (ein Paar zum Senden, ein Paar zum Empfangen). Um die Bandbreite zu skalieren, kann jeder Link mehrere Bahnen zusammenfassen, die durch xN bezeichnet sind, wobei N eine beliebige unterstützte Linkbreite sein kann. Zum Beispiel beinhalten PCIe-Links bei der PCIe 3.0-Spezifikation Operationen für Bahnenbreiten x1, x2, x4, x8, x12, x16 und x32 auf. Während der Hardware-Initialisierung wird jeder PCI Express-Link nach einer Verhandlung von Bahnbreiten und einer Betriebsfrequenz durch die zwei Agenten an jedem Ende der Verbindung eingerichtet.
  • Wie in 8 nutzt PCIe ein geschichtetes Protokoll, das eine physische Schicht, eine Datenlinkschicht und eine Transaktionsschicht umfasst. Die physische Schicht umfasst des Weiteren einen logischen Unterblock und einen elektrischen Unterblock. PCIe verwendet Pakete, um Informationen zwischen Komponenten zu kommunizieren. Die Pakete werden in der Transaktions- und der Datenlinkschicht gebildet, um die Informationen von der Übertragungskomponente zu der Empfangskomponente zu tragen. Wenn die übertragenen Pakete durch die anderen Schichten fließen, werden sie durch zusätzliche Informationen erweitert, die nötig sind, um Pakete auf diesen Schichten zu behandeln. Auf der Empfangsseite erfolgt der umgekehrte Prozess und die Pakete werden von der Darstellung ihrer physischen Schicht zur Darstellung der Datenlinkschicht und schließlich (für Transaktionsschichtpakete) in die Form umgewandelt, die von der Transaktionsschicht der Empfangsvorrichtung verarbeitet werden kann.
  • Es gibt zwar einige Ähnlichkeiten zwischen QPI PHY und PCIe PHY gibt, aber es gibt auch Unterschiede. Zu diesen Unterschieden gehören die Linkkonfigurationen und die Datenverschlüsselung. 9 zeigt die physische Konnektivität eines PCIe x16-Links. Wie durch „x16” angegeben, nutzt dieser Link 16 Bahnen, die jeweils aus einem Differenzialsignalpaar bestehen. Eine PCIe-Verbindung mit einem Schaltkreis zur Unterstützung einer x16-Verbindung kann ebenfalls als zwei x8-Verbindungen konfiguriert sein. Außerdem kann die Breite eines x16-Links als Reaktion auf das Erkennen von Fehlern automatisch zu einem x8-Link oder sogar einem x4-Link verringert werden. 10 zeigt ein Beispiel eines PCIe x4-Links der vier Bahnen 0-3 nutzt.
  • In Bezug auf die Referenztaktung kann der PCIe-Link getrennte Referenztakte an jedem Port der PCIe-Schnittstellen nutzen. Jedoch kann die Leistung (z. B. EMI) und Robustheit der PCIe-Links durch Nutzung gemeinsamer Referenztakte an den PCIe-Schnittstellen eines PCIe-Links verbessert werden. Diese Methode ist in den hierin erörterten PCIe-Ausführungen implementiert.
  • 5a zeigt eine beispielhafte Implementierung mit vier Blades, die PCIe-Links von Blade zu Blade zwischen Server-Blades 503-0, 503-1, 503-2 und 503-3 (auch als Blades 0-3 gekennzeichnet) nutzt. Wie bei der QPI-Linkkonfiguration von Blade zu Blade von 5 nutzt die Konfiguration in 5a ähnliche Komponenten, denen die Referenznummern in beiden Figs. gemeinsam sind. Demgemäß wird keine weitere Beschreibung dieser Komponenten hierin erörtert. Wie zuvor stellen Komponenten, die dieselben Basisreferenznummern teilen, ähnliche Komponenten dar.
  • In Bezug auf einen Vergleich von Blade 502-0 in 5 und Blade 503-0 in 5a umfassen die verschiedenen Komponenten für Blade 503-0 eine CPU 511-0, einen Interposer 513-0, PCIe-Schnittstellen 523-0 und 525-0 und eine Elektro-zu-Opto-Schnittstelle 527-0. Diese Komponenten sind im Allgemeinen analog zu ihren Gegenstücken in 5, außer dass sie jetzt mit PCIe-Signalisierung und Protokollen statt mit QPI verbunden sind. 5a zeigt des Weiteren sechs PCIe-Links von Blade zu Blade 531, 533, 535, 537, 539 und 541. Wie zuvor ist diese Konfiguration von PCIe-Links von Blade zu Blade nur beispielhaft. Es ist zu beachten, dass jedes in 5a dargestellte Blade nicht notwendigerweise nur CPUs und/oder Interposer umfasst. Es kann zum Beispiel auch System-on-Chips (SoCs) und/oder Allzweck-Grafikverarbeitungseinheiten (General-Purpose Graphics Processing Units, GPGPUs) umfassen, die PCIe-Verbindungslinks für die Kopplung mit Vorrichtungen benötigen, die in anderen Blades enthalten sind.
  • Eine Systemarchitektur 600d, die PCIe-Links von Blade zu Blade nutzt ist in 6d dargestellt. Wie ohne Weiteres festzustellen ist, ist die Konfiguration von Systemarchitektur 600d ähnlich Systemarchitektur 600a von 6a, mit Ausnahme der folgenden Unterschiede. Jeder der Ringe Rings0–3 umfasst ein Paar PCIe-Knoten, wie durch PCIe-Knoten 0-0, 0-1, 1-0, 1-1, 2-0, 2-1, 3-0 und 3-1 dargestellt. Jede dieser PCIe-Knoten hat eine Schnittstelle zu einem PCIe-Agenten, wie durch PCIe-Agenten 0-0, 0-1, 1-0, 1-1, 2-0, 2-1, 3-0 und 3-1 dargestellt. Jeder PCIe-Agent beinhaltet Eintritts- und Austrittspuffer, wie durch Eintrittspuffer 617, 619, 621, 623, 633, 635, 657 und 659 und Austrittspuffer 625, 627, 629, 631, 637, 639, 661 und 663 dargestellt. Jeder der Rings0–3 beinhaltet außerdem eine QPI-Knoten. Wie zuvor sind die in Systemarchitektur 600d dargestellten Knoten nur beispielhaft und die Konfiguration von Rings0–3 ist vereinfacht.
  • Die PCIe-Agenten und damit verbundenen Eintritts- und Austrittspuffer ermöglichen die Operation von PCIe-Links von Blade zu Blade 611, 613, 615 und 617, die physisch als elektrische oder optische PCIe-Kabel implementiert sind. Auch wenn dies in 6d nicht dargestellt ist, ist am Ende jedes der elektrische oder optischen PCIe-Kabel eine entsprechende physische Schnittstelle vorhanden. Wie oben erörtert, kann die Bahnenbreite der PCIe-Linksx1, x2, x4, x8, x12, x16 oder x32 oder eine Kombination dieser Bahnenbreiten sein.
  • In der vorstehenden Beschreibung und in den veranschaulichenden Zeichnungen sind die verschiedenen Mehrkern-CPUs so dargestellt, dass sie Ringverbindungsarchitekturen nutzen. Dies ist jedoch nicht einschränkend gedacht, da andere Arten von Verbindungsarchitekturen ebenfalls verwendet werden können, z. B., aber nicht beschränkt auf, zweidimensionale Netzverbindungsstrukturarchitekturen. Zum Beispiel können in einer Ausführungsform eine oder mehrere der CPUs Single-Chip-Computer (SCC) mit einer Vielzahl von Prozessoren umfassen, die über ein Verbindungsnetz gekoppelt sind, das ein Network-on-a-Chip (NoC) umfasst.
  • Die Linkkonfigurationen von Blade zu Blade und von Server zu Server, die die hierin offenbarten gemeinsamen Referenztaktungsschemata nutzen, bieten erhebliche Vorteile gegenüber vorhandenen Blade- und Rack-Server-Implementierungen für parallele Verarbeitungsaufgaben. Zum Beispiel sind aktuelle Konfigurationen praktisch auf zwei Blades begrenzt, die einen QPI-Link über eine Mid-Plane oder Backplane nutzen, wie weiter oben erörtert. Dagegen kann durch Verwendung der hierin erörterten Techniken eine viel größere Skalierbarkeit erreicht werden. Darüber hinaus werden durch Verwendung der QPI-Links in Verbindung mit der Implementierung der inhärenten QPI-Unterstützung der Speicherkohärenz weitere Vorteile geliefert. Als Folge kann durch Prozessoren auf verschiedenen Blades oder Servern auf Speicher- oder Cache-Ebene auf gemeinsame Datenobjekte zugegriffen werden, was die Bandbreite des Datenzugriffs gegenüber vorhandenen Ansätzen erheblich erhöht, die Vorrichtungen wie das Sperren von Datenobjekten und die Nutzung von Protokollen auf Netzwerkebene erfordern (z. B. ein Ethernet-Stapel), um auf Datenobjekte auf solchen verschiedenen Blades und Servern zuzugreifen.
  • Die vorstehende Beschreibung veranschaulichter Ausführungsformen der Erfindung, einschließlich dessen, was in der Zusammenfassung beschrieben ist, soll nicht vollständig sein oder die Erfindung auf die exakten Formen beschränken, die aufgezeigt werden. Obwohl spezifische Ausführungsformen und Beispiele der Erfindung hierin zur Veranschaulichung beschrieben sind, sind verschiedene gleichwertige Modifikationen innerhalb des Anwendungsbereichs der Erfindung möglich, wie Fachleute erkennen werden.
  • Diese Modifikationen können angesichts der vorstehenden ausführlichen Beschreibung an der Erfindung vorgenommen werden. Die in den folgenden Ansprüchen verwendeten Begriffe sollten nicht derart ausgelegt werden, die Erfindung auf die in der Spezifikation und den Zeichnungen veranschaulichten spezifischen Ausführungsformen zu beschränken. Vielmehr soll der Anwendungsbereich der Erfindung vollständig durch die folgenden Ansprüche bestimmt werden, die gemäß bekannten Lehrsätzen der Anspruchsinterpretation ausgelegt werden sollen.

Claims (20)

  1. System, umfassend: eine Vielzahl von Server-Blades oder Servern, die jeweils einen externen Referenztaktsignal-Eingangsport und mindestens eine Linkverbindungsschnittstelle haben, eine Takt-Synthesizer-Platine, die so konfiguriert ist, dass sie eine Vielzahl gemeinsamer Referenztaktsignale an einer Vielzahl von Ausgangsanschlüssen erzeugt, eine Vielzahl von Referenztaktsignalkabeln, die jeweils zwischen einem entsprechenden Ausgangsanschluss auf der Takt-Synthesizer-Platine und einem Eingangsanschluss am entsprechenden Server-Blade oder Server gekoppelt sind, und eine Vielzahl von Verbindungskabeln, die an entgegengesetzten Enden an die Verbindungsschnittstellen gekoppelt sind und die Vielzahl der Server-Blades oder Server in Kommunikation verknüpfen, wobei, während des Betriebs des Systems, die gemeinsamen Referenztaktsignale als Takteingänge des Verbindungssystems verwendet werden, um die Kommunikation zwischen Server-Blades oder Server über die Vielzahl der Verbindungslinkkabel zu ermöglichen.
  2. System nach Anspruch 1, wobei mindestens einer der Verbindungslink einen QuickPath Interconnect(QPI)-Link umfasst.
  3. System nach Anspruch 1, wobei mindestens einer der Verbindungslinks einen Peripheral Component Interconnect Express(PCIe)-Link umfasst.
  4. System nach Anspruch 1, wobei mindestens eines aus der Vielzahl der Verbindungslinkkabel ein optisches Kabel umfasst.
  5. System nach Anspruch 1, wobei mindestens ein Server-Blade oder Server eine Hauptplatine mit einem Prozessorsteckplatz umfasst, an dem ein Interposer so installiert ist, dass der Interposer zwischen einem Prozessor und dem Steckplatz zwischengeschaltet ist, der Interposer so konfiguriert, dass Signale von Pins auf dem Prozessor weitergeleitet werden, die einem Verbindungslink zu einer Kabelschnittstelle auf dem Interposer entsprechen, an dem ein Verbindungskabel angeschlossen ist.
  6. System nach Anspruch 5, wobei der Interposer eine Elektro-zu-Opto-Schnittstelle umfasst, die so konfiguriert ist, dass sie ausgehende elektrische Signale in optische Signale und eingehende optische Signale in elektrische Signale umwandelt.
  7. System nach Anspruch 1, wobei mindestens ein Blade-Server oder Server einen schaltbaren Takteingang umfasst, der es dem mindestens einem Server-Blade ermöglicht, ein externes Referenztaktsignal oder ein Onboard-Referenztaktsignal zu nutzen.
  8. System nach Anspruch 1, wobei mindestens ein Teil der Server-Blades oder Server mit anderen Servern-Blades oder Servern über Verbindungslinkkabel in einer Verkettungskonfiguration verknüpft sind.
  9. System nach Anspruch 1, wobei die Vielzahl der Referenztaktsignalkabel im Wesentlichen die gleiche Länge haben.
  10. Verfahren, umfassend: Bereitstellung einer Vielzahl im Wesentlichen synchronisierter externer gemeinsamer Referenztaktsignale für eine Vielzahl von Server-Blades oder Server und Nutzung der gemeinsamen Referenztaktsignale oder Signale, die davon abgeleitet sind, als Takt-Timing-Signale an entgegengesetzten Enden serieller Verbindungslinks zur Unterstützung von Kommunikationslinks zwischen der Vielzahl von Server-Blades oder Servern.
  11. Verfahren nach Anspruch 10, des Weiteren umfassend die Nutzung einer Takt-Synthesizer-Platine zur Erzeugung einer Vielzahl externer gemeinsamer Referenztaktsignale und Bereitstellung der Signale von der Takt-Synthesizer-Platine für die Vielzahl der Server-Blades oder Server, sodass eine Ausbreitungsverzögerung zwischen dem Zeitpunkt, zu dem die Signale die Takt-Synthesizer-Platine verlassen, und dem Zeitpunkt, zu dem sie an der Vielzahl der Server-Blades oder Server ankommen, im Wesentlichen über die Server-Blades oder Server gleich ist.
  12. Verfahren nach Anspruch 10, wobei mindestens ein serieller Verbindungslink einen QuickPath Interconnect(QPI)-Link umfasst.
  13. Verfahren nach Anspruch 12, des Weiteren umfassend den Einsatz von QPI-Nachrichten über eine QPI-Link, um eine kohärente Speichertransaktion über erste und zweite Server-Blades oder Server zu ermöglichen, die über den QPI-Link in Kommunikation verbunden sind.
  14. Verfahren nach Anspruch 10, wobei mindestens ein serieller Verbindungslink einen Peripheral Component Interconnect Express(PCIe)-Link umfasst.
  15. Verfahren nach Anspruch 10, des Weiteren umfassend die Verknüpfung der Vielzahl von Server-Blades oder Server über die Vielzahl der seriellen Verbindungslinks in einer Verkettungskonfiguration.
  16. Ein Server-Blade umfassend: einen Eingangsport für den Empfang eines externen gemeinsamen Referenztaktsignals, Mittel für das Erzeugen eines internen Referenztaktsignals, Mittel für die Umschaltung zwischen der Verwendung des externen gemeinsamen Referenztaktsignals und des internen Referenztaktsignals, einen Differenzialpuffer, der so konfiguriert ist, dass er ein Eingangstaktsignal repliziert, das das externe gemeinsame Referenztaktsignal oder das interne Referenztaktsignal umfasst, und eine Vielzahl replizierter Taktsignale ausgibt, einen Prozessor, der mindestens eine serielle Verbindungsschnittstelle hat, die so konfiguriert ist, dass sie eines der replizierten Referenztaktsignale oder ein davon abgeleitetes Referenztaktsignal für Takt-Timing-Operationen in Verbindung mit seriellen Verbindungssignalen nutzt, die von der mindestens einen seriellen Verbindungsschnittstelle gesendet und von ihr empfangen werden, und Mittel für die Kopplung serieller Verbindungssignale von der mindestens einen seriellen Verbindungsschnittstelle an ein oder mehrere serielle Verbindungskabel, die verwendet werden, um Daten von einem zweiten Server-Blade zu übertragen oder zu empfangen.
  17. Server-Blade nach Anspruch 16, des Weiteren umfassend einen Prozessorsteckplatz, an dem ein Interposer installiert ist, sodass der Interposer zwischen einem Prozessor und dem Prozessorsteckplatz zwischengeschaltet ist, der Interposer so konfiguriert, dass er Signale von Pins auf dem Prozessor, die der mindestens einen seriellen Verbindungsschnittstelle entsprechen, zu einer Kabelschnittstelle am Interposer weiterleitet.
  18. Server-Blade nach Anspruch 17, wobei der Interposer des Weiteren eine Elektro-zu-Opto-Schnittstelle umfasst, die so konfiguriert ist, dass sie ausgehende elektrische Signale in optische Signale und eingehende optische Signale in elektrische Signale umwandelt.
  19. Server-Blade nach Anspruch 16, wobei die serielle Verbindung einen QuickPath Interconnect(QPI)-Link umfasst.
  20. Server-Blade nach Anspruch 19, wobei der Prozessor so konfiguriert ist, dass er QPI-Nachrichten nutzt, um kohärente Speichertransaktionen zu ermöglichen, die auf Daten zugreifen, die in mindestens einem der Speicher oder Caches auf dem zweiten Server-Blade gespeichert sind.
DE112012005991.3T 2012-03-07 2012-03-07 Skalierbare gemeinsame Referenztaktungsarchitektur unter Verwendung einer getrennten, einzigen Taktquelle für Blade- und Rack-Server Withdrawn DE112012005991T5 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2012/028106 WO2013133826A1 (en) 2012-03-07 2012-03-07 Scalable, common reference-clocking architecture using a separate, single clock source for blade and rack servers

Publications (1)

Publication Number Publication Date
DE112012005991T5 true DE112012005991T5 (de) 2015-01-29

Family

ID=49117154

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112012005991.3T Withdrawn DE112012005991T5 (de) 2012-03-07 2012-03-07 Skalierbare gemeinsame Referenztaktungsarchitektur unter Verwendung einer getrennten, einzigen Taktquelle für Blade- und Rack-Server

Country Status (5)

Country Link
US (1) US9261897B2 (de)
KR (1) KR101605285B1 (de)
AU (1) AU2012372800B2 (de)
DE (1) DE112012005991T5 (de)
WO (1) WO2013133826A1 (de)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013081580A1 (en) * 2011-11-29 2013-06-06 Intel Corporation Raw memory transaction support
DE112012005991T5 (de) 2012-03-07 2015-01-29 Intel Corporation Skalierbare gemeinsame Referenztaktungsarchitektur unter Verwendung einer getrennten, einzigen Taktquelle für Blade- und Rack-Server
US20130262814A1 (en) * 2012-03-29 2013-10-03 Advanced Micro Devices, Inc. Mapping Memory Instructions into a Shared Memory Address Place
US9143338B2 (en) * 2012-10-05 2015-09-22 Advanced Micro Devices, Inc. Position discovery by detecting irregularities in a network topology
US9173304B2 (en) * 2013-07-18 2015-10-27 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Vertical blindmate scaling of identical system boards
JP6525555B2 (ja) * 2014-11-04 2019-06-05 キヤノン株式会社 情報処理装置、その制御方法及びプログラム
CN104615564A (zh) * 2015-02-05 2015-05-13 浪潮电子信息产业股份有限公司 一种基于qpi总线的数据传输方法及计算机系统
JP6454577B2 (ja) * 2015-03-25 2019-01-16 ルネサスエレクトロニクス株式会社 処理装置及び処理装置の制御方法
US10713334B1 (en) * 2015-06-10 2020-07-14 EMC IP Holding Company LLC Data processing system with a scalable architecture over ethernet
US10496284B1 (en) 2015-06-10 2019-12-03 EMC IP Holding Company LLC Software-implemented flash translation layer policies in a data processing system
US10503416B1 (en) * 2015-06-10 2019-12-10 EMC IP Holdings Company LLC Flash memory complex with a replication interface to replicate data to another flash memory complex of a data processing system
US11010054B1 (en) 2015-06-10 2021-05-18 EMC IP Holding Company LLC Exabyte-scale data processing system
US10515014B1 (en) * 2015-06-10 2019-12-24 EMC IP Holding Company LLC Non-uniform memory access (NUMA) mechanism for accessing memory with cache coherence
US10853277B2 (en) * 2015-06-24 2020-12-01 Intel Corporation Systems and methods for isolating input/output computing resources
US10536553B1 (en) * 2015-09-04 2020-01-14 Cadence Design Systems, Inc. Method and system to transfer data between components of an emulation system
US10114790B2 (en) * 2016-05-17 2018-10-30 Microsemi Solutions (U.S.), Inc. Port mirroring for peripheral component interconnect express devices
US10762030B2 (en) * 2016-05-25 2020-09-01 Samsung Electronics Co., Ltd. Storage system, method, and apparatus for fast IO on PCIE devices
US10713202B2 (en) * 2016-05-25 2020-07-14 Samsung Electronics Co., Ltd. Quality of service (QOS)-aware input/output (IO) management for peripheral component interconnect express (PCIE) storage system with reconfigurable multi-ports
CN109844681A (zh) * 2016-09-30 2019-06-04 惠普发展公司,有限责任合伙企业 手柄
KR102586562B1 (ko) * 2018-05-25 2023-10-11 주식회사 쏠리드 클럭 동기화를 수행하는 통신 노드 및 통신 시스템
US10489341B1 (en) * 2018-06-25 2019-11-26 Quanta Computer Inc. Flexible interconnect port connection
CN110188065B (zh) * 2019-05-15 2021-08-20 苏州浪潮智能科技有限公司 一种8路刀片服务器设置方法及服务器
US11271860B1 (en) * 2019-11-15 2022-03-08 Xilinx, Inc. Compressed tag coherency messaging
CN212906117U (zh) * 2020-08-10 2021-04-06 北京硅基远航科技有限公司 服务器
CN113220622A (zh) * 2021-05-27 2021-08-06 浪潮电子信息产业股份有限公司 一种主板及时序控制方法、装置

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6856926B2 (en) 2003-03-03 2005-02-15 Hewlett-Packard Development Company, L.P. Frequency margin testing of bladed servers
JP2006053662A (ja) * 2004-08-10 2006-02-23 Matsushita Electric Ind Co Ltd 多重プロセッサ
JP4484757B2 (ja) * 2004-12-09 2010-06-16 株式会社日立製作所 情報処理装置
US7480303B1 (en) 2005-05-16 2009-01-20 Pericom Semiconductor Corp. Pseudo-ethernet switch without ethernet media-access-controllers (MAC's) that copies ethernet context registers between PCI-express ports
US7562247B2 (en) 2006-05-16 2009-07-14 International Business Machines Corporation Providing independent clock failover for scalable blade servers
US8407428B2 (en) * 2010-05-20 2013-03-26 Hicamp Systems, Inc. Structured memory coprocessor
EP2255263B1 (de) 2008-02-20 2013-07-31 Hewlett-Packard Development Company, L.P. Redriver mit zwei referenztakten und betriebsverfahren dafür
US8350702B2 (en) 2009-07-01 2013-01-08 Sensormatic Electronics, LLC Combination EAS and RFID security tag having structure for orienting a hybrid antenna RFID element
DE112012005991T5 (de) 2012-03-07 2015-01-29 Intel Corporation Skalierbare gemeinsame Referenztaktungsarchitektur unter Verwendung einer getrennten, einzigen Taktquelle für Blade- und Rack-Server

Also Published As

Publication number Publication date
US9261897B2 (en) 2016-02-16
US20130311817A1 (en) 2013-11-21
KR20140132362A (ko) 2014-11-17
WO2013133826A1 (en) 2013-09-12
KR101605285B1 (ko) 2016-03-21
AU2012372800A1 (en) 2014-09-25
AU2012372800B2 (en) 2016-01-28

Similar Documents

Publication Publication Date Title
DE112012005991T5 (de) Skalierbare gemeinsame Referenztaktungsarchitektur unter Verwendung einer getrennten, einzigen Taktquelle für Blade- und Rack-Server
Li et al. NUMA-aware algorithms: the case of data shuffling.
DE102014117465B4 (de) Unterstützter kohärenter gemeinsamer Speicher
DE102009032076B4 (de) Erfüllung von Speicherordnungsanforderungen zwischen Teillesevorgängen und Nicht-Snoop-Zugriffen
DE60006842T2 (de) Multiprozessor-Node-Controller-Schaltung und Verfahren
DE102020122174A1 (de) Berechne-in/nahe speicher- (cim) schaltungsarchitektur für vereinheitlichte matrix-matrix- und matrix-vektor-berechnungen
DE112013005090T5 (de) Steuernachrichtenübermittlung in einem mehrfach-Slot-Verbindungsschicht-Flit
EP2786258B1 (de) System, computer-implementiertes verfahren und computerprogrammprodukt zur direkten kommunikation zwischen hardwarebeschleunigern in einem computercluster
DE102018006756A1 (de) Beschleuniger-Fabric
US10599590B2 (en) Uniform memory access architecture
DE102009031497A1 (de) Erfüllung der Speicher-Ordering-Anforderungen zwischen Partial-Write- und Non-Snoop-Zugriffen
DE102018127751A1 (de) Einheitlicher Adressraum für mehrere Verbindungen
DE102015102692A1 (de) Verfahren zum Optimieren von Netzdatenströmen in einem eingeschränkten System
GB2316204A (en) Scalable cache coherency using distributed path directories
DE102009031870A1 (de) Dynamisches Aktualisieren der Routing-Tabelle
US11036658B2 (en) Light-weight memory expansion in a coherent memory system
US11573898B2 (en) System and method for facilitating hybrid hardware-managed and software-managed cache coherency for distributed computing
DE102010033615A1 (de) Pufferung bei Mediums- und Pipeline-Verarbeitungskomponenten
DE102020110582A1 (de) TECHNOLOGIEN ZUR AUTOMATISCHEN ARBEITSLASTERKENNUNG UND CACHE-QoS-RICHTLINIENANWENDUNG
DE112017004908T5 (de) Technologien für skalierbare hierarchische Interconnect-Topologien
Sharma et al. An introduction to the compute express link (cxl) interconnect
DE112021001470T5 (de) Konfigurieren von datenverarbeitungsknoten in einer dreidimensionalen netztopologie
DE102021108294B4 (de) System und verfahren für skalierbare hardware-kohärente speicherknoten
DE102019117475A1 (de) Cache-kohärente Eingabe-/Ausgabesteuerungen mit hohem Durchsatz
DE112011103223T5 (de) Optimierte Ring-Protokolle und Techniken

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee