DE69725687T2 - Transaktionsübertragung zwischen Datenbussen in einem Rechnersystem - Google Patents

Transaktionsübertragung zwischen Datenbussen in einem Rechnersystem Download PDF

Info

Publication number
DE69725687T2
DE69725687T2 DE69725687T DE69725687T DE69725687T2 DE 69725687 T2 DE69725687 T2 DE 69725687T2 DE 69725687 T DE69725687 T DE 69725687T DE 69725687 T DE69725687 T DE 69725687T DE 69725687 T2 DE69725687 T2 DE 69725687T2
Authority
DE
Germany
Prior art keywords
pci
computer system
transactions
transaction
bus
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
DE69725687T
Other languages
English (en)
Other versions
DE69725687D1 (de
Inventor
Brian S. Spring Hausauer
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.)
Compaq Computer Corp
Original Assignee
Compaq Computer 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 Compaq Computer Corp filed Critical Compaq Computer Corp
Publication of DE69725687D1 publication Critical patent/DE69725687D1/de
Application granted granted Critical
Publication of DE69725687T2 publication Critical patent/DE69725687T2/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/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
    • G06F13/4059Coupling between buses using bus bridges where the bridge performs a synchronising function where the synchronisation uses buffers, e.g. for speed matching between buses

Description

  • Die Erfindung bezieht sich auf eine Übertragung von Transaktionen zwischen Datenbussen in einem Computersystem.
  • Computersysteme umfassen oftmals einen oder mehrere Datenbus(se), die ermöglichen, dass Komponenten des Computersystems miteinander kommunizieren. Zum Beispiel ist ein herkömmlicher Typ eines Datenbusses ein Peripheral Component Interface (PCI) Bus, der ein spezielles Kommunikationsprotokoll zwischen der CPU/dem Hauptspeicher des Systems und den peripheren Komponenten, wie beispielsweise kleinen Computer-System-Schnittstellen-(SCSI)-Vorrichtungen und Netzwerk-Interface-Karten (NICs), schafft. Wenn der Systemspeicher und die peripheren Komponenten (z. B. PCI-Vorrichtungen), auf unterschiedlichen Bussen vorhanden sind, ist eine Brücke erforderlich, um den Fluss von Datentransaktionen zwischen den zwei Bussen zu handhaben. Typischerweise sind System-Speicher- und PCI-Vorrichtungen jeweils, zumindest indirekt, auf PCI-Bussen vorhanden, die durch eine PCI-zu-PCI-Brücke verbunden sind. Eine PCI-Bus-Architektur ist durch die PCI Local Bus Specification, Revision 2.1 („PCI Spec 2.1"), veröffentlicht im Juni 1995, durch PCI Special Interest Group, Portland, Oregon, die hier unter Bezug darauf eingeschlossen wird, definiert. Die PCI-zu-PCI-Brücken-Architektur ist durch die PCI-zu-PCI Brigde Architecture Specification, Revision 1.0 („PCI Brigde Spec 1.0"), veröffentlicht im April 1994, durch die PCI Special Interest Group, die auch hier unter Bezugnahme darauf eingeschlossen wird, definiert.
  • Unter den PCI Spec 2.1 und PCI Bridge Spec 1.0 Standards unterstützen PCI-Brücken zwei Typen von Transaktionen: gepostete Transaktionen (umfassend alle Speicher-Schreib-Zyklen), die auf dem initiierenden Bus abgeschlossen werden, bevor sie auf dem Target- bzw. Ziel-Bus abgeschlossen werden, und Delayed- bzw. verzögerte Transaktionen (umfassend Speicher-Lese-Anforderungen und I/O- und Konfigurations-Lese/Schreib-Anforderungen), die auf dem Target-Bus abgeschlossen werden, bevor sie auf dem initiierenden Bus abgeschlossen werden. Gemäß der PCI Spec 2.1 müssen PCIzu-PCI-Brücken gepostete Schreib-Transaktionen stark favorisieren, wenn die Reihenfolge bestimmt wird, in der Transaktionen auf dem Target-Bus durchgeführt werden sollen. Die PCI Spec 2.1 fordert, dass, um Verriegelungs-Zustände zu verhindern, das Computersy stem gepostete Schreibzyklen favoriseren muss, um früher initiierte, verzögerte Anforderungszyklen im Bypass vorbeizuführen, und muss verhindern, dass verzögerte Anforderungs-Zyklen früher initiierte, gepostete Schreibzyklen im Bypass passieren. Dieses Erfordernis gilt sogar dann, wenn eine gepostete Schreib-Transaktion und eine verzögerte Anforderungs-Transaktion zwischen zwei unterschiedlichen Paaren von Vorrichtungen auftreten.
  • Wie nun 1 zeigt, umfasst ein typisches Computersystem eine zentrale Verarbeitungseinheit (CPU 10) und eine Hauptspeichervorrichtung 12 (umfassend eine Speichersteuereinheit), verbunden mit einem Host-Bus 14. Der Host-Bus 14 kommuniziert mit einem PCI-Bus 16 über eine Host-zu-PCI-Brückenvorrichtung 18. Der PCI-Bus 16 wiederum kommuniziert mit einem anderen PCI-Bus 19 über eine PCI-zu-PCI-Brücke 20. Der PCI-Bus 16 ist als der „primäre" PCI-Bus bekannt und der PCI-Bus 19 ist als der „sekundäre" PCI-Bus bekannt, da der PCI-Bus 16 hierarchisch näher zu dem Host-Bus 14 steht, als dies für den PCI-Bus 19 der Fall ist.
  • Verschiedene periphere Vorrichtungen, umfassend eine Video-Karte 22, eine NIC 24 und eine PCI-Optionskarte 26, sind mit dem sekundären PCI-Bus 19 verbunden. Jede Vorrichtung wird in einen „Schlitz" auf dem sekundären PCI-Bus 19 eingesteckt. Die PCI-Optionskarte 26 umfasst eine PCI-zu-PCI-Brückenvorrichtung 28 und einen PCI-Bus 30 selbst, was ermöglicht, dass zusätzliche PCI-Vorrichtungen in einen einzelnen Schlitz an dem sekundären PCI-Bus 19 eingesteckt werden können. Eine oder mehrere PCI-Vorrichtung(en), wie beispielsweise die SCSI-Vorrichtung 32, kann bzw. können an der PCI-Optionskarte 26 vorhanden sein. Die PCI-Optionskarte 26 arbeitet als eine „multithreaded" Vorrichtung (d.h. eine Vorrichtung, die mehrfache, verzögerte Transaktionen gleichzeitig beibehalten kann), wenn mehr als eine PCI-Vorrichtung mit derem lokalen PCI-Bus 30 verbunden ist.
  • Transaktionen, initiiert durch die CPU und auf eine Vorrichtung auf dem sekundären PCI-Bus 19 abstellend bzw. zielend, sind als „downstream" („ausgangsseitige") Transaktionen bekannt, und Transaktionen, initiiert durch eine Vorrichtung auf dem sekundären Bus 19 und auf den Hauptspeicher 12 hin gerichtet bzw. zielend, sind als „upstream" („eingangsseitige") Transaktionen bekannt. Transaktionen, initiiert durch eine Vorrichtung auf dem sekundären Bus 19 und auf eine Vorrichtung auf dem sekundären Bus 19 hin zielend bzw. darauf gerichtet, sind als „peer-zu-peer" Transaktionen bekannt. Peer-zupeer Transaktionen werden hier nicht behandelt.
  • Gemäß der PCI Spec 2.1 müssen irgendwelche geposteten Schreib-Transaktionen, initiiert auf dem primären oder sekundären PCI-Bus und gepostet in der PCI-zu-PCI-Brückenvorrichtung 20, auf dem Target-Bus abgeschlossen werden, bevor irgendeine darauffolgend herausgegebene Transaktion auf dem Target-Bus abgeschlossen werden kann. Zusätzlich muss irgendeine Transaktion, die auf dem initiierenden Bus abschließt, bevor eine verzögerte Lese-Transaktion auf dem Bus initiiert wird, auf dem Target-Bus abgeschlossen werden, bevor die verzögerte Lese-Transaktion auf dem Target-Bus abgeschlossen ist. In ähnlicher Weise muss irgendeine Transaktion, die auf dem initiierenden Bus abschließt, nachdem eine verzögerte Lese-Transaktion auf dem initiierenden Bus abschließt, abschließen, nachdem die verzögerte Lese-Transaktion auf dem Target-Bus abschließt. Deshalb muss eine Speicher-Schreib-Transaktion, gepostet in der PCI-zu-PCI-Brücke 20 durch die SCSI-Vorrichtung 22, auf dem primären PCI-Bus 16 abgeschlossen werden, bevor eine später herausgegebene, verzögerte Lese-Anforderung von dem NIC 24 abgeschlossen ist, und die gepostete Speicher-Schreib-Transaktion muss Prefetch-Daten, zugeordnet irgendwelchen früher herausgegebenen, verzögerten Lese-Transaktionen von dem NIC 24, invalidieren bzw. für ungültig erklären (d.h. die Prefetch-Daten müssen von der PCI-zu-PCI-Brücke 20 gelöscht werden, wenn die Speicher-Schreib-Transaktion gepostet wird).
  • Gemäß der vorliegenden Erfindung wird ein Computersystem geschalten, das aufweist:
    eine erste Vorrichtung auf einem ersten Datenbus,
    eine zweite und eine dritte Vorrichtung auf einem zweiten Datenbus, und
    eine Brückenvorrichtung, die zwischen dem ersten und dem zweiten Datenbus eingefügt ist, dadurch gekennzeichnet, dass:
    die Brückenvorrichtung so konfiguriert ist, dass sie Transaktionen zwischen der ersten Vorrichtung und der zweiten Vorrichtung ohne Rücksicht darauf abwickelt, ob die Transaktionen vor oder nach Transaktionen zwischen der ersten Vorrichtung und der dritten Vorrichtung in die Brückenschaltung eingetreten sind.
  • Ausführungsformen der Erfindung umfassen eines oder mehrere der nachfolgenden Merkmale. Die Brückenvorrichtung kann die chronologische Reihenfolge der Transaktio nen zwischen der ersten Vorrichtung und der zweiten Vorrichtung beibehalten. Die Brükkenvorrichtung kann versuchen, die Abwicklung einer verzögerten Transaktion zwischen der ersten Vorrichtung und der zweiten Vorrichtung zu beschleunigen, wenn die verzögerte Transaktion die Abwicklung einer anderen Transaktion (z. B. einer ausgangsseitigen Lese-Transaktion von der CPU) zwischen der ersten und der zweiten Vorrichtung verhindert. Das Computersystem kann ein Zweit-Basisadressregister umfassen, das dabei hilft, festzustellen, welche der Vorrichtungen auf dem zweiten Datenbus das Ziel einer von der ersten Vorrichtung ausgelösten Transaktion ist. Das Computersystem kann auch ein Zuweisungssignal umfassen, das entweder der zweiten oder der dritten Vorrichtung eine Steuerung des zweiten Datenbusses zuweist, und die Brückenvorrichtung kann so konfiguriert sein, dass sie das Zuweisungssignal nutzt, um festzustellen, ob die zweite oder die dritte Vorrichtung eine Transaktion auf dem zweiten Datenbus ausgelöst hat. Einer oder beide der Datenbusse kann ein PCI-Bus sein.
  • Ausführungsformen der Erfindung umfassen eines oder mehrere der nachfolgenden Merkmale. Die chronologische Reihenfolge von Transaktionen, die zwischen der Vorrichtung auf dem ersten Datenbus und einer der anderen Vorrichtungen angenommen wird, kann bewahrt werden. Eine Zuführung einer verzögerten Transaktion zwischen der Vorrichtung auf dem ersten Datenbus und einer der anderen Vorrichtungen kann beschleunigt werden, wenn die verzögerte Transaktion eine andere Transaktion verhindert (z. B. eine ausgangsseitige Lese-Transaktion von der CPU), dass sie zwischen den Vorrichtungen ausgeführt wird. Einer oder beide der Busse kann bzw. können ein PCI-Bus sein.
  • Ausführungsformen der Erfindung können eines oder mehrere der nachfolgenden Merkmale) umfassen. Die Entscheidungsschaltung kann so konfiguriert sein, um die andere Transaktion, nach Auswählen der einen Transaktion, auszuwählen. Der Speicherbereich kann zwei Warteschlangenblöcke umfassen, von denen einer Transaktionen speichert, die zwischen der CPU und einer der PCI-Vorrichtungen auftreten, und der andere Transaktionen speichert, die zwischen der CPU und der anderen PCI-Vorrichtung auftreten.
  • Der Speicherbereich kann einen ersten Satz von Puffern umfassen, die einen Puffer besitzen, der Daten speichert, die von der CPU zu einer ersten einen der PCI-Vorrichtungen fließen, und einen anderen Puffer, der Daten speichert, die von der ersten PCI-Vorrichtung zu der CPU fließen. Der Speicherbereich kann auch einen zweiten Satz von Puffern umfassen, die einen Puffer haben, der Daten speichert, die von der CPU zu einer zweiten einen der PCI-Vorrichtungen fließen, und einen anderen Puffer, der Daten speichert, die von der zweiten PCI-Vorrichtung zu der CPU fließen.
  • Ausführungsformen der Erfindung können eines oder mehrere der nachfolgenden Merkmale umfassen. Jeder zugeordnete Speicherbereich kann einen Bereich umfassen, der Daten zugeordnet ist, die in einer bestimmten Richtung über die Brückenvorrichtung fließen, und er kann auch einen anderen Bereich umfassen, der Daten zugeordnet ist, die in der entgegengesetzten Richtung über die Brückenvorrichtung fließen. Der zugeordnete Speicherbereich kann einen zugeordneten Puffer für jeden Typ einer Transaktion umfassen, die die Brücke überquert. Die Transaktions-Typen können gepostete Schreibvorgänge, verzögerte Anforderungen und verzögerte Abschlüsse umfassen.
  • Unter den Vorteilen der Ausführungsformen der Erfindung sind die folgenden vorhanden. Transaktions-Reihenfolge-Regeln können erleichtert werden, so dass Transaktionen zwischen zwei Vorrichtungen streng nur in Bezug auf andere Transaktionen zwischen denselben zwei Vorrichtungen in der Reihenfolge geregelt sind. Zum Beispiel kann in einer Architektur mit verzögerter Transaktion, eine verzögerte Lese-Transaktion zwischen einer CPU und einer ersten PCI-Vorrichtung vor einer früher ausgegebenen, geposteten Schreib-Transaktion zwischen der CPU und einer anderen PCI-Vorrichtung abgeschlossen werden. Zusätzlich müssen vorab abgerufene Daten, zugeordnet zu einer früher ausgegebenen, verzögerten Lese-Transaktion zwischen der CPU und der ersten PCI-Vorrichtung, nicht für ungültig erklärt werden, wenn die Schreib-Transaktion zwischen der CPU und der anderen PCI-Vorrichtung gepostet ist. Deshalb können Computersysteme, die auf PCI-Brücken beruhen, effektiver arbeiten, da Daten, zugeführt während verzögerter Transaktionen, nicht häufig ausgesondert werden.
  • Andere Merkmale und Vorteile werden aus der nachfolgenden Beschreibung und den Ansprüchen ersichtlich werden.
  • 1 zeigt ein Blockdiagramm eines Computersystems.
  • 2 zeigt ein Blockdiagramm eines Computersystems, in dem Datenbusse durch eine Brücke verbunden sind, die erleichternde Transaktions-Reihenfolge-Regeln umsetzt. 3 zeigt ein Blockdiagramm einer Master-Zyklus-Entscheidungseinrichtung, die eine geeignete Reihenfolge von Transaktionen sicherstellt.
  • 4A und 4B zeigen Zustands-Übergangs-Diagramme eines Entscheidungsschemas.
  • 5 zeigt ein Blockdiagramm einer alternativen Brückenarchitektur.
  • Wie 2 zeigt, umfasst ein Computersystem 50 eine PCI-zu-PCI-Brückenvorrichtung 50 (PPB oder „Brücke"), die einen primären und einen sekundären PCI-Bus 52 und 54 jeweils verbindet, die gelockerten Transaktions-Reihenfolge-Regeln folgen. Insbesondere arbeitet die Brücke 50 so, dass Transaktionen zwischen der CPU 58 und der PCI-Vorrichtung 60 („Vorrichtung A") nur in Bezug auf andere Transaktionen zwischen diesen zwei Vorrichtungen geordnet sind, ohne Berücksichtigung der chronologischen Beziehung zwischen diesen Transaktionen und Transaktionen, die zwischen der CPU 58 und der PCI-Vorrichtung 62 („Vorrichtung B") auftreten.
  • Die Brücke 50 erzielt eine gelockerte Transaktions-Reihenfolge durch Beibehalten von zwei identischen Sätzen von Puffern 64 und 66, oder „Warteschlangenblöcke", und zwar für jedes PCI-Vorrichtungs- „Paar", das über die Brücke 50 arbeiten kann. Zum Beispiel speichert der Warteschlangenblock 64 temporär Transaktionen, die zwischen der CPU 58 und der Vorrichtung A 60 auftreten, während ein Warteschlangenblock 66 temporär Transaktionen speichert, die zwischen der CPU 58 und der Vorrichtung B 62 auftreten. Die Brücke 50 wird einen zusätzlichen Warteschlangenblock für jede andere PCI-Vorrichtung auf dem sekundären PCI-Bus 54 umfassen. Die Brückenvorrichtung 50 behandelt die CPU 58 und den Speicher 59 als eine einzelne Vorrichtung auf dem primären PCI-Bus 52. Die Puffer in den Warteschlangenblöcken 64 und 66 müssen nicht permanent den sekundären PCI-Schlitzen zugeordnet sein, sondern können anstelle davon dynamisch zugeordnet werden, z. B. bei einem System-Start.
  • Jeder Warteschlangenblock 64 und 66 vennraltet Transaktionen, die zwischen dem primären PCI-Bus 52 und den Vorrichtungen 60 und 62 auf dem sekundären PCI-Bus 54 fließen. Die Warteschlangenblöcke 64 und 66 sind ähnlich, weshalb nur der Warteschlangenblock 64 nachfolgend beschrieben wird. Der Warteschlangenblock 66 (und irgendwelche anderen Warteschlangenblöcke, die in der Brückenvorrichtung 52 vorhanden sein können) funktionieren ähnlich. Jeder Warteschlangenblock gleicht dem Warteschlangenblock, der in der US-Patentanmeldung 08/655,254, angemeldet am 05. Juni 1996 durch John MacLaren und AIan Goodrum, und hier unter Bezugnahme darauf insgesamt eingeschlossen, dargestellt und beschrieben ist.
  • Jeder Warteschlangenblock 64 enthält drei eingangsseitige Warteschlangen 70, 72 und 74, die Informationen speichern, die eingangsseitig fließen (d.h. von der entsprechenden PCI-Vorrichtung 60 auf dem sekundären PCI-Bus 54 zu der CPU 58), und drei ausgangsseitige Warteschlangen 76, 78 und 80, die Informationen speichern, die ausgangsseitig fließen (d.h. von der CPU 58 zu der entsprechenden PCI-Vorrichtung 60). Der Warteschlangenblock 64 umfasst auch zwei Zyklus-Entscheidungseinrichtungen 82 und 84 und zwei Warteschlangen-Block-zu-PCI-(QPIF)-Schnittstellen 86 und 89, die den Fluss von Informationen heraus aus irgendeiner der eingangsseitigen oder ausgangsseitigen Warteschlange verwalten, wie dies nachfolgend beschrieben ist.
  • Die erste, ausgangsseitige Warteschlange, eine gepostete Speicher-Schreib-Warteschlange 76, speichert gepostete Speicher-Schreib-Zyklen, herausgegeben durch die CPU 58 auf dem primären Bus 52 zusammen mit allen Informationen, die dazu erforderlich sind, jeden Zyklus auf dem sekundären Bus 54 auszuführen. Die PMWQ 76 besitzt vier Transaktionspuffer, wobei jeder davon eine gepostete Speicher-Schreib-Transaktion hält, die bis zu acht Cache-Zeilen (256 Bytes) an Daten enthält. Die eingangsseitige PMWQ 70 speichert gepostete Speicher-Schreib-Zyklen, herausgegeben durch die PCI-Vorrichtung 60, auf dem sekundären Bus 54 und arbeitet ähnlich zu der ausgangsseitigen PMWQ 76. Die PMWQs 70 und 76 sind in weiterem Detail in der US-Patentanmeldung 08/655,254, angemeldet am 05. Juni 1996, beschrieben.
  • Die zweite, ausgangsseitige Warteschlange, eine verzögerte Anforderungs-Warteschlange (delayed request queue – DRQ) 78, speichert verzögerte Anforderungs-Transaktionen (d. h. verzögerte Lese-Anforderungen (delayed read requests – DRR), wie beispielsweise ein Speicher-Lesen (memon read – MR), eine Speicher-Lesezeile (memon read line – MRL), Speicher-Lese-Mehrfach- (memon read multiple – MRM) Anforderungen; und Eingangs/Ausgangs-(I/O)-Lese/Schreibvorgänge und Konfigurations-(config)-Lese/Schreibvorgänge), herausgegeben durch die CPU 58 auf dem primären Bus 52, zusammen mit allen Informationen, die erforderlich sind, um jede Transaktion auf dem sekundären Bus 54 auszuführen. Die DRQ 78 besitzt drei Transaktionspuffer, wobei jeder davon in der Lage ist, ein Doppelwort oder „dword", an Daten für verzögerte Schreibvorgänge zu halten. In ähnlicher Weise speichert die eingangsseitige DRQ 72 verzögerte Anforderungs-Transaktionen, herausgegeben durch die PCI-Vorrichtung 60 auf dem sekundären Bus 64; und funktioniert ähnlich zu der ausgangsseitigen DRQ 78. Die DRQs 72 und 78 sind in weiterem Detail in der US-Patentanmeldung 08/655,254, angemeldet am 5. Juni 1996, beschrieben.
  • Die dritte, ausgangsseitige Warteschlange, eine verzögerte Abschluss-Warteschlange (delayed completion queue – DCQ) 80, speichert verzögerte Abschluss-Informationen, geliefert durch die CPU 58, in Abhängigkeit von Anforderungs-Transaktionen, erzeugt durch die PCI-Vorrichtung 60. Für eine verzögerte Leseanforderung enthalten die entsprechenden Abschluss-Informationen die Lese-Daten, angefordert durch die initiierende Vorrichtung, und den Lese-Status (d. h. eine Anzeige darüber, ob ein Paritäts-Fehler oder eine Target-Aussonderung aufgetreten ist). Die verzögerten Abschluss-Informationen, zurückgeführt für eine verzögerte Schreib-Transaktion, sind dieselben wie diejenigen, die für eine verzögerte Leseanforderung zurückgeführt sind, mit der Ausnahme, dass keine Daten für verzögerte Schreibprogramme zurückgeführt sind.
  • Die DCQ 80 besitzt acht Abschluss-Pufer, wobei jeder davon bis zu acht Cache-Zeilen von Abschluss-Informationen für eine einzelne, verzögerte Anforderung halten kann. Zusätzlich zu den Abschluss-Informationen speichert jeder Abschluss-Puffer auch eine Kopie der verzögerten Anforderung, die die Informationen erzeugte. Diese Kopie der verzögerten Anforderung wird dazu verwendet, zu bestimmen, wann eine darauffolgende Anforderung durch die herausgebende PCI-Vorrichtung ein erneuter Versuch der gespeicherten Anforderung ist. Falls eine darauffolgende Anforderung die gespeicherte Anforderung anpasst und der Abschluss-Puffer die angeforderten Daten enthält, liefert die DCQ 80 die Abschlussdaten zu der anfordernden Vorrichtung.
  • Ähnlich speichert die eingangsseitige DCQ 74 verzögerte Abschluss-Informationen, geliefert durch die PCI-Vorrichtung 60, in Abhängigkeit von verzögerten Anforderungen von der CPU 58. Da I/O- und Config-Lese/Schreibvorgänge nur auf dem ausgangsseitigen Bus auftreten, kann nur die eingangsseitige DCQ 74 verzögerte Abschluss-Informationen enthalten, die einer dieser Transaktionen entsprechen.
  • Falls eine der DCQs 74 oder 80 bestimmt, dass einer deren Pufferdaten enthält, die für eine anfordernde Vorrichtung vorgesehen sind, allerdings unterschiedlich als die Daten, die in der momentanen Transaktion angefordert sind, sind, kann der Puffer geleert werden, um zu verhindern, dass die anfordernde Master-Vorrichtung verbrauchte bzw. veraltete Daten empfängt. Der Puffer wird geleert, wenn er Prefetch-Daten enthält (d.h. Daten, die in dem Puffer verbleiben, nachdem die anfordernde Vorrichtung einige der Da ten aufgesucht hat, oder Daten, die nicht spezifisch durch die Vorrichtung angefordert wurden), wird allerdings nicht gelöscht, wenn er Abschlussdaten enthält (d.h. Daten, die spezifisch durch eine Vorrichtung angefordert sind, die bis jetzt noch nicht dazu zurückgekehrt ist, sie zu empfangen). Falls der Puffer Abschlussdaten enthält und die anfordernde Vorrichtung eine Anforderung ausgegeben hat, die nicht den Puffer „trifft", markiert die DCQ 144 die Vorrichtung als eine „multi-threaded" Vorrichtung, d.h. eine solche, die in der Lage ist, mehr als eine Transaktion auf einmal beizubehalten), und ordnet einen anderen Abschluss-Puffer der neuen Anforderung zu.
  • Jeder Puffer in den DCQs 74 und 80 läuft durch verschiedene Zustände, wenn die Daten hindurchführen. Der Puffer befindet sich in einem „leeren" Zustand, wenn er keine Daten enthält, in einem „vervollständigten" Zustand, wenn er Daten enthält, die spezifisch durch die initiierende Vorrichtung angefordert sind, und in einem „Prefetch" Zustand, wenn er Daten enthält, die nicht spezifisch angefordert wurden, sondern durch die Brückenvorrichtung 52 vorab abgerufen wurden (z. B. nachdem die initiierende Vorrichtung alle angeforderten Daten von dem Puffer aufgesucht hat und ihr „frame " Signal aufgestellt beibehält, was anzeigt, dass sie mehr Daten wünscht). Die DCQs 74 und 78 werden in weiterem Detail in der US-Patentanmeldung 08/655,254, angemeldet am 05. Juni 1996, beschrieben.
  • Jede Master-Zyklus-Entscheidungseinrichtung (master cycle arbiter – MCA) 82 und 84 in dem Warteschlangenblock 64 behält Reihenfolgenbeschränkungen zwischen einer geposteten Speicher-Schreib-, einer verzögerten Anforderungs- und einer verzögerten Abschluss-Transaktion in entweder den ausgangsseitigen Warteschlangen oder den eingangsseitigen Warteschlangen bei. Die gelockerten Reihenfolge-Beschränkungen sind ähnlich zu solchen, die in der PCI-Bridge Architecture Specification, Version 2.1, angegeben sind, mit Ausnahme, dass die strikte Reihenfolge nur zwischen Transaktionen beibehalten wird, die dasselbe Paar von Vorrichtungen einsetzen (d. h. Transaktionen zwischen der CPU 58 und der PCI-Vorrichtung 60 werden nur in Bezug auf andere Transaktionen zwischen diesen zwei Vorrichtungen geordnet). Diese Reihenfolgen-Beschränkungen erfordern, dass Bus-Zyklen eine strenge Schreib-Reihenfolge beibehalten, und dass gegenseitige Blockierungen nicht auftreten. Deshalb bestimmt jede MCA 82 oder 84 die Reihenfolge, in der gepostete Speicher-Schreib-Transaktionen in der entsprechenden PMWQ 70 oder 76 unverzögerte Anforderungs-Transaktionen in der entsprechenden DRQ 72 oder 78 auf dem entsprechenden PCI-Bus 52 oder 54 laufen. Jede MCA 82 oder 84 steuert auch die Verfügbarkeit von verzögerten Abschluss-Informationen, gespeichert in der entsprechenden DCQ 74 oder 80. Um ein Übereinstimmen mit diesen Regeln sicherzustellen, gibt die ausgangsseitige MCA 84 jedem geposteten Speicher-Schreib-Zyklus eine Gelegenheit, früher ausgegebene, verzögerte Anforderungs-Zyklen im Bypass zu passieren, während sowohl der ausgangsseitige als auch der eingangsseitige MCA 82 und 84 jeweils keine verzögerten Anforderungs- und verzögerten Abschluss-Zyklen zulassen, um an früher herausgegebenen, geposteten Speicher-Schreib-Zyklen im Bypass vorbei zu führen.
  • Wie auch 3 zeigt, verwendet jeder MCA 82 oder 84 zwei Transaktions-Warteschlangen, eine Transaktions-Lauf-Warteschlange (transaction run queue – TRQ) (oder Transaktions-Ausführungs-Warteschlangen) 200 und eine Transaktions-Reihenfolge-Warteschlange (transaction order queue – TOQ) 202, um Zyklen, die in der entsprechenden PMWQ, DRQ und DCQ in die Warteschlange gestellt sind, zu venivalten. Ein MCA-Steuerblock 204 empfängt Transaktionen von der PMWQ, DRQ und DCQ und gibt Laufbefehle aus. Die Transaktionen werden in die TRQ 200 und die TOQ 202 durch einen TRQ-Steuerblock 206 und einen TOQ-Steuerblock 208 hinein und daraus heraus, jeweils, bewegt.
  • Die TRQ 200 ist die Warteschlange, von der die MCA die Transaktions-Ausführungs-Reihenfolge bestimmt. Transaktionen in der TRQ 200 können in irgendeiner Reihenfolge ausgeführt werden, ohne die Transaktions-Reihenfolge-Regeln zu verletzen, allerdings kann, wenn einmal ein geposteten Speicher-Schreib-Zyklus in der TRQ 200 platziert ist, kein anderer Zyklus in der TRQ 200 platziert werden, bis der gepostete Spei- cher-Schreibvorgang entfernt ist. Transaktionen in der TRQ 200 werden in einer zirkularen Reihenfolge versucht und werden allgemein in der Reihenfolge abgeschlossen, in der sie empfangen wurden. Allerdings kann, falls eine Transaktion in der TRQ 200 erneut auf dem PCI-Bus versucht wird, die MCA 82 oder 84 die nächste Transaktion in der TRQ 200, die auf dem PCI-Bus versucht werden soll, auswählen. Verzögerte Abschluss-Transaktionen werden niemals in der TRQ 200 platziert, da sie Slave-Zyklen, im Gegensatz zu Master-Zyklen, sind. Weiterhin werden, da verzögerte Abschluss-Informationen zu der anfordernden Vorrichtung verfügbar gemacht werden können, sobald sie in die DCQ eintreten, falls keine geposteten Speicher-Schreib-Zyklen in der PMWQ anhängig sind, verzögerte Ab schluss-Transaktionen in der TOQ 202 nur dann platziert, wenn ein geposteter Speicher-Schreib-Zyklus in der TRQ 200 anhängig ist.
  • Die TRQ 200 ist eine zirkulare Warteschlange, die bis zu vier Transaktionen auf einmal hält. Da die MCA immer in der Lage sein muss, mindestens eine gepostete Speicher-Schreib-Transaktion laufen zu lassen, um die geforderten Reihenfolgen-Beschränkungen zu bewahren, kann die TRQ 200 niemals mehr als drei verzögerte Anforderungs-Transaktionen auf einmal halten. Weiterhin kann die TRQ nur eine gepostete Schreib-Transaktion zu einem Zeitpunkt halten, da gepostete Schreibvorgänge nicht durch irgendeine später initiierte Transaktion, umfassend andere, gepostete Schreibvorgänge, passiert werden können.
  • Die TOQ 202 ist eine first-in-first-out (FIFO) Warteschlange, die die historische Reihenfolge von Transaktionen beibehält, empfangen durch die Brücke, nachdem eine gepostete Speicher-Schreib-Transaktion in der TRQ 200 platziert ist. Da alle Transaktionen auf früher herausgegebene, gepostete Speicher-Schreibvorgänge warten müssen, damit diese laufen, werden alle Transaktionen, umfassend gepostete Speicher-Schreib-, verzögerte Anforderungs- und verzögerte Abschluss-Transaktionen, in der TOQ 202 platziert, wenn ein geposteter Speicher-Schreibvorgang in der TRQ 200 in die Warteschlange gestellt ist. Transaktionen in der TOQ 202 müssen in der TOQ 202 verbleiben, bis die gepostete Speicher-Schreib-Transaktion von der TRQ 200 entfernt ist. Die TOQ 202 kann bis zu drei gepostete Speicher-Schreib-Transaktionen (die vierte wird in der TRQ 200 gespeichert werden), drei verzögerte Anforderungs-Transaktionen und vier verzögerte Abschluss-Transaktionen halten. Die MCAs 82 und 84, umfassend die TRQ 200, die TOQ 202 und Steuerblöcke 204, 206 und 208, sind in weiterem Detail in der US-Patentanmeldung 08/655,254, angemeldet am 5. Juni 1996, beschrieben.
  • Eine eingangsseitige Warteschlange-zu-PCI-Schnittstelle (QPIF) 86 verwaltet Transaktionen, die von den eingangsseitigen Warteschlangen 70, 72 und 74 zu dem primären PCI-Bus 52 und von dem primären PCI-Bus 52 zu der ausgangsseitigen DCQ 80 fließen. Die QPIF 86 tritt in einen „Master" Mode ein, um gepostete Speicher-Schreib- und verzögerte Anforderungs-Transaktionen von der PMWQ 70 und der DRQ 72 auf dem primären Bus 52 laufen zu lassen. Die QPIF 86 tritt in einen „Slave" Mode ein, um Daten von der eingangsseitigen DCQ 74 zu der CPU 58 zu liefern oder Transaktionen von dem primären PCI-Bus 52 zu der ausgangsseitigen DCQ 80 zu schicken.
  • Wenn die QPIF 86 eine gepostete Schreib-Transaktion von dem Bus 52 empfängt, führt sie die Transaktion zu der ausgangsseitigen PMWQ 76 weiter, falls ein entsprechender einer einer Gruppe von Transaktions-Zählern 88 anzeigt, dass die ausgangsseitige PMWQ 76 nicht voll ist. Wenn die QPIF 86 eine verzögerte Anforderung empfängt, führt sie zuerst die Anforderung zu der DCQ 74 weiter, um zu bestimmen, ob die Transaktion bereits in der eingangsseitigen DCQ 74 platziert worden ist, und, falls dies der Fall ist, ob die entsprechenden, verzögerten Abschluss-Informationen durch die PCI-Vorrichtung 60 zurückgeführt worden sind. Falls die verzögerten Abschluss-Informationen in der eingangsseitigen DCQ 74 vorhanden sind, werden die Informationen zu der CPU 58 geliefert und die Transaktion wird beendet. Falls die Anforderung bereits in die Warteschlange gestellt ist, allerdings die verzögerte Abschluss-Informationen noch nicht zurückgeführt worden sind, wird die CPU 58 erneut versucht und die Transaktion wird auf dem primären PCI-Bus 52 beendet. Falls die Transaktion bis jetzt noch nicht in die Warteschlange gestellt ist, reserviert die eingangsseitige DCQ 74 einen Abschluss-Puffer für die Transaktion und die QPIF 86 führt die Transaktion zu der ausgangsseitigen DRQ 78 weiter, solange wie der entsprechende eine der Transaktions-Zähler 88 anzeigt, dass die ausgangsseitige DRQ 78 nicht voll ist. Die ausgangsseitige QPIF 89 funktioniert ähnlich zu der eingangsseitigen QPIF 86. Die QPIFs 86 und 89 sind in weiterem Detail in der US-Patentanmeldung 08/655,254, angemeldet am 5. Juni 1996, beschrieben.
  • Die Transaktionszähler 88 behalten eine Zählung über die Zahl von Transaktionen, die in der eingangsseitigen und der ausgangsseitigen Warteschlange jeweils in die Warteschlange gestellt sind, bei. Ein geposteter Speicher-Schreib-(Posted Memon Write – PMW)-Zähler zeigt die Zahl von PMW-Transaktionen an, die in der entsprechenden, geposteten Speicher-Schreib-Warteschlange gehalten sind. Der PMW-Zähler wird zu jedem Zeitpunkt erhöht, zu dem eine PMW-Transaktion zu der entsprechenden PMWQ geschickt ist. Der Zähler wird zu jedem Zeitpunkt erniedrigt, zu dem ein PMW-Zyklus auf dem entsprechenden PCI-Bus abgeschlossen worden ist. In ähnlicher Weise zählt ein verzögerter Anforderungs-(Delayed Request – DR)-Zähler die Zahl von DR-Transaktionen, gehalten in der entsprechenden, verzögerten Anforderungs-Warteschlange. Ein verzögerter Abschluss-(Delayed Completion – DC)-Zähler zählt die Zahl von verzögerten Abschlüssen, die in den entsprechenden Master-Zyklus-Arbitrierer in die Warteschlange gestellt sind.
  • Die Transaktions-Zähler sind in weiterem Detail in der US-Patentanmeldung 08/655,254, angemeldet am 5. Juni 1996, beschrieben.
  • Die Brückenvorrichtung 52 umfasst eine eingangsseitige und eine ausgangsseitige PCI-Schnittstellen-Vorrichtung 90 und 92 jeweils. Die eingangsseitige PCI-Schnittstelle 90 ermöglicht der Brückenvorrichtung 50, mit den Vorrichtungen (d.h. der CPU 58 und dem Hauptspeicher 59) auf dem primären Bus 52 zu kommunizieren, und die ausgangsseitige PCI-Schnittstelle 92 ermöglicht der Brückenvorrichtung 50, mit den Vorrichtungen (d.h. der Vorrichtung A 60 und der Vorrichtung B 62) auf den sekundären Bus 54 zu kommunizieren.
  • Wenn die CPU eine Steuerung des primären Busses übernimmt und eine Transaktion initiiert, wird die eingangsseitige PCI-Schnittstelle 90 eine PCI-Slave-Vorrichtung. Die Schnittstelle 90 verriegelt den PCI-Befehl, die -Adresse und die -Daten in Daten- und Adressen-Verriegelungen 94 und 95. Die Schnittstelle 90 bestimmt dann, welche der ausgangsseitigen PCI-Vorrichtungen 60 und 62 das Target der Transaktion sind. Indem dies so vorgenommen wird, vergleicht die Schnittstelle die Speicher-Adresse, geliefert durch die CPU 58, mit den Adressen in den Ziel-Basis-Adressen-Registern (Ghost BARs) 96 in der Brückenvorrichtung 50. (Die Ghost BARs 96 werden durch ein Snooping der Basis-Adressen-Register (BARs), erzeugt durch POST bei einem Start, erzeugt. Jedes Paar von BARs listet einen PCI-Schlitz zu einem Block eines Speichers auf, und die Ghost BARs enthalten Kopien dieser Auflistungen.) Die PCI-Schnittstelle 90 nimmt an, dass die CPU 58 der Master aller ausgangsseitigen Transaktionen ist.
  • Wie auch 4A zeigt, verwendet eine eingangsseitige Zyklus-Entscheidungseinrichtung 100 ein „Level 1" Round-Robin-Schema 105, um den Warteschlangenblock 64 oder 66 auszuwählen, von dem aus eine eingangsseitige Transaktion auf dem primären Bus 52 laufen sollte. Die Entscheidungseinrichtung 100 wählt zuerst den Warteschlangenblock 64 entsprechend der Vorrichtung A 60 (Zustand 102) aus. Die Entscheidungseinrichtung 100 wählt dann die Warteschlange 66 entsprechend zu Vorrichtung B 62 aus, und falls irgendeine der anderen PCI-Vorrichtungen mit dem sekundären Bus 54 verbunden ist, wählt die Entscheidungseinrichtung 100 progressiv die Warteschlangen entsprechend zu diesen Vorrichtungen aus. Falls einer der Warteschlangenblöcke 64 und 66 keine Transaktion enthält, um sie laufen zu lassen, überspringt die Entscheidungseinrichtung 100 den entsprechenden Zustand in deren Round-Robin-Schema 105. Falls die Transaktion von dem ausgewählten Warteschlangenblock erneut versucht wird, bewegt sich die Entscheidungseinrichtung 100 zu dem nächsten Zustand in dem Round-Robin-Schema 105.
  • Wie die 4B zeigt, enthält PCI Spec 2.1 eine „brigde inferface priority" („Brücken-Schnittstellen-Priorität") Regel, die vorsieht, dass dann, wenn sowohl der primäre als auch der sekundäre Bus eine Transaktion gleichzeitig initiieren, die Entscheidungseinrichtung 100 der ausgangsseitigen Transaktion eine Priorität geben muss. Allerdings kann, in einigen Brücken, die ein Schreib-Posting zulassen, dieses Erfordernis zu einem gegenseitigen Blockieren führen, falls eine ausgangsseitige Vorrichtung einen Schreibvorgang zu derselbert Zeit postet, zu der die CPU eine Leseanforderung zu der ausgangsseitigen Vorrichtung ausgibt. In dieser Situation würde die Brücke 50 instruiert werden, sowohl den geposteten Schreibvorgang vor einem Abschluss irgendwelcher verzögerten Anforderungen für dieselbe Vorrichtung abzuschließen als auch den ausgangsseitigen Lesevorgang vor einem Abschluss irgendwelcher Transaktionen, gleichzeitig herausgegeben durch einen ausgangsseitigen Master, abzuschließen.
  • Um zu verhindern, dass ein gegenseitiges Blockieren auftritt, muss die Ausgangsseiten-Zyklus-Entscheidungseinrichtung in einigen Ausführungsformen zu einem „Level II" Arbitrierungs-Schema 108 umschalten, falls dieser Zustand auftritt. In dem Level II Schema 108 erhöht die Entscheidungseinrichtung 100 die Priorität der gleichzeitig herausgegebenen, geposteten Schreib-Transaktion bei einem Versuch, die Transaktion schneller abzuschließen (Zustand 110). Nachdem die eingangsseitige Schnittstelle 90 versucht, die gepostete Schreib-Transaktion auf dem primären Bus 52 laufen zu lassen, kehrt die Entscheidungseinrichtung 100 zu dem „Level 1" Arbitrierungs-Schema 105 der 4A zurück, um auszuwählen, die nächste Transaktion laufen zu lassen. Falls die gepostete Schreib-Transaktion nicht erfolgreich auf dem primären Bus 52 lief, kehrt die Entscheidungseinrichtung 100 zu dem Level II Arbitrierungs-Schema 108 nach einem Auswählen einer Transaktion von dem Level 1 Schema 105 zurück (d.h. die Entscheidungseinrichtung 100 fährt in dem Level II Schema 108 fort, bis die gepostete Schreib-Transaktion erfolgreich abschließt).
  • Wie wiederum 2 zeigt, arbeitet die ausgangsseitige PCI-Schnittstelle 92 ähnlich zu der eingangsseitigen PCI-Schnittstelle 90, mit ein paar Ausnahmen. Zuerst wird, im Gegensatz zu der eingangsseitigen Zyklus-Entscheidungseinrichtung 100, die ausgangs seitige Zyklus-Entscheidungseinrichtung 116 niemals ein Zwei-Level-Arbitrierungs-Schema verwenden, da die ausgangsseitige PCI-Schnittstelle 92 nicht Gegenstand der „Brücken-Schnittstellen-Priorität" Regel ist. Als zweites nimmt die ausgangsseitige Schnittstelle 92 immer an, dass die CPU 58 die Ziel-Vorrichtung ist, und die nicht auf den Ghost BARs 96 beruhen muss, um zu bestimmen, welche PCI-Vorrichtung 60 oder 62 die Master-Vorrichtung ist. Anstelle davon überwacht die ausgangsseitige Schnittstelle 92 die REQ- und GNT-Leitungen in der PCI- Entscheidungseinrichtung 114, um zu bestimmen, welche der Vorrichtungen 60 und 62 auf dem sekundären PCI-Bus 54 die Master-Vorrichtung ist, und deshalb welcher Warteschlangenblock 64 oder 66 die Transaktion empfangen sollte.
  • Andere Ausführungsformen liegen innerhalb des Schutzumfangs der nachfolgenden Ansprüche. Zum Beispiel kann, unter Bezugnahme auf 5, die PCI-zu-PCI-Brückenvorrichtung einen Satz von bidirektionalen Transaktions-Warteschlangen 120a, 120b für jedes PCI-Vorrichtungs-Paar anstelle von zwei Sätzen von unidirektionalen Warteschlangen pro Paar umfassen. Die Endung kann auch in Nicht-PCI-Architekturen und in PCI-Architekturen, die nicht der PCI-Spec. 2.1 oder PCI Bridge Spec. 1.0 folgen, ausgeführt werden.

