-
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 12A–12B,
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 22A–22I.
Das System 10 kann außerdem
einen Bus 24 zum vermittelnden Verbinden der verschiedenen
Komponenten des Systems umfassen. Gemäß 1 ist jeder
der Prozessoren 12A–12B,
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 12A–12B, 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 22A–22B 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 22C–22I gekoppelt
(in der veranschaulichten Ausführungsform
speziell mit drei Netzwerk-Schnittstellenschaltungen 22C–22E, zwei
seriellen Schnittstellenschaltungen 22F–22G, 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 12A–12B 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 12A–12B 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 12A–12B auch
interne Level-1-Caches („L1" = primär zwischenspeichernde
Arbeitsspeicher) einsetzen können.
Wenn in den Prozessoren 12A–12B keine primäre Arbeitsspeicher
[L1] enthalten sind, kann auch der L2-Cache 14 als L1-Cache
fungieren. Wenn des Weiteren in den Prozessoren 12A–12B 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 22A–22I 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 22A–22I 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 20A–20B 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 22C–22B 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 20A–20B generell
sowohl eine oder mehrere E/A-Schnittstellenschaltungen als auch
anderweitige E/A-Vorrichtungen verbinden. Die E/A-Brücken 20A–20B dienen
zum Reduzieren der elektrischen Ladung im System-Bus 24,
falls über
diese E/A-Brücke
mehr als eine E/A-Schnittstellenschaltung 22A–22I überbrückt wird.
Normalerweise führt
die E/A-Brücke 20A im
Auftrag der E/A-Schnittstellenschaltungen 22A–22B die
Transaktionen des Busses 24 aus und gibt die Transaktionen,
die aus dem Bus 24 für
eine E/A-Schnittstellenschaltung 22A–22B bestimmt sind,
an die diesbezügliche
E/A-Schnittstellenschaltung 22A–22B weiter. Ebenso
führt die E/A-Brücke 20B normalerweise
im Auftrag der E/A-Schnittstellenschaltungen 22C–22I 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 22C–22I 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 22C–22E Ethernet-Medienzugriffskontrollierer
(Media-Access-Controller bzw. MACs). Daher können die Netzwerk-Schnittstellenschaltungen 22C–22E 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 22C–22E als
zwei erweiterte Datenpaket-Schnittstellen (d.h. als 16-Bit-Schnittstellen, wenn
die einzelnen MII/GMII-Schnittstellen je 8 Bit aufweisen). Die Netzwerk-Schnittstellenschaltungen 22C–22E können so
konfiguriert werden (d.h. während
eines Resets), dass die Schnittstelle in einer von den vorgenannten
Betriebsmoden operiert. Die Netzwerk-Schnittstellenschaltungen 22C–22E 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 12A–12B,
der L2-Cache 14, die Speichersteuereinheit 16,
die E/A-Schnittstellenschaltungen 22A–22B, die E/A-Brücken 20A–20B 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 22A–22I so veranschaulicht,
dass sie über
die E/A-Brücken 20A–20B 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 20A–20B),
eine E/A-Schnittstellenschaltung (d.h. die E/A-Schnittstellenschaltungen 22A–22I)
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 12A–12B 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 22A–22C 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 22A–22C 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 22A–22C 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 12A–12B (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 20A–20B 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 4–7 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 20A–20B Daten
temporär
cachen, wenn eine E/A-Schnittstelle 22A–22I,
die mit der diesbezüglichen
E/A-Brücke 20A–20B 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 20A–20B 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 20A–20B 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 62A–62C.
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 62A–62C 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 62A–62C 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 62A–62B 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 22A–22I 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 12A–12B,
den L2-Cache 14, die Speichersteuereinheit 16,
und/oder die E/A-Bücken 20A–20B),
Bereiche eines Agenten, d.h. Anforderungswarteschlangen, Lesemodifizierungsschreib-Warteschlangen,
Steuer schaltkreise etc. in den E/A-Brücken, E/A-Schnittstellenschaltungen 22A–22I,
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.