DE69825915T2 - Verfahren und vorrichtung zur umschaltung zwischen quellen-synchron-takt/- und gemeinsam-takt-datenübertragungs-modi in einem mehragent-übertragungs-system - Google Patents

Verfahren und vorrichtung zur umschaltung zwischen quellen-synchron-takt/- und gemeinsam-takt-datenübertragungs-modi in einem mehragent-übertragungs-system Download PDF

Info

Publication number
DE69825915T2
DE69825915T2 DE69825915T DE69825915T DE69825915T2 DE 69825915 T2 DE69825915 T2 DE 69825915T2 DE 69825915 T DE69825915 T DE 69825915T DE 69825915 T DE69825915 T DE 69825915T DE 69825915 T2 DE69825915 T2 DE 69825915T2
Authority
DE
Germany
Prior art keywords
data
bus
agent
transaction
signals
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE69825915T
Other languages
English (en)
Other versions
DE69825915D1 (de
Inventor
S. Stephen PAWLOWSKI
D. Peter MACWILLIAMS
S. William WU
J. Len SCHULTZ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE69825915D1 publication Critical patent/DE69825915D1/de
Application granted granted Critical
Publication of DE69825915T2 publication Critical patent/DE69825915T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4009Coupling between buses with data restructuring
    • G06F13/4018Coupling between buses with data restructuring with data-width conversion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges
    • G06F13/405Coupling between buses using bus bridges where the bridge performs a synchronising function

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Information Transfer Systems (AREA)

Description

  • 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.
  • TABELLE I
    Figure 00170001
  • Figure 00180001
  • 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.
  • TABELLE II
    Figure 00200001
  • 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.
  • TABELLE III
    Figure 00220001
  • 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.
  • TABELLE IV
    Figure 00230001
  • 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.
  • TABELLE V
    Figure 00250001
  • 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.

Claims (10)

  1. Verfahren zur Datenübertragung zwischen Busagenten in einem Computersystem, wobei das System einen mit einer Bustaktrate betriebenen Bus aufweist, wobei das Verfahren die folgenden Schritte umfasst: Empfangen einer Transaktionsanforderung von einem anfordernden Agenten an einem antwortenden Busagenten, mit einer Anzeige der Datenbreite, die der anfordernde Agent für die angeforderte Transaktion erfordert; Konfigurieren einer Datenübertragung gemäß der von dem anfordernden Agenten erforderten Datenbreite durch den antwortenden Busagenten als Reaktion auf die Transaktionsanforderung; und Ausführen der Datenübertragung asynchron zu dem Bustakt, wenn die Datenbreite eine Breite einer ersten Gruppe darstellt, wobei die Datenübertragung ansonsten synchron im Verhältnis zu dem Bustakt ausgeführt wird, wobei der anfordernde Agent und der antwortende Agent jeweils Daten mit Breiten der ersten Gruppe und einer zweiten Gruppe verarbeiten, und wobei die erste Gruppe größere Datenbreiten als die zweite Gruppe aufweist.
  2. Verfahren nach Anspruch 1, wobei die asynchrone Übertragung im Verhältnis zu dem Bustakt schneller ist als die synchrone Übertragung im Verhältnis zu dem Bustakt.
  3. Verfahren nach Anspruch 2, wobei der antwortende Agent Daten mit Breiten der ersten Gruppe und der zweiten Gruppe verarbeitet, und wobei die erste Gruppe größere Datenbreiten als die zweite Gruppe aufweist.
  4. Verfahren nach Anspruch 3, wobei der anfordernde Agent Daten mit Breiten der ersten Gruppe und einer zweiten Gruppe verarbeitet, und wobei die erste Gruppe größere Datenbreiten als die zweite Gruppe aufweist.
  5. Verfahren nach Anspruch 4, wobei das Verfahren ferner den folgenden Schritt umfasst: Senden eines Signals an den anfordernden Agenten das die Gruppen der Datenbreiten anzeigt, welche der antwortende Agent verarbeitet, wenn es sich bei der Transaktionsanforderung um eine Anforderung zum Schreiben von Daten an den antwortenden Agenten handelt.
  6. Verfahren nach Anspruch 1, wobei der Schritt des Ausführens der asynchronen Datenübertragung die folgenden Schritte umfasst: Übertragen mindestens eines Strobes, der jedem einer Mehrzahl von Daten-Chunks entspricht, welche die Datenübertragung umfasst; und Verwenden eines Strobes zum Speichern eines Daten-Chunks in einem Puffer eines die Datenübertragung empfangenden Agenten.
  7. Vorrichtung zur Datenübertragung in einem Computersystem, wobei die Vorrichtung folgendes umfasst: einen Bus, der eine Mehrzahl von Datenpfaden zwischen Busagenten des Computersystems unterstützt; und einen Busagenten, der mit einem Bus gekoppelt ist, der eine Mehrzahl von Datenpfaden zwischen Busagenten des Computersystems unterstützt, wobei der Busagent folgendes umfasst: eine Bussteuereinheit, die den Bus während bestimmten den Busagenten und einen anderen Busagenten an dem Bus betreffenden Transaktionen steuert, wobei die Bussteuereinheit eine Mehrzahl von Signalen über die Pins des Busagenten übermittelt, die folgende Signale umfassen: Anforderungssignale, die eine bestimmte Art von Transaktion anzeigen; Datenbereitschaftssignale, die anzeigen, dass der Busagent für die Datenübermittlung bereit ist, sowie eine Mehrzahl von Datenbreiten, welche der Busagent verarbeitet und ob Daten im Verhältnis zu einem Bustakt synchron oder asynchron übertragen werden; Zielbereitschaftssignale, die anzeigen, dass der Busagent für den Empfang von Daten bereit ist, sowie eine Mehrzahl von Datenbreiten, die der Busagent verarbeitet, und ob Daten im Verhältnis zu einem Bustakt synchron oder asynchron übertragen werden; Datensignale, die während einer Transaktion übertragen werden; und ausgehende Strobe-Signale, die mit den Datensignalen übermittelt werden, welche Datenpakete während einer Transaktion an dem anderen Bus speichern, die im Verhältnis zu dem Bustakt asynchron ausgeführt wird; eine Datenbreitenanzeige, die mit der Bussteuereinheit gekoppelt ist, die an die Bussteuereinheit eine Anzeige der Datenbreiten übermittelt, die von dem Agenten verarbeitet werden; wobei der Busagent eine Mehrzahl von Signalen über die Pins des Busagenten empfängt, welche eingehende Strobe-Signale umfassen, die mit Datensignalen von dem anderen Busagent empfangen werden, der Datenpakete an dem Busagent in einer Transaktion speichert, die im Verhältnis zu dem Bustakt asynchron ausgeführt wird.
  8. Vorrichtung nach Anspruch 7, wobei die Vorrichtung ferner folgendes umfasst: eine erste Mehrzahl von Datenpuffern, die vorübergehend in den Agenten eintretende Datenpakete speichern; einen ersten Multiplexer, der mit der ersten Mehrzahl von Datenpuffern und mit der Bussteuereinheit gekoppelt ist, der ein Datenpaket von dem Bus zur Speicherung in einem Puffer der ersten Mehrzahl von Datenpuffern auswählt; eine zweite Mehrzahl von Datenpuffern, die vorübergehend den Agenten verlassende Datenpakete speichern; und einen zweiten Multiplexer, der mit der zweiten Mehrzahl von Datenpuffern und mit der Bussteuereinheit gekoppelt ist, der ein Datenpaket von den Datenpuffern zur Übermittlung an den Bus auswählt.
  9. Vorrichtung nach Anspruch 8, wobei die Strobe-Signale bei der asynchronen Transaktion die Datenpakete in der ersten Mehrzahl von Datenpuffern mit einer Rate speichern, die doppelt so hoch ist wie die Rate des Bustakts.
  10. Vorrichtung nach Anspruch 9, wobei der Bus 64 Bits breit ist, und wobei die ersten und zweiten Mehrzahlen von Datenpuffern acht 64-Bit-Datenpuffer umfassen.
DE69825915T 1997-06-25 1998-06-25 Verfahren und vorrichtung zur umschaltung zwischen quellen-synchron-takt/- und gemeinsam-takt-datenübertragungs-modi in einem mehragent-übertragungs-system Expired - Lifetime DE69825915T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US881941 1992-05-12
US08/881,941 US5919254A (en) 1997-06-25 1997-06-25 Method and apparatus for switching between source-synchronous and common clock data transfer modes in a multiple processing system
PCT/US1998/013339 WO1998059298A1 (en) 1997-06-25 1998-06-25 Method and apparatus for switching between source-synchronous and common clock data transfer modes in a multiple agent processing system

Publications (2)

Publication Number Publication Date
DE69825915D1 DE69825915D1 (de) 2004-09-30
DE69825915T2 true DE69825915T2 (de) 2005-09-08

Family

ID=25379529

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69825915T Expired - Lifetime DE69825915T2 (de) 1997-06-25 1998-06-25 Verfahren und vorrichtung zur umschaltung zwischen quellen-synchron-takt/- und gemeinsam-takt-datenübertragungs-modi in einem mehragent-übertragungs-system

Country Status (6)

Country Link
US (1) US5919254A (de)
EP (1) EP1032880B1 (de)
AU (1) AU8268498A (de)
DE (1) DE69825915T2 (de)
HK (1) HK1031442A1 (de)
WO (1) WO1998059298A1 (de)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6336159B1 (en) 1997-06-25 2002-01-01 Intel Corporation Method and apparatus for transferring data in source-synchronous protocol and transferring signals in common clock protocol in multiple agent processing system
US6199135B1 (en) * 1998-06-12 2001-03-06 Unisys Corporation Source synchronous transfer scheme for a high speed memory interface
JP3592547B2 (ja) * 1998-09-04 2004-11-24 株式会社ルネサステクノロジ 情報処理装置および信号転送方法
US6665807B1 (en) 1998-09-04 2003-12-16 Hitachi, Ltd. Information processing apparatus
US6434654B1 (en) * 1999-03-26 2002-08-13 Koninklijke Philips Electronics N.V. System bus with a variable width selectivity configurable at initialization
US6311285B1 (en) * 1999-04-27 2001-10-30 Intel Corporation Method and apparatus for source synchronous transfers at frequencies including an odd fraction of a core frequency
US6430658B1 (en) * 1999-05-20 2002-08-06 International Business Machines Corporation Local cache-to-cache transfers in a multiprocessor system
US6609171B1 (en) * 1999-12-29 2003-08-19 Intel Corporation Quad pumped bus architecture and protocol
US6920132B1 (en) * 2000-05-30 2005-07-19 Marvell International Ltd. Reduced pin gigabit media independent interface
US6438638B1 (en) 2000-07-06 2002-08-20 Onspec Electronic, Inc. Flashtoaster for reading several types of flash-memory cards with or without a PC
US7295443B2 (en) 2000-07-06 2007-11-13 Onspec Electronic, Inc. Smartconnect universal flash media card adapters
US6449213B1 (en) * 2000-09-18 2002-09-10 Intel Corporation Memory interface having source-synchronous command/address signaling
US6651122B2 (en) * 2000-12-07 2003-11-18 Micron Technology, Inc. Method of detecting a source strobe event using change detection
US6715094B2 (en) * 2000-12-20 2004-03-30 Intel Corporation Mult-mode I/O interface for synchronizing selected control patterns into control clock domain to obtain interface control signals to be transmitted to I/O buffers
US6742160B2 (en) 2001-02-14 2004-05-25 Intel Corporation Checkerboard parity techniques for a multi-pumped bus
JP2003158512A (ja) 2001-11-21 2003-05-30 Nec Corp デジタル信号処理方式及びデータ処理装置
JP3657234B2 (ja) * 2002-03-08 2005-06-08 Necマイクロシステム株式会社 非同期インタフェース装置及び非同期インタフェース方法
US7085889B2 (en) * 2002-03-22 2006-08-01 Intel Corporation Use of a context identifier in a cache memory
US6640277B1 (en) * 2002-05-02 2003-10-28 International Business Machines Corporation Input staging logic for latching source synchronous data
US7457901B2 (en) * 2005-07-05 2008-11-25 Via Technologies, Inc. Microprocessor apparatus and method for enabling variable width data transfers
US7441064B2 (en) * 2005-07-11 2008-10-21 Via Technologies, Inc. Flexible width data protocol
US7502880B2 (en) * 2005-07-11 2009-03-10 Via Technologies, Inc. Apparatus and method for quad-pumped address bus
US7444472B2 (en) * 2005-07-19 2008-10-28 Via Technologies, Inc. Apparatus and method for writing a sparsely populated cache line to memory
US7590787B2 (en) * 2005-07-19 2009-09-15 Via Technologies, Inc. Apparatus and method for ordering transaction beats in a data transfer
US7484028B2 (en) * 2005-12-20 2009-01-27 Fujitsu Limited Burst-capable bus bridges for coupling devices to interface buses
US7334061B2 (en) * 2005-12-20 2008-02-19 Fujitsu Limited Burst-capable interface buses for device-to-device communications
US7639712B2 (en) 2006-01-06 2009-12-29 Fujitsu Limited Low-level media access layer processors with extension buses to high-level media access layers for network communications
US7856571B2 (en) * 2007-01-22 2010-12-21 Hewlett-Packard Development Company, L.P. Method and system for communication employing dual slew rates

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR900007564B1 (ko) * 1984-06-26 1990-10-15 모토로라 인코포레이티드 동적 버스를 갖는 데이터 처리기
JP2504206B2 (ja) * 1989-07-27 1996-06-05 三菱電機株式会社 バスコントロ―ラ
JPH03216776A (ja) * 1990-01-22 1991-09-24 Mitsubishi Electric Corp 集積回路装置及びそれにより構成されたマイクロプロセッサ
US5781746A (en) * 1990-07-20 1998-07-14 Siemens Aktiengesellschaft Microprocessor with multiple bus configurations
US5274763A (en) * 1990-12-28 1993-12-28 Apple Computer, Inc. Data path apparatus for IO adapter
JP2718292B2 (ja) * 1991-07-24 1998-02-25 日本電気株式会社 マイクロプロセッサ
US5388072A (en) * 1992-04-10 1995-02-07 International Business Machines Corporation Bit line switch array for electronic computer memory
US5734877A (en) * 1992-09-09 1998-03-31 Silicon Graphics, Inc. Processor chip having on-chip circuitry for generating a programmable external clock signal and for controlling data patterns
JP3369227B2 (ja) * 1992-11-09 2003-01-20 株式会社東芝 プロセッサ
US5550533A (en) * 1992-12-30 1996-08-27 Intel Corporation High bandwidth self-timed data clocking scheme for memory bus implementation
US5446845A (en) * 1993-09-20 1995-08-29 International Business Machines Corporation Steering logic to directly connect devices having different data word widths
JPH0844665A (ja) * 1994-07-14 1996-02-16 Fujitsu Ltd 複数のデータ転送サイズ及びプロトコルをサポートするバス

Also Published As

Publication number Publication date
EP1032880A1 (de) 2000-09-06
EP1032880B1 (de) 2004-08-25
WO1998059298A1 (en) 1998-12-30
EP1032880A4 (de) 2002-03-27
AU8268498A (en) 1999-01-04
HK1031442A1 (en) 2001-06-15
DE69825915D1 (de) 2004-09-30
US5919254A (en) 1999-07-06

Similar Documents

Publication Publication Date Title
DE69825915T2 (de) Verfahren und vorrichtung zur umschaltung zwischen quellen-synchron-takt/- und gemeinsam-takt-datenübertragungs-modi in einem mehragent-übertragungs-system
DE69027515T2 (de) Vorrichtung für Prioritätsarbitrierungskonditionierung bei gepufferter Direktspeicheradressierung
DE19580990C2 (de) Verfahren und Einrichtung zum Ausführen verzögerter Transaktionen
DE68920435T2 (de) Steuereinheit für den speicher.
DE3687367T2 (de) Ein/ausgabe-steuerungssystem.
DE69108434T2 (de) Mehrgruppen-Signalprozessor.
DE69531933T2 (de) Busarchitektur in hochgradiger pipeline-ausführung
DE3689042T2 (de) Gerät zur Pufferung von Schreibanforderungen.
DE68922784T2 (de) Mehrfachbus-Mikrorechnersystem mit Busarbitrierung.
DE19580707C2 (de) PCI-ZU-ISA-Interrupt-Protokoll-Konverter und -Auswahlmechanismus
DE69018100T2 (de) Datenübertragung über Busadressleitungen.
DE3685876T2 (de) Meister-sklave-mikroprozessorsystem mit einem virtuellen speicher.
DE60125112T2 (de) PCI-Arbiter mit unter Spannung stellbarer Steuerungsunterstützung
DE3782500T2 (de) Gemeinsam genutzte speicherschnittstelle fuer datenverarbeitungsanlage.
DE19900345A1 (de) Vorrichtung und Verfahren für die Bereitstellung einer Schnittstelle für eine Verbundsteuereinheit eines Universellen Seriellen Buses
DE4018481C2 (de)
DE69726302T2 (de) Busschnittstellensteuerungsschaltung
DE69219848T2 (de) Verfahren zur Behandlung von Datenübertragungen in einen Computersystem mit einem Zweibusbau
DE19900251B4 (de) Vorrichtung und Verfahren zum Steuern eines vielseitigen USB-Endpunktkanals
DE69119147T2 (de) Erweiterungskarte mit mehreren Geschwindigkeiten
DE68920443T2 (de) Systembus mit multiplexbetriebenen steuer-kennzeichnungsinformationen und daten.
DE60314641T2 (de) Verfahren, system und programm zur konfiguration von teilnehmern auf einem bus fürein-/ausgabeoperationen
DE69729598T2 (de) Verfahren und Vorrichtung zur Adressenparitätsprüfung für mehrfache überlappende Addressbereiche auf einem gemeinsamen Bus
DE10056152B4 (de) Verfahren zur Durchführung von Busarbitration zwischen Steuerchips eines Chipsatzes mit preemptiver Fähigkeit
DE3200042C2 (de)

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8328 Change in the person/name/address of the agent

Representative=s name: HEYER, V., DIPL.-PHYS. DR.RER.NAT., PAT.-ANW., 806