-
TECHNISCHES
GEBIET DER ERFINDUNG
-
Die
vorliegende Erfindung bezieht sich im Allgemeinen auf die Datenübertragung
in Datenprozessorsystemen.
-
HINTERGRUND
DER ERFINDUNG
-
Die
digitale Signalverarbeitung (DSP) unterscheidet sich signifikant
von der durch Mikrocontroller und Mikroprozessoren ausgeführten universellen
Verarbeitung. Ein Schlüsselunterschied
ist die strenge Forderung nach einer Echtzeit-Datenverarbeitung. In einer Modemanwendung
ist es z. B. unbedingt erforderlich, dass jeder Abtastwert verarbeitet
wird. Selbst das Verlieren eines einzelnen Datenpunktes könnte verursachen,
dass eine Anwendung des digitalen Signalprozessors scheitert. Während die
Verarbeitung der Datenabtastwerte immer noch das Modell der Aufgabenzuweisung
und Blockverarbeitung übernehmen
kann, das in der universellen Verarbeitung üblich ist, muss die tatsächliche
Datenbewegung innerhalb des digitalen Signalprozessorsystems die
strengen Echtzeitanforderungen des Systems einhalten.
-
Als
eine Folge sind digitale Signalprozessorsysteme im hohen Grade auf
eine integrierte und effiziente Speicherdirektzugriffsmaschine (DMA-Maschine)
angewiesen. Der Speicherdirektzugriff-Controller ist für die Verarbeitung
der Übertragungsanforderungen
von den Peripherievorrichtungen und dem digitalen Signalprozessor
selbst in Echtzeit verantwortlich. Die gesamte Datenbewegung durch
den Speicherdirektzugriff muss sich ohne Eingriff der Zentraleinheit
(CPU) ereignen können,
um die Echtzeitanforderungen des Systems zu erfüllen. Das heißt, weil
die CPU in einem Software-Aufgabenzuweisungs-Modell arbeiten kann,
in dem die Zeitplanung einer Aufgabe nicht so eng gesteuert wird,
wie es die Datenströme,
auf die die Aufgaben einwirken, erfordern, muss die Speicherdirekt zugriffsmaschine
die Last, alle Echtzeit-Datenstromanforderungen im System zu erfüllen, tragen.
-
Der
frühe Speicherdirektzugriff
hat sich in mehrere aufeinanderfolgende Versionen zentralisierter Übertragungs-Controller
und vor kurzem in den Übertragungs-Controller
mit der Hub- und Port-Architektur entwickelt.
-
Ein
erstes Übertragungs-Controller-Modul
wurde für
den digitalen Signalprozessor TMS320C80 von Texas Instruments entwickelt.
Der Übertragungs-Controller
verstärkte
die Speicherdirektzugriffsfunktion eines herkömmlichen Controllers zusammen
mit der zur Bedienung eines Cache erforderlichen Adressenerzeugungslogik
und der Ferndatenübertragung,
die außerdem
als der direkte externe Zugriff bezeichnet wird, von vier digitalen
Signalprozessoren und einem einzelnen RISC-Prozessor (Computer mit
eingeschränkten
Befehlsvorrat).
-
Die Übertragungs-Controller-Architektur
des TMS320C80 ist von einem Speicherdirektzugriff fundamental verschieden,
weil nur ein einzelner Satz von Adressenerzeugungs- und Parameterregistern
erforderlich ist. Frühere
Speicherdirektzugriffseinheiten erforderten mehrere Sätze für mehrere
Kanäle.
Der einzelne Satz von Registern kann jedoch durch alle Speicherdirektzugriff-Anforderungseinrichtungen
verwendet werden. Die Speicherdirektzugriffsanforderungen werden über einen
Satz codierter Eingaben an der Peripherie der Vorrichtung an den Übertragungs-Controller
verschickt. Außerdem
kann jeder digitale Signalprozessor Anforderungen an den Übertragungs-Controller
senden. Die externen codierten Eingaben werden als "extern eingeleitete
Paketübertragungen" (XPTs) bezeichnet.
Die vom digitalen Signalprozessor eingeleiteten Übertragungen werden als "Paketübertragungen" (PTs) bezeichnet.
Der RISC-Prozessor könnte
außerdem
Paketübertragungsanforderungen
an den Übertragungs-Controller
senden.
-
Der Übertragungs-Controller
mit Hub und Ports führte
mehrere neue Ideen von Konzepten ein. Das Erste war der gleichmäßige Pipeline-Betrieb.
Neue digitale Signalprozessorvorrichtungen, die einen Übertragungs-Controller
mit der Hub- und Port-Architektur enthalten, besitzen mehrere externe
Ports, die alle für den Hub
völlig
gleich aussehen. Folglich können
die Peripherievorrichtungen und der Speicher frei ausgetauscht werden,
ohne den Hub zu beeinflussen. Die zweite neue Idee ist das Konzept
der gleichzeitigen Ausführung von Übertragungen.
Das heißt,
an den mehreren Ports der Vorrichtung können bis zu N Übertragungen
parallel vorkommen, wobei N die Anzahl der Kanäle im Übertragungs-Controller mit
dem Hub- und Ports-Kern ist. Jeder Kanal im Übertragungs-Controller mit
dem Hub- und Ports-Kern ist funktional nur ein Satz von Registern. Dieser
Satz von Registern verfolgt die aktuellen Quell- und Zieladressen,
die Wort-Zählstände und
andere Parameter für
die Übertragung.
Jeder Kanal ist völlig
gleich, wobei folglich die Anzahl der durch den Übertragungs-Controller mit
Hub und Ports unterstützten
Kanäle
im hohen Grade skalierbar ist.
-
Schließlich enthält der Übertragungs-Controller
mit Hub und Ports einen Mechanismus, um die Übertragungen in einem dedizierten
Warteschlangenspeicher in eine Warteschlange einzureihen. Der Übertragungs-Controller
TMS320C80 erlaubte nur, dass eine Übertragung pro Prozessor auf
einmal ansteht. Durch den durch den Übertragungs-Controller mit
Hub und Ports geschaffenen Warteschlangenspeicher können die Prozessoren
zahlreiche Übertragungsanforderungen
bis zur Größe des Warteschlangenspeichers
ausgeben, bevor der digitale Signalprozessor blockiert.
-
Die
vorliegende Erfindung befasst sich mit der Datenübertragung, die verschiedene
Speicher-Port-Knoten verbindet, wie sie auf den Übertragungs-Controller mit
Hub und Ports angewendet wird. Der Übertragungs-Controller mit
Hub und Ports ist eine signifikante grundlegende Verbesserung in
den Datenübertragungstechniken
in komplexen digitalen Systemen, wobei er viele nützliche
Merkmale schafft, von denen eines der interne Speicher-Port ist,
der die Verbindung einer praktisch unbegrenzten Anzahl von Prozessor/Speicher-Knoten
mit einem zentralisierten Übertragungs-Controller
erlaubt. Der zentralisierte Übertragungs-Controller muss die
Daten von Knoten zu Knoten mit einer Leistung übertragen können, die relativ unabhängig davon
ist, wie nah oder fern sich ein Knoten am bzw. vom Übertragungs-Controller
selbst befinden könnte.
Um das durch die vorliegende Erfindung gelöste Problem zu erklären, ist
es hilfreich, die Eigenschaften, die Architektur und die funktionalen
Systembausteine des Übertagungs-Controllers mit Hub
und Ports zu überblicken.
-
ZUSAMMENFASSUNG
DER ERFINDUNG
-
Die
vorliegende Anmeldung offenbart ein effizientes Mittel, um einen
Zähler
zu verwenden, um den Wert des Warteschlangen-Zählstandes an einem entfernten
Ort am Ausgangsende einer mehrstufigen Pipeline aufrechtzuerhalten.
Die Erfindung betrifft eine Vorrichtung und ein Verfahren zum Übertragen
von Daten, wie sie in den unabhängigen
Ansprüchen
1 bzw. 6 definiert sind. Weitere Ausführungsformen der Erfindung sind
in den jeweiligen abhängigen
Ansprüchen
spezifiziert. Die bevorzugte Ausführungsform dieser Anmeldung
ist eine Übertragungs-Controller-Vorrichtung
mit einer Hub- und Port-Architektur. Der Master-Zähler
steht in der Anfangsstufe einer Pipeline aus sechs oder mehr Stufen.
Der Fern-Warteschlangenzähler
befindet sich am Ausgangsende der Pipeline.
-
Wenn
Signale von der C-Pipeline-Endstufe im Hub zum Ort der Ports gesendet
werden, ist ein ganzer Taktzyklus erlaubt. Ähnlich ist ein ganzer Taktzyklus
erlaubt, wenn Signale vom Port zur anfänglichen Q-Pipelinestufe des
Hubs gesendet werden. Typischerweise besitzt eine derartige Pipeline
eine Tiefe von etwa sechs Stufen.
-
Für jede Pipeline
(entweder Quelle oder Ziel) besteht die Fähigkeit, eine Transaktion pro
Zyklus einzuleiten. Um von den verfügbaren Zyklen maximalen Gebrauch
zu machen, ist es erwünscht,
Transaktionen mit demselben Port in mehreren aufeinanderfolgenden
Zyklen einleiten zu können.
-
Um
eine Transaktion mit einem speziellen Port einzuleiten, muss in
der Befehlswarteschlange dieses Ports Raum verfügbar sein. Es wird betrachtet,
was geschehen würde,
falls es nur einen Zähler
geben würde, der
den Zustand dieser Warteschlange aufzeichnet, und der in dem Port
steht (wo sich die Warteschlange befindet). In der einfachsten Form
würde Folgendes
geschehen:
Die Entscheidung würde in der P-Stufe getroffen,
um einen Befehl an den fraglichen Port zu senden. Drei Zyklen später würde der
Befehl zur C-Stufe gesendet (unter der Voraussetzung, dass es keine
Annullierung gibt). Im nächsten
Zyklus würde
der Port den Wert des Warteschlangenzählers einstellen. Dann würde im nächsten Zyklus
der Zustand des Warteschlangenzählers
zurück
zum Hub gesendet werden.
-
Wenn
der Port einen Eintrag aus seiner Warteschlange verarbeitet hat,
sendet er ein Signal zurück zum
Hub in der Q-Stufe. Diese verursacht dann, dass der Zähler zwei
Zyklen später
in der P-Pipelinestufe inkrementiert wird. Die M-Stufe wird verwendet,
um den Port-Zustand auf die zugeordneten Kanäle als ihre eigenen Kanäle abzubilden,
die der Hub in der P-Pipelinestufe priorisiert.
-
Folglich
besitzt der Zähler
zwei Inkrementierungseingänge
(einen von der Q-Pipelinestufe
und einen von der P-Pipelinestufe). Er besitzt außerdem einen
Dekrementierungseingang von der P-Pipelinestufe, wobei er zu folgenden
inkrementalen Änderungen
fähig sein
muss: –1,
+1 und +2. Am Port-Ende ist der Zähler selbst einfacher. Dieser
Zähler
wird inkrementiert, wenn er einen Befehl empfängt, der angibt, dass sich
die Anzahl der verwendeten Einträge
vergrößert hat
(d. h. ein von null verschiedener Wert bedeutet, dass es für den Port irgendetwas
zum Verarbeiten gibt), und dekrementiert, wenn der Port einen Eintrag
verarbeitet, was angibt, dass sich die Anzahl der verwendeten Einträge verringert
hat. Er wird nur um +1 oder –1
geändert.
Wenn er dekrementiert wird, wird ein Signal an den Hub gesendet,
das in der Q-Pipelinestufe ankommt.
-
KURZBESCHREIBUNG
DER ZEICHNUNG
-
Die
vorliegende Erfindung wird nun beispielhaft unter Bezugnahme auf
beispielhafte Ausführungsformen
weiter beschrieben, die in der beigefügten Zeichnung veranschaulicht
sind, worin:
-
1 in
einem funktionalen Blockschaltplan die grundlegenden Hauptmerkmale
des Übertragungs-Controllers
mit einer Hub- und Port-Architektur und die in Beziehung stehenden
Funktionen veranschaulicht;
-
2 die
Kanalregister, die die Pipelines des Übertragungs-Controller-Hubs anschließen, und
die Schnittstelle der Hub-Pipelines zu den externen Ports veranschaulicht;
-
3 eine
beispielhafte graphische Darstellung der Transaktions-Pipeline veranschaulicht;
und
-
4 in
Form eines Blockschaltplans die Verwendung von zwei Zählern veranschaulicht,
um eine gültige
Warteschlange an einem entfernten Ort aufrechtzuerhalten.
-
AUSFÜHRLICHE
BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSFORMEN
-
Die
Funktion des Anforderungswarteschlangen-Managers ist ein entscheidender
Teil des zentralisierten Übertragungs-Controllers
mit einer Hub- und Port-Architektur. Um seine verschiedenen Leistungsaspekte zu
verstehen, ist es hilfreich, zuerst den Übertragungs-Controller als
Ganzes zu betrachten.
-
Der Übertragungs-Controller
mit einer Hub- und Port-Architektur ist für den effizienten Durchgang
von Daten durch den digitalen Signalprozessorchip optimiert. 1 veranschaulicht
einen Blockschaltplan der Hauptmerkmale des Übertragungs-Controllers mit
Hub und Ports. Er umfasst ein System aus einem einzelnen Hub 100 und
mehreren Ports 111 bis 115. Das Wesentliche des
Hubs ist der Anforderungswarteschlangen-Controller 101 des Übertragungs-Controllers
mit Hub und Ports, der auf die Anforderungs- und Zustandsinformationen
wirkt, um die Gesamthandlungen des Übertragungs-Controllers zu
leiten.
-
Der Übertragungs-Controller
mit dem Hub und den Ports arbeitet im Zusammenhang mit einem Übertragungsanforderungsbus,
der einen Satz von Knoten 117 besitzt, die am Eingang 103 die Übertragungsanforderungspakete
hereinbringen. Diese Knoten des Anforderungsübertragungsbusses empfangen
einzeln die Übertragungsanforderungspakete
von den Übertragungs-Anforderungseinrichtun gen 116,
die Knoten des Prozessorspeichers oder andere Funktionen auf dem
Chip sind, die Daten senden und empfangen.
-
Zweitens
verwendet der Übertragungs-Controller
einen zusätzlichen
Bus, den Datenübertragungsbus, der
einen Satz von Knoten 118 besitzt, um die tatsächlichen
Daten an den Anforderungseinrichtungs-Knoten 116 zu lesen
oder zu schreiben. Der Datenübertragungsbus überträgt Befehle,
Schreibdaten und Lesedaten von einem speziellen internen Speicher-Port 115 und
schickt die Lesedaten an den Eingängen 104 über den Daten-Router 150 zum Übertragungs-Controller-Hub
zurück.
-
Der Übertragungs-Controller
besitzt an seinem Vorfeld-Abschnitt einen Anforderungswarteschlangen-Manager 101,
der die Übertragungsanforderungen
in der Form von Übertragungsanforderungspaketen
an seinem Eingang 103 empfängt. Der Anforderungswarteschlangen-Manager 101 priorisiert
und speichert diese und fertigt sie ab, wie es erforderlich ist.
-
Der
Anforderungswarteschlangen-Manager 101 stellt innerhalb
der Übertragungs-Controller-Hub-Einheit 100 eine
Verbindung mit den Kanalanforderungsregistern 120 her,
die die Datenübertragungs-Anforderungspakete
empfangen und sie verarbeiten. In diesem Prozess priorisiert der
Anforderungswarteschlangen-Manager 101 zuerst
die Übertragungsanforderungspakete
und ordnet sie einem der N Kanalanforderungsregister 120 zu.
Jedes der N Kanalanforderungsregister 120 stellt ein Prioritätsniveau
dar.
-
Falls
für die
direkte Verarbeitung des Übertragungsanforderungspakets
kein Kanal verfügbar
ist, wird es im Speicher 102 des Warteschlangen-Managers
gespeichert. Der Speicher 102 des Warteschlangen-Managers
ist vorzugsweise ein Schreib-Lese-Speicher (RAM). Das Übertragungsanforderungspaket
wird dann zu einem späteren
Zeitpunkt zugeordnet, wenn ein Kanal verfügbar wird. Die Kanalregister
stellen mit der Quellen-Steuer-Pipeline 130 und der Ziel-Steuer-Pipeline 140 eine
Verbindung her, die effektiv Adressenberechnungseinheiten für die Operationen
der Quelle (Leseoperationen) und des Ziels (Schreiboperationen)
sind.
-
Die
Ausgaben aus diesen Pipelines werden durch das E/A-Untersystem 110 der Übertragungs-Controller-Ports
an die M Ports gesendet. Das E/A-Untersystem 110 enthält einen
Satz von Hub-Schnittstellen-Einheiten, die die M möglichen
externen Port-Einheiten ansteuern. In 1 sind vier
derartige externe Ports als die externen Ports 111 bis 114 gezeigt.
Die externen Port-Einheiten (die außerdem als Anwendungseinheiten bezeichnet
werden) werden entweder mit der Taktfrequenz des Hauptprozessors
oder mit einer anderen Taktfrequenz der externen Vorrichtungen getaktet.
Die Taktfrequenz der externen Vorrichtungen kann niedriger oder
höher als
die Taktfrequenz des Hauptprozessors sein. Falls ein Port mit seiner
eigenen Frequenz arbeitet, ist die Synchronisation mit dem Kerntakt
erforderlich.
-
Als
ein Beispiel der Schreib/Lese-Operationen an den Ports wird ein
Lesevorgang vom externen Port-Knoten 112, gefolgt von einem
Schreibvorgang an den externen Port-Knoten 114 betrachtet.
Zuerst adressiert die Quellpipeline den Port 112 für einen
Lesevorgang. Die Daten werden durch die Daten-Router-Einheit 150 an
den Übertragungs-Controller-Hub
zurückgeschickt.
In einem späteren
Zyklus adressiert die Ziel-Steuer-Pipeline den Port 114 und
schreibt die Daten in den Port 114. Die externen Ports,
wie sie hier beschrieben sind, leiten keine Übertragungsanforderungen ein,
sondern sie nehmen lediglich an den anderswo auf dem Chip angeforderten
Lesevorgängen
und Schreibvorgängen
teil. Die Lese- und
Schreiboperationen, die die Knoten 116 des Prozessorspeichers
(die Übertragungs-Anforderungseinrichtungen)
umfassen, werden als Übertragungsanforderungspakete
auf dem Übertragungsanforderungsbus 117 eingeleitet.
Der Warteschlangen-Manager 101 verarbeitet diese, wie oben
beschrieben worden ist. In einem späteren Zyklus wird eine Ausgabe
der Quellpipeline (Lesebefehl/-adresse) erzeugt, die am internen
Speicher-Port in der Form eines Lesevorgangs zum Datenübertragungsbus 118 weitergeleitet
wird. Dieser Befehl geht auf dem Datenübertragungsbus in einer Pipelineweise
von einem Knoten zum nächsten
weiter. Wenn der adressierte Prozessorknoten erreicht wird, veranlasst
die Leseanforderung den Knoten des Prozessorspeichers, die Lesedaten
für die
Rückkehr
zum Daten-Router 150 auf den Bus zu setzen. In einem späteren Zyklus
leitet ein Ziel- Pipeline-Ausgang
den entsprechenden Schreibbefehl und die Daten zum internen Speicher-Port
und weiter zum Datenübertragungsbus
für das
Schreiben in den adressierten Prozessorknoten weiter.
-
Die
Kanalparameterregister 105 und die Port-Parameterregister 106 halten
sowohl alle notwendigen parametrischen Daten als auch die Zustandinformationen
für die
Pipelines des Übertragungs-Controller-Hubs, um
die gegebene Übertragung
zu verarbeiten. Beide Pipelines benutzen einige der gespeicherten
Informationen gemeinsam. Andere Abschnitte beziehen sich spezifisch
auf die eine Pipeline oder die andere.
-
Die
vorliegende Anmeldung offenbart in ihrem umfassendsten Sinn ein
Verfahren zum Verfolgen des Zustands eines First-in/First-out-Speichers
(FIFO-Speichers), der sich entfernt oder in einem anderen Taktbereich
befindet oder beides. Im Stand der Technik ist dies wie folgt ausgeführt worden.
Ein FIFO besitzt ein Ausgangssignal, das angibt, wenn er irgendeine
Schwelle hinsichtlich der Fülle überschritten
hat, wobei dies verwendet wird, um den Überlauf des FIFO zu verhindern.
Je länger
es dauert, dass die Hardware, die dieses Schwellensignal verwendet,
auf dieses reagiert, desto weiter entfernt vom voll gefüllten Zustand
muss dieses Schwellensignal aktiviert werden. Wenn es z. B. von
der Aktivierung des Schwellensignals zehn Zyklen dauert, bis keine
neuen Einträge
für den
FIFO ankommen, dann muss das Schwellensignal aktiviert werden, wenn
es wenigstens zehn unbenutzte Einträge im FIFO gibt. Sind es weniger
als diese, dann gibt es ein Risiko, dass der FIFO überläuft.
-
Im
Kontext des Übertragungs-Controllers
würde dies
wie folgt funktionieren. Es wird vorausgesetzt, dass es im Hub keinen
lokalen Warteschlangenzähler
gibt, sondern dass ein Voll-Merker vom Port verwendet wird, um anzugeben,
ob es in Ordnung ist, weitere Befehle an diesen Port zu senden oder
nicht. Die Befehlswarteschlange im Port gibt einen Voll-Merker aus,
wenn sie N oder weniger unbenutzte Einträge besitzt. Infolge der Latenzzeit
zwischen den Pipelinestufen (die im Folgenden beschrieben ist) können neue
Befehle für
die Befehlswarteschlange bis zu fünf Zyklen nach dem Voll-Merker
ankommen. Deshalb würde
N wenigs tens fünf betragen
müssen.
Dies bedeutet, dass die Befehlswarteschlange im Port wenigstens
sechs Einträge
tief sein müsste.
Andernfalls könnten
niemals Daten in sie gelegt werden.
-
Es
gibt bei diesem Lösungsweg
zwei Nachteile. Zuerst erfordert er, dass die Befehlswarteschlange wenigstens
sechs Einträge
tief ist. In der Tat sollten viele Ports, die mit dem Übertragungs-Controller
verbunden sind, Befehlswarteschlangen mit weniger Einträgen als
diese besitzen. Dies gilt insbesondere für Ports mit niedriger Bandbreite.
Deshalb ist es ein großer
Organisationsaufwand, ein Minimum von sechs Einträgen zu erfordern.
Im Allgemeinen ist dies kein solches Problem, falls der FIFO in
Bezug auf N groß ist,
weil der Organisationsaufwand als ein Prozentsatz der Gesamtgröße des FIFO
klein ist. Wenn aber die bevorzugte FIFO-Tiefe im Vergleich zu N
klein ist, ist dies ein Problem. Für den Übertragungs-Controller erfordern
langsame Ports, wie z. B. serielle Ports, wahrscheinlich nur einen
Warteschlangeneintrag. Sogar viele Hochgeschwindigkeits-Ports erfordern
nur fünf
oder sechs Einträge,
um den Durchsatz mit voller Bandbreite aufrechtzuerhalten. Diese
würden
mit dem Schema des Standes der Technik zehn oder elf Einträge umfassen
müssen. Zweitens
ist es eine Frage des Wirkungsgrades. Falls der FIFO einen Voll-Merker
N Einträge
vom voll gefüllten Zustand
ausgibt, würde
der FIFO nur gefüllt
werden, wenn in jedem einzelnen Zyklus Daten zum FIFO gesendet werden,
ganz gleich wer Daten an den FIFO sendet. Im Fall des Übertragungs-Controllers
kann der Hub wählen,
welche Ports zu bedienen sind. Folglich kann der Hub nicht mehrere
zusammenhängende
Befehle an denselben Port senden. Dies bedeutet, dass N zusätzliche
Einträge
der Befehlswarteschlange, die durch den Stand der Technik erforderlich
sind, nicht immer verbraucht werden würden.
-
Zusammengefasst
ersetzt dieses Schema die N Organisationsaufwand-Einträge im FIFO
durch einen lokalen FIFO-Zustandszähler an der Quelle der FIFO-Daten.
Für größere FIFOs
kann der Organisationsaufwand kein Problem sein, wobei die Technik
des Standes der Technik infolge ihrer Einfachheit bevorzugt sein kann.
-
Für kleine
FIFO-Schemata führt
diese Erfindung jedoch zu einer effizienteren Implementierung hinsichtlich
der Anzahl der Gatter.
-
Die
vorliegende Erfindung schafft ein effizientes Mittel, um einen Zähler zu
verwenden, um einen Wert des Warteschlangen-Zählstandes an einem entfernten
Ort am Ausgangsende einer mehrstufigen Pipeline aufrechtzuerhalten.
Die bevorzugte Ausführungsform
in dieser Anmeldung ist eine Übertragungs-Controller-Vorrichtung mit einer
Hub- und Port-Architektur.
-
2 veranschaulicht
die Schnittstelle zur Grenze der Übertragungs-Controller-Hub-Einheit
und insbesondere die Kanalanforderungsregister 200 bis 205,
die Kanalparameterregister 105 und die Port-Parameterregister 106.
Die Kanalparameterregister 105 und die Port-Parameterregister 106 speichern
entscheidende Daten, z. B. hinsichtlich der Typen der Übertragungen,
der Betriebsartinformationen, des Zustands und vieler anderer Informationen,
die für
den Übertragungsprozess
entscheidend sind.
-
Die
Kanalanforderungsregister leiten die in der Quellpipeline 204 verwendeten
Informationen für
die Erzeugung der Lese/Vorschreib-Befehle 221 weiter. Ähnlich leiten
die Kanalanforderungsregister die in der Zielpipeline 205 verwendeten
Informationen für
die Erzeugung der Schreibbefehl/Schreibdaten-Wörter 222 weiter. Die
Leseantwortdaten 223 von den Ports werden über die
Daten-Router-Einheit 206 zur
Zielpipeline zurückgeschickt.
-
2 veranschaulicht
außerdem
die möglichen
Pipelines in einer Implementierung eines Übertragungs-Controllers. In
den spezifischen Implementierungen können eine oder mehrere Stufen
kombiniert sein, aber die Aufgaben, die innerhalb der einzelnen
Pipelinestufen abgeschlossen werden müssen, sind im Wesentlichen
wie folgt.
-
-
Der Übertragungs-Controller-Hub 100 erfordert
seinen eigenen Satz von Zählern,
um die Warteschlangen vollständig
zu verwenden, anstatt mehrere Zyklen zu warten, die durch den Unterschied
zwischen der Bereitschaft des Ports und den Aktualisierungen der
Adressen/Schreib-Zähler
bestimmt sind. Der Master-Zähler 251 steht
in der Anfangsstufe einer Pipeline aus sechs oder mehr Stufen. Der
Fern-Warteschlangenzähler 252 befindet
sich am Ausgangsende der Pipeline. Die M-Stufe der Pipelines verwendet
die momentanen Werte der Warteschlangenzähler und erzeugt einen neuen
anhand dessen, welcher Port und welcher Typ der Operation in der
P-Stufe ausgewählt
worden ist. Sowohl das Warteschlangenzähler-Inkrementierungssignal
von der Q-Stufe (das dort vom Port registriert wird) als auch die
Inkremente von den A-Stufen, falls sie zu einer annullierten Operation
führten,
werden berücksichtigt.
Diese Zähler
werden in jedem Zyklus aktualisiert und in einer problemlosen Weise
in jedem Zyklus innerhalb der Port-Parameterregister registriert.
-
Wenn
die Signale von der letzten C-Pipelinestufe im Hub an den Ort der
Ports gesendet werden, ist ein ganzer Taktzyklus erlaubt. Ähnlich ist
ein ganzer Taktzyklus erlaubt, wenn die Signale vom Port zur anfänglichen
Q-Pipelinenstufe des Hubs gesendet werden. Typischerweise besitzt
eine derartige Pipeline eine Tiefe von etwa sechs Stufen.
-
Eine
graphische Darstellung der Transaktionspipeline in 3 veranschaulicht
das Verhalten. In 3 ist jeder Zyklus durch eine
Spalte und jede Transaktion durch eine Zeile dargestellt. Die erste
Transaktion sendet im Zyklus 6 einen Befehl 301, wobei
die resultierende Änderung
des Wertes des Warteschlangenzustands 303 im Zyklus 7 auftritt,
wobei sie im Zyklus 8 zurück
zum Hub 304 übertragen
wird. Folglich würden die
Transaktionen 2 bis einschließlich
7, die als 305 bezeichnet sind, annehmen müssen, dass
der Wert des Warteschlangenzustandszählers ungültig war, wobei sie nicht in
der Lage sein würden,
Transaktionen zu diesem Port einzuleiten. Es würde eine Verbesserung sein,
einen 'Vorbefehl' an den Port in der
A0-Pipelinestufe zu senden, der angibt, dass das Senden einer Transaktion
bevorsteht. Dies würde
die Dinge um zwei Zyklen verbessern. Dies würde aber außerdem die Ergänzung eines
Annullierungssignals in der C-Pipelinestufe erfordern, um den Vorbefehl
zu stornieren, falls er annulliert wird.
-
Die
bevorzugte Lösung
dafür ist
der Gegenstand dieser Patentanmeldung. Der Zustand der Befehlswarteschlange
wird unabhängig
sowohl durch den Hub als auch den Port aufrechterhalten.
-
4 veranschaulicht
die Verwendung von zwei Zählern,
um eine gültige
Warteschlange an einem entfernten Ort aufrechtzuerhalten. Der Hub
erhält
seinen Zähler
in der P-Pipelinestufe als Master-Warteschlangenzähler 251 aufrecht.
Der Master-Warteschlangenzähler 251 gibt
die Anzahl der verfügbaren
Einträge
in der Warteschlange des untergebenen Ports an. Der Master-Warteschlangenzähler 251 wird
auf die Anzahl der Stufen im FIFO-Puffer 410 initialisiert.
Ein von null verschiedener Wert gibt an, dass der Port einen weiteren Befehl
annehmen kann. Er kann in mehreren Arten eingestellt werden:
Ist
entschieden worden, eine Transaktion an den Port, auf den in der
P-Pipelinestufe Bezug genommen wird, zu senden, sendet der Übertragungs-Controller-Hub 100 ein
Dekrementierungssignal 401 an den Zähler 251 für den Zustand
der Master-Warteschlange, der sich für den nächsten Zyklus bereitmacht.
Dies verringert die gespeicherte Anzahl der verfügbaren Einträge im FIFO
Puffer 410 bei einer Zuweisung neuer Daten zu dem Port.
In diesem Beispiel wird die P-Pipelinestufe der nächsten Transaktion
durch die P-Pipelinelogik 405 dargestellt. Dies erlaubt,
dass in aufeinfolgenden Zyklen mehrere Transaktionen an denselben
Port gesendet werden.
-
Der
Prozess muss eine Einstellung vornehmen, falls die Transaktion annulliert
wird. Eine Annullierung bewirkt, dass der Übertragungs-Controller-Hub 100 ein
Inkrementierungssignal 402 an den Master-Warteschlangenzähler 251 sendet,
weil der für
diese Transaktion vorgesehene Eintrag nicht verwendet worden ist. Falls
z. B. die erste Transaktion annulliert wird, erzeugt dies folglich
ein Signal, das bewirkt, dass der Master-Warteschlangenzähler 251 in
der P-Stufe der Transaktion 4 oder während des Taktes 6 (siehe 303 nach 3)
inkrementiert wird. Die Annullierung der Transaktion bedeutet, dass
der Eintrag innerhalb des FIFO-Puffers 410 nicht
länger
zugewiesen ist und erneut verwendet werden kann.
-
Wenn
der Port einen Eintrag von seinem Warteschlangen-FIFO-Puffer 410 verarbeitet
hat, sendet er ein Dekrementierungssignal 414 an den Fern-Warteschlangenzähler 252 innerhalb
der Port-Logik. Die Port-Logik sendet außerdem ein Bestätigungsdekrementierungssignal 408 an
den Übertragungs-Controller-Hub 100 in
der Q-Pipelinestufe 407 zurück. Dieser sendet dann zwei
Zyklen später
in der P-Pipelinestufe ein Inkrementierungssignal 409 an
den Master-Warteschlangenzähler 251.
Die M-Pipelinestufe 411 wird verwendet, um den Port-Zustand
auf die zugeordneten Kanäle
als ihre eigenen Kanäle
abzubilden, die der Übertragungs-Controller-Hub 100 in
der P-Pipelinestufe 405 priorisiert. Folglich bedeutet
die Leerung eines Eintrags vom FIFO-Puffer 410, dass ein
weiterer Eintrag für
die Verwendung verfügbar
ist.
-
Folglich
besitzt der Master-Warteschlangenzähler 251 zwei Inkrementierungseingangssignale,
ein Inkrementierungssignal 409 von der Q-Pipelinestufe 407 und
ein Inkrementierungssignal 402 von der C-Pipelinestufe 404.
Der Master-Warteschlangenzähler 251 kann
außerdem
ein Dekrementierungssignal 401 von der P-Pipelinestufe 405 empfangen.
Folglich muss der Master-Warteschlangenzähler 251 die folgenden
inkrementalen Änderungen
ausführen
können: –1, +1 und
+2.
-
Am
Port-Ende ist der Fern-Warteschlangenzähler 252 einfacher.
Der Zählstand
im Fern-Warteschlangenzähler 251 ist
die Anzahl der im FIFO-Puffer 410 gespeicherten Einträge. Ein
von null verschiedener Wert bedeutet, dass der FIFO-Puffer 410 Daten
für den
Port für
die Verarbeitung speichert. Der Fern-Warteschlangenzähler 252 wird
auf null initialisiert. Der Fern-Warteschlangenzähler 252 empfängt ein
Inkrementierungssignal 413 von den A0/A1-Pipelinestufen 412,
wenn er einen Befehl empfängt,
der angibt, dass sich die Anzahl der verwendeten Einträge vergrößert hat.
Es wird angegeben, dass die eigentlichen Daten einen Zyklus später von
der C-Pipelinestufe 404 ankommen. Der Fern-Warteschlangenzähler 252 empfängt ein
Dekrementierungssignal 414, wenn der FIFO-Puffer 410 einen
Eintrag an den Port ausgibt, das angibt, dass sich die Anzahl der
Einträge
innerhalb des FIFO-Puffers 410 verringert hat. Folglich
muss sich der Fern-Warteschlangenzähler 252 nur um +1
oder –1 ändern. Wenn
der Fern-Warteschlangenzähler 252 dekrementiert
wird, sendet er ein Bestätigungsdekrementierungssignal 408 an
den Hub in der Q-Pipelinestufe 407.
-
Unter
Verwendung des durch die vorliegende Anmeldung offenbarten Systems
konsultiert der Übertragungs-Controller-Hub 100 den
Zähler 251 für den Zustand
der Master-Warteschlange, um zu bestimmen, ob es Raum gibt, um weitere
Daten an den Port zu senden. Der Master-Warteschlangenzähler 251 kann
infolge der Latenzzeit beim Empfangen des Bestätigungsdekrementierungssignals 408 und
des Inkrementierungssignals 409 angeben, dass weniger Raum
verfügbar
ist, als es tatsächlich
der Fall ist. Der Master-Warteschlangenzähler 251 gibt jedoch
niemals mehr Raum an, als tatsächlich
verfügbar
ist. Der Master-Warteschlangenzähler 251 wird
bei einer Zuweisung von Daten zum Port dekrementiert, bevor sie
den Port erreichen. Der Master-Warteschlangenzähler 251 wird bei
Bestätigung
einer Dekrementierung am Fern-Warteschlangenzähler 252 inkrementiert.
Folglich kann sich der Übertragungs-Controller-Hub 100 auf
dem Master-Warteschlangenzähler 251 stützen, um
Entscheidungen zu treffen, ob zusätzliche Daten vom Hub-Übertragungs-Controller 100 zum
Port zu senden sind. Im dynamischen Betrieb können der Master-Warteschlangenzähler 251 und
der Fern-Warteschlangenzähler 252 sich
unterscheidende Angaben besitzen. Der Master-Warteschlangenzähler 251 kann z. B.
keinen Raum innerhalb des FIFO-Puffers 404 angeben, wenn
in der Tat dieser letzte Eintrag gelesen worden ist, aber das Bestätigungsdekrementierungssignal 408,
zurückzuführen auf
die Latenzzeit der Übertragung,
kein Inkrementierungssignal 409 verursacht hat. Es besteht
jedoch die Tendenz, dass sich diese Zähler für jedes Intervall synchronisieren,
wenn der Übertragungs-Controller-Hub 100 keine
neuen Daten sendet. Im Ergebnis dieser Zwei-Zähler-Technik verursacht der Übertragungs-Controller-Hub 100 niemals
einen Überlauf
des FIFO-Puffers 410. Andererseits macht diese Zwei-Zähler-Technik besser als
die Technik des Standes der Technik von der verfügbaren Bandbreite Gebrauch.
Insbesondere erfordert diese Technik keine Tiefe des First-in/First-out-Puffers,
die gleich der Latenzzeit der Datenübertragung ist. Diese Technik
ist in Systemen mit Verzögerungen
zwischen der Datenquelle und dem Datenziel und einer Fehlanpassung
der maximalen Datenübertragungsraten
besonders nützlich.