-
TECHNISCHES
GEBIET DER ERFINDUNG
-
Das
technische Gebiet dieser Erfindung sind Digitalvorrichtungs-Funktionsblöcke, die
sich allgemein auf den Bereich des Mikroprozessorentwurfs beziehen
und die sich genauer auf den Bereich digitaler Signalprozessorvorrichtungen
beziehen. Insbesondere bezieht sich diese Erfindung auf verteilte
Dienstanforderungsbusse wie etwa Datenübertragungsanforderungsbusse.
-
HINTERGRUND
DER ERFINDUNG
-
Die
vorliegende Erfindung behandelt die Datenübertragung, die verschiedene
Speicherportknoten verbindet, in Anwendung auf den Übertragungs-Controller
mit Hub- und Ports-Architektur. Der Übertragungs-Controller mit
Hub und Ports ist der Gegenstand der UK-Patentanmeldung lfd. Nr.
9909196.6, eingereicht am 21. April 1999, mit einer Patentanmeldung
gemäß EPÜ-Übereinkommen
Nr. 00303373.5, eingereicht am 20. April 2000 und veröffentlicht
am 25. 10. 2000 mit der Veröffentlichungsnummer
EP1046999. Der Übertragungs-Controller
mit Hub und Ports ist eine erhebliche Grundverbesserung der Datenübertragungstechniken
in komplizierten digitalen Systemen und schafft viele nützliche
Merkmale, von denen eines der interne Speicherport ist, der die
Verbindung einer praktisch unbeschränkten Anzahl von Prozessor/Speicher-Knoten
mit einem zentralen Übertragungs-Controller
ermöglicht.
Der zentrale Übertragungs-Controller
muss Daten von Knoten zu Knoten übertragen
können,
wobei die Leistung verhältnismäßig unabhängig davon
ist, wie nah oder fern ein Knoten von dem Übertragungs-Controller selbst
sein könnte.
Um das durch die vorliegende Erfindung gelöste Problem zu klären, ist
es hilfreich, einen Überblick über die
Eigenschaften, Architektur und Funktionsbausteine des Übertragungs-Controllers
mit Hub und Ports zu geben.
-
Das
durch diese Erfindung behandelte Systemproblem ist das des Sendens
von Diensttransaktionsanforderungen von vielen Quellen. Die vielen
Quellen können
auf einem einzigen Siliciumchip sein. Die Transaktionsanforderungen
werden an ein gemeinsames zentrales Betriebsmittel wie etwa einen
herkömmlichen
Direktspeicherzugriffs-Controller gesendet. In der bevorzugten Ausführungsform
ist dieser Direktspeicherzugriffs-Controller der Übertragungs-Controller
mit Hub und Ports der oben genannten Patentanmeldung. Die Dienstanforderungen
sind in Transaktionsanforderungspaketen enthalten, die aus Worten
bestehen, von denen jedes viele Bits breit sein kann.
-
Der
herkömmliche
Lösungsansatz
wäre es,
von jedem potentiellen Anforderer dedizierte Busse zu dem Controller
bereitzustellen. Diese Konstruktion hat mehrere Nachteile. Sie ist
inhärent
kompliziert und erfordert kostspielige Hardware, da die Transaktionsanforderungen
parallel bedient werden müssen.
Je mehr potentielle Anforderer es gibt, desto komplizierter muss
ein solches System sein. Eine Alternative ist die nicht parallele
Transaktionsverarbeitung. Diese erfordert einen zentralen Zuteiler,
um bei Dienstanforderungskollisionen die Reihenfolge der Bedienung
zu bestimmen. Diese Alternative muss außerdem jede nicht bediente Quelle
zwingen, Anforderungen neu einzureichen, bis sie quittiert und behandelt
worden sind. Der Transaktionsprozessor erfordert für jeden
neuen Entwurf, der Anforderer hinzufügt oder entfernt, entweder
bei der parallelen oder bei der nicht parallelen Transaktionsverarbeitung
umfangreiche Abwandlungen. Dies führt zu einer schlechten Wiederverwendbarkeit
von Chipmodulentwürfen
und macht schlechten Gebrauch von der knappen Ressource der Entwicklungsingenieure.
Außerdem
haben Anforderer fern von dem zentralen Transaktionsprozessor längere Busse.
Dies erfordert zusätzliche
Beachtung beim Entwurf oder Hardware, um sicherzustellen, dass die
Signalwege nicht langsam sind.
-
Diese
Grundbeschränkungen
an herkömmliche
Datenübertragungstechniken
führten
zu der anfänglichen
Entwicklung des Übertragungs-Controllers
mit Hub und Ports. Der Übertragungs-Controller
mit Hub und Ports ist ein einzigartiger Mechanismus, der die Funktionen
einer Direktspeicherzugriffsmaschine und wei terer Datenbewegungsmaschinen
in einem digitalen Signalprozessorsystem (z. B. Cache-Speicher-Controller)
zu einem einzigen Modul vereinigt.
-
Die
Vereinigung dieser Funktionen besitzt sowohl Vorteile als auch Nachteile.
Der wichtigste Vorteil der Vereinigung ist, dass sie allgemein Hardware
spart, da nicht mehrere Instanzierungen des gleichen Typs der Adressenerzeugungshardware
implementiert zu werden brauchen.
-
Auf
einer höheren
Ebene ist es ebenfalls vorteilhaft, die Adressenerzeugung zu vereinigen,
da es den Entwurf vom Standpunkt des Speicherabbilds her inhärent einfacher
zu ändern
macht. Falls z. B. ein Peripheriegerät zu dem System hinzugefügt oder
aus ihm entfernt wird, ist ein vereinigtes Modul der einzige Abschnitt des
Entwurfs, der eine Änderung
erfordert. In einem verteilten Adressensystem (z. B. Mehrkanal-Direktspeicherzugriff) ändern sich
alle Instanzen der Direktspeicherzugriffskanäle ebenso wie die Speicher-Controller des
digitalen Signalprozessors.
-
Grundlegende
Nachteile des vereinigten Modells sind dagegen seine inhärenten Engpässe, die
sich aus nicht gleichzeitig zulässigen
Mehrfachanforderungen ergeben, wobei sie eine Herausforderung an
höhere Taktraten
sind. Außerdem
gibt es lediglich dadurch, dass das einzelne Modul größer als
irgendeines der Einzelteile ist, die es ersetzt, im Allgemeinen
eine zusätzliche
Kompliziertheit, die mit dem Übergang
zu einem vereinigten Adressenmodell verknüpft ist.
-
Der Übertragungs-Controller
mit Hub und Ports, auf den sich diese Erfindung bezieht, ist ein
stark paralleler und stark im Pipelinesystem arbeitender Speichertransaktionsprozessor.
Dieser Übertragungs-Controller
mit Hub und Ports dient als eine Rückwandplatine, an der viele
Peripherie- und/oder Speicherports angeschlossen können.
-
Systeme,
die einen zentralen Mechanismus zur Verarbeitung mehrerer Übertragungsanforderungen von
mehreren Übertragungsanforderungsknoten
enthalten, besitzen eine unmittelbare Herausforderung, das Problem
zu lösen:
Wie werden nicht gleichzeitig zulässige Übertragungen, d. h. Übertragungskollisionen,
entschieden.
-
Beispielsweise
verwenden einige Systeme in Netzanwendungen eine Technik der Kollisionserfassung und
des willkürlichen
Zurücktretens,
um einen gerechten Zugang zu dem Netz zu schaffen. Irgendeine Station kann
mit Senden beginnen, wenn sie keine Aktivität im Netz sieht. Allerdings
ist es in dem unentschiedenen Zustand möglich, dass mehrere Stationen
gleichzeitig zu senden beginnen. Die Stationen handeln den Besitz des
Netzes nicht aus. Stattdessen prüfen
die Stationen dadurch auf eine Konfliktbedingung, dass sie das,
was sie gesendet haben, wieder empfangen und prüfen, um zu sehen, ob es beschädigt worden
ist (was eine Kollision mit einer anderen Station angibt). Falls
dies geschieht, erfassen alle Stationen, die die Sendung gleichzeitig
begonnen hatten, die Kollision und brechen ihre Sendung ab. Diese
Stationen warten dann eine willkürliche
Zeitdauer, bevor sie erneut zu senden beginnen versuchen. Da jede
Station eine willkürliche
Verzögerung wählt, schafft
es jede Station schließlich,
ihre Daten zu senden. Mit der Zeit könnte dieses System einen gerechten
Zugang zu allen Stationen bieten.
-
Andere
Netzsysteme verwenden eine Technik des Weiterleitens eines Tokens
zwischen den Stationen. Eine Station kann nur dann zu senden beginnen,
wenn sie das Token hat. Wenn sie fertig ist, leitet sie das Token
an die nächste
Station weiter, die es entweder nehmen und Daten senden kann oder
das Token erneut weiterleiten kann, falls sie nicht zum Senden bereit
ist. Dieses System ist sehr gerecht, aber etwas komplizierter und
kostspieliger zu implementieren.
-
Für das Management
der Anzahl unabhängiger
Datenübertragungen
auf eine Weise, die diese Kollisionsfälle eindeutig löst, muss
ein zentraler Datenübertragungs-Controller
entworfen werden, der mehrere gleichzeitige Datenübertragungsanforderungen
behandelt, wobei irgendein Systementwurf offensichtlich mit Kompromissen
rechnen muss.
-
Eine Übersicht über einige
Buszuteilerstrukturen für
Netze ist dargestellt in der Abhandlung "Design and analyses of multiple-bus
arbiters with different prio rity schemes" von Q. Yang u. a., veröffentlicht
in Databases, Parallel Architectures and their Applications (Parbase-90),
International Conference in IEEE Computer Society Proceedings, 7.
März 1990,
auf den Seiten 238–247;
insbesondere das Protokoll mit fester Priorität (Abschnitt 2.1) und das Protokoll
mit rotierender Priorität
(Abschnitt 2.2). Ein zu dem Protokoll fester Priorität ähnliches
Schema ist ebenfalls im Patent der Vereinigten Staaten 4.414.624
beschrieben.
-
ZUSAMMENFASSUNG
DER ERFINDUNG
-
Diese
Erfindung schafft die Lösung
zur gerechten Kollisionsentscheidung in einem Netz von Übertragungsanforderungsknoten.
Das Netz besteht aus einem Übertragunganforderungsknoten
pro Übertragungsanforderer,
wobei sie in einem Übertragungsanforderungsbus
angeordnet sind. Der Übertragungsauforderungsbus
beginnt in einem in Informationsflussrichtung voraus liegenden Knoten
und endet in Informationsflussrichtung dahinter in einem Empfängerknoten,
der als der Anfordererbus-Master-Eingang bezeichnet wird.
-
In
einem gegebenen Taktzyklus kann in jedem Knoten nur eine von zwei
möglichen Übertragungsanforderungen
gesendet werden. Zunächst
kann der vorhergehende in Informationsflussrichtung voraus liegende
Knoten eine Übertragungsanforderung
an den gegenwärtigen
Knoten senden, der sie in Informationsflussrichtung erneut sendet.
Zweitens kann der Anforderer, der an den gegenwärtigen Knoten selbst angeschlossen ist,
eine Anforderung an den in Informationsflussrichtung vorletzten
Knoten senden. Die Entscheidung, was geschieht, erfolgt durch ein
Tokenweiterleitungsschema.
-
Ein
Tokensignal ist nur an einem Knoten an dem Übertragungsanforderungsbus
aktiv. Dieses Token wird in jedem Taktzyklus um die Übertragungsanforderungsknoten
des Busses in Informationsflussrichtung weitergeleitet. Somit hält zu irgendeinem
gegebenen Zeitpunkt ein und nur ein Übertragungsanforderungsknoten
das Token. Das Token wird von dem in Informationsflussrichtung letzten
anfordernden Knoten zu dem in Informationsflussrichtung ersten anfordernden
Knoten weitergeleitet, um eine Token-Schleife zu bilden.
-
Die
Entscheidung von Anforderungen findet wie folgt statt. Falls der
gegenwärtige
Knoten nicht bereit ist, eine Übertragungsanforderung
von seinem Übertragungsanforderer
einzufügen,
wird irgendeine in Informationsflussrichtung voraus liegende Anforderung
an den gegenwärtigen
Knoten gesendet. Dies geschieht unabhängig davon, ob der gegenwärtige Knoten
das Token besitzt. Falls der gegenwärtige Knoten zum Einfügen einer
Anforderung bereit ist, kann es außer unter bestimmten Bedingungen
nicht geschehen. Falls es keine Anforderung von einem in Informationsflussrichtung
voraus liegenden Knoten gibt, kann der gegenwärtige Knoten seine Anforderung
unabhängig
davon, ob er das Token hat, in Informationsflussrichtung senden.
Falls der gegenwärtige
Knoten eine Anforderung von dem in Informationsflussrichtung unmittelbar
davor liegenden Knoten empfängt,
hängt seine
Aktion davon ab, ob er das Token hält. Falls der gegenwärtige Knoten
das Token nicht hält,
muss er das Anforderungssignal von dem in Informationsflussrichtung
voraus liegenden Knoten erneut senden. Falls der gegenwärtige Knoten
das Token hält,
kann er seine eigene Anforderung senden. In diesem Fall sendet der
gegenwärtige
Knoten ein Anhaltesignal an den in Informationsflussrichtung zweiten
Knoten, der seine Anforderung anhält. Es werden keine Anforderungen
abgebrochen. Irgendwelche zuvor angehaltenen Anforderungen in Informationsflussrichtung
voraus können
fortgesetzt werden, sobald das Token von dem gegenwärtigen Knoten
weitergeleitet wird.
-
KURZBESCHREIBUNG
DER ZEICHNUNG
-
Diese
und weitere Aspekte dieser Erfindung sind in der Zeichnung veranschaulicht,
in der:
-
1 einen
Blockschaltplan der grundlegenden Hauptmerkmale eines Übertragungs-Controllers
mit Hub- und Ports-Architektur veranschaulicht;
-
2 die
Mehrprozessormaschine mit Übertragungs-Controller
mit Hub- und Ports-Architektur-Funktionsblock
in Bezug auf diese Erfindung veranschaulicht, wobei sie von einer
höheren
Ebene die wesentlichen Elemente des Übertragungs-Controllers mit
Hub und Ports und seine zugeordneten Funktionseinheiten zeigt;
-
3 den
Funktionsblockschaltplan des Übertragungsanforderungs-Datenbusses
dieser Erfindung veranschaulicht; und
-
4 ein
ausführlicherer
Blockschaltplan des Übertragungsanforderungsknotens
jedes in 3 veranschaulichten internen
Speicherportknotens ist;
-
5 in
Form eines Blockschaltplans ein Beispiel eines der mehreren in 2 veranschaulichten
Prozessoren veranschaulicht; und
-
6 weitere
Einzelheiten des in 5 veranschaulichten digitalen
Signalprozessorkerns mit sehr langem Befehlswort veranschaulicht.
-
AUSFÜHRLICHE
BESCHREIBUNG BEVORZUGTER AUSFÜHRUNGSFORMEN
-
1 veranschaulicht
einen Blockschaltplan der Grundmerkmale des Übertragungs-Controllers mit Hub
und Ports. Der Übertragungs-Controller
mit Hub und Ports ist grundsätzlich
ein Datenübertragungs-Controller,
der an seinem Eingangsabschnitt einen Warteschlangenmanager 100 enthält, der
Daten in Form von Übertragungsanforderungspaketen
empfängt,
priorisiert und absendet. Dieser Warteschlangenmanager 100 ist
innerhalb der Hub-Einheit 110 mit den Kanalregistern 120 verbunden.
Die Kanalregister 12 empfangen die Datenübertragungsanforderungspakete
und verarbeiten sie, indem sie sie zunächst priorisieren und sie daraufhin
einem der N Kanäle
zuweisen. Jeder Kanal repräsentiert
eine Prioritätsebene.
Diese Kanalregister 120 sind mit der Quellsteuerpipeline 130 und
mit der Zielsteuerpipeline 140 verbunden. Diese sind Adressenberechnungseinheiten
für Quelloperationen
(Leseoperationen) und Zieloperationen (Schreiboperationen).
-
Die
Ausgaben von diesen Pipelines werden an M Ports (wobei in 1 sechs
als 150 bis 155 gezeigt sind) rundgesendet. Diese
Ports 150 bis 155 werden entweder mit der Taktfrequenz
des Hauptprozessors oder mit der niedrigeren Taktfrequenz einer
externen Vorrichtung getaktet. Die Lesedaten von einem Port, z.
B. vom Port 150, mit einer Zielschreibadresse des Ports 153 werden über die
Routing-Einheit an die Hub-Zielsteuerpipeline zurückgegeben.
-
Der Übertragungs-Controller
mit Hub und Ports, auf den sich diese Erfindung bezieht, führt mehrere neue
Ideen ein, die die frühere Übertragungs-Controller-Technologie ersetzen.
Zunächst
besitzt er eine einheitliche Pipeline. In den früheren Übertragungs-Controller-Entwürfen war
die Pipeline stark an den von der Vorrichtung unterstützten externen
Speichertyp gekoppelt. In der bevorzugten Ausführungsform enthält der Übertragungs-Controller
mit Hub und Ports mehrere externe Ports, die für den Hub alle völlig gleich
aussehen. Somit können
Peripheriegeräte
und Speicher ungehindert ausgetauscht werden, ohne den Übertragungs-Controller mit Hub
und Ports zu beeinflussen. Zweitens führt der Übertragungs-Controller mit Hub und Ports Übertragungen
gleichzeitig aus. Das heißt,
an den mehreren Ports der Vorrichtung können bis zu N Übertragungen parallel
stattfinden, wobei N die Anzahl der Kanäle in dem Übertragungs-Controller mit
Hub- und Ports-Kern ist.
Jeder Kanal in dem Übertragungs-Controller
mit Hub- und Ports-Kern ist funktional nur eine Menge von Registern.
Diese Register verfolgen die momentane Quell- und Zieladresse, die
Wortzählwerte
und andere Parameter für
die Übertragung.
Jeder Kanal ist völlig
gleich, so dass die Anzahl der durch den Übertragungs-Controller mit
Hub und Ports unterstützten
Kanäle
stark skalierbar ist. Drittens enthält der Übertragungs-Controller mit
Hub und Ports einen Mechanismus, um Übertragungen in eine Warteschlange
in einem dedizierten Warteschlangen-RAM einzureihen.
-
2 veranschaulicht
von einer höheren
Ebene eine Übersicht
einer integrierten Mehrprozessorschaltung, die den Übertragungs-Controller
mit Hub und Ports dieser Erfindung verwendet. Es gibt vier Hauptfunktionsblöcke. Der Übertragungs-Controller
mit Hub und Ports 220 und die Ports einschließlich der
externen Portschnittstelleneinheiten 230 bis 233 der
Ports und des internen Speicherports 260 sind die ersten
zwei Hauptfunktionsblöcke.
Obgleich lediglich vier externe Portschnittstelleneinheiten 230, 231, 232 und 233 veranschaulicht
sind, ist dies lediglich ein Beispiel, wobei mehr oder weniger verwendet
werden könnten.
-
Die
anderen zwei Hauptfunktionsblöcke
sind der Übertragungsanforderungs-Zufuhrmechanismus 245 und
der Datenübertragungsbus
(DTB) 255. Diese sind eng verknüpfte Funktionseinheiten, die
aber kein Teil des Übertragungs-Controllers
mit Hub und Ports 220 sind. Der Übertragungsanforderungs-Zufuhrmechanismus 245 ist
mit mehreren internen Speicherportknoten 270, 271 und 272 gekoppelt.
Obgleich drei interne Portknoten 270, 271 und 272 veranschaulicht
sind, ist dies lediglich ein Beispiel, wobei mehr oder weniger verwendet
werden könnten.
Vorzugsweise enthält
jeder dieser internen Speicherportknoten einen unabhängig programmierbaren
Datenprozessor, der ein digitaler Signalprozessor sein kann, sowie
einen entsprechenden Cache-Speicher oder anderen lokalen Speicher.
Die interne Konstruktion dieser internen Speicherportknoten 270, 271 und 272 ist
für diese
Erfindung nicht wichtig. Für
diese Erfindung ist ausreichend, dass jeder der internen Speicherportknoten 270, 271 und 272 über den Übertragungsanforderungs-Zufuhrmechanismus 245 Übertragungsanforderungen
einreichen kann und einen Speicher besitzt, der eine Quelle oder
ein Ziel für
Daten sein kann. Der Übertragungsanforderungs-Zufuhrmechanismus 245 priorisiert
diese Paketübertragungsanforderungen. Übertragungen,
die von den internen Speicherportknoten 270, 271 oder 272 ausgehen
oder für
sie bestimmt sind, sind über
den Datenübertragungsbus 255 und über den
internen Speicherport-Master 260 mit dem Übertragungs-Controller mit Hub
und Ports 220 gekoppelt. 2 hebt die
mögliche
Verbindung des Datenübertragungsbusses 255 mit
den mehreren internen Speicherportknoten 270, 271 und 272 und
die mögliche
Verbindung der mehreren Übertragungsanforderungsknoten
mit dem Übertragungsanforderungs-Zufuhrmechanismus 245 hervor.
-
Bei
einem Übertragungsanforderungsbus,
der zulässt,
dass Kollisionen ohne Zurücktreten
ungehindert auftreten, würde
der Übertragungsanforderungsbus
jene Anforderer, die in Informationsflussrichtung weiter voraus
sind, inhärent
bevorzugen. Je weiter ein Anforderer in Informationsflussrichtung
dahinter ist, desto höher
ist das Risiko, dass er das Senden seiner Anforderungen verzögern müsste, da
es weitere in Informationsflussrichtung voraus liegende Stationen
und somit ein weiteres Risiko gibt, dass eine Anforderung auf dem Bus
ist, wenn er eine senden möchte.
Diese Ungerechtigkeit braucht kein Problem zu sein, da der Übertragungsanforderungsbus
die meiste Zeit ungenutzt ist und somit eine niedrige Kollisionswahrscheinlichkeit schafft.
Dies ist so, da jede Anforderung auf dem Übertragungsanforderungsbus
veranlasst, dass eine sehr erhebliche Datenmenge durch den Übertragungs-Controller
mit Hub und Ports 220 übertragen
wird. Somit ist die Rate, mit der Übertragungsanforderungen eingereicht
werden, im Durchschnitt niedrig. Obgleich die Übertragungsanforderungen selten
gesendet werden, können
sie andererseits bündelweise
gesendet werden. Somit könnte
eine inakzeptable Ungerechtigkeit auftreten. Zum Beispiel wird angenommen,
dass mehrere interne Speicherknoten etwas mehr oder weniger parallel
verarbeiten können,
was veranlasst, dass sie gleichzeitig ähnliche Übertragungsanforderungsanforderungen
stellen.
-
Diese
Faktoren führten
zu der Annahme eines Token-gestützten
Systems. Somit könnte
ein Anforderer erst dann senden, wenn er das Token hält. Ein
solches Entscheidungssystem ist vollkommen gerecht. Allerdings besteht
die Möglichkeit,
dass ein Anforderer möglicherweise
viele Zyklen darauf warten müsste,
dass ihn das Token erreicht, wenn der Übertragungsanforderungsbus
ungenutzt ist. Dies könnte
selbst dann geschehen, wenn der Übertragungsanforderungsbus
ungenutzt ist. Dies wäre
ineffizient.
-
Dementsprechend
wurde das Token-System des Standes der Technik in dieser Erfindung
abgewandelt. Falls der Übertragungsanforderungsbus
ungenutzt ist, können
Anforderer ihre Anforderungen sofort senden. Die Anforderer fügen sich
dem Verkehr in Informationsflussrichtung voraus, bis sie das Token
haben. Dies führt
zu einer niedrigen Latenzzeit, wenn der Übertragungsanforderungsbus
ungenutzt ist, und zum gerechten Zugriff auf den Übertragungsanforderungsbus,
wenn er belegt ist. Dieses System besitzt wie folgt weitere Eigenschaften.
Jeder Knoten an dem Übertragungsanforderungsbus
ist durch getaktete Flipflops begrenzt. Dies macht den Entwurf grundsätzlich auf
irgendeine Anzahl von Übertragungsanforderungsknoten
inhärent
skalierbar. Zum Beispiel ist die Belastung an irgendeinem Übertragungsanforderungsknoten
unabhängig
von der Anzahl der Vorrichtungen.
-
Es
ist keine besondere Aufmerksamkeit erforderlich, um die Leistungsverschlechterung
in Übertragungsanforderungsknoten
weiter von dem zentralen Controller entfernt zu vermeiden. Es wird
angemerkt, dass von dem zentralen Controller weiter entfernte Übertragungsanforderungsknoten
aufgrund dessen, dass sie gegenüber
anderen Knoten in Informationsflussrichtung weiter voraus sind,
einen Vorteil besitzen. Wenn das System der vorliegenden Erfindung
wie in der bevorzugten Ausführungsform
mit einem Übertragungs-Controller
mit Hub und Ports verwendet wird, braucht der Übertragungs-Controller mit
Hub und Ports nicht abgewandelt zu werden, falls die Anzahl der Übertragungsanforderer
geändert
wird. Mit anderen Worten, der Entwurf des Übertragungs-Controllers mit
Hub und Ports kann stark modular sein. Die Modularität des Übertragungsanforderungsbusses
ist eine wichtige Komponente der Modularität des Übertragungs-Controllers mit
Hub und Ports.
-
3 veranschaulicht
die Verbindung der Übertragungsanforderungsknoten
in einem Bus mit den durch 300 bis 309 bezeichneten
Knoten. Der Knoten 300, der der nächste zu dem Master-Eingang 320 des Warteschlangenmanager-Anforderungsbusses
ist, wird als der nächste
Knoten oder als der in Informationsflussrichtung letzte Knoten bezeichnet.
Der Knoten 309 wird als der weiteste Knoten oder als der
in Informationsflussrichtung erste Knoten bezeichnet. An jedem Übertragungsanforderungsknoten
ist ein Prozessor/Cache-interner-Speicher-Knoten (die Knoten 310 bis 319)
angeschlossen. Diese Prozessor-Cache-interner-Speicher-Knoten 310 bis 319 sind
die gleichen wie die in 2 veranschaulichten Prozessor/Cache-interner-Speicher-Knoten 270, 271 und 272.
Jeder dieser Prozessor/Cache-interner-Speicher-Knoten besitzt die
Fähigkeit, lokale Übertragungsanforderungen
auf dem Bus anzuordnen.
-
Wenn
es keine lokale Anforderung gibt, werden Übertragungsanforderungen von
einem Knoten in Informationsflussrichtung an den nächsten Knoten
weitergeleitet. Diese Übertragungsanforderungen
erreichen schließlich
den Master-Eingang 320 des Warteschlangenmanager-Anfordererbusses
zur Bedienung der Übertragungsanforderung.
Eine Anforderung in Informationsflussrichtung voraus be sitzt Priorität, um vorwärts weitergeleitet
zu werden, bis eine lokale Anforderung aktiv wird. In diesem Fall
bestimmt der Übertragungsanforderungsknoten,
ob das Token vorhanden ist. Falls nicht, wird die lokale Anforderung
angehalten. Das Token ist einfach ein Signal, das in dem in 3 als "Token" gekennzeichneten
oberen Weg um die Übertragungsanforderungsknoten
umläuft.
In jedem Taktzyklus bewegt sich das Token um eine Stelle. Diese
Bewegung erfolgt wie die der Übertragungsanforderungen
in Informationsflussrichtung. Nachdem das Token den Übertragungsanforderungsknoten "0" 300 erreicht hat, wird es
zum Übertragungsanforderungsknoten "9" 309 zurückgesetzt. Umgekehrt muss die
Anforderung in Informationsflussrichtung voraus angehalten werden,
um zu ermöglichen,
dass die lokale Anforderung Vorrang erhält, falls das Token vorhanden
und eine lokale Anforderung aktiv ist. Wie zuvor festgestellt wurde,
kann unabhängig
von der Anwesenheit des Tokens irgendeine lokale Anforderung an
dem lokalen Übertragungsanforderungsknoten
angeordnet werden, falls keine Anforderung in Informationsflussrichtung
voraus vorhanden ist, die über
einen gegebenen Übertragungsanforderungsknoten weiterzuleiten
ist. Der mit "Anhalten" gekennzeichnete
mittlere Weg übermittelt
die einzelnen Halte, die Anforderungen in Informationsflussrichtung
voraus zugunsten lokaler Anforderungen mit dem Token abfangen. Der in 3 mit "Anforderungen" gekennzeichnete
untere Weg repräsentiert
den Fluss der "Anforderungen" von Knoten in Informationsflussrichtung
voraus zu Knoten in Informationsflussrichtung dahinter.
-
4 veranschaulicht
die Grundstruktur für
einen Übertragungsanforderungsknoten 300.
Vorzugsweise besitzt jeder Übertragungsanforderungsknoten 300 bis 309 diese
Struktur. Der in 3 veranschaulichte Anforderungsweg
ist in 4 in einen Anforderungsweg und einen Übertragungsanforderungspaketweg
unterteilt. Vorzugsweise enthält
jede Anforderung zur Bedienung in einem Paket sowohl eine Anforderung
als auch Daten. In der bevorzugten Ausführungsform gibt das Paket die
zu übertragenden
Daten z. B. durch die Quell- und Zieladresse und durch die Datengröße an. Am
lokalen Anforderungseingang 401 werden lokale Anforderungen
zur Bedienung von dem entsprechenden Prozessor/Cache-internen-Speicherportknoten 310 bis 318 empfangen
und am lokalen Dateneingang 400 werden lokale Übertragungsdatenpakete 407 empfangen. Am
Eingang 402 für
Anforderungen in Informationsflussrichtung voraus werden Anforderungen
zur Bedienung von Knoten in Informationsflussrichtung voraus empfangen
und am Dateneingang 404 in Informationsflussrichtung voraus
werden Übertragungsdatenpakete 417 in
Informationsflussrichtung voraus empfangen. Der Eingang 401 für lokale
Anforderungen und der Eingang 402 für Anforderungen in Informationsflussrichtung
voraus sind mit dem Übertragungsanforderungsknoten-Steuerblock 410 verbunden.
Außerdem
empfängt
der Übertragungsanforderungsknoten-Steuerblock 410 am
Token-Eingang 404 in Informationsflussrichtung voraus das Token
und am Eingang 421 für
Halte in Informationsflussrichtung dahinter von einem Knoten in
Informationsflussrichtung dahinter ein Signal für Halte in Informationsflussrichtung
dahinter. Der Übertragungsanforderungsknoten-Steuerblock 410 erzeugt
am Ausgang 422 für
Anforderungen in Informationsflussrichtung dahinter ein Signal für Anforderungen
in Informationsflussrichtung dahinter, am Ausgang 403 für Halte
in Informationsflussrichtung voraus ein Signal für Halte in Informationsflussrichtung
voraus, am Ausgang 418 für lokale Halte ein Signal für lokale
Halte und liefert das Token am Ausgang 419 für das Token
in Informationsflussrichtung dahinter an den Knoten in Informationsflussrichtung
dahinter.
-
Die Übertragungspaketdaten
werden durch Übertragungsanforderungspaketregister
und durch die Umlauflogik 411 behandelt. Die Übertragungsanforderungspaketregister
und die Umlauflogik 411 empfangen das lokale Übertragungsdatenpatenpaket 407 und
das Übertragungsdatenpaket 417 in
Informationsflussrichtung voraus. Die Übertragungsanforderungspaketregister
und die Umlauflogik 411 liefern am Übertragungsdatenpaketausgang 409 ein
Datenpaket 408 in Informationsflussrichtung dahinter an
den Knoten in Informationsflussrichtung dahinter. Außerdem enthalten
die Übertragungsanforderungspaketregister
und die Umlauflogik 411 einen lokalen Datenumlaufweg 414 und
einen Umlaufweg 416 für
Daten in Informationsflussrichtung voraus. Das lokale Datenpaket
läuft während eines
lokalen Halts um. Ähnlich
läuft das
Datenpaket in Informationsflussrichtung voraus während eines Halts in Informationsflussrichtung
voraus um.
-
Der Übertragungsanforderungsknoten-Steuerblock
steuert den Betrieb des Übertragungsanforderungsknotens
wie in Tabelle 1 gezeigt.
-
-
Es
wird angemerkt, dass die Anwesenheit oder Abwesenheit des Tokens
nicht relevant ist, es sei denn, dass der Übertragungsanforderungsknoten-Steuerblock
sowohl von dem Knoten in Informationsflussrichtung voraus als auch
von dem momentanen Knoten eine Übertragungsanforderung
empfängt.
Das Token wird nur dann zur Auflösung
der Priorität
verwendet, wenn sowohl eine Anforderung in Informationsflussrichtung
voraus als auch eine lokale Anforderung gleichzeitig auftreten.
Dementsprechend zeigt Tabelle 1 für das Token für diese
Bedingungen ein "----" oder einen "Unbedeutend"-Status.
-
5 veranschaulicht
einen Blockschaltplan eines Beispiels einer bevorzugten Prozessor-
und Cache-Speicher-Kombination, die die internen Speicherknoten 270, 271 und 272 aus 2 implementiert.
Vorzugsweise enthält
jeder interne Speicherknoten 270, 271 und 272 einen
digitalen Signalprozessorkern und einen entsprechenden Befehls-
und Daten-Cache-Speicher. Der Übertragungs-Controller
mit Hub und Ports 220 versorgt die gesamte Datenkommunikation
zwischen den internen Speicherknoten 270, 271 und 272,
den externen Eingabe/Ausgabe-Vorrichtungen (E/A-Vorrichtungen) und
den Peripheriegeräten
an den externen Ports 230 bis 233 sowie dem internen
Speicher im Port-Master 260 des internen Speichers. Vorzugsweise
umfasst jeder interne Speicherknoten 270, 271 und 272 einen
digitalen Signalprozessorkern 44 mit sehr langem Befehlswort
(VLIW), einen Programmspeicher-Controller (PMC) 46, einen
Datenspeicher-Controller (DMC) 48, einen Emulations-, Test-,
Analyse- und Austestblock 50, einen lokalen Speicher und
eine Datenübertragungsbus-Schnittstelle
(DTB-Schnittstelle) 52. Die internen Speicherknoten 270, 271 und 272 und
der Übertragungs-Controller
mit Hub und Ports 220 kommunizieren über ein Paar Busse mit hohem
Durchsatz. Der Übertragungsanforderungs-Zufuhrmechanismus 245 wird
von den digitalen Signalprozessorkernen 44 verwendet, um
Transaktionen im Übertragungs-Controller
mit Hub und Ports 220 zu spezifizieren und anzufordern.
Der Datenübertragungsbus
(DTB) 255 wird verwendet, um Daten von Objekten in dem
globalen Speicherabbild zu laden und zu speichern. Während irgendein
gegebener digitaler Signalprozessorkern 44 ohne Genehmigung vom Übertragungs-Controller
mit Hub und Ports 220 auf seinen eigenen internen lokalen
Speicher innerhalb des Clusters zugreifen kann, erfordert irgendein
Zugriff auf einen globalen Speicher außerhalb seines lokalen Speichers,
gleich, ob der Zugriff auf den externen Speicher oder auf den lokalen
Speicher eines anderen digitalen Signalprozessors erfolgt, eine
durch den Übertragungs-Controller
angewiesene Datenübertragung.
Die Gesamtarchitektur ist skalierbar, was die Implementierung vieler
interner Speicherknoten ermöglicht,
obgleich drei momentan die bevorzugte Ausführungsform sind. Es wird angemerkt,
dass Architektureinzelheiten wie etwa die Anzahl der digitalen Signalprozessorkerne
und ihre Befehlssatzarchitekturen nicht we sentlich für die Erfindung
sind. Diese Mikroprozessorarchitektur ist nur beispielhaft und die
Erfindung auf viele Mikroprozessorarchitekturen anwendbar.
-
6 ist
ein Blockschaltplan, der den in 5 veranschaulichten
digitalen Signalprozessorkern 44 ausführlicher veranschaulicht. Der
digitale Signalprozessorkern 44 ist ein 32-Bit-Achtwege-VLIW-Pipelineprozessor.
Der Befehlssatz besteht aus 32-Bit-Computerbefehlen mit reduziertem
Befehlsvorrat (RISC) mit fester Länge, die für Digitalsignalverarbeitungsanwendungen
abgestimmt sind. Fast alle Befehle führen Register-Register-Operationen
aus, während
alle Speicherzugriffe unter Verwendung expliziter Lade/Speicher-Befehle ausgeführt werden.
Wie in 10 gezeigt ist, besteht die
Befehlspipeline 58 aus einer Holstufe 60 und aus einer
Decodierstufe 62. Die Holstufe 60 gewinnt gemäß der Steuerung
des Programmspeicher-Controllers 46 Programmcodes aus dem
Befehls-Cache-Speicher 64 in
Gruppen zu acht Befehlen, die ein Holpaket genannt werden, in den
Prozessorkern wieder. Die Decodierstufe 62 analysiert das
Holpaket syntaktisch, bestimmt den Parallelismus und die Betriebsmittelverfügbarkeit
und konstruiert ein Ausführungspaket
von bis zu acht Befehlen. Daraufhin wird jeder Befehl in dem Ausführungspaket
in Steuersignale übersetzt,
um die richtigen Einheiten in der Ausführungspipeline 66 anzusteuern.
Die Ausführungspipeline 66 besteht
aus zwei symmetrischen Datenwegen, einem Datenweg A 68 und
einem Datenweg B 70, einer gemeinsamen 64-Bit-Lade/Speicher-Einheitsgruppe,
der D-Einheitsgruppe 72,
und einer gemeinsamen Verzweigungseinheitsgruppe, der P-Einheitsgruppe 74.
Jeder Datenweg enthält
eine 32-Wort-Registerdatei (32-Wort-RF) 76 und vier Ausführungseinheitsgruppen,
eine A-Einheitsgruppe 78, eine C-Einheitsgruppe 80, eine S-Einheitsgruppe 82 und eine
M-Einheitsgruppe 84. Insgesamt gibt es in der Ausführungspipeline 66 zehn
getrennte Einheitsgruppen. In jedem Zyklus können acht dieser Einheiten
gleichzeitig geplant werden. Jede Funktionseinheitsgruppe enthält mehrere
Funktionseinheiten, von denen einige unter den Einheitsgruppen verdoppelt
sind. Insgesamt gibt es neun 32-Bit-Addierer, vier 32-Bit-Schieber,
drei Boolesche Operatoren und zwei 32-Bit-mal-16-Bit-Multiplizierer. Die
Multiplizierer sind jeweils in zwei 16-Bit-mal-16-Bit-Multiplizierer
oder in vier 8-Bit-mal-B-Bit-Multiplizierer konfigurierbar. Der
Speicher in den internen Speicherknoten 270, 271 und 272 ist
vorzugsweise zwischen einem über
den Programmspeicher-Controller 46 gesteuerten Befehls-Cache-Speicher 46 und
einem über
den Datenspeicher-Controller 48 gesteuerten Daten-Cache-Speicher
und Schreib-Lese-Speicher 88 aufgeteilt. Diese Speicheraufteilungen
werden vom digitalen Signalprozessorkern 44 auf herkömmliche
Weise verwendet.
-
Jeder
digitale Signalprozessorkern 44 kann auf mehrere Art Datenübertragungen
anfordern. Der digitale Signalprozessorkern 44 kann in
Reaktion auf einen expliziten Datenübertragungsbefehl eine Datenübertragungsanforderung
an den Übertragungs-Controller
mit Hub und Ports 220 ausgeben. Der Datenübertragungsbefehl
muss die Datenquelle, das Datenziel und die Datenmenge spezifizieren.
Diese Spezifikationen können
durch Sofortfelder in den Befehlen oder durch in Registern oder
im Speicher gespeicherte Parameter erfolgen. Vorzugsweise kann jeder
digitale Signalprozessorkern 44 irgendeine Datenübertragung
anfordern, die durch den Übertragungs-Controller
mit Hub und Ports 220 bedient werden kann. Somit kann irgendein
digitaler Signalprozessorkern 44 Daten intern oder extern übertragen
und irgendeinen internen Speicherknoten laden oder lesen.
-
Vorzugsweise
enthält
jeder digitale Prozessorkern 44 außerdem automatische Mechanismen
zum Erzeugen von Anforderungen zur Datenübertragung für den Cache-Speicher-Dienst.
Somit veranlasst ein Fehler des Befehls-Cache-Speichers vorzugsweise,
dass der Programmspeicher-Controller 46 eine Datenübertragungsanforderung
aus einer anderen Datenquelle erzeugt, um eine Linie des Befehls-Caches 64 mit
Daten einschließlich
Programmbefehlen, die bei der Adresse gespeichert sind, die den
Fehler des Cache-Speichers erzeugt, zu füllen. Ähnliche veranlasst ein Fehler
des Daten-Cache-Speichers bei einem Lesen von Daten vorzugsweise,
dass der Datenspeicher-Controller 48 eine Datenübertragungsanforderung
zum Wiedergewinnen von Daten erzeugt, um eine Linie im Daten-Cache-/Schreib-Lese-Speicher 88 mit
entsprechenden Daten zu füllen.
Dieser Befehl und diese Daten werden in einer höheren Speicherebene gespeichert.
Diese höhere
Speicherebene kann ein kombinierter chipintegrierter Cache-Speicher
sein, der von allen digitalen Signalprozessorkernen 44 verwendet
wird, oder kann extern zu der integrierten Mehrprozessorschaltung
sein. Es gibt zwei Alternativen für Fehler des Daten-Cache-Speichers
beim Schreiben von Daten. In einer Durchschreib-Betriebsart veranlasst ein Schreiben
von Daten durch den digitalen Prozessorkern 44, bei dem
ein Fehler des Daten-Cache-/Schreib-Lese-Speichers 88 auftritt,
dass der Datenspeicher-Controller 48 eine Datenübertragungsanforderung
erzeugt, um die Schreibdaten an einer geeigneten Stelle in einer
höheren
Speicherebene zu speichern. In einer Rückschreibbetriebsart veranlasst
ein Schreiben von Daten durch den digitalen Prozessorkern 44,
bei dem ein Fehler des Daten-Cache-/Schreib-Lese-Speichers 88 auftritt,
dass der Datenspeicher-Controller 48 eine Datenübertragungsanforderung
erzeugt, um entsprechende Daten an der geeigneten Stelle von einer
höheren
Speicherebene zur Speicherung im Daten-Cache-/Schreib-Lese-Speicher 88 zurückzurufen.
Daraufhin werden die Schreibdaten in den Daten-Cache-/Schreib-Lese-Speicher 88 geschrieben,
wobei sie die entsprechenden, gerade aus der höheren Speicherebene zurückgerufenen
Daten überschreiben. Auf
diesen Prozess wird als eine Schreibzuweisung in dem Daten-Cache-Speicher
Bezug genommen.
-
Vorzugsweise
verwendet der Datenspeicher-Controller 48 eine Datenübertragungsanforderung
außerdem
zur Behandlung eines Zurückschreibens
von Daten in einen Speicher höheren
Ebene bei der Leerung eines schmutzigen Eintrags aus dem Cache-Speicher.
Ein schmutziger Cache-Speicher-Eintrag enthält Daten, die geändert worden
sind, seit sie aus einer höheren
Speicherebene zurückgerufen
wurden. Diese geänderten Daten
entsprechen einem späteren
Zustand des Programms als die in der höheren Speicherebene gespeicherten
Daten. Wenn diese Daten ersetzt werden müssen, um Platz für neue Cache-Speicher-Daten
zu machen, was als eine Cache-Leerung bezeichnet wird, müssen diese
schmutzigen Daten in eine höhere
Speicherebene zurückgeschrieben
werden, um den richtigen Programmzustand aufrechtzuerhalten. Für dieses
Zurückschreiben
geleerter schmutziger Cache-Speicher-Einträge wird vorzugsweise der Übertragungs-Controller
mit Hub und Ports 220 verwendet.
-
Diese
Prioritätstechnik
arbeitet unter einer Vielzahl von Belastungsbedingungen gerecht.
Wenn die Belastung gering ist und es eine niedrige Wahrscheinlichkeit
der Erzeugung einer lokalen Anforderung oder des Empfangs einer
Anforderung aus der Informationsflussrichtung voraus gibt, gibt
es wenige Kollisionen. Unter diesen Bedingungen werden nahezu alle
lokalen Anforderungen sofort in Informationsflussrichtung übertragen.
Während
mäßiger Belastung
gibt es eine höhere
Wahrscheinlichkeit, dass die Knoten in Informationsflussrichtung
voraus an den Warteschlangen-Master-Knoten weitergeleitet werden,
wobei sie aber weiter entfernt als die Knoten in Informationsflussrichtung
dahinter sind. Wenn es während
starker Belastung eine hohe Wahrscheinlichkeit sowohl des Empfangs
einer Anforderung in Informationsflussrichtung voraus als auch der Erzeugung
einer lokalen Anforderung gibt, stellt das Token sicher, dass jeder
Knoten einen gerechten Zugriff hat. Somit schafft die Prioritätstechnik
dieser Erfindung allgemein unter allen Bedingungen einen gerechten Zugriff
auf alle Knoten. Diese Technik ist durch die Auswahl der Anzahl
der Knoten skalierbar. Da jeder Knoten nur mit seinen Nachbarn verbunden
ist, ist die Belastung an jedem Knoten unabhängig von der Anzahl der Knoten.
Je höher
die Anzahl der Knoten ist, desto länger ist der durchschnittliche
Weg zu dem Warteschlangenmanageranforderungs-Bus-Master und somit umso länger die
durchschnittliche Latenzzeit zwischen der Übertragung einer Anforderung
und ihrem Empfang. Allerdings wird diese Wirkung insbesondere unter
starker Belastung häufig
durch die Halte verdeckt, die erzeugt werden, wenn ein Knoten mit
dem Token eine lokale Anforderung erzeugt. Außerdem hat jeder Knoten inhärent eine
längere
durchschnittliche Latenzzeit zwischen der Ausgabe einer lokalen
Anforderung und ihrer Bedienung, wenn es mehrere Knoten gibt. Dementsprechend ist
dies kein sehr nachteiliger Faktor.
-
Diese
Erfindung ist in Verbindung mit der bevorzugten Ausführungsform
beschrieben worden, in der die Anforderungen solche für eine Datenübertragung
sind. Der Fachmann auf dem Gebiet erkennt, dass eine Anforderung
dieser Art nur eine Art ist, die durch diese Erfindung bedient werden
kann. Diese Erfindung kann verwendet werden, um irgendeine Datenverarbeitungsfunktion,
die von meh reren Anforderern angefordert werden kann und durch eine
zentrale Anwendungseinheit bedient wird, zu verbinden und zu priorisieren.