DE60203469T2 - System mit Schnittstellen und einem Schalter für die Trennung von kohärentem und nichtkohärentem Datenpaketverkehr - Google Patents

System mit Schnittstellen und einem Schalter für die Trennung von kohärentem und nichtkohärentem Datenpaketverkehr Download PDF

Info

Publication number
DE60203469T2
DE60203469T2 DE60203469T DE60203469T DE60203469T2 DE 60203469 T2 DE60203469 T2 DE 60203469T2 DE 60203469 T DE60203469 T DE 60203469T DE 60203469 T DE60203469 T DE 60203469T DE 60203469 T2 DE60203469 T2 DE 60203469T2
Authority
DE
Germany
Prior art keywords
coherent
memory
packet
circuit
interface
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
DE60203469T
Other languages
English (en)
Other versions
DE60203469D1 (de
Inventor
Barton J. Sano
Joseph B. Rowlands
James B. Keller
Laurent R. Moll
Koray Oner
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
Application granted granted Critical
Publication of DE60203469D1 publication Critical patent/DE60203469D1/de
Publication of DE60203469T2 publication Critical patent/DE60203469T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/901Buffering arrangements using storage descriptor, e.g. read or write pointers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/10Packet switching elements characterised by the switching fabric construction
    • H04L49/103Packet switching elements characterised by the switching fabric construction using a shared central buffer; using a shared memory
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9063Intermediate storage in different physical parts of a node or terminal
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9063Intermediate storage in different physical parts of a node or terminal
    • H04L49/9068Intermediate storage in different physical parts of a node or terminal in the network interface card
    • H04L49/9073Early interruption upon arrival of a fraction of a packet
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • H04L49/3009Header conversion, routing tables or routing tags

Description

  • HINTERGRUND DER ERFINDUNG
  • 1. Gebiet der Erfindung
  • Die vorliegende Erfindung betrifft die Gebiete der Paketverarbeitung und der Kohärenz.
  • 2. Beschreibung der verwandten Fachgebiete
  • Durch die kontinuierliche Ausweitung von Netzwerken und vernetzten Systemen (z.B. lokale Netze (LANs; local area networks), Weitbereichsnetze (WANs; wide area networks), das Internet, etc.), stellt die Paketverarbeitung eine immer wichtiger werdende Funktion für eine Vielfalt von Systemen dar. Die Menge der durchzuführenden Paketverarbeitung kann aufgrund der erhöhten Menge an Paketverkehr sowie auch der noch komplexeren Paketverarbeitung ansteigen, die bei jedem Paket unternommen wird (z.B. die Verarbeitung auf tieferen Schichten des Pakets).
  • Ein Paketverarbeitungssystem muß deshalb in der Lage sein, Pakete zur Verarbeitung zu empfangen und verarbeitete Pakete (oder neu generierte Pakete) zu übertragen. Außerdem kann es wünschenswert sein, daß ein Paketverarbeitungssystem skalierbar ist, damit das Paketverarbeitungssystem erweitert werden kann, um gesteigerte Paketverarbeitungsaufgaben zu bearbeiten.
  • Die EP-A-0 893 766 betrifft einen Busmanager und eine Steuervorrichtung mit einer Busbrücke, die jede von einer ersten Vielzahl einer Multifunktionseinrichtung als einen Master und jeden von einer zweiten Vielzahl von Bussen dieser Einrichtung als einen Slave unabhängig von einer Anforderung (request) eines Master-Busses verbindet.
  • Die EP-A-0 777 179 betrifft ein Datenverarbeitungssystem für den Transfer von Daten, das ein Netzwerk umfasst, das eine Vielzahl von Zentraleinheiten (CPUs) verbindet, die einen direkten Speicherzugriff (DMA; direct memory access) benutzen.
  • Es ist eine Aufgabe der vorliegenden Erfindung, eine Vorrichtung und ein Verfahren vorzusehen, die in der Lage sind, einen gemischten Verkehr aus Paketdaten und kohärenten Daten zu routen. Diese Aufgabe wird durch die Vorrichtung von Anspruch 1, das Verfahren von Anspruch 14 und das Computer-Softwareprogramm von Anspruch 18 gelöst. Vorteilhafte Ausführungsformen der Erfindung sind in den anhängenden Ansprüchen definiert.
  • Zusammenfassung der Erfindung
  • In einer Ausführungsform umfasst eine Vorrichtung eine oder mehrere Schnittstellenschaltungen, eine Verbindung (interconnect), eine mit der Verbindung gekoppelte Speichersteuerung, eine mit der Verbindung gekoppelte Speicherbrücke, eine mit der Verbindung gekoppelte Paket-DMA (Direct Memory Access; Direktspeicherzugriffs-)Schaltung, und einen Schalter. Jede Schnittstellenschaltung ist mit einer entsprechenden Schnittstelle gekoppelt. Die eine oder mehreren Schnittstellenschaltungen sind so gekoppelt, dass sie Pakete und kohärente Befehle von den Schnittstellen empfangen. Die Speichersteuerung ist so aufgebaut, dass sie mit einem Speicher koppelt. Der Schalter ist mit den Schnittstellenschaltungen, der Speicherbrücke und der Paket-DMA-Schaltung gekoppelt. Der Schalter ist so aufgebaut, dass er die kohärenten Befehle von den Schnittstellenschaltungen zu der Speicherbrücke und die Pakete von den Schnittstellenschaltungen zu der Paket-DMA-Schaltung routet. Die Speicherbrücke ist so aufgebaut, dass sie entsprechende Transaktionen auf der Verbindung im Ansprechen auf wenigstens einige der kohärenten Befehle initiiert. Die Paket-DMA-Schaltung ist so aufgebaut, dass sie Schreibtransaktionen auf der Verbindung zu der Speichersteuerung überträgt, um die Pakete in dem Speicher zu speichern. In einigen Ausführungsformen kann die Vorrichtung eine Skalierbarkeit durch die Kohärenz und das Routen des Paketverkehrs zwischen mehreren Instanzen der Vorrichtung vorsehen.
  • Es wird ein Verfahren betrachtet. Pakete und kohärente Befehle werden auf einer oder mehreren Schnittstellen empfangen. Die Pakete und die kohärenten Befehle werden durch einen Schalter geroutet, wobei die Pakete zu einer Paket-DMA-Schaltung und die kohärenten Befehle zu einer Speicherbrücke geroutet werden. Die Speicherbrücke generiert Transaktionen auf einer Verbindung im Ansprechen auf wenigstens einige der kohärenten Befehle. Die Paket-DMA-Schaltung generiert Transaktionen auf der Verbindung, um die Pakete in einen Speicher zu schreiben.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Die nachfolgende ausführliche Beschreibung bezieht sich auf die beigefügten Zeichnungen, die nun kurz beschrieben werden.
  • 1 ist ein Blockdiagramm einer Ausführungsform eines Systems.
  • 2 ist ein Blockdiagramm einer Ausführungsform einer Schalterschnittstelle.
  • 3 ist ein Blockdiagramm, das einen beispielhaften kohärenten und Paket-Verkehr in einer Ausführungsform des Systems veranschaulicht.
  • 4 ist ein Blockdiagramm einer Ausführungsform einer Rx-Schaltung, die in 1 gezeigt ist.
  • 5 ist ein Blockdiagramm einer Ausführungsform einer H & R-Schaltung, die in 4 gezeigt ist.
  • 6 ist ein Automat, der die Operation einer Ausführungsform des Schalters veranschaulicht, der in den 1 und 2 gezeigt ist.
  • 7 ist ein Blockdiagramm einer Ausführungsform eines Deskriptorrings, der von einer Ausführungsform einer Paket-DMA-Schaltung verwendet werden kann, welches in 1 gezeigt ist.
  • 8 ist ein Blockdiagramm einer Ausführungsform eines Deskriptors, der in 7 gezeigt ist.
  • 9 ist eine Tabelle von beispielhaften Transaktionen und beispielhaften kohärenten Befehlen.
  • 10 ist ein Blockdiagramm einer Ausführungsform eines Adressraumes, der von einer Ausführungsform des Systems benutzt wird.
  • 11 ist ein Entscheidungsbaum, der die Operation einer Ausführungsform eines Knotens für eine Lesetransaktion auf der Verbindung in dem System veranschaulicht.
  • 12 ist ein Entscheidungsbaum, der die Operation einer Ausführungsform eines Knotens für eine Schreibtransaktion auf der Verbindung in dem System veranschaulicht.
  • 13 ist ein Diagramm, das die Operation einer Ausführungsform der in 1 gezeigten Speicherbrücke für ferne kohärente Befehle veranschaulicht, die von der Speicherbrücke empfangen werden.
  • 14 ist eine Tabelle, die exemplarische Aktualisierungen einer Ausführungsform eines Fernleitungsverzeichnisses (remote line directory) veranschaulicht.
  • 15 ist ein Blockdiagramm einer Ausführungsform eines Mediums für den Zugriff durch den Computer.
  • Obwohl die Erfindung verschiedene Modifikationen und alternative Formen zuläßt, werden nur spezielle Ausführungsformen davon beispielshalber in den Zeichnungen gezeigt und im folgenden genauer beschrieben.
  • GENAUE BESCHREIBUNG DER AUSFÜHRUNGSFORMEN
  • Nun wird 1 betrachtet, die ein Blockdiagramm einer Ausführungsform eines Systems 10 zeigt. In der Ausführungsform von 1 umfasst das System 10 einen oder mehrere Prozessoren 12A12N, eine Speichersteuerung 14, einen Schalter 18, einen Satz von Schnittstellenschaltungen 20A20C, eine Speicherbrücke 32, eine Paket-DMA-Schaltung 16 und einen L2-Cache 36. Die Speicherbrücke 32 umfasst ein Fernleitungsverzeichnis 34. Das System 10 umfasst eine Verbindung 22, mit der die Prozessoren 12A12N, die Speichersteuerung 14, der L2-Cache 36, die Speicherbrücke 32, die Paket-DMA-Schaltung 16 und das Fernleitungsverzeichnis 34 gekoppelt sind. Das System 10 ist durch die Speichersteuerung 14 mit einem Speicher 24 gekoppelt. Die Schnittstellenschaltungen 20A20C umfassen jede eine Empfangsschaltung (Rx-Schaltung) 26A26C und eine Übertragungsschaltung (Tx-Schaltung) 28A28C. Das System 10 ist mit einem Satz von Schnittstellen 30A30C durch die jeweiligen Schnittstellenschaltungen 20A20C gekoppelt. Die Schnittstellenschaltun gen 20A20C sind mit dem Schalter 18 gekoppelt, der außerdem mit der Speicherbrücke 32 und der Paket-DMA-Schaltung 16 gekoppelt ist. Ein Konfigurationsregister 38 ist ebenfalls in 1 veranschaulicht, das eine Knotennummer (Knoten #) für das System 10 speichert. In der Ausführungsform von 1 ist das Konfigurationsregister 38 mit dem L2-Cache 36, der Speichersteuerung 14, der Speicherbrücke 32 und den Schnittstellenschaltungen 20A20C gekoppelt. Die Prozessoren 12A12N können ebenfalls gekoppelt sein, um die Knotennummer von dem Konfigurationsregister 38 zu empfangen.
  • Das System 10 kann als ein Knoten in einem kohärenten System mit mehreren Knoten ausgelegt sein. In so einem kohärenten System kann die Zwischenknoten-Kohärenz (internode coherency) über kohärente Befehle aufrechterhalten werden, die an das System 10 und von dem System 10 auf einer oder mehreren der Schnittstellen 30A30C übertragen werden (jeweils über die Schnittstellenschaltungen 20A20C). Außerdem können Pakete auf einer oder mehreren Schnittstellen 30A30C (über die Schnittstellenschaltungen 20A20C) übertragen/empfangen werden. Somit kann eine Mischung aus Paketverkehr und kohärentem Verkehr auf den Schnittstellen 30A30C empfangen werden. So wie sie hier verwendet wird, umfasst eine Speicherbrücke eine Schaltungsanordnung, die so ausgelegt ist, dass sie die Zwischenknoten-Kohärenzfunktionen in einem Knoten handhaben kann. Somit 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 der Transaktionen auf der Verbindung 22, die von anderen Einrichtungen (Agenten) generiert werden, kann die Speicherbrücke 32 kohärente Befehle generieren. So wie sie hier verwendet wird, umfasst eine Paket-DMA-Schaltung eine Schaltungsanordnung zur Kommunizierung der Pakete zu und von einem Speicher. Die Paket-DMA-Schaltung 16 kann Schreibtransaktionen auf der Verbindung 22 zu der Speicherschaltung 14 generieren, um empfangene Pakete in den Speicher 24 zu schreiben, und sie kann Lesetransaktionen auf der Verbindung 22 generieren, um die Pakete aus dem Speicher 24 zur Übertragung durch eine der Schnittstellenschaltungen 20A20C auszulesen.
  • Der Schalter 18 kann kohärenten Verkehr und Paketverkehr von den Schnittstellenschaltungen 20A20C trennen, wobei er den kohärenten Verkehr zu der Speicherbrücke 32 routet und den Paketverkehr zu der Paket-DMA-Schaltung 16 routet. In einer Ausführungsform kann der Schalter 18 im allgemeinen Quellen und Ziele auswählen, die zur Kommunikation auf der Grundlage von Anforderungen von den Quellen gekoppelt werden sollen, um Daten und Daten-Anforderungen von den Zielen zu übertragen. Zum Beispiel können die Schnittstellenschaltungen 20A20C (vor allem die Rx-Schaltungen 26A26C) kohärente Befehle und Pakete identifizieren, die auf den Schnittstellen 30A30C empfangen werden, und sie können den Transfer zu der Paket-DMA-Schaltung 16 (für Pakete) und zu der Speicherbrücke 32 (für kohärente Befehle) anfordern. Wenn die Paket-DMA-Schaltung 16 oder die Speicherbrücke 32 die Fähigkeit angezeigt hat, Daten des entsprechenden Typs empfangen zu können, kann der Schalter 18 einen Transfer zwischen einer anfordernden Rx-Schaltung 26A26C und der Paket-DMA-Schaltung 16 oder der Speicherbrücke 32 gewähren. In ähnlicher Weise kann der Paketmanager 16 oder die Speicherbrücke 32 einen Transfer zu einer Schnittstellenschaltung 20A20C (vor allem zu einer Tx-Schaltung 28A28C) anfordern. Wenn die Tx-Schaltung 28A28C die Fähigkeit angezeigt hat, dass Daten des entsprechenden Typs empfangen werden können, kann der Schalter 18 einen Transfer zwischen der anfordernden Paket-DMA-Schaltung 16/Speicherbrücke 32 und der Tx-Schaltung 28A28C gewähren.
  • In einer Ausführungsform können die Schnittstellen 30A30C einen Satz von virtuellen Kanälen unterstützen, in denen kohärente Befehle, nicht-kohärente Befehle und Pakete übertragen werden. Jeder virtueller Kanal ist so definiert, dass er unabhängig von den anderen virtuellen Kanälen fließt, selbst wenn sich die virtuellen Kanäle eventuell bestimmte physikalische Ressourcen teilen (z.B. die Schnittstelle 30A30C, auf der die Befehle fließen). Diese virtuellen Kanäle können internen virtuellen Kanälen zugeordnet sein (die im folgenden als virtuelle Schalterkanäle (switch virtual channels) bezeichnet werden). Der Schalter 18 kann eine Sensitivität bezüglich der virtuellen Kanäle aufweisen. Das heißt, der Schalter 18 kann ein Koppeln zwischen einer Quelle und einem Ziel nicht nur auf der Grundlage der Fähigkeit der Quelle, Daten zu übertragen, und des Ziels, Daten zu empfangen, sondern auch auf der Grundlage der Fähigkeit der Quelle, Daten in einem bestimmten virtuellen Schalterkanal zu übertragen, und des Ziels, Daten auf diesem virtuellen Schalterkanal zu empfangen, gestatten. Somit können Anforderungen von den Quellen das Ziel und den virtuellen Kanal anzeigen, auf dem die Daten zu übertragen sind, und Anforderungen von dem Ziel können den virtuellen Kanal angeben, auf dem Daten empfangen werden können. Die virtuellen Schalterkanäle können ein Ziel und einen virtuellen Kanal bei diesem Ziel identifizieren, und sie können als das Ziel und der virtuelle Kanal bezeichnet werden, oder sie können hier zusammengefaßt als der virtuelle Schalterkanal bezeichnet werden.
  • Zusätzlich kann der Schalter 18 bei einigen Ausführungsformen Eingaben für einen gegebenen virtuellen Zielkanal (destination virtual channel) auf einer Paketgrenze zusammensetzen. Das heißt, wenn zwei Quellen einen Transfer von Paketdaten zu dem gleichen Ziel und virtuellen Kanal anfordern und eine der Quellen eine Gewährung für dieses Ziel und diesen virtuellen Kanal erhalten hat, verhindert der Schalter, dass die andere Quelle eine Gewährung für dieses Ziel und diesen virtuellen Kanal erhält, bis die aktive Quelle eine Paketgrenze erreicht. Eine ähnliche Grenzbedingung kann für kohärente Befehle benutzt werden, wenn mehr als ein Transfer durch den Schalter 18 benutzt wird, um kohärente Befehle zu übertragen.
  • Jede der Schnittstellen 30A30C, die für kohärente Kommunikationen verwendet wird, ist so definiert, dass sie in der Lage ist, kohärente Befehle zu übertragen und zu empfangen. Hauptsächlich in der Ausführungsform von 1 können diese Schnittstellen 30A30C so definiert sein, dass sie kohärente Befehle zu und von dem System 10 von anderen Knoten empfangen/übertragen. Außerdem können auch andere Typen von Befehlen unterstützt werden. In einer Ausführungsform kann jede Schnittstelle 30A30C, die dazu benutzt wird, kohärente Befehle zu übertragen, eine HyperTransportTM (HT)-Schnittstelle sein, einschließlich einer Erweiterung für die HT-Schnittstelle, um kohärente Befehle (HTcc) einzuschließen. Außerdem kann in einigen Ausführungsformen eine Erweiterung für die HyperTransport-Schnittstelle zur Übertragung von Paketdaten (Paket über HyperTransport bzw. PoHT) unterstützt werden. So wie sie hier benutzt werden, umfassen die kohärenten Befehle alle Kommunikationen zwischen Knoten, die benutzt werden, um die Kohärenz zwischen den Knoten aufrechtzuerhalten. Die Befehle können Lese- oder Schreibanforderungen, die von einem Knoten initiiert werden, um einen Cacheblock abzurufen oder zu aktualisieren, der zu einem anderen Knoten gehört, Probes, um gecachete (cached) Kopien von Cacheblöcken in Fernknoten (remote nodes) ungültig zu machen (und um möglicherweise eine modifizierte Kopie des Cacheblocks zum Heimatknoten (home node) zurückzuführen), Antworten auf Probe-Befehle, Fills, die Daten übertragen, etc., umfassen.
  • Eine gegebene HT-Schnittstelle kann somit eine Mischung aus kohärentem Verkehr und Paketverkehr unterstützen. In einigen Ausführungsformen kann eine gegebene HT-Schnittstelle außerdem nicht-kohärente Befehle unterstützen (z.B. Standard-HT-Befehle). Die Speicherbrücke 32 kann außerdem die nicht-kohärenten Befehle handhaben, und somit kann der Schalter 18 die nicht-kohärenten Befehle zu der Speicherbrücke 32 routen. Somit kann der Verkehr auf einer gegebenen HT-Schnittstelle, der von einer der Schnittstellenschaltungen 20A20C empfangen wird, geroutet werden: (i) zu der Paket-DMA-Schaltung 16 (für einen PoHT-Befehl); (ii) der Speicherbrücke 32 (für einen kohärenten Befehl oder einen nicht-kohärenten Befehl, der in dem System 10 verarbeitet werden soll); oder (iii) einer anderen Schnittstellenschaltung 20A20C (für jeglichen Typ von Befehl, der nicht auf das System 10 abzielt). Die virtuellen Kanäle auf den HT-Schnittstellen können die standardmäßigen virtuellen HT-Kanäle (HT virtual channels) sowie auch einige zusätzliche virtuelle Kanäle umfassen, die für die HTcc- und/oder PoHT-Erweiterungen definiert sind. Die virtuellen HTcc-Kanäle (HTcc virtual channels) sind in 9 gezeigt, und die PoHT-Erweiterungen können eine Anzahl von virtuellen Paketkanälen (packet virtual channels) umfassen (z.B. in einer Ausführungsform 16 virtuelle Kanäle).
  • In einigen Ausführungsformen dürfen eine oder mehrere der Schnittstellenschaltungen 20A20C nicht für das Kohärenzmanagement verwendet werden und können als Paketschnittstellen definiert sein. Die entsprechenden Schnittstellen 30A30C können HT-Schnittstellen sein, die die PoHT-Erweiterung benutzen. Alternativ dazu können diese Schnittstellen 30A30C System-Paket-Schnittstellen (SPI; system packet interface) gemäß einem Level der SPI-Spezifikation sein, die von dem Optical Internetworking Forum veröffentlicht wurde (z.B. Level 3, Level 4 oder Level 5). In einer bestimmten Ausführungsform können die Schnittstellen SPI-4-Phase-2-Schnittstellen sein. In der veranschaulichten Ausführungsform kann jede Schnittstellenschaltung 20A20C so aufbaubar sein, dass sie entweder auf der SPI-4-Schnittstelle oder auf der HT-Schnittstelle kommunizieren kann. Jede Schnittstellenschaltung 20A20C kann individuell programmierbar sein, wobei verschiedene Kombinationen der HT- und SPI-4-Schnittstellen als Schnittstellen 30A30C erlaubt sind. Die Programmierung kann auf jegliche Art durchgeführt werden (z.B. Abtasten bestimmter Signale während des Rücksetzens, Verschieben von Werten in Konfigurationsregister (nicht gezeigt) während des Rücksetzens, Programmieren der Schnittstellen mit Konfigurationsraumbefehlen nach dem Rücksetzen, Pins, die extern belegt werden, um die gewünschte Programmierung anzuzeigen, etc.). Andere Ausführungsformen können jede Schnittstelle verwenden, die in der Lage ist, Paketdaten zu unterstützen (z.B. das Media Independent Interface (MII) oder die Gigabit MII (GMII)-Schnittstellen, X.25, Frame Relay, Asynchronous Transfer Mode (ATM) (asynchroner Transfermodus), etc.). Die Paketschnittstellen können Paketdaten direkt (z.B. Übertragen der Paketdaten mit verschiedenen Steuerinformationen, die den Start des Pakets, das Ende des Pakets, etc. anzeigen) oder indirekt unterstützen (z.B. Übertragen der Paketdaten als eine Nutzlast eines Befehls, wie z.B. ein PoHT). Die SPI-4-Schnittstelle kann 16 virtuelle Hardwarekanäle (hardware virtual channels) definieren, die auf 256 virtuelle Kanäle in der Software erweitert werden können.
  • In einigen Ausführungsformen kann die Kombination aus der Paket-DMA-Schaltung 16, der Speicherbrücke 32, dem Schalter 18 und den Schnittstellenschaltungen 20A20C skalierbare, effiziente Paketverarbeitungssysteme vorsehen. Pakete können auf einer oder mehreren Schnittstellen empfangen werden und auf anderen Schnittstellen hinausgeroutet werden, oder sie können in dem Speicher 24 zur Verarbeitung gespeichert werden. Pakete, die auf anderen Schnittstellen hinausgeroutet werden, können an andere Instantiationen des Systems 10 übertragen werden, die die empfangenen Pakete verarbeiten können. Durch die Vorsehung eines kohärenten Zugriffs quer durch die Knoten, die von jedem System 10 gebildet werden, kann die Skalierbarkeit auf mehr Knoten in einigen Ausführungsformen erleichtert werden, indem erlaubt wird, dass der Speicher in jedem Knoten in einer NUMA-Typ-Struktur verwendet wird.
  • Zum Beispiel kann ein Paket, das in einem Knoten empfangen wird, zu der Paket-DMA-Schaltung 16 geroutet werden. Die Paket-DMA-Schaltung 16 kann so programmiert sein, dass sie das Paket in dem fernen Speicher speichert. Im Ansprechen auf Schreibvorgänge (writes) auf der Verbindung 22, die von der Paket-DMA-Schaltung 16 initiiert wurden, kann die Speicherbrücke 32 die Schreibvorgänge erfassen und entsprechende kohärente Schreibbefehle an den Heimatknoten des fernen Speichers übertragen. Der Heimatknoten kann die Pakete verarbeiten, oder die Pakete können kohärent quer über andere Knoten gemeinsam benutzt werden. Die gemeinsame kohärente Benutzung der Pakete kann z.B. die Lastverteilung unter den Knoten erleichtern. In einem anderen Beispiel können die Paketdaten von einer Paketquelle als nicht-kohärente Schreibvorgänge (z.B. HT-Schreibvorgänge) übertragen werden. Die nicht-kohärenten Schreibvorgänge können durch verschiedene Knoten zu dem Heimatknoten des Speichers wandern, der durch die Schreibvorgänge aktualisiert wird. Im Heimatknoten können die nicht-kohärenten Schreibvorgänge den Speicher aktualisieren (und können, falls gewünscht, an dieser Stelle die kohärente Domäne betreten). Ein derartiger Mechanismus kann Read-Modify-Write-Vorgänge (Lese-/Abänderungs-/Schreib-Vorgänge) zwischen den Knoten verhindern, um die Paketdaten zu übertragen. In noch einem anderen Beispiel können die Pakete automatisch von den Rx-Schaltungen 26A26C zu einem gewünschten Knoten geroutet werden.
  • Als nächstes wird ein Überblick über eine Ausführungsform des Zwischenknoten-Kohärenzmechanismus gegeben. Weitere Einzelheiten in bezug auf den Zwischenknoten-Kohärenzmechanismus (für eine Ausführungsform) werden weiter unten vorgesehen (z.B. im Hinblick auf die 914).
  • Das System 10 kann eine Intraknoten-Kohärenz (intranode coherency) für Transaktionen auf der Verbindung 22 unterstützen. Außerdem kann das System 10 die Zwischenknoten-Kohärenz (internode coherency) mit anderen Knoten unterstützen (in einer Ausführungsform z.B. eine CC-NUMA-Kohärenz). Wenn zum Beispiel in einer Ausführungsform eine Transaktion auf der Verbindung 22 (z.B. eine Transaktion, die von den Prozessoren 12A12N ausgegeben wurde) auf einen Cacheblock zugreift, der fern von dem System 10 ist (d.h. der Cacheblock ist Teil des Speichers, der mit einem anderen Knoten gekoppelt ist) und das System 10 keine ausreichenden Eigentumsrechte (ownership) besitzt, um die Transaktion durchzuführen, kann die Speicherbrücke 32 einen oder mehrere kohärente Befehle an die anderen Knoten ausgeben, um die Eigentumsrechte zu erhalten (und in manchen Fällen eine Kopie des Cacheblocks). In ähnlicher Weise kann dann, wenn die Transaktion auf einen lokalen Cacheblock zugreift, aber ein anderer oder mehrere andere Knoten eine Kopie des Cacheblocks besitzen, 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 kann Transaktionen auf der Verbindung 22 durchführen, um die kohärenten Befehle zu bewirken.
  • In einer Ausführungsform kann mit einem Knoten wie z.B. dem System 10 ein Speicher gekoppelt sein (z.B. der Speicher 24). Der Knoten kann dafür verantwortlich sein, in anderen Knoten den Zustand jedes Cacheblocks von dem Speicher in diesem Knoten zu verfolgen. Ein Knoten wird als der "Heimatknoten" für Cacheblöcke aus dem Speicher bezeichnet, die diesem Knoten zugewiesen sind. Ein Knoten wird als ein "Fernknoten" für einen Cacheblock bezeichnet, wenn der Knoten nicht der Heimatknoten für diesen Cacheblock ist. In ähnlicher Weise wird ein Cacheblock als ein lokaler Cacheblock in dem Heimatknoten für diesen Cacheblock und als ein ferner Cacheblock in anderen Knoten bezeichnet.
  • Im allgemeinen kann ein Fernknoten den Kohärenzprozess dadurch beginnen, dass er eine Kopie eines Cacheblocks von dem Heimatknoten desjenigen Cacheblocks anfordert, der einen kohärenten Befehl verwendet. Die Speicherbrücke 32 in dem Fernknoten kann zum Beispiel eine Transaktion auf der Verbindung 22 feststel len, die auf den Cacheblock zugreift, und kann feststellen, dass der Fernknoten nicht genügend Eigentumsrechte bezüglich des Cacheblocks besitzt, um die Transaktion zu vollenden (z.B. kann es sein, dass er überhaupt keine Kopie des Cacheblocks besitzt, oder es kann sein, dass er eine gemeinsam benutzte Kopie besitzt und dass er exklusive Eigentumsrechte benötigt, um die Transaktion vollenden zu können). Die Speicherbrücke 32 in dem Fernknoten kann den kohärenten Befehl generieren und an den Heimatknoten weiterleiten, um die Kopie oder ausreichende Eigentumsrechte zu bekommen. Die Speicherbrücke 32 in dem Heimatknoten kann bestimmen, ob irgendwelche Zustandsänderungen in anderen Knoten durchgeführt werden müssen, um dem Fernknoten die angeforderten Eigentumsrechte zu gewähren, und sie kann kohärente Befehle (z.B. Probe-Befehle) übertragen, um die Zustandsänderungen zu bewirken. Die Speicherbrücke 32 in jedem Knoten, der die Probe-Befehle erhält, kann die Zustandsänderungen bewirken und auf die Probe-Befehle antworten. Wenn die Antworten empfangen worden sind, kann die Speicherbrücke 32 in dem Heimatknoten dem Fernknoten antworten (z.B. mit einem Fill-Befehl (Füllbefehl; fill command), der den Cacheblock umfasst).
  • Das Fernleitungsverzeichnis 34 kann in dem Heimatknoten verwendet werden, um den Zustand der lokalen Cacheblöcke in den Fernknoten zu verfolgen. Das Fernleitungsverzeichnis 34 wird jedes Mal dann aktualisiert, wenn ein Cacheblock an einen Fernknoten übertragen wird, der Fernknoten den Cacheblock dem Heimatknoten zurückgibt, oder der Cacheblock über Probes ungültig gemacht wird. So wie er hier benutzt wird, bezieht sich der "Zustand" eines Cacheblocks in einem gegebenen Knoten auf eine Angabe der Eigentumsrechte, die der gegebene Knoten für den Cacheblock gemäß dem Kohärenzprotokoll besitzt, das von den Knoten implementiert wird. Bestimmte Levels von Eigentumsrechten können keinen Zugriff, einen Nur-Lese-Zugriff oder einen Lese-Schreib-Zugriff auf den Cacheblock erlauben. In einer Ausführungsform werden die modifizierten, gemeinsam benutzten und ungültigen Zustände zum Beispiel in dem Zwischenknoten-Kohärenzprotokoll unterstützt. In dem modifizierten Zustand kann der Knoten den Cacheblock lesen und schreiben, und der Knoten ist dafür verantwortlich, den Block dem Heimatknoten zurückzugeben, wenn er aus dem Knoten beseitigt wird. Im gemeinsam benutzten Zustand kann der Knoten den Cacheblock zwar lesen, aber den Cacheblock nicht schreiben, ohne dass ein kohärenter Befehl an den Heimatknoten übertragen wird, um den modifizierten Zustand für den Cacheblock zu erhalten. In ungültigen Zustand kann der Knoten den Cacheblock weder lesen, noch schreiben (d.h. der Knoten besitzt keine gültige Kopie des Cacheblocks). Andere Ausführungsformen können andere Kohä renzprotokolle benutzen (z.B. das MESI-Protokoll, das die modifizierten, gemeinsam benutzten und ungültigen Zustände sowie auch einen exklusiven Zustand umfasst, in dem der Cacheblock zwar noch nicht aktualisiert worden ist, aber der Knoten den Cacheblock lesen und schreiben darf, oder das MOESI-Protokoll, das die modifizierten, exklusiven, gemeinsam benutzten und ungültigen Zustände sowie einen Besitzzustand umfasst, der angibt, dass es vielleicht gemeinsam benutzte Kopien des Blocks gibt, aber die Kopie im Hauptspeicher veraltet ist). In einer Ausführungsform können Einrichtungen in dem Knoten das MESI-Protokoll für die Intraknoten-Kohärenz implementieren. Somit kann der Knoten so betrachtet werden, dass er einen Zustand in der Zwischenknoten-Kohärenz besitzt, und individuelle Einrichtungen können einen Zustand in der Intraknoten-Kohärenz aufweisen (in Einklang stehend mit dem Zwischenknoten-Kohärenzzustand für den Knoten, der die Einrichtung enthält).
  • Allgemein gesagt kann ein Knoten eine oder mehrere kohärente Einrichtungen umfassen (gestrichelte Umrandung 40 in 1). In der Ausführungsform von 1 können die Prozessoren 12A12N, der L2-Cache 36 und die Speichersteuerung 14 Beispiele für kohärente Einrichtungen 40 sein. Aber andere Ausführungsformen können ebenso andere kohärente Einrichtungen umfassen, wie z.B. eine Brücke zu einer oder mehreren E/A-Schnittstellenschaltungen oder die E/A-Schnittstellenschaltungen selber. Die Speicherbrücke 32 kann eine kohärente Einrichtung (für andere Knoten) sein. Im allgemeinen umfasst eine Einrichtung jegliche Schaltung, die an den Transaktionen auf einer Verbindung beteiligt ist. Eine kohärente Einrichtung ist eine Einrichtung, die in der Lage ist, kohärente Transaktionen durchzuführen und/oder in einer kohärenten Art und Weise hinsichtlich der Transaktionen zu operieren. Eine Transaktion ist eine Kommunikation auf einer Verbindung. Die Transaktion wird von einer Einrichtung auf der Verbindung gesourced und kann eine oder mehrere Einrichtungen als einen Bestimmungsort der Transaktion aufweisen. Lesetransaktionen spezifizieren einen Transfer von Daten von einem Bestimmungsort zu der Quelle, während Schreibtransaktionen einen Transfer von Daten von der Quelle zu dem Bestimmungsort spezifizieren. In einigen Ausführungsformen können auch andere Transaktionen für die Kommunikation zwischen den Einrichtungen ohne Transfer von Daten verwendet werden.
  • In einer Ausführungsform kann das Fernleitungsverzeichnis 34 so ausgelegt sein, dass es eine Untermenge des lokalen Speicherplatzes überwacht, der kohärent mit anderen Knoten gemeinsam benutzt werden kann. Das heißt, das Fernleitungsverzeichnis 34 kann so aufgebaut sein, dass es eine Rückverfolgung bis zu einer ma ximalen Anzahl von Cacheblöcken durchführt, bei der die maximale Anzahl kleiner als die gesamte Anzahl von Cacheblöcken ist, die kohärent gemeinsam benutzt werden können. In einer anderen Ausführungsform kann die maximale Anzahl kleiner als die gesamte Anzahl von Einträgen in fernen Caches sein. Das Fernleitungsverzeichnis kann jegliche Struktur aufweisen (z.B. Cache-ähnliche Strukturen wie z.B. Direct-Mapped (direkt zuordnend), Fully Associative (voll assoziativ), Set Associative (Mengen-assoziativ), etc.). In einer Ausführungsform kann das Fernleitungsverzeichnis 34 16k-Einträge sein, die in einer 8-Wege-Mengen-assoziativen Struktur angeordnet sind. Wenn auf einen Cacheblock von einem Fernknoten zugegriffen wird und das Fernleitungsverzeichnis 34 in dem Heimatknoten einen Fehlzugriff (miss) für den Cacheblock feststellt, dann wird ein Eintrag zugeordnet, um den Cacheblock zu verfolgen. Wenn der zugeordnete Eintrag im Augenblick zugeordnet ist, um einen zweiten Cacheblock zu verfolgen, kann die Speicherbrücke 32 in dem Heimatknoten Probes generieren, um den zweiten Cacheblock aus den anderen Knoten zu beseitigen (und möglicherweise ein Zurückschreiben (Write Back) der modifizierten Daten in den Heimatknoten durchführen, falls dies geeignet ist).
  • In einer Implementation ist der L2-Cache 36 in einem Fernknoten so bestimmt, dass er den Knotenzustand für modifizierte ferne Cacheblöcke bewahrt. Wenn der L2-Cache 36 einen modifizierten fernen Cacheblock beseitigt, kann der L2-Cache 36 bewirken, dass der ferne Block aus dem Knoten als ein Ganzes entfernt wird (z.B. unter Verwendung eines WrFlush-Befehls, wie unten noch beschrieben wird).
  • Es sei angemerkt, dass in einigen Ausführungsformen ein kohärenter Befehl von einer Schnittstellenschaltung 20A20C empfangen werden kann, der durch das System 10 zu einem anderen Knoten wandert und in dem System 10 nicht verarbeitet werden muß. Die Schnittstellenschaltungen 20A20C können so aufgebaut sein, dass sie solche Befehle entdecken und diese (durch eine andere Schnittstellenschaltung 20A20C über den Schalter 18) weiterleiten, ohne die Speicherbrücke 32 mit einzubeziehen.
  • Ein Überblick über den Paketverarbeitungsmechanismus einer Ausführungsform des Systems 10 wird als nächstes vorgesehen. Zusätzliche Einzelheiten einer Ausführungsform können unten mit Bezug auf die 48 vorgesehen werden.
  • Das System 10 kann eine flexible Struktur zum Verarbeiten von Paketen und zum Routen der Pakete vorsehen, ohne dass es zu einer Verarbeitung durch die Prozessoren 12A12N kommt. In einer Ausführungsform können die Rx-Schaltungen 26A26C so programmierbar sein, dass sie Ziele für Pakete auf der Grundlage von einem oder mehreren Paketattributen auswählen. Zum Beispiel können die Pakete auf den Schnittstellen 30A30C in einem virtuellen Kanal auf dieser Schnittstelle übertragen werden. Der virtuelle Kanal kann ein Paketattribut sein, das zum Auswählen eines Ziels verwendet wird. Außerdem können die Rx-Schaltungen 26A26C so programmierbar sein, dass sie ein Paketfeld oder mehrere Paketfelder zur Verwendung bei der Bestimmung eines Ziels auswählen. Für Pakete, die durch Software generiert werden, kann die Software ein Ziel für das Paket auswählen (z.B. durch das Auswählen einer Ausgabewarteschlange in der Paket-DMA-Schaltung 16, die einer gegebenen Tx-Schaltung 28A28C und einem virtuellen Kanal auf der entsprechenden Schnittstelle zugeordnet ist).
  • Zwei oder mehr Instantiationen des Systems 10 können miteinander gekoppelt werden, um Paketverarbeitungssysteme zu bilden, in denen die Pakete zwischen den Systemen sowie auch Paketquellen-/-zieleinrichtungen geroutet werden. Wenn die Rx-Schaltung 26A26C ein Paket erhält und bestimmt, dass das Ziel für das Paket eine Tx-Schaltung 28A28C ist (um an ein anderes System 10 oder anders wohin weitergeleitet zu werden), kann die Rx-Schaltung 26A26C das Paket durch den Schalter 18 zu der Tx-Schaltung 28A28C übertragen. Das Paket darf weder zu dem Speicher übertragen werden, noch dürfen die Prozessoren 12A12N darauf einwirken. Somit können die Speicherbandbreite, die Speicherung und die Prozessorzeit verwendet werden, um Pakete zu verarbeiten, die nicht automatisch von einer Quelle zu einem Ziel geroutet werden. In Paketverarbeitungssystemen, die mehrere Systeme 10 umfassen, kann ein Paket von einer Rx-Schaltung 26A26C zu einer Tx-Schaltung 28A28C geroutet werden, die mit einer Schnittstelle mit 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 Paketes die Paket-DMA-Schaltung 16 in dem anderen System 10 ist. Alternativ dazu kann ein Paket durch eine oder mehrere Rx- und Tx-Schaltungen 26A26C und 28A28C ausgehend von einer Paketquelleneinrichtung zu einer Paketzieleinrichtung geroutet werden, ohne dass eine Verarbeitung durch die Prozessoren 12A12N in dem System 10 durchgeführt wird.
  • Die Rx-Schaltungen 26A26C können bestimmen, dass empfangene Pakete in dem Speicher 24 (durch die Paket-DMA-Schaltung 16) zum Verarbeiten in dem System 10 gespeichert werden sollen. In einer Ausführungsform kann die Paket-DMA-Schaltung 16 einen Satz von Eingabewarteschlangen umfassen (die virtuellen Kanäle in der Paket-DMA-Schaltung 16), denen ein Paket durch die Rx-Schaltungen 26A26C zugeordnet werden kann. Der Schalter 18 kann die Pakete zu der Paket-DMA-Schaltung 16 routen, damit sie in der identifizierten Eingabewarteschlange gespeichert werden. In ähnlicher Weise kann die Software Pakete generieren und diese in den Ausgabewarteschlangen der Paket-DMA-Schaltung speichern. Die Ausgabewarteschlangen können einer Tx-Schaltung 28A28C zugeordnet werden (und einem virtuellen Ausgabekanal in der Tx-Schaltung 28A28C), und der Schalter 18 kann Pakete von der Paket-DMA-Schaltung 16 zu der Tx-Schaltung 28A28C routen.
  • In einer Ausführungsform können die Eingabewarteschlangen und die Ausgabewarteschlangen der Paket-DMA-Schaltung 16 logische Warteschlangen sein. Das heißt, die Warteschlangen können tatsächlich in dem Speicher 24 implementiert werden. Die Paket-DMA-Schaltung 16 kann Puffer umfassen, um die Paketdaten zu puffern, die zu und von dem Speicher 24 übertragen werden. Die Warteschlangen können auf jede Art und Weise implementiert werden. In einer speziellen Ausführungsform ist jede Warteschlange als ein Deskriptorring (oder -kette) implementiert, der die Speicherpuffer identifiziert, um die Paketdaten zu speichern, die einer gegebenen Eingabewarteschlange entsprechen. In anderen Ausführungsformen können die Warteschlangen in jeder gewünschten Art und Weise implementiert werden (z.B. Verknüpfungslisten, zusammenhängende Speicherplätze für Speicherdatenpuffer, etc.).
  • Pakete, die von der Paket-DMA-Schaltung 16 in dem Speicher gespeichert worden sind, können durch Software verarbeitet werden, die von den Prozessoren 12A12N ausgeführt wird (oder Software, die in einem Prozessor in einem Fernknoten ausgeführt wird, wobei die Zwischenknoten-Kohärenz verwendet wird, um auf die Pakete kohärent zuzugreifen). Die Software kann bestimmen, dass ein gegebenes Paket in dem System 10 beendet wird. Alternativ dazu können die Prozessoren 12A12N bestimmen, dass das Paket auf einer der Schnittstellen 30A30C nochmals übertragen wird, und können das Paket zur Übertragung durch die Paket-DMA-Schaltung 16 vorbereiten. Das Paket kann durch die Software modifiziert worden sein oder es kann unmodifiziert sein. Außerdem kann die Software Pakete generieren, die übertragen werden sollen. In jedem dieser Fälle kann die Software die Paket-DMA-Schaltung 16 von dem Paket und seinem Platz in dem Speicher 24 informieren, so dass die Paket-DMA-Schaltung 16 das Paket aus dem Speicher 24 zur Übertragung an die Schnittstellenschaltung 20A20C auslesen kann, die mit der Schnittstelle 30A30C gekoppelt ist, auf der das Paket übertragen werden soll. In einer Ausführungsform kann die Software die Paket-DMA-Schaltung 16 von dem Paket informieren, indem das Paket in einem oder mehreren Speicherpuffern gespeichert wird, die von den Deskriptoren in dem Deskriptorring angezeigt werden, die eine Ausgabewarteschlange bilden, und der Deskriptor aktualisiert wird, um anzuzeigen, dass die Paket-DMA-Schaltung 16 den Deskriptor besitzt. Alternativ dazu kann die Paket-DMA-Schaltung 16 eine Zählung für jeden Ring aufrechterhalten, wobei die Anzahl an Deskriptoren angegeben wird, die die Paket-DMA-Schaltung 16 besitzt, und die Software kann die Zählung aktualisieren.
  • So wie es hier verwendet wird, kann ein "Paket" jede Kommunikation zwischen einer Quelle und einem Ziel umfassen, die einen oder mehrere Header einschließt, der die Quelle und das Ziel des Paketes bei verschiedenen Ebenen innerhalb der Quelle und des Ziels definiert, und die eine Datennutzlast umfassen kann. "Paketdaten" können jegliche Daten umfassen, die Teil eines Paketes sind, oder können sich auf mehrere Pakete beziehen.
  • In einigen Ausführungsformen kann die Paket-DMA-Schaltung 16 so programmierbar sein, dass sie zusätzlich zum Speichern der Paketdaten in dem Speicher 24 Paketdaten auch in den L2-Cache 36 aufnimmt (das heißt, einen Teil eines Pakets oder das gesamte Paket in dem L2-Cache 36 speichert).
  • Die Prozessoren 12A12N können für jegliche Befehlssatzarchitektur ausgelegt sein, und sie 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 der MIPS MDMX-anwendungsspezifischen Erweiterungen), die IA-32- oder IA-64-Befehlssatzarchitekturen, die von Intel Corp. entwickelt wurden, die PowerPC-Befehlssatzarchitektur, die Alpha-Befehlssatzarchitektur, die ARM-Befehlssatzarchitektur, oder jede andere Befehlssatzarchitektur umfassen. Das System 10 kann jede Anzahl von Prozessoren umfassen (z.B. nur einen Prozessor, zwei Prozessoren, vier Prozessoren, etc.).
  • Der L2-Cache 36 kann von jeglichem Typ und jeglicher Kapazität eines Cachespeichers sein und kann jegliche Organisation verwenden (z.B. Set Associative, Direct Mapped, Fully Associative, etc.). In einer Ausführungsform kann der L2- Cache 36 ein 8-Wege-Mengen-assoziativer 1 MB-Cache sein. Der L2-Cache 36 wird hier als L2 bezeichnet, da die Prozessoren 12A12N interne (L1) Caches umfassen können. In anderen Ausführungsformen kann der L2-Cache 36 ein L1-Cache, ein L3-Cache oder jedes andere gewünschte Level sein.
  • Die Speichersteuerung 14 ist so aufgebaut, dass sie auf den Speicher 24 im Ansprechen auf Lese- und Schreibtransaktionen zugreift, die auf der Verbindung 22 empfangen werden. Die Speichersteuerung 14 kann ein Treffersignal von dem L2-Cache empfangen, und wenn ein Treffer (hit) in dem L2-Cache für eine gegebene Lese-/Schreibtransaktion erfasst wird, darf die Speichersteuerung 14 nicht auf diese Transaktion antworten. Die Speichersteuerung 14 kann so ausgelegt sein, dass sie auf jeden einer Reihe von Speichertypen zugreifen kann. Zum Beispiel kann die Speichersteuerung 14 für einen synchronen dynamischen Direktzugriffsspeicher (SDRAM; synchronous dynamic random access memory) ausgelegt sein, und noch spezieller für ein Doppeldatenraten-(DDR; double data rate)-SDRAM. Alternativ dazu kann die Speichersteuerung 16 für DRAM, DDR-Synchrongrafik-RAM (SGRAM; synchronous graphics RAM), DDR-Schnellzyklus-RAM (FCRAM; fast cycle RAM), DDR-II SDRAM, Rambus DRAM (RDRAM), SRAM, und jede andere geeignete Speichereinrichtung oder Kombinationen der oben erwähnten Speichereinrichtungen ausgelegt sein.
  • Die Verbindung 22 kann jede Form von Kommunikationsmedium zwischen den Einrichtungen sein, die mit der Verbindung gekoppelt sind. Zum Beispiel kann in verschiedenen Ausführungsformen die Verbindung 22 gemeinsam benutzte Busse, Kreuzschienen-(Crossbar)-Verbindungen, Punkt-zu-Punkt-Verbindungen in einem Ring, Stern oder jeder anderen Topologie, Maschen, Würfel, etc. umfassen. Die Verbindung 22 kann in einigen Ausführungsformen auch eine Speicherung umfassen. In einer bestimmten Ausführungsform kann die Verbindung 22 einen Bus umfassen. In einer Ausführungsform kann der Bus ein Bus mit geteilter Transaktion sein (d.h. er besitzt separate Adress- und Datenphasen). Die Datenphasen verschiedener Transaktionen auf dem Bus können in einer anderen Reihenfolge als die Adressphasen ablaufen. Der Bus kann auch die Kohärenz unterstützen und kann somit eine Antwortphase zur Übertragung von kohärenter Antwortinformation umfassen. Der Bus kann in einer Ausführungsform ein verteiltes Arbitrierungsschema (distributed arbitration scheme) verwenden. In einer Ausführungsform kann bei dem Bus das Pipelining Anwendung finden. Der Bus kann jede geeignete Signalisierungstechnik verwenden. So kann zum Beispiel in einer Ausführungsform die Differentialsignalisierung für die Signalübertragung mit einer hohen Geschwindigkeit verwendet werden. Andere Ausführungsformen können andere Signalisierungstechniken verwenden (z.B. TTL, CMOS, GTL, HSTL, etc.). Andere Ausführungsformen können Busse mit ungeteilter Transaktion verwenden, die mit einer einzigen Arbitrierung für Adresse und Daten arbitriert werden, und/oder einen Bus mit geteilter Transaktion, in dem der Datenbus nicht ausdrücklich arbitriert wird. Entsprechend der Designauswahl kann entweder ein zentrales Arbitrierungsschema oder ein verteiltes Arbitrierungsschema verwendet werden. Außerdem kann bei dem Bus, wenn dies gewünscht ist, das Pipelining nicht verwendet werden.
  • Verschiedene Ausführungsformen des Systems 10 können zusätzliche Schaltungen umfassen, die in 1 nicht gezeigt sind. Zum Beispiel kann das System 10 verschiedene E/A-Einrichtungen und/oder -Schnittstellen umfassen. Beispielhafte E/As können eine oder mehrere PCI-Schnittstellen, eine oder mehrere serielle Schnittstellen, Personal Computer Memory Card International Association (PCMCIA)-Schnittstellen (CardBus-Schnittstellen), etc. umfassen. Derartige Schnittstellen können direkt mit der Verbindung 22 gekoppelt sein oder können durch eine oder mehrere E/A-Brückenschaltungen gekoppelt sein.
  • In einer Ausführungsform kann das System 10 (und genauer die Prozessoren 12A12N, die Speichersteuerung 14, der L2-Cache 36, die Schnittstellenschaltungen 20A20C, die Speicherbrücke 32, die das Fernleitungsverzeichnis 34 umfasst, die Paket-DMA-Schaltung 16, der Schalter 18, das Konfigurationsregister 38 und die Verbindung 22) auf einer einzigen integrierten Schaltung als ein System auf einer Chipkonfiguration integriert sein. Die oben erwähnten zusätzlichen Schaltungen können ebenfalls integriert sein. Alternativ dazu können andere Ausführungsformen einen oder mehrere der Einrichtungen als separate integrierte Schaltungen implementieren. In anderen Konfigurationen kann der Speicher 24 ebenfalls integriert sein. Alternativ dazu kann je nach Wunsch eine oder mehrere der Komponenten als separate integrierte Schaltungen implementiert werden, oder alle Komponenten können separate integrierte Schaltungen sein. Es kann jegliches Level von Integration verwendet werden.
  • Es sei angemerkt, dass, obwohl in 1 drei Schnittstellenschaltungen 20A20C veranschaulicht sind, in verschiedenen Ausführungsformen eine oder mehrere Schnittstellenschaltungen implementiert werden können. Wie sie hier verwendet wird, umfasst eine Schnittstellenschaltung jegliche Schaltungsanordnung, die so auf gebaut ist, dass sie auf einer Schnittstelle gemäß dem Protokoll, das für die Schnittstelle definiert ist, kommunizieren kann. Die Schnittstellenschaltung kann Empfangsschaltungen umfassen, die so aufgebaut sind, dass sie Kommunikationen auf der Schnittstelle empfangen und die empfangenen Kommunikationen zu anderen Schaltungen übertragen, die sich intern in dem System befinden, das die Schnittstellenschaltung umfasst. Die Schnittstellenschaltung kann auch Übertragungsschaltungen umfassen, die so aufgebaut sind, dass sie Kommunikationen von den anderen Schaltungen in dem System empfangen, und so aufgebaut sind, dass sie die Kommunikationen auf der Schnittstelle übertragen.
  • Es sei außerdem angemerkt, dass, obwohl der Cacheblock als die Granularität bezeichnet werden kann, auf der die Kohärenz aufrechterhalten wird, andere Ausführungsformen unterschiedliche Granularitäten verwenden können, die bezüglich ihrer Größe größer oder kleiner als ein Cacheblock sein können. In solchen Ausführungsformen kann ein "Kohärenzblock" auf die gleiche Weise behandelt werden wie ein "Cacheblock" oder "Block", wenn oben die Kohärenz diskutiert wird. Im allgemeinen kann ein "Kohärenzblock" einen Satz von zusammenhängenden Bytes (im Speicher) umfassen, die für Kohärenzzwecke als eine Einheit behandelt werden. In unterschiedlichen Ausführungsformen kann ein Kohärenzblock einen Teil eines Cacheblocks, einen einzelnen Cacheblock, oder eine Vielzahl von Cacheblocks umfassen, je nachdem, wie dies gewünscht ist.
  • Nun wird 2 betrachtet, in der ein Blockdiagramm einer Ausführungsform des Schalters 18, einer Quelle 42 und eines Ziels 44 gezeigt ist. Beispielhafte Schnittstellen zwischen dem Schalter 18 und der Quelle 42 und zwischen dem Schalter 18 und dem Ziel 44 sind gemäß einer Ausführungsform des Schalters 18 gezeigt.
  • Im allgemeinen kann der Schalter 18 so aufgebaut sein, dass er selektiv Quellen mit Zielen auf der Grundlage der Fähigkeit jeder Quelle, Daten zu liefern (wie durch die Quelle auf der Schnittstelle zu dem Schalter 18 angegeben ist), und der Fähigkeit des Ziels, Daten zu empfangen (wie von dem Ziel auf der Schnittstelle zu dem Schalter 18 angegeben ist), koppelt. In der Ausführungsform von 1 können jeweils die Schnittstellenschaltungen 20A20C (vor allem die Rx-Schaltungen 26A26C), die Paket-DMA-Schaltung 16 und die Speicherbrücke 32 eine Quelle 42 sein. Zum Beispiel können die Rx-Schaltungen 26A26C jeweils Quellen von kohärenten Befehlen oder Paketen für die Speicherbrücke 32 oder die Paket-DMA-Schaltung 16 sein (oder für die Tx-Schaltungen 28A28C, wenn die kohärenten Befehle/Pakete durch das System 10 geroutet werden, ohne in dem System 10 verarbeitet zu werden). Die Speicherbrücke 32 kann eine Quelle von kohärenten Befehlen für die Tx-Schaltungen 28A28C sein. Die Paket-DMA-Schaltung 16 kann eine Quelle von Paketen für die Tx-Schaltungen 28A28C sein.
  • Außerdem können in der Ausführungsform von 1 die Schnittstellenschaltungen 20A20C (vor allem die Tx-Schaltungen 28A28C), die Paket-DMA-Schaltung 16 und die Speicherbrücke 32 jeweils ein Ziel 44 sein. Zum Beispiel können die Tx-Schaltungen 28A28C Ziele für kohärente Befehle von der Speicherbrücke 32 und/oder Pakete von der Paket-DMA-Schaltung 16 sein (und für kohärente Befehle/Pakete von den Rx-Schaltungen 26A26C). Die Paket-DMA-Schaltung 16 kann ein Ziel für Pakete von den Rx-Schaltungen 26A26C sein, und die Speicherbrücke 32 kann ein Ziel für die kohärenten Befehle von den Rx-Schaltungen 26A26C sein.
  • Der Schalter 18 kann eine volle Kreuzschiene (full crossbar) zwischen den Quellen 42 und den Zielen 44 sein, mit Ausnahme für die Wege zwischen den Quellen 42 und den Zielen 44, die nicht auftreten (z.B. ist die Paket-DMA-Schaltung 16 keine Quelle für die Speicherbrücke 32 und umgekehrt).
  • Für jede Quelle 42 umfasst die Schalterschnittstelle, die in 2 gezeigt ist, eine Quellenanforderungsschnittstelle (wobei die Gruppe in 2 zwischen der Quelle 42 und dem Schalter 18 als "SReq." bezeichnet wird), eine Quellengewährungsschnittstelle (wobei die Gruppe in 2 zwischen der Quelle 42 und dem Schalter 18 als "SGnt." bezeichnet wird), eine Quellendatenschnittstelle (wobei die Gruppe in 2 zwischen der Quelle 42 und dem Schalter 18 als "SData" bezeichnet wird), und eine optionale Nachladeschnittstelle (reload interface) (wobei die Gruppe in 2 zwischen der Quelle 42 und dem Schalter 18 als "Reload" bezeichnet wird). Die Quelle 42 verwendet die Quellenanforderungsschnittstelle, um einen Transfer zu einem gegebenen Ziel anzufordern. Der Schalter 18 zeigt der Quelle 42 unter Verwendung der Quellengewährungsschnittstelle eine Gewährung an, und die Quellendatenschnittstelle wird verwendet, um die Daten von der Quelle 42 zu dem Schalter 18 zu übertragen. Die optionale Nachladeschnittstelle wird verwendet, um anzuzeigen, dass die Quelle 42 zusätzliche Daten zum Transfer auf einem gewährten Ziel/virtuellen Kanal hat.
  • Die Quellenanforderungsschnittstelle umfasst eine Angabe des gewünschten Ziels (Dest.) und des virtuellen Kanals an diesem Ziel (VC). Zusammen können das Ziel und der virtuelle Kanal der virtuelle Schalterkanal sein. Das Typsignal (Type) kann angeben, ob die zu übertragenden Daten Paketdaten oder HT-Daten sind (entweder ein kohärenter Befehl oder ein nicht-kohärenter Befehl). Das Typsignal kann verwendet werden, um die Codierung des VCs zu interpretieren. In anderen Ausführungsformen können die VC-Codierungen quer über die Paket- und HT-Daten unikal sein, und das Typsignal kann eliminiert werden. Das EOP-Signal gibt an, ob der angeforderte Transfer das Ende des Pakets (bei Paketdaten) oder das Ende des Befehls (und jeglicher Daten, die mit dem Befehl eingeschlossen sind) (für HT-Daten) umfasst. Das Gültigkeitssignal (valid signal) gibt an, ob eine Anforderung veranlaßt wurde oder nicht. In anderen Ausführungsformen kann eine Nullcodierung bei dem Ziel oder anderen Anforderungsleitungen verwendet werden, um die Gültigkeit der Anforderung anzugeben.
  • Die Quellengewährungsschnittstelle umfasst ähnlich wie die Quellenanforderungsschnittstelle eine Angabe des gewährten Ziels (Dest.), des virtuellen Kanals (VC) und des Datentyps (Type). Somit kann eine gegebene Quelle mehrere ausstehende Anforderungen aufweisen (für mehrere Ziele und/oder virtuellen Kanäle an einem Ziel), und die Quellengewährungsschnittstelle kann angeben, welche der Anforderungen gewährt wird. Das Gültigkeitssignal kann angeben, ob eine Gewährung überragen wird oder nicht. Ähnlich wie bei der obigen Diskussion der Quellenanforderungsschnittstelle kann die Quellengewährungsschnittstelle in einigen Ausführungsformen das Typsignal und/oder das Gültigkeitssignal eliminieren.
  • Im Ansprechen auf eine Gewährung auf der Quellengewährungsschnittstelle steuert die Quelle 42 einen Datentransfer auf der Quellendatenschnittstelle. In der veranschaulichten Ausführungsform gibt es eine Gewährung durch den Schalter 18 für einen Transfer bis zu einer vorbestimmten Datenbreite (z.B. 16 Bytes). Die Quellendatenschnittstelle kann einen Datenbus (Data genannt in 2) zur Übertragung der Datenbytes, einen Zählbus (Count genannt in 2), der die Bytezählung angibt, die übertragen wird, und einen Tag-Bus (Tag) umfassen. Der Tag-Bus kann jede gewünschte Information tragen. Zum Beispiel kann in einer Ausführungsform der Tag-Bus für Paketdaten die Quelle des Paketes auf der Schnittstelle 30A30C und den virtuellen Eingabekanal von der Quelle 42 (z.B. den virtuellen Kanal auf der Schnittstelle 30A30C, wenn die Rx-Schaltung 26A26C die Quelle ist; oder die Ausgabewarteschlange, wenn die Paket-DMA-Schaltung 16 die Quelle ist), das nächste Ziel für die HT-Paketdaten (wird unten noch beschrieben), und einen Start der Paketangabe angeben. In einer Ausführungsform kann der Tag-Bus für die HT-Daten einen Abschnitt des HT-Befehlsfeldes, verschiedene gemischte Bits von dem HT-Befehl, die HT-Einheit-ID und den HT-Quellen-Tag umfassen. In anderen Ausführungsformen können je nach Wunsch andere Tag-Informationen vorgesehen werden oder überhaupt keine Tag-Information vorgesehen werden. In einigen Ausführungsformen kann der Transfer der Daten von der Gewährung verzögert werden (z.B. um einen oder mehrere Taktzyklen eines Taktes, der von dem Schalter 18 benutzt wird, was aber nicht gezeigt ist).
  • Wenn die Quelle 42 zusätzliche Datentransfers auf einem gewährten Ziel/virtuellen Kanal aufweist, kann die Quelle 42 die Nachladeschnittstelle benutzten, um einen zusätzlichen Transfer anzufordern. Die Nachladeschnittstelle kann ein Nachladesignal umfassen, das im Ansprechen auf eine Gewährung aktiviert werden kann, um anzuzeigen, dass zusätzliche Daten zu dem gewährten Ziel auf dem gewährten virtuellen Kanal übertragen werden sollen. Außerdem kann ein EOP-Signal benutzt werden, um anzuzeigen, ob die nachgeladene Anforderung das Ende des Pakets übertragen wird.
  • Für jedes Ziel 44 umfasst die in 2 gezeigte Schalterschnittstelle eine Zielanforderungsschnittstelle (wobei die Gruppe in 2 zwischen dem Ziel 44 und dem Schalter 18 als "DReq." bezeichnet wird), eine Zielgewährungsschnittstelle (wobei die Gruppe in 2 zwischen dem Ziel 44 und dem Schalter 18 als "DGnt." bezeichnet wird), eine Zieldatenschnittstelle (wobei die Gruppe in 2 zwischen dem Ziel 44 und dem Schalter 18 als "DData" bezeichnet wird), und ein optionales Nachladesignal. Das Ziel 44 verwendet die Zielanforderungsschnittstelle, um einen Transfer auf einem gegebenen virtuellen Kanal anzufordern (mit anderen Worten, um anzuzeigen, dass das Ziel 44 bereit ist, einen Transfer auf einem gegebenen virtuellen Kanal zu empfangen). Zum Beispiel kann das Ziel 44 Puffer für jeden virtuellen Kanal umfassen, und wenn Platz für einen Transfer von Daten durch den Schalter in einem Puffer vorhanden ist, der einem gegebenen virtuellen Kanal entspricht, dann kann das Ziel einen Transfer auf diesem gegebenen virtuellen Kanal anfordern. Der Schalter 18 zeigt dem Ziel 44 eine Gewährung an, indem er die Zielgewährungsschnittstelle verwendet, und die Zieldatenschnittstelle wird dazu verwendet, die Daten von dem Schalter 18 an das Ziel 44 zu übertragen. Das optionale Nachladesignal wird verwendet, um anzugeben, dass das Ziel 44 für einen zusätzlichen Transfer auf einem gewährten virtuellen Kanal in der Lage ist.
  • Die Zielanforderungsschnittstelle umfasst VC-, Typ- und Gültigkeitssignale, die den Quellenanforderungssignalen ähnlich sind. Die Zielgewährungsschnittstelle umfasst eine Angabe der gewährten Quelle (Src. genannt in 2), des gewährten virtuellen Kanals (VC), des Typsignals (Type), des EOP-Signals von der gewährten Anforderung (EOP) und des Gültigkeitssignals (Valid). Die Zieldatenschnittstelle gleicht der Quellendatenschnittstelle. Das Nachladesignal kann aktiviert (asserted) werden, um den gewährten virtuellen Kanal erneut anzufordern.
  • Die verschiedenen Ziele können unterschiedliche Typen und Anzahlen von virtuellen Kanälen aufweisen. Zum Beispiel kann die Paket-DMA-Schaltung 16 Eingabewarteschlangen aufweisen, und jede Eingabewarteschlange kann ein virtueller Kanal sein. Die Speicherbrücke 32 kann virtuelle Kanäle aufweisen, die der HT-Spezifikation entsprechen, sowie auch der HTcc-Erweiterung zu der HT-Spezifikation. Die Tx-Schaltungen 28A28C können jeweils virtuelle Kanäle aufweisen, die ihren Ausgabeschnittstellen entsprechen (z.B. die virtuellen HT-Kanäle, einschließlich der HTcc- und PoHT-Erweiterungen, oder die virtuellen SPI-4-Kanäle).
  • Nun wird 3 betrachtet, in der ein Beispiel für einen Verkehr, der auf zwei Schnittstellen 30A30B (durch die Rx-Schaltungen 26A26B) empfangen wird, und die Übermittlung des Verkehrs zu der Speicherbrücke 32 und der Paket-DMA-Schaltung 16 gemäß einer Ausführungsform des Systems 10 gezeigt ist. In dem Beispiel von 3 kann die Schnittstelle 30A eine HT-Schnittstelle sein, und die Schnittstelle 30B kann eine SPI-Schnittstelle sein. Der Verkehr auf den Schnittstellen 30A30B ist in zeitlicher Reihenfolge von rechts nach links dargestellt (z.B. tritt C1 vor NC1 an der Schnittstelle 30A auf). Kohärente Befehle werden mit einem großen C angegeben, das einen tiefergestellten Index umfasst, der die unterschiedlichen kohärenten Befehle (C1, C2) identifiziert. Pakete werden mit einem großen P angegeben, das einen tiefergestellten Index umfasst, der die verschiedenen Pakete (P1, P2, P3, P4) identifiziert. Ein nicht-kohärenter Befehl NC1 ist ebenfalls gezeigt.
  • Die Rx-Schaltung 26A empfängt die Mischung aus kohärenten Befehlen, nicht-kohärenten Befehlen und Paketen auf der HT-Schnittstelle 30A. Die Rx-Schaltung 26A erfasst die kohärenten Befehle (C1 und C2) und den nicht-kohärenten Befehl (NC1) und schickt die Anforderungen an den Schalter 18 für die entsprechenden virtuellen Kanäle an der Speicherbrücke 32. Außerdem erfasst die Rx-Schaltung 26A das Paket (P1), ordnet das Paket einer Eingabewarteschlange der Paket-DMA- Schaltung zu und veranlaßt eine Anforderung für den entsprechenden virtuellen Kanal an der Paket-DMA-Schaltung 16.
  • Im allgemeinen kann das Paket P1 in einer anderen Reihenfolge als die anderen Befehle übertragen werden, wenn man sie mit der Reihenfolge auf der HT-Schnittstelle 30A vergleicht (z.B. wird das Paket P1 in diesem Beispiel vor dem Befehl NC1 übertragen). Außerdem können diese Befehle dann, wenn sich die kohärenten Befehle C1 und C2 und/oder der nicht-kohärente Befehl NC1 in unterschiedlichen virtuellen Kanälen befinden, in einer anderen Reihenfolge verglichen mit der Reihenfolge auf der HT-Schnittstelle 30A gesendet werden (z.B. wird in diesem Beispiel der kohärente Befehl C1 vor dem Befehl NC1 übertragen). Im Ansprechen auf die entsprechenden Gewährungen wird jeder Befehl/jedes Paket von der Rx-Schaltung 26A zu dem Schalter 18 übertragen.
  • Ein Teil des Verkehrs von der HT-Schnittstelle 30A wird an die Speicherbrücke 32 übertragen (gestrichelter Pfeil 46) und ein anderer Teil des Verkehrs von der HT-Schnittstelle 30A wird zu der Paket-DMA-Schaltung 16 übertragen (gestrichelter Pfeil 48). Aber der Verkehr wird über die gleiche physikalische Datenschnittstelle übertragen (veranschaulicht durch den großen Pfeil 50). Somit wird dann, wenn Verkehr von der Rx-Schaltung 26A zu der Paket-DMA-Schaltung 16 übertragen wird, kein Verkehr von der Rx-Schaltung 26A zu der Speicherbrücke 32 übertragen (und umgekehrt). Dies ist in 3 durch Leerstellen auf einem der Pfeile 46 und 48 während Zeiten, in denen der andere Pfeil 46 oder 48 gerade Verkehr überträgt, veranschaulicht. Es sind zwar in 3 einzelne Befehle/Pakete in ihrer Übertragung veranschaulicht, aber die Transfers von Abschnitten der Befehle/Pakete (z.B. bis zu 16 Bytes pro Transfer) können über die Zeit gemäß den Scheduling-Algorithmen des Schalters 18 verschachtelt sein.
  • Die Rx-Schaltung 26B empfängt in diesem Beispiel nur Paketverkehr (über die SPI-Schnittstelle 30B), und somit überträgt sie Pakete durch den Schalter 18 zu der Paket-DMA-Schaltung 16. Wenn Pakete in verschiedenen virtuellen Kanälen auf der SPI-Schnittstelle 30B empfangen werden, kann die Reihenfolge der Pakete, die an die Paket-DMA-Schaltung 16 übertragen werden, anders als die Reihenfolge an der SPI-Schnittstelle 30B sein (z.B. wird das Paket P3 in diesem Beispiel vor dem Paket P2 übertragen). Die Übertragung von Paketen von der Rx-Schaltung 26B zu dem Schalter 18 ist über den Pfeil 52 veranschaulicht. Es sind in 3 zwar einzelne Paket in ihrer Übertragung dargestellt, aber die Transfers der Pakete können verschachtelt sein, wenn sich die Pakete in verschiedenen virtuellen Kanälen befinden.
  • Es sei angemerkt, dass im Pfeil 52 eine Lücke zwischen dem Paket P3 und dem Paket P2 gezeigt ist. Die Lücke kann mit der Rx-Schaltung 26A zusammenfallen, die das Paket P1 an die Paket-DMA-Schaltung 16 überträgt. Eine derartige Lücke kann existieren, da die Pakete zu dem gleichen Ziel übertragen werden. Somit kann der Transfer des Pakets P1 nicht gleichzeitig mit dem Transfer eines Pakets von der Rx-Schaltung 26B auftreten. Wenn die Pakete P2 und P4 nicht zur gleichen Eingabewarteschlange der Paket-DMA-Schaltung 16 gehören, können die Transfers der Pakete P1 und entweder P2 oder P4 miteinander verschachtelt werden, aber zu jeder gegebenen Zeit kann eine der Rx-Schaltungen 26A26B einen Transfer durch den Schalter 18 zu der Paket-DMA-Schaltung 16 vornehmen.
  • Die Pfeile 54 und 56 veranschaulichen jeweils die Übertragung von Befehlen und Paketen zu jeweils der Speicherbrücke 32 oder der Paket-DMA-Schaltung 16. Somit ist eine Mischung aus Paketverkehr, kohärentem und nicht-kohärentem Verkehr auf den Schnittstellen 30A30B in Paketverkehr (zu der Paket-DMA-Schaltung 16) und kohärenten/nicht-kohärenten Verkehr (zu der Speicherbrücke 32) aufgeteilt worden. In ähnlicher Weise kann der Paketverkehr, der von der Paket-DMA-Schaltung 16 gesourced wurde, und der kohärente/nicht-kohärente Verkehr, der von der Speicherbrücke 32 gesourced wurde, auf den Schnittstellen 30A30C zusammengesetzt werden, was aber in 3 nicht gezeigt ist.
  • Rx-Schaltung
  • Nun wird 4 betrachtet, in der ein genaueres Diagramm eines Teils einer Ausführungsform der Rx-Schaltung 26A gezeigt ist. Andere Rx-Schaltungen 26B26C können ähnlich aussehen. In der Ausführungsform von 4 umfasst die Rx-Schaltung 26A einen Decoder 60 (der einen SPI-Decoder 62 und einen HT-Decoder 64 einschließlich eines PoHT-BAR1-Registers 66 umfasst), eine Hash-and-Route (H & R)-Schaltung 74, einen Rx-Puffer 68, eine Schalterschnittstellenschaltung 70, und ein PDI_Map-Register 72. Der Decoder 60 ist so gekoppelt, dass er Eingabedaten auf der Schnittstelle 30A empfängt, und ist so gekoppelt, dass er die H & R-Schaltung 74 mit einem virtuellen Eingabekanal (IVC; input virtual channel) und den Paketdaten versieht. Der Decoder 60 ist auch so gekoppelt, dass er die Paketdaten dem Rx-Puffer 68 zur Speicherung liefert. Die H & R-Schaltung 74 ist so aufgebaut, dass sie einen virtuellen Schalterkanal (SVC) und optional einen Wert für das nächste Ziel (next_dest-Wert) generiert, die von dem Rx-Puffer 68 empfangen werden. Der Rx-Puffer 68 ist mit dem Schalter 18 gekoppelt (vor allem dem Quellendatenpfad des Schalters 18) und ist mit der Schalterschnittstellensteuerung 70 gekoppelt. Der Hash-and-Route-Block 74 ist auch mit dem PDI_Map-Register 72 gekoppelt. Der IVC kann der virtuelle Kanal auf der Schnittstelle 30A sein, und der SVC gibt das Ziel (in dem System 10) und den virtuellen Kanal an dem Ziel an (wie oben beschrieben ist).
  • Der Decoder 60 empfängt die Eingabedaten 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 bzw. 64 ist aktiv in Abhängigkeit davon, mit welcher Schnittstelle 30A die Rx-Schaltung 26A gekuppelt ist. Der aktive Decoder 62 oder 64 kann auf jede gewünschte Weise ausgewählt werden. Die PoHT-Erweiterung der HT-Schnittstelle bildet einen Adressbereich (gespeichert in dem PoHT-BAR1-Register 66), zu dem Schreibbefehle in HT-Größe geleitet werden können, um Paketdaten zu übertragen. Der IVC kann in dem Sequenz-ID-Feld des HT-Pakets getragen werden, und die niedrigstwertigen Bits der Adresse können angeben, ob die Daten den Start des Pakets, die Mitte des Pakets oder das Ende des Pakets, die Anzahl von gültigen Bytes in dem letzten Doppelwort des HT-Pakets und einen Fehlerstatus darstellen. Wenn ein Schreibvorgang in HT-Größe decodiert wird und sich die Adresse in dem Adressbereich befindet, der von dem PoHT-BAR1-Register angegeben wird, ist das HT-Paket ein PoHT-Paket, und die Daten, die mit dem Schreibvorgang in dieser Größe übertragen werden, sind Paketdaten.
  • Der HT-Decoder 64 kann auch kohärente Befehle und nicht-kohärente (z.B. Standard-HT) Befehle decodieren und kann den IVC für diese Befehle ausgeben. Der SVC kann angeben, dass das Ziel die Speicherbrücke 32 ist, und der virtuelle Kanal an der Speicherbrücke 32 kann der gleiche sein wie der IVC.
  • Der Decoder 60 liefert den IVC des Pakets und die empfangenen Paketdaten zu der H & R-Schaltung 74. Die H & R-Schaltung 74 kann Bytes der Paketdaten und/oder den IVC auswählen und einen entsprechenden SVC generieren. Während die H & R-Schaltung 74 jegliche Hashing- und Zuordnungsfunktion implementieren kann, kann die H & R-Schaltung 74 in einer Ausführungsform so sein, wie sie in 5 gezeigt und weiter unten beschrieben ist. Außerdem kann für die HT-Schnittstellen ein next_dest-Wert von der H & R-Schaltung 74 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, ausgewählt werden soll. Wenn der SVC angibt, dass die Paket-DMA-Schaltung 16 das Ziel ist, kann die H & R-Schaltung zuerst einen virtuellen Paket-DMA-Schaltungs-Eingabe-(PDI)-Kanal bestimmen (z.B. in einem Bereich von Null bis 15), und dann kann sie den PDI VC einer Eingabewarteschlange der Paket-DMA-Schaltung zuordnen (z.B. in einem Bereich von Null bis 32), wobei die Zuordnung (mapping) benutzt wird, die in dem PDI_Map-Register 72 spezifiziert ist.
  • Die Paketdaten- und die SVC-Ausgabe durch die H & R-Schaltung 74 werden in dem Rx-Puffer 68 gespeichert. Der Rx-Puffer 68 kann eine Speicherung für jeden IVC umfassen, die unter Verwendung der Konfigurationsregister programmierbar den IVCs zuwiesen werden kann (nicht gezeigt).
  • Die Schalterschnittstellenschaltung 70 kann die Pakete/Befehle scannen, die in dem Rx-Puffer 68 gespeichert sind, und Anforderungen für den Schalter 18 auf der Quellenanforderungs-(SReq.)-Schnittstelle generieren. Wenn der Schalter 18 die Anforderung gewährt, zeigt der Schalter 18 die Gewährung auf der Quellengewährungs(SGnt.)-Schnittstelle an.
  • Im Ansprechen auf eine Gewährung kann die Schalterschnittstellenschaltung 70 bewirken, dass der Rx-Puffer 68 die nächsten 16 Bytes des Pakets/Befehls entsprechend dem gewährten SVC überträgt. Der Rx-Puffer 68 kann die Speicherung freigeben, aus der die 16 Bytes im Ansprechen auf die Übertragung der Daten durch den Schalter 18 ausgelesen wurden. Es sei angemerkt, dass oben zwar 16 Bytes als ein Beispiel eines Transfers durch den Schalter 18 verwendet wird, aber dass andere Ausführungsformen jede beliebige Größe für den Transfer verwenden können.
  • Nun wird 5 betrachtet, in der ein Blockdiagramm einer Ausführungsform der H & R-Schaltung 74 gezeigt ist. H & R-Schaltungen in anderen Rx-Schaltungen 26B26C können ähnlich sein. In der Ausführungsform von 5 umfasst die H & R-Schaltung 74 eine Regeltabelle 100, eine Wegetabelle (path table) 102, eine Leitwegtabelle (route table) 104, eine Offset-Schaltung 106, eine Auswahllogikschaltung 108, eine Vergleichslogikschaltung 110, eine Hash-Schaltung 112, eine Extraktions-Schaltung (extract circuit) 114, eine Falt-Schaltung (fold circuit) 116, einen Multiplexer (Mux) 118, ein Addierglied 120, einen Mux 122, und einen Mux 124. Die Offset-Schaltung 106 ist gekoppelt, um Paketdaten zu empfangen, und sie besitzt einen Ausgang, der mit der Auswahllogikschaltung 108, der Hash-Schaltung 112 und der Extraktions-Schaltung 114 gekoppelt ist. Der IVC, der den Paketdaten entspricht, wird für die Auswahllogikschaltung 108, die Hash-Schaltung 112 und die Extraktions-Schaltung 114 vorgesehen. Die Auswahllogik 108 ist mit der Regeltabelle 100 und der Vergleichslogikschaltung 110 gekoppelt, die auch mit der Regeltabelle 100 gekoppelt ist, und ist gekoppelt, um ein Resultat an die Wegetabelle 102 zu liefern. Die Wegetabelle 102 ist mit den Multiplexern 118, 122 und 124, dem Addierglied 120 und der Falt-Schaltung 116 gekoppelt. Der Mux 124 ist mit der Leitwegtabelle 104 gekoppelt und sieht den SVC und optional die next_dest-Ausgabe der H & R-Schaltung 74 vor. Die Leitwegtabelle 104 ist gekoppelt, um einen Index von dem Mux 122 zu empfangen, der ebenfalls mit dem Addierglied 120 gekoppelt ist. Das Addierglied 120 ist mit dem Mux 118 gekoppelt, der mit der Falt-Schaltung 116 und der Extraktions-Schaltung 114 gekoppelt ist. Die Falt-Schaltung 116 ist mit der Hash-Schaltung 112 gekoppelt.
  • In einer Ausführungsform kann die H & R-Schaltung 74 eine Anzahl von programmierbaren 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 bezüglich Paketdaten ausgewertet werden, und die Wahr/Falsch-Resultate jedes Vergleichs können einen Weg aus einem Satz von Wegen auswählen. Der Weg kann ein SVC sein, ein Index zu einer Leitwegtabelle, die einen SVC ausgibt, oder er kann die Ausgabe einer Hash-Funktion oder einer Extraktionsfunktion als den Index zu der Leitwegtabelle auswählen (addiert zu einer Basisadresse, die ebenfalls Teil der Wegedaten ist). Außerdem kann für HT-Schnittstellen der next_dest-Wert ausgegeben werden.
  • Im allgemeinen können die Regeltabelle 100, die Wegetabelle 102 und die Leitwegtabelle 104 Speicher umfassen, die von Software so programmierbar sind, dass sie SVCs für Pakete gemäß dem oben Gesagten generieren. In einer Implementation können die Einträge der Regeltabelle 100, der Wegetabelle 102 und der Leitwegtabelle 104 in den Adressraum des Systems 10 als Konfigurationsregister abgebildet werden, die von Software gelesen und geschrieben werden können.
  • Jeder Eintrag der Regeltabelle 100 umfasst ein Offset- und Auswahlfeld und ein Operanden- und Freigabefeld. Das Offset-Feld spezifiziert den Offset eines Wortes (in einer Ausführungsform 4 Bytes) in dem Paket, das mit dem Operanden in dem Operandenfeld verglichen werden soll. Das Freigabefeld (enable field) ist ein Bitvek tor, der verwendet wird, um das ausgewählte Wort vor dem Vergleich zu maskieren. Das Auswahlfeld wählt für den Vergleich entweder das von dem Offset spezifizierte Wort aus oder den IVC. Die Auswahllogikschaltung 108 ist gekoppelt, um die Offset- und Auswahlfelder von jedem Eintrag zu erhalten, und ist so aufgebaut, dass sie die spezifizierten Daten aus den Paketdaten oder den IVC für den Vergleich auswählt. Die Auswahllogikschaltung 108 kann Daten unabhängig für jeden Eintrag auswählen und die Daten der Vergleichslogikschaltung 110 zuführen. Die Vergleichslogikschaltung 110 kann unabhängig alle ausgewählten Daten (maskiert durch das Freigabefeld des entsprechenden Regeltabelleneintrags) mit dem Operanden aus dem entsprechenden Regeltabelleneintrag vergleichen. Die Resultate der Vergleiche werden der Wegetabelle 102 zugeführt. Die Resultate können eine Angabe dahingehend enthalten, ob jeder Vergleich als Resultat ein Wahr- oder Falsch-Ergebnis erzielte. Die Anzahl an Einträgen in der Regeltabelle 100 kann von Ausführungsform zu Ausführungsform variieren. In einer Implementation kann es 16 Regeleinträge geben, die bis zu 16 programmierbare Regeln erlauben. In einer Ausführungsform stehen die Offsets, die in der Regeltabelle spezifiziert sind, in Relation zu einem programmierbaren Offset aus dem Anfang der Paketdaten. Die Offset-Schaltung 106 kann die Paketdaten um den programmierbaren Offset versetzen. In einer Ausführungsform kann der programmierbare Offset direkt sein (d.h. der programmierte Wert kann der Offset sein). In einer anderen Ausführungsform kann der programmierbare Offset indirekt sein (d.h. der programmierte Wert kann ein Offset-Feld in den Paketdaten identifizieren, das den Offset für ein gegebenes Paket trägt). In noch einer anderen Ausführungsform kann der programmierbare Offset so programmierbar sein, dass er entweder direkt oder indirekt ist.
  • Die Wegetabelle 102 kann einen Satz von Einträgen enthalten, die jeweils ein Freigabe- und Testfeld, ein Wegedatenfeld und ein Wegetypfeld umfassen. Das Freigabe- und Testfeld wird verwendet, um zu programmieren, welche Resultate von der Vergleichslogikschaltung 110 verwendet werden, um zu bestimmen, ob der Wegeeintrag für dieses Paket verwendet wird (über Bits in dem Freigabefeld, die jedem Resultat entsprechen), und der Testwert kann angeben, ob das entsprechende Resultat bezüglich wahr und falsch getestet wird. Wenn jedes freigegebene Resultat das Gleiche testet, was der Testwert spezifiziert, dann wird der Wegetabelleneintrag ausgewählt. Die Wegetabelle 102 gibt die Wegedaten- und die Wegetypfelder aus dem ausgewählten Wegetabelleneintrag aus. Das Wegetypfeld gibt einen von mehreren Wegetypen an, die die Multiplexer 118, 122 und 124 steuern und die Art der Wegedaten angeben. In einem Direktwegetyp (immediate path type) werden der SVC und optional der next_dest-Wert in den Wegedaten spezifiziert. Für den Direktwegetyp wählt der Mux 124 die Paketdaten durch den Mux 124 aus. Wenn der Wegetyp nicht direkt ist, wird die Ausgabe der Leitwegtabelle 104 durch den Mux 124 ausgewählt. In verschiedenen Ausführungsformen kann jede Anzahl von Wegetabelleneinträgen unterstützt werden, wobei sie Anzahlen von Einträgen einschließen, die sich von der Anzahl der Regeltabelleneinträge unterscheiden. In einer Implementation kann die Wegetabelle 102 16 Einträge und einen 17ten (Standard-) Eintrag umfassen, der ausgewählt wird, wenn keiner der anderen 16 Einträge mit dem Resultat der Vergleichslogikschaltung 110 übereinstimmt.
  • Die Leitwegtabelle 104 umfasst mehrere Einträge, von denen jeder einen SVC und einen next_dest-Wert speichert. Die Leitwegtabelle 104 erhält einen Index, der in Abhängigkeit von dem Wegetypfeld auf mehrere mögliche Arten generiert wird. Wenn der Wegetyp ein Index-Wegetyp ist, dann sind die Wegedaten ein Index zu der Leitwegtabelle 104, und die Wegedaten werden von dem Mux 122 ausgewählt. Andernfalls wird die Ausgabe des Addierglieds 120 von dem Mux 122 als der Index zu der Leitwegtabelle 104 ausgewählt.
  • Bei den übrigen Wegetypen können die Wegedaten eine Basisadresse umfassen, die verwendet wird (von dem Addierglied 120), um den Index der Leitwegtabelle zu generieren. In einem Hash-Wegetyp wird die Ausgabe der Hash-Schaltung 112 (ein Hash-Wert) zu der Basisadresse addiert, um den Index zu erzeugen (und wird durch den Mux 118 für das Addierglied 120 ausgewählt). Die Hash-Schaltung 112 kann so programmiert sein, dass sie bis zu 10 Wörter aus den Paketdaten auswählt, die Wörter mit programmierbaren Freigabevektoren maskiert, und diese einer Hash-Funktion unterzieht, um den Hash-Wert zu erzeugen. In einer Ausführungsform gibt es 512 Einträge in der Leitwegtabelle 104. In so einer Ausführungsform kann die Hash-Funktion einen 8-Bit-Hash-Wert generieren (der zu einer 9-Bit-Basisadresse in dem Addierglied 120 addiert werden kann). Außerdem können die Wegedaten in einigen Ausführungsformen eine Faltungssteuerung (fold control) umfassen, die den Hash-Wert in einen kleineren Wert faltet (z.B. in einer Ausführungsform programmierbar 7 Bits oder 6 Bits), um den Abschnitt der Leitwegtabelle 104 zu reduzieren, der über die Hash-Schaltung 112 ausgewählt werden kann. In einer Implementation unterzieht die Hash-Funktion die oberen zwei Bytes und die unteren zwei Bytes jedes Wortes bitweise einer XOR-Operation, um zwei Bytes zu produzieren, dann unterzieht sie benachbarte Mengen von zwei Bits einer XOR-Operation, um ein Byte (8 Bits) zu produzieren. Die aus jedem Wort resultierenden Bytes kön nen bitweise einer XOR-Operation unterzogen werden, um den Hash-Wert zu erzeugen. In einer Ausführungsform kann die optionale Faltung die Bits 7 und 5 des Hash-Werts einer XOR-Operation unterziehen (wobei die Bits von 7 bis 0 von höchstwertig bis niedrigstwertig numeriert sind), um Bit 5 der Faltung zu produzieren, das Bit 7 auf Null zu setzen, und kann die restlichen Hash-Wertbits unmodifiziert vorsehen, um eine 7-Bit-Faltung zu bewirken. Um eine 6-Bit-Faltung zu erzeugen, kann eine Implementation die Bits 7 und 5 des Hash-Werts einer XOR-Operation unterziehen, um das Bit 5 der Faltung zu erzeugen, die Bits 6 und 4 des Hash-Werts einer XOR-Operation unterziehen, um Bit 4 der Faltung zu erzeugen, die Bits 7 und 6 auf Null zu setzen, und er kann die restlichen Hash-Wertbits unmodifiziert vorsehen, um eine 6-Bit-Faltung zu erzeugen. Wenn das Falten nicht ausgewählt wird, sieht die Falt-Schaltung 116 den unmodifizierten Hash-Wert als die Ausgabe vor. In anderen Ausführungsformen können zwei oder mehrere Hash-Funktionen unabhängig voneinander in der Hash-Schaltung 112 programmierbar sein und können unter Verwendung des Wegetypfeldes ausgewählt werden.
  • Die Extraktions-Schaltung 114 kann so programmierbar sein, dass sie zwei Nibbles (Halbbytes) (4 Bits) aus den Paketdaten auswählt, um die 8-Bit-Eingabe für das Addierglied 120 zu erzeugen. Die beiden Nibbles können unabhängig voneinander programmiert werden und können somit in dem Paket nicht aufeinanderfolgend sein. In anderen Ausführungsformen können zwei oder mehr Extraktionsfunktionen in die Extraktions-Schaltung 114 programmiert und unter Verwendung des Wegetypfeldes ausgewählt werden. In anderen Ausführungsformen kann das Extraktionsergebnis in einer ähnlichen Weise wie der Hash-Wert gefaltet werden.
  • Während die Ausführungsform von 5 eine Auswahl von Mechanismen zur Generierung eines SVC vorsieht, können andere Ausführungsformen jede Untergruppe bestehend aus einem oder mehreren der direkten SVC-Generierung, des Index von der Wegetabelle zu der Leitwegtabelle, des Hash-Mechanismus oder des Extraktionsmechanismus vorsehen. Es kann jede Größe von Leitwegtabelle unterstützt werden, und somit können die Hash-Wert- und Extraktionsergebnisgrößen variiert werden.
  • Nun wird 6 betrachtet, die ein Automatendiagramm zeigt, welches die Operation einer Ausführungsform des Schalters im Hinblick auf einen SVC veranschaulicht (ein Ziel und virtueller Kanal an diesem Ziel). Ein ähnlicher Automat kann bei jedem SVC Anwendung finden.
  • In dem Zustand 80, bei dem das Paket nicht im Fortschreiten ist, kann der Schalter 18 jede Quelle auswählen, um die Daten auf dem SVC zu übertragen. Im Zustand 80 kann der Schalter 18 jeden Auswahlmechanismus verwenden, um aus den Requestern für den SVC auszuwählen. In einer Ausführungsform verwendet der Schalter 18 ein "Round Robin"-Auswahlverfahren für die Eingabewarteschlangen der Paket-DMA-Schaltung 16 und die Eingabepuffer (auf der Basis eines virtuellen Kanals) der Speicherbrücke 32, und verwendet ein programmierbares gewichtetes Round-Robin-Verfahren mit Prioritätsschema für die Tx-Schaltungen 28A28C. In dem programmierbaren gewichteten Round-Robin-Verfahren mit Prioritätsschema kann jede Quelle als hohe Priorität oder niedrige Priorität programmiert werden und kann mit einer Wichtung versehen werden. In einer Implementation verwaltet der Schalter Defizitzähler, die angeben, wie viele Transfers jede Quelle nicht in der Lage war, auf dem SVC zu übertragen (auf der Grundlage ihrer Wichtung), und wählt die anfordernde Quelle mit dem höchsten Defizit aus.
  • Wenn eine Quelle einmal ausgewählt worden ist, geht der Schalter 18 zu dem Zustand 82 über, bei dem das Paket fortschreitet. In diesem Zustand registriert der Schalter 18 die Quelle, die für diesen SVC gewährt wurde, und maskiert die Anforderungen von anderen Quellen. Somit ist die Quelle, die vorher gewährt wurde, die einzige Quelle, die auf dem SVC zugelassen werden wird. Der Schalter kann andere Quellen für andere SVCs zulassen, die dem gleichen Ziel entsprechen (z.B. andere Eingabewarteschlangen in der Paket-DMA-Schaltung 16, andere virtuelle Kanalpuffer in der Speicherbrücke 32 oder andere virtuelle Ausgabekanäle (OVCs) in den Tx-Schaltungen 28A28C). Der Schalter 18 bleibt in diesem Zustand, bis der Quelle eine Anforderung gewährt wird und die EOP-Angabe mit der Anforderung das Ende des Paketes anzeigt. Der Schalter 18 geht dann zu dem Zustand 80 über und wählt die nächste Quelle aus.
  • Deskriptoren der Paket-DMA-Schaltung
  • Ein beispielhafter Deskriptorring 130 für die Paket-DMA-Schaltung 16 ist in 7 für eine Ausführungsform gezeigt, zusammen mit einem entsprechenden Deskriptorsteuerregister bzw. -registern 136. Wie oben erwähnt ist, kann ein Deskriptorring 130 eine Eingabewarteschlange (oder eine Ausgabewarteschlange) der Paket-DMA-Schaltung 16 umfassen. Deskriptorringe können sowohl für die Eingabewarte schlangen als auch für die Ausgabewarteschlangen ähnlich sein. In der Ausführungsform von 7 werden die Deskriptoren in einer Speicherregion gespeichert, die von der Basisadresse ("Basis"-Feld (Base) des Registers 136 in 7) und der Größe ("Größen"-Feld (Size) des Registers 136 in 7) definiert wird. Die Basisadresse zeigt auf den ersten Deskriptor (Deskriptor 0) in dem Speicher, und die Größe ist ein Offset zu dem Ende des letzten Deskriptors (Deskriptor N – 1). Die Deskriptoren können in einem Ring verwendet werden. Das heißt, die Deskriptoren können in einer aufeinanderfolgenden Reihenfolge verwendet werden, die beim Deskriptor 0 beginnt und zum Deskriptor N – 1 fortschreitet. Wenn der letzte Deskriptor N – 1 verwendet worden ist, ist der nächste Deskriptor, der verwendet wird, der Deskriptor 0 (in 7 durch die gestrichelte Linie vom Deskriptor N – 1 zum Deskriptor 0 angegeben).
  • Jeder Deskriptor zeigt auf einen Speicherpuffer (das heißt, der Deskriptor umfasst die Adresse des Speicherpuffers) und kann auch verschiedene Attribute des Speicherpuffers umfassen. Zum Beispiel zeigt in 7 der Deskriptor 132A auf den Speicherpuffer 134A und der Deskriptor 132B zeigt auf den Speicherpuffer 134B.
  • Die Deskriptoren werden der Paket-DMA-Schaltung 16 von der Software zur Verfügung gestellt. Wenn die Paket-DMA-Schaltung 16 einen Deskriptor verwendet hat, um ein Paket zu speichern (oder das Paket aus dem Deskriptor für die Übertragung ausliest), dann gibt die Paket-DMA-Schaltung 16 den Deskriptor der Software zurück. In einer Ausführungsform gibt die Paket-DMA-Schaltung 16 einen Deskriptor der Software zurück, indem sie ein Hardware-(HW)-Bit in dem Deskriptor rücksetzt, was im folgenden noch genauer beschrieben werden wird. Die Software installiert die Deskriptoren in dem Deskriptorring und schreibt die Zahl an Deskriptoren, die zur Verfügung gestellt werden, in die Zählung, die diesem Deskriptorring entspricht ("Anzahl"-Feld (Count) in den Registern 136 in 7). Der Wert, der in das Anzahlfeld geschrieben wird, wird von der Paket-DMA-Schaltung 16 zu dem Wert in dem Anzahlfeld addiert, woraus sich die Anzahl an verfügbaren Deskriptoren ergibt. Das "Letzter"-Feld (Last) in den Registern 136 in 7 ist ein Index, gemessen von der Basisadresse zu dem letzten Deskriptor, der von der Paket-DMA-Schaltung 16 verwendet und zu der Software zurückgeführt wurde. Somit stehen die Deskriptoren beginnend mit dem nächsten Deskriptor in dem Ring nach dem Deskriptor, der von dem "Letzter"-Feld und der nachfolgenden "Anzahl"-1-Zahl von Deskriptoren angegeben ist, für die Verwendung durch die Paket-DMA-Schaltung zur Verfügung.
  • In einer Ausführungsform kann die Paket-DMA-Schaltung 16 einen oder mehrere Deskriptoren vorab holen (prefetch). Das "Vorab-Holen"-Feld (Prefetch) der Register 136 gibt den Index des als letzter vorab geholten Deskriptors an, gemessen ausgehend von der Basisadresse. Somit kann der nächste Deskriptor, der vorab geholt wird, der Deskriptor in dem Ring sein, der auf den Deskriptor folgt, der von dem Vorab-Holen-Feld angegeben ist. Alternativ dazu kann das Vorab-Holen-Feld den Deskriptor angeben, der als nächstes vorab geholt werden soll. In einer Ausführungsform versucht die Paket-DMA-Schaltung 16 nicht, einen Deskriptor vorab zu holen, der von der Software noch nicht zur Verfügung gestellt wurde, und somit kann das Vorab-Holen-Feld allgemein einen Deskriptor zwischen dem "letzten" Deskriptor und dem Deskriptor angeben, der dem "letzten" plus der "Anzahl" entspricht.
  • Im allgemeinen kann die Paket-DMA-Schaltung 16 dann, wenn ein Deskriptor für eine gegebene Eingabewarteschlange verfügbar wird, Daten von dem Schalter (als einem Ziel) für diese Eingabewarteschlange anfordern. Paketdaten, die von dem Schalter für die Eingabewarteschlange erhalten werden, werden in dem Speicherpuffer gespeichert, der von dem Deskriptor angegeben wird. Ein Paket kann in einem oder mehreren Speicherpuffern gespeichert werden. Wenn der Speicherpuffer voll ist oder das Paket vollständig ist, kann die Paket-DMA-Schaltung 16 den Deskriptor aktualisieren, um die Verfügbarkeit des Pakets anzugeben, und kann den Deskriptor der Software zurückgeben.
  • Wenn ein Deskriptor für eine gegebene Ausgabeschlange verfügbar wird, kann die Paket-DMA-Schaltung 16 die Transfers durch den Schalter (als eine Quelle) anfordern, um das Paket in dem Deskriptor zu dem ausgewählten Ziel zu übertragen. Wenn der Speicherpuffer geleert worden ist, kann die Paket-DMA-Schaltung 16 den Deskriptor aktualisieren, um diesen der Software zurückzuführen.
  • In einer Ausführungsform kann ein Deskriptor 132 größenmäßig kleiner sein als ein Cacheblock. Zum Beispiel kann ein Cacheblock eine Größe von 32 Bytes aufweisen und der Deskriptor kann eine Größe von 16 Bytes aufweisen. In solchen Fällen kann die Paket-DMA-Schaltung 16 so aufgebaut sein, dass sie eine Deskriptor-Aktualisierung (wenn der Deskriptor sich in der unteren Hälfte des Cacheblocks befindet) für einen gewissen Zeitraum verzögert, um die Aktualisierung möglicherweise mit der Aktualisierung des Deskriptors in der oberen Hälfte des Cacheblocks (aufgrund des nächsten Pakets) zusammenzulegen. In solchen Fällen kann ein Read-Modify-Write-Vorgang des Cacheblocks verhindert werden.
  • 8 ist ein Blockdiagramm einer Ausführungsform eines Deskriptors 132. In der Ausführungsform von 8 umfasst der Deskriptor 132 16 Bytes, die als zwei 8-Byte-Worte veranschaulicht sind. Die Bitbereiche für die Felder in den jeweiligen 8 Bytes sind oberhalb der Felder gezeigt. Die Felder, die mit RSVD bezeichnet sind, sind reserviert.
  • Der Deskriptor 132 umfasst eine Vielzahl von Statusinformationen, die in den Bits 63:55 des ersten 8-Byte-Worts gespeichert sind. Vor allem umfasst er ein Hardware-Bit (HW). Die Software kann das HW-Bit so setzen, dass es angibt, dass der Deskriptor 132 für die Verwendung durch die Paket-DMA-Schaltung 16 zur Verfügung steht (zumindest von einem Software-Standpunkt aus). Außerdem kann in einigen Ausführungsformen die Software das Anzahlregister aktualisieren, das vorher beschrieben worden ist, um anzugeben, dass Deskriptoren zur Verfügung stehen. Die Paket-DMA-Schaltung 16 kann das HW-Bit löschen, um den Deskriptor der Software zurückzugeben.
  • Die SOP- und EOP-Bits werden verwendet, um anzugeben, ob der Speicherpuffer, der dem Deskriptor entspricht, den Start des Pakets oder das Ende des Pakets umfasst. Ein Paket kann in einem oder mehreren Speicherpuffern gespeichert werden. Wenn der Speicherpuffer, der von dem Deskriptor 132 lokalisiert wurde, den Start eines Pakets umfasst, ist das SOP-Bit gesetzt. Ansonsten ist das SOP-Bit gelöscht (clear). Wenn der Speicherpuffer das Ende des Pakets umfasst, wird das EOP-Bit gesetzt. Anderenfalls ist das EOP-Bit gelöscht. Somit sind dann, wenn ein Paket in einem einzigen Speicherpuffer gespeichert wird, sowohl die EOP- als auch die SOP-Bits in diesem Deskriptor gesetzt. Wenn ein Paket in mehr als einem Speicherpuffer gespeichert wird, ist das SOP-Bit in dem Deskriptor gesetzt, der dem ersten Speicherpuffer entspricht, und das EOP-Bit ist in dem Deskriptor gesetzt, der dem letzten Speicherpuffer entspricht. Andere EOP- und SOP-Bits in den Deskriptoren sind gelöscht. Bei Eingabewarteschlangen-Deskriptoren setzt oder löscht die Paket-DMA-Schaltung 16 die EOP- und SOP-Bits, wenn sie den aktualisierten Deskriptor zurück in den Speicher schreibt, nachdem sie die Paketdaten in den Speicherpuffer geschrieben hat. Bei Ausgabewarteschlangen-Deskriptoren setzt oder löscht die Software die EOP- und SOP-Bits, wenn sie die Deskriptoren für die Pakete generiert.
  • Das INT-Bit wird verwendet, um anzugeben, ob die Paket-DMA-Schaltung 16 eine Unterbrechung (interrupt) generieren soll, wenn der Deskriptor vervollstän digt ist (z.B. wenn die Paket-DMA-Schaltung 16 den aktualisierten Deskriptor wieder zurück in den Speicher schreibt). Die Software kann das INT-Bit setzen, um die Unterbrechung zu bewirken, und das INT-Bit löschen, um die Unterbrechung nicht zu bewirken.
  • Die SWID kann für die Eingabewarteschlangen-Deskriptoren die Schnittstellenschaltung angeben, auf der das Paket erhalten wurde. Das LE-Bit kann, wenn es gesetzt ist, angeben, dass in der Rx-Schaltung 26A26C, die das Paket empfangen hat, ein Fehler aufgetreten ist. Insbesondere dann, wenn die Rx-Schaltung SPI-4-Phase-2-Verkehr empfängt, kann das LE-Bit, wenn es gesetzt ist, anzeigen, dass ein DIP-4-Fehler aufgetreten ist. Das SE-Bit kann, wenn es gesetzt ist, anzeigen, dass ein SPI-4-Abbruchsteuerwort in dem Paket empfangen wurde oder dass ein Fehler in einer PoHT-Transaktion erfasst wurde. Das PE-Bit kann, wenn es gesetzt ist, anzeigen, dass die Paket-DMA-Schaltung einen Fehler bei der Übertragung des Pakets entdeckt hat.
  • Das Pufferlängenfeld gibt die Größe des Speicherpuffers (in Bytes) an, der von dem Deskriptor 132 angeben ist. Für Eingabewarteschlangen-Deskriptoren kann die Paket-DMA-Schaltung 16 das Pufferlängenfeld überschreiben, um die aktuelle Länge anzugeben, die verwendet wird, um die Paketdaten zu speichern.
  • Das next_dest-Feld in dem Deskriptor wird für Ausgabewarteschlangen-Deskriptoren verwendet, um den next_dest-Wert für PoHT-Pakete zu speichern. Die Paket-DMA-Schaltung 16 kann das next_dest-Feld lesen und den Wert mit dem Paket zu der Tx-Schaltung 28A28C übertragen, die das Paket übertragen soll.
  • Das VC-Feld speichert den IVC für ein empfangenes Paket, wenn das Paket auf der SPI-Schnittstelle übertragen wurde. Für die Ausgabewarteschlangen-Deskriptoren kann das VC-Feld einen Wert speichern, für den die höchstwertigen 4 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 generieren. Das Speicherpufferadressfeld speichert die Adresse des Speicherpuffers, der von dem Deskriptor 132 angeben wird.
  • Es sei angemehrt, dass oben zwar verschiedene Bits so beschrieben worden sind, dass sie bestimmte Bedeutungen haben, wenn sie gesetzt oder gelöscht sind, dass aber die entgegengesetzten Bedeutungen den gesetzten und gelöschten Zustän den zugeordnet werden können. Im allgemeinen kann in verschiedenen Ausführungsformen jede Angabe verwendet werden.
  • Kohärenz-Management
  • Nun wird als nächstes 9 betrachtet, in der eine Tabelle 142 gezeigt ist, die einen beispielhaften Satz von Transaktionen veranschaulicht, die von einer Ausführungsform der Verbindung 22 unterstützt werden, und eine Tabelle 144 gezeigt ist, die einen beispielhaften Satz von kohärenten Befehlen veranschaulicht, die von einer Ausführungsform der Schnittstellen 30 unterstützt werden. Andere Ausführungsformen, die Teilsätze, übergeordnete Sätze oder alternative Sätze von Befehlen umfassen, können verwendet werden.
  • Die Transaktionen, die in der Tabelle 142 veranschaulicht sind, werden als nächstes beschrieben. Eine Einrichtung in dem System 10 kann einen Cacheblock (entweder fern oder lokal) unter Verwendung der gemeinsam benutzten Lesetransaktionen (RdShd; read shared) oder der exklusiven Lesetransaktionen (RdExc; read exclusive) auf der Verbindung 22 lesen. Die RdShd-Transaktion wird verwendet, um eine gemeinsam benutzte Kopie des Cacheblocks anzufordern, und die RdExc-Transaktion wird verwendet, um eine exklusive Kopie des Cacheblocks anzufordern. Wenn die RdShd-Transaktion verwendet wird und keine andere Einrichtung während der Antwortphase der Transaktion berichtet, eine Kopie des Cacheblocks zu besitzen (mit Ausnahme des L2-Cache 36 und/oder der Speichersteuerung 14), dann kann die Einrichtung den Cacheblock in dem exklusiven Zustand nehmen. Im Ansprechen auf die RdExc-Transaktion erklären andere Einrichtungen in dem Knoten ihre Kopien des Cacheblocks (falls vorhanden) für ungültig. Außerdem kann ein exklusiver (oder modifizierter) Besitzer des Cacheblocks die Daten für die Transaktion in der Datenphase liefern. Andere Ausführungsformen können andere Mechanismen verwenden (z.B. eine Wiederholung auf der Verbindung 22), um den Transfer eines modifizierten Cacheblocks zu gewährleisten.
  • Die Schreibtransaktion (Wr; write) und die Schreibungültigmachungstransaktion (WrInv; write invalidate) können von einer Einrichtung verwendet werden, um einen Cacheblock in einen Speicher zu schreiben. Die Wr-Transaktion kann von einem Besitzer verwendet werden, der den modifizierten Zustand für den Block besitzt, da keine anderen Kopien des Blocks für ungültig erklärt werden müssen. Die WrInv-Transaktion kann von einer Einrichtung verwendet werden, die keine exklusiven Ei gentumsrechte an dem Block besitzt (die Einrichtung kann sogar den ungültigen Zustand für den Block besitzen). Die WrInv-Transaktion bewirkt, dass andere Einrichtungen jegliche Kopien des Blocks, einschließlich modifizierte Kopien für ungültig erklären. Die WrInv-Transaktion kann von einer Einrichtung verwendet werden, die den gesamten Cacheblock schreibt. Zum Beispiel kann ein DMA, der den gesamten Cacheblock mit neuen Daten schreibt, die Transaktion verwenden, um eine Lesetransaktion zu verhindern, auf die eine Schreibtransaktion folgt. Vor allem kann die Paket-DMA-Schaltung 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 von dem System 10 ausgehend von anderen Knoten empfangen werden. Die RdKill- und RdInv-Transaktionen bewirken, dass der Initiator (die Speicherbrücke 32) den exklusiven Zugriff auf den Cacheblock erwirbt, und bewirken, dass alle Cache-Einrichtungen ihre Kopien für ungültig erklären (wobei sie Daten an den Initiator ähnlich wie bei den RdShd- und RdExc-Transaktionen übertragen). In einer Ausführungsform hebt die RdKill-Transaktion auch eine Reservierung auf, die von der lastverbundenen Instruktion in dem MIPS-Instruktionssatz festgelegt wurde, während die RdInv-Transaktion dies nicht tut. In anderen Ausführungsformen kann eine einzige Transaktion für Probes verwendet werden. In noch anderen Ausführungsformen kann eine Probe-generierte Transaktion vorhanden sein, die Einrichtungskopien des Cacheblocks für ungültig erklärt (ähnlich wie bei den RdKill- und RdInv-Transaktionen), und eine andere Probe-generierte Transaktion vorhanden sein, die es den Einrichtungen erlaubt, gemeinsam benutzte Kopien des Cacheblocks gespeichert zu lassen.
  • 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 besitzen. Die andere Einrichtung liefert die Daten für die WrFlush-Transaktion, oder die initiierende Einrichtung liefert die Daten, wenn keine andere Einrichtung eine exklusive oder modifizierte Kopie des Blocks besitzt. Die WrFlush-Transaktion kann in einer Ausführungsform verwendet werden, bei der der L2-Cache 36 den Knotenzustand für das System 10 gespeichert läßt, aber andere Einrichtungen können den Cacheblock auch in einem modifizierten Zustand besitzen. Der L2-Cache 36 kann den WrFlush-Befehl benutzen, um einen fernen Cacheblock zu beseitigen, der in einem Cache einer anderen Einrichtung in dem System 10 modifiziert sein kann.
  • Die Nop-Transaktion ist eine Nulloperations-Transaktion. Die Nop-Transaktion kann verwendet werden, wenn einer Einrichtung die Benutzung der Verbindung 22 gewährt wird (z.B. der Adressbus in Ausführungsformen, in denen die Verbindung 22 ein geteilter Transaktionsbus ist) und die Einrichtung feststellt, dass sie nicht mehr länger eine Transaktion besitzt, die auf der Verbindung 22 ablaufen muß.
  • Die Befehle, die in der Tabelle 144 veranschaulicht sind, werden als nächstes beschrieben. In der Tabelle 144 ist sowohl der Befehl als auch der virtuelle Kanal gezeigt, in dem der Befehl auf den Schnittstellen 30 wandert. Die virtuellen Kanäle können in der veranschaulichten Ausführungsform folgendes umfassen: den virtuellen CRd-Kanal (CRd virtual channel); den virtuellen Probe-Kanal (probe virtual channel) (Probe); den virtuellen Bestätigungs-Kanal (acknowledge virtual channel) (Ack); und kohärente virtuelle Füll-Kanäle (coherent fill virtual channel) (CFill). Die virtuellen CRd-, Probe-, Ack- und CFill-Kanäle sind für die HTcc-Befehle definiert. Es kann zusätzliche virtuelle Kanäle für die Standard-HT-Befehle geben (z.B. den virtuellen Kanal für den nicht geposteten (non-posted) Befehl (NPC), den virtuellen Kanal für den geposteten (posted) Befehl (PC), und den virtuellen Antwort-Kanal (response virtual channel) (RSP)).
  • Die cRdShd- oder cRdExc-Befehle können von der Speicherbrücke 32 jeweils im Ansprechen auf die RdShd- oder RdExc-Transaktionen auf der Verbindung 22 ausgegeben werden, um einen fernen Cacheblock zu lesen, der nicht in dem Knoten gespeichert ist (oder im Falle der RdExc kann der Block zwar in dem Knoten gespeichert sein, aber in dem gemeinsam benutzten Zustand). Wenn der Cacheblock in dem Knoten gespeichert ist (im Falle der RdExc-Transaktion mit exklusiven Eigentumsrechten), wird das Lesen auf der Verbindung 22 ohne Übertragung eines kohärenten Befehls durch die Speicherbrücke 32 vollendet.
  • Die Flush- und Kill-Befehle sind für diese Ausführungsform Probe-Befehle. Die Speicherbrücke 32 an dem Heimatknoten eines Cacheblocks kann Probe-Befehle im Ansprechen auf einen cRdShd- oder cRdExc-Befehl ausgeben. Die Speicherbrücke 32 an dem Heimatknoten des Cacheblocks kann ebenfalls einen Probe-Befehl im Ansprechen auf eine Transaktion für einen lokalen Cacheblock ausgeben, wenn ein oder mehrere Fernknoten eine Kopie des Cacheblocks besitzen. Der Flush-Befehl wird verwendet, um anzufordern, dass ein ferner modifizierter Besitzer eines Cacheblocks den Cacheblock dem Heimatknoten zurückgibt (und den Cacheblock in dem fernen modifizierten Besitzer ungültig macht). Der Kill-Befehl wird verwendet, um anzufordern, dass ein ferner Besitzer den Cacheblock ungültig macht. In anderen Ausführungsformen können zusätzliche Probe-Befehle für andere Zustandsänderungsanforderungen unterstützt werden (die es z.B. fernen Besitzern erlauben, eine gemeinsam benutzte Kopie des Cacheblocks gespeichert zu lassen).
  • Die Probe-Befehle werden beantwortet (nachdem die Zustandsänderungen bewirkt sind, die von den Probe-Befehlen angefordert wurden), indem entweder die Kill_Ack- oder die WB-Befehle benutzt werden. Der Kill_Ack-Befehl ist eine Bestätigung, dass ein Kill-Befehl von einem empfangenden Knoten verarbeitet worden ist. Der WB-Befehl ist ein Zurückschreiben (Write-Back) des Cacheblocks und wird im Ansprechen auf den Flush-Befehl übertragen. Der WB-Befehl kann auch von einem Knoten benutzt werden, um einen fernen Cacheblock zurückzuschreiben, der aus dem Knoten entfernt wird.
  • Der Fill-Befehl ist der Befehl, die Daten zu einem Fernknoten zu übertragen, der einen Lesebefehl (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 Cacheblock vollendet wurden.
  • Nun wird 10 betrachtet, die ein Blockdiagramm zeigt, das eine Ausführungsform eines Adressraums veranschaulicht, der von einer Ausführungsform des Systems 10 implementiert wird. Die in 10 gezeigten Adressen sind als Hexadezimalziffern mit einem Unterstrich ("_") veranschaulicht, der Gruppen von vier Ziffern abtrennt. Somit werden in der in 10 veranschaulichten Ausführungsform 40 Adressbits unterstützt. In anderen Ausführungsformen können mehr oder weniger Adressbits unterstützt werden.
  • In der Ausführungsform von 10 wird der Adressraum zwischen 00_0000_0000 und 0F_FFFF_FFFF als ein lokaler Adressraum behandelt. Transaktionen, die von Einrichtungen in dem lokalen Adressraum generiert werden, generieren keine kohärenten Befehle an andere Knoten, obwohl die Kohärenz in dem System 10 für diese Adressen forciert werden kann. Das heißt, der lokale Adressraum wird nicht kohärent mit anderen Knoten gehalten. Verschiedene Abschnitte des lokalen Adressraums können je nach Wunsch an E/A-Einrichtungen, HT, etc. speicheradressiert (memory-mapped) 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. Jeder Knoten ist einem Abschnitt des fernen kohärenten Raums zugewiesen, und dieser Knoten ist der Heimatknoten für diesen Abschnitt. Wie in 1 gezeigt ist, ist jeder Knoten mit einer Knotennummer programmierbar. In dieser Ausführungsform ist die Knotennummer gleich dem höchstwertigen Nibble (4 Bits) der Adressen, für die dieser Knoten der Heimatknoten ist. Somit können die Knotennummern in der gezeigten Ausführungsform von 4 bis E gehen. Andere Ausführungsbeispiele können je nach Wunsch mehr oder weniger Knotennummern unterstützen. In der veranschaulichten Ausführungsform ist jedem Knoten ein 64 Gigabyte (GB) großer Abschnitt des Speicherraums zugewiesen, für den er der Heimatknoten ist. Die Größe des Abschnitts, der jedem Knoten zugewiesen ist, kann in anderen Ausführungsformen variiert werden (z.B. auf der Grundlage der Adressgröße oder anderer Faktoren).
  • Für einen gegebenen kohärenten Knoten gibt es ein Aliasing (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 Abschnitt des fernen kohärenten Raums, für den der Knoten der Heimatknoten ist, greifen auf die gleichen Speicherstellen in dem Speicher 24 des Knotens zu (oder werden in die gleichen E/A-Einrichtungen oder -Schnittstellen, etc. speicheradressiert). Zum Beispiel veranlaßt der Knoten, der die Knotennummer 5 aufweist, jeweils das Aliasing des Adressraums 50_0000_0000 bis 5F_FFFF_FFFF zu 00_0000_0000 bis 0F_FFFF_FFFF (Pfeil 146). Kohärente Zwischenknoten-Zugriffe auf den Speicher 24 bei dem System 10 verwenden den knotennumerierten Adressraum (z.B. 50_0000_0000 zu 5F_FFFF_FFFF, wenn die Knotennummer, die in das System 10 programmiert ist, 5 ist), um auf die Cacheblöcke in dem Speicher 24 zuzugreifen. Das heißt, die Einrichtungen in anderen Knoten und Einrichtungen in dem Knoten, die kohärent auf die Cacheblöcke in dem Speicher zugreifen, benutzen den fernen kohärenten Raum, während der Zugriff in dem lokalen Adressraum nicht kohärent mit anderen Knoten gehalten wird (selbst wenn auf den gleichen Cacheblock zugegriffen wird). Somit werden die Adressen in dieser Ausführungsform einem Aliasing unterzogen, aber nicht kohärent gehalten. In anderen Ausführungsformen können die Adressen in dem fernen kohärenten Raum und den entsprechenden Adressen in dem lokalen Adressraum kohärent gehalten werden.
  • Ein Cacheblock wird als lokal in einem Knoten bezeichnet, wenn der Cacheblock Teil des Speichers ist, der diesem Knoten zugewiesen ist (wie oben erwähnt worden ist). Somit kann der Cacheblock lokal sein, wenn auf ihn von dem lokalen Adressraum oder dem fernen kohärenten Raum aus zugegriffen wird, solange sich die Adresse in dem Bereich befindet, für den der Knoten der Heimatknoten ist. In ähnlicher Weise kann eine Transaktion auf der Verbindung 22, die auf einen lokalen Cacheblock zugreift, als eine lokale Transaktion oder ein lokaler Zugriff bezeichnet werden. Eine Transaktion auf der Verbindung 22, die auf einen fernen Cacheblock zugreift (über den fernen kohärenten Adressraum außerhalb des Abschnitts, für den der Knoten der Heimatknoten ist), kann als eine ferne Transaktion oder ein ferner Zugriff bezeichnet werden.
  • Der Adressraum zwischen 10_0000_0000 und 3F_FFFF_FFFF kann in der veranschaulichten Ausführungsform für zusätzliche HT-Transaktionen (z.B. Standard-HT-Transaktionen) benutzt werden. Außerdem kann in der veranschaulichten Ausführungsform der Adressraum zwischen F0_0000_0000 und FF_FFFF_FFFF reserviert sein.
  • Es sei angemerkt, dass, obwohl das höchstwertigen Nibble der Adresse definiert, auf welchen Knoten zugegriffen wird, andere Ausführungsformen jeden anderen Abschnitt der Adresse benutzen können, um den Knoten zu identifizieren. Außerdem können in anderen Ausführungsformen bei der Transaktion andere Informationen dazu verwendet werden, die fernen gegenüber den lokalen Transaktionen zu identifizieren, (z.B. Befehlstyp, Steuerinformationen, die bei der Transaktion übertragen werden, etc.).
  • Nun wird 11 betrachtet, in der ein Entscheidungsbaum für eine Lesetransaktion zu einer Speicherraumadresse auf der Verbindung 22 eines Systems 10 für eine Ausführungsform gezeigt ist. Der Entscheidungsbaum kann die Operation des Systems 10 für die Lesetransaktion für verschiedene Bedingungen der Transaktion, den Zustand des Cacheblocks, auf den durch die Transaktion zugegriffen wird, etc. veranschaulichen. Die Lesetransaktion kann in einer Ausführungsform die RdShd-, RdExc-, RdKill- und RdInv-Transaktionen umfassen, die in der Tabelle 142 von 9 gezeigt sind. Jeder Punkt auf den Linien in dem Entscheidungsbaum stellt einen Divergenzpunkt eines Gliedes oder mehrerer Glieder des Baums dar, die mit den entsprechenden Bedingungen benannt sind. Wenn mehrere Glieder an einem Punkt austreten, impliziert das Nehmen eines Glied auch, dass die Bedingungen für die anderen Glieder nicht erfüllt sind. In 11 wird das Ausrufungszeichen ("!") benutzt, um ein logisches NICHT anzugeben. Nicht in 11 gezeigt ist der Zustandsübergang, der von jeder kohärenten Einrichtung gemacht wird, die eine Kopie des Cacheblocks für die Lesetransaktion cachet. Wenn die Lesetransaktion RdShd ist, kann die kohärente Einrichtung eine Kopie des Cacheblocks in dem gemeinsam benutzten Zustand gespeichert lassen. Anderenfalls erklärt die kohärente Einrichtung ihre Kopie des Cacheblocks für ungültig.
  • Die Transaktion kann entweder lokal oder fern sein, wie oben bereits erwähnt wurde. Bei lokalen Transaktionen wird dann, wenn die Transaktion nicht cachebar (uncacheable) ist, ein Auslesen aus dem Speicher 24 durchgeführt (Bezugszeichen 150). In einer Ausführungsform kann die Transaktion eine Angabe dahingehend umfassen, ob die Transaktion cachebar (cacheable) ist oder nicht. Wenn die Transaktion nicht cachebar ist, wird sie in der vorliegenden Ausführungsform als eine nichtkohärente Transaktion behandelt.
  • Wenn die lokale Transaktion cachebar ist, ist die Operation des Systems 10 abhängig von der Antwort, die während der Antwortphase der Transaktion vorgesehen wird. In einer Ausführungsform antwortet jede kohärente Einrichtung mit dem Zustand des Cacheblocks in dieser Einrichtung. Zum Beispiel kann jede kohärente Einrichtung ein assoziiertes gemeinsam benutztes Signal (SHD) und ein exklusives Signal (EXC) besitzen. Die Einrichtung kann einen ungültigen Zustand signalisieren, indem sie sowohl das SHD-Signal als auch das EXC-Signal nicht aktiviert (deasserting). Die Einrichtung kann einen gemeinsam benutzten Zustand signalisieren, indem sie das SHD-Signal aktiviert (asserting) und das EXC-Signal nicht aktiviert. Die Einrichtung kann einen exklusiven Zustand (oder modifizierten Zustand) signalisieren, indem sie das EXC-Signal aktiviert und das SHD-Signal nicht aktiviert. Die exklusiven und modifizierten Zustände können in dieser Ausführungsform in der Antwortphase gleich behandelt werden, und der exklusive/modifizierte Besitzer kann die Daten liefern. Der exklusive/modifizierte Besitzer kann zusammen mit den Daten eine Angabe dahingehend liefern, ob der Zustand exklusiv oder modifiziert ist. Während in dieser Ausführungsform jede Einrichtung ihre eigenen SHD- und EXC-Signale besitzen kann (und die initiierende Einrichtung die Signale von jeder anderen Einrichtung empfangen kann), kann in anderen Ausführungsformen ein gemeinsam benutztes SHD- und EXC-Signal von allen Einrichtungen verwendet werden.
  • Wenn sowohl die SHD-Antworten als auch die EXC-Antworten für die lokale Transaktion empfangen werden, ist ein Fehler aufgetreten (Bezugszeichen 152). Die Speichersteuerung kann in einer Ausführungsform eine Anzeige eines schweren Fehlers für die Lesetransaktion zurückschicken. Wenn die Antwort exklusiv ist (SHD nicht aktiviert, EXC aktiviert), liefert der exklusive Besitzer die Daten für die Lesetransaktion auf der Verbindung 22 (Bezugszeichen 154). Wenn der exklusive Besitzer die Speicherbrücke 32 ist (wie in dem Fernleitungsverzeichnis 34 registriert), dann besitzt ein Fernknoten den Cacheblock in dem modifizierten Zustand. Die Speicherbrücke 32 gibt eine Probe aus (Flush-Befehl), um den Cacheblock aus diesem Fernknoten abzurufen. Die Speicherbrücke 32 kann den Cacheblock, der von dem Fernknoten zurückgeschickt wurde, als die Daten für das Lesen auf der Verbindung 22 zuführen.
  • Wenn die Antwort gemeinsam benutzt ist (SHD aktiviert, EXC nicht aktiviert), die lokale Transaktion RdExc ist, und die Speicherbrücke 32 eine der Einrichtungen ist, die gemeinsam benutzt berichten, dann kann wenigstens ein Fernknoten eine gemeinsam benutzte Kopie des Cacheblocks besitzen. Die Speicherbrücke 32 kann eine Probe (Kill-Befehl) initiieren, um die gemeinsam benutzten Kopien des Cacheblocks in dem/den Fernknoten ungültig zu machen (Bezugszeichen 156). In einer Ausführungsform können die Daten für diesen Fall aus dem Speicher (oder dem L2-Cache 36) ausgelesen werden, aber der Transfer der Daten kann verzögert werden, bis der/die Fernknoten die Probe bestätigt hat/haben. Die Speicherbrücke 32 kann der Speichersteuerung 14/dem L2-Cache 36 signalisieren, wenn die Bestätigungen erhalten worden sind. In 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 dürfen.
  • Wenn die Antwort gemeinsam benutzt lautet, die lokale Transaktion RdExc ist, und die gemeinsam nutzenden Einrichtungen lokale Einrichtungen sind (d.h., die Speicherbrücke 32 berichtet keine gemeinsame Nutzung), dann kann der L2-Cache 36 oder die Speichersteuerung 14 die Daten in Abhängigkeit davon liefern, ob ein L2-Treffer für den Cacheblock vorliegt oder nicht (Bezugszeichen 158). In ähnlicher Weise kann dann, wenn die Antwort gemeinsam benutzt lautet und die Transaktion nicht RdExc ist, der L2-Cache 36 oder die Speichersteuerung 14 die Daten in Abhängigkeit davon liefern, ob es einen L2-Treffer für den Cacheblock gibt oder nicht.
  • Wenn die Transaktion fern und nicht cachebar ist, dann kann die Speicherbrücke 32 einen nicht-kohärenten Lesebefehl auf den Schnittstellen 30 generieren, um diese Daten zu lesen. Es kann zum Beispiel ein Standard-HT-Lesebefehl verwendet werden (Bezugszeichen 160). Wenn die ferne Transaktion cachebar ist und die Antwort auf der Verbindung 22 exklusiv ist, dann liefert der exklusive Besitzer die Daten für das Lesen (Bezugszeichen 162). Wenn die ferne Transaktion cachebar ist, aber die Antwort nicht exklusiv ist, der Cacheblock ein L2-Cachetreffer ist und die Transaktion entweder RdShd ist oder die Transaktion RdExc ist und der L2-Cache den Block in dem modifizierten Zustand besitzt, dann liefert der L2-Cache 36 die Daten für das Lesen (Bezugszeichen 164). Anderenfalls initiiert die Speicherbrücke 32 einen entsprechenden Lesebefehl zu dem Heimatknoten des Cacheblocks (Bezugszeichen 166).
  • Nun wird 12 betrachtet, in der ein Entscheidungsbaum für eine Schreibtransaktion in eine Speicherraumadresse auf der Verbindung 22 eines Systems 10 für eine Ausführungsform gezeigt ist. Der Entscheidungsbaum kann die Operation des Knotens für die Schreibtransaktion für verschiedene Bedingungen der Transaktion, den Zustand des Cacheblocks, auf den durch die Transaktion zugegriffen wird, etc. veranschaulichen. Die Schreibtransaktion kann in einer Ausführungsform die Wr-, WrInv- und WrFlush-Transaktionen umfassen, die in der Tabelle 142 von 9 gezeigt sind. Jeder Punkt auf den Linien in dem Entscheidungsbaum stellt einen Divergenzpunkt eines Glieds oder mehrerer Glieder des Baums dar, die mit den entsprechenden Bedingungen benannt sind. Wenn mehrere Glieder aus einem Punkt austreten, impliziert das Nehmen eines Glieds, dass die Bedingungen für die anderen Glieder nicht erfüllt sind. In 12 wird das Ausrufungszeichen ("!") benutzt, um ein logisches NICHT anzugeben. Nicht in 12 gezeigt ist der Zustandsübergang, der von jeder kohärenten Einrichtung gemacht wird, die eine Kopie des Cacheblocks für die Schreibtransaktion cachet. Die kohärente Einrichtung erklärt ihre Kopie des Cacheblocks für ungültig.
  • Wenn die Transaktion eine lokale Transaktion ist und die Transaktion eine WrInv-Transaktion ist, die in dem Fernleitungsverzeichnis 34 einen Treffer landet (d.h. ein Fernknoten cachet eine Kopie des Cacheblocks), dann führt die Speichersteuerung 14 (und der L2-Cache 36, falls ein L2-Treffer vorhanden ist) eine Aktualisierung mit den Schreibdaten durch (Bezugszeichen 170). Außerdem kann die Speicherbrücke 32 Probes für die Fernknoten generieren, die von dem Fernleitungsver zeichnis 34 angegeben werden. Die Aktualisierung des Speichers/L2-Cache kann verzögert werden, bis die Probes vollendet worden sind, wobei die Speicherbrücke 32 zu diesem Zeitpunkt die Transaktionsidentifizierung der WrInv-Transaktion an den L2-Cache/die Speichersteuerung 14 übertragen kann, um die Aktualisierung zu erlauben.
  • Wenn die lokale Transaktion nicht cachebar ist oder wenn der L2-Cache 36 der Master der Transaktion ist (das heißt, der L2-Cache 36 initiiert die Transaktion), dann führt die Speichersteuerung 14 eine Aktualisierung mit den Daten durch (Bezugszeichen 172). Wenn die lokale Transaktion cachebar ist, dann führt die Speichersteuerung 14 und/oder der L2-Cache 36 eine Aktualisierung mit den Daten auf der Grundlage dessen durch, ob ein L2-Cachetreffer vorliegt oder nicht (und in manchen Ausführungsformen auf der Grundlage einer L2-Cachezuordnungsangabe in der Transaktion, die es der Quelle der Transaktion erlaubt, anzugeben, ob der L2-Cache eine Cache-Line für einen L2-Cachefehlzugriff zuordnet oder nicht) (Bezugszeichen 174).
  • Wenn die Transaktion eine ferne Transaktion ist, die Transaktion eine WrFlush-Transaktion ist und die Antwort auf die Transaktion exklusiv ist, dann liefert der exklusive Besitzer die Daten (Bezugszeichen 176). Wenn die ferne WrFlush-Transaktion als Ergebnis eine nicht-exklusive Antwort ergibt (gemeinsam benutzt oder ungültig), dann liefert der L2-Cache 36 die Daten der WrFlush-Transaktion (Bezugszeichen 178). In einer Ausführungsform behält der L2-Cache 36 den Zustand des Knotens wie in dem Heimatknoten registriert, und der L2-Cache 36 verwendet die WrFlush-Transaktion, um einen fernen Cacheblock zu beseitigen, der in dem Knoten in dem modifizierten Zustand vorliegt. Somit kann diese Einrichtung dann, wenn eine andere Einrichtung den Cacheblock im exklusiven Zustand besitzt, eine neuere Kopie des Cacheblocks haben, die zu dem Heimatknoten zurückgeführt werden soll. Anderenfalls liefert der L2-Cache 36 den Block, der zu dem Heimatknoten zurückgeführt werden soll. In beiden Fällen kann die Speicherbrücke 32 die WrFlush-Transaktion und Daten erfassen und kann einen WB-Befehl durchführen, um den Cacheblock zu dem Heimatknoten zurückzuführen.
  • Wenn die ferne Transaktion keine WrFlush-Transaktion ist und nicht cachekohärent ist, dann empfängt die Speicherbrücke 32 die Schreibtransaktion und führt einen nicht-kohärenten Schreibbefehl durch (z.B. einen Standard-HT-Schreibbefehl), um den Cacheblock zu dem Heimatknoten zu übertragen (Bezugszeichen 180). Wenn die ferne Transaktion keine WrFlush-Transaktion ist, cachekohärent ist und ein L2-Treffer ist, dann kann der L2-Cache 36 mit den Daten eine Aktualisierung durchführen (Bezugszeichen 182).
  • Nun wird 13 betrachtet, die ein Blockdiagramm zeigt, das die Operation einer Ausführungsform der Speicherbrücke 32 im Ansprechen auf verschiedene kohärente Befehle veranschaulicht, die von den Schnittstellenschaltungen 20A20C empfangen werden. Der empfangene Befehl ist in einer Ellipse gezeigt. Befehle, die von der Speicherbrücke 32 im Ansprechen auf den empfangenen Befehl initiiert werden (und der Zustand des betroffenen Cacheblocks, wie in dem Fernleitungsverzeichnis 34 angegeben), sind in Kästchen mit durchgehenden Linien gezeigt. Gestrichelte Kästchen sind Befehle, die von der Speicherbrücke 32 im Ansprechen auf Befehle empfangen werden, die in den vorhergehenden Kästchen mit durchgehenden Linien übertragen wurden. Der Cacheblock, der von einem Befehl beeinflusst wird, ist nach dem Befehl in Klammern gezeigt.
  • In einer Ausführungsform kann auf das Fernleitungsverzeichnis 34 im Ansprechen auf eine Transaktion auf der Verbindung 22 zugegriffen werden. In solch einer Ausführungsform kann die Speicherbrücke 32 eine Transaktion auf der Verbindung 22 im Ansprechen auf bestimmte kohärente Befehle initiieren, um das Fernleitungsverzeichnis 34 abzurufen (sowie auch um alle Zustandsänderungen in den kohärenten Einrichtungen zu beeinflussen, die mit der Verbindung 22 gekoppelt sind, falls dies passend ist). In anderen Ausführungsformen kann die Speicherbrücke 32 so aufgebaut sein, dass sie das Fernleitungsverzeichnis 34 liest, bevor sie eine Transaktion auf der Verbindung 22 generiert, und sie kann, falls benötigt, bedingt eine Transaktion auf der Grundlage des Zustands des Fernleitungsverzeichnisses 34 für den angeforderten Cacheblock generieren. Außerdem kann in einer Ausführungsform das Fernleitungsverzeichnis 34 den fernen Zustand für eine Untermenge der lokalen Cacheblöcke aufrechterhalten, die fern gemeinsam benutzt werden können (z.B. eine Untermenge des Abschnitts des fernen kohärenten Raums 148, der dem lokalen Knoten zugewiesen ist). Wenn ein Cacheblock von einem Fernknoten unter Verwendung eines kohärenten Befehls angefordert wird und es für den Cacheblock in dem Fernleitungsverzeichnis 34 keinen Eintrag gibt, dann kann ein Opfercacheblock (victim cache block) in dem Fernleitungsverzeichnis 34 ersetzt werden (und Probes können generiert werden, um den Opfercacheblock in den Fernknoten ungültig zu machen). In anderen Ausführungsformen kann das Fernleitungsverzeichnis 34 so aufgebaut sein, dass es den Zustand jedes Cacheblocks in dem Abschnitt des fernen kohärenten Raums 148 verfolgt, der dem lokalen Knoten zuwiesen ist. In derartigen Ausführungsformen können Operationen, die sich auf die Opfercacheblöcke beziehen, aus 13 weggelassen werden.
  • Für einen cRdShd-Befehl für den Cacheblock "A", der von der Speicherbrücke 32 empfangen wird (Bezugszeichen 190), kann die Speicherbrücke 32 eine RdShd-Transaktion auf der Verbindung 22 generieren. Auf der Grundlage des Zustands des Fernleitungsverzeichnisses (RLD) für den Cacheblock A kann eine Anzahl von Operationen auftreten. Wenn der RLD-Zustand gemeinsam benutzt ist oder ungültig ist und es einen Eintrag gibt, der für die Zuordnung zur Verfügung steht, ohne dass es notwendig ist, einen Opfercacheblock "Vic" zu entfernen ("RLD leer" in 13), dann kann die Speicherbrücke 32 einen Fill-Befehl an den Fernknoten mit den Daten übertragen, die der Speicherbrücke 32 im Ansprechen auf die RdShd-Transaktion auf der Verbindung 22 geliefert werden (Bezugszeichen 192). Andererseits kann die Speicherbrücke 32 dann, wenn der RLD-Zustand ungültig ist und ein Beseitigen eines Opferblocks dazu verwendet wird, einen RLD-Eintrag für den Cacheblock A freizusetzen, Probes an die Fernknoten übertragen, die Kopien des Opfercacheblocks besitzen. Wenn der Opfercacheblock gemeinsam benutzt wird, kann die Speicherbrücke 32 für den Opferblock einen Kill-Befehl (oder -Befehle, wenn mehrere Knoten den Opfercacheblock gemeinsam benutzen) übertragen (Bezugszeichen 194). Die Fernknoten antworten mit Kill_Ack-Befehlen für den Opferblock (Bezugszeichen 196). Wenn der Opferblock modifiziert ist, dann kann die Speicherbrücke 32 einen Flush-Befehl an den Fernknoten übertragen, der den modifizierten Zustand besitzt (Bezugszeichen 198). Der Fernknoten kann den modifizierten Block mit einem WB-Befehl zurückgeben (Bezugszeichen 200). In jedem der beiden Fälle, in denen ein Opferblock entfernt wird, kann die Speicherbrücke 32 parallel dazu einen Fill-Befehl für den Cacheblock A generieren (Bezugszeichen 192, über den Pfeil 202). Schließlich kann die Speicherbrücke 32 dann, wenn der RLD-Zustand für den Cacheblock A modifiziert ist, einen Flush-Befehl für den Cacheblock A zu dem Fernknoten generieren (Bezugszeichen 204), der mit einem WB-Befehl und dem Cacheblock A antwortet (Bezugszeichen 206). Die Speicherbrücke 32 kann dann den Fill-Befehl mit dem Cacheblock A übertragen, der über den Write-Back-Befehl vorgesehen wurde (Bezugszeichen 192).
  • Im Ansprechen auf einen cRdExc-Befehl für einen Cacheblock A (Bezugszeichen 210) kann die Operation für einige RLD-Zustände ähnlich wie bei dem cRdShd-Fall sein. Ähnlich wie bei dem cRdShd-Fall kann die Speicherbrücke 32 eine RdExc- Transaktion auf der Verbindung 22 im Ansprechen auf den cRdExc-Befehl initiieren. Ähnlich wie beim cRdShd-Fall kann die Speicherbrücke 32 dann, wenn der RLD ungültig ist und keine Beseitigung eines Opfercacheblocks in dem RLD notwendig ist, um einen Eintrag für den Cacheblock A zuzuordnen, den Cacheblock, der auf der Verbindung 22 für die RdExc-Transaktion geliefert wurde, in einem Fill-Befehl dem Fernknoten zuführen (Bezugszeichen 212). Außerdem kann die Speicherbrücke 32 dann, wenn der RLD-Zustand für den Cacheblock A ungültig ist und ein Opfercacheblock aus dem RLD 34 entfernt wird, in ähnlicher Weise arbeiten wie bei dem cRdShd-Fall (Bezugszeichen 214 und 216 und Pfeil 222 für den gemeinsam benutzten Fall des Opferblocks, und Bezugszeichen 218 und 220 sowie Pfeil 222 für den modifizierten Fall des Opferblocks). Wenn der RLD-Zustand für den Cacheblock A modifiziert ist, kann die Speicherbrücke 32 in einer ähnlichen Weise wie bei dem cRdShd-Fall arbeiten (Bezugszeichen 224 und 226). Wenn der RLD-Zustand für den Cacheblock A gemeinsam benutzt ist, kann die Speicherbrücke 32 Kill-Befehle für jeden gemeinsam nutzenden Fernknoten generieren (Bezugszeichen 228). Die Speicherbrücke 32 kann auf die Kill_Ack-Befehle von den gemeinsam nutzenden Fernknoten warten (Bezugszeichen 230) und dann den Fill-Befehl mit dem Cacheblock A übertragen, der auf der Verbindung 22 im Ansprechen auf die RdExc-Transaktion vorgesehen wurde (Bezugszeichen 212).
  • Im Ansprechen auf einen Wr-Befehl für den Cacheblock A (Bezugszeichen 240) kann die Speicherbrücke 32 eine Wr-Transaktion auf der Verbindung 22 generieren. Wenn der RLD-Zustand für den Cacheblock A ungültig ist, dann kann die Speicherbrücke 32 die Schreibdaten auf der Verbindung 22 übertragen und der Wr-Befehl ist vollständig (Bezugszeichen 242). Wenn der RLD-Zustand für den Cacheblock A gemeinsam benutzt ist, kann die Speicherbrücke 32 zusätzlich zur Übertragung der Daten auf der Verbindung 22 Kill-Befehle für jeden gemeinsam nutzenden Fernknoten generieren (Bezugszeichen 244) und die Kill_Ack-Befehle von diesen Fernknoten sammeln (Bezugszeichen 246). Wenn der RLD-Zustand für einen Fernknoten modifiziert ist, kann die Speicherbrücke 32 einen Flush-Befehl an den Fernknoten generieren (Bezugszeichen 248) und den WB-Befehl von dem Fernknoten empfangen (Bezugszeichen 250). In einer Ausführungsform kann die Speicherbrücke 32 die Übertragung der Schreibdaten auf der Verbindung 22 verzögern, bis der WB-Befehl oder die Kill_Ack-Befehle empfangen werden (obwohl die Daten, die mit dem WB-Befehl zurückgeschickt werden, von der Speicherbrücke 32 abgelegt werden können).
  • Die oben genannten Befehle werden von der Speicherbrücke 32 für Cacheblöcke empfangen, für die das System 10, das die Speicherbrücke 32 enthält, der Heimatknoten ist. Die Speicherbrücke 32 kann auch Flush-Befehle oder Kill-Befehle für Cacheblöcke empfangen, für die das System 10 ein Fernknoten ist. Im Ansprechen auf einen Flush-Befehl für den Cacheblock A (Bezugszeichen 260) kann die Speicherbrücke 32 eine RdKill- oder RdInv-Transaktion auf der Verbindung 22 initiieren. Wenn der lokale Zustand des Cacheblocks modifiziert ist, kann die Speicherbrücke 32 einen WB-Befehl an den Heimatknoten übertragen, mit dem Cacheblock, der auf der Verbindung 22 im Ansprechen auf die RdKill- oder RdInv-Transaktion geliefert wird (Bezugszeichen 262). Wenn der lokale Zustand des Cacheblocks nicht modifiziert ist, kann die Speicherbrücke 32 auf den Flush-Befehl nicht antworten (Bezugszeichen 264). In diesem Fall kann der Knoten bereits einen WB-Befehl an den Heimatknoten übertragen haben (z.B. im Ansprechen auf die lokale Beseitigung des Cacheblocks). Im Ansprechen auf einen Kill-Befehl für den Cacheblock 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).
  • In einer Ausführungsform kann die Speicherbrücke 32 auch so aufgebaut sein, dass sie einen nicht cachebaren Lese-Befehl (RdNC; non-cacheable read) empfängt (z.B. entsprechend zu einem Standard-HT-Lesebefehl) (Bezugszeichen 280). Als Antwort darauf kann die Speicherbrücke 32 eine RdShd-Transaktion auf der Verbindung 22 initiieren. Wenn der RLD-Zustand für den Cacheblock, der die zu lesenden Daten enthält, modifiziert ist, kann die Speicherbrücke 32 einen Flush-Befehl an den Fernknoten übertragen, der den modifizierten Cacheblock besitzt (Bezugszeichen 282), und kann den WB-Befehl von dem Fernknoten empfangen (Bezugszeichen 284). Außerdem kann die Speicherbrücke 32 Daten, die auf der Verbindung 22 im Ansprechen auf die RdShd-Transaktion empfangen wurden, als eine Leseantwort (RSP) an den anfordernden Knoten liefern (Bezugszeichen 286).
  • 14 ist eine Tabelle, die eine Ausführungsform von Aktualisierungen für das Fernleitungsverzeichnis 34 im Ansprechen auf Transaktionen auf der Verbindung 22 veranschaulicht. Die Quellenspalte in 14 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 Transaktionsspalte in 14 gibt die Transaktion an (eine der Transaktionen aus der Tabelle 142). Die RLD-Zustandsspalte in 14 gibt die Zustandsausgabe durch das Fernleitungsverzeichnis 34 im Ansprechen auf die Transaktion an. Die möglichen Zustände in dieser Ausführungsform sind M (modifiziert), S (gemeinsam benutzt) oder I (ungültig oder nicht vorhanden). Die Neu-RLD-Zustandsspalte in 14 gibt den Zustand an, auf den das Fernleitungsverzeichnis 34 im Ansprechen auf die Transaktion aktualisiert wird. Die" Gesetzter Besitzer?"-Spalte (Set Owner? column) in 14 gibt an, ob der Fernknoten, der die Transaktion bewirkt hat, als ein Besitzer in dem Fernleitungsverzeichnis 34 angegeben ist oder nicht (wobei "--" bedeutet: nicht relevant). Die "Andere Besitzer rücksetzen?"-Spalte (Reset Other Owners? column) gibt an, ob andere Besitzer, die vielleicht in dem Fernleitungsverzeichnis 34 angegeben sind, entfernt werden oder nicht.
  • Nun wird 15 betrachtet, die ein Blockdiagramm eines Mediums 300 für den Zugriff durch den Computer zeigt, das eine oder mehrere Datenstrukturen umfasst, die repräsentativ für die Schaltungen sind, die in dem System 10 enthalten sind. Allgemein gesagt kann ein Medium für den Zugriff durch den Computer Speichermedien wie magnetische oder optische Medien umfassen, z.B. Disk, CD-ROM oder DVD-ROM, nichtflüchtige und flüchtige Speichermedien wie z.B. RAM (z.B. SDRAM, RDRAM, SRAM, etc.), ROM, etc. sowie auch Medien, auf die über Übertragungsmedien oder Signale zugegriffen werden kann, wie z.B. elektrische, elektromagnetische oder digitale Signale, die über ein Kommunikationsmedium wie z.B. ein Netz und/oder eine drahtlose Verbindungsleitung übertragen werden.
  • Im allgemeinen kann die Datenstruktur/können die Datenstrukturen der Schaltungen auf dem Medium 300 für den Zugriff durch den Computer von einem Programm gelesen und direkt oder indirekt verwendet werden, um die Hardware herzustellen, die die Schaltungsanordnung umfasst. Zum Beispiel kann die Datenstruktur/können die Datenstrukturen eine oder mehrere Verhaltensebenen-Beschreibungen oder Register-Transfer-Level-(RTL)-Beschreibungen von Hardwarefunktionalitäten in einer High-Level-Designsprache (HDL) wie z.B. Verilog oder VHDL umfassen. Die Beschreibungen) kann/können von einem Synthesetool gelesen werden, das die Beschreibung synthetisieren kann, um eine oder mehrere Netzliste(n) zu erzeugen, die Listen von Gattern aus einer Synthesebibliothek umfassen. Die Netzliste(n) umfasst/umfassen eine Gruppe von Gattern, die auch die Funktionalität der Hardware darstellen, die die Schaltungen umfasst. Die Netzliste(n) können dann plaziert und geroutet werden, um einen oder mehrere Datensätze herzustellen, die geometrische Formen beschreiben, die auf die Masken angewendet werden sollen. Die Masken können dann in verschiedenen Halbleiterfabrikationsschritten verwendet werden, um eine Halbleiterschaltung bzw. Halbleiterschaltungen herzustellen, die dem Schal tungsaufbau entsprechen. Alternativ dazu kann/können die Datenstrukturen) auf dem Medium 300 für den Zugriff durch den Computer je nach Wunsch die Netzliste(n) (mit oder ohne die Synthesebibliothek) oder der Datensatz/die Datensätze sein. In noch einer anderen Alternative können die Datenstrukturen die Ausgabe eines schematischen Programms umfassen, oder Netzliste(n) oder einen Datensatz bzw. Datensätze, die daraus abgeleitet wurden. Die Datenstrukturen) kann/können einen schaltungsdefinierenden Mechanismus für das System 10 umfassen.
  • Das Medium 300 für den Zugriff durch den Computer umfasst zwar eine Repräsentation des Systems 10, aber andere Ausführungsformen können eine Repräsentation eines anderen Teils des Systems 10 umfassen (z.B. die Prozessoren 12A12N, die Speichersteuerung 14, den L2-Cache 36, die Verbindung 22, die Speicherbrücke 32 (oder Teile davon), das Fernleitungsverzeichnis 34, den Schalter 18, die Paket-DMA-Schaltung 16, die Schnittstellenschaltungen 20A20C (oder Teile davon), etc.).
  • Zahlreiche Variationen und Modifikationen werden den Fachleuten auf diesem Gebiet offensichtlich werden, wenn die oben genannte Offenbarung vollständig verstanden ist. Es ist beabsichtigt, dass die nachfolgenden Ansprüche so interpretiert werden, dass sie alle derartigen Variationen und Modifikationen umfassen.

