DE60215417T2 - Netzwerkschaltung - Google Patents

Netzwerkschaltung Download PDF

Info

Publication number
DE60215417T2
DE60215417T2 DE60215417T DE60215417T DE60215417T2 DE 60215417 T2 DE60215417 T2 DE 60215417T2 DE 60215417 T DE60215417 T DE 60215417T DE 60215417 T DE60215417 T DE 60215417T DE 60215417 T2 DE60215417 T2 DE 60215417T2
Authority
DE
Germany
Prior art keywords
transaction
cache
circuit
cache block
write
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
DE60215417T
Other languages
English (en)
Other versions
DE60215417D1 (de
Inventor
Mark D. Menlo Park Hayter
Joseph B. Santa Clara Rowlands
James Y. Los Gatos Cho
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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=25335132&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=DE60215417(T2) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by Broadcom Corp filed Critical Broadcom Corp
Application granted granted Critical
Publication of DE60215417D1 publication Critical patent/DE60215417D1/de
Publication of DE60215417T2 publication Critical patent/DE60215417T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/387Information transfer, e.g. on bus using universal interface adapter for adaptation of different data processing systems to different peripheral devices, e.g. protocol converters for incompatible systems, open system

Description

  • Die vorliegende Erfindung betrifft Netzwerkeinrichtungen und Netzwerkschaltungen sowie insbesondere, aber nicht ausschließlich, integrierte Schaltkreise in Netzwerksystemen.
  • Die Vernetzung von Computersystemen und anderen elektronischen Einrichtungen nimmt auf allen Ebenen des Netzwerkbetriebes immer mehr zu. Computereinrichtungen in Büros, und manchmal selbst in Häusern, sind mithilfe von lokalen Netzwerkverbindungen (LAN) vernetzt. Geografisch voneinander entfernte Computersysteme können in Weitverkehrsnetzwerken (WAN) vernetzt sein. Das Internet kann als ein Ausführungsbeispiel für ein WAN angesehen werden.
  • Es können verschiedene Netzwerkeinrichtungen für die Übertragung von Netzwerkdaten (für die Kommunikation zwischen vernetzten Systemen) von einem Computersystem zum anderen involviert sein. Zwischen einem lokalen Netzwerk und einem Weitverkehrsnetzwerk (d. h. dem Internet) kommen typischerweise zum Beispiel Firewalls zur Anwendung, um das lokale Netzwerk vor einer Bedrohung aus dem Weitverkehrsnetzwerk zu schützen. Router empfangen Netzwerkdaten (d.h. Datenpakete), analysieren diese Daten und leiten dann die Daten zu einem anderen Router bzw. zum empfangenden Computersystem weiter. Die Router können einen Schaltkreis zum Überprüfen von Datenpaketen enthalten, um entsprechende Qualitätsmerkmale, wie die Quality-of-Service-Funktion (QOS) und das Zwischenspeichern (Cachen) von Informationen etc., bereitzustellen.
  • Das US-Patent US5640399 offenbart einen Netzwerk-Router mit Prozessor-, Cache-, Memory-Controller-, WAN- und LAN-Schnittstellen-Einheiten, die in einem einzigen Chip integriert sind. Die LAN-Medienzugriffsschnittstellen und auch die WAN-Schnittstellen sind jedoch direkt mit dem Systembus gekoppelt.
  • Die nachstehende Beschreibung in den Einzelheiten erfolgt lediglich anhand eines Ausführungsbeispiels und nimmt Bezug auf die Begleitzeichnungen, die nun kurz erläutert werden.
  • 1 ist ein Blockdiagramm für eine Ausführungsform eines Computersystems.
  • 2 ist ein Blockdiagramm von einer Ausführungsform einer Netzwerkeinrichtung, welche das in 1 dargestellte System einsetzt.
  • 3 ist ein Taktsteuerdiagramm, das eine Ausführungsform von kohärenten Transaktionen für das in 1 dargestellte System veranschaulicht.
  • 4 ist ein Blockdiagramm von einer Ausführungsform der in 1 dargestellten E/A-Brückenschaltung.
  • 5 ist eine Ablaufsteuereinheit, wie sie in einer Ausführungsform der in 4 dargestellten E/A-Brückenschaltung für einen Lesemodifizierungsschreibbetrieb eingesetzt werden kann.
  • 6 ist ein Taktsteuerdiagramm, welches den Vorgang des Lesemodifizierungsschreibbetriebs veranschaulicht.
  • 7 ist ein Taktsteuerdiagramm, welches den Betriebsvorgang für einen Abschnitt eines Lesemodifizierungsschreibbetriebs und einer Lesetransaktion veranschaulicht.
  • 8 ist ein Blockdiagramm von einer Ausführungsform eines Trägermediums.
  • Auch wenn die vorliegende Erfindung verschiedene Modifikationen und alternative Ausgestaltungen zulässt, wird zu diesen spezifischen Ausführungsformen in den Zeichnungen lediglich ein Ausführungsbeispiel dargestellt, wofür in der Beschreibung die Einzelheiten erläutert werden. Es ist jedoch selbstverständlich davon auszugehen, dass nicht beabsichtigt ist, aufgrund der Zeichnungen und der detaillierten Beschreibung die Erfindung mit dieser speziellen und offenbarten Ausgestaltungsform einzuschränken, sondern im Gegenteil: Die vorliegende Erfindung soll alle Modifikationen, Äquivalente und Alternativen umfassen, welche außerdem dem Schutzumfang der vorliegenden Erfindung unterliegen, wie dieser in den anhängenden Patentansprüchen definiert ist.
  • Systemübersicht
  • Mit Bezug nun auf 1 ist ein Blockdiagramm von einer Ausführungsform eines Computersystems dargestellt. Weitere Ausführungsformen sind möglich und beabsichtigt. Bei der Ausführungsform der 1 umfasst das System 10 die Prozessoren 12A12B, einen L2-Cache-Speicher 14, eine Speichersteuereinheit [Memory-Controller] 16, die zwei Ein-/Ausgabebrückenschaltungen (E/A-Brücken) 20A–20B und die verschiedenen E/A-Schnittstellenschaltungen 22A22I. Das System 10 kann außerdem einen Bus 24 zum vermittelnden Verbinden der verschiedenen Komponenten des Systems umfassen. Gemäß 1 ist jeder der Prozessoren 12A12B, der L2-Cache 14, die Speichersteuereinheit 16 sowie die E/A-Brücken 20A-20B mit dem Bus 24 gekoppelt. Daher kann bei der veranschaulichten Ausführungsform jeder der Prozessoren 12A12B, der L2-Cache 14, die Speichersteuereinheit 16 und die E/A-Brücken 20A–20B im Bus 24 als Agent wirken. Die E/A-Brücke 20A ist mit den E/A-Schnittstellenschaltungen 22A22B verbunden (in der veranschaulichten Ausführungsform speziell mit einer lokalen Schnittstellenschaltung für die periphere Komponentenverbindung bzw. PCI-Schnittstellenschaltung 22A und mit einer LDT-Schnittstellenschaltung 22B (LDT = Lightning Data Transport bzw. Ansteuerdaten-Transportsystem), wobei nun die Hyper-Transport-Schnittstelle ebenso als LDT-Schnittstelle bezeichnet wird, und die E/A-Brücke 20B ist mit den E/A-Schnittstellenschaltungen 22C22I gekoppelt (in der veranschaulichten Ausführungsform speziell mit drei Netzwerk-Schnittstellenschaltungen 22C22E, zwei seriellen Schnittstellenschaltungen 22F22G, einer Systemmanagementbus-Schnittstellenschaltung 22A (SM-Bus) und mit einer PCMCIA-Schnittstellenschaltung 22I [PCMCIA = Personal Computer Memory Card International Association]. Der L2-Cache 14 ist mit der Speichersteuereinheit 16 verbunden, welche wiederum mit einem Speicher 26 gekoppelt ist. Gemäß 1 ist außerdem von der PCI-Schnittstellenschaltung 22A aus eine PCI-Vorrichtung 28 mit dem PCI-Bus verbunden.
  • Die Prozessoren 12A12B können für jede beliebige Instruktionssatzarchitektur ausgelegt sein und Programme ausführen, die für diese Instruktionssatzarchitektur geschrieben worden sind. Als Beispiel gewählte Instruktionssatzarchitekturen können die MIPS-Instruktionssatzarchitektur beinhalten (einschließlich der MIPS-3D und MIPS-MDMX anwenderspezifischen Erweiterungen), sowie die IA-32 oder IA-64-Instruktionssatzarchitekturen, die von Intel Corporation entwickelt wurden, die Power-PC-Instruktionssatzarchitektur, die Alpha- Instruktionssatzarchitektur, die ARM-Instruktionssatzarchitektur oder sonstige beliebige Instruktionssatzarchitekturen. In einer Ausführung ist in den Prozessoren 12A12B ein allgemeiner Zielinstruktionssatz implementiert (wobei der Instruktionssatz für allgemeines Zielcomputerrechnen anwendbar ist). Die Implementierung kann speziell auch keine für Netzwerkanwendungen (Router, Switches, Firewalls etc.) optimierte zusätzliche Instruktionen aufweisen. Auch wenn das in 1 dargestellte System 10 zwei Prozessoren enthält, können andere Ausführungsformen einen Prozessor oder mehr als zwei Prozessoren, je nach Konstruktionswunsch, besitzen.
  • Der Level-2-Cache 14 ist ein Hochgeschwindigkeitsarbeitsspeicher [Cache]. Der Level-2-Cache 14 wird als "L2" bezeichnet, da die Prozessoren 12A12B auch interne Level-1-Caches („L1" = primär zwischenspeichernde Arbeitsspeicher) einsetzen können. Wenn in den Prozessoren 12A12B keine primäre Arbeitsspeicher [L1] enthalten sind, kann auch der L2-Cache 14 als L1-Cache fungieren. Wenn des Weiteren in den Prozessoren 12A12B viele Ebenen des Cache-Zwischenspeicherns enthalten sind, kann der L2-Cache 14 auch ein Außen-Ebenen-Cache anstatt ein Level-2-Cache sein.
  • Auch wenn der L2-Cache im Hinblick auf seine Position in der Prozessor-Cache-Hierarchie das L2-Kennzeichen trägt, kann der L2-Cache 14 eigentlich von jeder Einrichtung in dem Bus 24 zwischenspeicherbare Transaktionen abarbeiten. Daher kann der L2-Chache 14 als Teil eines Speichersubsystems angesehen werden, das die Speichersteuereinheit 16 (und den damit verbundenen Speicher 26) einschließt. Wenn eine zwischenspeicherbare Lesetransaktion im L2-Cache 14 einen Treffer findet, selbst wenn es sich bei der Quelle der Lesetransaktion um eine E/A-Schnittstellenschaltung 22A22I handelt, liefert der L2-Cache 14 die Daten für die Lesetransaktion. Wenn eine zwischenspeicherbare Schreibtransaktion im L2-Cache 14 einen Treffer hat, selbst wenn es sich bei der Quelle der Lesetransaktion um eine E/A-Schnittstellenschaltung 22A22I handelt, aktualisiert der L2-Cache 14 die Daten für die Lesetransaktion.
  • Der L2-Cache 14 kann jede beliebige Zwischenspeicherverwaltung anwenden, einschließlich die Direct-Mapped-Cache-Organisation [direktes Zwischenspeicher-Abbildungsverfahren], teilassoziative Abbildungs- und vollassoziative Abbildungsverwaltungen. Bei einer bestimmten Implementierung ist der L2-Cache 14 ein teilassoziativer Arbeitsspeicher (im Allgemeinen ein N-Weg, wobei N eine Integer-Zahl ist, obgleich eine spezifische 4-Wegeausführungsform nachstehend veranschaulicht ist) mit 32-Byte-Cache-Blöcken. Ein Cache mit teilassoziativer Abbildung ist ein zwischenspeichernder Arbeitsspeicher, der in vielen Sätzen angeordnet wird, wobei jeder Satz aus zwei oder mehreren Einträgen besteht. Ein Teil der Hauptspeicheradresse (der "Index") wird verwendet, um einen aus diesen vielen Sätzen auszuwählen (d.h. eine jede Verschlüsselung des Indexes wählt einen anderen Satz aus). Die Cacheblock-Speicherstellen in dem ausgewählten Satz sind geeignet, um den Cache-Block zu speichern, auf die über die Adresse zugegriffen wurde. Jede der Cacheblock-Speicherstellen innerhalb des Satzes wird als "Weg" des Satzes bezeichnet. Der Adressenanteil, der nach dem Entfernen des Indexes (und des Offsets im Cache-Block) übrig bleibt, wird als „Tag" bezeichnet, und wird in jeder Cacheblock-Speicherstelle gespeichert, um in diesem Eintrag den Cacheblock zu kennzeichnen bzw. zu identifizieren. Die gespeicherten Tags werden mit dem korrespondierenden Tag- Anteil der Adresse einer Speichertransaktion verglichen, um zu ermitteln, ob die Speichertransaktion im virtuellen Arbeitsspeicher [Cache] einen Treffer [Cache-Hit] oder einen Fehler [Cache-Miss] hat, und wird für die Auswahl des Weges verwendet, in dem der Cache-Hit erfasst worden ist (falls ein Cache-Hit entdeckt wurde).
  • Die Speichersteuereinheit 16 ist so konfiguriert, dass sie in Reaktion auf die im Bus 24 angekommenen Speichertransaktionen auf den Speicher 26 zugreifen kann. Die Speichersteuereinheit 16 empfängt aus dem L2-Cache 14 ein Treffersignal, und falls ein Treffer [Cache-Hit] für eine Speichertransaktion im L2-Cache 14 erfasst worden ist, reagiert die Speichersteuereinheit 16 auf diese Speichertransaktion nicht mehr. Andere Ausführungsformen besitzen keinen L2-Cache 14, wobei dann die Speichersteuereinheit 16 auf jede Speichertransaktion reagieren muss. Wenn vom L2-Cache 14 ein Cache-Miss entdeckt wird, oder wenn die Speichertransaktion nicht im Cache zwischenspeicherbar ist, greift die Speichersteuereinheit 16 auf den Speicher 26 zu, um den Lese- oder Schreibbetriebsvorgang auszuführen. Die Speichersteuereinheit 16 kann des Weiteren so konzipiert sein, dass sie auf jeden beliebigen aus einer Vielfalt von Speichertypen zugreifen kann. Zum Beispiel kann die Speichersteuereinheit 16 für einen synchron dynamischen Direktzugriffsspeicher (SDRAM = Synchronous Dynamic Random Access Memory) ausgelegt sein, und im Besonderen für einen DDR-SDRAM (DDR = Double Data Rate). Alternativ dazu kann die Speichersteuereinheit 16 in Bezug auf einen DRAM (= Dynamic RAM), einen RDRAM (= Rambus-DRAM), SRAM (= Static RAM) oder eine sonst geeignete Speichervorrichtung entwickelt worden sein.
  • Die E/A-Brücken 20A20B verknüpfen eine oder mehrere E/A-Schnittstellenschaltungen (d.h. die E/A-Schnittstellenschaltungen 22A–22B in Bezug auf die E/A-Brücke 20A und die E/A-Schnittstellenschaltungen 22C22B in Bezug auf die E/A-Brücke 20B) mit dem Bus 24. Auch wenn in 1 E/A-Schnittstellenschaltungen dargestellt sind, kann eine E/A-Brücke 20A20B generell sowohl eine oder mehrere E/A-Schnittstellenschaltungen als auch anderweitige E/A-Vorrichtungen verbinden. Die E/A-Brücken 20A20B dienen zum Reduzieren der elektrischen Ladung im System-Bus 24, falls über diese E/A-Brücke mehr als eine E/A-Schnittstellenschaltung 22A22I überbrückt wird. Normalerweise führt die E/A-Brücke 20A im Auftrag der E/A-Schnittstellenschaltungen 22A22B die Transaktionen des Busses 24 aus und gibt die Transaktionen, die aus dem Bus 24 für eine E/A-Schnittstellenschaltung 22A22B bestimmt sind, an die diesbezügliche E/A-Schnittstellenschaltung 22A22B weiter. Ebenso führt die E/A-Brücke 20B normalerweise im Auftrag der E/A-Schnittstellenschaltungen 22C22I die Transaktionen des Busses 24 aus und gibt die Transaktionen, die aus dem Bus 24 für eine E/A-Schnittstellenschaltung 22C–22I bestimmt sind, an die diesbezügliche E/A-Schnittstellenschaltung 22C22I weiter.
  • Die PCI-Schnittstellenschaltung 22A kann als eine Schaltung für eine Schnittstellenverbindung zum PCI-Bus fungieren. In einer Ausführungsform umfasst die PCI-Schnittstellenschaltung 22A die 66-MHz-PCI-Spezifikationsversion 2.2. Die PCI-Schnittstellenschaltung 22A kann wie eine Host-Brücke im PCI-Bus konfiguriert werden.
  • Die PCI-Vorrichtung 28, die mit dem PCI-Bus gekoppelt dargestellt ist, dient lediglich ein Veranschaulichungsbeispiel für jede beliebige Vorrichtung, die in der Lage ist, mit dem PCI-Bus zu kommunizieren, wie jeder beliebige periphere Komponententyp (d.h. Modems, Netzwerk-Schnittstelleneinrichtungen, Grafikbeschleuniger, Audiokarten, Festplatten- bzw. Disklaufwerke oder Plattenspeichersteuereinheiten, SCSI-Adapter (SCSI = Small Computer Systems Interface) sowie Telefoniekarten etc.
  • Die LDT-Schnittstellenschaltung 22B kann als eine Schaltung für eine Schnittstellenverbindung zum LDT-System erfolgen. Wie bereits vorstehend erwähnt, wird die LDT-Schnittstelle nun außerdem als Hyper-Transport-Schnittstelle bezeichnet, welche von der Firma Advanced Micro Devices, Inc. entwickelt worden ist. In dieser Beschreibung wird die Schnittstelle mit LDT bezeichnet, aber sie bezieht sich zugleich auf die Hyper-Transport-Schnittstelle. Die LDT-Schnittstellen schaltung 22B kann im LDT-System als Host-Brücke dienen. Im Allgemeinen ist die LDT-Schnittstelle eine Schnittstelle auf Punkt-zu-Punkt-/Datenpaket-Basis.
  • In einer Ausführungsform umfassen die Netzwerk-Schnittstellenschaltungen 22C22E Ethernet-Medienzugriffskontrollierer (Media-Access-Controller bzw. MACs). Daher können die Netzwerk-Schnittstellenschaltungen 22C22E mit den MII- (= Media Independent Interface) oder den GMII- (= Gigabit Media Independent Interface) Schnittstellen eine externe Schnittstellenverbindung eingehen. Als Alternative kann die externe Schnittstelle eine generische Datenpaket-Schnittstelle sein, in welcher entweder der Anfang oder das Ende von Paketen mit einem „Flag" gekennzeichnet wird, wobei in der Schnittstelle Steuersignale eingesetzt werden. In einer noch weitergehenden alternativen Ausgestaltung funktionieren die drei Netzwerk-Schnittstellenschaltungen 22C22E als zwei erweiterte Datenpaket-Schnittstellen (d.h. als 16-Bit-Schnittstellen, wenn die einzelnen MII/GMII-Schnittstellen je 8 Bit aufweisen). Die Netzwerk-Schnittstellenschaltungen 22C22E können so konfiguriert werden (d.h. während eines Resets), dass die Schnittstelle in einer von den vorgenannten Betriebsmoden operiert. Die Netzwerk-Schnittstellenschaltungen 22C22E können alternativ den physikalischen Abschnitt der Ethernet-Schnittstelle umfassen oder direkt mit einem physikalischen Ethernet-Medium (z.B. einer verdrillten Paarleitung, glasfaseroptischen Leitung etc.) eine Schnittstellenfunktion ausüben. Des Weiteren können andere Ausführungsformen jede Netzwerk-Schnittstellenverbindung (d.h. X.25-Protokollverfahren, Frame Relay (verbindungsorientierter Datenkommunikationsdienst), Asynchronous Transfer Mode (ATM-Übermittlungsverfahren), Token Ring [Tokenring-Verfahren] etc.) unterstützen. Generell ist eine Netzwerk-Schnittstellenschaltung eine Schaltung für eine Schnittstellenverbindung zu jeder beliebigen Netzwerk-Schnittstelle. Eine Netzwerkschnittstelle ist eine Schnittstelle, die für den Netzwerkbetrieb mit vielen Computersystemen ausgelegt ist.
  • Die seriellen Schnittstellenschaltungen 22F-22G können auch duale Serienschnittstellen unterstützen. Die Serienschnittstellen können synchron betrieben werden und außerdem einen dual universellen, asynchronen Receiver/Transmitter (DUART) für einen dual asynchronen Betrieb umfassen. Die SM-Bus-Schnittstellenschaltung 22H unterstützt die SM-Bus-Schnittstelle, und die PCMCIA -Schnittstellenschaltung unterstützt die PCMCIA -Schnittstelle. Zusätzlich können ein generischer Bus und eine allgemein zielgerichtete E/A-Vorrichtung unterstützt werden (nicht dargestellt).
  • Auch wenn eine bestimmte Gruppierung von E/A-Schnittstellenschaltungen 22A–22I veranschaulicht wird, können andere Ausführungsformen beliebige Untergruppierungen oder Übergruppierungen im Gegensatz zur dargestellten Gruppierung einsetzen. Des Weiteren können andere Ausführungsformen, je nach Konstruktionswunsch, einen beliebigen Gruppierungssatz von E/A-Schnittstellen-Schaltungen/-Komponenten aufweisen.
  • Der Bus 24 ist in einer Ausführungsform ein unterteilender Transaktionsbus [Splitting-Transaktionsbus]. Der Bus 24 kann in einer Ausführungsform ein zuteilendes Abitrierungsprogramm einsetzen. Bei einer Ausführungsform weist der Bus 24 eine zeitverschachtelte Parallelbearbeitung der jeweiligen Befehlsphasen (Pipeline-Ausführung) auf. Der Bus 24 kann jedes geeignete Signalisierungsverfahren [Zeichengabetechnik] anwenden. Bei einer Ausführungsform beispielsweise wird ein differentiales Signalisieren für eine Hochgeschwindigkeitssignalübertragung eingesetzt. Weitere Ausführungsformen wenden andere zeichengebende Schalttechniken an (wie beispielsweise TTL, CMOS, GTL, HSTL usw.). Der Bus 24 wird in einer Implementierung zum Übertragen von Daten während einer Phase des Bustaktzyklus und der Voraufladung (zum Beispiel für ein differentiales Signalisieren) während der anderen Phasen definiert. Daher kann ein Agent den Bus steuern, der auf eine Flanke des Taktsignals (aufsteigend oder abfallend) anspricht, und der/die empfangenden Agenten tastet/n als Reaktion auf die weitere Flanke den Bus ab. Andere Ausführungsformen können als Reaktion auf die gleiche Flanke steuern und abtasten (beispielsweise bei vielen externen Bussen, in denen ein Bus-Treiber während der ganzen Taktperiode steuern und der Empfangsagent ansprechend auf die nächste Takt- impulsflanke empfangen kann), oder aber bei diesen können auf beiden Taktimpulsflanken (d.h. bei quellensynchronen Taktkonfigurationen) Transfers stattfinden.
  • Es sei angemerkt, dass das System 10 (und speziell die Prozessoren 12A12B, der L2-Cache 14, die Speichersteuereinheit 16, die E/A-Schnittstellenschaltungen 22A22B, die E/A-Brücken 20A20B und der Bus 24) auf einem einzigen integrierten Schaltkreis als ein IC-Chip-Konfigurationssystem eingebaut sein können. Bei einer anderen Konfiguration kann auch der Speicher 26 integriert sein. Als Alternative können eine oder mehrere Komponenten als separat integrierte Schaltkreise implementiert werden, oder alle Komponenten können, je nach Konstruktionswunsch, als getrennte IC-Schaltungen eingebaut sein. Jedes beliebige Integrationsniveau kann somit angewendet werden.
  • Es sei weiter angemerkt, dass, auch wenn in der veranschaulichten Ausführungsform ein aufteilender Transaktionsbus mit separater Arbitrierung für die Adress- und Datenbusse zum Einsatz kommt, andere Ausführungsformen keinen Splitting-Transaktionsbus einsetzen, wobei dann mit einer einzigen Arbitrierung für Adresse und Daten operiert wird, und/oder wobei ein Aufteilungstransaktionsbus angewendet wird, in dem der Datenbus keiner expliziten Arbitrierung unterzogen wird. Entweder kann, je nach Konstruktionswunsch, eine zentrale Arbitrierungskonfiguration oder ein zuteilendes Arbitrierungsprogramm eingesetzt werden. Außerdem muss der Bus 24 keine zeitverschachtelte Parallelbearbeitung der jeweiligen Befehlsphasen (Pipeline-Ausführung) ausführen, falls dies gewünscht wird.
  • Es sei zudem angemerkt, dass, wenngleich 1 die E/A-Schnittstellenschaltungen 22A22I so veranschaulicht, dass sie über die E/A-Brücken 20A20B mit dem Bus 24 verbunden sind, andere Ausführungsformen auch eine oder mehrere der E/A-Schnittstellenschaltungen aufweisen können, die mit dem Bus 24 direkt gekoppelt sind, falls dies gewünscht wird.
  • Der Begriff „Transaktion", wie er in dieser Beschreibung verwendet wird, bezieht sich auf eine Kommunikation zwischen zwei oder mehreren Agenten in einer vermittelnden Anlage (d.h. in dem Bus 24). Ein Agent, der die Transaktion initiiert, kann der Anforderungsagent oder Quellagent sein, und ein Agent, der auf die Transaktion reagiert, ist ein Reaktionsagent oder Zielagent. Der Begriff „Speichertransaktion" bezieht sich auf eine Kommunikation zwischen einer Einrichtung und dem Speichersystem. Die Speichertransaktion umfasst eine Adresse, die eine Speicherstelle in dem Speicher identifiziert. In der veranschaulichten Ausführungsform wird die Speichertransaktion über den Bus 24 an die Speichersteuereinheit 16 übermittelt (und kann anstelle der Speichersteuereinheit 16 auch vom L2-Cache 14 abgearbeitet werden). Die Speichertransaktionen können Lesetransaktionen (eine Datenübertragung vom Speicher zur Einrichtung) und Schreibtransaktionen (eine Datenübertragung von der Einrichtung zum Speicher) beinhalten. Ganz allgemein erklärt, kann eine Lesetransaktion eine Datenübertragung von einem Ziel der Transaktion an die Quelle (oder Initiator) der Transaktion sein, wogegen eine Schreibtransaktion eine Datenübertragung von einer Quelle der Transaktion zum Ziel der Transaktion ist.
  • Auch wenn ein gemeinsamer Bus in der vorliegenden Ausführungsform angewendet wird, kann in anderen Ausführungsformen jede Art von vermittelnden Anlagen zum Einsatz kommen (wie zum Beispiel Kreuzschienen-Vermittlungen, Punkt-zu-Punkt-Verbindungen in einer Ringschaltung, Sternschaltung oder irgendeiner anderen Topologie, Vermaschung, Verwürfelung etc.). Ganz allgemein erklärt, ist eine vermittelnde Anlage (Interconnect) eine beliebige Art eines Kommunikationsmediums.
  • Netzwerkeinrichtung
  • Das System 10 (und speziell das System 10, das auf einem einzigen integrierten Schaltkreis eingebaut ist) kann für die Anwendung in zu vernetzenden Einrichtungen optimiert werden. Im Besonderen integriert das System 10 einen oder mehrere Prozessoren und eine oder mehrere E/A-Vorrichtungen, die für Netzwerk anwendungen eingesetzt werden (beispielsweise Router, Switches, Firewalls, Repeaters bzw. Zwischenverstärker, Verkehrskonzentratoren, Hubs bzw. Verteiler etc.). Die E/A-Vorrichtungen können sowohl Netzwerk-Schnittstellenschaltungen als auch Standard-Schnittstellenschaltungen (wie zum Beispiel die PCI-Schnittstellenschaltung 22A oder die LDT-Schnittstellenschaltung 22B) umfassen. So kann eine Netzwerkeinrichtung unter Anwendung von System 10 und von keinem oder von mehreren anderen, integrierten Schaltkreisen aufgebaut werden. Die Gesamtzahl der integrierten Schaltkreise kann gering sein, was für die Implementierung geringere Kosten erlaubt. Des Weiteren ermöglicht die Integrierung der Einrichtungen in das System 10 einen geringeren Energiebetriebsaufwand und eine höhere Ausführungsleistung (da die Kommunikation zwischen den Einrichtungen mit höheren, internen Taktfrequenzen stattfindet).
  • Der hierin verwendete Begriff „E/A-Vorrichtung" bezieht sich auf einen oder auf mehrere der nachstehenden Komponenten, entweder einzeln oder in einer Kombination: eine E/A-Brücke (d.h. die E/A-Brücken 20A20B), eine E/A-Schnittstellenschaltung (d.h. die E/A-Schnittstellenschaltungen 22A22I) oder eine periphere Komponente (d.h. die PCI-Vorrichtung 28).
  • 2 zeigt ein Blockdiagramm einer als Beispiel gewählten Netzwerkeinrichtung 30. Weitere Ausführungsformen sind möglich und beabsichtigt. In der Ausführungsform gemäß 2 enthält die Netzwerkeinrichtung 30 das System 10, wobei sie optional eine oder mehrere integrierte Schaltungen 32 aufweisen kann. Das System 10 ist mit den anderen integrierten Schaltungen 32 gekoppelt, wobei entweder Netzwerkschnittstellen oder Standardschnittstellen (d.h. PCI, LDT, PCMIA, Seriell -Schnittstellen etc.) zum Einsatz kommen, was aber vom Typ der IC-Schaltung 32 abhängt.
  • Im Allgemeinen kann das System 10 eine oder mehrere Netzwerkschnittstellen und/oder eine oder mehrere Standardschnittstellen für die Netzwerkeinrichtung 30 sowie die Programmierbarkeit der Netzwerkeinrichtung 30 über die Prozessoren 12A12B bereitstellen. Die anderen IC-Schaltungen (falls vorhanden) können für die Netzwerkeinrichtung 30 Netzwerk- und/oder Standardschnittstellen besitzen oder spezielle Funktionsfähigkeiten für die Netzwerkeinrichtung 30, oder beides, vorsehen.
  • Die Netzwerkeinrichtung 30 kann beispielsweise ein Router sein. In solch einer Ausführungsform kann ein integrierter Konzentratorverkehrsschaltkreis die IC-Schaltungen 32 aufweisen. Der Konzentrator kann, beispielsweise, mit den 10 100-Mb/S-Ethernet-Ports des Routers verbunden sein. Der Konzentrator kann des Weiteren mit einer der Netzwerkschnittstellen 22A22C gekoppelt sein, die bei 1 Gb/S operieren. Das System 10 verarbeitet das Datenpaket und ermittelt, ob das auf einem der Ethernet-Ports empfangene Paket zu einem der anderen Ports oder zu einer der anderen Netzwerk-Schnittstellenschaltungen 22A22C weitergeleitet werden soll (die als ein Uplink [Aufwärtsverbindung] für einen Service-Provider [Diensteanbieter] operieren, oder die mit einem anderen Router gekoppelt sein können, welcher der Netzwerkeinrichtung 30 ähnlich ist), und es überträgt das Paket dementsprechend.
  • Die Netzwerkeinrichtung 30 kann als weiteres Beispiel eine Firewall sein. Das System 10 kann die Uplink-Netzwerkschnittstelle und diese Schnittstelle mit dem Netzwerk versorgen, das durch die Firewall über die Netzwerk-Schnittstellenschaltungen 22A22C geschützt ist, und Softwareprogramme ausführen, um den Schutz über die Firewall bereitzustellen. Optional kann eine Chiffrier-/Dechiffrierprogrammeinheit als integrierte Schaltung 30 enthalten sein (d.h. sie ist mit dem PCI-Bus oder der LDT-Schnittstelle gekoppelt).
  • Es kann jeder beliebige Netzwerkeinrichtungstyp 30 entwickelt werden, wobei ein oder mehrere Chips für das integrierte System 10 und null oder mehrere integrierte Schaltungen 32 zur Anwendung kommen.
  • Kohärenz innerhalb des Systems
  • Die Kohärenz bezieht sich im Allgemeinen auf die Eigenschaft, dass ein Auslesen durch eine Einrichtung einer momentan zugewiesenen Speicherstelle dazu führt, dass die Einrichtung die jüngste Modifizierung der Speicherstelle empfängt, ungeachtet dessen, ob diese Modifizierung im Speicher abgespeichert oder zwischengespeichert ist, sowie auch ungeachtet dessen, wo diese modifizierte Ausführung im Cache zwischengespeichert ist. Ohne eine Kohärenz muss das Softwareprogramm, das auf den verschiedenen Netzwerkeinrichtungen ausgeführt wird, gewährleisten können, dass die von einem Agenten geschriebenen Daten von einem anderen Agenten so gelesen werden können, dass eine fehlerfreie Ausführung erfolgen kann.
  • Solche Softwaremechanismen sind leider sehr komplex und fehleranfällig (insbesondere, wenn eine flache Speicheranordnung angewendet wird). Hinzu kommt, dass sich die Datenübertragung von einem Agenten zum anderen verlangsamt (da für gewöhnlich einige heikle Softwareumschaltungsmechanismen involviert sind, wie beispielsweise eine Semaphore -Betriebssystemfunktion), und dass daher die Leistung der Netzwerkeinrichtung eingeschränkt wird.
  • Im Allgemeinen wird eine Kohärenz für eine momentan zugewiesene Transaktion bereitgestellt, indem jede Cache-Speicherstelle überprüft wird, welche die über die Transaktion zu operierenden Daten zwischengespeichert haben könnte. Diese Überprüfung wird häufig als Snooping [„Abhören"] bezeichnet. In der Regel wird eine Kohärenz in einer Cacheblock-Granularität [Informationsdetaillierung] aufrechterhalten und daher bezieht sich die übrige Beschreibung auf Cache-Blöcke. Jedoch kann die Kohärenz in einer jeden beliebigen Granularität aufrechterhalten werden.
  • In einigen Systemen, wie beispielsweise in der in 1 gezeigten Ausführungsform des Systems 10, wird die Adresse der Transaktion von kohärenten Agenten aus der vermittelnden Verbindung erfasst, wenn die Transaktion generiert wird. Bei anderen Systemen wird die Transaktion zu einer Kohärenz-Steuereinheit übertragen, welche Proben generiert und diese zu den anderen Kohärenzagenten im Sys tem übermittelt. Beide Verfahren können angewendet werden. In beiden Fällen stellen die Kohärenzagenten kohärente Antworten bereit, die, wenn man sie zusammenhängend übernimmt, zu einem kohärenten Ergebnis im Hinblick auf die Transaktion führen. Wenn die Transaktion ausgelesen ist, wird die jüngste Modifizierung des Cacheblocks dem anfordernden Agenten zur Verfügung gestellt. Falls die Transaktion ein Schreibvorgang ist (oder eine Ungültigkeitserklärung, so dass der Anforderungsagent in den Cacheblock schreiben kann), werden nicht modifizierte Kopien des Cacheblocks nicht mehr benötigt (d.h. sie werden für ungültig erklärt). Bei einigen Systemen können die Kohärenzrückmeldungen eine Wiederholungsantwort beinhalten, in welcher die Transaktion gelöscht und später erneut versucht wird. In der Zwischenzeit kann der Kohärenzagent, welcher die Wiederholungsantwort bereitgestellt hat, einen Korrekturvorgang vornehmen (d.h. einen modifizierten Cacheblock im Speicher abspeichern). Andere Systeme, wie die in 1 dargestellte Ausführungsform, implementieren ein Protokoll, wobei von dem Kohärenzagenten der modifizierte Cacheblock zur Verfügung gestellt wird, und speichern den modifizierten Cacheblock für den Anforderungsagenten ab. In einer besonderen Implementierung stellt der Kohärenzagent jeden Cacheblock bereit, auf den er exklusiven Zugriff hat, ganz gleich, ob der Block modifiziert worden ist oder nicht.
  • Hinzukommend zur Antwort, die für die Transaktion auf der vermittelnden Anlage bereitgestellt wurde, können die Kohärenzagenten einen Kohärenzzustand modifizieren, der für den Cacheblock aufrechterhalten worden ist, um sicherzustellen, dass die nachfolgenden Zugriffe auf den Cacheblock kohärent bleiben. Es sind zum Beispiel die Kohärenzprotokolle MESI = Modified, Exclusive, Shared, Invalid und das äquivalente MOESI (welches zusätzlich einen anwendereigenen Zustand aufweisen kann) sehr populär. Wenn im MESI -Protokoll eine Lesetransaktion stattfindet, kann der Kohärenzagent, welcher den Cacheblock zwischengespeichert hatte, bevor die Transaktion stattfand, den Zustand des Cacheblocks auf „Shared = Gemeinsam" ändern, womit gekennzeichnet wird, dass eine weitere Cachekopie des Cacheblocks existiert. Für ein nachfolgendes Auslesen durch den Agenten kann die Cachekopie verwendet werden, jedoch führt ein nachfolgender Schreibvorgang durch den Agenten eine Transaktion dahingehend aus, dass die anderen Cachekopien dadurch ungültig werden. Wenn eine Schreibtransaktion stattfindet, werden die Cachekopien mit dem MESI-Protokoll ungültig. Auf Basis der durch die Kohärenzagenten bereitgestellten Rückmeldungen kann der Anforderungsagent den korrekten Kohärenzzustand zum Zwischenspeichern [Cachen] des Cacheblocks bestimmen.
  • Die Rückmeldung in Bezug auf eine Transaktion kann zu Beginn der Transaktion verzögert werden (welches als Reaktionslatenz bezeichnet wird), damit die Kohärenzagenten Zeit gewinnen, die entsprechenden Überprüfungen/Zustandsänderungen (Bezeichnung: „Snooping=Abhören") durchzuführen. Folglich ist während der Latenz aufgrund einer stattfindenden weiteren Transaktion der Betriebszustand des Cacheblocks, der von der Transaktion betroffen ist, unsicher. Wegen dieser Unsicherheiten während der Latenzzeit können daher Komplikationen im Kohärenzmechanismus auftreten.
  • 3 ist ein Ablaufdiagramm, welches die zuvor erwähnte Unsicherheit veranschaulicht. Die in 3 dargestellten Taktzyklen werden von vertikal gestrichelten Linien abgegrenzt und deren Kennsätze CLK0, CLK1 etc. sind oben in der Titelzeile aufgeführt. Die an der linken Seite des Ablaufdiagramms dargestellten Kennzeichnungen (T1, T2 und T3) stehen für die stattfindenden Transaktionen.
  • Ein Agent initiiert die Transaktion T1 (für eine Adresse „A"), indem er die Adressenphase während des Taktzyklus CLK0 (Bezugszeichen 40) steuert. In diesem Ausführungsbeispiel erfolgt die Reaktionsphase der Transaktion (sobald die Kohärenzantwort bereitgestellt ist) zwei Taktzyklen nach der Adressenphase im Taktzyklus CLK2 (Bezugszeichen 42). Folglich ist der Kohärenzzustand des Cacheblocks, an den sich die Adresse „A" richtet, vom Taktzyklus CLK0 bis hin zum Taktzyklus CLK2 unsicher (welcher mit der geschweiften Klammer 44 dargestellt ist). Wenn demzufolge eine Transaktion T2 während des Taktzyklus CLK1 (Bezugszeichen 46) eingeleitet wird, überprüfen die Kohärenzagenten zum Ermitteln der Kohärenzantwort nicht nur ihre Arbeitsspeicher bzw. Caches, sondern auch jede Veränderung des Kohärenzzustands im Cacheblock, der aus der Transaktion T1 unerledigt ist und noch aussteht. Im Gegensatz dazu müssen die Kohärenzagenten für eine Transaktion, die nach der Unsicherheitsperiode eingeleitet wird (d.h. die Transaktion T3, die im Taktzyklus CLK3 initiiert wird: Bezugszeichen 48) nur ihre eigenen Cache-Speicher überprüfen, da keine Veränderungen hinsichtlich des Kohärenzzustands ausstehen.
  • Falls die Antwortlatenz verlängert wird, erhöht sich die Anzahl der eventuell ausstehenden Zustandsveränderungen und folglich die Komplexität der Kohärenzmechanismen. Wenn im Gegensatz dazu die Antwortlatenzzeit verkürzt wird, verringert sich die Komplexität des Kohärenzmechanismus. In einer Ausführungsform zum Beispiel initiieren die Agenten im System 10 während der Unsicherheitsperiode keine Transaktionen für den gleichen Cacheblock. Wenn die Latenz über einen längeren Zeitraum stattfand, kann solch ein Mechanismus selbst komplex sein und auch Leistungsprobleme verursachen. Selbst in Ausführungsformen, in denen Transaktionen während der Unsicherheitsperiode für den gleichen Cacheblock (d.h. in 3: T2) eingeleitet werden, ist diese Komplexität zu bewältigen, wenn die Antwortlatenz minimal andauert.
  • Im System 10 ist zwar eine Kohärenz implementiert, aber die Kohärenz für die Bereichsgrenzen des integrierten Schaltkreises, den das System 10 aufweist, wird limitiert. Da das System 10 ein Integrationsbestandteil ist, kann der Schaltkreis im System 10 nach zwischengespeicherten Daten schnellstens überprüft werden, wie z. B. innerhalb von ein paar Taktzyklen im Taktsignal, mit dem das System 10 getaktet wird (wobei eine niedrige Antwortlatenzzeit von beispielsweise zwei Bus-Taktzyklen möglich ist). Im Besonderen werden die E/A-Vorrichtungen, welche im System 10 die Daten im Cache zwischenspeichern können, überprüft und im Hinblick auf diesbezügliche Cachekopien wird die Kohärenz aufrechterhalten. Jedoch kann die Kohärenz nicht für Vorrichtungen aufrechterhalten werden, die sich außerhalb des Schaltkreises des Systems 10 befinden. Die in 1 dargestellte PCI-Vorrichtung 28 kann zum Beispiel nicht mit einer Kohärenz aufrechterhalten werden. Wenn die PCI-Vorrichtung Daten im Cache zwischenspeichert, unterliegt die Kohärenz dieser Daten der Software-Verantwortlichkeit. Das Eingrenzen der Kohärenz auf das System 10 kann eine Verzögerung in den zugreifenden, externen Vorrichtungen ausschließen (welche langsamer arbeiten würden, und/oder wobei die externen Schnittstellen selbst höhere Latenzschnittstellen als jene hätten, die innerhalb des Systems 10 verfügbar sind). Auf diese Weise kann eine kurze Antwortlatenzzeit realisiert werden.
  • Die Rückmeldungsphase der Transaktion kann so definiert werden, dass sie jeden beliebigen Satz von Signalzeichengebungen umfassen kann. In einer Implementierung stellt jeder Kohärenzagent ein gemeinsames Signal und ein exklusives Signal zur Verfügung (und alle Signale der Agenten werden von den Signalen der anderen Agenten getrennt). Wenn der Agent eine gemeinsame Kopieausgabe des Cacheblocks besitzt, an den sich die Transaktion richtet, macht der Agent das gemeinsame Signal geltend. Wenn der Agent exklusiven Zugriff auf den Cacheblock hat, an den sich die Transaktion richtet, setzt der Agent das exklusive Signal durch. Der Begriff „exklusiver Zugriff' umfasst sowohl den modifizierten Zustand, in den der Agent den Cacheblock modifiziert hat, und demzufolge gibt es keine anderen Cachekopien mehr im System, als auch die exklusiven Zustände, in denen der Cacheblock nicht modifiziert worden ist, wobei aber im System keine anderen Cachekopien mehr existieren. Wenn an den Agenten ein Signal exklusiv gesendet wird, stellt er die Daten für die Transaktion bereit. Ansonsten stellt das Speichersystem (der L2-Chache 14 oder die Speichersteuereinheit 16) die Daten zur Verfügung. Wenn der Agent die Daten bereitstellt, wird außerdem – mit einem Signal während der Datenübertragungsphase der Transaktion – angezeigt, ob die Daten modifiziert sind oder nicht. Der Anforderungsagent kann die einzelnen gemeinsamen und exklusiven Antworten kombinieren, um die Antwort für die Transaktion festzulegen. Auch wenn in der vorliegenden Ausführungsform separate Signale vorgesehen sind, können andere Ausführungsformen gemeinsame Signale einsetzen, die von allen Agenten gesteuert werden. Des Weiteren kann jeder beliebige Satz von Antwortsignalen zur Anwendung kommen.
  • Ganz allgemein erklärt, ist die Reaktionsphase der Transaktion der Punkt, an dem Kohärenzveränderungen so definiert werden, dass sie ausgeführt sind, und folglich – wenn sich die Eigentümerschaft des Cacheblocks verändert (d.h. in Reaktion auf einen ausgelesenen, exklusiven Befehl oder auf eine ungültige Transaktion) – der Punkt, an dem die Eigentümerschaft transferiert wird. Daher wird der neue Eigentümer für den Cacheblock zuständig (d.h. zuständig für die Sicherstellung der kohärenten Datenübertragung zum nächsten Anforderer, wenn eine solche Anforderung vorliegt, bzw. verantwortlich für die Sicherstellung, dass jede Modifizierung in den Speicher geschrieben wird, und wenn keine solche Anforderung vorliegt, dass der Eigentümer den Cacheblock verwirft.
  • Die Kohärenzagenten im System 10 können die Prozessoren 12A12B (welche die L1-Caches enthalten), den L2-Cache 14 und die Speichersteuereinheit 16 einbeziehen. Außerdem können in einer Implementierung, die nachstehend beschrieben ist, die E/A-Brücken 20A20B die Kohärenzagenten sein. Des Weiteren kann – in anderen Ausführungsformen – jede der Schnittstellenschaltungen 22A–22I ein Kohärenzagent sein. In anderen Ausführungsformen wiederum kann jede integrierte, periphere Vorrichtung als Kohärenzagent fungieren.
  • Die 47 veranschaulichen eine E/A-Vorrichtung, welche Daten in einer Ausführungsform des Systems 10 im Cache zwischenspeichert. Im Besonderen kann jede der E/A-Brücken 20A20B Daten temporär cachen, wenn eine E/A-Schnittstelle 22A22I, die mit der diesbezüglichen E/A-Brücke 20A20B gekoppelt ist, für einen Cacheblock einen Schreibvorgang ausführt, aber mit dem Schreibvorgang nur einen Teil des Cacheblocks aktualisiert (d.h. mindestens ein Byte innerhalb des Cacheblocks wird nicht aktualisiert). Die E/A-Brücke 20A20B kann einen Lesevorgang für den Cacheblock ausführen, den Cacheblock mit den Schreibdaten aktualisieren und den Cacheblock in den Speicher zurückschreiben (wird als Lesen mit modifiziertem Rückschreiben bzw. als Lesemodifizierungsschreibbetrieb bezeichnet). Infolgedessen speichert die E/A-Brücke 20A20B im Cacheverfahren Daten zwischen der Lesetransaktion und der Schreibtransaktion während des Lesemodifizierungsschreibbetriebs.
  • Mit Bezug nun auf 4 wird ein Blockdiagramm von einer Ausführungsform der E/A-Brücke 20A dargestellt. Die E/A-Brücke 20B kann in ähnlicher Weise konfiguriert sein. Weitere Ausführungsformen sind möglich und beabsichtigt. In der Ausführungsform der 4 umfasst die E/A-Brücke 20A eine Anfragewarteschlange 50, eine Lesemodifizierungsschreib-Warteschlange 52, eine Anforderungsdaten-Warteschlange 54, eine Lesemodifizierungsschreibdaten-Warteschlange 56, einen Zusammenführpufferspeicher 58, einen Steuerschaltkreis 60 und eine Multiplexergruppe 62A62C. Die Anfragewarteschlange 50 und die Lesemodifizierungsschreib-Warteschlange 52 sind mit dem Multiplexer 62A verbunden, der zum Bereitstellen der Adressenphaseninformationen an den Bus 24 angeschlossen ist. Die Anforderungsdaten-Warteschlange 54 und der Zusammenführpufferspeicher 58 sind mit dem Multiplexer 62B verbunden, der zum Bereitstellen der Datenphaseninformationen an den Bus 24 gekoppelt ist. Der Zusammenführpufferspeicher 58 ist ferner mit dem Multiplexer 62C verbunden, der wiederum zum Empfangen von Daten aus dem Bus 24 und von Daten aus der Lesemodifizierungsschreibdaten-Warteschlange 56 gekoppelt ist. Der Steuerschaltkreis 60 ist angeschlossen, um für die Multiplexer 62A62C Anwahlsteuerungen bereitzustellen, und ist ferner mit einer jeden der Warteschlangen 50, 52, 54 und 56 verbunden. Außerdem steht der Steuerschaltkreis 60 mit dem Bus 24 in Verbindung. Es kann allgemeine Pufferspeicher geben, die zwischen den Multiplexern 62A62C und dem Bus 24 sowie zwischen dem Steuerschaltkreis 60 und dem Bus 24 zum Empfangen/Steuern von Informationen im Bus 24 angeschlossen sind (nicht dargestellt).
  • Die E/A-Brücke 20A stellt Transaktionsanfragen von den E/A-Schnittstellenschaltungen/Peripheriekomponenten in die Warteschlange, mit denen sie für die Cacheblöcke (entweder für Lese- oder Schreibvorgänge) in der Anfragewarteschlange 50 (und bezüglich der Daten für die Schreibvorgänge in der Anforderungsdaten-Warteschlange 54) verbunden ist. Die E/A-Brücke 20A kann jede Lesetransaktion als ein Auslesen des Cacheblocks handhaben, und Schreibtransaktionen, welche den ganzen Cacheblock aktualisieren, können in die Anfragewarteschlange 50 (und bezüglich der Daten in der Anforderungsdaten-Warteschlange 54) abgesetzt werden. Die Lesevorgänge können im Bus 24 als kohärente Lesevorgänge durchgeführt werden (was Cachekopien in den anderen Kohärenzagenten bewirkt, um die Änderung eines gemeinsamen Zustands „Shared" herbeizuführen, und um die aktuellste Kopie des Cacheblocks zu empfangen, an den der Lesevorgang adressiert ist). Die Schreibvorgänge können im Bus 24 als kohärente Schreibungültigkeitserklärungen ausgeführt werden (was Cachekopien in den anderen Kohärenzagenten bewirkt, um die Änderung für einen ungültigen Zustand „Invalid" herbeizuführen, und daher können die nachfolgenden Lesevorgänge durch den Kohärenzagenten die aktuellsten Daten aus dem Speicher auslesen). Infolgedessen werden die Lese- und Schreibvorgänge des Blockes zusammenhängend bzw. kohärent ausgeführt.
  • Ganz allgemein können Einträge in der Anfragewarteschlange 50 ein Valid-Bit (V) enthalten, das anzeigt, ob eine Anfrage in die Warteschlange gestellt wird oder nicht, sowie die Adresse der Transaktion. Wenn gewünscht, können zusätzliche Informationen, wie die Vorgangsart (Schreib-/Lesevorgang) in die Warteschlange gegeben werden. Außerdem können anderweitige Informationen, die während der Adressenphase übertragen worden sind, in die Warteschlange gesetzt werden, wie beispielsweise Cachefähigkeitsattribute, ein Tag [=Identifizierungskennzeichen] in Bezug auf Implementierungen, in denen die Adressen- und Datenphasen gekennzeichnet sein sollen, der auszuführende Befehl etc. Alternativ dazu können sonstige Adressenphaseninformationen generiert werden, wenn im Bus 24 die Anforderung zur Übertragung selektiert worden ist. Einträge in der Anforderungsdaten-Warteschlange 54 enthalten diese Daten in ähnlicher Weise sowie ein Data-Valid-Bit (DV). Anderweitige Informationen, die während der Datenphase übertragen wurden, können in die Warteschlange abgesetzt werden, wie zum Beispiel in Bezug auf Tag-Implementierungen die Datenidentifizierungskennzeichen [Data-Tags], ein Fehlercode etc. Alternativ dazu können sonstige Datenphaseninformationen generiert werden, wenn im Bus 24 die Anforderung zur Übertragung selektiert worden ist.
  • Zum anderen wird eine Schreibanforderung, die nur einen Teil eines Cacheblocks aktualisiert, in die Lesemodifizierungsschreib-Warteschlange 52 und in die Lesemodifizierungsschreibdaten-Warteschlange 56 gestellt. Als Reaktion auf solche Anforderungen führt die E/A-Brücke 20A eine Lesetransaktion im Bus 24 aus, um den Cacheblock in einem exklusiven Zustand zu lesen (eine exklusive Lesetransaktion), modifiziert den Cacheblock mit den Schreibdaten, welche der Schreibtransaktion entsprechen, und schreibt den modifizierten Cacheblock in den Speicher zurück. Daher cacht die E/A-Brücke 20A während des Zeitraums zwischen dem Lese- und dem Schreibvorgang im Lesemodifizierungsschreibbetrieb den Cacheblock (in einem modifizierten Zustand) im Arbeitsspeicher. Die E/A-Brücke 20a forciert während dieses Zeitintervalls eine Kohärenz für den Cacheblock.
  • Allgemein kann der Steuerschaltkreis 60 eine Arbitrierungslogik umfassen, um den im Bus 24 enthaltenen Adressenbus und Datenbus zu arbitrieren (oder die Arbitrierungslogik kann, wenn gewünscht, ein separater Schaltkreis sein). Falls sich eine oder mehrere Transaktionsanfragen in der Anfragewarteschlange 50 und in der Lesemodifizierungsschreib-Warteschlange 54 befinden, kann der Steuerschaltkreis 60 den Adressenbus arbitrieren. Der Steuerschaltkreis 60 selektiert eine Transaktionsanfrage aus einer der Warteschlangen 50 und 52 für eine Übertragung als Transaktion. Die am längsten ausstehende Transaktionsanforderung wird selektiert, oder die Transaktionen können je nach Typ, Quelle etc. einer Prioritätsreihenfolge zugeordnet [serialisiert] werden. Der Steuerschaltkreis 60 stellt dem Multiplexer 62A eine Auswahlsteuerung in der Abhängigkeit bereit, in welcher die Anforderungswarteschlangen 50 und 52 die zur Übertragung selektierte Transaktion gespeichert haben.
  • Falls sich eine oder mehrere Datenübertragungen (für Schreibvorgänge) in der Anforderungsdaten-Warteschlange 54 oder dem Zusammenführpufferspeicher 58 befinden, kann der Steuerschaltkreis 60 den Datenbus arbitrieren. Eine Datenübertragung befindet sich in der Warteschleife, wenn die Adressenphase der korrespondierenden Transaktion im Adressenbus erfolgreich durchgeführt worden ist, oder wenn, wie noch nachstehend in den Einzelheiten beschrieben wird, ein Snooping-Hit [Abhör-Treffer] im Cacheblock, der im Zusammenführpufferspeicher 68 gespeichert ist, entdeckt wird. Der Steuerschaltkreis 60 selektiert die Daten für eine Übertragung von der einen Anforderungsdaten-Warteschlange 54 und dem Zusammenführpufferspeicher 58 für eine Übermittlung im Datenbus. Die am längsten ausstehende Transaktion (je nach Reihenfolge im Adressenbus) wird selektiert, oder die Transaktionen werden je nach Typ, Quelle etc. einer Prioritätsreihenfolge zugeordnet [serialisiert]. Der Steuerschaltkreis 60 stellt dem Multiplexer 62B eine Auswahlsteuerung in der Abhängigkeit bereit, in welcher die Anforderungsdaten-Warteschlange 54 und der Zusammenführpufferspeicher 58 die selektierten Daten gespeichert haben.
  • Dieser Lesemodifizierungsschreibbetrieb wird nun in den Einzelheiten beschrieben. Die Lesemodifizierungsschreib-Warteschlange 52 speichert ein Valid-Bit (V) und die Adresse der Transaktion, ähnlich wie bei der Anfragewarteschlange 50. Außerdem kann die Lesemodifizierungsschreib-Warteschlange 52 ein Zustandsdatenfeld enthalten (in 4 den „Zustand" in der Lesemodifizierungsschreib-Warteschlange 52). Das Zustandsdatenfeld kann verwendet werden, um den Fortschritt des Lesemodifizierungsschreibbetriebs zu verfolgen (einschließlich eines Snooping-Hits, der im Cacheblock zwischen der Lese- und der Schreibtransaktion auftreten kann). In 5 (unten) ist ein Diagramm einer Ausführungsform der Zustände, die eintreten können und der diesbezügliche Betrieb dargestellt. Die Lesemodifizierungsschreibdaten-Warteschlange 56 kann ein Data-Valid-Bit (DV), ein Datenfeld und ein Maskendatenfeld enthalten (in 4 „Maske" in der Lesemodifizierungsschreibdaten-Warteschlange 56). Das Maskendatenfeld speichert eine Maske, die anzeigt, welche Bytes innerhalb des Datenfeldes gültig sind (d.h. welche Bytes innerhalb des Cacheblocks durch die Schreibtransaktion modifiziert sind, wodurch der Lesemodifizierungsschreibbetrieb hervorgerufen wurde).
  • Der Steuerschaltkreis 60 wählt den Lesemodifizierungsschreibbetrieb und in Reaktion auf die im Bus gewonnene Zielarbitrierung für den Adressenbus 24 steuert er die Adressenphase in einer exklusiven Lesetransaktion. Sobald die Reaktionsphase der exklusiven Lesetransaktion fertig ist, besitzt die E/A-Brücke 20a exklusiven Zugriff auf den Cacheblock. Im Besonderen kann die E/A-Brücke 20A den Cacheblock nun als modifiziert handhaben.
  • Im Anschluss an die Adressenphase der Lesetransaktion tritt die Datenphase ein. Das Einleiten der Datenphase obliegt der Steuerung des Agenten, der die Daten für das Einlesen bereitstellt. Wenn die Datenphase eintritt, bewirkt der Steuerschaltkreis 60, dass diese Daten mit den Daten aus der Lesemodifizierungsschreibdaten-Warteschlange 56 durch die Steuerung des Multiplexers 62C im Zusammenführpufferspeicher 58 zusammengeführt werden. Im Besonderen kann der Steuerschaltkreis 60 die Maske anwenden, um zu selektieren, welche Bytes aus dem Datenfeld in der Lesemodifizierungsschreibdaten-Warteschlange 56 in den Zusammenführpufferspeicher 58 eingelesen werden sollen. Die übrigen Bytes des Zusammenführpufferspeichers 58 können innerhalb der Bytes aktualisiert werden, die in Reaktion auf die Lesetransaktion im Bus 24 bereitgestellt wurden. Der Multiplexer 62C ist demzufolge – auf Byte-zu-Byte-Basis – steuerbar, um damit entweder Daten aus der Lesemodifizierungsschreibdaten-Warteschlange 56 oder aus den vom Bus bereitgestellten Daten zu selektieren. Der Multiplexer 62C kann beispielsweise aus einer Gruppe von Byte-Multiplexern bestehen, wobei jeder die entsprechenden Bytes innerhalb des Cacheblocks aus der Lesemodifizierungsschreibdaten-Warteschlange 56 und aus dem Bus 24 empfängt, und jeder durch ein entsprechendes Bit aus der Maske gesteuert wird. So kann der Zusammenführpufferspeicher 58 den aktualisierten Cacheblock speichern, der dem Lesemodifizierungsschreibbetrieb entspricht.
  • Der Steuerschaltkreis 60 arbitriert den Adressenbus, um dann jederzeit die Schreibtransaktion ausführen zu können, nachdem die Rückmeldungsphase der Lesetransaktion eingetreten ist. In einigen Ausführungsformen kann der Steuerschaltkreis 60 solange eine Verzögerung bewirken, bis die eingelesenen Daten als Antwort auf die Lesetransaktion zur Verfügung stehen (und folglich sind dann die Daten für die Schreibtransaktion im Zusammenführpufferspeicher 58 verfügbar). Andere Ausführungsformen arbitrieren sofort, um die Zeit zwischen dem Lesen und Schreiben zu reduzieren (und somit den Zeitraum, in dem ein Snooping-Hit im Cacheblock auftritt).
  • Die kohärenten Zustandsänderungen werden von den Reaktionsphasen der Transaktionen gesteuert und daher ist – sobald die Schreibtransaktion die Reaktionsphase erreicht hat – die E/A-Brücke 20A für die Daten nicht mehr zuständig (stattdessen sind Speichersteuereinheit 16/L2-Cache 14 zuständig). In beiden Fällen ist es jedoch möglich, dass im Cacheblock ein Snooping-Hit auftreten kann, und zwar vor dem Ausführen der Schreibtransaktion im Bus 24.
  • Der Speicherschaltkreis 60 vergleicht die Adresse des Lesemodifizierungsschreibbetriebs mit den Adressen der Transaktionen, die vom Bus 24 ausgeschnüffelt/abgehört wurden [Snooping]. Wenn eine Übereinstimmung mit den Suchkriterien (ein Abhörtreffer) während des Zeitraums zwischen der Lesetransaktion und der Schreibtransaktion entdeckt wird, antwortet der Steuerschaltkreis 60 während der Reaktionsphase der Snooping-Transaktion exklusiv. Anschließend kann der Steuerschaltkreis 60 den modifizierten Cacheblock aus dem Zusammenführpufferspeicher 58 als Datenphase der Snooping-Transaktion bereitstellen, wenn die Transaktion ein Lesevorgang ist. Wenn die Transaktion ungültig ist, kann der Steuerschaltkreis 60 den Lesemodifizierungsschreibbetrieb als ungültig erklären (d.h. das Valid-Bit in die Reset-Schleife der Lesemodifizierungsschreib-Warteschlange 52 zurücksetzen. Wenn ein Snooping-Hit vor der Schreibtransaktion des Lesemodifizierungsschreibbetriebs auftritt, kann die E/A-Brücke 20A die Schreibtransaktion nicht durchführen, da der Cacheblock mit der Modifikation kohärent zum Anforderungsagenten der Snooping-Transaktion weitergeleitet worden ist.
  • Es sei angemerkt, auch wenn der Lesemodifizierungsschreibbetrieb in eine separate Warteschlange aufgrund der im Cacheblock formatierten Aufforderungen gestellt wird, bei anderen Ausführungsformen auch eine kombinierte Warteschlange zum Einsatz kommen kann. Bei solchen Ausführungsformen können die Multiplexer 62A62B weggelassen werden. Des Weiteren können andere Ausführungsformen viele Aufforderungswarteschlangen für Transaktionsanfragen mit unterschiedlicher Priorität, verschiedene Quellen für Transaktionsanfragen etc. aufweisen. Außerdem können andere Ausführungsformen – auch wenn in der veranschaulichten Ausführungsform die Daten im Zusammenführpufferspeicher 58 zusammengeführt werden – die Daten in der Lesemodifizierungsschreibdaten-Warteschlange 56 zusammengeführt und somit den Zusammenführpufferspeicher 58 weglassen werden. In solch einer Ausführungsform kann die Lesemodifizierungsschreibdaten-Warteschlange 56 als ein Eingang zum Multiplexer 62B gekoppelt werden (bzw. in einer kombinierten Ausführungsform sind keine Multiplexer vorgesehen).
  • Es sei ferner angemerkt, dass jede beliebige Anzahl mit Warteschlangeneinträgen sowohl in der Anfragewarteschlange 50 als auch in der Lesemodifizierungsschreib-Warteschlange 52 bereitgestellt werden können. In einer Ausführungsform weist die Anfragewarteschlange 50 zwei Einträge auf (und die entsprechenden Einträge in der Anforderungsdaten-Warteschlange 54), wobei die Lesemodifizierungsschreib-Warteschlange 52 einen Eintrag (und einen entsprechenden Eintrag in der Lesemodifizierungsschreibdaten-Warteschlange 56) aufweisen kann. Wenn mehr als ein Lesemodifizierungsschreibdaten-Warteschlangen-Eintrag bereitgestellt wird, können die Lese- und Schreibtransaktionen für jeden Eintrag vermengt werden, wenn dies gewünscht ist, oder es wird jeweils ein Eintrag ausgeführt.
  • Auch wenn in der veranschaulichten Ausführungsform die E/A-Brücken 20A–20B als ausführender Lesemodifizierungsschreibbetrieb dargestellt worden sind, können andere Ausführungsformen Lesemodifizierungsschreibbetriebe in den Schnittstellenschaltungen/Peripheriekomponenten 22A22I durchführen, je nach Konstruktionswunsch. In solchen Ausführungsformen leiten die E/A-Brücken die Adressen von Transaktionen an die Schnittstellenschaltungen/Peripheriekomponenten weiter, welche die Daten im Arbeitsspeicher chachen, wobei sie zu Reaktionszwecken Anzeigehinweise über den Kohärenzzustand erhalten. Des Weiteren sind Ausführungsformen, in denen das Cachen von einem oder von mehreren Cacheblöcken in einer E/A-Brücke/Schnittstellenschaltung/Peripheriekomponente für an dere Zwecke als für einen teilweisen Blockschreibvorgang ausgeführt wird, vorstellbar. Die Kohärenz kann in solchen Cacheblöcken genauso gut aufrechterhalten werden.
  • Zurückkehrend nun zu 5 wird ein Blockdiagramm einer Ablaufsteuereinheit, welche die Zustände des Zustandsdatenfelds in der Lesemodifizierungsschreib-Warteschlange 52 repräsentiert, entsprechend einer Ausführungsform der E/A-Brücke 20A gezeigt. Weitere Ausführungsformen sind möglich und beabsichtigt.
  • Wenn sich die Anfrage in der Lesemodifizierungsschreib-Warteschlange 52 befindet, ist der Zustand anfänglich ungültig bzw. invalid (Bezugszeichen 70). Das Valid-Bit (V) im Eintrag zeigt später an, dass der Eintrag gültig ist, währenddessen der Zustand zum Ermitteln der Kohärenzantwort angewendet wird, wenn ein Snooping-Hit erfasst worden ist. Im [ungültigen] Invalid-Zustand 70 erfasst der Steuerschaltkreis im Cacheblock, der vom Lesemodifizierungsschreibbetrieb betroffen ist, keinen Snooping-Hit.
  • Die Zustandsübergänge vom Invalidzustand 70 zum Modifikationszustand 72 erfolgen in Reaktion auf das Erreichen der Reaktionsphase in der exklusiven Lesetransaktion, die über die E/A-Brücke 20a als eingelesener Bereich im Lesemodifizierungsschreibbetrieb generiert worden ist. Die Reaktionsphase ist der Zeitpunkt, an dem die stattzufindenden Eigentumsänderungen definiert werden. Folglich wird die E/A-Brücke 20A der Eigentümer für den Cacheblock. Aus einer anderen Sicht betrachtet wird die E/A-Brücke 20A zuständig für die Sicherstellung der Kohärenz des Cacheblocks im Hinblick auf die nächste Transaktion des Cacheblocks. Die E/A-Brücke 20A modifiziert den Cacheblock, der als Antwort auf die exklusive Lesetransaktion bereitgestellt wurde, und schreibt entweder den modifizierten Cacheblock in den Speicher unter Anwendung einer Schreibtransaktion zurück, oder stellt den modifizierten Cacheblock als Daten einer Lesetransaktion für den Cacheblock bereit, oder erklärt den Cacheblock für ungültig als Antwort auf eine ungültige Transaktion bezüglich des Cacheblocks.
  • Während sich der Betriebszustand im Modifikationszustand 72 befindet, arbitriert die E/A-Brücke im Bus 24 den Adressenbus zum Durchführen der Adressenphase in der Schreibtransaktion, um den modifizierten Cacheblock in den Speicher schreiben zu können. Sobald die Adressenphase beendet ist, arbitriert die E/A-Brücke 20A den Datenbus, um die Datenphase in der Transaktion durchzuführen. Alternativ dazu kann die E/A-Brücke im Bus 24 den Adressenbus arbitrieren, wobei sich der Betriebszustand im Modifikationszustand 72 befindet, und anschließend die Daten empfangen (und dann den Zusammenführpufferspeicher 58 mit den modifizierten Daten aktualisieren).
  • Die Zustandsübergänge erfolgen vom Modifikationszustand 72 zum Invalidzustand 70, wenn die Reaktionsphase der Schreibtransaktion im Lesemodifizierungsschreibbetrieb ausgeführt worden ist, oder in der Reaktionsphase einer ungültigen Transaktion bezüglich des Cacheblocks. Für den Fall, dass die Schreibtransaktion gerade durchgeführt wird, kehrt während der Reaktionsphase der Schreibtransaktion die Eigentümerschaft zurück an die Speichersteuereinheit 16/den L2-Cache 14. Die Kohärenz einer nachfolgenden Transaktion bezüglich des Cacheblocks wird von der Speichersteuereinheit 16/dem L2-Cache 14 abgewickelt. Auch wenn der Betriebszustand zurück zu einem Invalidzustand übergeht, kann der Lesemodifizierungsschreibbetrieb in der Lesemodifizierungsschreib-Warteschlange 52 solange nicht gelöscht werden, bis der modifizierte Cacheblock als Dateninformation transferiert worden ist. Als Alternative kann der Lesemodifizierungsschreibbetrieb gelöscht werden, wenn der Zusammenführpufferspeicher 58 den modifizierten Cacheblock solange zwischenspeichert, bis er im Datenbus von der E/A-Brücke 20a zur Verfügung gestellt worden ist.
  • Falls andererseits eine ungültige Transaktion eintritt, wird die Cacheblockmodifizierung für ungültig erklärt, und demzufolge wird die Schreibtransaktion für den Lesemodifizierungsschreibbetrieb nicht mehr benötigt. Die ungültig erklärte Transaktion kann ein ungültiger Schreibvorgang sein, wenn der ganze Cacheblock von einem anderen Agenten gerade modifiziert wird, und demzufolge werden keine Bytes aus vorausgehenden Aktualisierungen bezüglich des Cacheblocks mehr benötigt. Der Lesemodifizierungsschreibbetrieb kann dann als Reaktion auf die invalide Transaktion aus der Lesemodifizierungsschreib-Warteschlange 52 gelöscht werden.
  • Die Zustandsübergänge aus dem Modifikationszustand 72 erfolgen zum Herstellen des Datenbereitstellungszustands 74 als Antwort auf eine Lesetransaktion bezüglich des Cacheblocks, der über die E/A-Brücke 20A aus dem Bus 24 abgehört worden ist [Snooping]. Die E/A-Brücke 20a reagiert auf die abgehörte/erschnüffelte Lesetransaktion mit der exklusiven Antwort, und folglich liefert sie die Daten für die Lesetransaktion. In Ausführungsformen, in denen im Adressenbus und Datenbus ein Tag angewendet worden ist, um die Adressenphase und die Datenphase zu verknüpfen, kann die E/A-Brücke 20A den Tag der Lesetransaktion zum Bereitstellen der Daten auffangen. Der aufgefangene Tag kann in dem Zusammenführpufferspeicher 58, in der Lesemodifizierungsschreib-Warteschlange 52 oder in einer anderen Speicherkomponente gespeichert werden.
  • Auch wenn sich der Betriebszustand im Datenbereitstellungszustand 74 befindet, und um nachfolgend den Cacheblock als Reaktion auf die zuvor von der E/A-Brücke 20A ausgeführte Lesetransaktion zu empfangen, kann die E/A-Brücke 20A den Datenbus zum Bereitstellen der Daten bezüglich der abgehörten Lesetransaktion arbitrieren. Auf diese Weise wird der modifizierte Cacheblock an den Anforderungsagenten der Lesetransaktion kohärent bereitgestellt.
  • Die E/A-Brücke reagiert auf keine Transaktionen, die Snooping-Hits im Cacheblock sind, während sich der Betriebszustand im Datenbereitstellungszustand 74 befindet. Die Eigentümerschaft des Cacheblocks ist an den Anforderungsagenten der Lesetransaktion abgegeben worden, wobei die E/A-Brücke 20A die Daten nicht mehr im Cache speichert, nachdem sie an den Anforderungsagenten der Lesetransaktion gesendet worden sind. Somit kommt der Datenbereitstellungszustand 74 zur Anwendung, um die Daten an den Anforderungsagenten zu liefern und, sobald die Daten im Datenbus übertragen worden sind, um die Zustandsübergänge vom Datenbereitstellungszustand 74 in den Invalidzustand 70 zu transformieren. Der Lesemodifizierungsschreibbetrieb kann dann als Reaktion auf die Datenübertragung außerdem aus der Lesemodifizierungsschreib-Warteschlange 52 gelöscht werden.
  • Es sei angemerkt, dass, auch wenn sich die vorliegende Beschreibung auf die Eigentümerschaften in den Übergängen bezieht, die in den Reaktionsphasen stattfinden, in einigen Implementierungen, falls gewünscht, ein vorgegebener Kohärenzagent eine Zustandsänderung genau vor der Reaktionsphase ausführen kann.
  • Mit Bezug nun auf 6 ist ein Taktsteuerdiagramm dargestellt, welches eine Ausführungsform der Adressen- und Reaktionsphasen für eine Lesemodifizierungsschreibtransaktion veranschaulicht. Weitere Ausführungsformen sind möglich und beabsichtigt. Die Taktzyklen des Bustaktgebers, die mit dem Bus 24 korrespondieren, sind mit vertikal gestrichelten Linien und mit den Taktzyklen-Kennsätzen CLK0, CLK1 etc. oben in der Titelzeile dargestellt. Transaktionen, die über die E/A-Brücke eingeleitet wurden, sind in 6 horizontal über die ganze „E/A-Brücken" -Kennzeichnung dargestellt.
  • Während des Taktzyklus CLK0 wird die Adressenphase des Leseabschnitts im Lesemodifizierungsschreibbetrieb durchgeführt (Bezugszeichen 80). Speziell die Lesetransaktion ist eine exklusive Lesetransaktion für die Adresse "A" (für den Cacheblock, welcher die Bytes enthält, die durch den teilweisen Cacheblockschreibvorgang aktualisiert wurden, welches den Lesemodifizierungsschreibbetrieb bewirkt hat). Die Reaktionsphase der Transaktion findet im Taktzyklus CLK2 (Bezugszeichen 82) statt. Auch wenn die Reaktionsphase dargestellt ist, wie sie zwei Takte nach der korrespondierenden Adressenphase erfolgt, können andere Ausführungsformen eine kürzere oder auch eine längere Laufzeit aufweisen.
  • Zu Beginn im Taktzyklus CLK3 ist die E/A-Brücke 20A zuständig für die Sicherstellung der Kohärenz des Cacheblocks, der durch die Adresse „A" adressiert wurde (abgesetzte Klammer 84). Aus einer anderen Sichtweise ist die E/A-Brücke 20A Eigentümer des Cacheblocks, der im Taktzyklus CLK3 beginnt. Die E/A-Brücke 20A bleibt solange zuständig für die Kohärenz des Cacheblocks, bis in der Reaktionsphase die Schreibtransaktion erfolgt ist, die dem Lesemodifizierungsschreibbetrieb entspricht (Bezugszeichen 88 – im Taktzyklus CLKN+2 – zwei Taktzyklen nach der Adressenphase der Schreibtransaktion – Bezugszeichen 86 – im Taktzyklus CLKN). Die Anzahl der Taktzyklen zwischen der Lesetransaktion und der Schreibtransaktion kann generell variieren (daher die Ellipsenklammer zwischen Taktzyklus CLK5 und Taktzyklus CLKN). In einigen Ausführungsformen kann diese Anzahl auch kleiner als die dargestellte Anzahl sein.
  • Während 6 den Lesemodifizierungsschreibbetrieb zeigt, der die Schreibtransaktion komplettiert, ist 7 ein Taktsteuerdiagramm, welches den Lesemodifizierungsschreibbetrieb veranschaulicht, welcher den Vorgang durch die Übermittlung des modifizierten Cacheblocks an einen Agenten komplettiert, der den Cacheblock vor der Schreibtransaktion liest. Weitere Ausführungsformen sind möglich und beabsichtigt. Die Taktzyklen des Bustaktgebers, die mit dem Bus 24 korrespondieren, sind mit vertikal gestrichelten Linien und mit den Taktzyklen-Kennsätzen CLK0, CLK1 etc. oben in der Titelzeile dargestellt. Transaktionen, die über die E/A-Brücke eingeleitet wurden, sind in 7 horizontal über die ganze „E/A-Brücken" -Kennzeichnung dargestellt, und Transaktionen, die über den Agenten initiiert wurden, werden in 7 horizontal durchgehend über die ganze Kennzeichnung „Agent" veranschaulicht.
  • Ähnlich wie in 6 wird die Adressenphase des Leseabschnitts im Lesemodifizierungsschreibbetrieb durchgeführt (Bezugszeichen 80) und die Reaktionsphase der Transaktion findet im Taktzyklus CLK2 statt (Bezugszeichen 82). Daher wird die E/A-Brücke zuständig für die Kohärenz des Cacheblocks, der durch die Adresse „A" im Taktzyklus 3 adressiert wurde (abgesetzte Klammer 90). Im Ausfüh rungsbeispiel der 7 jedoch initiiert noch ein weiterer Agent eine Lesetransaktion für die Adresse „A". Hierfür wird in 7 die Adressenphase der Lesetransaktion im Taktzyklus CLK4 (Bezugszeichen 92) und die Reaktionsphase im Taktzyklus CLK6 (Bezugszeichen 94) veranschaulicht.
  • Da die E/A-Brücke exklusiven Zugriff auf den durch die Adresse „A" adressierten Cacheblock hat, antwortet die E/A-Brücke während der Reaktionsphase 94 exklusiv. Da die E/A-Brücke den modifizierten Cacheblock nicht behalten will, nachdem durch den Agenten die Lesetransaktion komplettiert wurde, beendet die E/A-Brücke die Durchsetzung der Kohärenz auf Reaktionsstufe 94. Ferner kann die E/A-Brücke die Schreibtransaktion im Lesemodifizierungsschreibbetrieb nicht durchführen, da der modifizierte Cacheblock kohärent zu einem anderen Agenten weitergeleitet worden ist. In einer Ausführungsform aktualisiert die Speichersteuereinheit 16/L2 den Cache 14 mit einem Cacheblock, der im modifizierten Betriebszustand (Übermittlung während der Datenphase) von einem Agenten zum anderen transferiert worden ist, und infolgedessen ist diese Aktualisierung im Speicher aufgezeichnet. Als Alternative kann der Anforderungsagent die Daten im modifizierten Zustand empfangen und somit für die Kohärenz des modifizierten Cacheblocks zuständig werden. In einer weiteren Alternative kann die E/A-Brücke bezüglich der Daten mit der Kohärenzforcierung fortfahren und die Schreibtransaktion durchführen, um den Speicher zu aktualisieren.
  • In Bezug auf die veranschaulichte Ausführungsform stellt die E/A-Brücke die Daten während der Datenphase der Lesetransaktion bereit, die durch den Agenten generiert wurde (Bezugszeichen 96).
  • Als nächstes mit Bezug auf 8 wird ein Blockdiagramm für ein Trägermedium 300 dargestellt, welches eine Datenbank enthält, die für das Anlagesystem 10 repräsentativ ist. Ganz allgemein erklärt, kann das Trägermedium ein Speichermedium beinhalten, wie beispielsweise magnetische oder optische Speichermedien, d.h. Diskette oder CD-ROM, flüchtige oder nichtflüchtige Speichermedien, wie bei spielsweise RAM-Speicher (d.h. SDRAM, RDRAM, SRAM etc.), ROM-Speicher und dergleichen, sowie Übertragungsmedien oder Signale, wie beispielsweise elektrische, elektromagnetische oder digitale Signale, die über ein Kommunikationsmedium gesendet werden, wie beispielsweise über ein Netzwerk und/oder über eine drahtlose Verbindung.
  • Ganz allgemein kann die Datenbank des Systems 10, die sich im Trägermedium 300 befindet, eine Datenbank sein, die – direkt oder indirekt – von einem Programm gelesen und verwendet wird, um die Hardware-Geräteausrüstung bereitzustellen, die das System 10 umfasst. Zum Beispiel kann die Datenbank in Bezug auf die Geräte-Funktionalität eine Beschreibung auf Verhaltensebene oder auf Registriertransferebene (RTL) mit einer hochleistungsfähigen Entwicklersprache (HDL) aufweisen, wie zum Beispiel Verflog bzw. VHDL. Die Beschreibung wird mit einem Synthesewerkzeug gelesen, das die Beschreibung zur Erzeugung einer Netzliste synthetisieren kann, welche aus einer Auflistung von Gattern [Gates] aus einer Synthesebibliothek besteht. Die Netzliste umfasst einen Satz von Gattern, welche außerdem die Funktionalität der Hardware-Geräteausrüstung repräsentieren, aus dem das System 10 besteht. Die Netzliste kann anschließend zum Erzeugen eines Datensatzes lokalisiert und weitergeleitet werden, der die geometrischen Zustandsformen beschreibt, welche auf die Masken anzuwenden sind. Die Masken können dann in verschiedenen Halbleiterherstellschritten angewendet werden, um eine Halbleiterschaltung oder Schaltkreise zu produzieren, die dem System 10 entsprechen. Als Alternative kann auch die Datenbank im Trägermedium 300 die Netzliste (mit oder ohne Synthesebibliothek) oder der Datensatz sein, je nach Konstruktionswunsch.
  • Auch wenn das Trägermedium 300 eine Repräsentation des Systems 10 enthält, können andere Ausführungsformen, je nach Wunsch, eine Repräsentation von einem beliebigen Teil des Systems 10 umfassen, einschließlich eines beliebigen Satzes von Agenten (d.h. die Prozessoren 12A12B, den L2-Cache 14, die Speichersteuereinheit 16, und/oder die E/A-Bücken 20A20B), Bereiche eines Agenten, d.h. Anforderungswarteschlangen, Lesemodifizierungsschreib-Warteschlangen, Steuer schaltkreise etc. in den E/A-Brücken, E/A-Schnittstellenschaltungen 22A22I, oder diesbezüglich Teilbereiche, den Bus 24 etc. Die Datenbanken, auf die vorstehend Bezug genommen wurde, können einen Schaltungsdefiniermechanismus für das System 10 oder für Abschnitte von diesem umfassen.
  • Für die Fachleute auf diesem Gebiet werden zahlreiche Variationen und Modifikationen erkennbar, sobald die vorstehend offengelegte Beschreibung vollständig evaluiert worden ist. Die anhängenden Patentansprüche sind so zu interpretieren, dass diese alle diesbezüglichen Variationen und Modifikationen umfassen.
  • Insofern die vorstehend beschriebenen, erfindungsgemäßen Ausführungsformen unter Anwendung einer Software gesteuerten und programmierbaren Prozessoreinrichtung, wie zum Beispiel eines digitalen Signalprozessors (DSP), Mikroprozessors und anderer Prozessorgeräte, Datenverarbeitungsgeräte oder Computersysteme implementiert werden können, zumindest zum Teil, ist positiv anzuerkennen, dass ein Computerprogramm oder Programmelement zum Konfigurieren einer programmierbaren Einrichtung, Gerätschaft oder eines Systems zum Ausführen der vorstehend beschriebenen Verfahrensweisen, Mechanismen und/oder Module als Aspekt der vorliegenden Erfindung zu verstehen sind. Das Computerprogramm oder Programmelement kann als Quellencode integriert sein und bezüglich einer Implementierung in einer Prozessoreinrichtung, Gerätschaft oder in einem System einer Kompilierung unterzogen werden, oder zum Beispiel als Maschinenprogrammcode dargestellt sein. Der fachlich erfahrenen Person ist allzu verständlich, dass der Begriff Computer im ganz allgemeinen Sinne programmierbare Einrichtungen umfasst, wie sie vorstehend aufgeführt sind, sowie Datenverarbeitungsgeräte und Computersysteme.
  • In geeigneter Weise wird das Computerprogramm oder Programmelement in einer lesbaren Form auf einem Trägermedium eines Gerätes oder einer Einrichtung gespeichert, wie zum Beispiel auf einem Halbleiterspeicher, auf einem optischen oder magnetoptischen Speicher, wie zum Beispiel auf lesbaren und/oder beschreib baren Datenträgern, wie CD (Compact Disc) und DVD (Digital Versatile Disc), oder in einem Magnetspeicher, wie es beispielsweise Magnetplatten oder Magnetbänder sind, wobei die Prozessoreinrichtung das Programm, Programmelement oder einen Teil davon benutzt, um es für den Betrieb zu konfigurieren. Das Computerprogramm oder Programmelement kann auch von einer entfernten Quelle bereitgestellt werden, die in einem Kommunikationsmedium integriert ist, wie zum Beispiel in einem elektronischen Signal, welches eine HF-Trägerwelle oder optische Trägerwelle einschließt. Solche Trägermedien werden auch als Aspekte der vorliegenden Erfindung angesehen.
  • Angesichts der vorstehenden Beschreibung über bestimmte Ausführungsformen der vorliegenden Erfindung wird den Fachleuten auf dem Gebiet bewusst, dass hierzu verschiedene Erweiterungen, Modifikationen und Alternativen in Betracht gezogen werden können.
  • Um jegliche Zweifel auszuschließen, ist in der Beschreibung und in den Ansprüchen der verwendete Begriff „umfassen" nicht allein im Sinne von „bestehen nur aus" auszulegen.

Claims (16)

  1. Integrierte Schaltung in einer Netzwerkvorrichtung mit: wenigstens einem Prozessor (12A, 12B), der mit einer Verbindung (Interconnect) (24) gekoppelt ist; einem Cache-Speicher (14), der mit der Verbindung (24) gekoppelt ist; einem Memory Controller (16), der mit der Verbindung (24) gekoppelt ist; wenigstens einer Schnittstellenschaltung (22A–22H) zur Kopplung an ein Netzwerk außerhalb der integrierten Schaltung; wobei der wenigstens eine Prozessor (12A, 12B), der Cache (14), der Memory Controller (16), die Verbindung (24) und die wenigstens eine Schnittstellenschaltung (22A22H) auf der integrierten Schaltung integriert sind; gekennzeichnet durch wenigstens eine Brückenschaltung (20A, 20B), die mit der Verbindung (24) gekoppelt und so konfiguriert ist, dass sie eine Vielzahl von Schnittstellenschaltungen (22A22H) mit der Verbindung (24) koppelt, wobei die wenigstens eine Brückenschaltung (20A, 20B) auch mit der wenigstens einen Schnittstellenschaltung (22A–22H) gekoppelt ist, um es der Brückenschaltung (20A, 20B) zu ermöglichen, Transaktionen auf der Verbindung (24) für Datenübertragung zwischen der Verbindung (24) und der wenigstens einen Schnittstellenschaltung (22A22H) einzuleiten.
  2. Integrierte Schaltung nach einem der vorhergehenden Ansprüche (sic!], wobei die Brückenschaltung (20A, 20B) Daten temporär cachen kann.
  3. Integrierte Schaltung nach einem der vorhergehenden Ansprüche, wobei Kohärenz innerhalb der Grenzen der integrierten Schaltung durchgesetzt wird, jedoch außerhalb der Grenzen der integrierten Schaltung nicht durchgesetzt wird.
  4. Integrierte Schaltung nach einem der vorhergehenden Ansprüche, wobei die Brückenschaltung (20A, 20B) so gekoppelt ist, dass sie eine Schreib-Aufforderung empfängt, die einen Abschnitt eines Cacheblocks aktualisiert, und wobei die Brückenschaltung (20A, 20B) so konfiguriert ist, dass sie den Cacheblock kohärent aus einem Speicher (14, 26) ausliest und den Cacheblock in der Brückenschaltung (20A, 20B) modifiziert, um den modifizierten Cacheblock in den Speicher (14, 26) zurückzuschreiben.
  5. Integrierte Schaltung nach Anspruch 4, wobei, wenn die Brückenschaltung (20A, 20B) eine Transaktion für den Cacheblock nach dem Lesen und vor dem Zurückschreiben des modifizierten Cacheblocks empfängt, die Brückenschaltung (20A, 20B) so konfiguriert ist, dass sie kohärent auf die Transaktion antwortet.
  6. Integrierte Schaltung nach Anspruch 5, wobei die Brückenschaltung (20A, 20B) so konfiguriert ist, dass sie den modifizierten Cacheblock im Ansprechen auf die Transaktion zuführt.
  7. Integrierte Schaltung nach Anspruch 6, wobei die Brückenschaltung (20A, 20B) des Weiteren so konfiguriert ist, dass sie das Durchführen einer Schreib-Transaktion, um den modifizierten Cacheblock in den Speicher (14, 26) zurückzuschreiben, verhindert.
  8. Integrierte Schaltung nach einem der vorhergehenden Ansprüche, wobei die Brückenschaltung (20A, 20B) so konfiguriert ist, dass sie eine Schreib-Transaktion durchführt, um den modifizierten Cacheblock in den Speicher (14, 26) zurückzuschreiben, wenn zwischen dem kohärenten Lesen durch die Brückenschaltung (20A, 20B) und der Schreib-Transaktion keine Transaktion für den Cacheblock empfangen wird.
  9. Integrierte Schaltung nach einem der vorhergehenden Ansprüche, wobei Kohärenz zwischen dem Cache (14), dem Prozessor (12A, 12B) und der Brückenschaltung (20A, 20B) durchgesetzt wird.
  10. Schaltungsdefinier-Mechanismus mit einer oder mehreren Datenbanken, die die integrierte Schaltung nach einem der vorhergehenden Ansprüche repräsentieren.
  11. Schaltungsdefinier-Mechanismus nach Anspruch 10, wobei die eine oder mehreren Datenbanken eine oder mehrere Netzwerklisten aufweisen.
  12. Trägermedium, das den Schaltungsdefinier-Mechanismus nach Anspruch 10 oder 11 trägt.
  13. Computerprogramm mit maschinen- oder computerlesbaren Programmelementen zum Konfigurieren eines Computers zur Implementierung des Mechanismus nach Anspruch 10 oder 11.
  14. Computerprogramm-Trägermedium, das so konfiguriert ist, dass es ein Computerprogramm nach Anspruch 13 trägt.
  15. Computerprogramm-Erzeugnis mit einem computerverwendbaren Medium mit einem maschinen- oder computerlesbaren Programmcode, der in dem computerverwendbaren Medium eingebettet ist, und der ausgeführt werden kann, um das Durchführen des Definierens einer Schaltung zu bewirken, wobei der computerlesbare Programmcode einen computerlesbaren Programmcode umfasst, der veranlasst, dass wenigstens ein Computer den Mechanismus nach Anspruch 10 oder 11 implementiert.
  16. Computerprogramm-Trägermedium nach Anspruch 14 oder Computerprogramm-Erzeugnis nach Anspruch 15, wobei das Träger- oder computerverwendbare Medium wenigstens eine der folgenden Gruppen von Medien umfasst: ein Signal, das ein optisches, elektronisches oder Hochfrequenz-Trägersignal umfasst, Magnetplatte oder Magnetband, Halbleiterspeicher, optisch lesbare und/oder beschreibbare Disc, CD (Compact Disc) und DVD (Digital Versatile Disc).
DE60215417T 2001-05-18 2002-05-20 Netzwerkschaltung Expired - Lifetime DE60215417T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/861,191 US6766389B2 (en) 2001-05-18 2001-05-18 System on a chip for networking
US861191 2001-05-18

Publications (2)

Publication Number Publication Date
DE60215417D1 DE60215417D1 (de) 2006-11-30
DE60215417T2 true DE60215417T2 (de) 2007-08-23

Family

ID=25335132

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60215417T Expired - Lifetime DE60215417T2 (de) 2001-05-18 2002-05-20 Netzwerkschaltung

Country Status (3)

Country Link
US (4) US6766389B2 (de)
EP (1) EP1260910B1 (de)
DE (1) DE60215417T2 (de)

Families Citing this family (105)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5978379A (en) 1997-01-23 1999-11-02 Gadzoox Networks, Inc. Fiber channel learning bridge, learning half bridge, and protocol
US7430171B2 (en) 1998-11-19 2008-09-30 Broadcom Corporation Fibre channel arbitrated loop bufferless switch circuitry to increase bandwidth without significant increase in cost
US6766389B2 (en) 2001-05-18 2004-07-20 Broadcom Corporation System on a chip for networking
US7239636B2 (en) 2001-07-23 2007-07-03 Broadcom Corporation Multiple virtual channels for use in network devices
US7295555B2 (en) 2002-03-08 2007-11-13 Broadcom Corporation System and method for identifying upper layer protocol message boundaries
US7609718B2 (en) * 2002-05-15 2009-10-27 Broadcom Corporation Packet data service over hyper transport link(s)
US7162564B2 (en) * 2002-07-09 2007-01-09 Intel Corporation Configurable multi-port multi-protocol network interface to support packet processing
US7411959B2 (en) 2002-08-30 2008-08-12 Broadcom Corporation System and method for handling out-of-order frames
US7934021B2 (en) 2002-08-29 2011-04-26 Broadcom Corporation System and method for network interfacing
US7346701B2 (en) 2002-08-30 2008-03-18 Broadcom Corporation System and method for TCP offload
US7313623B2 (en) 2002-08-30 2007-12-25 Broadcom Corporation System and method for TCP/IP offload independent of bandwidth delay product
US8180928B2 (en) 2002-08-30 2012-05-15 Broadcom Corporation Method and system for supporting read operations with CRC for iSCSI and iSCSI chimney
US6954809B2 (en) * 2002-09-27 2005-10-11 Via Technologies, Inc. Apparatus and method for accessing computer system resources via serial bus
US7757046B2 (en) * 2002-09-30 2010-07-13 Intel Corporation Method and apparatus for optimizing line writes in cache coherent systems
US7447201B2 (en) * 2003-02-07 2008-11-04 Fujitsu Limited Multicasting in a high-speed switching environment
US7650413B2 (en) * 2003-02-07 2010-01-19 Fujitsu Limited Managing shared memory resources in a high-speed switching environment
US7412569B2 (en) * 2003-04-10 2008-08-12 Intel Corporation System and method to track changes in memory
US20040225707A1 (en) * 2003-05-09 2004-11-11 Chong Huai-Ter Victor Systems and methods for combining a slow data stream and a fast data stream into a single fast data stream
US7573870B2 (en) * 2003-09-25 2009-08-11 Lsi Logic Corporation Transmit prioritizer context prioritization scheme
US20050119632A1 (en) * 2003-11-03 2005-06-02 Sierra Alisa K. Absorbent structure featuring high density and flexibility
US8782654B2 (en) 2004-03-13 2014-07-15 Adaptive Computing Enterprises, Inc. Co-allocating a reservation spanning different compute resources types
EP1738258A4 (de) 2004-03-13 2009-10-28 Cluster Resources Inc System und verfahren zur bereitstellung von objekttriggern
US20070266388A1 (en) 2004-06-18 2007-11-15 Cluster Resources, Inc. System and method for providing advanced reservations in a compute environment
US7389375B2 (en) * 2004-07-30 2008-06-17 International Business Machines Corporation System, method and storage medium for a multi-mode memory buffer device
US7539800B2 (en) * 2004-07-30 2009-05-26 International Business Machines Corporation System, method and storage medium for providing segment level sparing
US20060036826A1 (en) * 2004-07-30 2006-02-16 International Business Machines Corporation System, method and storage medium for providing a bus speed multiplier
US7296129B2 (en) * 2004-07-30 2007-11-13 International Business Machines Corporation System, method and storage medium for providing a serialized memory interface with a bus repeater
US7224595B2 (en) * 2004-07-30 2007-05-29 International Business Machines Corporation 276-Pin buffered memory module with enhanced fault tolerance
US8176490B1 (en) 2004-08-20 2012-05-08 Adaptive Computing Enterprises, Inc. System and method of interfacing a workload manager and scheduler with an identity manager
US7277988B2 (en) * 2004-10-29 2007-10-02 International Business Machines Corporation System, method and storage medium for providing data caching and data compression in a memory subsystem
US7512762B2 (en) 2004-10-29 2009-03-31 International Business Machines Corporation System, method and storage medium for a memory subsystem with positional read data latency
US7441060B2 (en) * 2004-10-29 2008-10-21 International Business Machines Corporation System, method and storage medium for providing a service interface to a memory system
US7299313B2 (en) * 2004-10-29 2007-11-20 International Business Machines Corporation System, method and storage medium for a memory subsystem command interface
US7331010B2 (en) * 2004-10-29 2008-02-12 International Business Machines Corporation System, method and storage medium for providing fault detection and correction in a memory subsystem
CA2586763C (en) 2004-11-08 2013-12-17 Cluster Resources, Inc. System and method of providing system jobs within a compute environment
US20060168379A1 (en) * 2004-12-13 2006-07-27 Tim Frodsham Method, system, and apparatus for link latency management
US8036123B1 (en) 2005-01-07 2011-10-11 Marvell International Ltd. Integrated circuit for network stress testing
US8863143B2 (en) 2006-03-16 2014-10-14 Adaptive Computing Enterprises, Inc. System and method for managing a hybrid compute environment
US9231886B2 (en) 2005-03-16 2016-01-05 Adaptive Computing Enterprises, Inc. Simple integration of an on-demand compute environment
EP3203374B1 (de) 2005-04-07 2021-11-24 III Holdings 12, LLC Zugang auf anfrage zu computerressourcen
US7478259B2 (en) 2005-10-31 2009-01-13 International Business Machines Corporation System, method and storage medium for deriving clocks in a memory system
US7747897B2 (en) * 2005-11-18 2010-06-29 Intel Corporation Method and apparatus for lockstep processing on a fixed-latency interconnect
US7685392B2 (en) * 2005-11-28 2010-03-23 International Business Machines Corporation Providing indeterminate read data latency in a memory system
KR100730279B1 (ko) * 2005-12-16 2007-06-19 삼성전자주식회사 스타 토로스 토폴로지를 이용하여 칩 상의 디바이스를연결한 컴퓨터 칩
US20070168536A1 (en) * 2006-01-17 2007-07-19 International Business Machines Corporation Network protocol stack isolation
US7526611B2 (en) * 2006-03-22 2009-04-28 International Business Machines Corporation Unified processor cache model in multiprocessor system
US20070268926A1 (en) * 2006-05-22 2007-11-22 Fujitsu Limited System and Method for Allocating Memory Resources in a Switching Environment
US20070268903A1 (en) * 2006-05-22 2007-11-22 Fujitsu Limited System and Method for Assigning Packets to Output Queues
US20070280104A1 (en) * 2006-06-01 2007-12-06 Takashi Miyoshi System and Method for Managing Forwarding Database Resources in a Switching Environment
US7669086B2 (en) 2006-08-02 2010-02-23 International Business Machines Corporation Systems and methods for providing collision detection in a memory system
US7742408B2 (en) * 2006-08-04 2010-06-22 Fujitsu Limited System and method for filtering packets in a switching environment
US7826468B2 (en) * 2006-08-04 2010-11-02 Fujitsu Limited System and method for bypassing an output queue structure of a switch
US7477522B2 (en) * 2006-10-23 2009-01-13 International Business Machines Corporation High density high reliability memory module with a fault tolerant address and command bus
US7870459B2 (en) 2006-10-23 2011-01-11 International Business Machines Corporation High density high reliability memory module with power gating and a fault tolerant address and command bus
US7721140B2 (en) 2007-01-02 2010-05-18 International Business Machines Corporation Systems and methods for improving serviceability of a memory system
US7603526B2 (en) * 2007-01-29 2009-10-13 International Business Machines Corporation Systems and methods for providing dynamic memory pre-fetch
US20090006668A1 (en) * 2007-06-28 2009-01-01 Anil Vasudevan Performing direct data transactions with a cache memory
KR101472797B1 (ko) * 2007-07-16 2014-12-15 삼성전자주식회사 데이터를 읽거나 쓰기 위한 방법 및 장치
US8041773B2 (en) 2007-09-24 2011-10-18 The Research Foundation Of State University Of New York Automatic clustering for self-organizing grids
US7958309B2 (en) 2008-02-01 2011-06-07 International Business Machines Corporation Dynamic selection of a memory access size
US8255635B2 (en) * 2008-02-01 2012-08-28 International Business Machines Corporation Claiming coherency ownership of a partial cache line of data
US8140771B2 (en) * 2008-02-01 2012-03-20 International Business Machines Corporation Partial cache line storage-modifying operation based upon a hint
US8117401B2 (en) * 2008-02-01 2012-02-14 International Business Machines Corporation Interconnect operation indicating acceptability of partial data delivery
US8266381B2 (en) * 2008-02-01 2012-09-11 International Business Machines Corporation Varying an amount of data retrieved from memory based upon an instruction hint
US8250307B2 (en) * 2008-02-01 2012-08-21 International Business Machines Corporation Sourcing differing amounts of prefetch data in response to data prefetch requests
US8024527B2 (en) * 2008-02-01 2011-09-20 International Business Machines Corporation Partial cache line accesses based on memory access patterns
US20090198910A1 (en) * 2008-02-01 2009-08-06 Arimilli Ravi K Data processing system, processor and method that support a touch of a partial cache line of data
US8108619B2 (en) * 2008-02-01 2012-01-31 International Business Machines Corporation Cache management for partial cache line operations
US8250336B2 (en) * 2008-02-25 2012-08-21 International Business Machines Corporation Method, system and computer program product for storing external device result data
US8032852B1 (en) 2008-06-17 2011-10-04 Xilinx, Inc. Method of automating clock signal provisioning within an integrated circuit
US8250280B1 (en) * 2008-07-15 2012-08-21 Marvell Israel (M.I.S.L.) Ltd. Bus transaction maintenance protocol
US8015530B1 (en) 2008-08-05 2011-09-06 Xilinx, Inc. Method of enabling the generation of reset signals in an integrated circuit
US8079009B1 (en) * 2008-12-08 2011-12-13 Xilinx, Inc. Managing interrupt requests from IP cores
US8117390B2 (en) * 2009-04-15 2012-02-14 International Business Machines Corporation Updating partial cache lines in a data processing system
US8176254B2 (en) * 2009-04-16 2012-05-08 International Business Machines Corporation Specifying an access hint for prefetching limited use data in a cache hierarchy
US8140759B2 (en) * 2009-04-16 2012-03-20 International Business Machines Corporation Specifying an access hint for prefetching partial cache block data in a cache hierarchy
US9876735B2 (en) 2009-10-30 2018-01-23 Iii Holdings 2, Llc Performance and power optimized computer system architectures and methods leveraging power optimized tree fabric interconnect
US9077654B2 (en) 2009-10-30 2015-07-07 Iii Holdings 2, Llc System and method for data center security enhancements leveraging managed server SOCs
US9054990B2 (en) 2009-10-30 2015-06-09 Iii Holdings 2, Llc System and method for data center security enhancements leveraging server SOCs or server fabrics
US20110103391A1 (en) 2009-10-30 2011-05-05 Smooth-Stone, Inc. C/O Barry Evans System and method for high-performance, low-power data center interconnect fabric
US20130107444A1 (en) 2011-10-28 2013-05-02 Calxeda, Inc. System and method for flexible storage and networking provisioning in large scalable processor installations
US9465771B2 (en) 2009-09-24 2016-10-11 Iii Holdings 2, Llc Server on a chip and node cards comprising one or more of same
US8599863B2 (en) 2009-10-30 2013-12-03 Calxeda, Inc. System and method for using a multi-protocol fabric module across a distributed server interconnect fabric
DE102009043451A1 (de) * 2009-09-29 2011-04-21 Infineon Technologies Ag Schaltungsanordnung, Network-on-Chip und Verfahren zum Übertragen von Informationen
US9680770B2 (en) 2009-10-30 2017-06-13 Iii Holdings 2, Llc System and method for using a multi-protocol fabric module across a distributed server interconnect fabric
US11720290B2 (en) 2009-10-30 2023-08-08 Iii Holdings 2, Llc Memcached server functionality in a cluster of data processing nodes
US9648102B1 (en) 2012-12-27 2017-05-09 Iii Holdings 2, Llc Memcached server functionality in a cluster of data processing nodes
US10877695B2 (en) 2009-10-30 2020-12-29 Iii Holdings 2, Llc Memcached server functionality in a cluster of data processing nodes
US9311269B2 (en) 2009-10-30 2016-04-12 Iii Holdings 2, Llc Network proxy for high-performance, low-power data center interconnect fabric
US8892820B2 (en) * 2010-03-19 2014-11-18 Netapp, Inc. Method and system for local caching of remote storage data
US8861386B2 (en) 2011-01-18 2014-10-14 Apple Inc. Write traffic shaper circuits
US8744602B2 (en) 2011-01-18 2014-06-03 Apple Inc. Fabric limiter circuits
US8493863B2 (en) 2011-01-18 2013-07-23 Apple Inc. Hierarchical fabric control circuits
US8649286B2 (en) 2011-01-18 2014-02-11 Apple Inc. Quality of service (QoS)-related fabric control
US9141568B2 (en) 2011-08-25 2015-09-22 Apple Inc. Proportional memory operation throttling
US8706925B2 (en) 2011-08-30 2014-04-22 Apple Inc. Accelerating memory operations blocked by ordering requirements and data not yet received
US9092594B2 (en) 2011-10-31 2015-07-28 Iii Holdings 2, Llc Node card management in a modular and large scalable server system
US9117508B2 (en) * 2012-01-19 2015-08-25 Rambus Inc. Integrated circuit with adaptive power state management
US9053058B2 (en) 2012-12-20 2015-06-09 Apple Inc. QoS inband upgrade
US10078589B2 (en) * 2015-04-30 2018-09-18 Arm Limited Enforcing data protection in an interconnect
JP2017010396A (ja) * 2015-06-24 2017-01-12 富士通株式会社 ストレージ装置、キャッシュ書込制御方法及びキャッシュ書込制御プログラム
EP3704595A4 (de) * 2017-10-31 2021-12-22 Micron Technology, Inc. System mit einem hybriden threading-prozessor, hybride threading-matrix mit konfigurierbaren rechenelementen und hybrides verbindungsnetzwerk
WO2019089816A2 (en) * 2017-10-31 2019-05-09 Micron Technology, Inc. System having a hybrid threading processor, a hybrid threading fabric having configurable computing elements, and a hybrid interconnection network
DE102017220764A1 (de) 2017-11-21 2019-05-23 Audi Ag Ein-Chip-System für ein Fahrzeug
US11461127B2 (en) * 2019-05-24 2022-10-04 Texas Instruments Incorporated Pipeline arbitration

Family Cites Families (53)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4463424A (en) 1981-02-19 1984-07-31 International Business Machines Corporation Method for dynamically allocating LRU/MRU managed memory among concurrent sequential processes
US4433378A (en) 1981-09-28 1984-02-21 Western Digital Chip topography for MOS packet network interface circuit
US4760571A (en) 1984-07-25 1988-07-26 Siegfried Schwarz Ring network for communication between one chip processors
GB9107945D0 (en) 1991-04-15 1991-05-29 Lorient Polyprod Ltd Smoke seal
US5974508A (en) 1992-07-31 1999-10-26 Fujitsu Limited Cache memory system and method for automatically locking cache entries to prevent selected memory items from being replaced
US5802287A (en) 1993-10-20 1998-09-01 Lsi Logic Corporation Single chip universal protocol multi-function ATM network interface
US5914955A (en) 1993-10-20 1999-06-22 Lsi Logic Corporation Switched network hub on a chip
US5887187A (en) 1993-10-20 1999-03-23 Lsi Logic Corporation Single chip network adapter apparatus
US5668809A (en) 1993-10-20 1997-09-16 Lsi Logic Corporation Single chip network hub with dynamic window filter
US5640399A (en) 1993-10-20 1997-06-17 Lsi Logic Corporation Single chip network router
EP0683457A1 (de) * 1994-05-20 1995-11-22 Advanced Micro Devices, Inc. Computersystem mit einer Snoopsteuerschaltung
US5857075A (en) * 1995-01-11 1999-01-05 Sony Corporation Method and integrated circuit for high-bandwidth network server interfacing to a local area network
US6373846B1 (en) 1996-03-07 2002-04-16 Lsi Logic Corporation Single chip networking device with enhanced memory access co-processor
US5778414A (en) 1996-06-13 1998-07-07 Racal-Datacom, Inc. Performance enhancing memory interleaver for data frame processing
US5893150A (en) 1996-07-01 1999-04-06 Sun Microsystems, Inc. Efficient allocation of cache memory space in a computer system
US5893153A (en) * 1996-08-02 1999-04-06 Sun Microsystems, Inc. Method and apparatus for preventing a race condition and maintaining cache coherency in a processor with integrated cache memory and input/output control
US5991817A (en) 1996-09-06 1999-11-23 Cisco Systems, Inc. Apparatus and method for a network router
US6209020B1 (en) 1996-09-20 2001-03-27 Nortel Networks Limited Distributed pipeline memory architecture for a computer system with even and odd pids
US6202125B1 (en) 1996-11-25 2001-03-13 Intel Corporation Processor-cache protocol using simple commands to implement a range of cache configurations
US5829025A (en) 1996-12-17 1998-10-27 Intel Corporation Computer system and method of allocating cache memories in a multilevel cache hierarchy utilizing a locality hint within an instruction
US6111859A (en) 1997-01-16 2000-08-29 Advanced Micro Devices, Inc. Data transfer network on a computer chip utilizing combined bus and ring topologies
US5908468A (en) 1997-10-24 1999-06-01 Advanced Micro Devices, Inc. Data transfer network on a chip utilizing a multiple traffic circle topology
US6266797B1 (en) 1997-01-16 2001-07-24 Advanced Micro Devices, Inc. Data transfer network on a computer chip using a re-configurable path multiple ring topology
US6029197A (en) 1997-02-14 2000-02-22 Advanced Micro Devices, Inc. Management information base (MIB) report interface for abbreviated MIB data
US6141376A (en) * 1997-04-01 2000-10-31 Lsi Logic Corporation Single chip communication device that implements multiple simultaneous communication channels
US5970069A (en) * 1997-04-21 1999-10-19 Lsi Logic Corporation Single chip remote access processor
US5859989A (en) * 1997-05-13 1999-01-12 Compaq Computer Corp. Apparatus method and system for 64 bit peripheral component interconnect bus using accelerated graphics port logic circuits
US6018763A (en) * 1997-05-28 2000-01-25 3Com Corporation High performance shared memory for a bridge router supporting cache coherency
US7133940B2 (en) * 1997-10-14 2006-11-07 Alacritech, Inc. Network interface device employing a DMA command queue
US7076568B2 (en) * 1997-10-14 2006-07-11 Alacritech, Inc. Data communication apparatus for computer intelligent network interface card which transfers data between a network and a storage device according designated uniform datagram protocol socket
US6226680B1 (en) * 1997-10-14 2001-05-01 Alacritech, Inc. Intelligent network interface system method for protocol processing
US6151662A (en) 1997-12-02 2000-11-21 Advanced Micro Devices, Inc. Data transaction typing for improved caching and prefetching characteristics
US6202129B1 (en) 1998-03-31 2001-03-13 Intel Corporation Shared cache structure for temporal and non-temporal information using indicative bits
US6098064A (en) 1998-05-22 2000-08-01 Xerox Corporation Prefetching and caching documents according to probability ranked need S list
US6064626A (en) * 1998-07-31 2000-05-16 Arm Limited Peripheral buses for integrated circuit
US6215497B1 (en) 1998-08-12 2001-04-10 Monolithic System Technology, Inc. Method and apparatus for maximizing the random access bandwidth of a multi-bank DRAM in a computer graphics system
US6223239B1 (en) * 1998-08-12 2001-04-24 Compaq Computer Corporation Dual purpose apparatus, method and system for accelerated graphics port or system area network interface
US6272522B1 (en) 1998-11-17 2001-08-07 Sun Microsystems, Incorporated Computer data packet switching and load balancing system using a general-purpose multiprocessor architecture
US6480489B1 (en) 1999-03-01 2002-11-12 Sun Microsystems, Inc. Method and apparatus for data re-assembly with a high performance network interface
US6269427B1 (en) 1999-03-18 2001-07-31 International Business Machines Corporation Multiple load miss handling in a cache memory system
US6332179B1 (en) 1999-08-19 2001-12-18 International Business Machines Corporation Allocation for back-to-back misses in a directory based cache
US6496199B1 (en) * 1999-10-01 2002-12-17 Koninklijke Philips Electronics N.V. Method for storing and retrieving data that conserves memory bandwidth
US6349365B1 (en) 1999-10-08 2002-02-19 Advanced Micro Devices, Inc. User-prioritized cache replacement
US6438651B1 (en) 1999-11-01 2002-08-20 International Business Machines Corporation Method, system, and program for managing requests to a cache using flags to queue and dequeue data in a buffer
US6262594B1 (en) 1999-11-05 2001-07-17 Ati International, Srl Apparatus and method for configurable use of groups of pads of a system on chip
US6484224B1 (en) * 1999-11-29 2002-11-19 Cisco Technology Inc. Multi-interface symmetric multiprocessor
US6636906B1 (en) * 2000-04-28 2003-10-21 Hewlett-Packard Development Company, L.P. Apparatus and method for ensuring forward progress in coherent I/O systems
US6636947B1 (en) * 2000-08-24 2003-10-21 International Business Machines Corporation Coherency for DMA read cached data
US6633967B1 (en) * 2000-08-31 2003-10-14 Hewlett-Packard Development Company, L.P. Coherent translation look-aside buffer
US6633936B1 (en) * 2000-09-26 2003-10-14 Broadcom Corporation Adaptive retry mechanism
US6981087B1 (en) * 2001-01-02 2005-12-27 Juniper Networks, Inc. Multi-master and diverse serial bus in a complex electrical system
US6766389B2 (en) 2001-05-18 2004-07-20 Broadcom Corporation System on a chip for networking
US6574708B2 (en) 2001-05-18 2003-06-03 Broadcom Corporation Source controlled cache allocation

Also Published As

Publication number Publication date
US20100100681A1 (en) 2010-04-22
US20080276018A1 (en) 2008-11-06
EP1260910A2 (de) 2002-11-27
EP1260910B1 (de) 2006-10-18
US7418534B2 (en) 2008-08-26
US20050027911A1 (en) 2005-02-03
EP1260910A3 (de) 2005-09-07
US6766389B2 (en) 2004-07-20
US7991922B2 (en) 2011-08-02
US7660931B2 (en) 2010-02-09
US20020174253A1 (en) 2002-11-21
DE60215417D1 (de) 2006-11-30

Similar Documents

Publication Publication Date Title
DE60215417T2 (de) Netzwerkschaltung
DE60217221T2 (de) Ein-Chip System zur Paketverarbeitung
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
DE69727856T2 (de) Multiprozessorsystem mit Konsistenzfehler-Registrierung mit entsprechendem Verfahren
DE69722079T2 (de) Ein Mehrrechnersystem mit Anordnung zum Durchführen von Blockkopieroperationen
DE60222219T2 (de) Interne Cache-Speicherblockausräumung mit externer Anforderung
DE69729243T2 (de) Multiprozessorsystem mit Vorrichtung zur Optimierung von Spin-Lock-Operationen
DE10262164B4 (de) Computersystem mit einer hierarchischen Cacheanordnung
DE112013002069B4 (de) Hohes Leistungsverbindungskohärenz-Protokoll
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
DE69531933T2 (de) Busarchitektur in hochgradiger pipeline-ausführung
DE102009032076B4 (de) Erfüllung von Speicherordnungsanforderungen zwischen Teillesevorgängen und Nicht-Snoop-Zugriffen
DE19580990C2 (de) Verfahren und Einrichtung zum Ausführen verzögerter Transaktionen
DE19782177B4 (de) Verfahren zur Durchführung von TLB-Shootdown-Operationen in einem Multiprozessorsystem
DE112013000889B4 (de) Weiterleitungsfortschritts-Mechanismus für Speichervorgänge bei Vorhandensein von Ladekonflikten in einem Ladevorgänge begünstigenden System
DE19506734A1 (de) Computersystem und Verfahren zum Aufrechterhalten der Speicherkonsistenz in einer Busanforderungswarteschlange
DE112005002328T5 (de) Cachespeicherungsunterstützung für Direktspeicherzugriffsadreßübersetzung
DE102007030116A1 (de) Snoop-Filter mit ausschließlicher Inhaberschaft
DE112006002237T5 (de) Verfahren zur selbstinitiierenden Synchronisierung in einem Computersystem
DE112012004551T5 (de) Mehrkernverknüpfung in einem Netzprozessor
DE112007000645B4 (de) Dynamisch aktualisierbarer, adaptiver Leerlauf-Zeitgeber
DE202010018020U1 (de) Opportunistische Verbesserung einer MMIO-Anfrageabwicklung aufgrund eines Zielberichts von Raumerfordernissen
DE60026068T2 (de) System für externe transaktionen mit dynamischen prioritäten
DE10219621A1 (de) Schnelle Prioritätsbestimmungsschaltung mit rotierender Priorität

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