-
Die
vorliegende Erfindung bezieht sich auf Verfahren und Einrichtungen
zum Minimieren von Leerlaufbedingungen eines asynchronen SendeFIFOs
und von Überlaufbedingungen
eines EmpfangsFIFOs.
-
Ein
Universalcomputersystem enthält
typischerweise einen Prozessor, einen Speicher und ein oder mehrere
Peripheriegeräte,
die über
mindestens einen Bus gekoppelt sind. In jüngster Zeit werden serielle
Peripheriebusse (z. B. ein universeller serieller Bus "USB", ein 1394-Serienbus,
IEEE 1394-1995 serieller
Hochleistungsbus IEEE, 1995 usw.) bei Computersystemen zunehmend
populär,
und zwar hauptsächlich
deshalb, weil sie eine kostengünstige
Hochleistungsalternative zu anderen Busarchitekturen bieten. Eine
Seriell-Busarchitektur weist typischerweise Sende- und Empfangs-First-In-First-Out-Bauelemente ("FIFOs"), einen Interface-Modul
als Schnittstelle zwischen dem Computersystembus und den FIFOs und
einen Seriellinterfacemodul auf, der als Schnittstelle zwischen
dem seriellen Bus (und einem oder mehreren Peripheriegeräten an dem
seriellen Bus) und den FIFOs arbeitet. Diese seriellen Busse übertragen
und empfangen asynchrone Daten sowie isochrone Daten in Abhängigkeit
von dem mit dem seriellen Bus gekoppelten Peripheriegerät. Asynchrones
Senden legt den Schwerpunkt auf garantierte Datenlieferung gegenüber garantierter
Zeitgabe, während
isochrones Senden den Schwerpunkt auf garantierte Zeitgabe der Daten
gegenüber
der Datenlieferung legt.
-
Bei
der Datenübertragung
erzeugt der Host-Prozessor ein Kontextprogramm im Speicher, wobei
das Kontextprogramm Daten und Befehle enthält. Die Befehle steuern die
Sendeanordnung der Daten, die Bestimmung der Datenpakete usw. Der
Interfacemodul holt die Befehle und Datenpakete aus dem Speicher
und legt sie in das SendeFIFO. Bevor Daten aus dem Speicher gelesen
werden können, muß der Interfacemodul
jedoch durch Zugriffsanforderung die Kontrolle über den Systembus gewinnen. Die
zum Gewinnen der Kontrolle über
den Systembus benötigte
Zeit (als "Systembuslatenz" bezeichnet) ist
nicht-deterministisch und hängt
von einigen Faktoren ab, einschließlich der Busgeschwindigkeit, der
Anzahl der Zugriffe auf die Buskontrolle anfordernden Geräte u. dgl.
-
Sobald
Daten in das SendeFIFO eingegeben sind, verlangt eine SendeFIFO-Steuerschaltung
die Datenübertragung
auf dem seriellen Bus. In ähnlicher
weise ist die für
eine seriellen Buszuteilung erforderliche Zeit (bezeichnet als "Seriell-Buslatenz") nicht deterministisch
und hängt
von einer Anzahl von Faktoren ab, einschließlich der Busgeschwindigkeit, der
Anzahl von Peripheriegeräten
an dem seriellen Bus und der Dichte von asynchronem Verkehr. Nach einer
Zugriffsgewährung
werden die Daten auf den Serienbus übertragen. Wenn die Größe des zu
sendenden bzw. übertragenden
Datenpakets größer als die
SendeFIFO-Kapazität
ist, müssen
Teile (oder der Rest) des Datenpakets aus dem Speicher geholt werden,
während
die Daten aus dem SendeFIFO auf den seriellen Bus abfließen. Wenn
jedoch die Systembuslatenz zum Abholen des Rests des Datenpakets
größer als
die für
den Ablauf des SendeFIFOs benötigte Zeit
ist, tritt eine Leerlaufbedingung (under-run condition) auf. Die
Wahrscheinlichkeiten des Auftretens einer Leerlaufbedingung nehmen
in einem Computersystem bei einem hohen Verkehrsaufkommen auf dem
Systembus rasch zu. Eine Leerlaufbedingung ist unerwünscht, da
sie zu einem Verlust an Busbandbreite führt und dadurch das System
verlangsamt.
-
Es
besteht daher ein technologischer Bedarf an einem Verfahren und
einer Einrichtung zum Minimieren/Verhindern eines Leerlaufs eines
asynchronen SendeFIFOs aufgrund von Systemlatenzen.
-
Die
Verwendung von Sende-FIFOs und zugehörigen Steuerschaltungen in
Busschnittstellen und die Problematik des FIFO- Leerlaufens sind u.a. aus den US-Patenten
Nrn. 4,907,225 und 5,412,782 bekannt.
-
Aus
dem US-Patent Nr. 5,602,537 ist eine Technik zum Beseitigen von
Datensendespeicherunterläufen
bekannt, bei der vorgeschlagen wird, einen mit dem Ausgang eines
Sende-FIFO gekoppelten Sender nicht bereits dann zu aktivieren,
wenn sich Daten in dem FIFO befinden, sondern vielmehr in Abhängigkeit
von einem gewissen Mindestfüllstand auszulösen, der
mit Hilfe eines Zählers
festgestellt wird. Sobald der Mindestfüllstand im FIFO erreicht ist,
wird der Sender ausgelöst.
Andererseits wird der Sender auch bereits dann ausgelöst, wenn
sich ein vollständiger
Rahmen in dem FIFO befindet, sofern dieser Rahmen zu klein ist,
um den Mindestfüllstand zu
erreichen.
-
Daten,
die von einem Peripheriegerät
an dem seriellen Bus in einem EmpfangsFIFO empfangen werden, werden
im Speicher zur Verarbeitung durch den Prozessor abgelegt. Wenn
in diesem Fall Daten nicht schnell genug im Speicher abgelegt werden,
kann eine Datenüberlaufbedingung
auftreten (d. h. wenn Daten von einem vollen FIFO empfangen werden
und ein Überschreiben
von bereits im FIFO befindlichen Daten bewirken).
-
Die
Tiefe des EmpfangsFIFOs ist ein Faktor zur Bestimmung der Systembuslatenz,
welche das FIFO ohne Auftreten einer Überlaufbedingung verarbeiten
kann. Das Auftreten von Systembuslatenz wird durch die Tatsache
verschlimmert, daß das
Interfacemodul das Abholen von Befehlen aus dem Speicher bedingt,
bevor es Daten aus dem EmpfangsFIFO in den Speicher schreiben kann.
Das heißt,
ein typisches asynchrones Paket kann einen Befehlsabruf, eine Datenspeicherung
und ein Status-Rückschreiben
jeweils zu verschiedenen Orten im Speicher erforderlich machen.
Wenn viele kleine asynchrone Pakete im EmpfangsFIFO empfangen werden,
kann die Systembuslatenz, die zum Holen von Befehlen aus dem Speicher
und zum Vervollständigen
des Status-Rückschreibens
in den Speicher erforderlich ist, die zum Abfluß der Daten aus dem EmpfangsFIFO
benötigte
Zeit stark überschreiten.
-
Daher
besteht ein weiterer technologischer Bedarf an einem Verfahren und
einer Einrichtung zum Eliminieren von Überlaufbedingungen in einem EmpfangsFIFO.
-
Die
o.g. Aufgaben werden durch eine Steuerschaltung nach Anspruch 1,
ein Verfahren nach Anspruch 6 bzw. eine Steuerschaltung nach Anspruch 10,
ein Verfahren nach Anspruch 15 bzw. ein Computersystem nach Anspruch
20 gelöst.
-
Die
Merkmale und Vorteile der vorliegenden Erfindung ergeben sich aus
der folgenden detaillierten Beschreibung der vorliegenden Erfindung,
wobei:
-
1 ein
zur Verwendung mit der vorliegenden Erfindung geeignetes exemplarisches
Computersystem zeigt.
-
2 ein
Ausführungsbeispiel
der Südbrücke gemäß der Lehre
der vorliegenden Erfindung darstellt.
-
3 ein
Ausführungsbeispiel
eines asynchronen Sendemoduls gemäß der vorliegenden Erfindung
veranschaulicht.
-
4 ein
Ausführungsbeispiel
eines Empfangsmoduls der vorliegenden Erfindung zeigt.
-
In
der folgenden Beschreibung werden zum Zwecke der Erläuterung
zahlreiche Details angegeben, um die vorliegende Erfindung besser
verständlich
zu machen. Es ist jedoch für
den Fachmann klar, daß diese
speziellen Einzelheiten zum Realisieren der vorliegenden Erfindung
nicht erforderlich sind. wie hier beschrieben werden wird, ist ein "Computersystem" ein Produkt mit
einer zur Datenverarbeitung geeigneten Schaltung. Das Computersystem
kann – ohne
Beschränkung – einen
konventionellen Computer (z. B. Laptop, Desktop, Palmtop, Server,
Universalrechner usw.) Hardkopieausrüstung (z. B. Drucker, Plotter,
Scanner, Faxgerät,
usw.) Bankeinrichtung (z. B. einen Bankautomaten), drahtlose Kommunikationsausrüstung u.
dgl. enthalten.
-
1 zeigt
ein exemplarisches Computersystem 100, das zur Verwendung
mit der vorliegenden Erfindung geeignet ist. Das Computersystem 100 weist
einen Prozessor 105 auf, der über einen Host-Bus 110 mit
einer Host-Brücke 115 (im
folgenden als "Nordbrücke" bezeichnet) gekoppelt
ist. Prozessor 105 kann irgendeine Prozessorart sein, zum Beispiel
ein Mikrocontroller oder ein Universalmikroprozessor. Bei dem gezeigten
Ausführungsbeispiel ist
die Nordbrücke 115 eine
Host-Computer-zu-Peripheriekomponenten-Verbindungs-(PCI)-Brücke, obwohl
auch stattdessen andere Brücken
verwendet werden können.
Die Nordbrücke 115 ist
gekoppelt mit einem Systemspeicher 120 (z. B. einem dynamischen
Direktzugriffsspeicher "DRAM", statischen RAM, "SRAM" usw.), PCI-Bus 130 und
einem Graphikinterface 125. Die Nordbrücke 115 ist zum Überbrücken von
Prozessortransaktionen entweder an den Systemspeicher 120,
PCI-Bus 130 oder Graphikinterface 125 verantwortlich.
Die Nordbrücke 115 stellt
auch eine Brückenverbindung
des Graphikinterface 125 oder der PCI-gesteuerten Transaktionen zum
Systemspeicher 120 her, während im Prozessor 105-Cache-Snoop-Zyklen (Mitlauschzyklen)
initiiert werden.
-
Der
PCI-Bus 130 bildet einen Kommunikationspfad zwischen Prozessor 105 oder
Systemspeicher 120 und einem oder mehreren Peripheriegeräten 1351 -135M (z.
B. einer Netzwerk-Interfacekarte, einer SCSI-Controllerkarte usw.),
wobei "M" eine positive ganze
Zahl ist. Der PCI-Bus 130 bildet ferner einen Kommunikationspfad
zwischen dem Prozessor 105 oder dem Systemspeicher 120 und
einer zweiten Brücke 140 (im
folgenden als "Südbrücke" bezeichnet).
-
Bei
einem Ausführungsbeispiel
dient die Südbrücke 140 unter
anderem zwei Hauptfunktionen. Zum einen bildet die Südbrücke 140 eine
Brücke für Transaktionen
zwischen dem PCI-Bus 130 und
einem Erweiterungsbus 145. Bei dem gezeigten Ausführungsbeispiel
ist der Expansionsbus 145 ein Bus mit Industriestandardarchitektur
("ISA"), obwohl beliebige
andere Arten von Busarchitekturen stattdessen verwendet werden können. Der
Expansionsbus 145 bildet einen Kommunikationspfad zwischen
dem PCI-Bus 130 und mehreren peripheren Expansionsbauelementen 1501 -150N (z.
B. einem Plattentreibercontroller, einer Tonkarte, einem Modem,
einem seriellen und parallelen Port-Controller usw.), wobei "N" eine positive ganze Zahl ist.
-
Zum
zweiten bildet die Südbrücke 140 eine Brücke für Transaktionen
vom PCI-Bus 130 zu einem seriellen Bus 160. Bei
dem bevorzugten Ausführungsbeispiel
ist der serielle Bus ein 1394 serieller Bus entsprechend dem "IEEE 1394-1995 serieller Hochleistungsbus", publiziert im Jahre
1995, obwohl eine andere Busarchitektur verwendet werden kann. Die
Südbrücke 140 ist
mit einem 1394 physikalischen Interface 155 gekoppelt.
Das physikalische Interface 155 ist mit mehreren Knoten 1601 -160P gekoppelt (wobei "P" eine positive ganze Zahl ist). Für den Fachmann
ist verständlich,
daß die
spezielle Architektur des Computersystems 100 für die Realisierung der
vorliegenden Erfindung unkritisch ist, da im Rahmen des Erfindungsgedankens Änderungen
an dem Computersystem 100 vorgenommen werden können.
-
2 zeigt
ein Ausführungsbeispiel
der Südbrücke 140 entsprechend
der Lehre der vorliegenden Erfindung. Unter Bezugnahme auf 1 und 2 weist
die Südbrücke 140 einen
PCI-Interfacemodul 205 auf, der eine Schnittstelle zu einer PCI-zu-ISA-Brücke 210 und
einem Entscheidungsmodul 215 bildet. Die PCI-zu-ISA-Brücke 210 ermöglicht Transaktionen
zwischen einem oder mehreren Expansionsperipheriegeräten 1501 -150N und
mit dem PCI-Bus 130, Prozessor 105 und Systemspeicher 120 gekoppelten
Bauelementen. Der Entscheidungsmodul 215 ist gekoppelt
mit einem asynchronen Sendemodul 220 (bezeichnet als "ATX-Modul"), einem isochronen
Sendemodul 225 (bezeichnet als "ITX-Modul") und einem Empfangsmodul 230.
Das Entscheidungsmodul 215 führt die notwendige Entscheidung
zwischen ATX-ITX und Empfangsmodulen 220, 225 und 230 zum
Zugreifen auf den PCI-Bus 130 durch.
-
Die
ATX-, ITX- und Empfangsmodule 220, 225 und 230 sind
mit einem 1394-Link-Interface 235 gekoppelt, welches die
notwendige Schnittstelle zum seriellen 1394-Bus bildet. Bei einem
Ausführungsbeispiel
serialisiert und deserialisiert das 1394-Link-Interface 235 Datenströme. Das
1394-Link-Interface 235 ist mit dem physikalischen Link-Interface 155 gekoppelt,
das mit dem 1394-Bus verbunden ist. Insbesondere überträgt der ATX-Modul 220 asynchrone Datenpakete
zu Peripheriegeräten
an dem 1394-Bus, während
der ITX-Modul 225 isochrone Datenpakete an Peripheriegeräte auf dem
1394-Bus sendet. Der Empfangsmodul 230 empfängt andererseits
sowohl asynchrone als auch isochrone Datenpakete von Peripheriegeräten auf
dem 1394-Bus. Bei einer anderen Implementierung können separate asynchrone
und isochrone Empfangsmodule verwendet werden. Asynchrone Übertragung
legt den Schwerpunkt auf garantierte Datenlieferung gegenüber garantierter
Zeitgabe, während
isochrone Übertragung
den Schwerpunkt auf garantierte Datenzeitgabe gegenüber Datenlieferung
legt. Ein Beispiel für ein
isochrones serielles Peripheriegerät ist eine digitale Kamera
für Videokonferenzen.
Wenn ein isochrones Datenpaket verlorengeht (aus irgendeinem Grunde),
kann es nicht neu gesendet werden, während ein asynchrones Datenpaket
bei Verlust neu gesendet werden kann. Es ist daher wichtiger, sicherzustellen,
daß keine
isochronen Datenpakete verlorengehen oder fehlen.
-
3 zeigt
ein Ausführungsbeispiel
eines asynchronen Sendemoduls nach der Erfindung. Unter Bezugnahme
auf 1-3 weist das ATX-Modul 220 eine
Direktzugriffsspeicher("DMA")-Maschine 305 auf, die mit einem
SendeFIFO 310 und dem Entscheidungsmodul 215 gemäß 2 über Adreß-, Daten-
und Steuersignalleitungen 355 gekoppelt ist. Bei einem
Ausführungsbeispiel
hat das SendeFIFO 310 eine 4-Byte-Breite (bezeichnet als
ein "Quadlet" von Daten) und eine
Tiefe von 1 KB, obwohl andere Anordnungen statt dessen verwendet
werden können.
Zur Datenübertragung
an ein Peripheriegerät über den
seriellen Bus erzeugt der Prozessor 105 der 1 ein
Kontextprogramm im Speicher 120, bestehend aus Befehlsdeskriptoren
und Datenpaketen. Der Prozessor 105 schreibt dann in ein
internes Register der DMA-Maschine 305, was bewirkt, daß die DMA-Maschine 305 die
Befehlsdeskriptoren und Datenpakete aus Speicher 120 holt.
Die DMA-Maschine 305 legt eine Anforderungsleitung (eine
der Signalleitungen 355) an die Entscheidungseinheit 215,
um Zugriff auf den PCI-Bus 130 zu verlangen. Sobald der Zugriff
von dem PCI-Busarbiter (z.B. der Nordbrücke 115) gewährt ist,
holt die DMA-Maschine 305 die Befehlsdeskriptoren und Datenpakete
aus dem Systemspeicher 120 und legt sie in das SendeFIFO 310.
Das SendeFIFO 310 verlangt jedoch zu diesem Zeitpunkt keinen
Zugriff zur Datenübertragung über den
seriellen Bus, wie weiter unten genauer beschrieben werden wird.
-
Die
DMA-Maschine 305 ist auch mit einem ersten Paketenden-Detektor ("EOP") gekoppelt, der seinerseits
mit einem Zähler 320 gekoppelt
ist. Der erste EOP-Detektor 315 überwacht die in das SendeFIFO 310 eingegebenen
Daten. Sobald eine Paketende-Marke
festgestellt wird, inkrementiert der erste EOP-Detektor 315 den
Zähler 320 um
Eins. Der Ausgang des SendeFIFOs 310 ist mit einem zweiten EOP-Detektor 330 gekoppelt,
wobei der Ausgang des zweiten EOP-Detektors 330 mit dem
Zähler 320 gekoppelt
ist. Der zweite EOP-Detektor 330 überwacht die aus dem SendeFIFO 310 abfließenden Daten.
Sobald eine Paketende-Marke
aus dem SendeFIFO 310 abfließt, dekrementiert der zweite
EOP-Detektor 330 den Zähler 320.
Bei einem Ausführungsbeispiel
bestimmen die ersten und zweiten EOP-Detektoren 315 und 330 ein
Paketende durch Lesen eines Paket-Kopfetiketts zur Gewinnung der
Paketgröße und zum
Zählen
der Anzahl von Dateneinheiten, welche das SendeFIFO 310 durchlaufen.
Der Ausgang des SendeFIFOs ist auch mit einem Übersetzermodul 325 gekoppelt,
der Datenbusbreitenübersetzungen
liefert. Beispielsweise übersetzt
der Übersetzermodul 325 Busse
mit unterschiedlichen Datenbreiten (z. B. Quadlet-zu-Byte-Bussebreitenübersetzungen).
Der Übersetzermodul 325 ist
mit dem 1394-Link-Interface 235 gekoppelt und stellt die
Daten dem Link-Interface 235 zur Übertragung zur Verfügung.
-
Der
Ausgang des Zählers 320 ist
mit einer Null-Detektorschaltung 335 gekoppelt. Solange
das Ausgangssignal des Zählers 320 größer als
Null ist, legt die Null-Detektorschaltung 335 ein Signal
auf Signalleitung 340, das anzeigt, daß wenigstens ein vollständiges Paket
(oder wenigstens ein Endabschnitt desselben) im SendeFIFO 310 vollständig enthalten ist.
Die Signalleitung 340 ist mit einem Eingang eines ODER-Gatters 350 gekoppelt.
Der Ausgang des ODER-Gatters 350 ist eine Link-Anforderungsleitung("LREQ"), welche dem 1394-Link-Interface 235 gemäß 2 signalisiert,
Zugriff auf den 1394- seriellen
Bus zu werlangen. Daher wird mit der vorliegenden Erfindung eine
Anforderung zur Datenübertragung
auf dem seriellen Bus ausgetastet (gated), bis ein ganzes Datenpaket
im SendeFIFO 310 enthalten ist, um Systembuslatenzen in
der oben beschriebenen Weise zu eliminieren.
-
Außerdem weist
das SendeFIFO 310 ein FIFO-Voll-Signal auf Signalleitung 345 auf,
welches an einen zweiten Eingang des ODER-Gatters 350 angelegt
wird. Das FIFO-Voll-Signal zeigt an, daß das SendeFIFO 310 "voll" ist (d.h. über einen
vorgegebenen Schwellwert, z.B. 75 %, 90 % usw. gefüllt ist).
In dieser Konfiguration wird das LREQ-Signal angelegt, wenn das
FIFO "voll" ist. Bei einem Ausführungsbeispiel
können
Dateneingabe- und
Datenausgabe-Zeigerregister als Markierer verwendet werden, um zu
verfolgen, ob das SendeFIFO 310 "voll" ist. Dies
gibt der DMA-Maschine 305 die maximale Zeit zum Holen des
Rests des Datenpakets aus dem Speicher, bevor eine Datenleerlaufbedingung
auftritt. Sobald die Übertragungsanforderung
auf den 1394-seriellen Bus gewährt
ist, setzt die DMA-Maschine 305 den Versuch fort, das SendeFIFO 310 "voll" oder auf demjenigen
Punkt zu halten, wo ein Datenpaket in ihm vollständig enthalten ist.
-
Daher
wird die LREQ-Signalleitung ausgetastet, bis entweder das SendeFIFO 310 "voll" ist oder das zu
sendende Datenpaket im SendeFIFO 310 vollständig enthalten
ist. Das Gattern von LREQ in der beschriebenen Weise minimiert die
Möglichkeit des
Auftretens einer Leerlaufbedingung, wenn ein asynchrones Paket auf
dem Serienbus übertragen wird.
Außerdem
ermöglicht
die vorliegende Erfindung die Unabhängigkeit von asynchronen SendeFIFO-Füllungen
von der Systembuslatenz bis zum Beginn von Übertragungen auf dem 1394-Bus.
Als solche erreicht die Südbrücke 140 eine
maximale Ausnutzung des 1394-Busses unter mittleren oder starken
PCI-Belastungsbedingungen ohne Verlust großer asynchroner Datenpakete.
Außerdem
wird der Verlust an 1394-Bandbreite minimiert, wenn ein PCI oder
irgendein anderer Bus mit dem 1394-Bus nicht Schritt halten kann.
Die Erfindung ermöglicht auch
ein Füllen
des SendeFIFOs 310 bei niedriger Priorität ohne Senden
einer 1394-Busanforderung, wodurch die PCI-Busbandbreite maximiert
wird.
-
4 zeigt
ein Ausführungsbeispiel
eines Empfangsmoduls 230 nach der Erfindung. Bei diesem
Aspekt der Erfindung hält
der Empfangsmodul 230 ein EmpfangsFIFO in einem Zustand,
bei dem die maximale Wahrscheinlichkeit dafür besteht, daß ein großes einlaufendes
Datenpaket (z.B. ein isochrones Datenpaket) den EmpfangsFIFO nicht
zum Überlauf
bringt. Diese Aufgabe wird dadurch erfüllt, daß ein programmierbarer oberer
Grenzwert in einem Register für
die Zahl von im EmpfangsFIFO zugelassenen asynchronen Paketen erzeugt
wird und asynchrone Pakete über
die obere Grenze hinaus zurückgewiesen
werden. Bei einem Ausführungsbeispiel
wird der Empfangsmodul 230 sowohl für asynchrone als auch für isochrone
Datenströme
verwendet.
-
Im
folgenden wird auf 4 Bezug genommen. Der Empfangsmodul 230 weist
einen Datenpaket-Decodierer 405 auf, der mit dem physikalischen Link-Interfache 235 gemäß 2 gekoppelt
ist. Der Datenpaket-Decodierer 405 decodiert vom 1394-Bus empfangene
Datenpakete und bestimmt, ob die Datenpakete an den Empfangsmodul 23O adressiert sind.
Wenn die Datenpakete an den Empfangsmodul 230 adressiert
sind, überträgt der Datenpaket-Decodierer 405 die
Datenpakete an das EmpfangsFIFO 410; anderenfalls werden
die Datenpakete ignoriert. Bei einem Ausführungsbeispiel ist das EmpfangsFIFO 410 ein
Datenquadlet breit und zwei Kilobytes tief, obwohl andere Anordnungen
möglich
sind.
-
Das
EmpfangsFIFO 410 erhält
asynchrone und isochrone Datenpakete vom 1394-Bus. Sobald Daten
im EmpfangsFIFO 410 aufgenommen sind, verlangt eine Empfangs-DMA-Maschine 430 Zugriff auf
den PCI-Bus 130 und Abfluß aus dem EmpfangsFIFOs 410 zum
Speicher 120. Der Datenpaket-Decodierer 405 ist
auch mit einem ersten EOP-Detektor 415 gekoppelt, der mit
einem Zähler 420 gekoppelt ist.
Wenn der erste EOP-Detektor 415 ein Ende eines empfangenen
Pakets feststellt, inkrementiert er den Zähler 420 um Eins,
um anzuzeigen, daß ein
Gesamtpaket (oder ein Endabschnitt desselben) vom EmpfangsFIFO 410 aufgenommen
wurde. Der Ausgang des EmpfangsFIFOs 410 ist mit einem
zweiten EOP-Detektor 425 gekoppelt, der auch mit dem Zähler 420 gekoppelt
ist. Der zweite EOP-Detektor 425 überwacht das Paketende der
aus dem EmpfangsFIFO 410 abfließenden Datenpakete. Jedesmal, wenn
ein asynchrones Datenpaket vom Kopf des EmpfangsFIFOs 410 abgeflossen
ist, dekrementiert der zweite EOP-Detektor 425 den Zähler 420 um Eins.
Bei einem Ausführungsbeispiel
bestimmen die ersten und zweiten EOP-Detektoren 415 und 425 ein Paketende
durch Lesen eines Paket-Kopfetiketts
zur Gewinnung der Paketgröße und durch
Zählen
der Anzahl von der EmpfangsFIFO 410 durchlaufenden Dateneinheiten.
-
Um
die Anzahl von asynchronen Paketen in dem EmpfangsFIFO 410 zu
begrenzen, wird ein Register 440 (oder ein Speicherort)
zur Bildung eines programmierbaren oberen Grenzwerts verwendet. Das
Ausgangssignal des Registers 440 und das Ausgangssignal
des Zählers 420 werden
an einen Vergleicher 435 angelegt. Wenn die Zahl der asynchronen
Datenpakete im EmpfangsFIFO 410 gleich dem oberen Grenzwert
im Register 440 (oder größer) ist, wird das Ausgangssignal
des Komparators 435 angelegt, das bewirkt, daß der Datenpaket-Decodierer 405 ein
Bestätigungs-/Belegtsignal
an das 1394-Link-Interface 235 anlegt. Das Bestätigungs-/Belegtsignal
ist Teil der Signale zwischen dem Datenpaket-Decodierer 405 und
dem 1394-Link-Interface 235.
Eine Bestätigungs-/Belegt-Bedingung
zeigt dem 1394-Link-Interface 235 an, daß der Datenpaket-Decodierer 405 das
asynchrone Datenpaket empfangen hat, das Datenpaket zu diesem Zeitpunkt
jedoch nicht aufgenommen werden konnte. Das 1394-Link-Interface 235 informiert dann
den Initiator des asynchronen Datenpakets, das Datenpaket neu zu übertragen.
Sobald die Anzahl von asynchronen Datenpaketen im EmpfangsFIFO 410 unter
den oberen Grenzwert fällt
(oder diesem gleichen ist), wird das Ausgangssignal des Komparators 435 unterbrochen,
was bewirkt, daß der
Datenpaket-Decodierer 405 das Bestätigungs-/Belegtsignal unterbricht.
Als solches kann das EmpfangsFIFO 410 jetzt asynchrone
Datenpakete aufnehmen.
-
Dieser
Aspekt der vorliegenden Erfindung ermöglicht es einem Basis-Eingabe-/Ausgabe-System
("BIOS") 1394-Leistung auf
einer systemspezifische Basis anzupassen. Zusätzlich er möglicht dieser Aspekt der Erfindung,
daß zukünftige Konstruktionen die
Programmierregister zur Simulation verschiedener 1394-Anwendermodelle
in Hardware veranlassen. Dies ermöglicht die Visualisierung von
Designkonzepten vor deren Realisation.