Claims (18)

  1. Vorrichtung (10) mit: einer oder mehreren Schnittstellenschaltungen (20A, 20B, 20C), wobei jede Schnittstellenschaltung mit einer entsprechenden Schnittstelle gekoppelt ist, wobei die eine oder mehreren Schnittstellenschaltungen (20A, 20B, 20C) so gekoppelt sind, dass sie eine Mischung aus Paketen und kohärenten Befehlen von den Schnittstellen empfangen; einer Verbindung (Interconnect) (22); einer Speichersteuerung (14), die mit der Verbindung (22) gekoppelt und so aufgebaut ist, dass sie mit einem Speicher (24) koppelt; einer Speicherbrücke (32), die mit der Verbindung (22) gekoppelt ist; einer Paket-DMA (Direct Memory Access; Direktspeicherzugriffs)-Schaltung (16), die mit der Verbindung (22) gekoppelt ist; und einem Schalter (18), der mit den Schnittstellenschaltungen (20A, 20B, 20C), der Speicherbrücke (32) und der Paket-DMA-Schaltung (16) gekoppelt ist, wobei der Schalter (18) so aufgebaut ist, dass er bei der Mischung aus Paket- und kohärentem Verkehr die kohärenten Befehle von den Schnittstellenschaltungen (20A, 20B, 20C) zu der Speicherbrücke (32) und die Pakete von den Schnittstellenschaltungen (20A, 20B, 20C) zu der Paket-DMA-Schaltung (16) routet, wobei die Speicherbrücke (32) so aufgebaut ist, dass sie entsprechende Transaktionen auf der Verbindung (22) im Ansprechen auf wenigstens einige der kohärenten Befehle initiiert, und wobei die Paket-DMA-Schaltung (16) so aufgebaut ist, dass sie Schreibtransaktionen auf der Verbindung (22) zu der Speichersteuerung (14) überträgt, um die Pakete in dem Speicher (24) zu speichern.
  2. Vorrichtung nach Anspruch 1, die des weiteren eine oder mehrere kohärente Einrichtungen aufweist, die mit der Verbindung gekoppelt sind, wobei die entsprechenden Transaktionen Zustandsänderungen in den kohärenten Einrichtungen auf der Verbindung bewirken.
  3. Vorrichtung nach Anspruch 1 oder 2, wobei die Speicherbrücke (32) des weiteren so gekoppelt ist, dass sie von den kohärenten Einrichtungen initiierte Transaktionen empfängt, und wobei die Speicherbrücke (32) so aufgebaut ist, dass sie kohärente Befehle im Ansprechen auf wenigstens einige der von den kohärenten Einrichtungen initiierten Transaktionen generiert, und wobei der Schalter (18) so aufgebaut ist, dass er die von der Speicherbrücke (32) generierten kohärenten Befehle zu einer oder mehreren der Schnittstellenschaltungen (20A, 20B, 20C) zur Übertragung routet.
  4. Vorrichtung nach einem der Ansprüche 1 bis 3, wobei die Paket-DMA-Schaltung (16) des weiteren so aufgebaut ist, dass sie Lesetransaktionen auf der Verbindung (22) zu der Speichersteuerung (14) generiert, um Pakete aus dem Speicher (24) auszulesen, wobei der Schalter (18) so aufgebaut ist, dass er die Pakete von der Paket-DMA-Schaltung (16) zu den Schnittstellenschaltungen (20A, 20B, 20C) zur Übertragung routet.
  5. Vorrichtung nach einem der Ansprüche 1 bis 4, wobei die Schnittstellenschaltungen (20A, 20B, 20C) des weiteren so aufgebaut sind, dass sie nichtkohärente Befehle von den Schnittstellen empfangen, und wobei der Schalter (18) so aufgebaut ist, dass er die nicht-kohärenten Befehle zu der Speicherbrücke (32) routet.
  6. Vorrichtung nach Anspruch 5, wobei eine der Schnittstellen (30A, 30B, 30C) in Benutzung Pakete, kohärente Befehle und nicht-kohärente Befehle unterstützt.
  7. Vorrichtung nach einem der Ansprüche 1 bis 6, wobei eine der Schnittstellen (30A, 30B, 30C) in Benutzung Pakete und kohärente Befehle unterstützt.
  8. Vorrichtung nach einem der Ansprüche 1 bis 7, wobei wenigstens eine der Schnittstellen (30A, 30B, 30C) eine HyperTransport-Schnittstelle aufweist.
  9. Vorrichtung nach einem der Ansprüche 1 bis 8, wobei wenigstens eine weitere Schnittstelle (30A, 30B, 30C) eine System-Paket-Schnittstelle aufweist.
  10. Vorrichtung nach einem der Ansprüche 1 bis 4, wobei wenigstens eine der Schnittstellen (30A, 30B, 30C) in Benutzung nur Pakete unterstützt.
  11. Vorrichtung nach einem der Ansprüche 1 bis 10, wobei die Pakete in Benutzung direkt auf wenigstens einer der Schnittstellen (30A, 30B, 30C) übertragen werden.
  12. Vorrichtung nach einem der Ansprüche 1 bis 10, wobei die Pakete in Benutzung indirekt als ein oder mehrere Schreibbefehle auf wenigstens einer der Schnittstellen (30A, 30B, 30C) übertragen werden.
  13. Vorrichtung nach einem der Ansprüche 1 bis 12, wobei die Schnittstellenschaltungen (20A, 20B, 20C), die Verbindung (22), die Speichersteuerung (14), die Speicherbrücke (32), die Paket-DMA-Schaltung (16) und der Schalter (18) auf einer integrierten Schaltung integriert sind.
  14. Verfahren, das folgende Schritte aufweist: Empfangen einer Mischung aus Paketen und kohärenten Befehlen auf einer oder mehreren Schnittstellen (30A, 30B, 30C); Routen des gemischten Verkehrs aus Paketen und kohärenten Befehlen durch einen Schalter (18), wobei die Pakete zu einer Paket-DMA-Schaltung (16) und die kohärenten Befehle zu einer Speicherbrücke (32) geroutet werden; Generieren von Transaktionen auf einer Verbindung (22) im Ansprechen auf wenigstens einige der kohärenten Befehle durch die Speicherbrücke (32); und Generieren von Transaktionen auf der Verbindung (22) durch die Paket-DMA-Schaltung (16), um die Pakete in einen Speicher (24) zu schreiben.
  15. Verfahren nach Anspruch 14, das des weiteren aufweist: Empfangen von Transaktionen, die von kohärenten Einrichtungen auf der Verbindung (22) initiiert werden, durch die Speicherbrücke (32); Generieren von kohärenten Befehlen im Ansprechen auf wenigstens einige der von den kohärenten Einrichtungen initiierten Transaktionen durch die Speicherbrücke (32); und Routen der von der Speicherbrücke (32) generierten kohärenten Befehle zur Übertragung auf wenigstens einer der einen oder mehreren Schnittstellen.
  16. Verfahren nach Anspruch 14 oder 15, das des weiteren aufweist: Generieren von Lesetransaktionen auf der Verbindung durch die Paket-DMA-Schaltung (16), um Pakete aus dem Speicher (24) auszulesen; und Routen der Pakete von der Paket-DMA-Schaltung (16) zur Übertragung auf wenigstens einer der einen oder mehreren Schnittstellen (30A, 30B, 30C).
  17. Verfahren nach einem der Ansprüche 14 bis 16, das des weiteren aufweist: Empfangen nicht-kohärenter Befehle von den Schnittstellen (30A, 30B, 30C); und Routen der nicht-kohärenten Befehle zu der Speicherbrücke (32).
  18. Computer-Softwareprogramm zum Durchführen der in Anspruch 14 definierten Schritte.
