-
Die
vorliegende Erfindung betrifft das Gebiet der Computersysteme. Im
Besonderen betrifft die vorliegende Erfindung das Gebiet der Detektierungsvorrichtungen,
die mit einer Hub- bzw. Verteilerschnittstelle in einem Computersystem
gekoppelt sind.
-
STAND DER
TECHNIK
-
Frühere Systeme
basieren für
gewöhnlich
auf Standardbussen wie etwa dem Peripheral Component Inteconnect
(PCI) Bus gemäß der Specification
Revision 2.1, entwickelt von der PCI Special Interest Group, Portland,
Oregon, USA, der eine Kommunikation zwischen Chipsatzkomponenten
eines Computersystems ermöglicht.
Zum Beispiel kann eine von einem Prozessor stammende Transaktion,
die für
ein Plattenlaufwerk gedacht ist, zuerst einer ersten Chipsatzkomponente
zugeführt
werden, die als Intermediär
zwischen dem Prozessorbus und einem PCI-Bus fungiert. Die erste
Chipsatzkomponente stellt die Transaktion in der Folge über den
PCI-Bus an eine zweite System-Chipsatzkomponente
zu, welche die Transaktion danach an das Plattenlaufwerk weiterleitet.
-
Busse,
wie etwa der PCI-Bus, sorgen für
die Kommunikation mit anderen Bausteinen bzw. Vorrichtungen von
Computersystemen, wie etwa mit Grafiksteuereinheiten und Netzwerkadaptern.
Da Busse wie der PCI-Bus eine Schnittstelle zwischen einer Vielzahl
von Komponentenarten vorsehen müssen,
die jeweils verschiedenartige Anforderungen aufweisen, sind die
Busse nicht unbedingt dahingehend optimiert, dass sie eine Kommunikation
zwischen Chipsatz-Komponenten ermöglichen. Hersteller von Chipsätzen, die
auf Standardbusse bzw. genormte Busse wie etwa den PCI-Bus setzen,
müssen
ferner die Busstandards erfüllen,
um die Kompatibilität
mit anderen Komponenten zu gewährleisten,
und wobei sie nicht die Freiheit besitzen, in Bezug auf die Art
und Weise der Kommunikation der Chipsatz-Komponenten untereinander
wesentlichen Änderungen
vorzunehmen.
-
Ein
weiterer Aspekt, mit dem Hersteller von Chipsatz-Komponenten in Bezug auf die Entwicklung
und Produktion von Chipsatz-Komponentenkonfrontiert sind, wie etwa
gemäß der allgemeinen
Offenbarung in dem U.S. Patent US-A-5.675.813, ist die Notwendigkeit,
bei der Verwendung von Bussen wie etwa dem PCI-Bus zur Kommunikation
zwischen Chipsatz-Komponenten standardisierten Speise- und Signalisierungsspannungen
zu entsprechen, wodurch die Hersteller auf bestimmte Entwicklungspraktiken
und Fertigungstechnologien festgelegt sind. Somit wäre es wünschenswert,
eine flexible Punkt-zu-Punkt-Schnittstelle
vorzusehen, die eine optimale Kommunikation zwischen Chipsatz-Komponenten
vorsieht. Darüber
hinaus wäre
ein Mechanismus zur Initialisierung einer derartigen Schnittstelle
wünschenswert,
wobei das Vorhandensein eines mit dem Chipsatz gekoppelten Bausteins über die
Schnittstelle festgestellt wird. Ferner wäre es vorteilhaft, Bausteinidentifikationsnummern
zuzuweisen, wenn ein Baustein detektiert wird, so dass ein Prozessor
die Bausteine abrufen und lesen kann.
-
ZUSAMMENFASSUNG
DER ERFINDUNG
-
Vorgesehen
ist gemäß der vorliegenden
Erfindung ein Computersystem gemäß dem gegenständlichen
Anspruch 1. Weitere Ausführungsbeispiele
der vorliegenden Erfindung sind in den anhängigen Unteransprüchen ausgeführt.
-
KURZE BESCHREIBUNG
DER ZEICHNUNGEN
-
Die
vorliegende Erfindung wird in den Abbildungen der beigefügten Zeichnungen
beispielhaft und ohne einzuschränken veranschaulicht,
wobei übereinstimmende
Elemente darin mit den gleichen Bezugsziffern bezeichnet sind. In
den Zeichnungen zeigen:
-
1 ein
Blockdiagramm eines Ausführungsbeispiels
eines Computersystems;
-
2 ein
Blockdiagramm eines Ausführungsbeispiels
von über
eine Verteilerschnittstelle verbundenen Agenten;
-
3 ein
Blockdiagramm eines Ausführungsbeispiels
eines Anwesenheitsdetektierungsmechanismus;
-
4 ein
Flussdiagramm eines Ausführungsbeispiels
der Initialisierung einer Verteilerschnittstelle;
-
5 ein
Zeitsteuerungsdiagramm einer Split-Transaction, die durch ein Ausführungsbeispiel
einer Schnittstelle implementiert wird;
-
6 ein
Zeitsteuerungsdiagramm der Arbitrierung und Übertragung von Datenpaketen
gemäß einem Ausführungsbeispiel;
-
7 ein
Zeitsteuerungsdiagramm der Flusssteuerung von Datenpaketen gemäß einem
Ausführungsbeispiel;
-
8 ein
Flussdiagramm, welches die Schritte der Reaktion auf Flusssteuerungsoperationen
gemäß einem
Ausführungsbeispiel
beschreibt;
-
9 die
physikalische Signalschnittstelle gemäß einem Ausführungsbeispiel;
und
-
10 ein
Zeitsteuerungsdiagramm der Quellen-synchronen Taktung gemäß einem
Ausführungsbeispiel.
-
GENAUE BESCHREIBUNG
DER ERFINDUNG
-
Beschrieben
werden ein Verfahren und eine Vorrichtung zur Initialisierung einer
Hub- bzw. einer Verteilerschnittstelle. In der folgenden genauen
Beschreibung der vorliegenden Erfindung werden zahlreiche spezifische
Einzelheiten ausgeführt,
um ein umfassendes Verständnis
der vorliegenden Erfindung zu vermitteln. Für den Fachmann auf dem Gebiet
ist es jedoch offensichtlich, dass die vorliegende Erfindung auch
ohne die spezifischen Einzelheiten ausgeführt werden kann. In anderen
Fällen
sind allgemein bekannte Strukturen und Bausteine bzw. Vorrichtungen
in Blockdiagrammform und nicht im Detail dargestellt, um die vorliegende
Erfindung nicht unnötig
zu verschleiern.
-
Bestimmte
Abschnitte der folgenden genauen Beschreibung sind als Algorithmen
und symbolische Darstellungen der Operationen an Datenbits in einem
Computerspeicher vorgesehen. Diese algorithmischen Beschreibungen
und Darstellungen werden von Fachleuten auf dem Gebiet der Datenverarbeitung
eingesetzt, um den Kern der eigenen Arbeiten anderen Fachleuten
auf dem Gebiet zu vermitteln. Als Algorithmus gilt hierin und allgemein
eine in sich widerspruchsfreie Schrittfolge, die zu einem gewünschten
Ergebnis führt.
Die Schritte erfordern physikalische Manipulationen physikalischer
Größen. Für gewöhnlich jedoch
nicht unbedingt sind diese Größen in Form
von elektrischen oder magnetischen Signalen vorgesehen, die gespeichert, übertragen, verknüpft, verglichen
und anderweitig behandelt werden können. Überwiegend aus Gründen des
allgemeinen Gebrauchs hat es sich zeitweise als praktisch erwiesen,
diese Signale als Bits, Werte, Elemente, Symbole, Zeichen, Terme,
Ziffern oder dergleichen zu bezeichnen.
-
Hiermit
wird jedoch festgestellt, dass all diese und ähnliche Begriffe den entsprechenden
physikalischen Größen zugeordnet
werden müssen
und lediglich praktische Bezeichnungen für diese Größen darstellen. Sofern hierin
in der Folge keine anders lautenden Angaben gemacht werden, wird
hiermit festgestellt, dass in der vorliegenden Erfindung Erwähnungen
der Begriffe wie "verarbeiten" oder "berechnen" oder "errechnen" oder "bestimmen" oder "anzeigen" oder dergleichen
die Handlung bzw. Aktion und die Prozesse eines Computersystems
oder einer ähnlichen
elektronischen Rechenvorrichtung betreffen, die Daten behandelt
und transformiert, die als physikalische (elektronische) Größen in den
Registern und Speicherndes Computersystems dargstellt sind, und
zwar in andere Daten, die in ähnlicher
Weise als physikalische Größen in den
Speichern oder Registern des Computersystems oder anderen derartigen
Informationsspeicher-, Übertragungs- oder
Anzeigevorrichtungen dargestellt werden.
-
Die
vorliegende Erfindung betrifft ferner eine Vorrichtung zur Ausführung der
hierin genannten Operationen. Die Vorrichtung kann speziell für die erforderlichen
Zwecke konstruiert sein oder einen Allzweckcomputer umfassen, der
selektiv durch ein in dem Computer gespeichertes Computerprogramm
aktiviert oder neu konfiguriert wird. Ein derartiges Computerprogramm
kann in einem Computer lesbaren Speichermedium gespeichert werden,
wie zum Beispiel unter anderem auf jeder Art von Plattenspeicher,
wie etwa Floppy-Disks, optischen Disks, CD-ROMs und magnetooptischen
Disks, Nur-Lese-Speichern (ROMs), Direktzugriffsspeichern (RAMs),
EPROMs, EEPROMs, magnetischen oder optischen Karten oder jeder anderen
Medienart, die sich zum Speichern elektronischer Befehle eignet,
und wobei diese jeweils mit einem Computersystembus gekoppelt sind.
-
Die
hierin präsentierten
Algorithmen und Anzeigen beziehen sich nicht inhärent auf einen speziellen Computer
oder eine sonstige Vorrichtung. In Verbindung mit Programmen gemäß den Lehren
hierin können verschiedene
Allzweckvorrichtungen verwendet werden, wobei es aber auch praktisch
sein kann, mehrere spezielle Vorrichtungen zur Ausführung der
erforderlichen Verfahrensschritte zu gestalten. Die erforderliche Struktur
für eine
Vielzahl dieser Vorrichtungen wird aus der folgenden Beschreibung
deutlich. Darüber
hinaus wird die vorliegende Erfindung nicht in Bezug auf eine bestimmte
Programmiersprache beschrieben. Hiermit wird festgestellt, dass
eine Vielzahl von Programmiersprachen zur Implementierung der hierin
beschriebenen Lehren verwendet werden kann.
-
Die
Programme, die ausführbare
Anweisungen aufweisen, können
durch eine oder mehrere Programmiervorrichtungen (z.B. eine Zentraleinheit
(CPU), einen Prozessor, eine Steuereinheit, etc.) in einem oder mehreren
Personalcomputer-, Server-, Workstation- und anderen Systemen ausgeführt werden.
-
Die
Abbildung aus 1 zeigt ein Blockdiagramm eines
Ausführungsbeispiels
eines Computersystems 100. Das Computersystem 100 weist
eine mit dem Bus 105 gekoppelte Zentraleinheit (CPU) 102 auf.
In einem Ausführungsbeispiel
handelt es sich bei der CPU 102 um einen Prozessor der
Pentium® Prozessorfamilie,
einschließlich
der Pentium® II
Prozessorfamilie und der Pentium® III
Prozessoren, die von der Intel Corporation, Santa Clara, Kalifornien,
USA, erhältlich
sind. Alternativ können
auch andere CPUs verwendet werden.
-
Ferner
ist ein Speichersteuereinheits-Hub (MCH) 110 mit dem Bus 105 gekoppelt.
Der MCH 110 kann eine Speichersteuereinheit 112 aufweisen,
die mit einem Hauptsystemspeicher 115 gekoppelt ist. Der
Hauptsystemspeicher 115 speichert Datensequenzen der Anweisungen,
die von der CPU 102 oder einer anderen Vorrichtung in dem
System 100 ausgeführt
werden. In einem Ausführungsbeispiel
weist der Hauptsystemspeicher 115 einen dynamischen Direktzugriffsspeicher
(DRAM) auf, wobei der Hauptsystemspeicher 115 jedoch auch
unter Verwendung anderer Speicherarten implementiert werden kann.
Zusätzliche
Bausteine können ebenfalls
mit dem Bus 105 gekoppelt werden, wie zum Beispiel mehrere
CPUs und/oder mehrere Systemspeicher.
-
Der
MCH 110 kann auch eine mit einem Grafikbeschleuniger 130 gekoppelte
Grafikschnittstelle 113 aufweisen. In einem Ausführungsbeispiel
ist die Grafikschnittstelle 113 über einen Accelerated Graphics
Port (AGP) mit einem Grafikbeschleuniger 130 gekoppelt,
wobei der Port gemäß einer
AGP Specification Revision 2.0 Schnittstelle arbeitet, die von der
Intel Corporation, Santa Clara, Kalifornien, USA, entwickelt worden
ist. In weiteren Ausführungsbeispielen
kann die Grafikschnittstelle 113 unter Verwendung einer
Hub-Schnittstellensteuereinheit 120 implementiert
werden, die mit einem Grafikbeschleuniger 130 gekoppelt
ist.
-
Der
MCH 110 kann ferner eine Hub-Schnittstelle 120 aufweisen,
die mit einer Brücke 125 gekoppelt ist.
Die Brücke 125 kann
eine Schnittstelle zwischen dem MCH 110 und einem Systembus
vorsehen. Die Brücke
ist über
die Hub-Schnittstelle A mit dem MCH 110 gekoppelt. Ferner
ist der MCH 110 über
die Hub-Schnittstelle
B mit einem Ein-/Ausgabe-Steuerungs-Hub (ICH) 140 gekoppelt.
Der ICH 140 sieht eine Schnittstelle zu den Ein-/Ausgabe-Bausteinen
(E/A-Bausteine) in dem Computersystem 100 vor. Der ICH 140 kann
eine oder mehrere Schnittstellen-Steuereinheiten
aufweisen. Zum Beispiel kann eine Schnittstellen-Steuereinheit 120 über die
Hub-Schnittstelle C mit einer Netzwerkschnittstelle 160 verbunden
werden. Darüber
hinaus kann eine weitere Schnittstellen-Steuereinheit 120 mit
einem Faserkanal 165 gekoppelt werden.
-
Über eine
Hub-Schnittstelle miteinander gekoppelte Bausteine bzw. Vorrichtungen
können
als Hub-Agenten bezeichnet werden. Ein Hub-Agent, der in einem Computersystem 100 in
Bezug auf die Bewegungsdistanz näher
an der CPU 102 positionierter Hub-Agent kann als ein oberhalb liegender
bzw. Upstream-Agent bezeichnet werden, während ein weiter von der CPU 102 entfernter
Agent als unterhalb liegender bzw. Downstream-Agent bezeichnet wird.
Die Brücke 125 liegt
zum Beispiel unterhalb des MCH 110, während der ICH 140 unterhalb
des MCH 110 liegt, und wobei die Netzwerkschnittstelle 160 und
der Faserkanal 165 Downstream-Agenten in Bezug auf MCH 110 und
ICH 140 sind. Der Durchschnittsfachmann auf dem Gebiet
erkennt allerdings, dass die Hub-Schnittstellen 120 mit
anderen Bausteinen bzw.
-
Vorrichtungen
gekoppelt werden können.
-
Der
ICH 140 kann ferner eine Brücke 146 aufweisen,
die eine herkömmliche
Schnittstelle zu einem PCI-Bus vorsieht. Die Brücke 146 sieht einen
Datenpfad zwischen der CPU 102 und Pexipheriegeräten vor. Zu
den Bausteinen bzw. Vorrichtungen, die mit dem PCI-Bus 142 gekoppelt
werden können,
zählen
eine Audio-Vorrichtung 150 und ein Plattenlaufwerk 155.
Der Durchschnittsfachmann auf dem Gebiet erkennt jedoch, dass auch
andere Vorrichtungen mit dem PCI-Bus 142 gekoppelt werden
können.
Darüber
hinaus erkennt der Durchschnittsfachmann, dass die CPU 102 und
der MCH 110 kombiniert werden können, so dass ein einzelner Chip
gebildet wird. Ferner kann in anderen Ausführungsbeispielen ein Grafikbeschleuniger 140 in
dem MCH 110 vorgesehen sein.
-
Die
Abbildung aus 2 zeigt ein Blockdiagramm eines
Ausführungsbeispiels
einer Hub-Schnittstelle, die einen Upstream-Agenten 220 und
einen Downstream-Agenten 230 koppelt.
-
Eine
Hub-Schnittstelle ist ein Mechanismus zur Verbindung von Hauptbaublöcken der
Kernlogik eines Computersystems, wie etwa des Systems 100, über einen
verhältnismäßig schmalen
Datenpfad mit verhältnismäßig großer Bandbreite.
Zwischen den einzelnen Komponenten in einem Computersystem 100,
wie etwa zwischen dem MCH 110 und der Brücke 125,
wird die Verbindung von Punkt zu Punkt implementiert. Gemäß einem
Ausführungsbeispiel
erfolgt die Informationsübertragung über die
Hub-Schnittstelle unter Verwendung eines Paket-basierten Split-Transaction-Protokolls.
Hub-Schnittstellen werden nachstehend im Text in näheren Einzelheiten
beschrieben.
-
Die
Hub-Schnittstelle weist einen bidirektionalen Datenpfad 251,
ein Stoppsignal, ein Signal Anforderung A (RQA) 254 und
ein Signal Anforderung B (RQB) 258 sowie ein Systemrücksetzsignal 255 auf.
Gemäß einem
Ausführungsbeispiel
ist der Datenpfad acht Bit breit. Die Datenpfadbreite kann jede
Breite aufweisen, die einer Potenz von 2 entspricht. Das Stoppsignal 243 ist
ein für
die Flusssteuerung verwendetes bidirektionales Signal. Das Signal
RQA 254 und das Signal RQB 258 sind Anforderungssignale,
die bei normalem Systembetrieb geltend gemacht werden, um die Steuerung
der Hub-Schnittstelle anzufordern.
-
Darüber hinaus
kann das Signal RQB 258 während einem Zurücksetzen
des Systems verwendet werden, um zu detektieren, ob ein Downstream-Agent 230 tatsächlich mit
einem Upstream-Agent 220 gekoppelt ist.
Die Hub-Schnittstelle kann ferner weitere Signalpfade aufweisen,
wie etwa ein Taktsignal, einen oder mehr Daten-Strobes, die mit
der vierfachen Frequenz des Taktsignals arbeiten, und ein Spannungsreferenzsignal (nicht
abgebildet). Alternativ können
die Daten-Strobes mit einem Vielfachen des Taktsignals als vier
arbeiten. Die Daten-Strobes
können
zum Beispiel eine Rate aufweisen, die achtmal so hoch ist wie die
des Systemtaktsignals.
-
Die
Hub-Schnittstelle ist mit Schnittstellen-Steuereinheiten 120 und 232 in
dem Upstream-Agent 220 und entsprechend dem Downstream-Agent 230 gekoppelt.
Die Schnittstellen-Steuereinheiten 120 und 232 steuern
die Interaktion zwischen den Hub-Schnittstellenagenten. Die Schnittstellen-Steuereinheit 120 weist
ein Anwesenheitsdetektierungsmodul 225 auf, das feststellt,
ob der Downstream-Agent 230 vorhanden ist. Die Schnittstellen-Steuereinheit 232 weist
eine Anwesenheitsbestätigungseinheit 235 auf,
die ein Signal an das Anwesenheitsdetektierungsmodul 225 übermittelt,
wobei das Vorhandensein des Downstream-Agenten 230 bestätigt wird.
Gemäß einem
Ausführungsbeispiel
wird der Anwesenheitsdetektierungsprozess während der Systeminitialisierung
ausgeführt.
Die Systeminitialisierung wird an einer Hub-Schnittstele detektiert,
wenn das Rücksetzsignal 255 deaktiviert
wird.
-
Der
Upstream-Agent 220 weist ferner eine Steuerlogik 228 auf.
Die Steuerlogik 228 empfängt Signale von dem Anwesenheitsdetektierungsmodul 225,
das identifiziert, ob eine Vorrichtung mit dem Upstream-Agenten 220 gekoppelt
ist. Die Steuerlogik 228 speichert ferner eine Zuweisung
einer Vorrichtungsidentifikationsnummer (ID) an den Upstream-Agenten 220.
Die Steuerlogik 228 speichert diese Informationen und spricht auf
die CPU 102 immer an, wenn die CPU 102 die Vorrichtungs-ID
für den
die Steuerlogik 228 aufweisenden Agenten adressiert.
-
Die
Abbildung aus 3 zeigt ein Blockdiagramm eines
Ausführungsbeispiels
des Mechanismus zur Detektierung des Vorhandenseins einer Vorrichtung
zwischen dem Anwesenheitsdetektierungsmodul 225 und der
Anwesenheitsbestätigungseinheit 235.
Das Anwesenheitsdetektierungsmodul 225 und die Anwesenheitsbestätigungseinheit 235 sind über das
Signal RQB 258 gekoppelt. Gemäß einem Ausführungsbeispiel
weisen das Anwesenheitsdetektierungsmodul 225 und die Anwesenheitsbestätigungseinheit 235 die
entsprechenden Widerstände
R1 und R2 auf. R1 ist ein Pull-Up-Widerstand, der mit der Leitungsspannung
VCC gekoppelt ist, während der Widerstand R2 ein
Pull-Down-Widerstand ist, der mit der Erde gekoppelt ist. Ferner
ist der Widerstand R1 mit einem kleinen Widerstand im Vergleich
zu dem Widerstand R2 gestaltet.
-
Während einer
Schnittstelleninitialisierung (d.h. der Deaktivierung des Rücksetzsignals 255) überwacht
die Steuerlogik 228 das Signal RQB 258, um zu
bestimmen, ob ein Downstream-Agent 230 mit dem Upstream-Agent 220 gekoppelt
ist. Gemäß einem
Ausführungsbeispiel
tastet die Steuerlogik 228 das Signal RQB 258 an
einer inaktiv werdenden Flanke einer Zurücksetzung beim Einschalten
ab, um zu bestimmen, ob ein Downstream-Agent vorhanden ist. Wenn
kein Downstream-Agent 230 vorhanden ist, wird das RQB-Signal 258 hoch
gezogen, was dazu führt,
dass ein hoher Logikwert an die Steuerlogik 228 übermittelt
wird. Wenn ein Downstream-Agent 230 detektiert wird, wird
das Signal RQB 258 auf die Erde gezogen, da der Widerstand
R1 im Vergleich zu R2 einen hohen Widerstand aufweist. In der Folge
wird ein niedriger Logikwert an die Steuerlogik 228 übermittelt,
der darstellt, dass der Upstream-Agent 230 vorhanden
ist. Der Durchschnittsfachmann wird erkennen, dass die Widerstände R1 und
R2 durch andere Vorrichtungen bzw. Bausteine ersetzt werden können, wie
zum Beispiel durch Transistoren. Ferner können das Anwesenheitsdetektierungsmodul 225 und die
Anwesenheitsbestätigungseinheit 235 so
konfiguriert werden, dass immer dann ein hoher Logikwert übermittelt
wird, wenn eine Vorrichtung detektiert wird, und wobei ein niedriger
Logikwert übermittelt
wird, wenn keine Vorrichtung vorhanden ist.
-
Nach
der Systeminitialisierung ruft die CPU 102 die Steuerlogik 228 in
jedem Upstream-Agenten 220 ab, um zu bestimmen, ob ein
Downstream-Agent 230 mit jedem speziellen Upstream-Agenten 220 gekoppelt ist.
Wenn kein Agent detektiert wird, spricht die Steuerlogik 228 nicht
auf die Abfrageanforderung der CPU 102 an. Wenn ferner
keine Vorrichtung an dem Upstream-Agenten 220 detektiert
wird, verwaltet die CPU 102 den Upstream-Agenten 220 als
würde dieser
nicht existieren. Wenn ein Downstream-Agent 230 detektiert
wird, empfängt
die CPU 102 eine Antwort von dem Upstream-Agenten und ruft
in der Folge den Downstream-Agenten ab.
-
Gemäß einem
Ausführungsbeispiel
werden allen Komponenten in einem Computersystem 100 bei
der Konfiguration Vorrichtungs-ID-Nummern
zugewiesen. Zusätzlich
sind die Komponenten-Vorrichtungs-ID-Nummern
auf MCH 110 und ICH 140 aufgeteilt. Zum Beispiel
können
Komponenten in dem MCH 110 die Vorrichtungs-ID-Nummern
zwischen 0 und 7 zugewiesen werden, während den Komponenten in dem
ICH 140 die Vorrichtungs-ID-Nummern zwischen 8 und 31 zugewiesen
werden. Wenn ein Upstream-Agent 220 ferner logische interne
Bausteine bzw. Vorrichtungen auf den Downstream-Agenten abbildet,
verwendet der Upstream-Agent 220 die Vorrichtungs-ID-Nummern
16–31
für alle
internen Vorrichtungen, die auf den Downstream-Agenten abgebildet
werden.
-
Die
Abbildung aus 4 ist ein Flussdiagramm für ein Ausführungsbeispiel
der Einleitung der Hub-Schnittstelle 120 (z.B. des Upstream-Agenten 220).
In dem Verfahrensblock 410 wird eine Hub-Schnittstelle
nach einem Zurücksetzen
des Computersystems 100 beim Einschalten zurückgesetzt.
In dem Verfahrensschritt 420 tastet der Upstream-Agent 220 das
RQB-Signal 258 ab,
um zu bestimmen, ob ein Downstream-Agent mit der Hub-Schnittstelle
gekoppelt ist. In dem Verfahrensblock 430 wird ein Signal
an die Steuerlogik 228 übermittelt,
das anzeigt, ob ein Downstream-Agent detektiert worden ist. In dem Verfahrensblock 434 wird
bestimmt, ob ein Downstream-Agent durch den Upstream-Agenten 220 detektiert
worden ist. Wenn eine Downstream-Vorrichtung nicht detektiert worden
ist, deaktiviert der Upstream-Agent in dem Verfahrensblock 436 die
Hub-Schnittstelle.
-
In
dem Verfahrensblock 440 ruft die CPU 102 den Upstream-Agenten 220 ab.
In dem Verfahrensblock 450 wird bestimmt, ob die CPU 102 eine
Abrufantwort von dem Upstream-Agenten 220 empfängt. Wenn
die CPU 102 eine Antwort von dem Upstream-Agenten 220 empfängt, ruft
die CPU 102 in dem Verfahrensblock 460 den Downstream-Agenten 230 ab.
Wenn bestimmt worden ist, dass kein Downstream-Agent mit dem Upstream-Agenten 220 gekoppelt
ist, spricht die Steuerlogik 228 in dem Verfahrensblock 470 nicht
auf die Abrufanforderung der CPU 102 an, da die Hub-Schnittstelle
deaktiviert ist. Folglich wird der Upstream-Agent 220 für die CPU 102 und
das Computersystem 100 unsichtbar.
-
In
erneutem Bezug auf die Abbildung aus 2 sehen
die Hub-Agenten
eine zentrale Verbindung zwischen zwei oder mehr einzelnen Bussen
und/oder anderen Arten von Kommunikationsleitungen vor. Durch die Verwendung
der Hub-Schnittstelle
für die
Verbindung zwischen dem MCH 110 und dem ICH 140 wird
ein verbesserter Zugang zwischen den E/A-Komponenten und dem CPU-/Speicher-Teilsystem
vorgesehen (z.B. eine höhere
Bandbreite, Protokollunabhängigkeit
und geringere Latenz). Darüber
hinaus kann die Hub-Schnittstelle auch die Skalierbarkeit eines
Computersystems verbessern (z.B. eine Erweiterung von einer Basis-Desktopplattform
auf hoch entwickelte Desktopplattformen oder eine Workstationplattform),
indem ein Backbone für E/A-Baublöcke vorgesehen
wird.
-
Um
die verbesserte Schnittstelle vorzusehen, weist die Hub-Schnittstelle ein
oder mehrere eindeutige bzw. einzigartige Merkmale auf. In einem
Ausführungsbeispiel
werden Transaktionen unter Verwendung eines Paket-basierten Split-Transaction-Protokolls über die
Hub-Schnittstelle übertragen.
Zum Beispiel wird für
den Start bzw. den Beginn einer Transaktion ein Anforderungspaket
(Request Packet) verwendet, und wobei in der Folge ein separates
Durchführungspaket
(Completion Packet) zur Beendigung einer Transaktion verwendet werden
kann, sofern dies erforderlich ist.
-
Die
Abbildung aus 5 veranschaulicht ein Beispiel
für eine
Split-Transaction über
die Hub-Schnittstelle. Gemäß der Abbildung
aus 5 erlangt ein Hub-Agent anfänglich die Herrschaft über die
Hub-Schnittstelle durch Arbitrierung 502. Auf die Arbitrierung
erfolgt eine Anforderungsphase 504. Bei Bedarf (z.B. im
Fall der Rückführung von
Daten für
eine Lesetransaktion) folgt auf die Anforderungsphase eine Durchführungsphase 508.
Vor der Durchführungsphase
führt der
antwortende Hub-Agent zuerst allerdings eine Arbitrierung 506 um
die Herrschaft über
die Hub-Schnittstelle durch.
-
Zwischen
der Zeit des Übermittelns
eines Anforderungspakets und eines entsprechenden Durchführungspakets über die
Hub-Schnittstelle
können
einzelne nicht miteinander in Verbindung stehende Pakete gemäß vorbestimmten
Anordnungsregeln über
die Hub-Schnittstelle übermittelt
werden, wie dies nachstehend im Text näher beschrieben wird. Bei einer
Leseanforderung von einem Peripheriegerät an einen Speicher kann das
Vorsehen der angeforderten Daten zum Beispiel mehrere Taktzyklen
in Anspruch nehmen, bis die Daten bereit stehen, um in einem Durchführungspaket
zurückgeführt zu werden.
Während
der Zeit, die erforderlich ist, um die angeforderten Daten zu erhalten,
können
separate, nicht im Verhältnis
zueinander stehende Durchführungs-
und/oder Anforderungspakete, die in einer Warteschlange/Pipe des
MCH 110 warten, an den ICH 140 übertragen
werden.
-
Gemäß der Abbildung
aus 5 wird jede Anforderung oder Durchführung ferner
als ein Paket über die
Schnittstelle übertragen.
Bei Schreibtransaktionen sind Daten der Anforderung zugeordnet.
Bei Lesetransaktionen sind Daten der Durchführung zugeordnet. In einigen
Fällen
existiert mehr als eine Durchführung
für eine
Anforderung, wenn das Durchführungspaket
nicht verbunden ist, wobei es wirksam in mehrere Durchführungspakete
aufgeteilt wird.
-
In
einem Ausführungsbeispiel
verwendet die Hub-Schnittstelle ferner Transaktionsdeskriptoren
für ein Routing
des Verkehrs an der Hub-Schnittstelle sowie zur Identifikation der
Attribute einer Transaktion. Zum Beispiel können die Deskriptoren verwendet
werden, um eine Transaktion als isochron oder asynchron zu definieren,
die als Folge gemäß einem
vordefinierten Protokoll behandelt werden kann.
-
In
einem Ausführungsbeispiel
wird die Bandbreite ferner teilweise dadurch erhöht, dass die Datenpakete über einen
Quellen-synchronen Taktmodus übermittelt
werden. In einem Ausführungsbeispiel
sieht die Hub-Schnittstelle ferner die höhere Bandbreite trotz der Verwendung
einer schmalen Verbindung vor (z.B. weniger Stifte/Anschlussflächen).
-
In
alternativen Ausführungsbeispielen
kann eine Hub-Schnittstelle
jedoch mit weniger als allen eindeutigen Merkmalen gemäß den vorstehenden
Ausführungen
implementiert werden, ohne dabei vom Umfang der vorliegenden Erfindung
abzuweichen. Die Hub-Schnittstelle kann ferner zur Verbindung von
Brücken
und/oder anderen Komponenten in einem Chipsatz oder außerhalb
eines Chipsatzes miteinander verbunden werden.
-
Transaktions-, Protokoll-
und physikalische Schichten
-
Zur
besseren Veranschaulichung wird die Hub-Schnittstelle in drei Abschnitten
beschrieben: einer Transaktionsschicht, einer Protokollschicht und
einer physikalischen Schicht. Die Unterscheidung zwischen den Schichten
bzw. den Ebenen ist allerdings veranschaulichend und nicht einschränkend, so
dass folglich kein spezielles bevorzugtes Ausführungsbeispiel impliziert wird.
-
Transaktionsschicht
-
In
einem Ausführungsbeispiel
der Hub-Schnittstelle unterstützt
die Transaktionsschicht das Routing separater, über die Hub-Schnittstelle übermittelter Transaktionen
(die aus einem oder mehreren Paketen bestehen können). In einem Ausführungsbeispiel
erzeugt die Transaktionsschicht der Hub-Schnittstelle zum Beispiel Transaktionsdeskriptoren,
die in den Anforderungs- und Datenpaketen enthalten sind. Die Transaktionsdeskriptoren
können
zur Unterstützung
der Arbitrierung zwischen Warteschlagen in einem Hub-Agent (z.B. MCH)
verwendet werden und/oder zur Erleichterung des Routings von Anforderungen
und Datenpaketen durch die Hub-Schnittstelle.
-
In
einem Ausführungsbeispiel
unterstützen
die Transaktionsdeskriptoren zum Beispiel das Routing von Durchführungspaketen
zurück
zu dem die Anforderung einleitenden Agenten auf der Basis der anfänglich vorgesehenen
(in einem Anforderungspaket) Routing-Informationen. Die Transaktionsdeskriptoren
unterstützen
ferner die Reduzierung der Paketdecodierungslogik in den Hub-Agenten,
die möglichst
so gering wie möglich
gehalten wird.
-
In
alternativen Ausführungsbeispielen
sehen die Transaktionsdeskriptoren ferner die Fähigkeit zur Unterscheidung
der Behandlung von Anforderungen auf der Basis ihrer entsprechenden
Transaktionsattribute vor. Die in den Transaktionsdeskriptoren identifizierten
Transaktionsattribute können
Operationen zum Beispiel als isochron identifizieren (d.h. Operationen,
die feste Datenmengen regelmäßig bewegen,
wie zum Beispiel Video- oder Audio-Operationen in Echtzeit). Als
Folge dessen können
die Operationen gemäß der Identifikation
durch die Transaktionsattribute gemäß einem entsprechenden vorbestimmten
Routing-Protokoll behandelt werden, um einen bestimmten Operationstyp
zu unterstützten
(z.B. isochron).
-
In
einem Ausführungsbeispiel
weisen die Transaktionsdeskriptoren zwei Felder auf: ein Routing-Feld und
ein Attributfeld. In alternativen Ausführungsbeispielen können mehr
oder weniger Felder verwendet werden, um eine oder mehr. Funktionen
der Transaktionsdeskriptoren vorzusehen.
-
In
einem Ausführungsbeispiel
handelt es sich bei dem Routing-Feld
um ein für
das Paket-Routing verwendetes Feld mit sechs Bit, wie dies unten
in Tabelle 1 dargestellt ist. Die Größe des Routing-Felds sowie des
Attributfelds ist veränderlich.
-
Tabelle
1: Routing-Feld des Transaktionsdeskriptors
-
Wie
dies in Tabelle 1 dargestellt ist, werden drei Bits des Routing-Felds
für die
Hub-ID verwendet, welche den Hub-Agenten identifiziert, der die
Transaktion eingeleitet hat. In alternativen Ausführungsbeispielen können in
dem Routing-Feld zusätzliche
Bits verwendet werden, um eine Hierarchie der Hub-Schnittstelle vorzusehen,
die acht überschreitet.
-
In
einem System können
zum Beispiel mehrere Hub-Schnittstellenhierarchien
existieren, wobei der Agent an der Spitze der Hierarchien in diesem
Fall in der Lage sein sollte, Routing-Durchführungen zurück zu der Basis der Hierarchie
zu führen.
In diesem Zusammenhang umfasst "Hierarchie" mehrere verbundene Hub-Schnittstellensegmente,
die an einem "Wurzel"-Agenten der Hub-Schnittstelle (z.B.
einem MCH) beginnen. Das Computersystem 100 kann zum Beispiel
nur eine Hub-Schnittstellenhierarchie
aufweisen. Die Abbildung aus 1 veranschaulicht
hingegen ein Beispiel für
ein Computersystem 100 auf der Basis einer Mehrzahl von Hub-Schnittstellenhierarchien.
In Ausführungsbeispielen,
die nur eine Hub-Schnittstellenhierarchie implementieren, kann ein
Standardwert von "000" in dem Hub-ID-Feld
verwendet werden.
-
Die
verbleibenden drei Bits des Routing-Felds können zum Identifizieren interner
Pipes/Warteschlangen in einem Hub-Schnittstellen-Agenten verwendet werden.
Zum Beispiel kann der E/A-Steuerungs-Hub internen USB (Universal
Serial Bus) Host-Steuereinheit-Verkehr
und Busmastering-ID (BM-ID) Verkehr über separate "Pipes" unterstützen. Diesbezüglich kann
die Pipe-ID verwendet werden, um dem Servicing-Agenten (z.B. MCH 110)
zu vermitteln, dass durch verschiedene "Pipes" eingeleiteter Verkehr verschiedene
Attribute aufweist und gemäß einem
vorbestimmten Protokoll behandelt werden kann. Wenn ein Hub-Schnittstellen-Agent
keine separaten internen Pipes implementiert, kann ein Standardwert
von "000" in dem Pipe-ID-Feld verwendet werden.
-
In
einem alternativen Ausführungsbeispiel
weisen die Transaktionsdeskriptoren ferner ein Attributfeld auf.
In einem Ausführungsbeispiel
handelt es sich bei dem Attributfeld um einen Wert von drei Bits,
der spezifiziert, wie eine Transaktion zu behandeln ist, wenn sie
von einen Ziel-Hub-Schnittstellen-Agenten
empfangen wird. In bestimmten Fällen
unterstützt
das Attributfeld einem System die Unterstützung anspruchsvoller Anwendungsbelastungen,
wobei dies von der Bewegung abhängig
ist, und wobei die Daten mit bestimmten Anforderungen oder sich
unterscheidenden Eigenschaften verarbeitet werden.
-
Zum
Beispiel kann das Attributfeld die isochrone Datenbewegung zwischen
Vorrichtungen unterstützen,
wie dies von wenigen neu entwickelten externen Bussen verwendet
wird. Derartige Datenbewegungsanforderungen müssen aufrechterhalten werden,
wenn Daten durch die Hub-Schnittstelle zwischen E/A-Bausteinen und
dem CPU-/Speicher-Teilsystem fließen.
-
In
alternativen Ausführungsbeispielen
können
zusätzliche
Transaktionsattribute die Fähigkeit
aufweisen, zwischen "snopped" Verkehr zu unterscheiden,
wobei die Cache-Kohärenz
durch Hardware (d.h. Chipsatz) unterstützt wird, und "nonsnooped" Verkehr, der auf
Software-Mechanismen beruht, um eine Datenkohärenz in dem System zu gewährleisten.
Ein weiteres mögliches
Attribut wäre
ferner ein "explizit
vorab erfassbarer" Hinweis
zur Unterstützung
einer Form des Lese-Cachings
sowie zur Ermöglichung
einer effizienteren Nutzung der Hauptspeicherbandbreite.
-
Anordnungsregeln
-
Die
Transaktionsdeskriptoren können
ferner zur Unterstützung
der Anordnungsregeln zwischen über die
Hub-Schnittstelle übermittelten
Transaktionen verwendet werden. In einem Ausführungsbeispiel werden Transaktionen
mit identischen Transaktionsdeskriptoren zum Beispiel in strikter
Reihenfolge ausgeführt
(d.h. die erste Transaktion wird immer zuerst ausgeführt).
-
Transaktionen
mit dem gleichen Routing-Feld und mit sich unterscheidenden Attributfeldern
können hingegen
im Verhältnis
zueinander neu angeordnet werden. In einem Ausführungsbeispiel müssen isochrone Transaktionen
zum Beispiel in Bezug auf asynchrone Transaktionen nicht strikt
angeordnet werden.
-
In
einem Ausführungsbeispiel
der Hub-Schnittstelle sind zulässig
Datenübermittlungen
zulässig,
um Fortschritt in Bezug auf die Anforderungen zu machen, und zwar
entweder in die gleiche Richtung oder in die entgegengesetzte Richtung.
In eine Richtung verlaufende Lesedurchführungen können Leseanforderungen weiterleiten,
die in die gleiche Richtung fließen. Ferner können Schreibanforderungen
Leseanforderungen weiterleiten, die in die gleiche Richtung fließen.
-
In
alternativen Ausführungsbeispielen
können
die Anordnungsregeln für über die
Hub-Schnittstelle verlaufende Transaktionen hingegen variieren.
In einem Ausführungsbeispiel
implementiert die Hub-Schnittstelle zum Beispiel die Anordnungsregeln,
die in Peripheral Component Interconnect (Revision 2.2) vorgesehen
sind, um den Verkehrsfluss über
die Hub-Schnittstelle in entgegengesetzte Richtungen zu bestimmen.
-
Protokollschicht
-
In
einem Ausführungsbeispiel
verwendet die Hub-Schnittstelle ein Paket-basiertes Protokoll mit
zwei Arten von Paketen: Anforderung und Durchführung. Ein Anforderungspaket
wird für
jede Hub-Schnittstellen-Transaktion verwendet. Durchführungspakete
werden sofern erforderlich zum Beispiel zur Rückführung von Lesedaten oder zur
Bestätigung
einer Durchführung
bestimmter Arten von Schreibtransaktionen verwendet (z.B. E/A-Schreiboperationen
und Speicherschreiboperationen mit angeforderter Durchführung).
Durchführungspakete
werden ihren entsprechenden Anforderungspaketen durch Transaktionsdeskriptoren
und die Anordnung zugeordnet, wie dies vorstehend im Text in dem
Abschnitt zur Transaktionsschicht erörtert worden ist.
-
In
einem Ausführungsbeispiel
verwendet die Hub-Schnittstelle ferner ein Arbitrierungsprotokoll,
das symmetrisch und verteilt ist. Zum Beispiel steuert jeder Hub-Agent
ein Anforderungssignal, das von dem anderen Agenten überwacht
wird, der mit der gleichen Schnittstelle verbunden ist. Ein Einräumungssignal
wird nicht verwendet, und Agenten bestimmen unabhängig die
Herrschaft über
die Schnittstelle.
-
In
einem Ausführungsbeispiel
wird kein explizites Framing- bzw.
Begrenzungssignal verwendet. Es besteht eine implizite Beziehung
zwischen dem Arbitrierungsereignis, das einem Agenten die Herrschaft, über die
Schnittstelle erteilt, und dem Beginn der Übermittlung eines Agenten.
In einem alternativen Ausführungsbeispiel
können
Framing-Signale verwendet werden.
-
Das
Ende der Paketübermittlung
erfolgt, wenn ein Hub-Schnittstellen-Agent,
der die Herrschaft über die
Schnittstelle besitzt (wie z.B. dabei ist, Daten zu übermitteln),
die Steuerung der Schnittstelle freigibt, indem er ein Anforderungssignal
deaktiviert. In einem Ausführungsbeispiel
wird die Flusssteuerung auch unter Verwendung eines STOP Signals
erreicht, um Pakete zu wiederholen oder zu trennen, wie dies nachstehend
im Text näher
beschrieben wird.
-
Paketdefinition
-
In
einem Ausführungsbeispiel
der Hub-Schnittstelle werden Daten mit einer vielfachen Rate (z.B.
1x, 4x, 8x) des Hub-Schnittstellentakts
(HLCK) übertragen,
wobei es sich bei diesem in einem Ausführungsbeispiel um einen gemeinsamen
Takt handelt, der von den Hub-Agenten gemeinsam genutzt wird, die
durch die Hub-Schnittstelle verbunden sind. Die Daten werden über einen
Datensignalpfad (D) der Hub-Schnittstelle übermittelt, mit einer "Schnittstellenbreite" einer bestimmten
Zweierpotenz (z.B. 8, 16, 24, 32). Als Folge dessen kann die Hub-Schnittstelle
variierende Datenübertragungsgranularitäten (d.h. Übertragungsbreiten)
aufweisen, abhängig
von der Übertragungsrate
und der Breite des Datensignalpfads. Zum Beispiel bei einer Schnittstellenbreite
von acht Bit im 4fach-Modus,
entspricht die Übertragungsbreite
32 Bit je HLCK. Als eine Folge dessen kann durch eine Variation
der Transferrate und/oder der Schnittstellenbreite des Datensignalpfads
die Übertragungsbreite
(d.h. die Anzahl der je HCLK übertragenen
Bytes) skaliert werden.
-
In
einem Ausführungsbeispiel
können
die Pakete ferner größer sein
als die Übertragungsbreiten.
Daraus folgt, dass die Pakete in mehreren Abschnitten (d.h. Paketbreiten) übertragen
werden. In einem Ausführungsbeispiel
sind die Pakete in Paketbreiten der Größe von Doppelwörtern (32
Bits) unterteilt.
-
Bei
einer Übertragungsbreite
von 32 Bit werden die Bytes einer Paketbreite an der Schnittstelle
beginnend mit dem wertniedrigsten Byte (Byte 0) und abschließend mit
dem werthöchsten
Byte (Byte 3) dargestellt, wie dies in Tabelle 2 abgebildet ist.
Bei einer Übertragungsbreite
von 64 Bit (z.B. eine Schnittstelle mit einer Breite von sechzehn
Bit im 4fach-Modus)
wird das wertniedrigste Doppelwort (Paketbreite) an den niedrigeren Bytes
des Datensignals übertragen
(z.B. PD[0:7]), und das werthöhere
Doppelwort wird parallel an den oberen Bytes des Datensignals übertragen
(z.B. PD [15:8]). Die beiden Beispiele sind in der folgenden Tabelle
2 dargestellt.
-
Tabelle
2: Anordnung der Byteübermittlung
für Schnittstellenbreiten
von 8 und 16 Bit
-
Die
Protokollschicht der Hub-Schnittstelle ist auch für die Begrenzung
der Daten verantwortlich. Diesbezüglich definieren die durch
die Hub-Schnittstelle implementierten Framing- bzw. Begrenzungsregeln
wie eine oder mehrere Paketbreiten auf eine Gruppe von Übertragungsbreiten
abgebildet werden müssen.
Zur Vereinfachung des Parsing von Paketen in Paketbreiten werden
in einem Ausführungsbeispiel
der Hub-Schnittstelle die drei folgenden Framing-Regeln implementiert:
ein Header-Abschnitt eines Pakets beginnt an dem ersten Byte einer Übertragungsbreite;
ein Datenabschnitt eines Pakets (falls vorhanden) beginnt an dem
ersten Byte einer Übertragungsbreite;
und ein Paket belegt eine integrale Anzahl von Übertragungsbreiten.
-
Etwaige
verfügbare Übertragungsbreiten,
die nicht von einem Paket verbraucht werden, können mit einer unechten Doppelwortübertragung
(DW-Übertragung)
gefüllt
werden, wobei sie von dem empfangenden Hub-Agenten ignoriert werden.
In alternativen Ausführungsbeispielen
können
mehr, weniger und/oder andere Begrenzungsregeln von der Hub-Schnittstelle
verwendet werden.
-
Die
folgenden Tabellen 3 und 4 veranschaulichen Beispiele für die vorstehend
ausgeführten
Begrenzungsregeln für
eine Übertragungsbreite
von 64 Bit.
-
Tabelle
3: Anforderung, die eine 32-Bit-Adressierung verwendet und drei
Datendoppelwörter
verwendet
-
Tabelle
4: Anforderung, die eine 64-Bit-Adressierung verwendet und drei
Datendoppelwörter
verwendet
-
Anforderungspakete
-
Das
Paket-Headerformat für
Anforderungspakete gemäß einem
Ausführungsbeispiel
ist in den folgenden Tabellen 5 und 6 dargestellt. In den in den
Tabellen 5 und 6 abgebildeten Beispielen handelt es sich bei dem
Basis-Header um ein Doppelwort, mit einem erforderlichen zusätzlichen
Doppelwort für
eine 32-Bit-Adressierung und mit zwei zusätzlich erforderlichen Doppelwörtern für den 64-Bit-Adressierungsmodus. Die
Felder der Header gemäß den Tabellen
5 und 6 werden in den folgenden Tabellen beschrieben.
-
In
alternativen Ausführungsbeispielen
der Hub-Schnittstelle können
die in dem Header des Anforderungspakets enthaltenen Felder variieren.
Zum Beispiel kann der Header zusätzliche
Felder, weniger Felder oder andere Felder an Stelle der nachstehend
dargestellten Felder aufweisen. Ferner kann auch die Codierung der
Felder variieren. Tabelle
5: Header-Format des Anforderungspakets für eine 32-Bit-Adressierung
Tabelle
6: Header-Format des Anforderungspakets für eine 64-Bit-Adressierung
Transaktionsdeskriptor | Die
Transaktionsdeskriptor-Routing-
und Attributfelder gemäß der vorstehenden
Beschreibung. |
rq/cp | Mit
einer '0' identifizierte Anforderungspakete
und mit '1' identifizierte Durchführungspakete
an dieser Stelle. |
cr | Durchführung erforderlich
('1') oder keine Durchführung erforderlich
(''0'). |
r/w | Lesen
('0') oder Schreiben
('1'). Dieses Feld zeigt
an, ob Daten in mit einer Durchführung
(Lesen) oder einer Anforderung (Schreiben) enthalten sind. |
Adressformat
(af) | Das
Adressierungsformat ist entweder impliziert ('0') oder
32/64 Bit ('1'). |
Sperre
(Lock bzw. lk) | Kennzeichen
zum Anzeigen, dass die Anforderung Teil einer gesperrten Sequenz
ist. Anforderungen und Durchführungen
in einer gesperrten Sequenz weisen dieses Bit gesetzt auf. Hub-Agenten,
die Sperren nicht erfassen, ignorieren das Kennzeichen und füllen das
Feld mit '0'. |
Datenlänge | Die
Datenlänge
ist in Doppelwörtern
gegeben, die so codiert sind, dass die Anzahl der dargestellten
Doppelwörter
eins über
dieser Anzahl liegt. Somit stellt '000000' ein Doppelwort dar. |
Raum | Dieses
Feld wählt
die Zielraumart für
die Anforderung aus. In einem Ausführungsbeispiel zählen zu
den möglichen
Zielräumen
Speicher ("00") und EA ("01"). |
1.
DW BE | Bytefreigaben
für das
erste Doppelwort jeder Lese- oder Schreibanforderung an Speicher
oder EA. Bytefreigaben sind aktiv niedrig. Wenn nur ein Doppelwort für eine Anforderung
gegeben ist, wird dieses Bytefreigabefeld verwendet. In einem Ausführungsbeispiel
ist es unzulässig,
eine Speicher- oder EA-Lese- oder Schreibanforderung ohne freigegebene
Bytes auszugeben. |
Letzte
DW BE | Bytefreigaben
für das
letzte Doppelwort einer Lese- oder Schreibanforderung. Bytefreigaben
sind aktiv niedrig. Wenn für
eine Anforderung nur ein Doppelwort gegeben ist, muss dieses Feld
inaktiv ("1111") sein. Bytefreigaben
können
nicht zusammenhängend sein
(z.B. "0101"). Das Feld wird
bei speziellen Zyklen nie verwendet, da es das Feld "Spezielle Zykluscodierung" überlappt. |
Adresse
[31:2] | Die
32-Bit-Adresse wird wie bei PCI für den gleichen Zyklustyp erzeugt.
Das Doppelwort ist für
die 32- und 64-Bit-Adressierungsmodi
enthalten (jedoch nicht für den
implizierten Adressierungsmodus. |
Erweiterte
Adresse (ea) | Zeigt
eine 32-Bit-Adressierung ('0') oder eine 64-Bit-Adressierung ('1') an. |
Konfig.typ
(ct) | Dieses
Bit wird nur für
Konfigurationszyklen zum Anzeigen des Typs 0 ('0')
oder des Typs 1 ('1') des Konfigurationstyps
verwendet. Da Konfigurationszyklen immer mit 32-Bit-Adressierung
ausgeführt
werden, wird dieses Bit durch das Bit "Erweiterte Adresse" überlappt. |
Adresse
[63:32] | Obere
Adressbits für
den 64-Bit-Adressierungsmodus. Das Doppelwort ist für den 64-Bit-Adressierungsmodus
enthalten. |
-
Durchführungspakete
-
Die
nachstehende Tabelle 7 zeigt das Header-Format für ein Durchführungspaket
gemäß einem
Ausführungsbeispiel.
In einem Ausführungsbeispiel
handelt es sich bei dem Header um ein Doppelwort. Die Felder der
Header gemäß der Darstellung
in Tabelle 8 werden nach der Tabelle beschrieben.
-
In
alternativen Ausführungsbeispielen
der Hub-Schnittstelle können
die in dem Header für
ein Durchführungspaket
enthaltenen Felder jedoch variieren. Zum Beispiel kann der Header
zusätzliche
Felder, weniger Felder oder andere Felder an Stelle der nachstehend
beschriebenen und abgebildeten Felder aufweisen. Ferner kann auch
die Codierung der Feldervariieren.
Tabelle
7: Header-Format für
ein Durchführungspaket
Transaktionsdeskriptor | Die
Transaktionsdeskriptor-Routing-
und Attributfelder gemäß der vorstehenden
Beschreibung in dem Transaktionsabschnitt. |
rq/cp | Durchführungspakete
sind an dieser Stelle mit eine '1' identifiziert. |
r/w | Lesen
('0') oder Schreiben
('1'). Dieses Feld zeigt
an, ob Daten. in mit einer Durchführung (Lesen) oder einer Anforderung
(Schreiben) enthalten sind. |
Sperre
(Lock bzw. lk) | Kennzeichen
zum Anzeigen, dass die Durchführung Teil
einer gesperrten Sequenz ist. Anforderungen und Durchführungen
in einer gesperrten Sequenz weisen dieses Bit gesetzt auf. Hub-Agenten,
die Sperren nicht erfassen, ignorieren das Kennzeichen und füllen das
Feld mit '0'. |
Datenlänge | Die
Datenlänge
ist in Doppelwörtern
gegeben, die so codiert sind, dass die Anzahl der dargestellten
Doppelwörter
eins über
dieser Anzahl liegt. Somit stellt '000000' ein Doppelwort dar. |
Durchführungsstatus | Zeit
den Durchführungsstat
usunter Verwendung vorbestimmter Werte an. |
Reserviert | Alle
reservierten Bits sind auf '0' gesetzt. |
-
In
einem Ausführungsbeispiel
der Hub-Schnittstelle können
Durchführungen
für Speicherleseoperationen
weniger als die angeforderte vollständige Datenmenge vorsehen,
sofern die ganze Anforderung letztendlich vollständig ausgeführt wird. Durchführungen
von Speicherschreiboperationen können
in ähnlicher
Weise anzeigen, dass weniger als die ganze Anforderung ausgeführt worden
ist. Dies kann erfolgen, um die Latenzvoraussetzung einer bestimmten
Plattform für
eine bestimmte Hub-Schnittstelle zu erfüllen.
-
Darüber hinaus
speichert für
eine Anforderung, die eine vollständige Durchführung voraussetzt,
in einem Ausführungsbeispiel
der Initiator Informationen über
die Anforderung, die in einem Puffer des einleitenden Hub-Agenten
gespeichert werden können.
Diese Informationen können
zum Beispiel den Transaktionsdeskriptor, die Größe des Pakets, den Sperrstatus,
Routing-Informationen, etc. aufweisen. Beim Empfang der Durchführung(en)
gleicht der Initiator ferner die Durchführung(en) mit der entsprechenden
Anforderung ab. Bei mehreren Durchführungen sammelt der Initiator
einen Zählwert
der für
die ursprüngliche
Anforderung ausgeführten
Daten, bis die ursprüngliche
Anforderung vollständig
ausgeführt
ist.
-
Schnittstellen-Arbitrierung
und Paketbegrenzung
-
Wenn
sich die Schnittstelle in einem Ausführungsbeispiel der Hub-Schnittstelle
im Leerlauf befindet, gilt die Geltendmachung einer Anforderung
von einem mit der Schnittstelle verbundenen Hub-Agenten als ein Arbitrierungsereignis.
Der erste anfordernde Agent erlangt die Herrschaft über die
Schnittstelle. Wenn Agenten gleichzeitig die Herrschaft anfordern
und sich die Hub-Schnittstelle im Leerlauf befindet, ist der zuletzt
bearbeitete Hub-Agent erfolgreich. In einem Ausführungsbeispiel verfolgen alle
Hub-Agenten den
zuletzt behandelten Status (z.B. über eine Statusflagge eines
internen Registers). In einem alternativen Ausführungsbeispiel können alternative
Arbitrierungsroutinen verwendet werden.
-
Nachdem
ein Hub-Agent die Kontrolle bzw. die Herrschaft über die Schnittstelle erlangt
hat, bleibt er in Kontrolle über
die Schnittstelle, bis er die Transaktion vollendet hat oder bis
eine zugewiesene zeitliche Bandbreite abgelaufen ist. In einem Ausführungsbeispiel
ist in jedem Hub-Agent zum Beispiel ein Zeitschlitzzähler vorgesehen,
um die Bandbreitenzuweisung zu regeln und um die Verweildauer der
Herrschaft der Schnittstelle eines Agenten zu begrenzen. Die einem
Hub-Agenten zugewiesene
Zeit (d.h. der Zeitschlitzwert) kann sich von dem der Hub-Schnittstellenagenten
unterscheiden oder mit diesen übereinstimmen,
die mit der gleichen Schnittstelle verbunden sind. Der Zeitschlitzzähler beginnt
bei der Erfassung der Herrschaft über die Schnittstelle und zählt Hub-Schnittstellen-Basistaktperioden.
-
In
einem Ausführungsbeispiel
ist jeder Hub-Agent für
die Verwaltung der eigenen Zeitschlitzzuweisung verantwortlich.
In einem Ausführungsbeispiel
kann somit ein Zeitschlitzwert über
ein Hub-Schnittstellen-Befehlsregister für jede Schnittstelle in jedem
Hub-Agenten programmiert werden.
-
Die
Abbildung aus 6 veranschaulicht ein Beispiel
der Arbitrierung für
die Hub-Schnittstelle zwischen dem Hub-Agenten A und dem Hub-Agenten B sowie
die Übertragung
von zwei Paketen. Das Beispiel veranschaulicht die Arbitrierung
aus einem Leerlaufzustand der Schnittstelle, woraufhin die Schnittstelle
in den Leerlauf zurückkehrt.
In dem veranschaulichten Ausführungsbeispiel
verwendet die Schnittstelle einen 4fach-Datenübertragungsmodus mit einem
Datensignalpfad (PD) von acht Bit. In dem in der Abbildung aus 6 veranschaulichten
Beispiel handelt es sich bei dem Agenten A um den zuletzt behandelten
Agenten (MRS). Als Folge dessen macht der Agent A dessen externes
Anforderungssignal (RQA) geltend und tastet den Zustand des Anforderungssignals
(RQB) des Agenten B an der Taktflanke 1 ab (die inaktiv dargestellt
ist), bevor die Paketübermittlung
von der gleichen Flanke beginnt.
-
In
einem Ausführungsbeispiel
existiert eine Verzögerung
um zwei Takte, bevor die übermittelten
Daten (d.h. Daten von dem Agenten A) in dem Empfänger (d.h. dem Agenten B) verfügbar sind,
beginnend von der Taktflanke 3. Das erste Paket besteht aus zwei
Doppelwörtern 602 und 604 und
setzt zwei Basistakte zur Übermittlung
in dem 4fach-Modus voraus. Das zweite Paket sind drei Doppelwörter 606, 608 und 610 und
setzt in dem 4fach-Modus drei Basistakte voraus.
-
Flusssteuerung
-
In
einem Ausführungsbeispiel
können
Pakete durch einen empfangenden Agenten wiederholt oder getrennt
werden, und zwar aufgrund eines fehlenden Anforderungswarteschlangenraums,
Datenpufferraums oder aus anderen Gründen. In einem Ausführungsbeispiel
wird die Flusssteuerung unter Verwendung eines STOP Signals erreicht.
-
Die
Abbildung aus 7 veranschaulicht ein Beispiel
der Nutzung des STOP Signals. Gemäß der Veranschaulichung macht
der Agent A dessen externes Anforderungssignal (RQA) geltend und
tastet den Zustand des Anforderungssignals (RQB) des Agenten B an
der Taktflanke 1 ab (die inaktiv dargestellt ist), bevor die Paketübermittlung
von der gleichen Flanke (z.B. der Taktflanke 1) beginnt.
-
Nach
einer Verzögerung
von zwei Takten sind die von dem Agenten A übermittelten Daten in dem Empfänger an
dem Agent B verfügbar,
beginnend von der Taktflanke 3. In einem Ausführungsbeispiel besteht nach
dem Empfang von Daten, die von dem Agenten A übermittelt werden, die erste
Möglichkeit
für den
Agenten B, die Flusssteuerung zu durch Geltendmachung des STOP Signals
an der Taktflanke 4 vorzusehen, wie dies in der Abbildung aus 7 dargestellt
ist.
-
Wenn
sich die Herrschaft des PD-Signals von einem Hub-Agenten zu dem
anderen ändert,
wird zusätzlich
die Herrschaft des STOP Signals nach einer vorbestimmten Anzahl
von Takten ausgetauscht. In einem Ausführungsbeispiel wird das STOP
Signal ferner an Basistakten abgetastet, die der letzten Übertragung
einer Paketbreite entsprechen. In einem 4fach-Modus (unter Verwendung eines PD-Signals
mit einer Breite von acht Bit) wird das STOP Signal bei jedem Basistakt
abgetastet. In einem 1fach-Modus wird das STOP Signal jedoch bei
jedem vierten Takt abgetastet (wobei der Beginn einer Transaktion
als Referenzpunkt verwendet wird).
-
Nach
dem Empfang eines STOP Signals bestimmt der Hub-Agent, der das STOP
Signal empfängt,
ob er das Senden weiterer Pakete wiederholen bzw. erneut versuchen
kann. Die Abbildung aus 8 zeigt ein Flussdiagramm, das
die Schritte beschreibt, die von einem Hub-Agenten bei der Bestimmung
ausgeführt
werden, ob er gemäß einem
Ausführungsbeispiel
das Senden eines Pakets nach dem Empfang eines STOP Signals erneut
versuchen kann.
-
In
dem Schritt 802 empfängt
der Hub-Agent, der aktuelle Pakete übermittelt, ein STOP Signal.
Als Reaktion darauf bestimmt der Hub-Agent, der das STOP Signal
empfängt,
in dem Schritt 804, ob der andere Agent (der das STOP Signal
aktiviert hat) die Herrschaft über
die Schnittstelle anfordert, und zwar durch Abtasten des Anforderungssignals
der anderen Hub-Agenten (z.B. RQB).
-
Wenn
der Empfänger
des STOP Signals bestimmt, dass der Agent, der das STOP Signal gesendet hat,
die Herrschaft über
die Schnittstelle nicht anfordert, kann der aktuelle Herrscher über die
Schnittstelle in dem Schritt 806 versuchen, nach der Wiederherstellung
von dem STOP ein Paket zu übermitteln.
Wenn andererseits bestimmt wird, dass der Agent, der das STOP Signal
aktiviert hat, die Herrschaft anfordert, bestimmt der aktuelle Herrscher 808 in
dem Schritt, ob dessen Zeitschlitz abgelaufen ist.
-
Wenn
der Zeitschlitz für
den aktuellen Eigentümer
bzw. Herrscher der Schnittstelle abgelaufen ist, gibt der aktuelle
Herrscher bzw. Inhaber in dem Schritt 810 die Herrschaft
frei. Wenn der Zeitschlitz für
den aktuellen Inhaber noch nicht abgelaufen ist, kann der aktuelle
Inhaber ein Paket mit einem Attribut übermitteln, das sich von dem
unterbrochenen Paket unterscheidet. Im Besonderen bestimmt der aktuelle
Inhaber in dem Schritt 812, ob er ein Paket mit einem Attributtyp
aufweist, der sich von allen anderen Paketen unterscheidet, die
in der aktuellen Arbitrierungssitzung wiederholt worden sind (d.h.
der Periode der Herrschaft des aktuellen Inhabers), das übermittelt
werden muss.
-
Wenn
der aktuelle Inhaber ein Paket mit einem anderen Attribut aufweist,
kann der aktuelle Inhaber in dem Schritt 814 die Übermittlung
eines Pakets versuchen. Ansonsten gibt der aktuelle Inhaber die
Herrschaft über
die Schnittstelle frei.
-
Physikalische
Schnittstelle
-
In
einem Ausführungsbeispiel
implementiert die Hub-Schnittstelle
eine physikalische Schnittstelle, die mit einer Grundfrequenz von
66 MHz oder 100 MHz arbeitet. Andere Frequenzen können ebenfalls
verwendet werden. In einem Ausführungsbeispiel
verwendet die physikalische Schnittstelle darüber hinaus eine Quellen-synchrone
(SS) Datenübertragungstechnik,
die eine Quadraturtaktung zur Datenübertragung mit dem Vierfachen
des Basis-Hub-Schnittstellentakts
aufweisen kann. In einem Ausführungsbeispiel
mit einer 8-Bit-Datenschnittstelle (z.B. PD), die mit einer Grundfrequenz
von entweder 66 MHz oder 100 MHz arbeitet, kann somit als Folge
dessen eine entsprechende Bandbreite von 266 Megabyte pro Sekunde
(MB/Sek.) oder von 400 MB/Sek. erreicht werden.
-
In
einem Ausführungsbeispiel
unterstützt
die Hub-Schnittstelle ferner einen Spannungsbetrieb von 1,8 V und
basiert auf einer CMOS-Signalisierung (CMOS als englische Abkürzung von
Complementary Metal-Oxid Semiconductor Process). In alternativen
Ausführungsbeispielen
kann die Schnittstelle hingegen mit alternativen Frequenzen und/oder
mit Datenschnittstellen mit anderen Größen arbeiten, um variierende
Bandbreiten vorzusehen und um alternative Betriebsspannungen auf
der Basis einer alternativen Signalverarbeitung vorzusehen.
-
Definition
externer Signale
-
Die
Abbildung aus 9 veranschaulicht die physikalische
Signalschnittstelle der Hub-Schnittstelle zwischen zwei Hub-Agenten gemäß einem
Ausführungsbeispiel.
Gemäß der Abbildung
aus 9 verwendet die physikalische Schnittstelle der
Hub-Schnittstelle
einen bidirektionalen Datenbus von acht Bit (PD[7:0]) mit einem
differentiellen Paar von Quellensynchronen Strobe-Signalen (PSTRBN,
PSTRBP) für
die Datentaktung. In einem alternativen Ausführungsbeispiel kann die Schnittstelle
breiter vorgesehen werden. Gemäß der Abbildung
aus 9 kann zum Beispiel auch ein zusätzlicher
Datenbus von acht Bit (PD[15:8]) in Verbindung mit einem zusätzlichen
Paar von Quellen-synchronen Strobe-Signalen (PUSTRBN, PUSTRBP) verwendet
werden. In einem alternativen Ausführungsbeispiel können zum
Beispiel unidirektionale Datensignale verwendet werden.
-
Zusätzlich verbindet
ein unidirektionales Arbitrierungssignal alle Agenten miteinander
(RQA, RQB), und ein bidirektionales STOP Signal wird von dem empfangenden
Agenten zur Steuerung des Datenflusses verwendet, wie dies bereits
vorstehend im Text beschrieben worden ist. Zu zusätzlichen Schnittstellensignalen zählen die
Signale Systemrücksetzung
(Reset), gemeinsamer Takt (HLCLK) und Spannungsreferenz (HLVREF).
Ferner enthalten sind Signale für
jeden Hub-Agenten (ZCOMP) zur Abstimmung der Treiberausgabeimpedanz
auf den entsprechenden Wert, um Fertigungs- und Temperaturschwankungen
zu kompensieren.
-
Die
in der in der Abbildung aus 9 veranschaulichten
Schnittselle dargestellten physikalischen Signale werden in der
folgenden Tabelle 8 näher
beschrieben. In alternativen Ausführungsbeispielen der Hub-Schnittstelle
sind die in der physikalischen Schnittstelle enthaltenen Signale
veränderlich.
Zum Beispiel kann die physikalische Schnittstelle mehr, weniger
oder andere Signale aufweisen, die von den in der Abbildung aus 9 abgebildeten
Signalen abweichen und in der nachstehenden Tabelle 8 näher beschrieben sind.
-
Tabelle
8: Hub-Schnittstellen-Signale für
8-Bit-Agenten
-
-
-
Signal;
es ist eine Ausgabe einer Systemkomponente und eine Eingabe in die
andere(n) Komponente(n). Ferner ist Reset asynchron in Bezug auf
HLCLK.
-
Transfermodusbetrieb
gemeinsamer Takt
-
In
einem Ausführungsbeispiel
werden zahlreiche der über
die Hub-Schnittstelle übertragenen
Signale gemäß einem
gemeinsamen Taktmodus übermittelt.
Im Besonderen steht die Zeitsteuerung der Signale, die über den
gemeinsamen Taktmodus übertragen
werden, im Verhältnis
zu einem einzelnen Takt (z.B. dem Hub-Schnittstellentakt). In alternativen
Ausführungsbeispielen
können
die Signale mit einem Systemtakt verbunden sein, der sich außerhalb
der Hub-Schnittstellen-Agenten befindet. Ferner können in
einem System mehr als ein Hub-Schnittstellen-Segment existieren,
wobei in diesem Takt verschiedene Basistakte für verschiedene Segmente verwendet
werden können.
Zum Beispiel kann eine Komponente sowohl eine Basis-Hub-Schnittstelle
von 66 MHz und eine Basis-Hub-Schnittstelle von 100 MHz implementieren.
-
Quellen-synchroner
Transfermodusbetrieb
-
In
einem Ausführungsbeispiel
werden die Pakete/Daten unter Verwendung eines Quellen-synchronen Taktmodus übermittelt,
wobei eine Technik zur Multiplikation der Datentransferrate der
Daten vorgesehen wird. In einem Ausführungsbeispiel, das zum Beispiel
einen 4fach-Quellen-synchronen Taktmodus mit einem Datensignalpfad
von acht Bit verwendet, setzt die Übermittlung eines Doppelworts
(d.h. vier Byte) nur einen Hub-Schnittstellen-Taktzyklus
(HLCK) voraus. Alternativ erfordert das Übermitteln eines Doppelworts
unter Verwendung des 1fach-Quellen-synchronen-Taktmodus
an einem Datensignalpfad von acht Bit einen vollständigen Hub-Schnittstellen-Taktzyklus
für die
Durchführung.
-
In
einem Ausführungsbeispiel
der Quellen-synchronen Übertragung
werden im Besonderen Strobes (z.B. PSTRBN/PSTRBP) mit einer Datenübermittlung
gemäß einer
vorbestimmten Zeitsteuerungsbeziehung zwischen den Strobes und den
Daten gesendet. Die Strobes werden danach zur Speicherung der Daten
in dem empfangenden Hub-Agent verwendet.
-
In
einem Ausführungsbeispiel
werden die Flanken der Strobes PSTRBP/PSTRBN im Besonderen von dem
empfangenden Hub-Agenten zur Identifikation des Vorhandenseins und
der Zeitsteuerung der Daten verwendet, die über die Datensignalpfade übertragen
werden. Wie dies zum Beispiel in dem Zeitsteuerungsdiagramm aus 10 veranschaulicht
ist, entspricht eine erste Datenübertragung
in einem Ausführungsbeispiel der
ansteigenden Flanke von PSTRBP und der abfallenden Flanke von PSTRBN.
Eine zweite Datenübertragung
entspricht der ansteigenden Flanke von PSTRBN und der abfallenden
Flanke von PSTRBP.
-
In
einem Ausführungsbeispiel
gemäß der weiteren
Darstellung in der Abbildung aus 10 sind
die Übermittlungsflanken
der Strobes PSTRBP/PSTRBN ferner nahe der Mitte des gültigen Datenfensters
positioniert. Als Folge dessen erhält der empfangende Agent ein
Eingabedaten-Abtastfenster zur Berücksichtigung verschiedener
Schrägläufe der
Systemzeitsteuerung. In einem Ausführungsbeispiel werden ferner
gültige
Mindestdaten vor der Strobe-Flanke (tDvb) und gültige Mindestdaten nach der
Strobe-Flanke (tDva) von dem empfangenden Hub-Agenten verwendet,
um die übermittelten
Daten zu identifizieren und zu speichern. Nachdem der empfangende
Hub-Agent die eingehenden Daten gespeichert hat, werden die Daten
danach über
einen kurzen Zeitraum zur neuerlichen Synchronisierung der Daten
mit dem Hub-Schnittstellentakt (HLCK) gespeichert, bevor sie gemeinsam
mit dem Hub-Agenten weitergeleitet werden.