DE60201650T2 - Systeme, welche eine Mischung aus paketartigem, kohärentem und nicht-kohärentem Verkehr verwenden, um die Übertragung zwischen Systemen zu optimieren - Google Patents

Systeme, welche eine Mischung aus paketartigem, kohärentem und nicht-kohärentem Verkehr verwenden, um die Übertragung zwischen Systemen zu optimieren Download PDF

Info

Publication number
DE60201650T2
DE60201650T2 DE60201650T DE60201650T DE60201650T2 DE 60201650 T2 DE60201650 T2 DE 60201650T2 DE 60201650 T DE60201650 T DE 60201650T DE 60201650 T DE60201650 T DE 60201650T DE 60201650 T2 DE60201650 T2 DE 60201650T2
Authority
DE
Germany
Prior art keywords
packet
interface
circuit
memory
coherent
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.)
Expired - Lifetime
Application number
DE60201650T
Other languages
English (en)
Other versions
DE60201650D1 (de
Inventor
J. Barton Sano
B. Joseph Rowlands
R. Laurent Moll
Manu Gulati
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.)
Broadcom Corp
Original Assignee
Broadcom 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 Broadcom Corp filed Critical Broadcom Corp
Publication of DE60201650D1 publication Critical patent/DE60201650D1/de
Application granted granted Critical
Publication of DE60201650T2 publication Critical patent/DE60201650T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Transmitters (AREA)
  • Multi Processors (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Description

  • HINTERGRUND DER ERFINDUNG
  • 1. Gebiet der Erfindung
  • Die vorliegende Erfindung bezieht sich auf das Gebiet der Paketverarbeitung und der Kohärenz.
  • 2. Beschreibung des Standes der Technik
  • Mit der kontinuierlichen Verbreitung von Netzwerken und Netzwerksystemen (z.B. lokale Netzwerke [Local Area Networks (LANs)], großräumige Netzwerke [Wide Area Networks (WANs)], Internet, etc.) ist die Paketverarbeitung für eine Vielzahl von Systemen zu einer immer wichtigeren Funktion geworden. Die Menge der auszuführenden Paketverarbeitung kann aufgrund der erhöhten Menge des Paketverkehrs noch zunehmen, sowie auch aufgrund der technisch ausgefeilteren Paketverarbeitung, die bei jedem Paket versucht wird (z.B. Verarbeitung in tieferen Schichten des Pakets).
  • Ein Paketverarbeitungssystem muss daher Pakete zum Verarbeiten und Übertragen verarbeiteter Pakete (oder neu erzeugter Pakete) empfangen können. Außerdem kann es bei Paketverarbeitungssystemen erwünscht sein, dass sie skalierbar sind, so dass das Paketverarbeitungssystem so erweitert werden kann, dass es größere Paketverarbeitungs-Verantwortlichkeiten übernehmen kann. Des weiteren kann die effiziente Handhabung des Verkehrs innerhalb des Paketverarbeitungssystems bei der Skalierung erwünscht sein.
  • Das Dokument US 6 295 057 B1 offenbart einen Prozessor, der – über einen Datenbus – mit einem SDRAM sowie – über jeweilige Eingangs- oder Ausgangseinheiten – z.B. mit einem Videodecoder, einem Videoencoder, und einem Modem, gekoppelt ist. Der Prozessor weist eine Anwendungsbibliothek auf, die Routinen bereitstellen kann, um eine Datenverbindung mit einem Server oder Modem bereitzustellen, Web-Browsing zu ermöglichen, E-Mails abzurufen, und Videodaten zu encodieren/decodieren.
  • Das Dokument US 6 108 739 zeigt eine Vielzahl von Systemen, die jeweils einen Prozessor, einen Speicher und einen Adapter aufweisen. Jedes der Systeme kommuniziert mit den anderen Systemen über einen Bus, beispielsweise nach dem Schnittstellen-Standard IEEE std 1596–1992.
  • Erfindungsgemäß wird eine Vorrichtung nach dem unabhängigen Anspruch 1 und ein Verfahren nach dem unabhängigen Anspruch 26 geschaffen.
  • Weitere vorteilhafte Merkmale der Erfindung sind in den Unteransprüchen definiert.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Die folgende detaillierte Beschreibung nimmt Bezug auf die beigefügten Zeichnungen, die nun kurz beschrieben werden. Es zeigt:
  • 1 ein Blockdiagramm einer Ausführungsform eines Systems.
  • 2 ein Blockdiagramm einer Ausführungsform eines Paketverarbeitungssystems, das zwei (oder mehrere) der in 1 gezeigten Systeme aufweist.
  • 3 ein Blockdiagramm eines ersten Kommunikationsbeispiels in dem in 2 gezeigten Paketverarbeitungssystem.
  • 4 ein Blockdiagramm eines zweiten Kommunikationsbeispiels in dem in 2 gezeigten Paketverarbeitungssystem.
  • 5 ein Blockdiagramm eines dritten Kommunikationsbeispiels in dem in 2 gezeigten Paketverarbeitungssystem.
  • 5a ein Blockdiagramm eines vierten Kommunikationsbeispiels in dem in 2 gezeigten Paketverarbeitungssystem.
  • 6 ein Blockdiagramm eines fünften Kommunikationsbeispiels in dem in 2 gezeigten Paketverarbeitungssystem.
  • 7 ein Blockdiagramm, das eine Ausführungsform virtueller Kanäle in der integrierten Schaltung der 1 zeigt.
  • 8 ein Blockdiagramm einer Ausführungsform einer in 1 gezeigten Rx-Schaltung.
  • 9 ein Blockdiagramm einer Ausführungsform eines in 8 gezeigten H&R Blocks.
  • 10 einen Automaten, der die Operation einer Ausführungsform des in 1 gezeigten Schalters zeigt.
  • 11 ein Blockdiagramme einer Ausführungsform eines Descriptor-Rings, der von einer Ausführungsform einer in 1 gezeigten Paket-Direkt-Speicherzugriffsschaltung verwendet werden kann.
  • 12 ein Blockdiagramm einer Ausführungsform eines in 11 gezeigten Descriptors.
  • 13 eine Tabelle beispielhafter Transaktions- und beispielhafter kohärenter Befehle.
  • 14 ein Blockdiagramm einer Ausführungsform eines von einer Ausführungsform des Systems verwendeten Adressraums.
  • 15 einen Entscheidungsbaum, der die Operation einer Ausführungsform eines Knotens für eine Lesetransaktion auf der Verbindung (Interconnect) in dem System zeigt.
  • 16 einen Entscheidungsbaum, der die Operation einer Ausführungsform eines Knotens für eine Schreibtransaktion auf der Verbindung in dem System zeigt.
  • 17 ein Diagramm, das die Operation einer Ausführungsform der in 1 gezeigten Speicherbrücke für von der Speicherbrücke erhaltene ferne kohärente Befehle zeigt.
  • 18 eine Tabelle, die beispielhafte Updates einer Ausführungsform eines fernen Leitungsverzeichnisses (Remote Line Directory) zeigt.
  • DETAILLIERTE BESCHREIBUNG DER AUSFÜHRUNGSFORMEN
  • 1 zeigt ein Blockdiagramm einer Ausführungsform eines Systems 10. Bei der Ausführungsform der 1 weist das System 10 einen oder mehrere Prozessoren 12A12N, eine Speichersteuerung 14, einen Schalter 18, einen Satz Schnittstellenschaltungen 20A20C, eine Speicherbrücke 32, eine Paket-Direkt-Speicherzugriffsschaltung (Direct Memory Access, DMA) 16 und ein L2-Cache 36 auf. Die Speicherbrücke 32 weist ein fernes Leitungsverzeichnis (Remote Line Directory) 34 auf. Das System 10 weist eine Verbindung (Interconnect) 22 auf, mit der die Prozessoren 12A12N, die Speichersteuerung 14, das L2-Cache 36, die Speicherbrücke 32, die Paket-Direkt-Speicherzugriffsschaltung 16 und das ferne Leitungsverzeichnis 34 gekoppelt sind. Das System 10 ist über die Speichersteuerung 14 mit dem Speicher 24 verbunden. Die Schnittstellenschaltungen 20A20C weisen jeweils eine Empfangen (Rx)-Schaltung 26A26C und eine Übertragen (Tx)-Schaltung 28A28C auf. Das System 10 ist über jeweilige Schnittstellenschaltungen 20A20C mit einem Satz von Schnittstellen 30A30C verbunden. Die Schnittstellenschaltungen 20A20C sind mit dem Schalter 18 gekoppelt, der des weiteren mit der Speicherbrücke 32 und der Paket-Direkt-Speicherzugriffsschaltung 16 verbunden ist. Ein Konfigurationsregister 38 ist ebenfalls in 1 gezeigt, das eine Knotenzahl (Node #) für das System 10 speichert. Das Konfigurationsregister 38 ist in der Ausführungsform der 1 mit dem L2-Cache 36, der Speichersteuerung 14, der Speicherbrücke 32 und den Schnittstellenschaltungen 20A20C verbunden. Die Prozessoren 12A12N können ebenfalls zum Empfang der Knotenzahl von dem Konfigurationsregister 38 gekoppelt sein.
  • Das System 10 kann als Knoten in einem Mehrknoten-Kohärenzsystem konfiguriert werden. Bei einem derartigen Kohärenzsystem kann die Zwischenknotenkohärenz über kohärente Befehle aufrechterhalten werden, die auf einer oder mehreren der Schnittstellen 30A30C (jeweils über die Schnittstellenschaltungen 20A20C) an das System 10 und durch das System 10 übertragen werden. Außerdem können auf einer oder mehreren Schnittstellen 30A30C (über die Schnittstellenschaltungen 20A20C) Pakete übertragen/empfangen werden. Des weiteren können nichtkohärente Befehle (z.B. Kommunikationen mit Eingangs/Ausgangs (I/O)-Schaltungen) auf einer oder mehreren Schnittstellen 30A30C übertragen/empfangen werden. Somit kann eine Mischung von Paket-, nicht-kohärentem und kohärentem Verkehr auf den Schnittstellen 30A30C empfangen werden. Insbesondere kann mindestens eine der Schnittstellen 30A30C eine Mischung aus Paket-, nicht-kohärentem und kohärentem Verkehr tragen.
  • In der hier vorliegenden Verwendung weist eine Speicherbrücke Schaltkreise auf, die so ausgestaltet sind, dass sie innerhalb eines Knotens Zwischenknotenkohärenzfunktionen bearbeiten können. Daher kann die Speicherbrücke 32 eine Quelle/ein Ziel der kohärenten Befehle sein. Im Ansprechen auf wenigstens einige der empfangenen kohärenten Befehle kann die Speicherbrücke 32 entsprechende Transaktionen auf der Verbindung 22 generieren. Im Ansprechen auf wenigstens einige Transaktionen auf der Verbindung 22, die von anderen Einrichtungen erzeugt werden, kann die Speicherbrücke 32 kohärente Befehle erzeugen. Die Speicherbrücke 32 kann bei einer Ausführungsform auch die Übertragung und Verarbeitung nicht-kohärenter Befehle bearbeiten.
  • In der hier vorliegenden Verwendung weist eine Paket-Direkt-Speicherzugriffsschaltung Schaltkreise auf, um Pakete zu und von einem Speicher zu kommunizieren. Die Paket-Direkt-Speicherzugriffsschaltung 16 kann Schreibtransaktionen auf der Verbindung 22 zu der Speichersteuerung 14 erzeugen, um empfangene Pakete in den Speicher 24 zu schreiben, und sie kann Lesetransaktionen auf der Verbindung 22 erzeugen, um Pakete zur Übertragung durch eine der Schnittstellenschaltungen 20A20C aus dem Speicher 24 auszulesen.
  • Der Schalter 18 kann kohärenten Verkehr und Paketverkehr von den Schnittstellenschaltungen 20A20C trennen, indem er den kohärenten Verkehr zu der Speicherbrücke 32 routet und den Paketverkehr zu der Paket-Direkt-Speicherzugriffsschaltung 16. Bei einer Ausführungsform kann der Schalter 18 im allgemeinen Quellen und Ziele auswählen, die auf der Basis von Anfragen von den Quellen nach Datenübertragung und Anfragen von den Zielen nach Daten zur Kommunikation gekoppelt werden sollen. Beispielsweise können die Schnittstellenschaltungen 20A20C (insbesondere die Rx-Schaltungen 26A26C) kohärente Befehle und Pakete, die auf den Schnittstellen 30A30C empfangen werden, identifizieren und eine Übertragung auf die Paket-Direkt-Speicherzugriffsschaltung 16 (für Pakete) und die Speicherbrücke 32 (für kohärente Befehle) fordern. Wenn die Paket-Direkt-Speicherzugriffsschaltung 16 oder die Speicherbrücke 32 die Fähigkeit, Daten des entsprechenden Typs zu empfangen, angezeigt hat, kann der Schalter 18 eine Übertagung zwischen einer anfragenden Rx-Schaltung 26A26C und der Paket-Direkt-Speicher zugriffsschaltung 16 oder der Speicherbrücke 32 zulassen. Ähnlich kann die Paket-Direkt-Speicherzugriffsschaltung 16 oder die Speicherbrücke 32 eine Übertragung auf eine Schnittstellenschaltung 20A20C (insbesondere auf eine Tx-Schaltung 28A28C) anfordern. Wenn die Tx-Schaltung 28A-28C die Fähigkeit, Daten des entsprechenden Typs zu empfangen, angezeigt hat, kann der Schalter 18 eine Übertragung zwischen der anfragenden Paket-Direkt-Speicherzugriffsschaltung 16/Speicherbrücke 32 und der Tx-Schaltung 28A28C zulassen.
  • Bei einer Ausführungsform können die Schnittstellen 30A30C einen Satz virtueller Kanäle unterstützen, auf denen kohärente Befehle, nicht-kohärente Befehle und Pakete übertragen werden. Jeder virtuelle Kanal ist so definiert, dass er unabhängig von den anderen virtuellen Kanälen fließt, obwohl die virtuellen Kanäle bestimmte physikalische Ressourcen gemeinsam haben können (z.B. die Schnittstelle 30A30C, auf der die Befehle fließen). Diese virtuellen Kanäle können auf interne virtuelle Kanäle (vorliegend als virtuelle Schaltkanäle bezeichnet) gemappt werden. Der Schalter 18 kann virtuelle Kanäle erkennen. Das heißt, der Schalter 18 kann eine Verbindung zwischen einer Quelle und einem Ziel ermöglichen, basierend nicht nur auf der Fähigkeit der Quelle, Daten zu übertragen und des Ziels, Daten zu empfangen, sondern auch auf der Fähigkeit der Quelle, Daten auf einem bestimmten virtuellen Schaltkanal zu übertragen und des Ziels, Daten auf diesem virtuellen Schaltkanal zu empfangen. Daher können Anfragen von Quellen das Ziel und den virtuellen Kanal, auf dem Daten übertragen werden sollen, angeben, und Anfragen von Zielen können den virtuellen Kanal angeben, auf dem Daten empfangen werden können. Die virtuellen Schaltkanäle können ein Ziel und einen virtuellen Kanal an diesem Ziel angeben, und können vorliegend als Ziel und virtueller Kanal oder zusammen als virtueller Schaltkanal bezeichnet werden.
  • Außerdem kann bei einigen Ausführungsformen der Schalter 18 Eingänge an ein gegebenes Ziel und einen virtuellen Kanal auf einer Paketgrenze zusammenführen. Das heißt, wenn zwei Quellen anfragen, um Paketdaten an dasselbe Ziel und denselben virtuellen Kanal zu übertragen, und eine der Quellen für dieses Ziel und diesen virtuellen Kanal zugelassen worden ist, hemmt der Schalter die Zulassung der anderen Quelle für dieses Ziel und diesen virtuellen Kanal, bis die aktuelle Quelle eine Paketgrenze erreicht hat. Eine ähnliche Grenzbedingung kann für kohärente Befehle verwendet werden, wenn mehr als eine Übertragung durch den Schalter 18 verwendet wird, um kohärente Befehle zu übertragen.
  • Jede Schnittstelle 30A30C, die für kohärente Kommunikationen verwendet wird, ist so definiert, dass sie kohärente Befehle übertragen und empfangen kann. Insbesondere können bei der Ausführungsform der 1 die Schnittstellen 30A30C so definiert sein, dass sie kohärente Befehle von anderen Knoten an das und von dem System 10 übertragen/empfangen. Außerdem können andere Arten von Befehlen unterstützt werden. Bei einer Ausführungsform kann jede Schnittstelle 30A30C, die verwendet wird, um kohärente Befehle zu unterstützen, eine HyperTransportTM (HT)-Schnittstelle sein, einschließlich einer Erweiterung der HT-Schnittstelle, zum Aufweisen kohärenter Befehle (HTcc). Des weiteren kann bei einigen Ausführungsformen eine Erweiterung auf die HyperTransport-Schnittstelle zur Unterstützung von Paketdaten (Paket über HyperTransport; Packet over HyperTransport, oder PoHT) unterstützt werden. In der hier vorliegenden Verwendung umfassen kohärente Befehle alle Kommunikationen zwischen Konten, die verwendet werden, um Kohärenz zwischen Konten beizubehalten. Die Befehle können Lese- oder Schreiben-Anfragen enthalten, die durch einen Knoten initiiert werden, um einen Cache-Block, der einem anderen Knoten angehört, zu holen oder upzudaten, Probes, um Cache-Kopien von Cache-Blöcken in fernen Knoten ungültig zu machen (und ggf. eine modifizierte Kopie des Cache-Blocks an den Heimatknoten zurückzusenden), Antworten auf Probe-Befehle, Füllbefehle, die Daten übertragen, etc. Ein nicht-kohärenter Befehl ist eine Kommunikation zwischen Vorrichtungen, die nicht zwingend kohärent auftritt. Beispielsweise können Standard-HT-Befehle nicht-kohärente Befehle sein.
  • Eine gegebene HT-Schnittstelle kann somit eine Mischung aus kohärentem, nicht-kohärentem und Paket-Verkehr unterstützen. Der auf einer gegebenen HT-Schnittstelle von einer der Schnittstellenschaltungen 20A20C empfangene Verkehr kann geroutet werden: (i) zu der Paket-Direkt-Speicherzugriffsschaltung 16 (für einen PoHT-Befehl); (ii) zu der Speicherbrücke 32 (für einen kohärenten Befehl oder nicht-kohärenten Befehl, der in dem System 10 verarbeitet werden soll); oder (iii) zu einer anderen Schnittstellenschaltung 20A20C (für jede Art von Befehl, der nicht auf das System 10 gerichtet ist). Die virtuellen Kanäle auf den HT-Schnittstellen können sowohl die virtuellen Standard-HT-Kanäle als auch einige zusätzliche virtuelle Kanäle aufweisen, die für die HTcc- und/oder PoHT-Erweiterungen definiert sind. Die virtuellen HTcc-Kanäle sind in 13 gezeigt, und die PoHT-Erweiterungen können eine Reihe von virtuellen Paketkanälen (z.B. bei einer Ausführungsform 16 virtuelle Kanäle) aufweisen.
  • Bei einigen Ausführungsformen ist es möglich, dass eine oder mehrere Schnittstellenschaltungen) 20A20C nicht für Kohärenzbearbeitung verwendet werden und als Paketschnittstellen definiert sind. Die entsprechenden Schnittstellen 30A30C können HT-Schnittstellen sein, die eine PoHT-Erweiterung verwenden. Alternativ können solche Schnittstellen 30A30C System Packet Interfaces (SPI) gemäß einem vom Optical Internetworking Forum festgesetzten Level der SPI-Spezifikation sein (z.B. Level 3, Level 4 oder Level 5). Bei einer bestimmten Ausführungsform können die Schnittstellen SPI-4 Phase 2 Schnittstellen sein. Bei der gezeigten Ausführungsform kann jede Schnittstellenschaltung 20A20C so konfigurierbar sein, dass sie entweder auf der SPI-4-Schnittstelle oder der HT-Schnittstelle kommuniziert. Jede Schnittstellenschaltung 20A20C kann individuell programmierbar sein, was verschiedene Kombinationen der HT- und SPI-4-Schnittstellen als Schnittstellen 30A30C möglich macht. Die Programmierung kann auf jede beliebige Art und Weise durchgeführt werden (z.B. Abasten bestimmter Signale während des Zurücksetzens, Verschieben von Werten in Konfigurationsregister (nicht gezeigt) während des Zurücksetzens, Programmieren der Schnittstellen mit Konfigurationsraumbefehlen nach dem Zurücksetzen, Pins, die extern nach oben oder nach unten gezogen werden, um die gewünschte Programmierung anzuzeigen, etc.). Andere Ausführungsformen können jede Schnittstelle verwenden, die Paketdaten tragen kann (z.B. Media Independent Interface (MII) oder Gigabit MII (GMII)-Schnittstellen, X.25, Frame Relay, Asynchronous Transfer Mode (ATM), etc.). Die Paketschnittstellen können Paketdaten direkt unterstützen (z.B. Übertragen der Paketdaten mit verschiedenen Steuerungsinformationen, die den Beginn des Pakets, das Ende des Pakets, etc. anzeigen) oder indirekt (z.B. Übertragen der Paketdaten als Ladung eines Befehls, z.B. PoHT). Die SPI-4-Schnittstelle kann 16 virtuelle Hardware-Kanäle definieren, die zu 256 virtuellen Software-Kanälen erweitert werden können.
  • Eine Übersicht über eine Ausführungsform des Zwischenknoten-Kohärenzmechanismus wird als nächstes gegeben. Zusätzliche Einzelheiten hinsichtlich des Zwischenknoten-Kohärenzmechanismus (für eine Ausführungsform) werden weiter unten zur Verfügung gestellt (z.B. unter Bezug auf 1318).
  • Das System 10 kann für Transaktionen auf der Verbindung 22 Zwischenknoten-Kohärenz unterstützen. Außerdem kann das System 10 bei anderen Knoten Zwischenknoten-Kohärenz unterstützen (z.B. bei einer Ausführungsform eine CC- NUMA-Kohärenz). Beispielsweise kann bei einer Ausführungsform, wenn eine Transaktion auf der Verbindung 22 (z.B. eine Transaktion, die von den Prozessoren 12A12N initiiert wird) auf einen von dem System 10 entfernten Cache-Block zugreift (d.h., der Cache-Block ist Teil des an einen anderen Knoten gekoppelten Speichers), und das System 10 keinen ausreichenden Besitz zur Durchführung der Transaktion hat, die Speicherbrücke 32 einen oder mehrere kohärente Befehle an die anderen Knoten ausgeben, um den Besitz (und in einigen Fällen eine Kopie des Cache-Blocks) zu erhalten. Ähnlich kann, wenn die Transaktion auf einen lokalen Cache-Block zugreift, aber ein oder mehrere andere Knoten eine Kopie des Cache-Blocks haben, die Speicherbrücke 32 an die anderen Knoten kohärente Befehle ausgeben. Des weiteren kann die Speicherbrücke 32 kohärente Befehle von anderen Knoten empfangen und Transaktionen auf der Verbindung 22 durchführen, um die kohärenten Befehle zu bewirken.
  • Bei einer Ausführungsform kann ein Knoten wie das System 10 mit einem Speicher (z.B. dem Speicher 24) gekoppelt sein. Der Knoten kann, in anderen Knoten, für das Verfolgen des Zustands jedes Cache-Blocks des Speichers in diesem Knoten verantwortlich sein. Ein Knoten wird für Cache-Blöcke des Speichers, der diesem Knoten zugewiesen ist, als „Heimatknoten" bezeichnet. Ein Knoten wird als ein „ferner Knoten" für einen Cache-Block bezeichnet, wenn der Knoten für diesen Cache-Block nicht der Heimatknoten ist. Ähnlich wird ein Cache-Block als lokaler Cache-Block in dem Heimatknoten für diesen Cache-Block und als ferner Cache-Block in anderen Knoten bezeichnet.
  • Im allgemeinen kann ein ferner Knoten den Kohärenzvorgang durch Anfordern einer Kopie eines Cache-Blocks von dem Heimatknoten dieses Cache-Blocks unter Verwendung eines kohärenten Befehls starten. Die Speicherbrücke 32 in dem fernen Knoten kann beispielsweise eine Transaktion auf der Verbindung 22 ermitteln, die auf den Cache-Block zugreift, und kann ermitteln, dass der ferne Knoten keinen ausreichenden Besitz für den Cache-Block aufweist, um die Transaktion zu vollenden (z.B. kann er überhaupt keine Kopie des Cache-Blocks besitzen, oder nur eine gemeinsam verwendete Kopie, und den ausschließlichen Besitz benötigen, um die Transaktion zu vollenden). Die Speicherbrücke 32 in dem fernen Knoten kann den kohärenten Befehl erzeugen und an den Heimatknoten übertragen, um die Kopie oder ausreichenden Besitz zu erhalten. Die Speicherbrücke 32 in dem Heimatknoten kann feststellen, ob in anderen Knoten Zustandsänderungen durchgeführt werden müssen, um dem fernen Knoten den geforderten Besitz zu gewähren, und kann kohärente Befehle (z.B. Probe-Befehle) übertragen, um die Zustandsänderungen zu bewirken. Die Speicherbrücke 32 in jedem Knoten, die die Probe-Befehle empfängt, kann die Zustandsänderungen bewirken und auf die Probe-Befehle antworten. Sobald die Antworten empfangen worden sind, kann die Speicherbrücke 32 in dem Heimatknoten dem fernen Knoten antworten (z.B. mit einem Füllbefehl, der den Cache-Block enthält).
  • Das ferne Leitungsverzeichnis 34 kann in dem Heimatknoten verwendet werden, um den Zustand der lokalen Cache-Blöcke in den fernen Knoten zu verfolgen. Das ferne Leitungsverzeichnis 34 wird jedes Mal upgedatet, wenn ein Cache-Block an einen fernen Knoten übertragen wird, der ferne Knoten den Cache-Block an den Heimatknoten zurücksendet, oder der Cache-Block über Probes ungültig gemacht wird. In der vorliegenden Verwendung bezieht sich der „Zustand" eines Cache-Blocks in einem gegebenen Knoten auf die Anzeige des Besitzes, den der gegebene Knoten für den Cache-Block gemäß des von den Knoten implementierten Kohärenzprotokolls aufweist. Bestimmte Stufen des Besitzes können keinen Zugriff, Nur-Lese-Zugriff, oder Lesen-Schreiben-Zugriff auf den Cache-Block erlauben. Beispielsweise werden bei einer Ausführungsform die modifizierten, gemeinsamen und ungültigen Zustände in dem Zwischenknoten-Kohärenzprotokoll unterstützt. Im modifizierten Zustand kann der Knoten den Cache-Block auslesen und in ihn schreiben, und der Knoten ist für das Zurücksenden des Blocks an den Heimatknoten verantwortlich, wenn er von dem Knoten entfernt wird. Im gemeinsamen Zustand kann der Knoten den Cache-Block auslesen, aber nicht in den Cache-Block schreiben, ohne an den Heimatknoten einen kohärenten Befehl zu übermitteln, um für den Cache-Block einen modifizierten Zustand zu erhalten. Im ungültigen Zustand kann der Knoten weder aus dem Cache-Block auslesen noch in ihn schreiben (d.h. der Knoten hat keine gültige Kopie des Cache-Blocks). Andere Ausführungsformen können andere Kohärenzprotokolle verwenden (z.B. das MESI-Protokoll, das den modifizierten, gemeinsamen und ungültigen Zustand und einen exklusiven Zustand enthält, in dem der Cache-Block noch nicht upgedatet ist, aber der Knoten aus dem Cache-Block auslesen und in ihn schreiben kann, oder das MOESI-Protokoll, das den modifizierten, exklusiven, gemeinsamen und ungültigen Zustand und einen Besitz-Zustand enthält, der anzeigt, dass es gemeinsame Kopien des Blocks geben kann, aber die Kopie in dem Hauptspeicher uninteressant ist). Bei einer Ausführungsform können Einrichtungen innerhalb des Knotens das MESI-Protokoll für Intraknoten-Kohärenz implementieren. Somit kann der Knoten so betrachtet werden, dass er einen Zustand in der Zwischenknoten-Kohärenz aufweist, und die einzelnen Einrichtungen können einen Zustand in der Intraknoten-Kohärenz aufweisen (in Übereinstimmung mit dem Zwischenknoten-Kohärenzzustand für den Knoten, der die Einrichtung enthält).
  • Allgemein ausgedrückt kann ein Knoten eine oder mehrere kohärente Einrichtungen (in 1 durch die gestrichelte Umrahmung 40 gezeigt) aufweisen. Bei der Ausführungsform der 1 sind die Prozessoren 12A12N, der L2-Cache 36 und die Speichersteuerung 14 Beispiele kohärenter Einrichtungen 40. Ebenso kann die Speicherbrücke 32 eine kohärente Einrichtung sein (als Proxy für weitere Knoten, basierend auf dem Zustand in dem fernen Leitungsverzeichnis 34). Andere Ausführungsformen können jedoch auch andere kohärente Einrichtungen aufweisen, z.B. eine Brücke zu einer oder mehreren I/O-Schnittstellenschaltungen, oder die I/O-Schnittstellenschaltungen selbst. Im allgemeinen weist eine Einrichtung jede Schaltung auf, die an Transaktionen auf einer Verbindung teilnimmt. Eine kohärente Einrichtung ist eine Einrichtung, die die Fähigkeit besitzt, kohärente Transaktionen auszuführen und/oder im Hinblick auf Transaktionen auf kohärente Art und Weise zu operieren. Eine Transaktion ist eine Kommunikation auf einer Verbindung. Die Transaktion wird durch eine Einrichtung auf der Verbindung ausgelöst und kann eine oder mehrere Einrichtungen als Ziel der Transaktion haben. Lesetransaktionen spezifizieren eine Datenübertragung von einem Ziel zur Quelle, während Schreibtransaktionen eine Datenübertragung von der Quelle zum Ziel spezifizieren. Bei einigen Ausführungsformen können auch andere Transaktionen verwendet werden, um ohne Datenübertragung zwischen Einrichtungen zu kommunizieren.
  • Bei einer Ausführungsform kann das ferne Leitungsverzeichnis 34 so konfiguriert sein, dass es eine Teilmenge des lokalen Speicherraums, der kohärent mit anderen Knoten gemeinsam verwendet werden kann, verfolgt. Das heißt, das ferne Leitungsverzeichnis 34 kann so konfiguriert sein, dass es bis zu einer maximalen Anzahl von Cache-Blöcken verfolgt, wobei die maximale Anzahl geringer ist als die Gesamtzahl der Cache-Blöcke, die kohärent gemeinsam verwendet werden können. Bei einer anderen Ausführungsform kann die maximale Anzahl geringer sein als die Gesamtzahl ferner Cache-Einträge. Das ferne Leitungsverzeichnis kann jede beliebige Struktur aufweisen (z.B. cache-ähnliche Strukturen wie direkt gemappt, vollassoziativ, mengen-assoziativ, etc.). Bei einer Ausführungsform kann das ferne Leitungsverzeichnis 34 16 k-Einträge, die in einer 8-fach satzassoziativen Struktur ange ordnet sind, sein. Wenn auf einen Cache-Block von einem fernen Knoten zugegriffen wird und das ferne Leitungsverzeichnis 34 in dem Heimatknoten ein Fehlen für den Cache-Block ermittelt, wird ein Eintrag zugeteilt, um den Cache-Block zu verfolgen. Wenn der zugeteilte Eintrag aktuell zur Verfolgung eines zweiten Cache-Blocks zugeteilt ist, kann die Speicherbrücke 32 in dem Heimatknoten Probes erzeugen, um den zweiten Cache-Block von den anderen Knoten zu entfernen (und gegebenenfalls modifizierte Daten in den Heimatknoten zurückschreiben).
  • Bei einer Implementierung ist das L2-Cache 36 in einem fernen Knoten so ausgestaltet, dass es den Knotenzustand für modifizierte ferne Cache-Blöcke beibehält. Wenn das L2-Cache 36 einen modifizierten fernen Cache-Block entfernt, kann das L2-Cache 36 den fernen Block dazu veranlassen, von dem Knoten als ganzes entfernt zu werden (z.B. durch Verwendung eines unten beschriebenen WrFlush Befehls).
  • Es ist festzuhalten, dass bei einigen Ausführungsformen ein kohärenter Befehl von einer Schnittstellenschaltung 20A20C empfangen werden kann, der durch das System 10 zu einem anderen Knoten hindurchgeht und in dem System 10 nicht verarbeitet zu werden braucht. Die Schnittstellen-Schaltungen 20A20C können so ausgestaltet sein, dass sie solche Befehle erkennen und (über den Schalter 18 durch eine andere Schnittstellen-Schaltung 20A20C) zurücksenden, ohne die Speicherbrücke 32 zu involvieren.
  • Eine Übersicht über den Paketverarbeitungsmechanismus einer Ausführungsform des Systems 10 wird als nächstes gegeben. Zusätzliche Einzelheiten einer Ausführungsform sind unten unter Bezug auf 712 angegeben.
  • Das System 10 kann eine flexible Struktur für die Verarbeitung von Paketen und für das Routen von Paketen ohne Verarbeitung durch die Prozessoren 12A12N bereitstellen. Bei einer Ausführungsform können die Rx-Schaltungen 26A26C so programmierbar sein, dass sie aufgrund eines oder mehrerer Paketattribute Ziele für Pakete auswählen. Beispielsweise können Pakete auf den Schnittstellen 30A30C in einem virtuellen Kanal auf dieser Schnittstelle übertragen werden. Der virtuelle Kanal kann ein Paketattribut darstellen, das zur Auswahl eines Ziels verwendet wird. Außerdem können die Rx-Schaltungen 26A26C so programmierbar sein, dass sie ein oder mehrere Paketfelder auswählen, die dazu verwendet werden, ein Ziel zu bestimmen. Für Pakete, die durch Software generiert werden, kann die Software ein Ziel für das Paket auswählen (z.B. durch Auswählen einer Ausgangsschlange in der Paket-Direkt-Speicherzugriffsschaltung 16, die auf eine gegebene Tx-Schaltung 28A28C und auf einen virtuellen Kanal auf der entsprechenden Schnittstelle gemappt wird).
  • Zwei oder mehrere Instantiationen des Systems 10 können zusammengekoppelt werden, um Paketverarbeitungssysteme zu bilden, in denen Pakete zwischen den Systemen und zwischen Paketschaltungen geroutet werden. Wenn die Rx-Schaltung 26A26C ein Paket empfängt und bestimmt, dass das Ziel für das Paket eine Tx-Schaltung 28A28C ist (zur Übertragung auf ein anderes System 10 oder anderswohin), kann die Rx-Schaltung 26A26C das Paket durch den Schalter 18 zu der Tx-Schaltung 28A28C übertragen. Das Paket wird nicht zu einem Speicher übertragen, noch von den Prozessoren 12A12N bearbeitet. Daher können die Speicher-Bandbreite, die Speicherung und die Prozessorzeit dazu verwendet werden, Pakete zu verarbeiten, die nicht automatisch von einer Quelle zu einem Ziel geroutet werden. Bei Paketverarbeitungssystemen, die mehrere Systeme 10 aufweisen, kann ein Paket von einer Rx-Schaltung 26A26C zu einer Tx-Schaltung 28A28C geroutet werden, die an eine Schnittstelle zu dem anderen System 10 gekoppelt ist, und die Rx-Schaltung 28A28C in dem anderen System 10, das mit dieser Schnittstelle gekoppelt ist, kann bestimmen, dass das Ziel des Pakets die Paket-Direkt-Speicherzugriffsschaltung 16 in dem anderen System 10 ist. Alternativ kann ein Paket durch eine oder mehrere Rx- und Tx-Schaltungen 26A26C und 28A28C von einer Paketquellenvorrichtung zu einer Paketzielvorrichtung geroutet werden, ohne jegliches Verarbeiten durch die Prozessoren 12A12N in den Systemen 10.
  • Die Rx-Schaltungen 26A26C können festlegen, dass empfangene Pakete (durch die Paket-Direkt-Speicherzugriffsschaltung 16) zur Verarbeitung in dem System 10 in dem Speicher 24 zu speichern sind. Bei einer Ausführungsform kann die Paket-Direkt-Speicherzugriffsschaltung 16 einen Satz von Eingangsschlangen (die virtuellen Kanäle in der Paket-Direkt-Speicherzugriffsschaltung 16) aufweisen, auf die ein Paket durch die Rx-Schaltungen 26A26C gemappt werden kann. Der Schalter 18 kann die Pakete zu der Paket-Direkt-Speicherzugriffsschaltung 16 zum Speichern in der identifizierten Eingangsschlange routen. Auf ähnliche Weise kann Software Pakete generieren und sie in Ausgangsschlangen der Paket-Direkt-Speicherzugriffsschaltung 16 speichern. Die Ausgangsschlangen können auf eine Tx-Schal tung 28A28C (und einen virtuellen Ausgangskanal in der Tx-Schaltung 28A28C) gemappt werden, und der Schalter 18 kann Pakete von der Paket-Direkt-Speicherzugriffsschaltung 16 zu der Tx-Schaltung 28A28C routen.
  • Bei einer Ausführungsform können die Eingangsschlangen und die Ausgangsschlangen der Paket-Direkt-Speicherzugriffsschaltung 16 logische Schlangen sein. Das heißt, die Schlangen können tatsächlich in dem Speicher 24 implementiert sein. Die Paket-Direkt-Speicherzugriffsschaltung 16 kann Puffer aufweisen, um die Paketdaten, die zu und von dem Speicher 24 übertragen werden, zu puffern. Die Schlangen können beliebig implementiert werden. Bei einer bestimmten Ausführungsform ist jede Schlange als Descriptor-Ring (oder-Kette) implementiert, die Speicherpuffer identifiziert, um Paketdaten entsprechend einer gegebenen Eingangsschlange zu speichern. Bei anderen Ausführungsformen können die Schlangen in jeder gewünschten Art und Weise implementiert werden (z.B. Linklisten, benachbarte Speicherstellen für Speicher-Puffer, etc.).
  • Pakete, die durch die Paket-Direkt-Speicherzugriffsschaltung 16 in einem Speicher gespeichert werden, können durch Software verarbeitet werden, die von den Prozessoren 12A12N ausgeführt wird (oder Software, die auf einem Prozessor in einem fernen Knoten ausgeführt wird, unter Verwendung von Zwischenknoten-Kohärenz, um kohärent auf die Pakete zuzugreifen). Die Software kann festlegen, dass ein gegebenes Paket in dem System 10 beendet wird. Alternativ können die Prozessoren 12A12N festlegen, dass das Paket auf eine der Schnittstellen 30A20C zurück zu übertragen ist, und können das Paket für die Übertragung durch die Paket-Direkt-Speicherzugriffsschaltung 16 vorbereiten. Das Paket kann durch Software modifiziert worden sein, oder es kann unmodifiziert sein. Außerdem kann die Software Pakete generieren, die zu übertragen sind. In jedem dieser Fälle kann die Software die Paket-Direkt-Speicherzugriffsschaltung 16 über das Paket und seine Position in dem Speicher 24 informieren, so dass die Paket-Direkt-Speicherzugriffsschaltung 16 das Paket aus dem Speicher 24 zur Übertragung auf die Schnittstellen-Schaltung 20A20C auslesen kann, die mit der Schnittstelle 30A30C, auf der das Paket zu übertragen ist, gekoppelt ist. Bei einer Ausführungsform kann die Software die Paket-Direkt-Speicherzugriffsschaltung 16 über das Paket durch Speichern des Pakets in einem oder mehreren Speicherpuffern informieren, die durch Descriptoren in dem Descriptor-Ring, der eine Ausgangsschlange bildet, angezeigt werden, und durch Updaten des Descriptors so, dass er anzeigt, dass die Paket-Direkt-Speicherzugriffsschaltung 16 den Descriptor besitzt. Als Alternative zum Updaten des Descriptors (oder zusätzlich zum Updaten des Descriptors) kann die Software eine Descriptor-Zahl in der Paket-Direkt-Speicherzugriffsschaltung 16 updaten um anzuzeigen, dass die Paket-Direkt-Speicherzugriffsschaltung 16 den Descriptor besitzt.
  • In der hier vorliegenden Verwendung kann „Paket" jede Kommunikation zwischen einer Quelle und einem Ziel umfassen, die eine oder mehrere Header aufweist, die die Quelle und das Ziel eines Pakets an verschiedenen Levels innerhalb der Quelle und des Ziels definieren, und die eine Datenladung aufweisen können. „Paketdaten" können alle Daten umfassen, die Teil eines Pakets sind, oder können sich auf mehrere Pakete beziehen.
  • In der hier vorliegenden Verwendung weist eine Schnittstellen-Schaltung jede Schaltung auf, die dazu konfiguriert ist, auf einer Schnittstelle gemäß dem für die Schnittstelle definierten Protokoll zu kommunizieren. Die Schnittstellen-Schaltung kann Empfangsschaltungen aufweisen, die so konfiguriert sind, dass sie Kommunikationen auf der Schnittstelle empfangen und die empfangenen Kommunikationen zu anderen Schaltungen innerhalb des Systems, das die Schnittstellen-Schaltung enthält, weiterleiten. Die Schnittstellen-Schaltung kann auch Übertragungsschaltungen aufweisen, die so konfiguriert sind, dass sie Kommunikationen von den anderen Schaltungen innerhalb des Systems empfangen und die Kommunikationen auf die Schnittstelle weiterleiten.
  • Die Prozessoren 12A12N können für jede beliebige Befehlssatzarchitektur ausgestaltet sein, und können Programme ausführen, die für diese Befehlssatzarchitektur geschrieben sind. Beispielhafte Befehlssatzarchitekturen können die MIPS-Befehlssatzarchitektur (einschließlich der MIPS-3D und MIPS-MDMX anwendungsspezifischen Erweiterungen), die von Intel Corp. entwickelten IA-32- oder IA-64-Befehlssatzarchitekturen, die PowerPC-Befehlssatzarchitektur, die Alpha-Befehlssatzarchitektur, die ARM-Befehlssatzarchitektur, oder jede weitere Befehlssatzarchitektur umfassen. Das System 10 kann eine beliebige Anzahl von Prozessoren aufweisen (z.B. nur einen Prozessor, zwei Prozessoren, vier Prozessoren, etc.).
  • Das L2-Cache 36 kann ein beliebiger Typ von Cache-Speicher mit beliebiger Kapazität sein, der einen beliebigen Aufbau verwendet (z.B. mengen-assoziativ, direkt gemappt, voll-assoziativ, etc.). Bei einer Ausführungsform kann das L2-Cache 36 ein 8-fach satzassoziatives 1 MB Cache sein. Das L2-Cache 36 wird vorliegend als L2 bezeichnet, weil die Prozessoren 12A12N interne (L1) Caches aufweisen können. Bei anderen Ausführungsformen kann das L2-Cache 36 ein L1-Cache, ein L3-Cache oder nach Bedarf jeder andere Level sein.
  • Die Speichersteuerung 14 ist so konfiguriert, dass sie auf den Speicher 24 im Ansprechen auf Lese- und Schreibtransaktionen, die auf der Verbindung 22 empfangen werden, zugreift. Die Speichersteuerung 14 kann ein Treffer-Signal von dem L2-Cache empfangen, und wenn in dem L2-Cache ein Treffer für eine gegebene Lese/Schreibtransaktion festgestellt wird, kann es sein, dass die Speichersteuerung 14 nicht auf diese Transaktion antwortet. Die Speichersteuerung 14 kann so ausgestaltet sein, dass sie auf jede einer Vielzahl von Speicherarten zugreift. Beispielsweise kann die Speichersteuerung 14 für ein Synchronous Dynamic Random Access Memory (SRAM) und insbesondere für ein Double Data Rate (DDR) SDRAM ausgestaltet sein. Alternativ kann die Speichersteuerung 14 für ein DRAM, ein DDR Synchronous Graphics RAM (SGRAM), ein DDR Fast Cycle RAM (FCRAM), ein DDR-II SDRAM, ein Rambus DRAM (RDRAM), ein SRAM, oder für jede andere geeignete Speichervorrichtung oder für Kombinationen der vorgenannten Speichervorrichtungen ausgestaltet sein.
  • Die Verbindung 22 kann eine beliebige Art von Kommunikationsmittel zwischen den mit der Verbindung gekoppelten Vorrichtungen sein. Beispielsweise kann die Verbindung 22 bei verschiedenen Ausführungsformen gemeinsame Busse, Crossbar-Verbindungen, Punkt-zu-Punkt-Verbindungen in einem Ring, Stern oder einer beliebigen anderen Topologie, Maschen, Würfel, etc. aufweisen. Die Verbindung 22 kann bei einigen Ausführungsformen auch einen Speicher aufweisen. Bei einer bestimmten Ausführungsform kann die Verbindung 22 einen Bus aufweisen. Der Bus kann bei einer Ausführungsform ein geteilter Transaktionsbus sein (d.h. mit getrennten Adress- und Datenphasen). Die Datenphasen verschiedener Transaktionen auf dem Bus können ungeordnet mit den Adressphasen stattfinden. Der Bus kann auch Kohärenz unterstützen und kann daher eine Antwortphase aufweisen, um Kohärenzantwortinformationen zu übertragen. Der Bus kann bei einer Ausführungsform ein verteiltes Arbitrationsschema verwenden. Bei einer Ausführungsform kann der Bus über eine Leitung geleitet werden. Der Bus kann jede geeignete Signalgebungstechnik verwenden. Beispielsweise kann bei einer Ausführungsform Differential-Signalgebung für Hochgeschwindigkeits-Signalübertragung verwendet werden. An dere Ausführungsformen können beliebige andere Signalgebungstechniken verwenden (z.B. TTL, CMOS, GTL, HSTL, etc.). Andere Ausführungsformen können nichtgeteilte Transaktionsbusse aufweisen, die mit einer einzigen Arbitration für Adresse und Daten versehen sind, und/oder einen geteilten Transaktionsbus, in dem der Datenbus nicht explizit mit Arbitration versehen ist. Es kann, je nach Design-Wahl, entweder ein zentrales Arbitrationsschema oder ein verteiltes Arbitrationsschema verwendet werden.
  • Verschiedene Ausführungsformen des Systems 10 können zusätzliche Schaltungen aufweisen, die nicht in 1 gezeigt sind. Beispielsweise kann das System 10 verschiedene I/O-Vorrichtungen und/oder -Schnittstellen aufweisen. Eine beispielhafte I/O-Vorrichtung kann eine oder mehrere PCI-Schnittstellen aufweisen, eine oder mehrere serielle Schnittstellen, Personal Computer Memory Card International Association (PCMCIA)-Schnittstellen, etc. Derartige Schnittstellen können direkt mit der Verbindung 22 gekoppelt sein, oder sie können durch eine oder mehrere VA-Brückenschaltungen gekoppelt sein.
  • Bei einer Ausführungsform kann das System 10 (und insbesondere die Prozessoren 12A12N, die Speichersteuerung 14, das L2-Cache 36, die Schnittstellen-Schaltungen 20A20C, die Speicherbrücke 32 einschließlich des fernen Leitungsverzeichnisses 34, die Paket-Direkt-Speicherzugriffsschaltung 16, der Schalter 18, das Konfigurationsregister 38 und die Verbindung 22) in einer einzigen integrierten Schaltung als ein System auf einer Chip-Konfiguration integriert sein. Die oben erwähnte zusätzliche Schaltung kann ebenfalls integriert sein. Alternativ können andere Ausführungsformen eine oder mehrere Vorrichtungen als separate integrierte Schaltungen implementieren. Bei einer anderen Konfiguration kann auch der Speicher 24 integriert sein. Alternativ können einer oder mehrere der Bestandteile als separate integrierte Schaltungen implementiert werden, oder alle Bestandteile können nach Bedarf separate integrierte Schaltungen sein. Jede Ebene der Integration kann verwendet werden.
  • Es wird angemerkt, dass, obwohl in 1 drei Schnittstellen-Schaltungen 20A20C gezeigt sind, bei verschiedenen Ausführungsformen eine oder mehrere Schnittstellen-Schaltungen implementiert werden können. Es wird des weiteren angemerkt, dass, obwohl der Cache-Block als die Körnung bezeichnet werden kann, auf der Kohärenz beibehalten wird, andere Ausführungsformen andere Körnungen ver wenden können, deren Größe größer oder kleiner als ein Cache-Block ist. Bei solchen Ausführungsformen kann ein „Kohärenz-Block" genau so behandelt werden wie ein „Cache-Block oder ein „Block", wenn die obengenannte Kohärenz diskutiert wird. Im allgemeinen kann ein „Kohärenz-Block" einen Satz benachbarter Bytes (im Speicher) aufweisen, die zu Kohärenzzwecken als Einheit behandelt werden. Bei verschiedenen Ausführungsformen kann ein Kohärenz-Block je nach Wunsch einen Teil eines Cache-Blocks, einen einzigen Cache-Block oder mehrere Cache-Blocks aufweisen.
  • Beispiele für Paketverarbeitungssysteme
  • 2 zeigt ein Blockdiagramm einer Ausführungsform eines Paketverarbeitungssystems 300. Bei der Ausführungsform der 2 weist das Paketverarbeitungssystem 300 zwei Instantiationen des in 1 gezeigten Systems 10 auf (Systeme 10A und 10B in 2). Jedes System 10A und 10B ist mit einem jeweiligen Speicher 24 (Speicher 24A und 24B in 2) gekoppelt, die einen global kohärenten Speicher unter Verwendung kohärenter Befehle zwischen den Systemen 10A und 10B bilden können. Das Paketverarbeitungssystem 300 weist des weiteren eine Paketschaltung 302 und eine Eingangs/Ausgangs (E/A)-Schaltung 304 auf. Die Paketschaltung 302 ist über eine Schnittstelle 306 mit dem System 10A gekoppelt. Die Systeme 10A und 10B sind über eine Schnittstelle 308 verbunden. Das System 10B und die E/A-Schaltung 304 sind über eine Schnittstelle 310 gekoppelt. Jede der Schnittstellen 306, 308 und 310 kann eine der Schnittstellen 30A30B in dem entsprechenden System 10A oder 10B sein.
  • Bei der Ausführungsform der 2 kann die Schnittstelle 306 eine Paketschnittstelle sein, die den Paketverkehr zwischen der Paketschaltung 302 und dem System 10A unterstützt. Jede der oben erwähnten Paket-Schnittstellen kann verwendet werden. Bei einer bestimmten Ausführungsform kann die Schnittstelle 306 beispielsweise, je nach Wunsch, eine HT-Schnittstelle (unter Verwendung der PoHT-Erweiterung) oder eine SPI-4-Schnittstelle sein. In der hier vorliegenden Verwendung umfasst eine Paket-Schaltung jede Schaltung, die Pakete ausgibt und/oder empfängt. Beispielsweise kann die Paketschaltung 302 eine Media Access Control (MAC)-Schaltung mit einer SPI-4- oder HT-Paket-Schnittstelle sein. Die Paketschaltung 302 kann des weiteren Schalter, Router, Gateways, etc. aufweisen.
  • Bei der Ausführungsform der 2 kann die Schnittstelle 310 jede Schnittstelle sein, die nicht kohärenten Verkehr unterstützen kann. Beispielsweise kann jede periphere Schnittstelle verwendet werden (z.B. Peripheral Component Interconnect (PCI), Universal Serial Bus (USB), Firewire, etc.). Bei einer bestimmten Ausführungsform wird die HT-Schnittstelle für die Schnittstelle 310 verwendet. Die Schnittstelle 310 kann Befehle zur Kommunikation mit verschiedenen E/A-Schaltungen wie der E/A-Schaltung 304 unterstützen. Im allgemeinen kann eine E/A-Schaltung jede Vorrichtung sein, die peripher mit dem Paketverarbeitungssystem 300 kommuniziert. Beispielsweise kann eine E/A-Schaltung 304 eine Brücke zu einer oder mehreren E/A-Schnittstellen (z.B. PCI, USB, etc.), einer E/A-Vorrichtung, etc. sein.
  • Bei der Ausführungsform der 2 kann die Schnittstelle 308 eine Schnittstelle sein, die fähig ist, eine Mischung aus Paket-, kohärentem und nicht-kohärentem Verkehr zu unterstützen. Bei einer Ausführungsform kann die Schnittstelle 308 beispielsweise eine HT-Schnittstelle (unter Verwendung der PoHT-Erweiterung für Paketverkehr und der HTcc-Erweiterung für kohärente Befehle) sein. Die Verwendung einer Schnittstelle 308, die eine Mischung aus Paket-, kohärentem und nichtkohärentem Verkehr unterstützt, kann bei einigen Ausführungsformen Effizienz und Skalierbarkeit in dem Paketverarbeitungssystem 300 ermöglichen. Da die drei Arten des Verkehrs auf derselben Schnittstelle unterstützt werden können, kann jedes System 10, das in dem Paketverarbeitungssystem enthalten ist, effizient mit einem anderen System 10 (z.B. durch Verwendung einer Schnittstelle) kommunizieren. Des weiteren kann das System zu mehreren Systemen 10 skalierbar sein. Die Kohärenz kann dazu verwendet werden, es jedem System 10 zu ermöglichen, auf jede Speicherstelle, lokal oder fern, zuzugreifen. Der Paketverkehr zwischen den Systemen 10 kann dazu verwendet werden, Pakete zwischen den Systemen zur Verarbeitung zu routen, wodurch die Verarbeitungslast zwischen den Systemen 10 ausgeglichen wird. Außerdem kann der Paketverkehr zwischen den Systemen 10 dazu verwendet werden, ein Paket von einem System 10 durch eines oder mehrere andere Systeme 10 zu einer Paketschaltung zu routen. Das heißt, jedes System 10 kann ein Paket an eine Paketschaltung übertragen, die mit irgendeinem anderen System 10 gekoppelt ist. Auf ähnliche Weise kann nicht-kohärenter Verkehr verwendet werden, um es jedem System 10 zu ermöglichen, mit jeder E/A-Schaltung zu kommunizieren.
  • Während in dem Paketverarbeitungssystem 300 der 2 zwei Systeme 10A und 10B gezeigt sind, können andere Ausführungsformen mehr als zwei Systeme 10 aufweisen. Jedes System 10 kann über eine Schnittstelle, die die Fähigkeit hat, eine Mischung aus Paket-, kohärentem und nicht-kohärentem Verkehr zu unterstützen, mit wenigstens einem anderen System 10 verbunden sein. Auf ähnliche Weise können andere Systeme nach Bedarf mehrere Paketschaltungen und/oder E/A-Schaltungen aufweisen.
  • 3 ist ein Beispiel des Paketverarbeitungssystems 300, bei dem eine Kombination der kohärenten, nicht-kohärenten und Paket-Merkmale der Systeme 10 verwendet wird, um ein Paket in einem Speicher zu speichern, der mit einem System 10 gekoppelt ist, das von dem System 10 entfernt ist, das mit der Paketschaltung 302, die das Paket ausgibt, gekoppelt ist. Bei dem Beispiel der 3 ist ein Paket P1 gezeigt. Die Paketschaltung 302 übermittelt das Paket P1 auf der Schnittstelle 306 zu dem System 10A (genauer gesagt, empfängt die Rx-Schaltung 26A das Paket P1). Die Rx-Schaltung 26A kann ein oder mehrere Paketattribute des Pakets P1 verwenden, um zu bestimmen, dass das Paket P1 an die Paket-Direkt-Speicherzugriffsschaltung 16 zu übertragen ist.
  • Die Paket-Direkt-Speicherzugriffsschaltung 16 in dem System 10A empfängt das Paket P1 und erzeugt eine oder mehrere Schreibtransaktionen auf der Verbindung 22, um das Paket P1 in den Speicher zu schreiben. Jede Schreibtransaktion kann bei dieser Ausführungsform einen Cache-Block von Daten übertragen, und so kann die Anzahl der Schreibtransaktionen von der Anzahl der Cache-Blöcke in dem Paket (und der Ausrichtung der Pakete in dem Speicher) abhängig sein. Die Transaktionen können nicht-kohärente Schreibtransaktionen (Wr) sein, und somit (ihren die kohärenten Einrichtungen in dem System 10A hinsichtlich der Schreibtransaktionen keine Aktion durch. Bei diesem Beispiel ist die Paket-Direkt-Speicherzugriffsschaltung 16 in dem System 10A so programmiert, dass sie das Paket P1 auf eine Speicheradresse „A" schreibt, die eine Speicherstelle in dem mit dem System 10B gekoppelten Speicher 24B identifiziert. Beispielsweise kann die Paket-Direkt-Speicherzugriffsschaltung 16 über einen Satz von Descriptor-Ringen programmiert werden, was weiter unten im einzelnen beschrieben ist. Jeder beliebige Mechanismus zur Programmierung der Paket-Direkt-Speicherzugriffsschaltung 16 mit Adressen zur Paketspeicherung kann verwendet werden.
  • Die Speicherbrücke 32 in dem System 10A ermittelt die Schreibtransaktionen an die Adresse A (eine ferne Adresse für das System 10A) und erzeugt entsprechende nicht-kohärente Schreibbefehle (z.B. Standard HT-Schreibbefehle), um die Cache-Blöcke zu dem System 10B zu übertragen. Die Speicherbrücke 32 überträgt die Schreibbefehle zu der Tx-Schaltung 28B in dem System 10A (im Ansprechen z.B. auf eine programmierbare Adress-Map in der Speicherbrücke 32, die die Adresse A auf die Tx-Schaltung 28B mappt). Die Tx-Schaltung 28B überträgt die Schreibbefehle auf der Schnittstelle 308 an die Rx-Schaltung 26A in dem System 10B, die die Schreibbefehle an die Speicherbrücke 32 in dem System 10B routet. Die Rx-Schaltung 26A kann ermitteln, dass die Schreibbefehle zu der Speicherbrücke 32 in dem System 10B zu routen sind (gegenüber einer Tx-Schaltung zum Routen an ein anderes System 10), beispielsweise durch Vergleichen der Knotenzahl des Systems 10B (in dem Konfigurationsregister 38 in 1) mit der Adresse A. Zusätzliche Einzelheiten hinsichtlich des Mappens von Adressen auf Knoten in einem kohärenten System sind für eine Ausführungsform unten angegeben.
  • Die Speicherbrücke 32 in dem System 10B erzeugt Schreibtransaktionen (z.B. WrInv) auf der Verbindung 22 in dem System 10B im Ansprechen auf die kohärenten Befehle. Da die Adresse A in dem System 10B lokal ist, kann die Speichersteuerung 14 in dem System 10B die Schreibtransaktionen empfangen und die mit der Schreibtransaktion übertragenen Daten (die Paket-P1-Daten) zu dem Speicher 24B übertragen. Es ist zu bemerken, dass, wenn andere Knoten Kopien der Cache-Blöcke haben, die durch die Schreibentransaktionen beschrieben werden (wie durch das ferne Leitungsverzeichnis 34 in dem System 10B angegeben ist), die Speicherbrücke 32 in dem System 10B auch Probes für diese Knoten erzeugen kann, um diese Kopien ungültig zu machen. Dies bedeutet, dass die WrInv-Transaktion eine kohärente Transaktion sein kann, die Cache-Kopien des von der WrInv-Transaktion upgedateten Cache-Blocks ungültig macht. Die Speicherbrücke 32 kann im Ansprechen auf den Schreibbefehl und auch im Ansprechen auf die Ermittlung, dass sich der Schreibbefehl in dem Heimatknoten befindet und den gesamten Cache-Block updatet, eine WrInv-Transaktion erzeugen. Somit treten die Schreibbefehle in die kohärente Domain in dem Heimatknoten (im vorliegenden Beispiel das System 10B) ein (d.h. werden kohärent).
  • Die Kombination der kohärenten Merkmale, der nicht-kohärenten Merkmale und der Paket-Merkmale des Systems 10 wird somit in dem Beispiel der 3 verwendet, um es der Paket-Direkt-Speicherzugriffsschaltung 16 in dem System 10A zu ermöglichen, als ferne Direkt-Speicherzugriffs-Vorrichtung für Direkt-Speicher zugriffs-Paket-Daten zu dem Speicher 24B zu dienen. Daher kann eine Paket-Direkt-Speicherzugriffsschaltung 16 nahe der Paketquelle verwendet werden, um Pakete in jedem System 10 innerhalb des Paketverarbeitungssystems 300 zu speichern. Die in 3 gezeigte Operation kann es beispielsweise ermöglichen, dass die Paketverarbeitungslast der Paketschaltung 302 zwischen den in dem Paketverarbeitungssystem 300 enthaltenen Systemen 10 ausgeglichen wird. Die Verwendung der in 3 gezeigten Merkmale kann auch verhindern, dass das System 10A ein Lesen der betroffenen Daten durchführt, um das kohärente Updaten der Cache-Blöcke in dem System 10A zu ermöglichen. Durch Übertragen der Daten an das System 10B unter Verwendung nicht-kohärenten Schreibens kann eine effizientere Übermittlung stattfinden.
  • Es ist zu bemerken, dass bei Ausführungsformen des Paketverarbeitungssystems 300, die mehrere Systeme 10 enthalten, die kohärenten Befehle ein oder mehrere zusätzliche Systeme durchlaufen können (z.B. das in 3 gestrichelt dargestellte System 10C). Bei den zusätzlichen Systemen 10 (z.B. dem System 10C) können auch Pakete in den mit diesen zusätzlichen Systemen gekoppelten Speicher geschrieben werden.
  • 4 ist ein Beispiel des Paketverarbeitungssystems 300, bei dem die Paket-Merkmale des Systems 10 verwendet werden, um ein Paket von einem mit einem System 10 gekoppelten Speicher zu einer Paketschaltung 302 zu übertragen, die mit einem anderen System 10 gekoppelt ist. Bei dem Beispiel der 4 ist ein Paket P2 in dem Speicher 24B (z.B. in einem Descriptor innerhalb eines Descriptor-Rings, der als Ausgangsschlange der Paket-Direkt-Speicherzugriffsschaltung 16 in dem System 10B verwendet wird) gespeichert. Die Paket-Direkt-Speicherzugriffsschaltung 16 kann feststellen, dass das Paket P2 zur Übertragung bereit ist (z.B. dadurch, dass der Descriptor, der das Paket speichert, durch Software oder einen sonstigen programmierbaren Mechanismus an die Steuerung der Paket-Direkt-Speicherzugriffsschaltung 16 zurückgegeben wird). Die Paket-Direkt-Speicherzugriffsschaltung 16 in dem System 10B erzeugt eine oder mehrere Lesetransaktionen auf der Verbindung 22, um das Paket aus dem Speicher 24B auszulesen. Die Speichersteuerung 14 in dem System 10B kann in diesem Beispiel die Lesedaten für jede Transaktion auf der Verbindung 22 zur Verfügung stellen. Da jedoch die Lesetransaktion bei dieser Ausführungsform kohärent ist, können die Lesedaten von jeder kohärenten Einrichtung 40 in dem System 10B ausgegeben werden. Wenn die Lesetransaktion im globalen Sinn kohärent ist (d.h. zwischenknoten-kohärent), können die Speicherbrücken 32 in den Systemen in die Lesetransaktionen involviert werden, und die Lesedaten können von überall her in dem Paketverarbeitungssystem 300 zugeführt werden.
  • Die Paket-Direkt-Speicherzugriffsschaltung 16 in dem System 10B kann das Paket P2 zu der Tx-Schaltung 28A in dem System 10B zur Weiterleitung übertragen. Bei verschiedenen Ausführungsformen können Ausgangsschlangen der Paket-Direkt-Speicherzugriffsschaltung 16 auf jede gewünschte Tx-Schaltung 28A (und virtuellen Kanal in dieser Tx-Schaltung 28A) auf jede gewünschte Art und Weise gemappt werden (z.B. kann ein Konfigurationsregister Ausgangsschlangen auf Tx-Schaltungen mappen, oder das Mappen kann für jedes Paket in Descriptoren gespeichert werden, etc.). Die Tx-Schaltung 28A überträgt das Paket P2 auf der Schnittstelle 308 zu dem System 10A (insbesondere zu der Rx-Schaltung 28B in dem System 10A). Bei einer Ausführungsform kann das Paket P2 als einer oder mehrere PoHT-Befehle auf der Schnittstelle 308 übertragen werden. Bei einer anderen Ausführungsform kann die Schnittstelle 308, wenn erwünscht, eine SPI-4-Schnittstelle sein, wenn in dem Paketverarbeitungssystem 300 keine Zwischenknoten-Kohärenz verwendet wird.
  • Die Rx-Schaltung 26B in dem System 10A kann ein oder mehrere Paketattribute des P2-Pakets verwenden, um zu bestimmen, dass das Paket zu der Tx-Schaltung 28A in dem System 10A zu übertragen ist. Die Tx-Schaltung 28A in dem System 10A kann dann das Paket P2 auf der Schnittstelle 306 zu der Paketschaltung 302 übertragen.
  • Die Paket-Merkmale des Systems 10 werden somit in dem Beispiel der 4 verwendet, um es der Paket-Direkt-Speicherzugriffsschaltung 16 in dem System 10B zu ermöglichen, als ferne Direkt-Speicherzugriffs-Vorrichtung für Direkt-Speicherzugriffs-Paket-Daten zu der Paketschaltung 302 zu dienen. Daher kann eine Paket-Direkt-Speicherzugriffsschaltung 16 in der Nähe der Prozessoren 12A12N, die Pakete erzeugen (oder empfangene Pakete verarbeiten und bestimmen, dass die Pakete weiterzuleiten sind) dazu verwendet werden, Pakete zu jeder Paketschaltung innerhalb des Paketverarbeitungssystems 300 oder zu jeder Paketschaltung, die mit dem Paketverarbeitungssystem 300 gekoppelt ist, zu übertragen.
  • Es wird angemerkt, dass bei Ausführungsformen des Paketverarbeitungssystems 300, die mehrere Systeme 10 aufweisen, das Paket ein oder mehrere zusätzliche Systeme (z.B. das gestrichelt in 4 dargestellte System 10C) durchlaufen kann.
  • Bei den zusätzlichen Systemen 10 (z.B. dem System 10C) können Pakete auch zu diesen zusätzlichen Systemen geroutet werden.
  • 5 ist ein Beispiel des Paketverarbeitungssystems 300, bei dem die Paket-Merkmale des Systems 10 verwendet werden, um empfangene Pakete in jedem der Speicher 24A24B zu speichern. Bei dem Beispiel der 5 werden die Pakete P1 und P2 durch die Paketschaltung 302 auf der Schnittstelle 306 zu der Rx-Schaltung 26A in dem System 10A übertragen. Auf der Grundlage eines oder mehrerer Paketattribute des Pakets P1 bestimmt die Rx-Schaltung 26A, dass das Paket P1 zu der Paket-Direkt-Speicherzugriffsschaltung 16 in dem System 10A zu übertragen ist. Auf der Grundlage eines oder mehrerer Paketattribute des Pakets P2 bestimmt die Rx-Schaltung 26A, dass das Paket P2 zu der Tx-Schaltung 26B zu übertragen ist.
  • Die Paket-Direkt-Speicherzugriffsschaltung 16 in dem System 10A empfängt das Paket P1 und erzeugt eine oder mehrere Schreibtransaktionen auf der Verbindung 22 in dem System 10A. In diesem Beispiel ist die Paket-Direkt-Speicherzugriffsschaltung 16 mit einer lokalen Adresse A1 für das Paket P1 programmiert (einer Adresse, die eine Speicherstelle in dem Speicher 24A identifiziert). Die Speichersteuerung 14 empfängt die Schreibtransaktionen und updatet den Speicher 24A. Außerdem kann die Speicherbrücke 32 in dem System 10A (in 5 nicht gezeigt) alle fernen Kopien der Cache-Blöcke, die durch die Schreibtransaktionen upgedatet wurden, ungültig machen (wenn die Adresse A1 eine zwischenknoten-kohärente Adresse ist).
  • Die Tx-Schaltung 28B in dem System 10A überträgt das Paket P2 auf der Schnittstelle 308 zu der Rx-Schaltung 26A in dem System 10B. Die Rx-Schaltung 26A in dem System 10B überträgt das Paket P2 im Ansprechen auf ein oder mehrere Paketattribute des Pakets P2 an die Paket-Direkt-Speicherzugriffsschaltung 16 in dem System 10B. Ähnlich zu der Paket-Direkt-Speicherzugriffsschaltung 16 in dem System 10A erzeugt die Paket-Direkt-Speicherzugriffsschaltung 16 in dem System 10B eine oder mehrere Schreibtransaktionen auf der Verbindung 22 in dem System 10B. Die Speichersteuerung 14 in dem System 10B empfängt die Schreibtransaktionen und updatet den Speicher 24B mit dem Paket P2.
  • Die in 5 gezeigte Operation ist ein weiterer Mechanismus, der verwendet werden kann, um die Paketverarbeitungslast der Paketschaltung 302 zwischen den Systemen 10 in dem Paketverarbeitungssystem 300 auszugleichen. In diesem Beispiel können die Eingangsschlangen der Paket-Direkt-Speicherzugriffsschaltung 16 in den Systemen 10A und 10B als das Zweifache der Anzahl der Eingangsschlangen angesehen werden, die für Pakete von der Paketschaltung 302 zur Verfügung stehen. Beispielsweise können, wenn jede Paket-Direkt-Speicherzugriffsschaltung 16 bis zu 32 Eingangsschlangen unterstützt, bis zu 64 Eingangsschlangen für Pakete von der Paketschaltung 302 verfügbar sein. Wenn zusätzliche Systeme 10 in dem Paketverarbeitungssystem 300 vorhanden sind, können noch mehr Eingangsschlangen zur Verfügung gestellt werden.
  • Es wird angemerkt, dass die ferne direkte Speicherzugriffsoperation der 3 in Kombination mit der Operation der 5 implementiert werden kann. Das heißt, einige Pakete können von einer Paket-Direkt-Speicherzugriffsschaltung 16 in dem lokalen Speicher in dem System 10 gespeichert werden, das diese Paket-Direkt-Speicherzugriffsschaltung 16 enthält, andere Pakete können durch die Speicherbrücken 32 in einem oder mehreren Systemen 10, die das System 10 mit dieser Paket-Direkt-Speicherzugriffsschaltung 16 enthalten, durch direkten Speicherzugriff zu einem fernen Speicher übertragen werden, und wieder andere Pakete können zwischen Systemen 10 durch die Rx-Schaltungen 26A26C und die Tx-Schaltungen 28A28C in den Systemen 10 geroutet werden.
  • Es wird angemerkt, dass bei Ausführungsformen des Paketverarbeitungssystems 300, das mehrere Systeme 10 enthält, das Paket P2 ein oder mehrere zusätzliche Systeme durchlaufen kann (z.B. das in 5 gestrichelt dargestellte System 10C). Bei den zusätzlichen Systemen 10 (z.B. dem System 10C) können auch zu diesen zusätzlichen Systemen Pakete geroutet werden.
  • 5a ist ein Beispiel des Paketverarbeitungssystems 300, bei dem die kohärenten Merkmale der Systeme 10 verwendet werden, um kohärentes gemeinsames Verwenden eines oder mehrerer Cache-Blöcke zwischen den Systemen 10 zu ermöglichen. Beispielsweise kann das System 10B ein Paket von dem System 10A erhalten haben (ähnlich dem Paket P2 in 5) und kann auf eine gemeinsam verwendete Datenstruktur, die zur Verarbeitung des Pakets verwendet wird, zugreifen. Die gemeinsam verwendete Datenstruktur kann beispielsweise eine Routingtabellen-Information sein, oder eine andere Paketdatenstruktur. Alternativ kann bei einem anderen Beispiel das Paket P2 ein iSCSI-Paket sein, und die gemeinsam verwendete Daten struktur kann ein Disk-Cache sein, auf das im Ansprechen auf den iSCSI-Befehl zugegriffen wird. Somit können Pakete unter den Systemen 10 verteilt werden (z.B. zum Ausgleich der Last), und die zur Verarbeitung der Pakete verwendeten Datenstrukturen können kohärent von den Systemen 10 gemeinsam benutzt werden. Die Datenstrukturen können in jedem Speicher, der mit einem System 10 gekoppelt ist, gespeichert werden, und auf sie kann kohärent von jedem anderen System 10 zugegriffen werden.
  • In dem Beispiel der 5a kann ein Prozessor 12A in dem System 10B ein Paket verarbeiten und eine kohärente Lesetransaktion (RdShd in 5a) erzeugen, um ein Adresse A3 zu lesen. Die Adresse A3 kann eine Speicherstelle in dem Speicher 24A identifizieren. Die Speicherbrücke 32 in dem System 10B kann die kohärente Lesetransaktion ermitteln und kann einen entsprechenden kohärenten gemeinsam verwendeten Lesebefehl (cRdShd) erzeugen. Die Speicherbrücke 32 kann den cRdShd-Befehl zu der Tx-Schaltung 28A in dem System 10B übertragen, die den Befehl auf der Schnittstelle 308 (in 5a als zwei unidirektionale Links gezeigt) überträgt. Die Rx-Schaltung 26B in dem System 10A empfängt den cRdShd-Befehl und routet den Befehl zu der Speicherbrücke 32 in dem System 10A. Die Speicherbrücke 32 in dem System 10A erzeugt eine RdShd-Transaktion auf der Verbindung 22 in dem System 10A.
  • Die Speichersteuerung 14 in dem System 10A empfängt die RdShd-Transaktion und versorgt die Speicherbrücke 32 mit entsprechenden Lesedaten (Rd_Data(A3) in 5a). Alternativ kann, da die RdShd-Transaktion kohärent ist, eine kohärente Einrichtung in dem System 10A die Lesedaten liefern, wenn die kohärente Einrichtung z.B. eine modifizierte Kopie der Daten hat. Zusätzlich kann die Speicherbrücke 32 Probes zu anderen Systemen 10 erzeugen, wenn eine ferne Cache-Kopie der Daten existiert (in 5a nicht gezeigt). Eines der anderen Systeme 10 kann die Daten an das System 10A im Ansprechen auf die Probe zurückgeben, wenn dieses System 10 modifizierte Daten hat. Daher kann ein fernes System die Daten für die RdShd-Transaktion liefern. Auf jeden Fall können die Daten kohärent bereitgestellt werden.
  • Die Speicherbrücke 32 in dem System 10A erzeugt einen kohärenten Füll (CFill)-Befehl, um die Lesedaten an das System 10B zurück zu übertragen. Die Speicherbrücke 32 überträgt den CFill-Befehl zu der Tx-Schaltung 28B in dem System 10A, die den CFill-Befehl über die Schnittstelle 308 zu der Rx-Schaltung 26A in dem System 10B überträgt. Die Rx-Schaltung 26A in dem System 10B liefert den CFill-Befehl an die Speicherbrücke 32 in dem System 10B, die Lesedaten (Rd_Data) auf der Verbindung 22 an den Prozessor 12A in dem System 10B liefert.
  • Es wird angemerkt, dass bei Ausführungsformen des Paketverarbeitungssystems 300, die mehrere Systeme 10 aufweisen, der cRdShd-Befehl ein oder mehrere zusätzliche Systeme (in 5a nicht gezeigt) durchlaufen kann. Der CFill-Befehl kann ebenfalls ein oder mehrere zusätzliche Systeme durchlaufen und kann bei einigen Ausführungsformen einen anderen Weg durch das System nehmen als der cRdShd-Befehl.
  • 6 ist ein Beispiel des Paketverarbeitungssystems 300, bei dem die nichtkohärenten Merkmale der Systeme 10 verwendet werden, um es einem Prozessor 12A in dem System 10A zu ermöglichen, ein nicht-kohärentes Schreiben zu einer I/O-Schaltung 304 zu übertragen. In dem Beispiel der 6 überträgt der Prozessor 12A eine Schreibtransaktion auf der Verbindung 22. Die Schreibtransaktion kann zu einer Adresse „A" gehen, die auf die I/O-Schaltung 304 gemappt ist, oder sie kann ein Transaktionstyp sein, der anzeigt, dass die Transaktion zu einer I/O-Schaltung geht. Die Speicherbrücke 32 in dem System 10A ermittelt das nicht-kohärente Schreiben und erzeugt einen nicht-kohärenten Befehl (NC WR(A) in 6). Die Speicherbrücke 32 bestimmt (z.B. über ein programmierbares Adress-Map oder andere programmierbare Mechanismen), dass der nicht-kohärente Befehl zu der Tx-Schaltung 28B zu übertragen ist.
  • Die Tx-Schaltung 28B überträgt den nicht-kohärenten Befehl auf der Schnittstelle 308 (z.B. als Standard HT-Befehl). Die Rx-Schaltung 28A in dem System 10B empfängt das nicht-kohärente Schreiben und bestimmt, dass das nicht-kohärente Schreiben zu der Tx-Schaltung 28B in dem System 10B zu übertragen ist (beispielsweise gemäß Standard HT-Routing-Mechanismen). Die Tx-Schaltung 28B überträgt den nicht-kohärenten Befehl auf der Schnittstelle 310 zu der I/O-Schaltung 304.
  • Die Operation nach 6 kann es jedem beliebigen Prozessor in jedem beliebigen System 10 innerhalb des Paketverarbeitungssystems 300 ermöglichen, mit jeder beliebigen I/O-Schaltung 308, die mit jedem beliebigen System 10 verbunden ist, zu kommunizieren. Die Lese-Operation kann ähnlich der in 6 gezeigten sein, wobei Daten entlang desselben Pfads, den der Lese-Befehl nimmt, zurückgegeben werden (oder entlang eines anderen Pfads, wenn zusätzliche Systeme 10 vorhanden sind).
  • Bei einigen Ausführungsformen können die Systeme 10 andere I/O-Schnittstellen aufweisen (z.B. PCI, USB, etc.), die über eine oder mehrere I/O-Schnittstellenschaltungen, die mit der Verbindung 22 eines Systems 10 gekoppelt sind, oder durch eine Brücke zu der Verbindung 22 erreicht werden können. Bei derartigen Systemen kann nicht-kohärentes Lesen und Schreiben von einem Prozessor in einem beliebigen System 10 zu einem System 10 geroutet werden, das über eine der I/O-Schnittstellen mit einer gewünschten I/O-Schaltung gekoppelt ist, und dieses System 10 kann den nicht-kohärenten Befehl zu der Speicherbrücke 32 in diesem System 10 routen. Die Speicherbrücke 32 kann eine Schreibtransaktion auf der Verbindung 22 erzeugen, und die I/O-Schaltung (oder Brücke) kann die Schreibtransaktion zum Routen an die erwünschte I/O-Schaltung empfangen.
  • Es wird angemerkt, dass bei Ausführungsformen des Paketverarbeitungssystems 300, die mehrere Systeme 10 aufweisen, der nicht-kohärente Befehl ein oder mehrere zusätzliche Systeme (z.B. das in 6 gestrichelt dargestellte System 10C) durchlaufen kann. Bei den zusätzlichen Systemen 10 (z.B. dem System 10C) können auch zu diesen zusätzlichen Systemen nicht-kohärente Befehle geroutet werden.
  • 36 zeigen verschiedene Einzelbeispiele der Verwendung unterschiedlicher Verkehrstypen, die zwischen den Systemen 10 unterstützt werden. Im allgemeinen können die Beispiele der 36 in unterschiedlichen Variationen gleichzeitig verwendet werden, wenn die Schnittstelle 308 (oder Schnittstellen zwischen jedem System 10, wenn zusätzliche Systeme 10 vorhanden sind) die Mischung aus kohärentem, Paket- und nicht-kohärentem Verkehr, wie in 2 gezeigt, unterstützt.
  • Virtuelle Paketkanäle
  • 7 stellt ein Blockdiagramm dar, das eine Ausführungsform virtueller Paketkanäle in dem System 10 zeigt. Bei der dargestellten Ausführungsform sind die Rx-Schaltungen 26A26C und die Tx-Schaltungen 28A28C gezeigt. Außerdem weist die dargestellte Paket-Direkt-Speicherzugriffsschaltung 16 eine Eingangs-Paket-Direkt-Speicherzugriffsschaltung (PDI) 320 und eine Ausgangs-Paket-Direkt-Speicherzugriffsschaltung (PDO) 322 auf. Die PDI 320 ist so gekoppelt, dass sie Schreibtransaktionen auf der Verbindung 22 überträgt, um empfangene Pakete in den Speicher zu schreiben. Die PDO 322 ist so gekoppelt, dass sie Lesetransaktionen auf der Verbindung überträgt, und die Lesedaten empfängt, die Pakete enthalten, die von dem System 10 zu übertragen sind.
  • Jede Rx-Schaltung 26A26C unterstützt einen Satz virtueller Eingangskanäle (IVCs), die durch die Schnittstelle definiert werden, von der die Rx-Schaltung Paketdaten empfängt. Beispielsweise können sowohl die SPI-4-Schnittstelle als auch die HT-Schnittstelle 16 virtuelle Kanäle in der Hardware unterstützen (obwohl in der SPI-4-Schnittstelle durch Software mehr verwendet werden können, weil ein 8-Bit virtueller Kanalwert unterstützt wird). Somit unterstützt jede Rx-Schaltung 26A26C 16 IVCs (in 7 mit 0–15 benannt). Ähnlich unterstützt jede Tx-Schaltung 28A28C 16 virtuelle Ausgangskanäle (OVCs), die in 7 mit 0–15 benannt sind. Andere Ausführungsformen können mehr oder weniger IVCs und OVCs verwenden, je nach den von diesen Ausführungsformen unterstützten Schnittstellen. Die PDI 320 weist einen logischen Satz Eingangsschlangen auf (z.B. 32 in der gezeigten Ausführungsform, bezeichnet mit 0–31, obwohl bei anderen Ausführungsformen mehr oder weniger Eingangsschlangen vorhanden sein können). Die PDO 322 weist einen logischen Satz Ausgangsschlangen auf (z.B. 32 in der gezeigten Ausführungsform, bezeichnet mit 0–31, obwohl bei anderen Ausführungsformen mehr oder weniger Ausgangsschlangen vorhanden sein können).
  • Jede Rx-Schaltung 26A26C weist bei der gezeigten Ausführungsform eine Hash&Route (H&R)-Schaltung 74A74C auf, die Pakete von den IVCs auf einen Switch Virtual Channel (SVC) mappt. Der SVC wird als interner virtueller Kanal für das System 10 verwendet, insbesondere zur Übertragung von Paketen durch den Schalter 18 zu der Paket-Direkt-Speicherzugriffsschaltung 16 oder zu den Tx-Schaltungen 28A28C. Auf andere Weise gesehen werden Anfragen zur Übertragung von Paketdaten durch den Schalter 18 auf der Grundlage des SVCs des Pakets gestellt, der sowohl das Ziel des Pakets (z.B. die PDO 320 oder eine der Tx-Schaltungen 28A28C) als auch den virtuellen Kanal an dem Ziel definiert. Der SVC kann vorliegend auch als Ziel und als der virtuelle Kanal an dem Ziel definiert werden.
  • Bei der gezeigten Ausführungsform können die H&R-Schaltungen 74A74C die IVCs auf einen der 16 PDI VCs (in 7 mit 0–15 benannt, wobei durchgehende Linien von den H&R-Schaltungen 74A74C ausgehen) mappen. Diese PDI VCs kön nen des weiteren auf Eingangsschlangen in der PDI 320 gemappt werden, z.B. unter Verwendung eines Registers, an das die H&R-Schaltungen 74A74C gekoppelt sind (siehe 8 unten). Das heißt, VCs an der PDI 320 können direkt Eingangsschlangen entsprechen, oder Eingangsschlangen können jeweils ein VC in der PDI 320 sein. Bei der gezeigten Ausführungsform werden PDI VCs in Achterblöcken auf Eingangsschlangen gemappt (z.B. ist PDI VC0 entweder Eingangsschlange 0, 8, 16 oder 24; PDI VC1 ist entweder Eingangsschlange 1, 9, 17 oder 25, etc.). Bei anderen Ausführungsformen kann jeder PDI VC einzeln auf eine Eingangsschlange gemappt werden, oder andere Blockgrößen von Eingangsschlangen können auf PDI VCs gemappt werden. Bei einer anderen Ausführungsform können die H&R-Schaltungen 74A74C IVCs direkt auf PDI Eingangsschlangen mappen (z.B. ohne den Zwischenschritt von PDI VCs). Außerdem können die H&R-Schaltungen 74A74C Pakete von einem IVC auf einen OVC in einer der Tx-Schaltungen 28A28C mappen, was für den H&R-Block 74A mit gestrichelten Linien durch den SVCs-Block zu den Tx-Schaltungen 28A28C dargestellt ist.
  • Die H&R-Schaltungen 74A74C können verwendet werden, um Pakete von demselben IVC auf verschiedene SVCs aufzuspalten (z.B. verschiedene Eingangsschlangen in der PDI und/oder den OVCs in den Tx-Schaltungen 28A28C). Somit können die H&R-Schaltungen 74A74C zur Verarbeitung getrennter Pakete Softwareflexibilität zur Verfügung stellen, gegenüber Paketen, die auf der Grundlage verschiedener Paketattribute (z.B. Headerwerten oder IVCs) die Tx-Schaltungen 28A28C zu durchlaufen haben, oder sie können das Aufteilen von Paketen in verschiedene Eingangsschlangen in der PDI 320 (z.B. für verschiedene Arten der Verarbeitung) auf der Grundlage unterschiedlicher Paketattribute bereitstellen. Die H&R-Schaltungen 74A74C können auch so programmiert werden, dass sie IVCs auf SVC mappen, ohne zusätzliche Paketattribute zu verwenden, oder eine Kombination solcher Mappings und anderer Mappings unter Verwendung zusätzlicher Paketattribute, je nach Bedarf. Bei anderen Ausführungsformen kann es sein, dass die Rx-Schaltungen 26A26B keine H&R-Schaltungen aufweisen und stattdessen ein programmierbares oder festgelegtes Mappen jedes IVC auf einen bestimmten SVC (die Tx-Schaltung 28A28C und den OVC in dieser Schaltung, oder die PDI 320 und eine Eingangsschlange in der PDI 320) verwenden. Es wird angemerkt, dass Pakete, die von einer Rx-Schaltung 26A26C direkt zu einer Tx-Schaltung 28A28C geroutet werden, an der Paket-Direkt-Speicherzugriffsschaltung 16, dem Speicher 24 und der Verarbeitung durch die Prozessoren 12A12N vorbeilaufen.
  • Die PDO 322 Ausgangsschlangen werden ebenfalls auf verschiedene Tx-Schaltungen 28A28C und auf OVCs in diesen Tx-Schaltungen 28A28C gemappt. Bei der gezeigten Ausführungsform werden Ausgangsschlangen in Achterblöcken auf Tx-Schaltungen und OVCs gemappt, ähnlich dem Mappen von IVCs auf Eingangsschlangen. Andere Ausführungsformen können Ausgangsschlangen einzeln oder in anderen Blockgrößen mappen, je nach Bedarf. Bei einer Ausführungsform weist die PDO 322 (ein) Konfigurationsregister auf, das/die mit dem Mappen jedes Blocks von 8 Ausgangsschlangen auf eine entsprechende Gruppe von SVCs (die die Tx-Schaltung 28A28C und den OVC in dieser Tx-Schaltung identifizieren) programmiert ist/sind. Andere Ausführungsformen können ausgefeiltere Mapping-Mechanismen, ähnlich H&R-Schaltungen, aufweisen, um Pakete auf der Grundlage von Paketattributen zusätzlich zu Ausgangsschlangen zu mappen, wenn dies gewünscht wird.
  • 7 zeigt, über die durchgezogenen Pfeile zwischen den H&R-Schaltungen 74A74C und der PDI 320, ein beispielhaftes Mappen von den PDI VCs der H&R-Schaltungen 74A74C auf die Eingangsschlangen der PDI 320. Das beispielhafte Mappen ist nur ein Beispiel der Mappings, die wie durch Software in die Rx-Schaltungen 26A-26C programmiert verwendet werden können. In dem Beispiel werden die PDI VCs 0–7 von der H&R-Schaltung 74A auf die Eingangsschlangen 0–7 gemappt; die PDI VCs 0–7 von der H&R-Schaltung 74B werden auf die Eingangsschlangen 8–15 gemappt; die PDI VCs 0–7 von der H&R-Schaltung 74C werden auf die Eingangsschlangen 16–23 gemappt; und die PDI VCs 8–15 von jeder der H&R Schaltungen 74A74C werden zu den Eingangsschlangen 2431 zusammengeführt. Wenn die PDI VCs von unterschiedlichen H&R-Schaltungen 74A74C durch Mappen zusammengeführt werden, kann der Schalter 18 die Zusammenführung auf Paketgrenzen durchführen. Das heißt, wenn einer gegebenen Rx-Schaltung 26A26C bewilligt worden ist, ein Paket zu einer Eingangsschlange zu übertragen, die unter den Rx-Schaltungen 26A26C zusammengeführt ist, verhindert der Schalter, dass eine weitere Rx-Schaltung 26A26C auf dieser Eingangsschlange zugelassen wird, bis die zugelassene Rx-Schaltung 26A26C eine Paketgrenze erreicht hat. Jede beliebige Kombination von PDI VCs von verschiedenen Rx-Schaltungen 26A26C kann je nach Bedarf bei unterschiedlichen Mappings in Eingangsschlangen zusammengeführt werden.
  • 7 zeigt, über die durchgezogenen Pfeile zwischen der PDO 322 und den Tx-Schaltungen 28A28C, auch ein beispielhaftes Mappen von Ausgangsschlangen auf Tx-Schaltungen und OVCs. Das beispielhafte Mappen ist nur ein Beispiel für Mappings die, durch Software programmiert, verwendet werden können. Bei dem gezeigten Mappen werden die Ausgangsschlangen 0–7 auf die OVCs 8–15 in der Tx-Schaltung 28C gemappt; die Ausgangsschlangen 8–15 werden auf die OVCs 0–7 in der Tx-Schaltung 28C gemappt; die Ausgangsschlangen 16–23 werden auf die OVCs 8–15 in der Tx-Schaltung 28B gemappt; und die Ausgangsschlangen 24–31 werden auf die OVCs 0–7 in der Tx-Schaltung 28A gemappt. Außerdem können die Rx-Schaltungen 26A26C IVCs auf OVCs mappen, und somit kann ein Zusammenführen von Paketen von Rx-Schaltungen 26A26C und Ausgangsschlangen auf einen OVC vorliegen. Wiederum kann der Schalter 18 dieses Zusammenführen auf Paketgrenzen durchführen.
  • Die Eingangsschlangen der PDI 320 und die Ausgangsschlangen der PDO 322 können logische Schlangen sein. Das heißt, die Schlangen können tatsächlich in dem Speicher 24 implementiert sein. Die PDI 320 und die PDO 322 können Puffer aufweisen, um die Paketdaten zu puffern, die zu und von dem Speicher 24 übertragen werden. Die Schlangen können auf jede beliebige Art und Weise implementiert werden. Bei einer bestimmten Ausführungsform ist jede Schlange als Descriptor-Ring implementiert, der Speicherpuffer identifiziert, um Paketdaten entsprechend einer gegebenen Eingangsschlange zu speichern. Bei anderen Ausführungsformen können die Schlangen auf jede gewünschte Art und Weise implementiert werden (z.B. benachbarte Speicherplätze, etc.).
  • Es wird angemerkt dass, obwohl die Rx-Schaltungen 26A26C und die Tx-Schaltungen 28A28C in Bezug auf 7 so beschrieben sind, dass sie verschiedene virtuelle Paketkanäle für Pakete unterstützen, diese Schaltungen auch kohärente virtuelle Kanäle für den kohärenten Verkehr und nicht-kohärente virtuelle Kanäle für den nicht-kohärenten Verkehr unterstützen. Die kohärenten virtuellen Kanäle können zu der Speicherbrücke 32 oder zu einer Tx-Schaltung 28A28C fließen, basierend auf einem Vergleich der Knotenzahl in dem Konfigurationsregister 38 und der Adresse des zu übertragenden kohärenten Befehls. Ähnlich können die nicht-kohärenten virtuellen Kanäle zu der Speicherbrücke 32 und den Tx-Schaltungen 28A28C fließen.
  • Rx-Schaltung
  • 8 zeigt ein detaillierteres Diagramm eines Teils einer Ausführungsform der Rx-Schaltung 26A. Andere Rx-Schaltungen 26B26C können ähnlich sein. Bei der Ausführungsform der 8 weist die Rx-Schaltung 26A einen Decoder 60 auf (der einen SPI-Decoder 62 und einen HT-Decoder 64 einschließlich eines PoHT BAR1-Registers 66 umfasst), eine Hash&Route (H&R)-Schaltung 74A, einen Rx-Puffer 68, eine Switch-Schnittstellenschaltung 70, und ein PDI_map Register 72. Der Decoder 60 ist so gekoppelt, dass er Eingangsdaten auf der Schnittstelle 30A empfängt, und er ist so gekoppelt, dass er einen virtuellen Eingangskanal (IVC) und die Daten zu der H&R-Schaltung 74A bereitstellt (wenn die Daten Paketdaten sind). Der Decoder 60 ist auch so gekoppelt, dass er die Daten zu dem Rx-Puffer 68 zum Speichern bereitstellt. Der H&R-Block 74A ist so konfiguriert, dass er einen Switch Virtual Channel (SVC) generiert sowie wahlweise einen Wert des nächsten Ziels (next_dest), die von dem Rx-Puffer 68 empfangen werden. Der Rx-Puffer 68 ist mit dem Schalter 18 (insbesondere dem Quelldatenpfad (Sdata in 8) des Schalters 18) und mit der Switch-Schnittstellenschaltung 70 gekoppelt. Die H&R-Schaltung 74A ist auch mit dem PDI_map Register 72 verbunden. Der IVC kann der virtuelle Kanal auf der Schnittstelle 30A sein, und der SVC gibt das Ziel (innerhalb des Systems 10) und den virtuellen Kanal an dem Ziel an.
  • Der Decoder 60 empfängt die Eingangsdaten von der Schnittstelle 30A und decodiert die Daten gemäß der SPI-Spezifikation (in dem SPI-Decoder 62) oder der HT-Spezifikation (in dem HT-Decoder 64). Einer der Decoder 62 und 64 ist aktiv, je nachdem, mit welcher Schnittstelle 30A die Rx-Schaltung 26A gekoppelt ist. Der aktive Decoder 62 oder 64 kann auf jede gewünschte Art und Weise ausgewählt werden. Die PoHT-Erweiterung auf die HT-Schnittstelle definiert einen Adressbereich (gespeichert in dem PoHT BAR1-Register 66), auf den HT Sized Write Befehle gerichtet werden können, um Paketdaten zu übertragen. Der IVC kann in dem Sequenz-ID-Feld des HT-Pakets gestützt werden, und die am wenigsten signifikanten Bits der Adresse können angeben, ob sich die Daten am Anfang des Pakets, in der Mitte des Pakets, oder am Ende des Pakets befinden, die Anzahl gültiger Bytes in dem letzten Doppelwort des HT-Pakets, sowie einen Fehlerzustand. Wenn ein HAT Sized Write decodiert wird und die Adresse in dem durch das PoHT BAR1-Register angegebenen Adressbereich liegt, ist das HT-Paket ein PoHT-Paket und die mit dem Sized Write übertragenen Daten sind Paketdaten.
  • Der HT-Decoder 64 kann auch kohärente Befehle und nicht-kohärente Befehle (z.B. Standard HT-Befehle) decodieren und den IVC für diese Befehle ausgeben. Der SVC kann angeben, dass das Ziel die Speicherbrücke 32 oder eine der Tx-Schaltungen 28A28C ist, und der virtuelle Kanal an der Speicherbrücke 32/Tx-Schaltung 28A28C kann derselbe sein wie der IVC.
  • Der Decoder 60 stellt den IVC des Pakets und die empfangenen Paketdaten für die H&R-Schaltung 74A bereit. Die H&R-Schaltung 74A kann Bytes der Paketdaten und/oder des IVC auswählen und einen entsprechenden SVC erzeugen. Obwohl die H&R-Schaltung 74A jede beliebige Hashing- und Mapping-Funktion implementieren kann, kann die H&R-Schaltung 74A bei einer Ausführungsform so sein, wie sie in 9 gezeigt und weiter unten beschrieben ist. Außerdem kann für HT-Schnittstellen von der H&R-Schaltung 74A ein next_dest ausgegeben werden. Der next_dest Wert gibt für eine Tx-Schaltung 28A28C auf einer HT-Schnittstelle an, welche Basisadresse aus einer Tabelle von Basisadressen für den Schreibbefehl, der das PoHT-Paket enthält, auszuwählen ist. Wenn der SVC angibt, dass die Paket-Direkt-Speicherzugriffsschaltung 16 das Ziel ist, kann die H&R-Schaltung zunächst einen virtuellen Kanal für die Eingangs-Paket-Direkt-Speicherzugriffsschaltung (PDI) (z.B. in einem Bereich von Null bis fünfzehn) festlegen und kann dann den PDI VC auf eine Eingangsschlange der Paket-Direkt-Speicherzugriffsschaltung (z.B. im Bereich von Null bis 32) unter Verwendung des in dem PDI_map Register 72 spezifizierten Mappings mappen.
  • Die von dem H&R-Block 74A ausgegebenen Daten und der SVC werden in dem Rx-Puffer 68 gespeichert. Der Rx-Puffer 68 kann Speicher für jeden IVC enthalten, der durch Programmierung den IVCs unter Verwendung von (nicht gezeigten) Konfigurationsregistern zugeteilt werden kann.
  • Die Switch Schnittstellenschaltung 70 kann die in dem Rx-Puffer 68 gespeicherten Pakete/Befehle abtasten und Anfragen für den Schalter 18 auf der Quellanfrage (Sreq.)-Schnittstelle erzeugen. Wenn der Schalter 18 die Anfrage bewilligt, gibt der Schalter 18 die Bewilligung auf der Quell-Bewilligungs (SGnt.)-Schnittstelle an.
  • Im Ansprechen auf eine Bewilligung kann die Switch Schnittstellenschaltung 70 veranlassen, dass der Rx-Puffer 68 die nächsten 16 Bytes des Pakets/Befehls gemäß dem bewilligten SVC überträgt. Der Rx-Puffer 68 kann den Speicher, aus dem die 16 Bytes ausgelesen worden sind, im Ansprechen auf die Übertragung der Daten durch den Schalter 18 freigeben. Es wird angemerkt, dass, obwohl 16 Bytes als Beispiel einer Übertragung durch den Schalter 18 verwendet worden sind, andere Ausführungsformen jede beliebige Größe für die Übertragen verwenden können.
  • 9 zeigt ein Blockdiagramm einer Ausführungsform der H&R-Schaltung 74A. H&R-Schaltungen in anderen Rx-Schaltungen 26B26C können ähnlich sein. Bei der Ausführungsform der 9 weist die H&R-Schaltung 74A eine Regeltabelle 100, eine Pfadtabelle 102, eine Routetabelle 104, eine Offset-Schaltung 106, eine Auswahllogikschaltung (Select Logic Circuit) 108, eine Vergleichslogikschaltung (Compare Logic Circuit) 110, eine Hash-Schaltung 112, eine Extract-Schaltung 114, eine Fold-Schaltung 116, einen Multiplexer (mux) 118, einen Addierer 120, einen Multiplexer (mux) 120 und einen Multiplexer (mux) 124 auf. Die Offset-Schaltung 106 ist so gekoppelt, dass sie Paketdaten empfängt; ihr Ausgang ist mit der Auswahllogikschaltung 108, der Hash-Schaltung 112 und der Extract-Schaltung 114 gekoppelt. Der IVC, der den Paketdaten entspricht, wird für die Auswahllogikschaltung 108, die Hash-Schaltung 112 und die Extract-Schaltung 114 zur Verfügung gestellt. Die Auswahllogikschaltung 108 ist mit der Regeltabelle 100 und mit der Vergleichslogikschaltung 110 gekoppelt, die ebenfalls mit der Regeltabelle 100 und so gekoppelt ist, dass sie der Pfadtabelle 102 ein Ergebnis zur Verfügung stellt. Die Pfadtabelle 102 ist mit den Multiplexern 118, 122 und 124, dem Addierer 120 und der Fold-Schaltung 116 gekoppelt. Der Multiplexer 124 ist mit der Routetabelle 104 und so gekoppelt, dass er den SVC und wahlweise den next_dest Ausgang der H&R-Schaltung 74A zur Verfügung stellt. Die Routetabelle 104 ist so gekoppelt, dass sie einen Index von dem Multiplexer 122 empfängt, der auch mit dem Addierer 120 gekoppelt ist. Der Addierer 120 ist mit dem Multiplexer 118 verbunden, der mit der Fold-Schaltung 116 und der Extract-Schaltung 114 gekoppelt ist. Die Fold-Schaltung 116 ist mit der Hash-Schaltung 112 verbunden.
  • Bei einer Ausführungsform kann die H&R-Schaltung 74A eine Reihe programmierbarer Regeln unterstützen. Jede Regel wählt Bytes aus den Daten (oder dem IVC) aus und vergleicht die ausgewählten Daten mit einem Operanden der Regel. Jede Regel kann auf Paketdaten ausgewertet werden, und die richtigen/falschen Ergebnisse jedes Vergleichs können einen aus einem Satz von Pfaden auswählen. Der Pfad kann ein SVC, ein Index für eine Routetabelle, die einen SVC ausgibt, sein, oder kann den Ausgang einer Hash-Funktion oder einer Extract-Funktion als Index für die Routetabelle auswählen (addiert zu einer Basisadresse, die ebenfalls Teil der Pfaddaten ist). Außerdem kann für HT-Schnittstellen next_dest ausgegeben werden.
  • Im allgemeinen können die Regeltabelle 100, die Pfadtabelle 102 und die Routetabelle 104 Speicher aufweisen, die durch Software programmiert werden können, um wie oben erläutert SVCs für Pakete zu erzeugen. Bei einer Implementierung können die Einträge der Regeltabelle 100, der Pfadtabelle 102 und der Routetabelle 104 in den Adressraum des Systems 10 als Konfigurationsregister gemappt werden, die durch Software ausgelesen und beschrieben werden können.
  • Jeder Eintrag der Regeltabelle 100 weist ein Offset und Auswahl-Feld auf, sowie ein Operanden- und Aktivierungsfeld. Das Offset Feld gibt den Offset eines Wortes (bei einer Ausführungsform 4 Bytes) in dem Paket an, das mit dem Operanden in dem Operanden-Feld zu vergleichen ist. Das Aktivierungs-Feld ist ein Bit-Vektor, der verwendet wird, um das ausgewählte Wort vor dem Vergleich auszublenden. Das Auswahl-Feld wählt entweder das durch den Offset bestimmte Wort oder den IVC zum Vergleichen aus. Die Auswahllogikschaltung 108 ist so gekoppelt, dass sie die Offset- und Auswahl-Felder jedes Eintrags empfängt, und ist so konfiguriert, dass sie die spezifizierten Daten von den Paketdaten oder dem IVC zum Vergleich auswählt. Die Auswahllogikschaltung 108 kann Daten unabhängig für jeden Eintrag auswählen und die Daten der Vergleichslogikschaltung 110 zur Verfügung stellen. Die Vergleichslogikschaltung 110 kann alle ausgewählten Daten (ausgeblendet durch das Aktivierungs-Feld des entsprechenden Regeltabellen-Eintrags) unabhängig mit dem Operanden aus dem entsprechenden Regeltabellen-Eintrag vergleichen. Die Ergebnisse des Vergleichs werden der Pfadtabelle 102 zur Verfügung gestellt. Die Ergebnisse können eine Angabe aufweisen, ob jeder Vergleich zu einem richtigen oder falschen Ergebnis geführt hat. Die Zahl der Einträge in der Regeltabelle 100 kann von Ausführungsform zu Ausführungsform variieren. Bei einer Implementierung kann es 16 Regeleinträge geben, die bis zu 16 programmierbare Regeln ermöglichen. Bei einer Ausführungsform stehen die in der Regeltabelle spezifizierten Offsets in Bezug zu einem programmierbaren Offset vom Beginn der Paketdaten. Die Offset-Schaltung 106 kann die Paketdaten um den programmierbaren Offset versetzen. Bei einer Ausführungsform kann der programmierbare Offset direkt sein (d.h. der programmierte Wert kann der Offset sein). Bei einer anderen Ausführungsform kann der programmierbare Offset indirekt sein (d.h. der programmierte Wert kann ein Offset-Feld innerhalb der Paketdaten identifizieren, das den Offset für ein gege benes Paket unterstützt). Bei einer weiteren Ausführungsform kann der programmierbare Offset so programmiert werden, dass er entweder direkt oder indirekt ist.
  • Die Pfadtabelle 102 kann einen Satz von Einträgen aufweisen, die jeweils ein Aktivierungs- und Testfeld, ein Pfaddatenfeld und ein Pfadtypfeld enthalten. Das Aktivierungs- und Testfeld wird verwendet, um zu programmieren, welche Ergebnisse der Vergleichslogikschaltung 110 verwendet werden, um zu bestimmen, ob der Pfadeintrag für dieses Paket verwendet wird (über Bits in dem Aktivierungsfeld, die jedem Ergebnis entsprechen), und der Testwert kann angeben, ob das entsprechende Ergebnis auf richtig oder falsch getestet ist. Wenn jedes aktivierte Ergebnis dasselbe testet wie der Testwert spezifiziert, wird der Pfadtabellen-Eintrag ausgewählt. Die Pfadtabelle 102 gibt die Pfaddaten- und Pfadtypfelder des ausgewählten Pfadtabellen-Eintrags aus. Das Pfadtypfeld gibt einen mehrerer Pfadtypen an, wobei die Multiplexer 118, 122 und 124 gesteuert werden und die Art der Pfaddaten angegeben wird. Bei einem direkten Pfadtypen werden der SVC und wahlweise next_dest in den Pfaddaten spezifiziert. Für den direkten Pfadtypen wählt der Multiplexer 124 die Pfaddaten durch den Multiplexer 124 aus. Ist der Pfadtyp nicht direkt, wird der Ausgang der Routetabelle 104 durch den Multiplexer 124 ausgewählt. Bei verschiedenen Ausführungsformen kann eine beliebige Anzahl von Pfadtabellen-Einträgen unterstützt werden, einschließlich einer Anzahl von Einträgen die unterschiedlich zu der Anzahl der Regeltabellen-Einträge ist. Bei einer Implementierung kann die Pfadtabelle 102 16 Einträge und einen 17. (Standard) Eintrag aufweisen, der ausgewählt wird, wenn keiner der 16 anderen Einträge mit dem Ergebnis der Vergleichslogikschaltung 110 übereinstimmt.
  • Die Routetabelle 104 weist mehrere Einträge auf, die jeweils einen SVC und einen next_dest Wert speichern. Die Routetabelle 104 empfängt einen Index, der, abhängig von dem Pfadtypfeld, auf mehrere mögliche Arten generiert wird. Wenn der Pfadtyp ein Indexpfadtyp ist, sind die Pfaddaten ein Index für die Routetabelle 104, und die Pfaddaten werden durch den Multiplexer 122 ausgewählt. Anderenfalls wird der Ausgang des Addierers 120 durch den Multiplexer 122 als Index für die Routetabelle 104 ausgewählt.
  • Bei den verbleibenden Pfadtypen können die Pfaddaten eine Basisadresse aufweisen, die (durch den Addierer 120) verwendet wird, um den Index der Routetabelle zu generieren. Bei einem Hash-Pfadtyp wird der Ausgang der Hash-Schaltung 112 (ein Hash-Wert) zu der Basisadresse addiert, um den Index zu generieren (und wird durch den Multiplexer 118 für den Addierer 120 ausgewählt). Die Hash-Schaltung 112 kann so programmiert werden, dass sie bis zu zehn Wörter aus den Paketdaten auswählt, die Wörter mit programmierbaren Aktivierungsvektoren ausblendet und sie hasht, um den Hash-Wert zu erzeugen. Bei einer Ausführungsform gibt es 512 Einträge in der Routetabelle 104. Bei einer solchen Ausführungsform kann die Hash-Funktion einen 8-Bit Hash-Wert erzeugen (der in dem Addierer 120 z.B. zu einer 9-Bit Basisadresse addiert werden kann). Außerdem können bei einigen Ausführungsformen die Pfaddaten eine Fold-Steuerung aufweisen, die den Hash-Wert zu einem kleineren Wert verringert (z.B., durch Programmierung, 7 Bits oder 6 Bits bei einer Ausführungsform), um den Anteil der Routetabelle 104 zu reduzieren, der über die Hash-Schaltung 112 ausgewählt werden kann. Bei einer Implementierung nimmt die Hash-Funktion bitweise mittels einer XOR-Operation die beiden oberen Bytes und die beiden unteren Bytes jedes Wortes, um zwei Bytes zu erzeugen, und nimmt dann mittels einer XOR-Operation benachbarte Sätze von zwei Bits, um ein Byte (8 Bits) zu erzeugen. Die aus jedem Wort resultierenden Bytes können bitweise einer XOR-Operation unterzogen werden, um den Hash-Wert zu erzeugen. Das optionale Folding kann Bits 7 und 5 des Hash-Werts einer XOR-Operation unterziehen (wobei die Bits 7 bis von am wichtigsten bis am wenigsten wichtig nummeriert werden), um Bit 5 des Fold, null Bit 7 zu erzeugen, und die verbleibenden Hash-Wert Bits unverändert bereitstellen, um bei einer Ausführungsform ein 7-Bit Fold zu erzeugen. Um ein 6-Bit Fold zu erzeugen, kann eine Implementierung Bits 7 und 5 des Hash-Werts einer XOR-Operation unterziehen, um Bit 5 des Fold zu erzeugen, Bits 6 und 4 des Hash-Werts einer XOR-Operation unterziehen, um Bit 4 des Fold, null Bits 7 und 6 zu erzeugen, und die verbleibenden Hash-Wert Bits unverändert bereitstellen, um ein 6-Bit Fold zu erzeugen. Wenn Folding nicht ausgewählt wird, stellt die Fold-Schaltung 116 den unveränderten Hash-Wert als Ausgang zur Verfügung. Bei anderen Ausführungsformen können zwei oder mehrere Hash-Funktionen unabhängig in der Hash-Schaltung 112 programmiert und unter Verwendung des Pfadtypfelds ausgewählt werden.
  • Die Extract-Schaltung 114 kann so programmiert werden, dass sie zwei Halbbytes (4 Bits) aus den Paketdaten auswählt, um die 8-Bit Eingabe in den Addierer 120 zu erzeugen. Die zwei Halbbytes können unabhängig programmiert werden und brauchen somit in dem Paket nicht aufeinander zu folgen. Bei anderen Ausführungsformen können zwei oder mehr Extract-Funktionen in die Extract-Schaltung 114 programmiert und unter Verwendung des Pfadtypfelds ausgewählt werden. Bei anderen Ausführungsformen kann das Extract-Ergebnis auf ähnliche Weise einer Fold-Operation unterzogen werden wie der Hash-Wert.
  • Obwohl die Ausführungsform der 9 eine Vielzahl von Mechanismen zur Erzeugung eines SVCs bereitstellt, können andere Ausführungsformen eine beliebige Teilmenge der direkten SVC-Erzeugung, des Indexes von der Pfadtabelle zu der Routetabelle, des Hash-Mechanismus oder des Extract-Mechanismus zur Verfügung stellen. Jede beliebige Größe von Routetabelle kann unterstützt werden, und somit können der Hash-Wert und die Größe des Extract-Ergebnisses variiert werden.
  • 10 ist ein Automaten-Diagramm, das die Operation einer Ausführungsform des Schalters in Bezug auf einen SVC (ein Ziel und einen virtuellen Kanal an diesem Ziel) zeigt. Ein ähnlicher Automat kann für jeden SVC angewendet werden.
  • Bei dem Paket, das sich nicht im Bearbeitungszustand befindet 80, kann der Schalter 18 jede beliebige Quelle auswählen, um Daten auf dem SVC zu übertragen. In dem Zustand 80 kann der Schalter 18 jeden beliebigen Auswahlmechanismus verwenden, um unter Anfrageeinrichtungen für den SVC auszuwählen. Bei einer Ausführungsform verwendet der Schalter 18 ein Ring-Auswahlschema für die Eingangsschlangen der Paket-Direkt-Speicherzugriffsschaltung 16 und die Eingangspuffer (auf der Grundlage eines virtuellen Kanals) der Speicherbrücke 32, und verwendet ein programmierbares gewichtetes „Round Robin" mit Prioritätsschema für die Tx-Schaltungen 28A28C. Bei dem programmierbaren gewichteten „Round Robin" mit Prioritätsschema kann jede Quelle mit hoher Priorität oder mit niedriger Priorität programmiert und gewichtet werden. Bei einer Implementierung weist der Schalter Defizitzähler auf, die angeben, wie viele Übertragungen jede Quelle (auf der Grundlage ihrer Gewichtung) nicht auf den SVC übertragen konnte, und er wählt die anfragende Quelle mit dem größten Defizit aus.
  • Wenn eine Quelle ausgewählt worden ist, geht der Schalter 18 auf das Paket im Bearbeitungszustand 82 über. In diesem Zustand erfasst der Schalter 18 die Quelle, die für diesen SVC bewilligt worden ist, und blendet Anfragen von anderen Quellen aus. Somit ist die Quelle, die vorher bewilligt worden ist, die einzige Quelle, die für den SVC bewilligt wird. Der Schalter kann andere Quellen für andere SVCs, die demselben Ziel entsprechen, bewilligen (z.B. andere Eingangsschlangen in der Paket-Direkt-Speicherzugriffsschaltung 16, oder virtuelle Kanalpuffer in der Speicherbrücke 32, oder andere virtuelle Ausgangskanäle (OVCs) in den Tx-Schaltungen 28A28C). Der Schalter 18 bleibt in diesem Zustand, bis eine Anfrage für die Quelle bewilligt ist und die EOP-Anzeige mit der Anfrage das Ende des Pakets anzeigt. Der Schalter 18 geht sodann in den Zustand 80 über und wählt die nächste Quelle aus.
  • Paket-Direkt-Speicherzugriffsschaltung, Descriptoren
  • Ein beispielhafter Descriptor-Ring 130 für die Paket-Direkt-Speicherzugriffsschaltung 16 ist für eine Ausführungsform in 11 zusammen mit (einem) entsprechenden Descriptor-Steuerregister oder -registern 136 gezeigt. Wie oben erwähnt, kann ein Descriptor-Ring 130 eine Eingangsschlange (oder eine Ausgangsschlange) der Paket-Direkt-Speicherzugriffsschaltung 16 aufweisen. Descriptor-Ringe können sowohl für die Eingangs- als auch für die Ausgangsschlangen ähnlich sein. Bei der Ausführungsform der 11 werden die Descriptoren in einem Speichergebiet gespeichert, das durch die Basisadresse („Basis"-Feld der Register 136 in 11) und die Größe („Größe"-Feld der Register 136 in 11) definiert ist. Die Basisadresse zeigt auf den ersten Descriptor (Descriptor 0) in dem Speicher, und die Größe ist ein Offset zum Ende des letzten Descriptors (Descriptor N-1). Die Descriptoren können in einem Ring verwendet werden. Das heißt, Descriptoren können in aufeinanderfolgender Reihenfolge verwendet werden, beginnend mit dem Descriptor 0 und fortlaufend bis zu dem Descriptor N-1. Wenn der letzte Descriptor N-1 verwendet worden ist, ist der nächste zu verwendende Descriptor der Descriptor 0 (in 11 durch die gestrichelte Linie von dem Descriptor N-1 zu dem Descriptor 0 angezeigt).
  • Jeder Descriptor zeigt auf einen Speicherpuffer (das heißt, der Descriptor enthält die Adresse des Speicherpuffers) und kann auch verschiedene Attribute des Speicherpuffers aufweisen. Beispielsweise zeigt in 11 der Descriptor 132A auf den Speicherpuffer 134A, und der Descriptor 132B zeigt auf den Speicherpuffer 134B.
  • Die Descriptoren werden der Paket-Direkt-Speicherzugriffsschaltung 16 durch Software zur Verfügung gestellt. Wenn die Paket-Direkt-Speicherzugriffsschaltung 16 einen Descriptor zum Speichern eines Pakets verwendet hat (oder das Paket aus dem Descriptor zur Übertragung ausliest), gibt die Paket-Direkt-Speicherzugriffsschaltung 16 den Descriptor an die Software zurück. Bei einer Ausführungsform gibt die Paket-Direkt-Speicherzugriffsschaltung 16 einen Descriptor der Soft ware dadurch zurück, dass sie ein Hardware (HW)-Bit in dem Descriptor zurücksetzt, was unten noch genauer beschrieben werden wird. Die Software stellt die Descriptoren in dem Descriptor-Ring auf und schreibt die Anzahl der Descriptoren, die zur Verfügung gestellt werden, in den Zähler, der diesem Descriptor-Ring entspricht („Zähler"-Feld in den Registern 136 in 11). Der in das Zähler-Feld geschriebene Wert wird durch die Paket-Direkt-Speicherzugriffsschaltung 16 zu dem Wert in dem Zähler-Feld addiert, was zum Zähler der zur Verfügung stehenden Descriptoren führt. Das „Letzter"-Feld in den Registern 136 in 11 ist ein Index, gemessen von der Basisadresse, für den letzten Descriptor, der von der Paket-Direkt-Speicherzugriffsschaltung 16 verwendet und an die Software zurückgegeben worden ist. Somit stehen die Descriptoren, beginnend mit dem Descriptor in dem Ring, der dem in dem „Letzter"-Feld angegebenen Descriptor folgt und der folgenden „Zähler"-1 Zahl von Descriptoren, zur Verwendung durch die Paket-Direkt-Speicherzugriffsschaltung zur Verfügung.
  • Bei einer Ausführungsform kann die Paket-Direkt-Speicherzugriffsschaltung 16 einen oder mehrere Descriptoren vorwegnehmen. Das Vorwegnehmen („prefetch")-Feld der Register 136 gibt den Index, gemessen von der Basisadresse, des jüngst vorweggenommenen Descriptors an. Somit kann der nächste Descriptor, der vorwegzunehmen ist, der Descriptor in dem Ring sein, der dem durch das Vorwegnehmen-Feld angezeigten Descriptor folgt. Alternativ kann das Vorwegnehmen-Feld den nächsten Descriptor angeben, der vorwegzunehmen ist. Bei einer Ausführungsform versucht die Paket-Direkt-Speicherzugriffsschaltung 16 nicht, einen Descriptor vorwegzunehmen, der von der Software nicht zur Verfügung gestellt worden ist, und somit kann das Vorwegnehmen-Feld im allgemeinen einen Descriptor zwischen dem „letzten" Descriptor und dem Descriptor angeben, der dem „letzten" plus dem „Zähler" entspricht.
  • Im allgemeinen kann die Paket-Direkt-Speicherzugriffsschaltung 16, wenn ein Descriptor für eine gegebene Eingangsschlange zur Verfügung gestellt wird, Daten von dem Schalter (als Ziel) für diese Eingangsschlange abfragen. Paketdaten, die von dem Schalter für die Eingangsschlange empfangen werden, werden in dem von dem Descriptor angegebenen Speicherpuffer gespeichert. Ein Paket kann in einem oder mehreren Speicherpuffern gespeichert werden. Sobald der Speicherpuffer voll oder das Paket vollständig ist, kann die Paket-Direkt-Speicherzugriffsschaltung 16 den Descriptor updaten, damit er die Verfügbarkeit des Pakets anzeigt, und kann den Descriptor an die Software zurückgeben.
  • Wenn ein Descriptor für eine gegebene Ausgangsschlange zur Verfügung gestellt wird, kann die Paket-Direkt-Speicherzugriffsschaltung 16 Übertragungen durch den Schalter (als Quelle) anfordern, um das Paket in dem Descriptor zu dem ausgewählten Ziel zu übertragen. Sobald der Speicherpuffer geleert worden ist, kann die Paket-Direkt-Speicherzugriffsschaltung 16 den Descriptor updaten, um ihn an die Software zurückzugeben.
  • Bei einer Ausführungsform kann ein Descriptor 132 größenmäßig kleiner sein als ein Cache-Block. Beispielsweise kann ein Cache-Block 32 Bytes groß sein und der Descriptor kann 16 Bytes aufweisen. In solchen Fällen kann die Paket-Direkt-Speicherzugriffsschaltung 16 so konfiguriert werden, dass ein Descriptor-Update (wenn sich der Descriptor in der unteren Hälfte des Cache-Blocks befindet) für eine bestimmte Zeit aufgeschoben wird, um das Update gegebenenfalls zusammen mit dem Update des Descriptors in der oberen Hälfte des Cache-Blocks (aufgrund des nächsten Pakets) durchzuführen. In solchen Fällen kann ein Lesen-Ändern-Schreiben des Cache-Blocks vermieden werden.
  • 12 ist ein Blockdiagramm einer Ausführungsform eines Descriptors 132. Bei der Ausführungsform der 12 weist der Descriptor 132 16 Bytes auf, die als zwei 8-Byte Wörter dargestellt sind. Die Bitbereiche für die Felder innerhalb der jeweiligen 8 Bytes sind über den Feldern gezeigt.
  • Felder die mit RSVD bezeichnet sind, sind reserviert.
  • Der Descriptor 132 weist verschiedene Statusinformationen auf, die in Bits 63:55 des ersten 8-Byte Wortes gespeichert sind. Insbesondere befindet sich ein Hardware (HW)-Bit darunter. Die Software kann das HW-Bit so setzen, dass es anzeigt, dass der Descriptor 132 für die Verwendung durch die Paket-Direkt-Speicherzugriffsschaltung 16 zur Verfügung steht. Alternativ oder zusätzlich kann die Software das oben beschriebene „Zähler"-Feld so updaten, dass es anzeigt, dass der Descriptor 132 für die Verwendung durch die Paket-Direkt-Speicherzugriffsschaltung 16 zur Verfügung steht. Die Paket-Direkt-Speicherzugriffsschaltung 16 kann das HW-Bit so freisetzen, dass es den Descriptor an die Software zurückgibt.
  • Die SOP- und EOP-Bits werden verwendet, um anzugeben, ob der Speicherpuffer, der dem Descriptor entspricht, den Beginn des Pakets oder das Ende des Pakets enthält. Ein Paket kann in einem oder mehreren Speicherpuffern gespeichert werden. Wenn der Speicherpuffer, der von dem Descriptor 132 lokalisiert wird, den Beginn eines Pakets aufweist, wird das SOP-Bit gesetzt. Anderenfalls ist das SOP-Bit freigesetzt. Wenn der Speicherpuffer das Ende des Pakets aufweist, wird das EOP-Bit gesetzt. Anderenfalls ist das EOP-Bit freigesetzt. Somit werden, wenn ein Paket in einem Speicherpuffer gespeichert wird, sowohl das EOP- als auch das SOP-Bit in diesem Descriptor gesetzt. Wenn ein Paket in mehr als einem Speicherpuffer gespeichert wird, wird das SOP-Bit in dem Descriptor, der dem ersten Speicherpuffer entspricht, gesetzt, und es wird das EOP-Bit in dem Descriptor, der dem letzten Speicherpuffer entspricht, gesetzt. Die anderen EOP- und SOP-Bits in den Descriptoren sind freigesetzt. Für Eingangsschlangen-Descriptoren setzt die Paket-Direkt-Speicherzugriffsschaltung 16 die EOP- und SOP-Bits oder setzt sie frei, wenn sie den upgedateten Descriptor in den Speicher zurückschreibt, nachdem die Paketdaten in den Speicherpuffer geschrieben worden sind. Für Ausgangsschlangen-Descriptoren setzt die Software die EOP- und SOP-Bits oder setzt sie frei, wenn sie die Descriptoren für die Pakete generiert.
  • Das INT-Bit wird verwendet um anzuzeigen, ob die Paket-Direkt-Speicherzugriffsschaltung 16 eine Unterbrechung herstellen soll, wenn der Descriptor fertig ist (d.h., wenn die Paket-Direkt-Speicherzugriffsschaltung 16 den upgedateten Descriptor in den Speicher zurückschreibt). Die Software kann das INT-Bit setzen, um die Unterbrechung zu veranlassen, und das INT-Bit freisetzen, um keine Unterbrechung zu veranlassen.
  • SWID kann für Eingangsschlangen-Descriptoren die Schnittstellenschaltung angeben, auf der das Paket empfangen worden ist. Das LE-Bit kann, wenn es gesetzt ist, angeben, dass ein Fehler in der Rx-Schaltung 26A26C, die das Paket empfangen hat, aufgetreten ist. Insbesondere kann das LE-Bit, wenn die Rx-Schaltung SPI-4 Phase 2 Verkehr empfängt, angeben, wenn es gesetzt ist, dass ein DIP-4 Fehler aufgetreten ist. Das SE-Bit kann, wenn es gesetzt ist, angeben, dass ein SPI-4 Abbruchsteuerungswort in dem Paket empfangen worden ist, oder dass ein Fehler in einer PoHT-Transaktion ermittelt worden ist. Das PE-Bit kann, wenn es gesetzt ist, angeben, dass die Paket-Direkt-Speicherzugriffsschaltung bei der Übertragung des Pakets einen Fehler ermittelt hat.
  • Das Feld Pufferlänge gibt die Größe des von dem Descriptor 132 angegebenen Speicherpuffers (in Bytes) an. Für Eingangsschlangen-Descriptoren kann die Paket-Direkt-Speicherzugriffsschaltung 16 das Feld Pufferlänge überschreiben, um die tatsächliche zum Speichern von Paketdaten verwendete Länge anzugeben.
  • Das Feld next_dest in dem Descriptor wird für Ausgangsschlangen-Descriptoren verwendet, um den next_dest Wert für PoHT-Pakete zu speichern. Die Paket-Direkt-Speicherzugriffsschaltung 16 kann das Feld next_dest auslesen und den Wert mit dem Paket an die Tx-Schaltung 28A28C übertragen, die das Paket zu übertragen hat.
  • Das VC-Feld speichert den IVC für ein empfangenes Paket, wenn das Paket auf der SPI-Schnittstelle übertragen worden ist. Für Ausgangsschlangen-Descriptoren kann das VC-Feld einen Wert speichern, für den die 4 wichtigsten Bits zu der Tx-Schaltung 28A28C übertragen werden, um das Paket zu übertragen, und die Tx-Schaltung 28A28C kann die Bits an den OVC anhängen, um das VC-Feld in dem SPI-4-Paket zu erzeugen. Das Feld Speicherpufferadresse speichert die Adresse des von dem Descriptor 132 angegebenen Speicherpuffers.
  • Es wird angemerkt, dass, obwohl oben verschiedene Bits so beschrieben worden sind, dass sie bestimmte Bedeutungen haben, wenn sie gesetzt oder freigesetzt sind, den gesetzten und freigesetzten Zuständen auch die gegenteiligen Bedeutungen verliehen werden können. Im allgemeinen kann jede Angabe bei verschiedenen Ausführungsformen verwendet werden.
  • Kohärenzmanagement
  • 13 zeigt eine Tabelle 142, die einen beispielhaften Satz von Transaktionen zeigt, die von einer Ausführungsform der Verbindung 22 gestützt werden, sowie eine Tabelle 144, die einen beispielhaften Satz von kohärenten Befehlen zeigt, die von einer Ausführungsform der Schnittstellen 30 gestützt werden. Andere Ausführungsformen mit Teilmengen, Obermengen oder alternativen Sätzen von Befehlen können verwendet werden.
  • Als nächstes werden die in der Tabelle 142 gezeigten Transaktionen beschrieben. Eine Einrichtung in dem System 10 kann einen Cache-Block (entweder fern oder lokal) unter Verwendung der Read Shared (RdShd) oder Read Exclusive (RdExc) Transaktionen auf der Verbindung 22 auslesen. Die RdShd Transaktion wird verwendet, um eine gemeinsame Kopie des Cache-Blocks anzufordern, und die RdExc Transaktion wird verwendet, um eine exklusive Kopie des Cache-Blocks anzufordern. Wenn die RdShd Transaktion verwendet wird und während der Antwortphase der Transaktion keine andere Einrichtung berichtet, dass sie eine Kopie des Cache-Blocks hat (mit Ausnahme des L2-Caches 36 und/oder der Speichersteuerung 14), kann die Einrichtung den Cache-Block in dem exklusiven Zustand nehmen. Im Ansprechen auf die RdExc Transaktion machen andere Einrichtungen in dem Knoten ihre Kopien des Cache-Blocks (wenn vorhanden) ungültig. Außerdem kann ein exklusiver (oder modifizierter) Besitzer des Cache-Blocks die Daten für die Transaktion in der Datenphase liefern. Andere Ausführungsformen können andere Mechanismen verwenden (z.B. einen neuen Versuch auf der Verbindung 22), um die Übertragung eines modifizierten Cache-Blocks sicherzustellen.
  • Die Schreibtransaktion (Wr) und die Schreibinvalidierungstransaktion (WrInv) können von einer Einrichtung verwendet werden, um einen Cache-Block in den Speicher zu schreiben. Die Wr-Transaktion kann von einem Besitzer verwendet werden, der den modifizierten Zustand für den Block hat, da keine weiteren Kopien des Blocks ungültig gemacht werden müssen. Die WrInv-Transaktion kann von einer Einrichtung verwendet werden, die nicht im ausschließlichen Besitz des Blocks ist (die Einrichtung kann sogar für den Block den ungültigen Zustand haben). Die WrInv-Transaktion veranlasst andere Einrichtungen, alle Kopien des Blocks, einschließlich modifizierter Kopien, ungültig zu machen. Die WrInv-Transaktion kann von einer Einrichtung verwendet werden, die den gesamten Cache-Block beschreibt. Beispielweise kann eine Paket-Direkt-Speicherzugriffsschaltung, die den gesamten Cache-Block mit neuen Daten beschreibt, die Transaktion verwenden, um eine Lesetransaktion, der eine Schreibtransaktion folgt, zu vermeiden. Insbesondere kann die Paket-Direkt-Speicherzugriffsschaltung 16 WrInv-Transaktionen verwenden, um Paketdaten in den Speicher zu schreiben.
  • Die RdKill- und RdInv-Transaktionen können von der Speicherbrücke 32 im Ansprechen auf Probes verwendet werden, die das System 10 von anderen Knoten empfängt. Die RdKill-und RdInv-Transaktionen veranlassen den Initiator (die Spei cherbrücke 32), exklusiven Zugriff auf den Cache-Block zu erhalten, und führen dazu, dass jede Cache-Einrichtung ihre Kopien ungültig macht (durch Übertragen von Daten auf den Initiator ähnlich den RdShd- und RdExc-Transaktionen). Bei einer Ausführungsform löscht die RdKill-Transaktion auch eine Reservierung, die von dem lastverbundenen Befehl in dem MIPS-Befehlssatz hergestellt worden ist, wohingegen die RdInv-Transaktion dies nicht tut. Bei anderen Ausführungsformen kann eine einzige Transaktion für Probes verwendet werden. Bei wieder anderen Ausführungsformen kann eine durch eine Probe erzeugte Transaktion Einrichtungs-Kopien des Cache-Blocks (ähnlich den RdKill- und RdInv-Transaktionen) ungültig machen, und eine andere durch eine Probe erzeugte Transaktion kann es Einrichtungen ermöglichen, gemeinsame Kopien des Cache-Blocks zu behalten.
  • Die WrFlush-Transaktion ist eine Schreibtransaktion, die von einer Einrichtung initiiert werden kann, und eine andere Einrichtung kann eine exklusive oder modifizierte Kopie des Blocks haben. Die andere Einrichtung stellt die Daten für die WrFlush-Transaktion zur Verfügung, oder die initiierende Einrichtung stellt die Daten zur Verfügung, wenn keine andere Einrichtung eine exklusive oder modifizierte Kopie des Blocks hat. Die WrFlush-Transaktion kann bei einer Ausführungsform verwendet werden, bei der das L2-Cache 36 den Knotenzustand für das System 10 beibehält, aber andere Einrichtung den Cache-Block ebenfalls in einem modifizierten Zustand haben können. Das L2-Cache 36 kann den WrFlush-Befehl verwenden, um einen fernen Cache-Block zu entfernen, der in einem Cache einer anderen Einrichtung in dem System 10 modifiziert werden kann.
  • Die Nop-Transaktion ist eine Keine-Operation-Transaktion. Die Nop-Transaktion kann verwendet werden, wenn einer Einrichtung die Verwendung der Verbindung 22 bewilligt wird (z.B. dem Adressbus bei Ausführungsformen, bei denen die Verbindung 22 ein gespaltener Transaktionsbus ist), und die Einrichtung festlegt, dass sie keine Transaktion mehr auf der Verbindung 22 zu laufen hat.
  • Die in der Tabelle 144 gezeigten Befehle werden als nächstes beschrieben. In der Tabelle 144 ist sowohl der Befehl gezeigt als auch der virtuelle Kanal, in dem der Befehl auf den Schnittstellen 30 läuft. Die virtuellen Kanäle können bei der gezeigten Ausführungsform aufweisen: den virtuellen Kanal für kohärentes Lesen (CRd); den virtuellen Kanal für Probe (Probe); den virtuellen Kanal für Bestätigung (Ack); und den virtuellen Kanal für kohärentes Füllen (CFill). Die virtuellen Kanäle CRd, Probe, Ack und CFill sind für die HTcc-Befehle definiert. Es kann für die Standard HT-Befehle zusätzliche virtuelle Kanäle geben (z.B. den virtuellen Kanal für nicht herausgegebenen Befehl (NPC), den virtuellen Kanal für herausgegebenen Befehl (PC), und den virtuellen Kanal für Antwort (RSP)).
  • Die cRdShd- oder cRdExc-Befehle können von der Speicherbrücke 32 im Ansprechen auf RdShd- oder RdExc-Transaktionen auf der Verbindung 22 ausgegeben werden, um einen fernen Cache-Block, der nicht in dem Knoten gespeichert ist (oder, im Fall von RdExc, in dem Knoten – jedoch in einem gemeinsamen Zustand – gespeichert ist), auszulesen. Wenn der Cache-Block in dem Knoten gespeichert ist (mit exklusivem Besitz im Fall der RdExc-Transaktion), wird das Lesen auf der Verbindung 22 ohne die Übertragung eines kohärenten Befehls durch die Speicherbrücke 32 durchgeführt.
  • Die Flush- und Kill-Befehle sind Probe-Befehle für diese Ausführungsform. Die Speicherbrücke 32 an dem Heimatknoten eines Cache-Blocks kann Probe-Befehle im Ansprechen auf einen cRdShd- oder cRdExd-Befehl ausgeben. Die Speicherbrücke 32 an dem Heimatknoten des Cache-Blocks kann auch einen Probe-Befehl im Ansprechen auf eine Transaktion für einen lokalen Cache-Block ausgeben, wenn ein oder mehrere ferne Knoten eine Kopie des Cache-Blocks hat/haben. Der Flush-Befehl wird verwendet, um einen fernen modifizierten Besitzer eines Cache-Blocks aufzufordern, den Cache-Block an den Heimatknoten zurückzugeben (und um den Cache-Block in dem fernen modifizierten Besitzer ungültig zu machen). Der Kill-Befehl wird verwendet, um einen fernen Besitzer aufzufordern, den Cache-Block ungültig zu machen. Bei anderen Ausführungsformen können zusätzliche Probe-Befehle für andere Anfragen zur Zustandsänderung unterstützt werden (z.B. um es fernen Besitzern zu ermöglichen, eine gemeinsame Kopie des Cache-Blocks zu behalten).
  • Die Probe-Befehle werden (nach Durchführung der von den Probe-Befehlen geforderten Zustandsänderungen) unter Verwendung der Kill_Ack- oder WB-Befehle beantwortet. Der Kill_Ack-Befehl ist eine Bestätigung, dass ein Kill-Befehl von einem empfangenden Knoten ausgeführt worden ist. Der WB-Befehl ist ein Zurückschreiben des Cache-Blocks und wird im Ansprechen auf den Flush-Befehl übertragen. Der WB-Befehl kann auch von einem Knoten verwendet werden, um einen fernen Cache-Block zurückzuschreiben, der von dem Knoten entfernt wird.
  • Der Fill-Befehl ist der Befehl zur Übertragung von Daten auf einen fernen Knoten, der einen Lese-Befehl (cRdExc oder cRdShd) an den Heimatknoten übertragen hat. Der Fill-Befehl wird von der Speicherbrücke 32 in dem Heimatknoten ausgegeben, nachdem die Probes (falls vorhanden) für einen Cache-Block fertig sind.
  • 14 ist ein Blockdiagramm, das eine Ausführungsform eines Adressraums zeigt, der von einer Ausführungsform des Systems 10 implementiert wird. Die in 14 gezeigten Adressen sind als hexadezimale Ziffern dargestellt, wobei ein Unterstrich („_") Gruppen von vier Ziffern voneinander trennt. Somit werden in der in 14 dargestellten Ausführungsform 40 Adressbits unterstützt. Bei anderen Ausführungsformen können mehr oder weniger Adressbits unterstützt werden.
  • Bei der Ausführungsform der 14 wird der Adressraum zwischen 00_0000_0000 und 0F_FFFF_FFFF als lokaler Adressraum behandelt. Transaktionen, die von Einrichtungen in dem lokalen Adressraum erzeugt werden, generieren keine kohärenten Befehle zu anderen Knoten, obwohl Kohärenz innerhalb des Systems 10 für diese Adressen durchgesetzt werden kann. Das heißt, der lokale Adressraum wird nicht mit anderen Knoten kohärent gehalten. Verschiedene Teile des lokalen Adressraums können nach Wunsch auf I/O-Vorrichtungen, HT, etc. speichergemappt werden.
  • Der Adressraum zwischen 40_0000_0000 und EF_FFFF_FFFF ist der ferne kohärente Raum 148. Das heißt, der Adressraum zwischen 40_0000_0000 und EF_FFFF_FFFF wird zwischen den Knoten kohärent gehalten. Jedem Knoten wird ein Teil des fernen kohärenten Raums zugeteilt, und dieser Knoten ist der Heimatknoten für den Teil. Wie in 1 gezeigt ist, kann jeder Knoten mit einer Knotenzahl programmiert werden. Die Knotenzahl ist bei der vorliegenden Ausführungsform gleich dem wichtigsten Halbbyte (4 Bits) der Adressen, für die dieser Knoten der Heimatknoten ist. So können die Knotenzahlen bei der gezeigten Ausführungsform zwischen 4 und E liegen. Andere Ausführungsformen können nach Wunsch mehr oder weniger Knotenzahlen unterstützen. Bei der gezeigten Ausführungsform wird jedem Knoten ein 64 Gigabyte (GB) Teil des Speicherraums zugeteilt, für den er der Heimatknoten ist. Die Größe des jedem Knoten zugeteilten Teils kann bei anderen Ausführungsformen variieren (z.B. basierend auf der Adressgröße oder auf anderen Faktoren).
  • Für einen gegebenen kohärenten Knoten besteht Aliasing zwischen dem fernen kohärenten Raum, für den dieser Knoten der Heimatknoten ist, und dem lokalen Adressraum dieses Knotens. Das heißt, entsprechende Adressen in dem lokalen Adressraum und dem Teil des fernen kohärenten Raums, für den der Knoten der Heimatknoten ist, greifen auf dieselben Speicherstellen in dem Speicher 24 des Knotens zu (oder sind auf dieselben I/O-Vorrichtungen oder Schnittstellen speichergemappt, etc.). Beispielsweise führt der Knoten mit der Knotenzahl 5 für den Adressraum 50_0000_0000 bis 5F_FFFF_FFFF Aliasing durch zu 00_0000_0000 bis 0F_FFFF_FFFF (Pfeil 146). Zwischenknoten-kohärente Zugriffe auf den Speicher 24 in dem System 10 verwenden den mit Knotenzahl versehenen Adressraum (z.B. 50_0000_0000 bis 5F_FFFF_FFFF, wenn die in das System 10 programmierte Knotenzahl 5 ist), um auf Cache-Blöcke in dem Speicher 24 zuzugreifen. Das heißt, Einrichtungen in anderen Knoten und Einrichtungen in diesem Knoten, die kohärent auf Cache-Blöcke in dem Speicher zugreifen, verwenden den fernen kohärenten Raum, während Zugriffe in dem lokalen Adressraum nicht mit anderen Knoten kohärent gehalten werden (obwohl auf denselben Cache-Block zugegriffen werden kann). Somit werden bei dieser Ausführungsform die Adressen Aliasing unterzogen, aber nicht kohärent gehalten. Bei anderen Ausführungsformen können die Adressen in dem fernen kohärenten Raum und die entsprechenden Adressen in dem lokalen Adressraum kohärent gehalten werden.
  • Ein Cache-Block wird in einem Knoten als lokal bezeichnet, wenn der Cache-Block Teil des dem Knoten zugeteilten Speichers ist (wie oben erwähnt). Somit kann der Cache-Block lokal sein, wenn auf ihn von dem lokalen Adressraum oder dem fernen kohärenten Raum zugegriffen wird, solange die Adresse in dem Bereich liegt, für den der Knoten der Heimatknoten ist. Ähnlich kann eine Transaktion auf der Verbindung 22, die auf einen lokalen Cache-Block zugreift, als lokale Transaktion oder lokaler Zugriff bezeichnet werden. Eine Transaktion auf der Verbindung 22, die auf einen fernen Cache-Block (über den fernen kohärenten Adressraum außerhalb des Teils, für den der Knoten der Heimatknoten ist) zugreift, kann als ferne Transaktion oder ferner Zugriff bezeichnet werden.
  • Der Adressraum zwischen 10_0000_0000 und 3F_FFFF_FFFF kann bei der gezeigten Ausführungsform für zusätzliche HT-Transaktionen (z.B. Standard HT-Transaktionen) verwendet werden. Außerdem kann der Adressraum zwischen F0_0000_0000 und FF_FFFF_FFFF bei der gezeigten Ausführungsform reserviert werden.
  • Es wird angemerkt, dass, obwohl das wichtigste Halbbyte der Adresse definiert, auf welchen Knoten zuzugreifen ist, andere Ausführungsformen jeden beliebigen anderen Teil der Adresse zur Identifizierung des Knotens verwenden können. Des weiteren können bei anderen Ausführungsformen andere Informationen bei der Transaktion verwendet werden, um ferne gegenüber lokalen Transaktionen zu identifizieren (z.B. Befehlstyp, Steuerinformationen, die bei der Transaktion übertragen werden, etc.).
  • 15 zeigt einen Entscheidungsbaum für eine Lesetransaktion zu einer Speicherraumadresse auf der Verbindung 22 eines Systems 10 für eine Ausführungsform. Der Entscheidungsbaum kann die Operation des Systems 10 für die Lesetransaktion für verschiedene Bedingungen der Transaktion, den Zustand des Cache-Blocks, auf den mit der Transaktion zugegriffen wird, etc. zeigen. Die Lesetransaktion kann bei einer Ausführungsform die in Tabelle 142 der 13 gezeigten RdShd-RdExc-, RdKill- und RdInV-Transaktionen umfassen. Jeder Punkt auf den Linien dieses Entscheidungsbaums stellt einen Divergenzpunkt eines oder mehrerer Äste des Baums dar, die mit den entsprechenden Bedingungen versehen sind. Wenn von einem Punkt mehrere Äste ausgehen, impliziert das Nehmen eines Astes, dass die Bedingungen für die anderen Äste nicht erfüllt sind. In 15 wird das Ausrufungszeichen („!") zur Angabe eines logischen NICHT verwendet. Der Zustandsübergang, den jede kohärente Einrichtung, die eine Kopie des Cache-Blocks für die Lesetransaktion in den Cache-Speicher aufnimmt, erfährt, ist in 15 nicht dargestellt. Wenn die Lesetransaktion RdShd ist, kann die kohärente Einrichtung eine Kopie des Cache-Blocks im gemeinsamen Zustand behalten. Anderenfalls macht die kohärente Einrichtung ihre Kopie des Cache-Blocks ungültig.
  • Die Transaktion kann, wie oben erwähnt, entweder lokal oder fern sein. Für lokale Transaktionen wird, wenn die Transaktion nicht cachefähig ist, ein Auslesen aus dem Speicher 24 durchgeführt (Bezugszeichen 150). Bei einer Ausführungsform kann die Transaktion eine Angabe enthalten, ob die Transaktion cachefähig ist oder nicht. Wenn die Transaktion nicht cachefähig ist, wird sie bei der vorliegenden Ausführungsform als nicht-kohärente Transaktion behandelt.
  • Ist die lokale Transaktion cachefähig, so hängt die Operation des Systems 10 von der während der Antwortphase der Transaktion gegebenen Antwort ab. Bei einer Ausführungsform antwortet jede kohärente Einrichtung mit dem Zustand des Cache-Blocks in dieser Einrichtung. Beispielsweise kann jede kohärente Einrichtung ein assoziiertes gemeinsames (SHD) und exklusives (EXC) Signal aufweisen. Die Einrichtung kann den ungültigen Zustand durch Nichtbestätigen sowohl des SHD als auch des EXC Signals signalisieren. Die Einrichtung kann den gemeinsamen Zustand durch Bestätigen des SHD Signals und Nichtbestätigen des EXC Signals signalisieren. Die Einrichtung kann den exklusiven Zustand (oder den modifizierten Zustand) durch Bestätigen des EXC Signals und Nichtbestätigen des SHD Signals signalisieren. Bei der vorliegenden Ausführungsform können der exklusive und der modifizierte Zustand in der Antwortphase gleich behandelt werden, und der exklusive/modifzierte Besitzer kann die Daten zur Verfügung stellen. Der exklusive/modifizierte Besitzer kann gleichzeitig mit den Daten eine Angabe zur Verfügung stellen, ob der Zustand exklusiv oder modifiziert ist. Obwohl bei dieser Ausführungsform jede Einrichtung ihre eigenen SHD und EXC Signale aufweisen kann (und die initiierende Einrichtung die Signale von jeder anderen Einrichtung empfangen kann), kann bei anderen Ausführungsformen von allen Einrichtungen ein gemeinsames SHD und EXC Signal verwendet werden.
  • Wenn sowohl die SHD als auch die EXC Antworten für die lokale Transaktion empfangen werden, ist ein Fehler aufgetreten (Bezugszeichen 152). Die Speichersteuerung kann bei einer Ausführungsform eine fatale Fehleranzeige für die Lesetransaktion zurückgeben. Wenn die Antwort exklusiv ist (SHD nicht bestätigt, EXC bestätigt), stellt der exklusive Besitzer die Daten für die Lesetransaktion auf der Verbindung 22 zur Verfügung (Bezugszeichen 154). Wenn der exklusive Besitzer die Speicherbrücke 32 ist (wie in dem fernen Leitungsverzeichnis 34 verzeichnet), dann hat ein ferner Knoten den Cache-Block im modifizierten Zustand. Die Speicherbrücke 32 gibt eine Probe aus (Flush Befehl), um den Cache-Block von diesem fernen Knoten zurück zu erhalten. Die Speicherbrücke 32 kann den von dem fernen Knoten zurückgegebenen Cache-Block als Daten zum Auslesen auf der Verbindung 22 zur Verfügung stellen.
  • Wenn die Antwort „gemeinsam" ist (SHD bestätigt, EXC nicht bestätigt), die lokale Transaktion RdEXc und die Speicherbrücke 32 eine der Einrichtungen ist, die „gemeinsam" berichtet, kann wenigstens ein ferner Knoten eine gemeinsame Kopie des Cache-Blocks haben. Die Speicherbrücke 32 kann eine Probe initiieren (Kill Befehl), um die gemeinsamen Kopien des Cache-Blocks in dem/den fernen Knoten ungültig zu machen (Bezugszeichen 156). Bei einer Ausführungsform können die Daten für diesen Fall aus dem Speicher (oder dem L2-Cache 36) ausgelesen werden, aber die Übertragung der Daten kann verzögert werden, bis der/die ferne(n) Knoten die Probe bestätigt hat/haben. Die Speicherbrücke 32 kann der Speichersteuerung 14/dem L2-Cache 36 ein Signal geben, wenn die Bestätigungen empfangen worden sind. Bei einer Ausführungsform kann jede Transaktion eine Transaktionsidentifizierung auf der Verbindung 22 aufweisen. Die Speicherbrücke 32 kann die Transaktionsidentifizierung der RdExc Transaktion zu der Speichersteuerung 14/dem L2-Cache 36 übertragen, um anzuzeigen, dass die Daten übertragen werden können.
  • Wenn die Antwort „gemeinsam" ist, die lokale Transaktion RdExc ist, und die gemeinsamen Einrichtungen lokale Einrichtungen sind (d.h. die Speicherbrücke 32 nicht „gemeinsam" berichtet), können das L2-Cache 36 oder die Speichersteuerung 14 die Daten zur Verfügung stellen, je nachdem, ob es einen L2-Treffer für den Cache-Block gibt oder nicht (Bezugszeichen 158). Ähnlich können, wenn die Antwort „gemeinsam" und die Transaktion nicht RdExc ist, das L2-Cache 36 oder die Speichersteuerung 14 die Daten zur Verfügung stellen, je nachdem, ob es einen L2-Treffer für den Cache-Block gibt oder nicht.
  • Wenn die Transaktion fern und nicht cachefähig ist, kann die Speicherbrücke 32 einen nicht-kohärenten Lesebefehl auf den Schnittstellen 30 generieren, um die Daten zu lesen. Beispielsweise kann ein Standard HT-Lesebefehl verwendet werden (Bezugszeichen 160). Wenn die ferne Transaktion cachefähig und die Antwort auf der Verbindung 22 exklusiv ist, stellt der exklusive Besitzer die Daten für das Lesen zur Verfügung (Bezugszeichen 162). Wenn die ferne Transaktion cachefähig, die Antwort nicht exklusiv, der Cache-Block ein L2-Cache-Treffer und die Transaktion entweder RdShd oder RdExc ist und der L2-Cache den Block in dem modifizierten Zustand hat, stellt das L2-Cache 36 die Daten für das Lesen zur Verfügung (Bezugszeichen 164). Anderenfalls initiiert die Speicherbrücke 32 einen entsprechenden Lesebefehl für den Heimatknoten des Cache-Blocks (Bezugszeichen 166).
  • 16 zeigt einen Entscheidungsbaum für eine Schreibtransaktion zu einer Speicherraumadresse auf der Verbindung 22 eines Systems 10 für eine Ausführungsform. Der Entscheidungsbaum kann die Operation des Knotens für die Schreibtrans aktion für verschiedene Bedingungen der Transaktion, den Zustand des Cache-Blocks, auf den mit der Transaktion zugegriffen wird, etc. zeigen. Die Schreibtransaktion kann bei einer Ausführungsform die in Tabelle 142 der 13 gezeigten Wr-, WrInv- und WrFlush-Transaktionen umfassen. Jeder Punkt auf den Linien dieses Entscheidungsbaums stellt einen Divergenzpunkt eines oder mehrerer Äste des Baums dar, die mit den entsprechenden Bedingungen versehen sind. Wenn von einem Punkt mehrere Äste ausgehen, impliziert das Nehmen eines Astes, dass die Bedingungen für die anderen Äste nicht erfüllt sind. In 16 wird das Ausrufungszeichen („!") zur Angabe eines logischen NICHT verwendet. Der Zustandsübergang, den jede kohärente Einrichtung, die eine Kopie des Cache-Blocks für die Schreibtransaktion in den Cache-Speicher aufnimmt, erfährt, ist in 16 nicht dargestellt. Die kohärente Einrichtung macht ihre Kopie des Cache-Blocks ungültig.
  • Ist die Transaktion eine lokale Transaktion und eine WrInv-Transaktion, die in das ferne Leitungsverzeichnis 34 trifft (d.h., ein ferner Knoten nimmt eine Kopie des Cache-Blocks in den Cache-Speicher auf), wird die Speichersteuerung 14 (und das L2-Cache 36 bei einem L2-Treffer) mit den Schreibdaten upgedatet (Bezugszeichen 170). Außerdem kann die Speicherbrücke 32 Probes für die fernen Knoten, die von dem fernen Leitungsverzeichnis 34 angezeigt werden, generieren. Das Update des Speichers/L2-Caches kann verzögert werden, bis die Probes fertig sind; zu diesem Zeitpunkt kann die Speicherbrücke 32 die Transaktionsidentifizierung der WrInv-Transaktion zu dem L2-Cache 36/der Speichersteuerung 14 übertragen, um das Update zu ermöglichen.
  • Wenn die lokale Transaktion nicht cachefähig oder das L2-Cache 36 der Master der Transaktion ist (d.h., das L2-Cache 36 die Transaktion initiiert hat), wird die Speichersteuerung 14 mit den Daten upgedatet (Bezugszeichen 172). Wenn die lokale Transaktion cachefähig ist, wird die Speichersteuerung 14 und/oder das L2-Cache 36 mit den Daten upgedatet, basierend darauf, ob es einen L2-Cache-Treffer gibt oder nicht (und, bei einigen Ausführungsformen, basierend auf einer Anzeige der L2-Cache Zuteilung in der Transaktion, die es der Quelle der Transaktion ermöglicht anzugeben, ob das L2-Cache eine Cacheleitung für einen L2-Cache Fehlschlag zuteilt oder nicht) (Bezugszeichen 174A).
  • Ist die Transaktion eine ferne Transaktion, eine WrFlush-Transaktion und die Antwort auf die Transaktion exklusiv, stellt der exklusive Besitzer die Daten zur Verfügung (Bezugszeichen 176). Wenn die ferne WrFlush-Transaktion zu einer nicht-exklusiven Antwort (gemeinsam oder ungültig) führt, stellt das L2-Cache 36 die Daten der WrFlush-Transaktion zur Verfügung (Bezugszeichen 178). Bei einer Ausführungsform behält das L2-Cache 36 den Zustand des Knotens, wie er in dem Heimatknoten eingetragen ist, und das L2-Cache 36 verwendet die WrFlush-Transaktion, um einen fernen Cache-Block, der in dem Knoten im modifizierten Zustand ist, zu entfernen. Somit kann, wenn eine andere Einrichtung den Cache-Block im exklusiven Zustand hat, diese Einrichtung eine neuere Kopie des Cache-Blocks haben, die an den Heimatknoten zurückgegeben werden sollte. Anderenfalls stellt das L2 Cache 36 den Block zur Verfügung, der an den Heimatknoten zurückzugeben ist. In jedem Fall kann die Speicherbrücke 32 die WrFlush-Transaktion und die Daten erfassen und einen WB-Befehl durchführen, um den Cache-Block an den Heimatknoten zurückzugeben.
  • Ist die ferne Transaktion keine WrFlush-Transaktion und nicht cache-kohärent, empfängt die Speicherbrücke 32 die Schreibtransaktion und führt einen nichtkohärenten Schreibbefehl (z.B. einen Standard HT Schreibbefehl) durch, um den Cache-Block zu dem Heimatknoten zu übertragen (Bezugszeichen 180). Wenn die ferne Transaktion keine WrFlush-Transaktion ist, cache-kohärent und ein L2-Treffer ist, kann das L2-Cache 36 mit den Daten upgedatet werden (Bezugszeichen 182).
  • 17 ist ein Blockdiagramm, das die Operation einer Ausführungsform der Speicherbrücke 32 im Ansprechen auf verschiedene kohärente Befehle zeigt, die sie von den Schnittstellenschaltungen 20A20C empfangen hat. Der empfangene Befehl ist in einem Oval gezeigt. Die von der Speicherbrücke 32 im Ansprechen auf den empfangenen Befehl (und den Zustand des betroffenen Cache-Blocks wie in dem fernen Leitungsverzeichnis 34 angegeben) initiierten Befehle sind in Rechtecken mit durchgezogener Linie gezeigt. In Rechtecken mit gestrichelter Linie befinden sich die Befehle, die die Speicherbrücke 32 im Ansprechen auf die in den vorhergehenden Rechtecken mit durchgezogener Linie übertragenen Befehle empfängt. Der von einem Befehl betroffene Cache-Block steht nach dem Befehl in Klammern.
  • Bei einer Ausführungsform kann auf das ferne Leitungsverzeichnis 34 im Ansprechen auf eine Transaktion auf der Verbindung 22 zugegriffen werden. Bei einer derartigen Ausführungsform kann die Speicherbrücke 32 eine Transaktion auf der Verbindung 22 im Ansprechen auf bestimmte kohärente Befehle initiieren, um das ferne Leitungsverzeichnis 34 abzurufen (und um gegebenenfalls Zustandsveränderungen bei den kohärenten Einrichtungen, die mit der Verbindung 22 gekoppelt sind, zu bewirken). Bei anderen Ausführungsformen kann die Speicherbrücke 32 so konfiguriert sein, dass sie das ferne Leitungsverzeichnis 34 vor der Generierung einer Transaktion auf der Verbindung 22 ausliest, und sie kann bei Bedarf bedingt eine Transaktion generieren, basierend auf dem Zustand des fernen Leitungsverzeichnisses 34 für den angefragten Cache-Block. Außerdem kann bei einer Ausführungsform das ferne Leitungsverzeichnis 34 den fernen Zustand für eine Teilmenge der lokalen Cache-Blöcke aufrecht erhalten, die entfernt gemeinsam verwendet werden können (z.B. eine Teilmenge des Teils des fernen kohärenten Raums 148, der dem lokalen Knoten zugeteilt ist). Wenn ein Cache-Block von einem fernen Knoten unter Verwendung eines kohärenten Befehls angefordert wird und für den Cache-Block in dem fernen Leitungsverzeichnis 34 kein Eintrag vorliegt, kann ein Victim Cache-Block in dem fernen Leitungsverzeichnis 34 ersetzt werden (und Probes können generiert werden, um den Victim Cache-Block in fernen Knoten ungültig zu machen). Bei anderen Ausführungsformen kann das ferne Leitungsverzeichnis 34 so konfiguriert sein, dass es den Zustand jedes Cache-Blocks in dem Teil des fernen kohärenten Raums 148, der dem lokalen Knoten zugeteilt ist, verfolgt. Bei derartigen Ausführungsformen können Operationen, die sich auf die Victim Cache-Blöcke beziehen, in der 17 weggelassen werden.
  • Für einen von der Speicherbrücke 32 empfangenen cRdShd-Befehl für den Cache-Block „A" (Bezugszeichen 190) kann die Speicherbrücke 32 eine RdShd-Transaktion auf der Verbindung 22 generieren. Basierend auf dem Zustand des fernen Leitungsverzeichnisses (Remote Line Directory (RLD)) für den Cache-Block A kann eine Reihe von Operationen auftreten. Wenn der RLD-Zustand ein gemeinsamer oder ein ungültiger Zustand ist und ein Eintrag für Zuteilung vorliegt, ohne dass ein Victim Cache-Block entfernt werden muss („RLD empty" in 17), kann die Speicherbrücke 32 einen Fill-Befehl mit den der Speicherbrücke 32 im Ansprechen auf die RdShd-Transaktion auf der Verbindung 22 gelieferten Daten an den fernen Knoten übertragen (Bezugszeichen 192). Andererseits kann, wenn der RLD-Zustand ungültig ist und ein Entfernen eines Victim Blocks verwendet wird, um einen RLD-Eintrag für den Cache-Block A freizusetzen, die Speicherbrücke 32 Probes an die fernen Knoten übertragen, die Kopien des Victim Cache-Blocks haben. Wenn der Victim Cache-Block gemeinsam verwendet wird, kann die Speicherbrücke 32 einen Kill-Befehl (oder Kill-Befehle, wenn mehrere Knoten den Victim Cache-Block ge meinsam verwenden) für den Victim Block übertragen (Bezugszeichen 194). Die fernen Knoten antworten mit Kill_Ack-Befehlen für den Victim Block (Bezugszeichen 196). Wenn der Victim Block modifiziert ist, kann die Speicherbrücke 32 einen Flush-Befehl an den fernen Knoten, der den modifizierten Zustand aufweist, übertragen (Bezugszeichen 198). Der ferne Knoten kann den modifizierten Block mit einem WB-Befehl zurückgeben (Bezugszeichen 200). In jedem Fall des Entfernens eines Victim Blocks kann die Speicherbrücke 32 parallel einen Fill-Befehl für den Cache-Block A erzeugen (Bezugszeichen 192, über Pfeil 202). Schließlich kann, wenn der RLD-Zustand für den Cache-Block A modifiziert ist, die Speicherbrücke 32 einen Flush-Befehl für den Cache-Block A zu dem fernen Knoten erzeugen (Bezugszeichen 204), der mit einem WB-Befehl und dem Cache-Block A antwortet (Bezugszeichen 206). Die Speicherbrücke 32 kann dann den Fill-Befehl mit dem über den Zurückschreibe-Befehl zur Verfügung gestellten Cache-Block A übertragen (Bezugszeichen 192).
  • Im Ansprechen auf einen cRdExc-Befehl für einen Cache-Block A (Bezugszeichen 210) kann die Operation für einige RLD-Zustände ähnlich dem cRdShd-Fall sein. Ähnlich zu dem cRdShd-Fall kann die Speicherbrücke 32 eine RdExc-Transaktion auf der Verbindung 22 im Ansprechen auf den cRdExc-Befehl initiieren. Ähnlich zu dem cRdShd-Fall kann, wenn RLD ungültig ist und im RLD kein Entfernen eines Victim Cache-Blocks erforderlich ist, um einen Eintrag für den Cache-Block A zuzuteilen, die Speicherbrücke 32 den auf der Verbindung 22 für die RdExc-Transaktion in einem Fill-Befehl gelieferten Cache-Block an den fernen Knoten liefern (Bezugszeichen 212). Außerdem kann, wenn der RLD-Zustand für den Cache-Block A ungültig ist und ein Victim Cache-Block von dem RLD 34 entfernt wird, die Speicherbrücke 32 auf ähnliche Weise wie im cRdShd-Fall arbeiten (Bezugszeichen 214 und 216 und Pfeil 222 für den gemeinsamen Fall des Victim Blocks, und Bezugszeichen 218 und 220 und Pfeil 222 für den modifizierten Fall des Victim Blocks). Wenn der RLD-Zustand für den Cache-Block A modifiziert ist, kann die Speicherbrücke 32 auf ähnliche Weise wie im cRdShd-Fall arbeiten (Bezugszeichen 224 und 226). Wenn der RLD-Zustand für den Cache-Block A gemeinsam ist, kann die Speicherbrücke 32 Kill-Befehle für jeden fernen gemeinsamen Knoten erzeugen (Bezugszeichen 228). Die Speicherbrücke 32 kann auf die Kill_Ack-Befehle von den fernen gemeinsamen Knoten warten (Bezugszeichen 230) und dann den Fill-Befehl mit dem auf der Verbindung 22 im Ansprechen auf die RdExc-Transaktion zur Verfügung gestellten Cache-Block A übertragen (Bezugszeichen 212).
  • Im Ansprechen auf einen Wr-Befehl für den Cache-Block A (z.B. einem Standard HT-Schreibbefehl – Bezugszeichen 240) kann die Speicherbrücke 32 eine Wr-Transaktion auf der Verbindung 22 generieren. Wenn der RLD-Zustand für den Cache-Block A ungültig ist, kann die Speicherbrücke 32 die Schreibdaten auf der Verbindung 22 übertragen, und der Wr-Befehl ist ausgeführt (Bezugszeichen 242). Wenn der RLD-Zustand für den Cache-Block A gemeinsam ist, kann die Speicherbrücke 32 für jeden fernen gemeinsamen Knoten Kill-Befehle erzeugen (Bezugszeichen 244) und die Kill_Ack-Befehle von diesen fernen Knoten sammeln (Bezugszeichen 246) – zusätzlich zum Übertragen der Daten auf der Verbindung 22. Wenn der RLD-Zustand für einen fernen Knoten modifiziert ist, kann die Speicherbrücke 32 einen Flush-Befehl für den fernen Knoten erzeugen (Bezugszeichen 248) und den WB-Befehl von dem fernen Knoten empfangen (Bezugszeichen 250). Bei einer Ausführungsform kann die Speicherbrücke 32 die Übertragung der Schreibdaten auf der Verbindung 22 so lange verzögern, bis der WB-Befehl oder Kill_Ack-Befehle empfangen worden ist/sind (obwohl die mit dem WB-Befehl zurückgegebenen Daten von der Speicherbrücke 32 fallen gelassen werden können).
  • Die oben genannten Befehle werden von der Speicherbrücke 32 für Cache-Blöcke empfangen, für die das System 10 einschließlich der Speicherbrücke 32 der Heimatknoten ist. Die Speicherbrücke 32 kann auch Flush-Befehle oder Kill-Befehle für Cache-Blöcke empfangen, für die das System 10 ein ferner Knoten ist. Im Ansprechen auf einen Flush-Befehl für den Cache-Block A (Bezugszeichen 260) kann die Speicherbrücke 32 eine RdKill- oder RdInv-Transaktion auf der Verbindung 22 initiieren. Wenn der lokale Zustand des Cache-Blocks modifiziert ist, kann die Speicherbrücke 32 einen WB-Befehl an den Heimatknoten übertragen, wobei der Cache-Block auf der Verbindung 22 im Ansprechen auf die RdKill- oder RdInv-Transaktion bereitgestellt wird (Bezugszeichen 262). Wenn der lokale Zustand des Cache-Blocks nicht modifiziert ist, antwortet die Speicherbrücke 32 nicht auf den Flush-Befehl (Bezugszeichen 264). In diesem Fall kann der Knoten bereits einen WB-Befehl an den Heimatknoten übertragen haben (z.B. im Ansprechen auf das lokale Entfernen des Cache-Blocks). Im Ansprechen auf einen Kill-Befehl an den Cache-Block A (Bezugszeichen 270) kann die Speicherbrücke 32 eine RdKill- oder RdInv-Transaktion auf der Verbindung 22 initiieren. Die Speicherbrücke 32 kann auf den Kill-Befehl mit einem Kill_Ack-Befehl antworten (Bezugszeichen 272).
  • Bei einer Ausführungsform kann die Speicherbrücke 32 auch so konfiguriert sein, dass sie einen nicht cachefähigen Lese-Befehl (RdNC) empfängt (z.B. entsprechend einem Standard HT-Lesebefehl) (Bezugszeichen 280). Im Ansprechen hierauf kann die Speicherbrücke 32 eine RdShd-Transaktion auf der Verbindung 22 initiieren. Wenn der RLD-Zustand für den Cache-Block, der die zu lesenden Daten enthält, modifiziert ist, kann die Speicherbrücke 32 einen Flush-Befehl an den fernen Knoten übertragen, der den modifizierten Cache-Block hat (Bezugszeichen 282) und kann den WB-Befehl von dem fernen Knoten empfangen (Bezugszeichen 284). Außerdem kann die Speicherbrücke 32 auf der Verbindung 22 empfangene Daten im Ansprechen auf die RdShd-Transaktion als Leseantwort (RSP) an den anfragenden Knoten liefern (Bezugszeichen 286).
  • 18 ist eine Tabelle, die eine Ausführungsform von Updates des fernen Leitungsverzeichnisses 34 im Ansprechen auf Transaktionen auf der Verbindung 22 zeigt. Die Spalte „Quelle" in 18 gibt an, ob die Quelle eine lokale kohärente Einrichtung (z.B. die Prozessoren 12A12N) oder eine ferne Einrichtung (über die Speicherbrücke 32) ist. Die Spalte „Transaktion" in 18 gibt die Transaktion (eine der Transaktionen aus der Tabelle 142) an. Die Spalte „RLD-Zustand" in 18 gibt den Zustand an, der von dem fernen Leitungsverzeichnis 34 im Ansprechen auf die Transaktion ausgegeben wird. Die bei dieser Ausführungsform möglichen Zustände sind M (Modified; modifiziert), S (Shared; gemeinsam) oder I (Invalid; ungültig oder Fehlschlag). Die Spalte „Neuer RLD-Zustand" in 18 gibt den Zustand an, zu dem das ferne Leitungsverzeichnis 34 im Ansprechen auf die Transaktion upgedatet wird. Die Spalte „Gesetzter Besitzer?" in 18 gibt an, ob der ferne Knoten, der die Transaktion verursacht hat, als Besitzer in dem fernen Leitungsverzeichnis 34 angegeben ist oder nicht (wobei „--„ unwichtig bedeutet). Die Spalte „Andere Besitzer Zurücksetzen?" gibt an, ob andere Besitzer, die in dem fernen Leitungsverzeichnis 34 angegeben sein können, entfernt werden oder nicht.
  • Für den Fachmann werden nach kompletter Durchsicht der vorstehenden Offenbarung zahlreiche Variationen und Modifizierungen offensichtlich. Die folgenden Ansprüche sind so auszulegen, dass sie alle diese Variationen und Modifizierungen mit umfassen.

Claims (26)

  1. Vorrichtung (300) mit: einem ersten System (10A), das einen Speicher (24A) und eine erste Vielzahl von Schnittstellenschaltungen (20A, 20B, 20C, 30A, 30B, 30C) aufweist, wobei jede der ersten Vielzahl von Schnittstellenschaltungen (20A, 20B, 20C, 30A, 30B, 30C) so aufgebaut ist, dass sie mit einer separaten Schnittstelle gekoppelt werden kann; und einem zweiten System (10B), das einen Speicher (24B) und eine zweite Vielzahl von Schnittstellenschaltungen (20A, 20B, 20C, 30A, 30B, 30C) aufweist, wobei jede der zweiten Vielzahl von Schnittstellenschaltungen (20A, 20B, 20C, 30A, 30B, 30C) so aufgebaut ist, dass sie mit einer separaten Schnittstelle gekoppelt werden kann; wobei eine erste Schnittstellenschaltung der ersten Vielzahl von Schnittstellenschaltungen (20A, 20B, 20C, 30A, 30B, 30C) und eine zweite Schnittstellenschaltung der zweiten Vielzahl von Schnittstellenschaltungen (20A, 20B, 20C, 30A, 30B, 30C) mit einer ersten Schnittstelle (308) gekoppelt sind, und wobei das erste System (10A) und das zweite System (10B) so aufgebaut sind, dass sie untereinander eine Mischung aus Paketen, nicht-kohärenten Befehlen und kohärenten Befehlen auf der ersten Schnittstelle (308) kommunizieren, so dass das erste System (10A) kohärent auf den Speicher (24B) des zweiten Systems (10B) zugreifen kann, und das zweite System (10B) kohärent auf den Speicher (24A) des ersten Systems (10A) zugreifen kann.
  2. Vorrichtung (300) nach Anspruch 1, wobei das erste System (10A) weiterhin eine erste Paket-Direkt-Speicherzugriffsschaltung („direct memory access" DMA) (16), eine erste Speicherbrücke (32) und eine erste Verbindung („interconnect") aufweist, an die die erste Paket-Direkt-Speicherzugriffsschaltung (16) und die erste Speicherbrücke (32) gekoppelt sind, und wobei eine dritte Schnittstellenschaltung der ersten Vielzahl von Schnittstellenschaltungen (20A, 20B, 20C, 30A, 30B, 30C) so gekoppelt ist, dass sie ein Paket auf einer zweiten Schnittstelle (306) empfängt, an die die dritte Schnittstellenschaltung gekoppelt ist, und wobei die dritte Schnittstellenschaltung so aufgebaut ist, dass sie das Paket zu der ersten Paket-Direkt-Speicherzugriffsschaltung (16) weiterleitet, und wobei die erste Paket-Direkt-Speicherzugriffsschaltung (16) so aufgebaut ist, dass sie eine oder mehrere Schreibtransaktionen auf der Verbindung generiert, und wobei die erste Paket-Direkt-Speicherzugriffsschaltung (16) so programmierbar ist, dass sie Adressen der einen oder mehreren Schreibtransaktionen generieren kann, die Speicherstellen in einem Speicher identifizieren, der mit dem zweiten System (10B) gekoppelt ist.
  3. Vorrichtung (300) nach Anspruch 2, wobei die erste Speicherbrücke (32) so aufgebaut ist, dass sie die Schreibtransaktionen auf der ersten Verbindung ermittelt und entsprechende Schreibbefehle im Ansprechen auf die Schreibtransaktionen generiert, und wobei die erste Speicherbrücke (32) so aufgebaut ist, dass sie die Schreibbefehle an die erste Schnittstellenschaltung weiterleitet.
  4. Vorrichtung (300) nach Anspruch 3, wobei die erste Schnittstellenschaltung so aufgebaut ist, dass sie die Schreibbefehle auf der ersten Schnittstelle (308) zur zweiten Schnittstellenschaltung weiterleitet.
  5. Vorrichtung (300) nach Anspruch 4, wobei das zweite System (10B) weiterhin eine zweite Speicherbrücke (32), eine zweite Verbindung und eine Speichersteuerung (14) aufweist, wobei die zweite Speicherbrücke (32) und die Speichersteuerung (14) an die zweite Verbindung gekoppelt sind, und wobei die zweite Speicherbrücke (32) so gekoppelt ist, dass sie die Schreibbefehle von der zweiten Schnittstellenschaltung empfängt und entsprechende Schreibtransaktionen auf der zweiten Verbindung zur Speichersteuerung (14) generiert, wobei die Speichersteuerung (14) so aufgebaut ist, dass sie mit dem Speicher (24) gekoppelt ist und den Speicher (24) im Ansprechen auf Schreibtransaktionen, die auf der zweiten Verbindung empfangen werden, updatet.
  6. Vorrichtung (300) nach Anspruch 1, wobei das erste System (10A) weiterhin eine Speichersteuerung (14), eine Paket-Direkt-Speicherzugriffsschaltung (16) und eine Verbindung aufweist, wobei die Speichersteuerung (14) und die Paket-Direkt-Speicherzugriffsschaltung (16) mit der Verbindung gekoppelt sind, und wobei die Speichersteuerung (14) an einen Speicher (24) gekoppelt ist, und wobei die Paket-Direkt-Speicherzugriffsschaltung (16) so aufgebaut ist, dass sie eine oder mehrere Lesetransaktionen generiert, um ein Paket aus dem Speicher (24) auszulesen.
  7. Vorrichtung (300) nach Anspruch 6, wobei die Paket-Direkt-Speicherzugriffsschaltung (16) so aufgebaut ist, dass sie das Paket an die erste Schnittstellenschaltung weiterleitet, und wobei die erste Schnittstellenschaltung so aufgebaut ist, dass sie das Paket auf der ersten Schnittstelle (308) zur zweiten Schnittstellenschaltung weiterleitet.
  8. Vorrichtung (300) nach Anspruch 7, wobei die zweite Schnittstellenschaltung so aufgebaut ist, dass sie das Paket an eine dritte Schnittstellenschaltung der zweiten Vielzahl von Schnittstellenschaltungen (20A, 20B, 20C, 30A, 30B, 30C) weiterleitet, und wobei die dritte Schnittstellenschaltung an eine zweite Schnittstelle (306) gekoppelt ist, auf der die dritte Schnittstellenschaltung so aufgebaut ist, dass sie das Paket weiterleitet.
  9. Vorrichtung (300) nach Anspruch 8, die weiterhin eine Paketschaltung aufweist, die mit der zweiten Schnittstelle (306) gekoppelt und so aufgebaut ist, dass sie das Paket empfängt.
  10. Vorrichtung (300) nach Anspruch 1, wobei eine dritte Schnittstellenschaltung der ersten Vielzahl von Schnittstellenschaltungen (20A, 20B, 20C, 30A, 30B, 30C) mit einer zweiten Schnittstelle (306) gekoppelt ist, und wobei das erste System (10A) weiterhin eine erste Paket-Direkt-Speicherzugriffsschaltung (16) aufweist, und wobei die dritte Schnittstellenschaltung so gekoppelt ist, dass sie ein erstes Paket und ein zweites Paket auf der zweiten Schnittstelle (306) empfängt, und wobei die dritte Schnittstellenschaltung so aufgebaut ist, dass sie das erste Paket an die erste Paket-Direkt-Speicherzugriffsschaltung (16) und das zweite Paket an die erste Schnittstellenschaltung weiterleitet.
  11. Vorrichtung (300) nach Anspruch 10, wobei das erste System (10A) weiterhin eine erste Speichersteuerung (14) und eine erste Verbindung aufweist, und wobei die erste Paket-Direkt-Speicherzugriffsschaltung (16) und die erste Speichersteuerung (14) an die erste Verbindung gekoppelt sind, und wobei die erste Paket-Direkt-Speicherzugriffsschaltung (16) so aufgebaut ist, dass sie eine oder mehrere Schreibtransaktionen an die erste Verbindung weiterleitet, um das erste Paket in einen ersten Speicher (24) zu schreiben, an den die erste Speichersteuerung (14) gekoppelt ist.
  12. Vorrichtung (300) nach Anspruch 10, wobei die erste Schnittstellenschaltung so aufgebaut ist, dass sie das zweite Paket auf der ersten Schnittstelle (308) zur zweiten Schnittstellenschaltung weiterleitet.
  13. Vorrichtung (300) nach Anspruch 12, wobei das zweite System (10B) weiterhin eine zweite Paket-Direkt-Speicherzugriffsschaltung (16), eine zweite Verbindung und eine zweite Speichersteuerung (14) aufweist, und wobei die zweite Paket-Direkt-Speicherzugriffsschaltung (16) und die zweite Speichersteuerung (14) mit der zweiten Verbindung gekoppelt sind, und wobei die zweite Schnittstellenschaltung so aufgebaut ist, dass sie das zweite Paket an die zweite Paket-Direkt-Speicherzugriffsschaltung (16) weiterleitet, und wobei die zweite Paket-Direkt-Speicherzugriffsschaltung (16) so aufgebaut ist, dass sie eine oder mehrere Schreibtransaktionen an die zweite Verbindung weiterleitet, um das zweite Paket in einen zweiten Speicher (24) zu schreiben, an den die zweite Speichersteuerung (14) gekoppelt ist.
  14. Vorrichtung (300) nach Anspruch 1, wobei das erste System (10A) weiterhin einen Prozessor (12A), eine Verbindung und eine Speicherbrücke (32) aufweist, wobei der Prozessor (12A) und die Speicherbrücke (32) an die Verbindung gekoppelt sind, und wobei der Prozessor (12A) so aufgebaut ist, dass er auf der Verbindung eine nicht-kohärente Schreibtransaktion generiert, und wobei die Speicherbrücke (32) so aufgebaut ist, dass sie im Ansprechen auf die nicht-kohärente Schreibtransaktion einen nicht-kohärenten Schreibbefehl erzeugt.
  15. Vorrichtung (300) nach Anspruch 14, wobei die Speicherbrücke (32) so aufgebaut ist, dass sie den nicht-kohärenten Schreibbefehl an die erste Schnittstellenschaltung weiterleitet, und wobei die erste Schnittstellenschaltung so aufgebaut ist, dass sie den nicht-kohärenten Schreibbefehl an die erste Schnittstelle (308) weiterleitet.
  16. Vorrichtung (300) nach Anspruch 15, wobei die zweite Schnittstellenschaltung so aufgebaut ist, dass sie den nicht-kohärenten Schreibbefehl empfängt und den nicht-kohärenten Schreibbefehl an eine dritte Schnittstellenschaltung der zweiten Vielzahl von Schnittstellenschaltungen weiterleitet, und wobei die dritte Schnittstellenschaltung so aufgebaut ist, dass sie den nichtkohärenten Schreibbefehl an eine zweite Schnittstelle (306) weiterleitet, an die die dritte Schnittstellenschaltung gekoppelt ist.
  17. Vorrichtung (300) nach Anspruch 16, die weiterhin eine Eingangs-/Ausgangs-(„I/O") Schaltung aufweist, die an die dritte Schnittstelle gekoppelt und so aufgebaut ist, dass sie den nicht-kohärenten Schreibbefehl empfängt.
  18. Vorrichtung (300) nach Anspruch 1, wobei das erste System (10A) weiterhin einen Prozessor (12A), eine Verbindung und eine Speicherbrücke (32) aufweist, wobei der Prozessor (12A) und die Speicherbrücke (32) mit der Verbindung gekoppelt sind, und wobei der Prozessor (12A) so aufgebaut ist, dass er auf der Verbindung eine Lesetransaktion generiert, und wobei die Speicherbrücke (32) so aufgebaut ist, dass sie im Ansprechen auf die Lesetransaktion einen Lesebefehl generiert.
  19. Vorrichtung (300) nach Anspruch 18, wobei die Speicherbrücke (32) so aufgebaut ist, dass sie den Lesebefehl an die erste Schnittstellenschaltung weiterleitet, und wobei die erste Schnittstellenschaltung so aufgebaut ist, dass sie den Lesebefehl an die erste Schnittstelle (308) weiterleitet.
  20. Vorrichtung (300) nach Anspruch 19, wobei der Lesebefehl ein nichtkohärenter Lesebefehl ist, und wobei die zweite Schnittstellenschaltung so aufgebaut ist, dass sie den Lesebefehl empfängt und den Lesebefehl an eine dritte Schnittstellenschaltung der zweiten Vielzahl von Schnittstellenschaltungen (20A, 20B, 20C, 30A, 30B, 30C) weiterleitet, und wobei die dritte Schnittstellenschaltung so aufgebaut ist, dass sie den Lesebefehl an eine zweite Schnittstelle weiterleitet, an die die dritte Schnittstellenschaltung gekoppelt ist.
  21. Vorrichtung (300) nach Anspruch 20, die weiterhin eine Eingangs/Ausgangs-Schaltung aufweist, die an die dritte Schnittstelle gekoppelt und so aufgebaut ist, dass sie den Lesebefehl empfängt und mit Lesedaten antwortet.
  22. Vorrichtung (300) nach Anspruch 19, wobei der Lesebefehl ein kohärenter Lesebefehl ist, und wobei die zweite Schnittstellenschaltung so aufgebaut ist, dass sie den Lesebefehl empfängt und den Lesebefehl an eine zweite Speicherbrücke (32) in dem zweiten System (10B) weiterleitet.
  23. Vorrichtung (300) nach Anspruch 22, wobei die zweite Speicherbrücke (32) so aufgebaut ist, dass sie eine zweite Lesetransaktion an eine zweite Verbindung in dem zweiten System (10B) weiterleitet und einen Füllbefehl generiert, der Lesedaten entsprechend des Lesebefehls im Ansprechen auf eine kohärente Vervollständigung der zweiten Lesetransaktion enthält.
  24. Vorrichtung (300) nach Anspruch 23, wobei die zweite Speicherbrücke (32) so aufgebaut ist, das sie den Füllbefehl an die zweite Schnittstellenschaltung weiterleitet, und wobei die zweite Schnittstellenschaltung so aufgebaut ist, dass sie den Füllbefehl an die erste Schnittstelle (308) weiterleitet.
  25. Vorrichtung (300) nach Anspruch 24, wobei die erste Schnittstellenschaltung so aufgebaut ist, dass sie den ersten Füllbefehl empfängt und den Füllbefehl an die Speicherbrücke (32) in dem ersten System (10A) weiterleitet, und wobei die Speicherbrücke (32) so aufgebaut ist, dass sie die Daten an den Prozessor (12A) als Daten für die Lesetransaktion zurückgibt.
  26. Verfahren, das umfasst: Weiterleiten von Paketen an eine Schnittstelle (308) zwischen einem ersten System (10A), wobei das erste System (10A) einen Speicher (24A) und eine erste Vielzahl von Schnittstellenschaltungen (20A, 20B, 20C, 30A, 30B, 30C) aufweist, und einem zweiten System (10B), wobei das zweite System (10B) einen Speicher (24B) und eine zweite Vielzahl von Schnittstellenschaltungen (20A, 20B, 20C, 30A, 30B, 30C) aufweist; Weiterleiten von kohärenten Befehlen an die Schnittstelle (308); und Weiterleiten von nicht-kohärenten Befehlen an die Schnittstelle (308); wobei das erste System (10A) und das zweite System (10B) untereinander eine Mischung aus Paketen, nicht-kohärenten Befehlen und kohärenten Befehlen auf der Schnittstelle (308) kommunizieren, so dass das erste System (10A) kohärent auf den Speicher (24B) des zweiten Systems (10B) zugreifen kann, und das zweite System (10B) kohärent auf den Speicher (24A) des ersten Systems (10A) zugreifen kann.
DE60201650T 2001-11-20 2002-11-20 Systeme, welche eine Mischung aus paketartigem, kohärentem und nicht-kohärentem Verkehr verwenden, um die Übertragung zwischen Systemen zu optimieren Expired - Lifetime DE60201650T2 (de)

Applications Claiming Priority (12)

Application Number Priority Date Filing Date Title
US33178901P 2001-11-20 2001-11-20
US331789P 2001-11-20
US34471301P 2001-12-24 2001-12-24
US344713P 2001-12-24
US34877702P 2002-01-14 2002-01-14
US34871702P 2002-01-14 2002-01-14
US348717P 2002-01-14
US348777P 2002-01-14
US38074002P 2002-05-15 2002-05-15
US380740P 2002-05-15
US10/269,922 US7206879B2 (en) 2001-11-20 2002-10-11 Systems using mix of packet, coherent, and noncoherent traffic to optimize transmission between systems
US269922 2002-10-11

Publications (2)

Publication Number Publication Date
DE60201650D1 DE60201650D1 (de) 2004-11-25
DE60201650T2 true DE60201650T2 (de) 2006-03-30

Family

ID=27559477

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60201650T Expired - Lifetime DE60201650T2 (de) 2001-11-20 2002-11-20 Systeme, welche eine Mischung aus paketartigem, kohärentem und nicht-kohärentem Verkehr verwenden, um die Übertragung zwischen Systemen zu optimieren

Country Status (4)

Country Link
US (2) US7206879B2 (de)
EP (1) EP1313024B1 (de)
AT (1) ATE280413T1 (de)
DE (1) DE60201650T2 (de)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7234029B2 (en) * 2000-12-28 2007-06-19 Intel Corporation Method and apparatus for reducing memory latency in a cache coherent multi-node architecture
US7752281B2 (en) * 2001-11-20 2010-07-06 Broadcom Corporation Bridges performing remote reads and writes as uncacheable coherent operations
US20040151170A1 (en) * 2003-01-31 2004-08-05 Manu Gulati Management of received data within host device using linked lists
US6981074B2 (en) * 2003-10-14 2005-12-27 Broadcom Corporation Descriptor-based load balancing
US20060129709A1 (en) * 2004-12-09 2006-06-15 International Business Machines Corporation Multipurpose scalable server communication link
US7499452B2 (en) * 2004-12-28 2009-03-03 International Business Machines Corporation Self-healing link sequence counts within a circular buffer
US7865624B1 (en) 2005-04-04 2011-01-04 Oracle America, Inc. Lookup mechanism based on link layer semantics
US7843926B1 (en) * 2005-04-05 2010-11-30 Oracle America, Inc. System for providing virtualization of network interfaces at various layers
US20070076685A1 (en) * 2005-09-30 2007-04-05 Pak-Lung Seto Programmable routing for frame-packet based frame processing
US7912998B2 (en) * 2006-01-06 2011-03-22 Hewlett-Packard Development Company, L.P. DMA access systems and methods
US7702743B1 (en) 2006-01-26 2010-04-20 Symantec Operating Corporation Supporting a weak ordering memory model for a virtual physical address space that spans multiple nodes
US7756943B1 (en) * 2006-01-26 2010-07-13 Symantec Operating Corporation Efficient data transfer between computers in a virtual NUMA system using RDMA
US11244727B2 (en) * 2006-11-29 2022-02-08 Rambus Inc. Dynamic memory rank configuration
US7924938B2 (en) 2007-09-24 2011-04-12 Wally Haas Context-sensitive overhead processor
US7930459B2 (en) * 2007-09-28 2011-04-19 Intel Corporation Coherent input output device
US8131944B2 (en) * 2008-05-30 2012-03-06 Intel Corporation Using criticality information to route cache coherency communications
US7970976B2 (en) * 2009-03-01 2011-06-28 Qualcomm Incorporated Remote memory access using reversible host/client interface
US8478877B2 (en) * 2010-02-24 2013-07-02 Oracle International Corporation Architecture-aware allocation of network buffers
US8135881B1 (en) * 2010-09-27 2012-03-13 Skyworks Solutions, Inc. Dynamically configurable serial data communication interface

Family Cites Families (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0077328A4 (de) * 1981-04-27 1985-06-26 Textron Inc Vielfachleitung für mehrere hauptprozessoren.
US4788679A (en) 1986-09-02 1988-11-29 Nippon Telegraph And Telephone Corporation Packet switch with variable data transfer rate links
US5765011A (en) 1990-11-13 1998-06-09 International Business Machines Corporation Parallel processing system having a synchronous SIMD processing with processing elements emulating SIMD operation using individual instruction streams
US5963745A (en) 1990-11-13 1999-10-05 International Business Machines Corporation APAP I/O programmable router
US5797026A (en) * 1994-02-28 1998-08-18 Intel Corporation Method and apparatus for self-snooping a bus during a boundary transaction
US5634004A (en) 1994-05-16 1997-05-27 Network Programs, Inc. Directly programmable distribution element
EP0692893B1 (de) 1994-07-12 2000-03-01 Ascom AG Vorrichtung zur Vermittlung in digitalen Datennetzen für asynchronen Transfermodus
DE69616402T2 (de) * 1995-03-31 2002-07-18 Sun Microsystems Inc Schnelle Zweitor-Cachesteuerungsschaltung für Datenprozessoren in einem paketvermittelten cachekohärenten Multiprozessorsystem
US5805920A (en) 1995-11-13 1998-09-08 Tandem Computers Incorporated Direct bulk data transfers
US5710907A (en) 1995-12-22 1998-01-20 Sun Microsystems, Inc. Hybrid NUMA COMA caching system and methods for selecting between the caching modes
US5887138A (en) 1996-07-01 1999-03-23 Sun Microsystems, Inc. Multiprocessing computer system employing local and global address spaces and COMA and NUMA access modes
US5878268A (en) 1996-07-01 1999-03-02 Sun Microsystems, Inc. Multiprocessing system configured to store coherency state within multiple subnodes of a processing node
US5813029A (en) 1996-07-09 1998-09-22 Micron Electronics, Inc. Upgradeable cache circuit using high speed multiplexer
US5961623A (en) * 1996-08-29 1999-10-05 Apple Computer, Inc. Method and system for avoiding starvation and deadlocks in a split-response interconnect of a computer system
WO1998015155A1 (de) 1996-09-30 1998-04-09 Siemens Aktiengesellschaft Verfahren zur mehrpunktverbindung in einem atm-übertragungssystem mit verbindungsindividuellen warteschlangen
JPH10154100A (ja) 1996-11-25 1998-06-09 Canon Inc 情報処理システム及び装置及びその制御方法
JP3904282B2 (ja) 1997-03-31 2007-04-11 株式会社ルネサステクノロジ 半導体集積回路装置
US6105119A (en) 1997-04-04 2000-08-15 Texas Instruments Incorporated Data transfer circuitry, DSP wrapper circuitry and improved processor devices, methods and systems
US6298370B1 (en) 1997-04-04 2001-10-02 Texas Instruments Incorporated Computer operating process allocating tasks between first and second processors at run time based upon current processor load
US6182201B1 (en) 1997-04-14 2001-01-30 International Business Machines Corporation Demand-based issuance of cache operations to a system bus
FR2762418B1 (fr) 1997-04-17 1999-06-11 Alsthom Cge Alcatel Procede de gestion d'une memoire partagee
US6072483A (en) * 1997-06-02 2000-06-06 Sony Corporation Active frame scroll interface
JP3524337B2 (ja) 1997-07-25 2004-05-10 キヤノン株式会社 バス管理装置及びそれを有する複合機器の制御装置
US6128728A (en) 1997-08-01 2000-10-03 Micron Technology, Inc. Virtual shadow registers and virtual register windows
US6101420A (en) 1997-10-24 2000-08-08 Compaq Computer Corporation Method and apparatus for disambiguating change-to-dirty commands in a switch based multi-processing system with coarse directories
US6209065B1 (en) 1997-10-24 2001-03-27 Compaq Computer Corporation Mechanism for optimizing generation of commit-signals in a distributed shared-memory system
US6108752A (en) 1997-10-24 2000-08-22 Compaq Computer Corporation Method and apparatus for delaying victim writes in a switch-based multi-processor system to maintain data coherency
US6085294A (en) 1997-10-24 2000-07-04 Compaq Computer Corporation Distributed data dependency stall mechanism
US6032228A (en) 1997-11-26 2000-02-29 International Business Machines Corporation Flexible cache-coherency mechanism
US6141733A (en) 1998-02-17 2000-10-31 International Business Machines Corporation Cache coherency protocol with independent implementation of optimized cache operations
US6289419B1 (en) 1998-03-06 2001-09-11 Sharp Kabushiki Kaisha Consistency control device merging updated memory blocks
US6070215A (en) 1998-03-13 2000-05-30 Compaq Computer Corporation Computer system with improved transition to low power operation
GB9806184D0 (en) 1998-03-23 1998-05-20 Sgs Thomson Microelectronics A cache coherency mechanism
US6185520B1 (en) 1998-05-22 2001-02-06 3Com Corporation Method and system for bus switching data transfers
US6195739B1 (en) 1998-06-29 2001-02-27 Cisco Technology, Inc. Method and apparatus for passing data among processor complex stages of a pipelined processing engine
US6266731B1 (en) 1998-09-03 2001-07-24 Compaq Computer Corporation High speed peripheral interconnect apparatus, method and system
US6338122B1 (en) * 1998-12-15 2002-01-08 International Business Machines Corporation Non-uniform memory access (NUMA) data processing system that speculatively forwards a read request to a remote processing node
US6631401B1 (en) 1998-12-21 2003-10-07 Advanced Micro Devices, Inc. Flexible probe/probe response routing for maintaining coherency
US6425060B1 (en) 1999-01-05 2002-07-23 International Business Machines Corporation Circuit arrangement and method with state-based transaction scheduling
US6681283B1 (en) * 1999-08-12 2004-01-20 Mips Technologies, Inc. Coherent data apparatus for an on-chip split transaction system bus
US6449701B1 (en) * 2000-09-20 2002-09-10 Broadcom Corporation Out of order associative queue in two clock domains
US7921188B2 (en) * 2001-08-16 2011-04-05 Newisys, Inc. Computer system partitioning using data transfer routing mechanism
US6912602B2 (en) * 2001-11-20 2005-06-28 Broadcom Corporation System having two or more packet interfaces, a switch, and a shared packet DMA circuit
US7394823B2 (en) * 2001-11-20 2008-07-01 Broadcom Corporation System having configurable interfaces for flexible system configurations
US7650412B2 (en) 2001-12-21 2010-01-19 Netapp, Inc. Systems and method of implementing disk ownership in networked storage

Also Published As

Publication number Publication date
DE60201650D1 (de) 2004-11-25
US7206879B2 (en) 2007-04-17
EP1313024A1 (de) 2003-05-21
US20030105828A1 (en) 2003-06-05
ATE280413T1 (de) 2004-11-15
EP1313024B1 (de) 2004-10-20
US7424561B2 (en) 2008-09-09
US20070214230A1 (en) 2007-09-13

Similar Documents

Publication Publication Date Title
DE60202926T2 (de) Multicomputersystem mit konfigurierbaren Schnittstellen für flexible Systemkonfigurationen
DE60203469T2 (de) System mit Schnittstellen und einem Schalter für die Trennung von kohärentem und nichtkohärentem Datenpaketverkehr
DE60201650T2 (de) Systeme, welche eine Mischung aus paketartigem, kohärentem und nicht-kohärentem Verkehr verwenden, um die Übertragung zwischen Systemen zu optimieren
DE60204213T2 (de) Level 2 Cache mit lokaler Beibehaltung von Kohärenzblöcken
DE60219436T2 (de) System mit adressbasierter Intraknotenkohärenz und datenbasierter Interknotenkohärenz
DE60207210T2 (de) System mit Schnittstellen, einem Schalter und einer Speicherbrücke mit cc-numa (cache-coherent non-uniform memory access)
DE60207177T2 (de) System, welches zwei oder mehr Paketschnittstellen, einen Schalter, einen gemeinsamen Paket-DMA (Direct Memory Access)-Schaltkreis sowie einen L2 (Level 2) Cache aufweist
DE60006842T2 (de) Multiprozessor-Node-Controller-Schaltung und Verfahren
DE60217221T2 (de) Ein-Chip System zur Paketverarbeitung
DE69133257T2 (de) Vorrichtung und verfahren zur schnellen paketvermittlung
DE69128107T2 (de) Busanordnung für Speicherzugriff
DE69722079T2 (de) Ein Mehrrechnersystem mit Anordnung zum Durchführen von Blockkopieroperationen
DE69729243T2 (de) Multiprozessorsystem mit Vorrichtung zur Optimierung von Spin-Lock-Operationen
DE69906585T2 (de) Datenverarbeitungssystem mit nichtuniformen speicherzugriffen (numa) mit spekulativer weiterleitung einer leseanforderung an einen entfernten verarbeitungsknoten
DE3486161T2 (de) Datenverarbeitungssystem mit Datenkohärenz.
DE60203358T2 (de) Systeme, welche Paketschnittstellen und Paket-DMA (Direct Memory Access) Schaltkreise beinhalten, um Paketströme zu teilen und zusammenzusetzen
DE69832943T2 (de) Sequenzsteuerungsmechanismus für ein switch-basiertes Mehrprozessorsystem
DE10316725B4 (de) Datenverwaltungsverfahren für ein Distributed Shared Memory-System
DE10045915A1 (de) Verfahren und System zum Steuern von Datenübertragungen mit physikalischer Trennung der Datenfunktionalität von der Adressen- und Steuerfunktionalität in einem verteilten Multi-Bus-Mehrprozessorsystem
DE112008002019T5 (de) Auslagern von Eingabe/Ausgabe (I/O)-Virtualisierungsarbeitsgängen an einem Prozessor
DE112013000891T5 (de) Verbessern der Prozessorleistung für Befehlsfolgen, die Sperrbefehle enthalten
DE102006030879A1 (de) System zum Reduzieren der Latenzzeit von exklusiven Leseanforderungen in einem symmetrischen Multiprozessorsystem
DE102008048627A1 (de) Zuteilen von Platz in dedizierten Cache-Wegen
DE10232926A1 (de) Cachesystem mit Leitungsgruppen und mit Kohärenz sowohl für einzelne Leitungen als auch Gruppen von Leitungen
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

Legal Events

Date Code Title Description
8332 No legal effect for de
8370 Indication related to discontinuation of the patent is to be deleted
8364 No opposition during term of opposition
8328 Change in the person/name/address of the agent

Representative=s name: BOSCH JEHLE PATENTANWALTSGESELLSCHAFT MBH, 80639 M