-
GEBIET DER
ERFINDUNG
-
Die
vorliegende Erfindung betrifft das Gebiet der Datenübermittlung
in Computersystemen.
-
STAND DER
TECHNIK
-
Moderne
Computersysteme weisen für
gewöhnliche
eine Mehrzahl von Agenten auf, die jeweils mit einem Systembus gekoppelt
sind. Für
gewöhnlich
handelt es sich bei den Agenten um integrierte Schaltungseinheiten
mit einer Mehrzahl von Stiften bzw. Pins, welche jeden Agenten mit
dem Bus verbinden. Zu den Agenten können zum Beispiel Prozessoren,
Speichervorrichtungen, Massenspeichervorrichtungen, etc. zählen. Damit
ein Computersystem ordnungsgemäß arbeiten
kann, müssen
die Agenten in der Lage sein, über den
Bus effektiv miteinander zu kommunizieren.
-
Da
sich Computersysteme und Agenten für Computersysteme teilweise
separat entwickeln, weisen Computersysteme für gewöhnlich Agenten mit unterschiedlichen
Fähigkeiten
auf. Zum Beispiel können
Agenten in der Lage sein, unterschiedliche Datenbreiten zu übermitteln
und zu empfangen. Derartige Systeme sind für gewöhnlich darauf beschränkt, die
kleinsten Datenbreiten der Mehrzahl von Datenbreiten zu übermitteln, welche
die Agenten übermitteln
können.
Für gewöhnlich muss
diese Datenbreite bei der Initialisierung einmal festgelegt werden,
wobei sie während
dem Betrieb des Computersystems nicht geändert werden kann. Somit ist
es für
gewöhnlich
nicht möglich,
die größere Datenübertragungskapazität eines
Agenten zu nutzen.
-
Aktuelle
Computersysteme übertragen
Daten für
gewöhnlich
mit einem vordefinierten Taktschema zwischen Bauteilen oder Agenten.
Ein Systembustakt taktet für
gewöhnlich
Daten aus einer sendenden Vorrichtung und in eine empfangende Vorrichtung.
Folglich ist mindestens ein vollständiger Taktzyklus des Systembustakts
erforderlich, um Daten von einer Vorrichtung zu einer anderen Vorrichtung
zu übertragen.
Daten können
Quellen-synchron übertragen
werden, um die Geschwindigkeit der Datenübertragung zu erhöhen. Bei einer
Quellen-synchronen Übermittlung
wird ein Strobe-Impuls mit einer Datenübertragung gesendet. Dieser Strobe-Impuls
bzw. dieses Strobe-Signal speichert die Daten in der Empfängervorrichtung
innerhalb eines Zeitraums, der für
gewöhnlich
kürzer
ist als der Zeitraum des Systembustakts. In aktuellen Systemen,
die sich für
eine Quellen-synchrone Übertragung
eignen, muss dieser Übertragungsmodus
bei der Initialisierung ausgewählt
werden, ohne dass er während
dem Betrieb des Computersystems geändert werden kann. Aus diesem
Grund verhindern es Agenten, die eine Quellen-synchrone Übermittlung
nicht ausführen
können,
dass ein Systementwickler die Vorteile der Agenten nutzt, die zu
einer Quellen-synchronen Übertragung
in der Lage sind.
-
ZUSAMMENFASSUNG
DER ERFINDUNG
-
Vorgesehen
ist gemäß den Ausführungen
des gegenständlichen
Anspruchs 1 ein Verfahren zur Datenübertragung zwischen Busagenten
in einem Computersystem, das einen Systembus aufweist, der mit einer Systembustaktrate
arbeitet. Vorgesehen ist gemäß der vorliegenden
Erfindung ferner eine Vorrichtung gemäß dem gegenständlichen
Anspruch 7.
-
KURZE BESCHREIBUNG
DER ZEICHNUNGEN
-
In
den Zeichnungen zeigen:
-
1 1 ein
Blockdiagramm eines Computersystems mit mehreren Agenten gemäß der vorliegenden
Erfindung;
-
2 ein
Diagramm der Transaktionsphase gemäß einem Ausführungsbeispiel
der vorliegenden Erfindung;
-
3 ein
Taktdiagramm, das ein mit einem gemeinsamen Takt gespeichertes Protokoll
veranschaulicht;
-
4 ein
Taktdiagramm, das ein Quellen-synchron gespeichertes Protokoll gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung veranschaulicht;
-
5 ein
Blockdiagramm eines Agenten gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung;
-
6 ein
Taktdiagramm einer 64-Byte-Lesetransaktion mit implizitem Writeback
unter Verwendung einer Quellen-synchronen Übertragung gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung; und
-
7 ein
Taktdiagramm einer 64-Byte-Schreibtransaktion mit implizitem Writeback
gemäß einem Ausführungsbeispiel
der vorliegenden Erfindung, wobei der Snoop-Agent eine Quellen-synchrone Übertragung
nicht ausführen
kann.
-
GENAUE BESCHREIBUNG
-
Beschrieben
werden ein Verfahren und eine Vorrichtung zur Datenübertragung
in einem Computersystem. In einem Ausführungsbeispiel übertragen
die Busagenten in dem Computersystem Informationen untereinander
in Bezug auf deren Datenbehandlungsfähigkeiten, und wobei sie Transaktionen
entsprechend konfigurieren. Die Datenübertragungsmodi wechseln Transaktion
für Transaktion
zwischen einem gemeinsamen Taktmodus (getaktet durch einen Systembustakt)
und einem Quellen-synchronen Modus (getaktet durch Strobes, die
durch die Datenquelle übermittelt
werden). Die Datenbreiten werden ebenfalls Transaktion für Transaktion
gewechselt.
-
Die
Abbildung aus 1 zeigt ein Blockdiagramm eines
Mehrprozessor-Computersystems, das in Verbindung mit den Ausführungsbeispielen
der vorliegenden Erfindung verwendet werden kann. Das Computersystem 100 umfasst
einen Prozessorspeicherbus 101 zur Kommunikation zwischen
verschiedenen mit dem Bus 101 gekoppelten Agenten, wie
etwa Prozessoren, Busbrücken,
Speichervorrichtungen, Peripheriegeräte, etc. Der Prozessorspeicherbus 101 weist
Arbitrierungs-, Adress-, Daten- und Steuerbusse (nicht abgebildet) auf.
In einem Ausführungsbeispiel
weist jeder der Prozessoren 102, 103, 104 und 105 einen
kleinen, außerordentlich
schnellen, internen Cache-Speicher (nicht abgebildet) auf, der für gewöhnlich aus
Level-1-(L1)-Cache-Speicher
bezeichnet wird, und der dazu dient, Daten und Befehle bzw. Anweisungen
auf der gleichen integrierten Schaltung wie der zugeordnete Prozessor
zu speichern. Zusätzlich
ist ein größerer Level-2-(L2)-Cache-Speicher 106 mit
dem Prozessor 105 gekoppelt, um Daten und Befehle bzw.
Anweisungen zur Nutzung durch den Prozessor 105 vorübergehend zu
speichern. In anderen Ausführungsbeispielen
kann ein L2-Cache wie
etwa der Speicher 106 mit jedem der Prozessoren 102-105 gekoppelt
werden.
-
Der
Prozessorspeicherbus 101 sieht einen Zugriff auf den Speicher
und Eingabe-/Ausgabe-Subsysteme (E/A-Subsysteme) vor. Die Speichersteuereinheit 122 ist
mit dem Prozessorspeicherbus 101 gekoppelt, um den Zugriff
auf einen Direktzugriffsspeicher (RAM) oder eine andere dynamische
Speichervorrichtung (die für
gewöhnlich
aus Hauptspeicher bezeichnet wird) zu steuern, um Informationen
und Anweisungen bzw. Befehle für
die Prozessoren 102-105 zu speichern. Eine Anzeigevorrichtung 132,
eine Tastaturvorrichtung 133, eine Cursorsteuerungsvorrichtung 134,
eine Hartkopievorrichtung 135 und eine Massenspeichervorrichtung 136 sind
mit dem System-E/A-Bus 131 und über die Busbrücke 124 mit
dem Prozessorspeicherbus 101 gekoppelt. Die Brücke 124 ist
mit dem Prozessorspeicherbus 101 und dem System-E/A-Bus 131 gekoppelt,
um einen Kommunikationspfad oder einen Gateway für Vorrichtungen entweder auf
dem Prozessorspeicherbus 101 oder dem E/A-Bus 131 vorzusehen,
um auf Daten zuzugreifen oder um Daten zwischen Vorrichtungen auf dem
anderen Bus zu übertragen.
Die Brücke 124 ist
eine Schnittstelle zwischen dem System-E/A-Bus 131 und dem
Prozessorspeicherbus 101. Der E/A-Bus 131 kommuniziert
Informationen zwischen Peripheriegeräten 132-136.
-
Die
Prozessoren 102-105, die Busbrücke 124, die Massenspeichervorrichtung 125 und
die Speichersteuereinheit 122 weisen jeweils eine Bussteuereinheit 138 auf.
Die Bussteuereinheit 138 steuert die Kommunikation über den
Prozessorspeicherbus 101, wenn der aufweisende Agent die
Steuerung über
den Prozessorspeicherbus besitzt.
-
Wie
dies nachstehend im Text näher
beschrieben wird, weisen die Agenten an dem Prozessorspeicherbus 101 verschiedene
Fähigkeiten
auf. Im Besonderen können
bestimmte Agenten bestimmte Datenbreiten verarbeiten, während andere
Agenten andere Datenbreiten verarbeiten. Gemäß einem Ausführungsbeispiel
der vorliegenden Erfindung arbeiten ferner Agenten, die zwei 8-Byte-Datenelemente
in einem Taktzyklus übertragen
können
(oder Agenten mit einer Datenbreite von 128 Bit), in dem Quellen-synchronen Übertragungsmodus.
Gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung werden Datenübertragungen mit einem Agenten,
der 128-Bit-Daten nicht verarbeiten kann, gemäß einem gemeinsamen Taktschema übertragen.
-
In
einem Ausführungsbeispiel
der vorliegenden Erfindung ist die Busaktivität auf dem Prozessorspeicherbus 101 hierarchisch
in Operationen, Transaktionen und Phasen organisiert. Eine Operation
ist eine Busprozedur, die geordnet zu Software erfolgt, wie etwa
das Lesen eines auf natürliche
Weise ausgerichteten Speicherplatzes. Das Ausführen einer Operation setzt
für gewöhnlich eine
Transaktion voraus, wobei aber auch mehrere Transaktionen erforderlich
sein können,
wie etwa bei verzögerten
Antworten, wobei die Anforderungen und Antworten verschiedene Transaktionen
erfordern, oder bei nichtlinearen Speicheroperationen, die von Software
als geordnet erwartet wird. In dem vorliegenden Ausführungsbeispiel
handelt es sich bei einer Transaktion um eine Reihe von Busaktivitäten in Bezug
auf eine einzelne Anforderung, von der Anforderungsbusarbitrierung
zur Vollendung der Transaktion (zum Beispiel eine normale oder implizite
Writeback-Antwort) während
der Antwortphase.
-
In
einem Ausführungsbeispiel
weist eine Transaktion bis zu sechs unterschiedliche Phasen auf.
Bestimmte Phasen sind basierend auf der Transaktions- und Antwortart
jedoch optional. Alternativ können
auch zusätzliche
Phasen hinzugefügt
werden. Eine Phase verwendet eine bestimmte Signalgruppe zur Übermittlung
einer bestimmten Art von Informationen. Bei einer Implementierung
handelt es sich bei diesen Phasen um folgende Phasen:
ARBITRIERUNGSPHASE
ANFORDERUNGSPHASE
FEHLERPHASE
SNOOP-PHASE
ANTWORTPHASE
DATENÜBERTRAGUNGSPHASE
-
In
einem Ausführungsbeispiel
ist die Datenübertragungsphase
optional und wird verwendet, wenn eine Transaktion Daten überträgt. Die
Datenphase wird über
eine Anforderung eingeleitet, wenn die Daten zum Zeitpunkt der Einleitung
der Anfrage verfügbar
sind (zum Beispiel für
eine Schreibtransaktion). Die Datenphase wird durch eine Antwort
eingeleitet, wenn die Daten zum Zeitpunkt der Erzeugung der Transaktionsantwort verfügbar sind
(zum Beispiel für
eine Lesetransaktion). Eine Transaktion kann sowohl eine durch eine
Anforderung eingeleitete Datenübertragung
als auch eine durch eine Antwort eingeleitete Datenübertragung
aufweisen, wie zum Beispiel ein Schreibvorgang, der in einen impliziten
Writeback umgewandelt wird.
-
Verschiedene
Phasen verschiedener Transaktionen können sich überlagern, wobei eine Pipeline-Verarbeitung
der Busnutzung sowie eine Verbesserung der Busleistung ermöglicht werden.
Die Abbildung aus 2 zeigt ein Beispiel von sich überlagernden
Phasen für
zwei Transaktionen. In Bezug auf die Abbildung aus 2 beginnen
Transaktionen mit einer Arbitrierungsphase, wobei ein anfordernder
Agent den Besitz über
den Bus übernimmt.
Die Arbitrierungsphase muss nur auftreten, wenn der Agent, der die
nächste
Transaktion steuert, den Besitz bzw. die Herrschaft über den
Bus noch nicht aufweist. Bei einer Implementierung wird die Busherrschaft
dem anfordernden Agenten in der Arbitrierungsphase zwei oder mehr
Taktzyklen nach der Anforderung der Herrschaft gewährt.
-
Die
zweite Phase ist die Anforderungsphase, in der der Busbesitzer eine
Anforderung und Adressinformationen auf dem Bus steuert. Bei einer
Implementierung erfolgt die Anforderungsphase einen oder zwei Taktzyklen
nach der Gewährung
der Herrschaft über
den Bus (vorausgesetzt es existiert eine Arbitrierungsphase) und
sie ist zwei Taktzyklen lang. In dem ersten Takt wird ein Adresssignal
gemeinsam mit der Transaktionsart und ausreichenden Informationen
vorgesehen, um das Snooping eines Speicherzugriffs zu starten. In dem
zweiten Takt werden gemeinsam mit anderen Transaktionsinformationen
Bytefreigaben gesteuert, die dazu verwendet werden zu identifizieren,
welche Datenbytes übertragen
werden sollen, wenn die Datenübertragung
kleiner ist als die Datenbusbreite, der Transaktionsbezeichner,
der zur eindeutigen Identifikation der Transaktion verwendet wird,
wenn eine verzögerte
Antwort auf die Anforderung erfolgt, und die angeforderten Datenübertragungslängen.
-
Die
dritte Phase einer Transaktion ist eine Fehlerphase. Die Fehlerphase
zeigt jeden unmittelbaren Fehler an, wie etwa Paritätsfehler,
die durch die Anforderung ausgelöst
werden. Wenn ein Fehler entdeckt wird, wird ein Fehlersignal während der
Fehlerphase durch den Agenten aktiviert, der den Fehler in der Transaktion
erkannt hat. Wenn ein Fehler angezeigt wird, wird die Transaktion
gemäß einem
Ausführungsbeispiel sofort
beendet (d.h. die Transaktion fährt
in der Pipeline nicht weiter fort), und sie kann durch den Agenten,
der die Transaktion ausgegeben hat, wieder gesteuert werden. Ob
ein Agent die Transaktion erneut ausgibt, ist von dem Agenten selbst
abhängig.
Bei einer Implementierung liegt die Fehlerphase drei Taktzyklen
nach der Anforderungsphase.
-
In
einem Ausführungsbeispiel
weist jede Transaktion eine Snoop-Phase auf, die nicht aufgrund
eines Fehlers in der Fehlerphase abgebrochen worden ist. Die Snoop-Phase
zeigt an, ob die Cache-Zeile, auf die in einer Transaktion zugegriffen
worden ist, in einem Cache eines Agenten ungültig, gültig oder modifiziert ("dirty") ist. Bei einer
Implementierung ist die Snoop-Phase vier oder mehr Taktzyklen von
der Anforderungsphase entfernt.
-
Die
Snoop-Phase des Busses definiert ein Snoop-Fenster, während dem
auf dem Bus Snoop-Ereignisse auftreten können. Ein Snoop-Ereignis betrifft
Agenten, die Snoop-Ergebnisse über
den Bus senden und/oder empfangen. Ein Agent, der Snoop-Ergebnisse
aufweist, die während
der Snoop-Phase gesteuert werden müssen, steuert die Snoop-Ergebnisse
als Snoop-Ereignis während
dem Snoop-Fenster. Alle mit dem Bus gekoppelten Snoop-Agenten, einschließlich des
Agenten, der die Ergebnisse steuert, empfangen diese Snoop-Ergebnisse
als Snoop-Ereignis während
dem Snoop-Fenster. Bei einer Implementierung handelt es sich bei
dem Snoop-Fenster um einen einzelnen Bustakt.
-
Die
Antwortphase zeigt an, ob die Transaktion fehlgeschlagen ist oder
erfolgreich war, ob die Antwort unverzüglich oder verzögert erfolgt,
ob die Transaktion wiederholt wird oder ob die Transaktion Datenphasen aufweist.
Wenn eine Transaktion eine durch eine Datenphase eingeleitete Antwort
aufweist, so tritt sie gleichzeitig in die Datenübertragungsphase und die Antwortphase
ein.
-
Wenn
eine Transaktion keine Datenphase aufweist, so ist diese Transaktion
auf der Antwortstufe abgeschlossen. Wenn der anfordernde Agent zu übertragende
Schreibdaten aufweist oder Lesedaten angefordert hat, so weist die
Transaktion eine Datenphase auf, die sich in dem erst genannten
Fall über
die Antwortphase hinaus erstrecken kann und die im letzt genannten
Fall mit der Antwortphase zusammenfällt oder sich über diese
hinaus erstreckt. Die Datenphase tritt nur auf, wenn eine Transaktion
eine Datenübertragung
erfordert. Die Datenphase kann durch eine Antwort (zum Beispiel
durch die Speichersteuereinheit oder einen anderen Prozessor) oder
durch eine Anforderung eingeleitet werden.
-
Der
Bus behandelt verzögerte
Transaktionen, indem eine Bustransaktion in zwei unabhängige Transaktionen
aufgeteilt wird. Die erste Transaktion umfasst eine Anforderung
durch einen anfordernden Agenten und eine Antwort durch den antwortenden
Agenten. Die Antwort umfasst das Senden der Anforderungsdaten (oder
Vollendungssignale), wenn der antwortende Agent bereit ist, zu antworten.
In diesem Fall endet die Bustransaktion. Wenn der antwortende Agent
jedoch nicht bereit ist, die Bustransaktion zu beenden, so kann
der antwortende Agent während
der Antwortphase eine verzögerte
Antwort über
den Bus senden. Das Senden einer verzögerten Antwort ermöglicht die
Ausgabe anderer Transaktionen, die nicht durch die Ausführung dieser Transaktion
aufgehalten bzw. verzögert
werden. Wenn der antwortende Agent bereit ist, die verzögerte Bustransaktion
abzuschließen,
so führt
der antwortende Agent eine Arbitrierung in Bezug auf die Herrschaft über den
Bus durch und sendet eine verzögerte
Antworttransaktion, welche die angeforderten Daten (oder Vollendungssignale)
auf dem Bus aufweist.
-
Da
der Bus in dem vorliegenden Ausführungsbeispiel
eine Pipeline-Ausführung
aufweist, können
mehrere Transaktionen sich zu unterschiedlichen Zeiten auf verschiedenen
Phasen des Busses befinden, wobei sich eine Transaktion zum Beispiel
in der Snoop-Phase befinden kann, während sich eine zweite Transaktion in
der Fehlerphase und eine dritte Transaktion in der Anforderungsphase
befinden. Fehlersignale und Anforderungssignale können somit
gleichzeitig auf dem Bus ausgegeben werden, obwohl sie verschiedenen
Transaktionen entsprechen.
-
In
einem Ausführungsbeispiel
der vorliegenden Erfindung können
zu einem bestimmten Zeitpunkt bis zu acht Transaktion auf dem Bus
ausständig
sein, und bis zu sechzehn Transaktionen können zu einem bestimmten Zeitpunkt
auf eine verzögerte
Antwort warten.
-
Zusätzlich unterstützt ein
Ausführungsbeispiel
der vorliegenden Erfindung auch einen impliziten Writeback als Teil
einer Lese- oder Schreibtransaktion. Ein impliziter Writeback erfolgt,
wenn ein anfordernder Agent eine Anforderung auf dem Bus für eine Cache-Zeile
platziert, die in einem modifizierten Zustand in einem mit dem Bus
gekoppelten Cache gespeichert wird. Zum Beispiel kann ein Agent über den
Bus eine Schreibtransaktion von 8 Datenbytes ausführen (oder
eine andere Datenmenge, die kleiner oder gleich einer Cache-Zeile ist), wobei
die Cache-Zeile, die diese 8 Bytes aufweist, in einem modifizierten
Zustand in dem Cache eines anderen Agenten gespeichert wird. In
diesem Fall gibt der Cache, der die Cache-Zeile in einem modifizierten
Zustand aufweist (oder der mit dem Cache gekoppelte Agent), ein "Hit modified" bzw. ein "auf modifiziert getroffen" Signal während der
Snoop-Phase für
die Transaktion auf dem Bus aus. Der anfordernde Agent platziert
die 8 Schreibdatenbytes auf dem Bus, die von dem Zielagenten abgerufen
werden. Gleichzeitig zu der Antwortphase der Transaktion schreibt
dann der Cache, der die Cache-Zeile in einem modifizierten Zustand
aufweist, die Cache-Zeile, die gemäß einer Implementierung 32
oder 64 Bytes aufweist, auf den Bus. Danach werden alle anderen
Daten in der Cache-Zeile, die nicht durch den anfordernden Agenten
geschrieben worden sind, mit den Schreibdaten der ursprünglichen
Datenübertragung
zusammengeführt.
-
Ein
impliziter Writeback kann auch bei einer Lesetransaktion auftreten.
Zum Beispiel kann ein anfordernder Agent eine Lesetransaktion ausführen, die
an die Speichersteuereinheit auf dem Bus gerichtet ist, die aber
auch auf eine modifizierte Cache-Zeile in einem Cache-Speicher eines
Snooping-Agenten trifft. In diesem Beispiel wird der Snooping-Agent
zu dem Quellenagent und sieht die angeforderten Daten, wie etwa
einen impliziten Writeback, an die Speichersteuereinheit vor, welche
die Writeback-Daten wiederum in dem Hauptspeicher speichert. In
diesem Beispiel ruft der anfordernde Agent ferner die Daten des
impliziten Writeback von dem Bus ab (dies wird als "Snarfing" der Daten bezeichnet).
In alternativen Ausführungsbeispielen
kann aber auch die Speichersteuereinheit das Snarfing ausführen, wobei
die Cache-Zeile in diesem Fall durch den anfordernden Agenten von
dem Bus genommen wird oder von der Speichersteuereinheit nicht von
dem Bus genommen werden kann.
-
Die
Abbildung aus 3 zeigt ein Taktdiagramm, das
zeigt, was auf dem Bus während
einer Transaktion eines gemeinsamen Takts für die Übermittlung von Steuersignalen
gemäß einem
Ausführungsbeispiel der
vorliegenden Erfindung erfolgt. In den Taktdiagrammen hierin zeigt
ein rechteckiges Symbol an, dass ein Signal gesteuert wird, wobei
ein rundes Symbol anzeigt, dass ein Signal abgetastet wird (gespeichert
oder erfasst), und ein dreieckiges Symbol zeigt an, dass das Signal
empfangen oder untersucht wird.
-
Für die Bezeichnung
der Signale werden hierin Großbuchstaben
verwendet, wie zum Beispiel ADS#. Die Signale in einer Gruppe verwandter
Signale werden durch numerische Zusätze unterschieden, wie etwa
A 4 für
das Adressbit 4. Eine bezeichnete Signalgruppe, die einen Bereich
numerischer Zusätze
abdeckt, entspricht zum Beispiel für die Datenbits 0 bis 63 D[63-0].
Ein Zusatz "#" zeigt an, dass das
Signal aktiv niedrig ist. Ein fehlender Zusatz "#" zeigt
an, dass das Signal aktiv hoch ist. Die Logikzustände, bei
denen bestimmte Signale aktiv sind, stellen lediglich eine getroffene
Auswahl für
bestimmte Ausführungsbeispiele
dar und sind für
die Erfindung nicht wesentlich. Der Begriff "aktiviert" impliziert, dass ein Signal in ihren
aktiven Logikzustand gesteuert wird. Der Begriff "deaktiviert" impliziert, dass
ein Signal in ihren inaktiven Logikzustand gesteuert wird.
-
Das
Bustaktsignal BCLK 600 ist auf der ansteigenden Flanke aktiv. Am
Beginn des Taktzyklus T1 ist das Signal A# 602 auf dem Bus aktiviert.
Am Beginn von T2 speichert BCLK 600 das Signal A# 602. Am Beginn von
T3 wird B# 604 als Reaktion auf die Speicherung von A# 602 aktiviert.
A# 602 ändert
den Zustand in den ursprünglichen
Zustand, den inaktiven Zustand in T2. Aus der Abbildung aus 3 ist
ersichtlich, dass B# 604 als Reaktion auf A# 602 aktiviert wird,
zwei BCLK 600 Zyklen nach der Aktivierung von A# 602.
-
Die
Abbildung aus 4 zeigt ein Taktdiagramm, das
eine Quellen-synchrone Datenübermittlung
für die
Datenübertragung
gemäß einem
Ausführungsbeispiel
veranschaulicht. Als Folge dessen ermöglicht die vorliegende Erfindung
die Übertragung
einer größeren Datenmenge
je Bustaktzyklus im Vergleich zur Datenübertragung über ein Protokoll mit gemeinsamem
Takt. Wie dies in dem Beispiel von vier Daten-Chunks dargestellt
ist, werden D1, D2, D3 und D4 gesendet und empfangen. BCLK 600 arbeitet
bei dessen Grundfrequenz genau so wie bei der Transaktion mit gemeinsamem
Takt, die in der Abbildung aus 3 dargestellt
ist. Gemäß dem in
der Abbildung aus 4 dargestellten Quellen-synchronen
Protokoll werden Daten mit den Strobes STBp[3:0]# 310 und STBn[3:0]#
312 gesendet und gespeichert, um doppelt so hohe Übertragungsraten
im Vergleich zu der Übertragungsrate
mit gemeinsamem Takt zu ermöglichen,
bei angemessenen Signalflugzeiten. Das Quellen-synchrone gespeicherte
Protokoll betreibt den Bus mit der doppelten Frequenz von BCLK 600.
Zwei Daten-Chunks werden innerhalb des Zeitraums auf den Bus gesteuert,
die bei einer Übermittlung
mit gemeinsamem Takt für
ein Chunk erforderlich wäre.
Somit kann die Bandbreite verdoppelt werden, ohne eine entsprechende
Erhöhung
der Anzahl der übermittelten
Signale.
-
Wie
dies in Tabelle IV erläutert
wird, zeigen beide aktiven Signale DRDY# 428 und DRDY# 426 an, dass
der Sender Daten in einem Quellen-synchronen 128-Bit-Modus sendet.
D# 302 umfasst die für
den Treiber bzw. die Steuereinheit erkennbaren Datensignale. D#
308 umfasst die für
den Empfänger
erkennbaren Datensignale. STBp[3:0]# 304 und STBn[3:0]# 306 sind
Strobe-Signale,
die für
den Treiber der Strobe-Signale erkennbar sind. STBp[3:0]# 310 und
STBn[3:0]# 312 sind die Strobe-Signale,
die für
den Empfänger
der Daten und Strobe-Signale erkennbar sind. Sowohl an der ansteigenden
Flanke und an dem 50%-Punkt des Bustakts sendet der Treiber neue
Daten. Sowohl an dem 25%-Punkt und dem 75%-Punkt des Bustakts sendet
der Treiber zentrierte differentielle Strobes STBp[3:0]# 304 und
STBn[3:0]# 306. Der Empfänger
erfasst die Daten mit den Strobes deterministisch.
-
In
einem Ausführungsbeispiel
muss der der Treiber eine Vorsteuerung von STBp[3:0]# 304 ausüben, bevor
D[63:0]# 302 gesteuert wird. Der Treiber sendet eine ansteigende
und eine fallende Flanke an STBp[3:0]# 304 und STBn[3:0]n# 306 zentriert
mit Daten. Der Treiber muss die Strobes deaktiveren nachdem die
letzten Daten gesendet worden sind. Der Empfänger erfasst gültige Daten
mit beiden Strobe-Signalen asynchron zu BCLK 600. Zu BCLK 600 synchrone
Signale (DRDYS# 428 und DRDY# 426) zeigen dem Empfänger an,
dass gültige
Daten gesendet worden sind. Die Abbildung aus 4 veranschaulicht,
dass für
den Fall, dass beide Agenten für
eine 128-Bit-Datenübermittlung
fähig ist,
Daten in der Hälfte
der Zeit in Bezug auf BCLK 600 als bei einem Protokoll mit gemeinsamen
Takt gemäß der Abbildung
aus 3 übermittelt
werden können.
-
Die
Abbildung aus 5 zeigt ein Blockdiagramm eines
Agenten in näheren
Einzelheiten gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung. Der Agent 400 weist einen Datenbreitenindikator 401, eine
interne Steuerlogik 402, eine Bussteuereinheit 138,
die Datenpuffer 404 und 406 sowie die Multiplexer 403, 405 und 408 auf.
-
Der
Datenbreitenindikator 401 ist ein Indikator für die von
dem Agenten 400 unterstützten
Datenübertragungsbreiten.
In einem Ausführungsbeispiel
handelt es sich bei dem Datenbreitenindikator 401 um einen Zwei-Bit-Wert,
der die Datenübertragung
codiert, die durch den Agenten 400 unterstützt wird.
Der Datenbreitenindikator 401 weist gemäß einem Ausführungsbeispiel
einen vorkonfigurierten Wert auf. Der Indikator 401 kann
auf jede Art und Weise eines umfassenden Bereichs konventioneller
Methoden vorkonfiguriert werden, wie etwa mit bestimmten Stiften
bzw. Pins des Agenten 400, der mit bestimmten vorbestimmten
Spannungswerten verbunden ist, die zu den Systemrücksetzzeiträumen abgetastet
werden. In anderen Ausführungsbeispielen
kann der Datenbreitenindikator 401 neu konfigurierbar sein.
Zum Beispiel kann der Datenbreitenindikator 401 in eine
Speichervorrichtung gespeichert werden oder Teil eines Konfigurationsregisters
sein, in das über
Software geschrieben werden kann. Die Bussteuereinheit 138 sieht
eine Schnittstelle zwischen dem Agenten 400 und dem Bus 101 vor.
Die Bussteuereinheit 138 überträgt verschiedene Steuer- und
Adresssignale zwischen dem Bus 101 und steuert ferner die
Datenübertragung
zu und von dem Bus 101. Gemäß der Abbildung weist der Bus 101 einen
Datenbus mit einer Breite von 64 Bit auf. In anderen Ausführungsbeispielen können auch
andere Datenbusbreiten verwendet werden.
-
Die
nachstehende Tabelle I zeigt eine Zusammenfassung der gemäß der vorliegenden
Erfindung verwendeten Signale. Die Interaktion dieser Signale wird
nachstehend näher
erörtert.
Tabelle I zeigt eine Zusammenfassung der in Verbindung mit der vorliegenden
Erfindung verwendeten Signale, wobei es sich dabei jedoch nicht
um eine umfassende Liste der Signale handelt, die von dem Agenten 400 oder
Bus 101 übermittelt werden,
wobei sie jedoch die für
die vorliegende Erfindung bedeutendsten Signale aufweist.
-
-
-
Der
Agent 400 weist auch zwei Anordnungen bzw. Gruppen von
Datenpuffern 404 und 406 auf. Der Agent 400 weist
zwei Anordnungen von Eingabepuffern 406 und zwei Gruppen
von Ausgabepuffern 404 auf. Alternative Ausführungsbeispiele
können
jedoch auch mehr oder weniger Datenpuffer aufweisen, oder es können auch
Datenpuffer sowohl für
die Eingabe als auch die Ausgabe an Stelle von zwei unterschiedlichen
Anordnungen von Puffern verwendet werden.
-
Die
Datenpuffer 404 speichern temporär Daten, die von dem Agenten 400 über den
Bus 101 zu einem anderen Agenten übertragen werden. Gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung umfasst jeder der Datenpuffer 404 vier
separate Puffer 404a, 404b, 404C und 404d,
die jeweils 64 Datenbits speichern können. Jeder der Datenpuffer 404 wird
in einen Multiplexer 403 eingegeben. Der Multiplexer 403 wird
durch die Bussteuereinheit 138 gesteuert, wodurch die Bussteuereinheit 138 steuern
kann, welcher Teil der 64 Datenbits zu jedem beliebigen Zeitpunkt
an die Datenleitungen D[63:32]# 418 und D[31:0]# 419 vorgesehen
wird. Die Ausgabe bzw. der Ausgang des Multiplexers 403 wird
in einen zweiten Multiplexer 405 eingegeben, der auch durch
die Bussteuereinheit 138 gesteuert wird. Der Multiplexer 405 ruft
die 64 Datenbits von dem Multiplexer 403 ab und platziert
entweder die oberen 32 Bits oder die unteren 32 Bits auf den Datenleitungen D[31:0]#
419. In einem Ausführungsbeispiel
ist die Gruppe der 32 Bits, die auf den Datenleitungen D[31:0]# 419
platziert wird, von den von der Bussteuereinheit 138 empfangenen
Steuersignalen abhängig,
die wiederum von der Datenübertragungsbreite
für die
Transaktion abhängig
sind, wie dies nachstehend im Text näher beschrieben wird. Zusätzlich werden
die oberen 32 Bits von dem Multiplexer 403 ebenfalls auf
den Datenleitungen D[63:32]# 418 platziert, wodurch die oberen 32
Bits auf dem Datenbus für
Datenübertragungen
mit einer Breite von 64 Bits verfügbar werden.
-
Die
Datenpuffer 406 speichern vorübergehend Daten, die von einem
Agenten über
den Bus 101 zu dem Agenten 400 übertragen
werden. Gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung umfasst jeder der Datenpuffer 406 vier
separate Puffer, die jeweils 64 Datenbits speichern können. Die
Puffer 406 und der Multiplexer 408 entsprechen
im Wesentlichen den Puffern 404 und den Multiplexern 403 und 405,
mit der Ausnahme, dass sie in die entgegen gesetzte Richtung arbeiten
(das heißt,
sie Speichern Daten von dem Bus anstatt Daten auf den Bus zu übertragen).
Daten werden von den Leitungen D[31:0]# 410 und möglicherweise den
Leitungen D[63:32]# 418 empfangen und über den Multiplexer 408 in
einen der Datenpuffer 406 platziert. Der Multiplexer 408 sieht
entweder 64 Datenbits an einen Puffer 406 vor oder 32 Datenbits
als die oberen oder unteren 32 Bits an einen Puffer 406,
auf der Basis der Steuersignale von der Bussteuereinheit 138,
die von den Datenübertragungsbreiten
für die
Transaktion abhängig
sind, wie dies nachstehend im Text näher beschrieben wird.
-
Wenn
der Agent 400 eine Anforderung auf dem Bus ausgibt, sieht
der Agent 400 eine Anzeige der durch den Agenten 400 unterstützten Datenübertragungsbreiten
vor. In einem Ausführungsbeispiel
ist diese Anzeige in REQ[4:0]# 414 codiert, unter Verwendung von
REQ[4:3]# aktiviert in dem zweiten Taktzyklus der Anforderungsphase.
Die nachstehende Tabelle II zeigt eine Codierung der bestimmten
Datenübertragungsbreiten,
die bei dieser Implementierung unterstützt werden, wobei "0" ein inaktives Signal anzeigt, während "1" ein aktives Signal anzeigt.
-
-
Die
durch den Agenten 400 vorzusehende ordnungsgemäße Anzeige
basiert auf dem Datenbreitenindikator 401. Bei einer Implementierung
speichert der Datenbreitenindikator 401 eine der vier in
Tabelle II gezeigten Codierungen und kann direkt durch die Bussteuereinheit 138 auf
dem Bus platziert werden. Wenn der Agent 400 das Ziel der
von einem anderen, mit dem Bus gekoppelten Agenten ausgegebenen
Anforderung ist, so sieht der Agent 400 ferner als Zielagent
eine Anzeige der Datenübertragungsbreiten
vor, die von dem Agenten 400 unterstützt werden. In einem Ausführungsbeispiel
wird diese Anzeige unter Verwendung einer Kombination aus einem
oder mehreren von DRDY# 426, DRDYS# 428, TRDY# 420 und TRDYS# 422
vorgesehen. Eine Zusammenfassung der durch diese Signale vorgesehenen
Anzeigen auf der Basis, was gemäß Anzeige von
dem anfordernden Agenten unterstützt
wird, ist in der nachstehenden Tabelle III dargestellt.
-
-
Die
Signale DRDY# 426 und DRDYS# 428 zeigen ferner an, ob eine Übertragung
gemäß einem
Protokoll mit gemeinsamem Takt oder einem Quellen-synchronen Protokoll
erfolgt. Dies ist in der nachstehenden Tabelle IV zusammengefasst.
-
-
In
Ausführungsbeispielen
der vorliegenden Erfindung, bei denen verschiedene Agenten Übertragungen
von bis zu 32, 64 oder 128 Bit unterstützen, und welche Signale gemäß der Erläuterung
in der vorstehenden Tabelle III verwenden, speichern Agenten, die
an der Transaktion teilnehmen, einen Datensatz in der Bussteuereinheit 138,
ob es sich bei der durch den anfordernden Agenten als unterstützt angezeigten
Datenübertragungsbreite
um 32 oder 64 Bit oder um 64 oder 128 Bit gehandelt hat. Bei durch
eine Antwort eingeleiteten Transaktionen wird ein Datensatz von
DRDY# 426 und DRDYS# 428 gespeichert. Bei durch eine Anforderung eingeleiteten
Transaktionen oder bei einer impliziten Writeback-Transaktion wird
ein Datensatz der Signale TRDY# 420 und TRDYS# 422 gespeichert.
Dieser Datensatz wird gespeichert, um die Aktivierung von TRDY# 420
und TRDYS# 422 zu ermöglichen,
um abhängig
von der ursprünglichen
Anforderung entweder eine Übertragung
von 64 Bit oder von 128 Bit anzuzeigen. Ein Snooping-Agent überwacht
die Signale TRDY# 420 und TRDYS# 422. Wenn der Agent 400 ein
Snooping einer Anforderung auf dem Bus durchführt, der auf eine modifizierte
Cache-Zeile in dem Cache des Agenten trifft, zeigt der Agent 400,
der die Writeback-Daten
auf dem Bus platziert, die von dem Agenten 400 unterstützte Datenbreite
der Datenübertragung
an. In einem Ausführungsbeispiel
wird diese Anzeige unter Verwendung von einem oder mehreren Signalen
DRDY# 426 und DRDYS# 428 vorgesehen. Das Signal TRDY# 420 und das
Signal TRDY# 422 werden durch den Zielagenten aktiviert, wie dies
bereits vorstehend im Text beschrieben worden ist. Die nachstehende
Tabelle V zeigt eine Zusammenfassung der Anzeigen, die durch diese
Signale vorgesehen werden, auf der Basis der Datenübertragungsbreiten,
die gemäß Anzeige
sowohl von dem anfordernden Agenten als auch von dem Zielagenten unterstützt werden.
-
-
Die
Abbildung aus 6 zeigt ein Taktdiagramm der
Ereignisse einer 64-Byte-Lesetransaktion mit implizitem Writeback
gemäß einem
Quellen-synchronen Protokoll. In dem vorliegenden Ausführungsbeispiel weist
der Datenbus eine Breite von 64 Bit auf, so dass die Transaktion
die Übertragung
acht separater Chunks mit je 64 Bits erfordert.
-
In
dem Beispiel aus 6 aktiviert der anfordernde
Agent ADS# 510 in T1, um eine 64-Byte-Lesetransaktion einzuleiten.
In T2 aktiviert der anfordernde Agent bestimmt Bits der Anforderungssignale
{REQ} 414, um eine 64-Bytelänge
anzuzeigen und dass es sich um einen 64-Bit-/128-Bit-Agenten handelt.
Während der
Snoop-Phase in T5 wird HITM# 416 durch den Snooping-Agent aktiviert.
In T7 aktiviert der antwortende Agent TRDYS# 422 und TRDY# 420,
um anzuzeigen, dass er bereit ist, um Writeback-Daten zu akzeptieren, und
dass er in der Lage ist, eine 128-Bit-Datentransaktion in einem
Quellen-synchronen
Modus durchzuführen. Da
der antwortende oder der Zielagent für das Steuern der entsprechenden
Signale TRDY#/TRDYS# auf der Basis der ursprünglich empfangenen Anforderung
verantwortlich ist, wird der Snooping-Agent von dieser Last befreit.
In T8 tastet der Snooping-Agent TRDYS# 422 und TRDY# 420 aktiviert
ab, wobei DBSY# 424 deaktiviert ist. In T0 beginnt der Snooping-Agent
erneut mit der Datenphase durch Aktivierung von DBSY# 424 und SBSY#
484. Der Snooping-Agent führt
eine Vorsteuerung von STBp[3:0]# 480 an dem 75%-Punkt von T9 durch.
-
Der
Snooping-Agent beginnt mit der Übertragung
gültiger
Daten durch Aktivierung von DRDYS# 428 und DRDY# 426 und Steuern
gültiger
Daten auf D[63:0]# 608 an der ansteigenden Flanke und dem 50%-Punkt zwischen
von BCLK 600 zwischen T10 und T13. Zwei Daten-Chunks von 64 Bit
werden in einer Taktperiode von BCLK 600 auf den Bus gesteuert.
Der Snooping-Agent steuert eine ansteigende und eine fallende Flanke sowohl
an STBp[3:0]# 480 als auch an STBn[3:0]# 482 an dem 25%- und 75%-Punkt
von BCLK 600 zwischen T10 und T13 (die Mitte jeder Datenübertragung).
Der Snooping-Agent steuert eine ansteigende Flanke an STBp[3:0]#
480 und an dem 25%-Punkt von T14, um den Bus über den nächsten Agenten zu drehen.
-
Höchstens
einen Taktzyklus nachdem der Snooping-Agent die Strobes steuert,
erreichen die zentrierten Strobes die anfordernden und antwortenden
Agenten, um die Daten zu erfassen. Bei jedem ankommenden Strobe-Paar
wird ein neues Daten-Chunk in den Puffern der anfordernden und antwortenden
Agenten erfasst. Eine gewisse Zeit später speichern der anfordernde
Agent und der antwortende Agent die Daten in dem Bereich von BCLK
600. In T11 tasten die anfordernden und antwortenden Agenten DRDYS#
428 und DRDY# 426 ab und wissen, dass Daten gesendet worden sind.
Die Abbildung aus 6 veranschaulicht somit Busagenten,
die 128 Datenbits in einer Taktperiode eines 64-Bit-Busses unter
Verwendung eines Quellen-synchronen Protokolls senden und zwischen
dem Protokoll für
einen gemeinsamen Takt und dem Quellen-synchronen Protokoll Transaktion für Transaktion
wechseln.
-
Die
Abbildung aus 7 zeigt ein Taktdiagramm, das
gemäß einem
Ausführungsbeispiel
Agenten veranschaulicht, die dynamisch zwischen dem Übertragungsmodus
mit gemeinsamem Takt und dem Quellen-synchronen Übertragungsmodus in der gleichen
Transaktion wechseln. Das Taktdiagramm aus der Abbildung aus 7 veranschaulicht
eine 64-Byte-Schreibtransaktion mit implizitem Writeback, wobei
der Snoop-Agent nicht in der Lage ist, 128-Bit-Transaktionen auszuführen, und
wobei er nicht im Quellen-synchronen Modus arbeiten kann. Die Aktivierung
von ADS# 410 leitet die Transaktion in T1 ein. In T2 aktiviert der
anfordernde Agent Signale des festgelegten Anforderungssignals [REQ]
414, um eine Schreibtransaktion mit einer Länge von 64 Byte anzuzeigen.
Der empfangende Agent aktiviert in T4 TRDYS# 422 und TRDY# 420,
um anzuzeigen, dass er für
den Empfang von 64 Datenbytes bereit ist, 128 Bits je BCLK 600 für insgesamt
64 Bytes. SBSY# 484 und DBSY# 424 werden ebenfalls in T4 aktiviert,
in Erwartung, dass die Strobe-Leitungen des Busses und die Datenleitungen
des Busses während
der Übertragung
besetzt sind. DRDYS# 428 und DRDY# 426 werden in T5 aktiviert, um
dem Empfänger
gültige
Daten anzuzeigen. STBp[3:0]# 480 und STBn[3:0]#482 werden in dem
Takt 5 vorgesteuert, und die Datensignale D[63:0]# 608 werden angesteuert,
um die 64-Byte-Übertragung
zu beginnen. Die 64-Byte-Übertragung
erfolgt von den Taktzyklen 5 bis 9 auf ähnliche Weise wie die in der
Abbildung aus 6 veranschaulichte Übertragung.
-
Da
HITM# 416 aktiviert wurde, weist die Transaktion auch ein durch
einen Snoop eingeleitetes Cache-Leitungs-Writeback auf. Nach der
Deaktivierung von TRDYS# 422 und von TRDY# 420 in T5 aktiviert der antwortende
Agent erneut sowohl TRDYS# 422 als auch TRDY# 420 in T7, um eine
durch einen Snoop eingeleitete Datenübertragung anzufordern. In
T8 beobachtet der Snoop-Agent für
nur 64 Bit TRDY# 420 und wartet mit dem Beginn der Datenübertragung
auf die Verfügbarkeit
des Datenbusses. (Hiermit wird festgestellt, dass dem Snoop-Agenten
die Existenz von TRDYS# 422 nicht bekannt ist.) Der ursprüngliche
anfordernde (schreibende) Agent deaktiviert DRDYS# 428 in T0 und
bleibt ungesteuert, da der Snoop-Agent DRDYS# 428 nicht ansteuern
kann. DRDY# 426 wird während
T9 über
einen Taktzyklus deaktiviert. Der antwortende Agent beobachtet DRDY#
426 und DRDYS# 428 und bestimmt, dass die Datenübertragung unter Verwendung
einer Datenbreite von 64 Bits ausgeführt wird. RS[2:0]# 430 werden
in T10 aktiviert, um den Status der Antwort gemäß der Erläuterung in Tabelle I anzuzeigen,
wobei es sich in diesem Fall um eine Antwort eines impliziten Writeback
handelt. In T10 ist der Datenbus verfügbar und der Snoop-Agent beginnt
mit der Datenübertragung, wobei
gültige
Daten an D[63:0]# 608 angesteuert werden. Die Datenübertragung
dauert gemäß dem Protokoll des
gemeinsamen Takts acht Taktzyklen der Datenübertragung an.
-
In
der vorstehenden Patentschrift wurde die vorliegende Erfindung in
Bezug auf spezifische Ausführungsbeispiele
der Erfindung beschrieben. Die vorliegende Erfindung wurde zum Beispiel
in Bezug auf bestimmte Systemkonfigurationen, Signalcodierungen
und Datenübertragungsbreiten
beschrieben.