Claims (18)

  1. Computersystem (50), das umfasst: eine erste Vorrichtung (58, 59) auf einem ersten Datenbus (52), eine zweite (60) und eine dritte (62) Vorrichtung auf einem zweiten Datenbus (54), und eine Brückenvorrichtung (50), die zwischen den ersten (52) und den zweiten (54) Datenbus eingefügt ist, dadurch gekennzeichnet, dass: die Brückenvorrichtung (50) so konfiguriert ist, dass sie Transaktionen zwischen der ersten Vorrichtung (58, 59) und der zweiten Vorrichtung (60) ohne Rücksicht darauf abwickelt, ob die Transaktionen vor oder nach Transaktionen zwischen der ersten Vorrichtung (58, 59) und der dritten Vorrichtung (62) in die Brückenvorrichtung (50) eingetreten sind.
  2. Computersystem (50) nach Anspruch 1, wobei die Brückenvorrichtung (50) die chronologische Reihenfolge der Transaktionen zwischen der ersten Vorrichtung (58, 59) und der zweiten Vorrichtung (60) beibehält.
  3. Computersystem (50) nach Anspruch 1 oder Anspruch 2, wobei die Brückenvorrichtung (50) versucht, die Abwicklung einer verzögerten Transaktion zwischen der ersten Vorrichtung (58, 59) und der zweiten Vorrichtung (60) zu beschleunigen, wenn die verzögerte Transaktion die Abwicklung einer Transaktion zwischen der ersten (58, 59) und der zweiten (60) Vorrichtung verhindert.
  4. Computersystem (50) nach Anspruch 3, wobei die andere Transaktion eine stromab befindliche Lese-Transaktion von einer CPU (58) umfasst.
  5. Computersystem (50) nach einem der Ansprüche 1 bis 4, das des Weiteren ein Zweit-Basisadressregister (96) umfasst, das dabei hilft, festzustellen, welche der Vorrichtungen auf dem zweiten Datenbus (54) das Ziel einer von der ersten Vorrichtung (58, 59) ausgelösten Transaktion ist.
  6. Computersystem (50) nach einem der Ansprüche 1 bis 5, das des Weiteren ein Zuweisungssignal umfasst, das entweder der zweiten (60) oder der dritten Vorrichtung (62) Steuerung des zweiten Datenbusses (54) zuweist.
  7. Computersystem (50) nach Anspruch 6, wobei die Brückenvorrichtung (50) so konfiguriert ist, dass sie das Zuweisungssignal nutzt, um festzustellen, ob die zweite (60) oder die dritte (62) Vorrichtung eine Transaktion auf dem zweiten Datenbus (54) ausgelöst hat.
  8. Computersystem (50) nach einem der Ansprüche 1 bis 7, wobei: die erste Vorrichtung (58, 59) eine CPU (58) umfasst und der erste Datenbus (52) einen primären PCI-Bus umfasst, die zweite (60) und die dritte (62) Vorrichtung PCI-Vorrichtungen umfassen und der zweite Datenbus (54) einen sekundären PCI-Bus umfasst, und die Brückenvorrichtung (50) eine PCI-PCI-Brückenvorrichtung (50), die zwischen den primären und den sekundären Bus eingefügt ist und einen Speicherbereich enthält, der zwei Transaktionen speichert, wobei eine zwischen der CPU (58) und jeder der PCI-Vorrichtungen bereitzustellen ist, und eine Entscheidungsschaltung (82, 84, 86, 89) umfasst, die eine der Transaktionen zur Bereitstellung unabhängig von der chronologischen Reihenfolge auswählt, in der die Transaktionen in dem Speicherbereich gespeichert wurden.
  9. Computersystem (50) nach Anspruch 8, wobei der Speicherbereich umfasst: eine erste Gruppe von Puffern (64), die einen Puffer, der Daten speichert, die von der CPU (58) zu einer ersten der PCI-Vorrichtungen strömen, sowie einen weiteren Puffer aufweist, der Daten speichert, die von der ersten PCI-Vorrichtung zu der CPU (58) fließen, und eine zweite Gruppe von Puffern (66), die einen Puffer, der Daten speichert, die von der CPU (58) zu einer zweiten der PCI-Vorrichtungen fließen, und einen weiteren Puffer aufweist, der Daten speichert, die von der zweiten PCI-Vorrichtung zu der CPU (58) fließen.
  10. Computersystem (50) nach Anspruch 8 oder Anspruch 9, wobei die Entscheidungsschaltung (82, 84, 86, 89) so konfiguriert ist, dass sie die andere der zwei Transaktionen auswählt, nachdem sie die eine der zwei Transaktionen ausgewählt hat.
  11. Computersystem (50) nach einem der Ansprüche 8 bis 10, wobei der Speicherbereich zwei Warteschlangenblöcke umfasst, von denen einer Transaktionen speichert, die zwischen der CPU (58) und einer der PCI-Vorrichtungen auftreten, und der andere Transaktionen speichert, die zwischen der CPU (58) und der anderen PCI-Vorrichtung auftreten.
  12. Computersystem (50) nach einem der Ansprüche 8 bis 11, wobei der Speicherbereich einen speziellen Puffer für jeden Typ Transaktion umfasst, der die Brücke durchqueren kann.
  13. Computersystem (50) nach einem der vorangehenden Ansprüche, wobei die Transaktionstypen eingegebene Schreibzyklen (posted writes), verzögerte Anforderungen und verzögerte Abwicklungen einschließen.
  14. Computersystem (50) nach einem der vorangehenden Ansprüche, wobei: der erste Datenbus (52) so konfiguriert ist, dass er von der ersten Vorrichtung (58, 59) Anforderungen empfängt, Daten über einen der Datenbusse in wenigstens eine andere Vorrichtung zu schreiben oder aus dieser zu lesen; die Brückenvorrichtung (50) so konfiguriert ist, dass sie ein Ordnungsschema umsetzt, das die Brückenvorrichtung (50) in die Lage versetzt, eine Schreib-Anforderung und dann eine nachfolgende Anforderung in dieser Reihenfolge von dem einen Datenbus zu empfangen und die nachfolgende Anforderung und anschließend die Schreib-Anforderung in dieser Reihenfolge dem anderen Datenbus bereitzustellen, und das Zuweisungssignal zu nutzen, um festzustellen, welche Datenvorrichtung eine Anforderung an den Datenbus gestellt hat.
  15. Computersystem (50) nach Anspruch 14, wobei das Ordnungsschema die Brückenvorrichtung (50) in die Lage versetzt, die nachfolgende Anforderung nur dann bereitzustellen, bevor sie die Schreib-Anforderung bereitstellt, wenn der eine Datenbus beide Anforderungen von einer Datenverarbeitungsvorrichtung empfängt.
  16. Computersystem (50) nach Anspruch 14 oder Anspruch 15, wobei das Ordnungsschema die Brückenvorrichtung (50) in die Lage versetzt, zu versuchen, die Bereitstellung der Schreib-Anforderung zu beschleunigen, wenn die Schreib-Anforderung Bereitstellung der nachfolgenden Anforderung verhindert.
  17. Computersystem (50) nach Anspruch 16, wobei die nachfolgende Anforderung eine stromab befindliche Lese-Anforderung von einer CPU (58) umfasst.
  18. Computersystem (50) nach Anspruch 14, wobei das Zweit-Basisadressregister (96) Informationen enthält, die anzeigen, aus welcher Datenverarbeitungsvorrichtung auf dem anderen Datenbus zu lesen bzw. in welche zu schreiben ist.