DE60203469T 2001-11-20 2002-11-20 System mit Schnittstellen und einem Schalter für die Trennung von kohärentem und nichtkohärentem Datenpaketverkehr Expired - Lifetime DE60203469T2 (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/270,029 US6748479B2 (en) 2001-11-20 2002-10-11 System having interfaces and switch that separates coherent and packet traffic
US270029 2002-10-11

Publications (2)

Publication Number Publication Date
DE60203469D1 DE60203469D1 (de) 2005-05-04
DE60203469T2 true DE60203469T2 (de) 2006-02-23

Family

ID=27559482

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60203469T Expired - Lifetime DE60203469T2 (de) 2001-11-20 2002-11-20 System mit Schnittstellen und einem Schalter für die Trennung von kohärentem und nichtkohärentem Datenpaketverkehr

Country Status (4)

Country Link
US (3) US6748479B2 (de)
EP (1) EP1313023B1 (de)
AT (1) ATE292305T1 (de)
DE (1) DE60203469T2 (de)

Families Citing this family (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1233346A1 (de) * 2001-02-14 2002-08-21 Micronas GmbH Netzwerk-Co-Prozessor für Kraftfahrzeuge
US6748479B2 (en) * 2001-11-20 2004-06-08 Broadcom Corporation System having interfaces and switch that separates coherent and packet traffic
US7302505B2 (en) * 2001-12-24 2007-11-27 Broadcom Corporation Receiver multi-protocol interface and applications thereof
US7490187B2 (en) * 2002-05-15 2009-02-10 Broadcom Corporation Hypertransport/SPI-4 interface supporting configurable deskewing
US7114043B2 (en) * 2002-05-15 2006-09-26 Broadcom Corporation Ambiguous virtual channels
US7051150B2 (en) * 2002-07-29 2006-05-23 Freescale Semiconductor, Inc. Scalable on chip network
US6996651B2 (en) * 2002-07-29 2006-02-07 Freescale Semiconductor, Inc. On chip network with memory device address decoding
US7277449B2 (en) * 2002-07-29 2007-10-02 Freescale Semiconductor, Inc. On chip network
US7139860B2 (en) * 2002-07-29 2006-11-21 Freescale Semiconductor Inc. On chip network with independent logical and physical layers
US7200137B2 (en) * 2002-07-29 2007-04-03 Freescale Semiconductor, Inc. On chip network that maximizes interconnect utilization between processing elements
US7103320B2 (en) * 2003-04-19 2006-09-05 International Business Machines Corporation Wireless communication system within a system on a chip
US6981074B2 (en) * 2003-10-14 2005-12-27 Broadcom Corporation Descriptor-based load balancing
JP2005165508A (ja) * 2003-12-01 2005-06-23 Renesas Technology Corp ダイレクトメモリアクセスコントローラ
US20050216637A1 (en) * 2004-03-23 2005-09-29 Smith Zachary S Detecting coherency protocol mode in a virtual bus interface
US7558920B2 (en) * 2004-06-30 2009-07-07 Intel Corporation Apparatus and method for partitioning a shared cache of a chip multi-processor
US7296167B1 (en) 2004-10-01 2007-11-13 Advanced Micro Devices, Inc. Combined system responses in a chip multiprocessor
US7447810B2 (en) * 2004-10-28 2008-11-04 Intel Corporation Implementing bufferless Direct Memory Access (DMA) controllers using split transactions
US7970980B2 (en) * 2004-12-15 2011-06-28 International Business Machines Corporation Method and apparatus for accessing memory in a computer system architecture supporting heterogeneous configurations of memory structures
US7583664B2 (en) 2004-12-28 2009-09-01 Michael Ho Techniques for transmitting and receiving traffic over advanced switching compatible switch fabrics
US7499452B2 (en) * 2004-12-28 2009-03-03 International Business Machines Corporation Self-healing link sequence counts within a circular buffer
US7644221B1 (en) 2005-04-11 2010-01-05 Sun Microsystems, Inc. System interface unit
US20060277126A1 (en) * 2005-06-06 2006-12-07 Intel Corporation Ring credit management
US7716387B2 (en) * 2005-07-14 2010-05-11 Canon Kabushiki Kaisha Memory control apparatus and method
US7673199B2 (en) * 2006-02-03 2010-03-02 Teradyne, Inc. Multi-stream interface for parallel test processing
US7493468B2 (en) * 2006-06-01 2009-02-17 International Business Machines Corporation Method for broadcasting instructions/data to a plurality of processors in a multiprocessor device via aliasing
US7707324B1 (en) * 2006-06-28 2010-04-27 Marvell International Ltd. DMA controller executing multiple transactions at non-contiguous system locations
US7996484B2 (en) * 2008-12-11 2011-08-09 Microsoft Corporation Non-disruptive, reliable live migration of virtual machines with network data reception directly into virtual machines' memory
US8880696B1 (en) 2009-01-16 2014-11-04 F5 Networks, Inc. Methods for sharing bandwidth across a packetized bus and systems thereof
US9152483B2 (en) 2009-01-16 2015-10-06 F5 Networks, Inc. Network devices with multiple fully isolated and independently resettable direct memory access channels and methods thereof
US8112491B1 (en) 2009-01-16 2012-02-07 F5 Networks, Inc. Methods and systems for providing direct DMA
US8335857B1 (en) * 2009-05-21 2012-12-18 Sprint Communications Company L.P. System and methods of data transmission to devices
US9313047B2 (en) 2009-11-06 2016-04-12 F5 Networks, Inc. Handling high throughput and low latency network data packets in a traffic management device
FR2953308B1 (fr) 2009-12-01 2011-12-09 Bull Sas Systeme autorisant des transferts directs de donnees entre des memoires de plusieurs elements de ce systeme
FR2953307B1 (fr) 2009-12-01 2011-12-16 Bull Sas Controleur d'acces direct a une memoire pour le transfert direct de donnees entre memoires de plusieurs dispositifs peripheriques
US9176913B2 (en) * 2011-09-07 2015-11-03 Apple Inc. Coherence switch for I/O traffic
US8473658B2 (en) 2011-10-25 2013-06-25 Cavium, Inc. Input output bridging
US9270602B1 (en) * 2012-12-31 2016-02-23 F5 Networks, Inc. Transmit rate pacing of large network traffic bursts to reduce jitter, buffer overrun, wasted bandwidth, and retransmissions
US10375155B1 (en) 2013-02-19 2019-08-06 F5 Networks, Inc. System and method for achieving hardware acceleration for asymmetric flow connections
US9864606B2 (en) 2013-09-05 2018-01-09 F5 Networks, Inc. Methods for configurable hardware logic device reloading and devices thereof
KR102192165B1 (ko) 2013-11-25 2020-12-16 삼성전자주식회사 전자 장치에서 헤더 압축된 패킷을 처리하기 위한 장치 및 방법
US11855898B1 (en) 2018-03-14 2023-12-26 F5, Inc. Methods for traffic dependent direct memory access optimization and devices thereof
US11537716B1 (en) 2018-11-13 2022-12-27 F5, Inc. Methods for detecting changes to a firmware and devices thereof

Family Cites Families (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4788679A (en) 1986-09-02 1988-11-29 Nippon Telegraph And Telephone Corporation Packet switch with variable data transfer rate links
CH670715A5 (de) 1986-10-03 1989-06-30 Bbc Brown Boveri & Cie
US5963745A (en) 1990-11-13 1999-10-05 International Business Machines Corporation APAP I/O programmable router
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
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
EP0735487B1 (de) 1995-03-31 2001-10-31 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 情報処理システム及び装置及びその制御方法
US5991824A (en) * 1997-02-06 1999-11-23 Silicon Graphics, Inc. Method and system for simultaneous high bandwidth input output
JP3904282B2 (ja) 1997-03-31 2007-04-11 株式会社ルネサステクノロジ 半導体集積回路装置
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
US6105119A (en) 1997-04-04 2000-08-15 Texas Instruments Incorporated Data transfer circuitry, DSP wrapper circuitry and improved processor devices, methods and systems
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
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
US6209065B1 (en) 1997-10-24 2001-03-27 Compaq Computer Corporation Mechanism for optimizing generation of commit-signals in a distributed shared-memory system
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
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
FR2771573B1 (fr) 1997-11-27 2001-10-19 Alsthom Cge Alkatel Element de commutation de paquets a memoires tampons
US6141733A (en) 1998-02-17 2000-10-31 International Business Machines Corporation Cache coherency protocol with independent implementation of optimized cache operations
JP3563257B2 (ja) 1998-02-20 2004-09-08 Necエレクトロニクス株式会社 Atmスイッチ回路
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
US6714994B1 (en) * 1998-12-23 2004-03-30 Advanced Micro Devices, Inc. Host bridge translating non-coherent packets from non-coherent link to coherent packets on conherent link and vice versa
US6925097B2 (en) * 2000-03-29 2005-08-02 Matsushita Electric Industrial Co., Ltd. Decoder, decoding method, multiplexer, and multiplexing method
US6606679B2 (en) * 2001-08-20 2003-08-12 Intel Corporation Software transparent system and method for peer-to-peer message routing
US20030088796A1 (en) * 2001-11-06 2003-05-08 Soubhi Abdulkarim Communication adapter
US6748479B2 (en) * 2001-11-20 2004-06-08 Broadcom Corporation System having interfaces and switch that separates coherent and packet traffic
US6718444B1 (en) * 2001-12-20 2004-04-06 Advanced Micro Devices, Inc. Read-modify-write for partial writes in a memory controller
US7003631B2 (en) 2002-05-15 2006-02-21 Broadcom Corporation System having address-based intranode coherency and data-based internode coherency

Also Published As

Publication number Publication date
ATE292305T1 (de) 2005-04-15
US6941406B2 (en) 2005-09-06
EP1313023B1 (de) 2005-03-30
US20050226234A1 (en) 2005-10-13
US20040221072A1 (en) 2004-11-04
DE60203469D1 (de) 2005-05-04
EP1313023A1 (de) 2003-05-21
US20030097416A1 (en) 2003-05-22
US6748479B2 (en) 2004-06-08

Similar Documents

Publication Publication Date Title
DE60203469T2 (de) System mit Schnittstellen und einem Schalter für die Trennung von kohärentem und nichtkohärentem Datenpaketverkehr
DE60219436T2 (de) System mit adressbasierter Intraknotenkohärenz und datenbasierter Interknotenkohärenz
DE60202926T2 (de) Multicomputersystem mit konfigurierbaren Schnittstellen für flexible Systemkonfigurationen
DE60204213T2 (de) Level 2 Cache mit lokaler Beibehaltung von Kohärenzblöcken
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
DE60217221T2 (de) Ein-Chip System zur Paketverarbeitung
DE60215417T2 (de) Netzwerkschaltung
DE60201650T2 (de) Systeme, welche eine Mischung aus paketartigem, kohärentem und nicht-kohärentem Verkehr verwenden, um die Übertragung zwischen Systemen zu optimieren
DE60006842T2 (de) Multiprozessor-Node-Controller-Schaltung und Verfahren
DE69724355T2 (de) Erweiterte symmetrische Multiprozessorarchitektur
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
DE69722079T2 (de) Ein Mehrrechnersystem mit Anordnung zum Durchführen von Blockkopieroperationen
DE69721643T2 (de) Multiprozessorsystem ausgestaltet zur effizienten Ausführung von Schreiboperationen
DE102007030116B4 (de) Snoop-Filter mit ausschließlicher Inhaberschaft
DE112013000889B4 (de) Weiterleitungsfortschritts-Mechanismus für Speichervorgänge bei Vorhandensein von Ladekonflikten in einem Ladevorgänge begünstigenden System
DE60003834T2 (de) Vituelle kanäle und entsprechende pufferzuweisungen für einen blockierungfreien rechnersystem -betrieb
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
DE102013201079A1 (de) Mechanismus des Weiterleitungsfortschritts für Speichervorgänge beim Vorhandensein einer Überlastung in einem System, das Belastungen durch Zustandsänderungen begünstigt
DE112008002019T5 (de) Auslagern von Eingabe/Ausgabe (I/O)-Virtualisierungsarbeitsgängen an einem Prozessor
DE112015004336T5 (de) Konfigurationsbasierte Auswahl eines Cachekohärenz-Protokolls
DE10232926A1 (de) Cachesystem mit Leitungsgruppen und mit Kohärenz sowohl für einzelne Leitungen als auch Gruppen von Leitungen
DE102008048627A1 (de) Zuteilen von Platz in dedizierten Cache-Wegen
DE112013005044T5 (de) Ausführen von eingehenden PCIE-Schreiboperationen in einen Speicher und Partnereinrichtungen per Dualcast

Legal Events

Date Code Title Description
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