DE69725687T 1996-12-31 1997-12-31 Transaktionsübertragung zwischen Datenbussen in einem Rechnersystem Expired - Lifetime DE69725687T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/777,575 US6138192A (en) 1996-12-31 1996-12-31 Delivering a request to write or read data before delivering an earlier write request
US777575 1996-12-31

Publications (2)

Publication Number Publication Date
DE69725687D1 DE69725687D1 (de) 2003-11-27
DE69725687T2 true DE69725687T2 (de) 2004-05-13

Family

ID=25110625

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69725687T Expired - Lifetime DE69725687T2 (de) 1996-12-31 1997-12-31 Transaktionsübertragung zwischen Datenbussen in einem Rechnersystem

Country Status (4)

Country Link
US (2) US6138192A (de)
EP (1) EP0851361B1 (de)
JP (1) JPH10301893A (de)
DE (1) DE69725687T2 (de)

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6230219B1 (en) * 1997-11-10 2001-05-08 International Business Machines Corporation High performance multichannel DMA controller for a PCI host bridge with a built-in cache
US6243781B1 (en) * 1998-12-03 2001-06-05 Intel Corporation Avoiding deadlock by storing non-posted transactions in an auxiliary buffer when performing posted and non-posted bus transactions from an outbound pipe
US6405276B1 (en) * 1998-12-10 2002-06-11 International Business Machines Corporation Selectively flushing buffered transactions in a bus bridge
US6324612B1 (en) * 1998-12-10 2001-11-27 International Business Machines Corporation Associating buffers in a bus bridge with corresponding peripheral devices to facilitate transaction merging
US6209054B1 (en) * 1998-12-15 2001-03-27 Cisco Technology, Inc. Reliable interrupt reception over buffered bus
US6301627B1 (en) * 1998-12-18 2001-10-09 International Business Machines Corporation Method/system for identifying delayed predetermined information transfer request as bypassable by subsequently-generated information transfer request using bypass enable bit in bridge translation control entry
US6240458B1 (en) * 1998-12-22 2001-05-29 Unisys Corporation System and method for programmably controlling data transfer request rates between data sources and destinations in a data processing system
US6351784B1 (en) * 1998-12-28 2002-02-26 International Business Machines Corp. System for determining whether a subsequent transaction may be allowed or must be allowed or must not be allowed to bypass a preceding transaction
US6347349B1 (en) * 1998-12-28 2002-02-12 International Business Machines Corp. System for determining whether a subsequent transaction may be allowed or must be allowed or must not be allowed to bypass a preceding transaction
US6330630B1 (en) * 1999-03-12 2001-12-11 Intel Corporation Computer system having improved data transfer across a bus bridge
US6286074B1 (en) * 1999-03-24 2001-09-04 International Business Machines Corporation Method and system for reading prefetched data across a bridge system
US6363452B1 (en) * 1999-03-29 2002-03-26 Sun Microsystems, Inc. Method and apparatus for adding and removing components without powering down computer system
US6460108B1 (en) 1999-03-31 2002-10-01 Intel Corporation Low cost data streaming mechanism
US6230228B1 (en) * 1999-04-01 2001-05-08 Intel Corporation Efficient bridge architecture for handling multiple write transactions simultaneously
TW523672B (en) * 1999-04-23 2003-03-11 Via Tech Inc Bus system delayed transaction method and device applying the method
US6567871B2 (en) * 1999-07-26 2003-05-20 Intel Corporation Method and apparatus for repeating (extending) transactions on a bus without clock delay
US6742074B2 (en) * 1999-08-31 2004-05-25 Micron Technology, Inc. Bus to system memory delayed read processing
US6557048B1 (en) * 1999-11-01 2003-04-29 Advanced Micro Devices, Inc. Computer system implementing a system and method for ordering input/output (IO) memory operations within a coherent portion thereof
US6529990B1 (en) * 1999-11-08 2003-03-04 International Business Machines Corporation Method and apparatus to eliminate failed snoops of transactions caused by bus timing conflicts in a distributed symmetric multiprocessor system
US6779061B1 (en) * 2000-05-09 2004-08-17 Cypress Semiconductor Corp. Method and apparatus implementing a FIFO with discrete blocks
US6654818B1 (en) * 2000-06-22 2003-11-25 International Business Machines Corporation DMA access authorization for 64-bit I/O adapters on PCI bus
US6636947B1 (en) * 2000-08-24 2003-10-21 International Business Machines Corporation Coherency for DMA read cached data
US6721813B2 (en) * 2001-01-30 2004-04-13 Advanced Micro Devices, Inc. Computer system implementing a system and method for tracking the progress of posted write transactions
TW514791B (en) * 2001-05-28 2002-12-21 Via Tech Inc Structure, method and related control chip for accessing device of computer system with system management bus
US6754737B2 (en) * 2001-12-24 2004-06-22 Hewlett-Packard Development Company, L.P. Method and apparatus to allow dynamic variation of ordering enforcement between transactions in a strongly ordered computer interconnect
US20030131175A1 (en) * 2001-12-24 2003-07-10 Heynemann Tom A. Method and apparatus for ensuring multi-threaded transaction ordering in a strongly ordered computer interconnect
US7111105B2 (en) * 2001-12-31 2006-09-19 Hewlett-Packard Development Company, L.P. System to optimally order cycles originating from a single physical link
US6970978B1 (en) * 2002-04-03 2005-11-29 Advanced Micro Devices, Inc. System and method for providing a pre-fetch memory controller
US7286548B1 (en) * 2002-08-14 2007-10-23 Redback Networks Inc. Method and apparatus for multicast multiple prefetch
US7043593B1 (en) * 2003-04-29 2006-05-09 Advanced Micro Devices, Inc. Apparatus and method for sending in order data and out of order data on a data bus
US7062590B2 (en) * 2003-08-29 2006-06-13 Lsi Logic Corporation Methods and structure for PCI bus broadcast using device ID messaging
US7644197B1 (en) * 2003-10-15 2010-01-05 Sun Microsystems, Inc. Queue management by multiple processors
US7664900B2 (en) * 2004-07-02 2010-02-16 Nec Corporation Multiprocessor system and method for processing memory access
US7549004B1 (en) * 2004-08-20 2009-06-16 Altera Corporation Split filtering in multilayer systems
US7412555B2 (en) * 2005-09-29 2008-08-12 P.A. Semi, Inc. Ordering rule and fairness implementation
JP2008172727A (ja) 2007-01-15 2008-07-24 Ricoh Co Ltd 制御装置および画像処理システム
US8199759B2 (en) * 2009-05-29 2012-06-12 Intel Corporation Method and apparatus for enabling ID based streams over PCI express
US8566496B2 (en) * 2010-12-03 2013-10-22 Lsi Corporation Data prefetch in SAS expanders
US9229896B2 (en) 2012-12-21 2016-01-05 Apple Inc. Systems and methods for maintaining an order of read and write transactions in a computing system
US10362109B2 (en) 2016-03-30 2019-07-23 Task Performance Group, Inc. Cloud operating system and method

Family Cites Families (61)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5569830A (en) * 1978-11-20 1980-05-26 Toshiba Corp Intelligent terminal
EP0334627A3 (de) * 1988-03-23 1991-06-12 Du Pont Pixel Systems Limited Multiprozessorbauweise
US6038584A (en) * 1989-11-17 2000-03-14 Texas Instruments Incorporated Synchronized MIMD multi-processing system and method of operation
JPH03188546A (ja) * 1989-12-18 1991-08-16 Fujitsu Ltd バスインターフェイス制御方式
US5438509A (en) * 1991-02-07 1995-08-01 Heffron; Donald J. Transaction processing in a distributed data processing system
US5454093A (en) * 1991-02-25 1995-09-26 International Business Machines Corporation Buffer bypass for quick data access
GB9116044D0 (en) * 1991-07-24 1991-09-11 Nat Res Dev Probes
US5483641A (en) * 1991-12-17 1996-01-09 Dell Usa, L.P. System for scheduling readahead operations if new request is within a proximity of N last read requests wherein N is dependent on independent activities
JPH0789340B2 (ja) * 1992-01-02 1995-09-27 インターナショナル・ビジネス・マシーンズ・コーポレイション バス間インターフェースにおいてアドレス・ロケーションの判定を行なう方法及び装置
CA2080210C (en) * 1992-01-02 1998-10-27 Nader Amini Bidirectional data storage facility for bus interface unit
US5491811A (en) * 1992-04-20 1996-02-13 International Business Machines Corporation Cache system using mask bits to recorder the sequences for transfers of data through cache to system memory
US5579530A (en) * 1992-06-11 1996-11-26 Intel Corporation Method and apparatus for dynamically allocating access time to a resource shared between a peripheral bus and a host bus by dynamically controlling the size of burst data transfers on the peripheral bus
JP2531903B2 (ja) * 1992-06-22 1996-09-04 インターナショナル・ビジネス・マシーンズ・コーポレイション コンピュ―タ・システムおよびシステム拡張装置
US5463753A (en) * 1992-10-02 1995-10-31 Compaq Computer Corp. Method and apparatus for reducing non-snoop window of a cache controller by delaying host bus grant signal to the cache controller
US5519839A (en) * 1992-10-02 1996-05-21 Compaq Computer Corp. Double buffering operations between the memory bus and the expansion bus of a computer system
US5535395A (en) * 1992-10-02 1996-07-09 Compaq Computer Corporation Prioritization of microprocessors in multiprocessor computer systems
US5381528A (en) * 1992-10-15 1995-01-10 Maxtor Corporation Demand allocation of read/write buffer partitions favoring sequential read cache
US5448702A (en) * 1993-03-02 1995-09-05 International Business Machines Corporation Adapters with descriptor queue management capability
US5522050A (en) * 1993-05-28 1996-05-28 International Business Machines Corporation Bus-to-bus bridge for a multiple bus information handling system that optimizes data transfers between a system bus and a peripheral bus
US5396602A (en) * 1993-05-28 1995-03-07 International Business Machines Corp. Arbitration logic for multiple bus computer system
US5623633A (en) * 1993-07-27 1997-04-22 Dell Usa, L.P. Cache-based computer system employing a snoop control circuit with write-back suppression
US5613075A (en) * 1993-11-12 1997-03-18 Intel Corporation Method and apparatus for providing deterministic read access to main memory in a computer system
US5455915A (en) * 1993-12-16 1995-10-03 Intel Corporation Computer system with bridge circuitry having input/output multiplexers and third direct unidirectional path for data transfer between buses operating at different rates
US5434996A (en) * 1993-12-28 1995-07-18 Intel Corporation Synchronous/asynchronous clock net with autosense
US5559800A (en) * 1994-01-19 1996-09-24 Research In Motion Limited Remote control of gateway functions in a wireless data communication network
US5471590A (en) * 1994-01-28 1995-11-28 Compaq Computer Corp. Bus master arbitration circuitry having improved prioritization
GB2286910B (en) * 1994-02-24 1998-11-25 Intel Corp Apparatus and method for prefetching data to load buffers in a bridge between two buses in a computer
US5530933A (en) * 1994-02-24 1996-06-25 Hewlett-Packard Company Multiprocessor system for maintaining cache coherency by checking the coherency in the order of the transactions being issued on the bus
US5535341A (en) * 1994-02-24 1996-07-09 Intel Corporation Apparatus and method for determining the status of data buffers in a bridge between two buses during a flush operation
TW400483B (en) * 1994-03-01 2000-08-01 Intel Corp High performance symmetric arbitration protocol with support for I/O requirements
US5586297A (en) * 1994-03-24 1996-12-17 Hewlett-Packard Company Partial cache line write transactions in a computing system with a write back cache
US5528766A (en) * 1994-03-24 1996-06-18 Hewlett-Packard Company Multiple arbitration scheme
US5623700A (en) * 1994-04-06 1997-04-22 Dell, Usa L.P. Interface circuit having zero latency buffer memory and cache memory information transfer
US5535340A (en) * 1994-05-20 1996-07-09 Intel Corporation Method and apparatus for maintaining transaction ordering and supporting deferred replies in a bus bridge
US5546546A (en) * 1994-05-20 1996-08-13 Intel Corporation Method and apparatus for maintaining transaction ordering and arbitrating in a bus bridge
US5687347A (en) * 1994-09-19 1997-11-11 Matsushita Electric Industrial Co., Ltd. Data providing device, file server device, and data transfer control method
US5548730A (en) * 1994-09-20 1996-08-20 Intel Corporation Intelligent bus bridge for input/output subsystems in a computer system
US5524235A (en) * 1994-10-14 1996-06-04 Compaq Computer Corporation System for arbitrating access to memory with dynamic priority assignment
US5553265A (en) * 1994-10-21 1996-09-03 International Business Machines Corporation Methods and system for merging data during cache checking and write-back cycles for memory reads and writes
US5555383A (en) * 1994-11-07 1996-09-10 International Business Machines Corporation Peripheral component interconnect bus system having latency and shadow timers
US5664124A (en) * 1994-11-30 1997-09-02 International Business Machines Corporation Bridge between two buses of a computer system that latches signals from the bus for use on the bridge and responds according to the bus protocols
US5625779A (en) * 1994-12-30 1997-04-29 Intel Corporation Arbitration signaling mechanism to prevent deadlock guarantee access latency, and guarantee acquisition latency for an expansion bridge
US5594882A (en) * 1995-01-04 1997-01-14 Intel Corporation PCI split transactions utilizing dual address cycle
US5568619A (en) * 1995-01-05 1996-10-22 International Business Machines Corporation Method and apparatus for configuring a bus-to-bus bridge
US5630094A (en) * 1995-01-20 1997-05-13 Intel Corporation Integrated bus bridge and memory controller that enables data streaming to a shared memory of a computer system using snoop ahead transactions
US5778196A (en) * 1995-02-24 1998-07-07 Acar Laboratories, Incorporated Method and device for identifying a bus memory region
US5596729A (en) * 1995-03-03 1997-01-21 Compaq Computer Corporation First arbiter coupled to a first bus receiving requests from devices coupled to a second bus and controlled by a second arbiter on said second bus
US5664150A (en) * 1995-03-21 1997-09-02 International Business Machines Corporation Computer system with a device for selectively blocking writebacks of data from a writeback cache to memory
US5619661A (en) * 1995-06-05 1997-04-08 Vlsi Technology, Inc. Dynamic arbitration system and method
US5694556A (en) * 1995-06-07 1997-12-02 International Business Machines Corporation Data processing system including buffering mechanism for inbound and outbound reads and posted writes
US5634138A (en) * 1995-06-07 1997-05-27 Emulex Corporation Burst broadcasting on a peripheral component interconnect bus
US5710906A (en) * 1995-07-07 1998-01-20 Opti Inc. Predictive snooping of cache memory for master-initiated accesses
US5649175A (en) * 1995-08-10 1997-07-15 Cirrus Logic, Inc. Method and apparatus for acquiring bus transaction address and command information with no more than zero-hold-time and with fast device acknowledgement
US5632021A (en) * 1995-10-25 1997-05-20 Cisco Systems Inc. Computer system with cascaded peripheral component interconnect (PCI) buses
US5673399A (en) * 1995-11-02 1997-09-30 International Business Machines, Corporation System and method for enhancement of system bus to mezzanine bus transactions
US5724529A (en) * 1995-11-22 1998-03-03 Cirrus Logic, Inc. Computer system with multiple PC card controllers and a method of controlling I/O transfers in the system
US5717876A (en) * 1996-02-26 1998-02-10 International Business Machines Corporation Method for avoiding livelock on bus bridge receiving multiple requests
US5872941A (en) * 1996-06-05 1999-02-16 Compaq Computer Corp. Providing data from a bridge to a requesting device while the bridge is receiving the data
US6108741A (en) * 1996-06-05 2000-08-22 Maclaren; John M. Ordering transactions
US5781748A (en) * 1996-07-19 1998-07-14 Compaq Computer Corporation Computer system utilizing two ISA busses coupled to a mezzanine bus
US5894563A (en) * 1996-11-20 1999-04-13 Apple Computer, Inc. Method and apparatus for providing a PCI bridge between multiple PCI environments

Also Published As

Publication number Publication date
EP0851361B1 (de) 2003-10-22
EP0851361A1 (de) 1998-07-01
US6138192A (en) 2000-10-24
DE69725687D1 (de) 2003-11-27
US6070209A (en) 2000-05-30
JPH10301893A (ja) 1998-11-13

Similar Documents

Publication Publication Date Title
DE69725687T2 (de) Transaktionsübertragung zwischen Datenbussen in einem Rechnersystem
DE19580990C2 (de) Verfahren und Einrichtung zum Ausführen verzögerter Transaktionen
DE69733374T2 (de) Speichersteuerungsvorrichtung und -system
DE69936060T2 (de) Verfahren und Vorrichtung für eine verbesserte Schnittstelle zwischen Computerkomponenten
DE69634182T2 (de) Direktspeicherzugriffssteuerung mit programmierbarer Zeitsteuerung
DE69628127T2 (de) Verfahren und Gerät um die Kohärenz in einem Multiprozessorsystem anzuzeigen
DE60204687T2 (de) Speicherkopierbefehl mit Angabe von Quelle und Ziel, der in der Speichersteuerung ausgeführt wird
DE10085385B3 (de) Vierfach gepumpte Bus-Architektur und Protokoll
DE2856483C2 (de)
DE60010907T2 (de) Sram-steuerungvorrichtung für parallele prozessorarchitektur mit adressen- und befehlswarteschlange und arbiter
DE102009049078B4 (de) Verwendung von Ausführer-Wissen über Speicherregion-Ordnungsanforderungen zum Modifizieren von Transaktionsattributen
DE69736872T2 (de) Datenverarbeitungssystem
DE60026068T2 (de) System für externe transaktionen mit dynamischen prioritäten
DE602005004508T2 (de) Speichersystem und Speichersteuerverfahren
DE2847216A1 (de) Datenverarbeitungssystem mit mehrprogrammbetrieb
DE4420451A1 (de) Sperrmechanismus für ein CHECK-IN/CHECK-OUT-Modell
DE10234992A1 (de) Retry-Mechanismus für blockierende Schnittstellen
DE10045916A1 (de) Methode und System zum Implementieren eines Remstat-Protokolls und Einbeziehung und Nicht-Einbeziehung von L1-Daten im L2-Cache zur Verhinderung einer gegenseitigen Lesesperre
DE60217132T2 (de) Vorrichtung zur erhaltung der producer-consumer anordnung entlang einer ungeordneten schnittstelle
DE19900251B4 (de) Vorrichtung und Verfahren zum Steuern eines vielseitigen USB-Endpunktkanals
DE3009530C2 (de)
DE112019000460T5 (de) Adapter für direkten speicherzugriff
DE102006012659A1 (de) System und Verfahren zum Reduzieren der Speicherlatenz bei mit einem Bus verbundenen Mikroprozessorsystemen
DE10056152B4 (de) Verfahren zur Durchführung von Busarbitration zwischen Steuerchips eines Chipsatzes mit preemptiver Fähigkeit
DE19580195C2 (de) Verfahren und Einrichtung zur Signalübertragung über eine gemeinsame Leitung

Legal Events

Date Code Title Description
8364 No opposition during term of opposition