-
TECHNISCHES GEBIET DER ERFINDUNG
-
Die
vorliegende Anmeldung betrifft allgemein das Gebiet der Mikroprozessoren
und insbesondere einen digitalen Signalprozessor zur Durchführung des
Datenaustausches zwischen Speicherports einer Mehrportvorrichtung.
-
HINTERGRUND DER ERFINDUNG
-
Die
vorliegende Anmeldung schafft eine Lösung, um die Datenübertragung
vorzunehmen, bei der verschiedene Speicherport-Knoten verbunden
sind, wie sie bei der Übertragungssteuereinheit
mit Hub- und Ports-Architektur angewendet wird. Die Übertragungssteuereinheit
mit Hub und Ports ist Gegenstand des Patents Nr.
EP 1 046 999 , eingereicht am 21. April
1999. Die Übertragungssteuereinheit
mit Hub und Ports stellt eine wesentliche, grundlegende Verbesserung
bei Datenübertragungsverfahren
in komplexen digitalen Systemen dar und bietet viele nützliche
Besonderheiten, wovon eine der interne Speicherport ist, der ein
Anschließen
einer praktisch unbegrenzten Anzahl von Prozessor-/Speicher-Knoten an eine zentralisierte Übertragungssteuereinheit
ermöglicht.
Die zentralisierte Übertragungssteuereinheit
muss imstande sein, Daten von Knoten zu Knoten mit einer Leistung
zu übertragen,
die relativ unabhängig
davon ist, wie nahe oder entfernt ein Knoten von der Übertragungssteuereinheit
selbst ist. Um das Problem zu verdeutlichen, das mittels der offenbarten
Lehren gelöst
wurde, ist es hilfreich, Kenngrößen, Architektur
und funktionsbeteiligte Baublöcke
der Übertragungssteuereinheit
mit Hub und Ports nochmals zu durchdenken.
-
Obwohl
direkte Speicherzugriffs-(DMA-)Verfahren ein leistungsfähiges Werkzeug
in einem digitalen Signalprozessorsystem darstellen, haben sie ihre
Grenzen. Die Hauptbeschränkung
einer herkömmlichen
Direktspeicherzugriffsmaschine ist, dass ein Hinzufügen von
zusätzlicher
Kanalkapazität
zusätzliche
Hardware (im Allgemeinen eine Nachbildung eines vollständigen Kanals)
erfordert. Auf diesem Gebiet können
einige Optimierungen vorgenommen werden, wie etwa gemeinsames Benutzen
von Registern durch mehrere Kanälen, wobei
allerdings im Allgemeinen die folgende Regel gilt: N Kanäle kosten
N-mal so viel wie ein einziger Kanal.
-
Herkömmliche
Direktspeicherzugriffsverfahren lesen von einer Quelle und leiten
anschließend
die Daten zu einem Ziel weiter. Die Quellenübertragungen werden zunächst mit
voller Rate durchgeführt.
Wenn jedoch die Quelle eine größere Datenübertragungsbandbreite
als das Ziel hat, werden diese Daten in der Direktspeicherzugriffsmaschine
einen Rückstau
bilden. Dies wird schließlich
die Rate, mit der Quellen-Übertragungen
ausgegeben werden, herabsetzen, Folglich ist die Datenübertragungsbandbreite
der Quelle praktisch auf jene des Ziels beschränkt. Wenn ein weiterer Kanal
einen anderen Quellenport und einen anderen Zielport hat, gibt es
keine Konflikte bei Anwendung der herkömmlichen lesegetriebenen Methode.
Wenn jedoch der Quellenport des weiteren Kanals der gleiche ist,
wird der weitere Kanal nicht verarbeitet werden können. Dies
sorgt für
Ineffizienz. Bei einer Vorrichtung, die jeweils nur eine Übertragung
unterstützt,
ist das akzeptabel. Die Übertragungssteuereinheit
mit Hub- und Ports-Einrichtung unterstützt jedoch mehrere gleichzeitige Übertragungen, und
es müssen
andere Vorkehrungen getroffen werden. Ein üblicher Übertragungsprozess des Standes
der Technik beginnt damit, Daten von der Quelle zu lesen und sie
dann in das Ziel zu schreiben. Das Quellenlesen treibt den Prozess,
in dem es zuerst auftritt, und alles andere ergibt sich als Folge.
-
Bei
einer herkömmlichen
lesegetriebenen Methode wird die Quelle beginnen, Daten zu lesen,
die zu dem Ziel geschickt werden. Wenn jedoch das Ziel langsam ist,
wird ein Rückstau
von Daten, die darauf warten, geschrieben zu werden, schließlich bewirken,
dass der Quellen-Leseprozess zum Stillstand kommt, da er keinen
Platz für
die gelesenen Daten zur Verfügung
hat. Bei nur einem Kanal ist das akzeptabel, aber wenn es mehrere
Kanäle
gibt, treten Konflikte auf. Die Quelle für diesen Kanal ist blockiert
und kann nicht auf weitere Leseanforderungen reagieren. Es ist jedoch
wünschenswert,
imstande zu sein, stattdessen einen anderen Kanal zu bedienen.
-
Diese
grundsätzlichen
Beschränkungen
bei herkömmlichen
Datenübertragungsverfahren
führten
zur Erstentwicklung der Übertragungssteuereinheit
mit Hub und Ports. Die Übertragungssteuereinheit
mit Hub und Ports ist ein einziger Mechanismus, der die Funktionen
eines Direktspeicherzugriffs und weiterer Datenübertragungsmaschinen in einem
digitalen Signalprozessorsystem (beispielsweise Cache-Controllern)
zu einem einzigen Modul zusammenfasst.
-
Ein
Zusammenfassen solcher Funktionen hat sowohl Vor- als auch Nachteile.
Der wichtigste Vorteil der Zusammenfassung ist, dass dadurch im
Allgemeinen Hardware eingespart wird, da viele Instantiierungen von
der gleichen Art der Adressenerzeugungs-Hardware nicht implementiert
werden müssen.
-
Auch
auf einer höheren
Ebene ist es vorteilhaft, die Adressenerzeugung zusammenzufassen,
da sie, vom Standpunkt einer Speicherabbildung aus betrachtet, von
Natur aus den Aufbau leichter modifizierbar macht. Wenn beispielsweise
ein Peripheriegerät
zu dem System hinzugefügt
oder von dem System entfernt wird, dann wird ein zusammengefasstes
Modul der einzige Teil des Aufbaus sein, der eine Änderung
erfordert. Bei einem System mit verteilten Adressen würden sich
(beispielsweise bei einem Mehrkanal-Direktspeicherzugriff) alle
Instanzen der Direktspeicherzugriffskanäle ändern, ebenso auch die Speichersteuereinheiten
des digitalen Signalprozessors.
-
Grundlegende
Nachteile des zusammengefassten Modells sind jedoch seine ihm eigene
Engpassneigung, die aus einem Kollidieren mehrerer Anforderungen
resultiert, und seine Probleme bei höheren Taktfrequenzen. Außerdem gibt
es im Allgemeinen eine zusätzliche
Komplexität,
die mit dem Übergang
zu einem zusammengefassten Adressenmodell verbunden ist, allein
dadurch, dass das einzelne Modul größer ist als jedes der Einzelteile,
die es ersetzt.
-
Die Übertragungssteuereinheit
mit Hub und Ports, auf die sich diese Anmeldung bezieht, ist ein
hochentwickelter Speichertransaktionsprozessor mit paralleler und
Pipeline-Verarbeitung. Diese Übertragungssteuereinheit
mit Hub und Ports dient als eine Backplane, an die viele periphere
Ports und/oder Speicherports angeschlossen werden können.
-
ZUSAMMENFASSUNG DER ERFINDUNG
-
Das
Patent ist durch die beigefügten
Ansprüche
definiert.
-
Die
Ideen des Verfahrens und der Vorrichtung, die hier offenbart sind,
schaffen die Voraussetzung für die
Zusammenschaltung von mehreren Speicherport-Knoten von Mehrprozessorvorrichtungen,
die auf eine Weise zu verbinden sind, welche die Lese-Latenzzeit
bewahrt, ungeachtet dessen, wie nahe oder entfernt ein Knoten von
einer zentralisierten Datenübertragungssteuereinheit
ist, wie etwa der Übertragungssteuereinheit mit
Hub- und Ports-Architektur, auf der sie beruht. Bei Verwendung dieser
Art der Zusammenschaltung, als "Schleife
mit synchroner, fester Latenz" bezeichnet,
erfordern die Ausgabe eines Lesebefehls und die Zurückerlangung
von Daten an dem Speicherport, der die Datenübertragung anfordert, eine
feste Anzahl von Taktzyklen für
jeden Speicherport auf dem Datenübetragungsbus
(Data Transfer Bus). Dies ermöglicht
eine einfachere Durchführung
der Lese-dann-Schreibe-Operationen, die den Datenübertragungsprozess
bilden.
-
KURZBESCHREIBUNG DER ZEICHNUNG
-
Die
vorliegende Erfindung wird nun beispielhaft weiter beschrieben,
wobei auf bestimmte Ausführungsbeispiele
Bezug genommen wird, die in der beigefügten Zeichnung veranschaulicht
sind, worin
-
1 ein
Blockdiagramm der grundlegenden Hauptmerkmale einer Übertragungssteuereinheit
mit Hub und Ports-Architektur darstellt;
-
2 die
Mehrprozessor-Maschine mit dem Funktionsblock der Übertragungssteuereinheit
mit einer Hub- und Ports-Architektur darstellt, wobei von einer
höheren
Ebene aus die wesentlichen Elemente der Übertragungssteuereinheit mit
Hub und Ports und ihre zugeordneten Funktionseinheiten gezeigt sind;
-
3 das
Funktionsblockschema des Datenbusses in Form einer Schleife mit
synchroner, fester Latenz darstellt;
-
4 ein
stärker
auf Einzelheiten eingehendes Blockdiagramm der Data Transfer Bus-Schnittstelle jedes
in 3 gezeigten internen Speicherport-Knotens ist;
-
5 ein
Blockdiagramm von einem Beispiel für einen der in 2 und 3 gezeigten
mehreren Prozessoren darstellt;
-
6 weitere
Einzelheiten des in 5 gezeigten digitalen VLIW-Signalprozessorkerns
darstellt.
-
AUSFÜHRLICHE BESCHREIBUNG BEVORZUGTER
AUSFÜHRUNGSFORMEN
-
1 stellt
ein Blockdiagramm der grundlegenden Merkmale der Übertragungssteuereinheit
mit Hub und Ports dar. Die Übertragungssteuereinheit
mit Hub und Ports ist im Grunde genommen eine Datenübertragungssteuereinheit,
die an ihrem Eingangsabschnitt einen Warteschlangen-Manager 100 hat,
um Daten in Form von Übertragungsanforderungspaketen
zu empfangen, der Priorität
nach zu ordnen und abzufertigen. Dieser Warteschlangen-Manager 100 verbindet
innerhalb der Hub-Einheit 110 mit den Kanalregistern 120.
Die Kanalregister 12 nehmen die Datenübertragungsanforderungspakete
entgegen und verarbeiten sie, indem sie sie zuerst der Priorität nach ordnen
und ihnen dann einen der N Kanäle
zuweisen. Jeder Kanal repräsentiert ein
Prioritätsniveau.
Diese Kanalregister 120 koppeln an die Quellensteuerungspipeline 130 und
die Zielsteuerungspipeline 140 an. Diese sind Adressberechnungseinheiten
für Quellenoperationen
(Lesen) und Zieloperationen (Schreiben).
-
Ausgaben
von diesen Pipelines werden an M Ports (in 1 sechs
als 150 bis 155 gezeigt) gesendet. Die Ports 150 bis 155 sind
entweder mit der Hauptprozessor-Taktfrequenz oder mit einer niedrigeren
Taktfrequenz einer externen Einrichtung getaktet. Lesedaten von
einem Port, Z. B. dem Port 150, mit einer Ziel-Schreibadresse
des Ports 153 werden durch die Leitweglenkungseinheit zur
Hub-Zielsteuerungspipeline zurückgeschickt.
-
Die
hier offenbarte Übertragungssteuereinheit
mit Hub und Ports führt
verschiedene neue Ideen ein, die an die Stelle der früheren Datenübertragungssteuerungstechnologie
treten. Erstens erfolgt die Pipeline-Verarbeitung gleichmäßig. Bei
den früheren
Ausführungen
von Übertragungssteuereinheiten
war die Pipeline stark an den Typ des externen Speichers, der von
der Vorrichtung unterstützt
wird, gebunden, In der bevorzugten Ausführungsform umfasst die Übertragungssteuereinheit
mit Hub und Ports mehrere externe Ports, die für den Hub alle gleich aussehen.
Folglich können
Peripheriegeräte
und Speicher uneingeschränkt
ausgetauscht werden, ohne dass sich das auf die Übertragungssteuereinheit mit
Hub und Ports auswirkt. Zweitens führt die Übertragungssteuereinheit mit
Hub und Ports mehrere Ü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 der Übertragungssteuereinheit mit
Hub- und Ports-Kern
ist. Jeder Kanal in der Übertragungssteuereinheit
mit Hub und Ports-Kern ist funktionell nur ein Satz von Registern.
Diese Register verfolgen die aktuellen Quellen- und Zieladressen,
die Wortzahlen und weitere Parameter für die Übertragung. Alle Kanäle sind
gleich, und folglich ist die Anzahl der Kanäle, die durch die Übertragungssteuereinheit
mit Hub und Ports unterstützt
werden, weit skalierbar. Drittens umfasst die Übertragungssteuereinheit mit
Hub und Ports einen Mechanismus zur Warteschlangenbildung von Übertragungen
in einem speziellen Warteschlangen-RAM.
-
2 stellt
von einer höheren
Ebene aus einen Überblick über eine
integrierte Mehrprozessorenschaltung dar, welche die hier ausführlich beschriebene Übertragungssteuereinheit
mit Hub und Ports anwendet. Es gibt vier Hauptfunktionsblöcke. Die Übertragungssteuereinheit 220 mit
Hub und Ports und die Ports, einschließlich Ports von externen Portschnittstelleneinheiten 230 bis 233 und
des internen Speicherports 260, sind die ersten zwei Hauptfunktionsblöcke. Auch
wenn vier externe Portschnittstelleneinheiten 230, 231, 232 und 233 dargestellt
sind, dies ist nur ein Beispiel, und es könnten mehr oder weniger verwendet
werden. Die anderen beiden Haupffunktionsblöcke sind der Übertragungsanforderungs-Zuführmechanismus 245 und
der Data Transfer Bus (DTB) 255. Diese sind eng miteinander
verbundene Funktionseinheiten, die kein Bestandteil der Übertragungssteuereinheit 220 mit
Hub und Ports sind. Der Übertragungsanforderungs-Zuführmechanismus 245 ist
an mehrere interne Speicherport-Knoten, 270, 271 und 272,
gekoppelt. Auch wenn drei interne Port-Knoten 270, 271 und 272 dargestellt
sind, dies ist nur ein Beispiel, und es könnten mehr oder weniger verwendet
werden. Jeder dieser internen Speicherport-Knoten enthält vorzugsweise
einen unabhängig
programmierbaren Datenprozessor, der ein digitaler Signalprozessor
sein könnte,
und entsprechend Cachespeicher oder anderen Lokalspeicher. Der innere
Aufbau dieser internen Speicherport-Knoten 270, 271 und 272 ist
für die
vorliegende Offenbarung unwichtig. Für die vorliegenden Lehren ist
es ausreichend, dass jeder der internen Speicherport-Knoten 270, 271 und 272 Übertragungsanforderungen über den Übertragungsanforderungs-Zuführmechanismus 245 einreichen
kann und Speicher hat, der für
Daten Quelle oder Ziel sein kann. Der Übertragungsanforderungs-Zuführmechanismus 245 ordnet
diese Paketübertragungsanforderungen
der Priorität
nach in einer Weise, die für
die vorliegenden Lehren unwichtig ist. Übertragungen, die als Ursprung oder
Ziel die internen Speicherport-Knoten 270, 271 oder 272 haben,
sind über
den Data Transfer Bus 255 und einen Port-Master 260 für internen
Speicher mit der Übertragungssteuereinheit 220 mit
Hub und Ports gekoppelt. 2 stellt die mögliche Verbindung
des Data Transfer Busses 255 mit mehreren internen Speicherport-Knoten 270, 271 und 272 sowie
die mögliche
Verbindung mehrerer Übertragungsanforderungsknoten
mit dem Übertragungsanforderungs-Zuführmechanismus 245 heraus.
-
3 stellt
ein Beispiel für
die hier offenbarte Schleife mit synchroner, fester Latenz dar. 3 veranschaulicht
weitere Einzelheiten des Data Transfer Busses 255. Diese
Schleife mit fester Latenz umfasst mehrere synchrone, interne Speicherport-Knoten 301 bis 308,
die den internen Speicherport-Knoten 270, 271 und 272 entsprechen.
Jeder interne Speicherport-Knoten 301 bis 318 schließt eine
entsprechende Data Transfer Bus-Schnittstelle 311 bis 318 ein.
Befehle wie auch Daten werden in den Data Transfer Bus-Schnittstellen 311 und 318 zwischengespeichert.
Um Daten aus dem Speicher an einem bestimmten internen Speicherport-Knoten 301 bis 308 zu
lesen, muss ein Lesebefehl von dem Knoten-Master 300 für interne
Speicherports erst etliche Knoten in der Schleife durchlaufen, bis
der erforderliche interne Speicherport-Knoten erreicht ist. Sobald auf
sie zugegriffen worden ist, werden die Lesedaten an die Steuereinheit
durch die übrigen
Knoten zu dem Knoten-Master 300 für interne Speicherports zurückgeschickt.
Die Beschaffenheit der Schleife ist derart, dass für alle Speichereinrichtungen
der Schleife die Summe aus der Anzahl der Knoten, durch die der
Lesebefehl geschickt wird, und der Anzahl der Knoten, durch die
die gelesenen Daten geschickt werden, eine Konstante ist. Diese
Konstante entspricht der Länge
der Schleife.
-
Der
Schleifenbus mit synchroner, fester Latenz ist in zwei Wege mit
der gleichen Anzahl von Registern und der gleichen Latenzzeit unterteilt.
Der erste Weg transportiert ein "Befehls-/Schreibdaten"-Wort. Der zweite
Weg transportiert ein "Lesedaten"-Wort. Es werden
separate unidirektionale Datenbusse zum Lesen und Schreiben verwendet.
In Abhängigkeit
davon, wo in der Schleife sich ein interner Speicherport-Knoten
befindet, wird es unterschiedliche Anzahlen von Befehls-/Schreibdaten-Verzögerungsstufen
und Lesedaten-Verzögerungsstufen geben.
Jedoch wird die Summe der beiden immer konstant und mit der Anzahl
der Knoten in der Schleife im Zusammenhang stehend sein. Folglich
kommen gelesene Daten nach einer im Voraus festgelegten Anzahl von
Taktzyklen, nachdem sie angefordert wurden, zurück. Außerdem vermeidet das Anordnen der
internen Speicherport-Knoten 301 bis 308 in einer
Schleife Konflikte, falls mehrere Speicherknoten gleichzeitig den
Bus treiben wollen. Wenn alle internen Speicherport-Knoten einen
zugeordneten Lesedatenbus hätten,
wäre es
möglich,
dass Daten von vielen Lesevorgängen
gleichzeitig am internen Knoten-Master 300 eintreffen.
Die Behandlung dieser Möglichkeit
würde den
Buscontroller komplizierter werden lassen. Innerhalb der Schleife
von 3 sind alle derartigen Konflikte vermieden.
-
Herkömmlich hat
eine Speicherschnittstelle einen einzigen Adressbus, der mit allen
Einrichtungen, auf die zugegriffen wird, verbunden ist. Herkömmliche
Speicherschnittstellen haben entweder einen einzigen bidirektionalen
Lese-/Schreib-Datenbus
oder unabhängige
unidirektionale Lesedatenbusse und Schreibdatenbusse. Wenn die Taktfrequenz
hoch ist, die Anzahl der Einrichtungen groß ist oder die Drahtlängen groß sind,
in irgendeiner Kombination, beginnt die Koordinierung und Steuerung
eines solchen Systems auf Grund der ihm eigenen Leitungsverzögerung zusammenzubrechen.
-
Der
Schleifen-Datenbus mit synchroner, fester Latenz geht dieses Problem
an. Adress- und Schreibdaten-Signale werden in Form einer Prioritätsverkettung
von Einrichtung zu Einrichtung geschickt und bei jeder Einrichtung
durch Register gepuffert. Folglich ist die Belastung der Verbindungen
gering und unabhängig
von der Anzahl der Einrichtungen. Dies ermöglicht, die Taktfrequenz und
die Anzahl der Einrichtungen zu erhöhen. Ein Merkmal dieses Systems
ist, dass Adressinformationen und Schreibdaten länger brauchen, um Knoten zu erreichen,
die von dem internen Speicherport-Master-Knoten weiter entfernt
sind. Dies ist kein Problem bei Schreibvorgängen. Wenn jedoch Lesedaten
einfach durch die Schleife von Registern zu dem Knoten-Master 300 für interne
Speicherports zurückgeschickt
werden würden,
würde die
Lese-Latenzzeit (Zeit zwischen der Ausgabe der gelesenen Adresse
durch den Knoten-Master für
interne Speicherports und dem Zurückschicken der Daten) entsprechend
der Entfernung der Einrichtung von dem internen Speicherport variieren.
Das kann nicht zugelassen werden.
-
Um
dies zu meistern, geht der Lesedatenweg entlang der Schleife in
der gleichen Richtung weiter, welche die Adresssignale genommen
haben. Dies führt
schließlich
zu dem Knoten-Master 300 für interne Speicherports am
Ende der Schleife zurück.
Die Anzahl der Verbindungsstücke
in der Schleife von der Leseadressenausgabe bis zur Datenrückgabe ist
konstant, wodurch eine konstante tatsächliche Latenzzeit hervorgerufen
wird. Die erste Einrichtung, welche die Adresse empfängt, wird
die meisten Verzögerungsstufen
in ihrem Lesedaten-Rückgabeweg
haben, während
die letzte Einrichtung, welche die Adresse empfängt, die wenigstens Verzögerungsstufen
in ihrem Lese-Rückgabeweg
haben wird. Die Summe aus der Anzahl der Adressenverzögerungsstufen
und der Anzahl der Lesedatenverzögerungsstufen
wird für
alle Einrichtungen gleich sein. Diese Summe entspricht der Länge der
Schleife. Dies bedeutet, dass die Lese-Latenzzeit für alle internen Speicherport-Knoten
eine Konstante sein wird. Diese Lese-Latenzzeit hängt von der absoluten Zahl
der Einrichtungen ab. Es ist einfach, diese Lese-Latenzzeit in dem
Prozessor des internen Speicherports auszugleichen.
-
Bei
jedem Taktzyklus kann der Knoten-Master 300 für interne
Speicherports entweder einen Lesebefehl oder einen Schreibbefehl,
aber nicht beide, ausgeben. Ein Lesebefehl fordert einen bestimmten
der internen Speicherknoten 301 bis 308 auf, die
Daten an eine spezifizierte Adresse zurückzusenden, Ein Schreibbefehl
fordert einen bestimmten der internen Speicherknoten 301 bis 308 auf,
die Schreibdaten an einer spezifizierten Adresse zu speichern. Es
werden irgendwelche Methoden zur Unterscheidung zwischen den internen Speicherport-Knoten 301 bis 308 für Lesen
und Schreiben vorausgesetzt. Außerdem
wird vorausgesetzt, dass jeder interne Speicherport-Knoten 301 bis 308 eine
gewisse Kapazität
adressierbaren Speicher enthält,
Diese Ziele könnten
erreicht werden, indem jedem internen Speicherport-Knoten 301 bis 308 eine
Knoten-Nummer zugeordnet wird. Der Speicher jedes internen Speicherport-Knotens 301 bis 308 wäre mittels
einer gelieferten Adresse, die separate Adressräume einschließen könnte, adressierbar.
Alternativ könnte
jedem internen Speicherport-Knoten 301 bis 308 eine
Untermenge eines einheitlichen Adressraums zugeordnet sein. Der
angestrebte interne Speicherport-Knoten wird anhand der adressierten
Untermenge des Speichers bestimmt. In der bevorzugten Ausführungsform
ist jeder interne Speicherport-Knoten 301 bis 308 aus
einem digitalen Signalprozessor kern und entsprechendem Befehlcachespeicher
und Datencachespeicher/Direktzugriffsspeicher gebildet. Jeder solche
digitale Signalprozessor umfasst vorzugsweise die gleiche Menge
an Speicher, und der Knoten wird durch die höherwertigen Bits der Speicheradresse
bestimmt.
-
In
der bevorzugten Ausführungsform
ist jeder Lesebefehl oder Schreibbefehl aus zwei Wörtern gebildet.
Diese zwei Wörter
sind ein "Befehls-/Schreibdaten"-Wort und ein "Lesedaten"-Wort. Wie in 3 veranschaulicht
ist, werden diese zwei Wörter
auf verschiedenen Wegen in der Schleife der internen Speicherport-Knoten 301 bis 308 geleitet.
In der bevorzugten Ausführungsform
haben die zwei Wörter
den folgenden Bitaufbau. Das "Befehls/Schreibdaten"-Wort umfasst 100
Bit, die wie nachstehend erwähnt
verwendet werden:
- Bit 99 STATUS – Wenn dieses Bit geltend gemacht
ist, bedeutet das, dass der Schreibbefehl eine Lesebefehlsausnahme
und kein normales Datenschreiben ist.
- Bit 98 RD/READ – Wenn
es geltend gemacht ist, gibt dieses Bit an, dass der Befehl ein
Datenlesebefehl ist.
- Bit 97 WR/WRITE – Wenn
es geltend gemacht ist, gibt dieses Bit an, dass der Befehl ein
Datenschreibbefehl ist. Es ist zu beachten, dass in einem Befehl
nur eines davon, entweder das RD-Bit oder das WR-Bit, aktiv sein kann.
- Bit 96 SP/SEMAPHORE – Wenn
es geltend gemacht ist, gibt dieses Bit an, dass die aktuelle Datenübertragung eine
Semaphor-Übertragung
ist. Auf eine Weise, die für
die vorliegenden Lehren unwichtig ist, werden Semaphor-Übertragungen
verwendet, um unteilbar Inhalte zwischen einer Herkunftsadresse
und einer Zieladresse auszutauschen.
- Bits 95-32 WRITE DATA – Dieses
Feld hält
die Daten, die zu schreiben sind, in dem Befehl, der ein Datenschreibbefehl
ist. Bei einem Datenlesebefehl enthält dieses Feld keine Daten.
- Bits 31-2 ADDRESS – Dieses
Feld hält
die Lese- oder Schreibadresse. Das Adressfeld umfasst die höheren 29
Bit einer 32-Bit-Adresse. Alle Übertragungen,
die den Data Transfer Bus 255 verwenden, sind 24-Bit-Übertragungen;
deshalb wird angenommen, dass die niedrigsten 3 Bit der Byte-Adresse "000" (als Doppelwortgrenzen
angeordnet) sind. Wenn weniger als 64 Bit zu übertragen sind, erzeugt die Übertragungssteuereinheit 220 mit
Hub und Ports die dazugehörige
Datenanpassung in einem Lese-Modifiziere-Schreibe-Zyklus.
- Bits 1-0 Diese Bits sind dafür
reserviert, die Gültigkeit
des hohen und niedrigen Worts anzugeben, und sind für die vorliegenden
Lehren unwichtig,
-
Das
zweite Wort ist das "Lesedaten"-Wort. Das "Lesedaten"-Wort enthält 64 Bit.
Alle 64 Bit des "Lesedaten"-Worts sind für Lesedaten
reserviert. Dieses Wort enthält
nur dann Lesedaten, wenn während
der Vorwärtsbewegung
dieser zwei Wörter
durch die Schleife mit synchroner, fester Latenz ein Lesen durchgeführt worden
ist. Bei einer Schreiboperation enthalten diese Bits keine Informationen.
Wie in 3 gezeigt ist, empfängt der Lesedateneingang in
die Data Transfer Bus-Schnittstelle 311 Daten von einer
festen Quelle.
-
4 veranschaulicht
den Aufbau der Data Transfer Bus-Schnittstelle 311. Die
Data Transfer Bus-Schnittstellen 311, 312, 313, 314, 315, 316, 317 und 318 sind
vorzugsweise baugleich. Die Data Transfer Bus-Schnittstelle 311 weist
drei Eingänge
auf. Der Befehls-/Adress-Eingang 401 empfängt den
Befehls- und Adressteil des Befehls-/Schreibdaten-Wortes von der
vorhergehenden Data Transfer Bus-Schnittstelle in der Schleife.
Im Fall der ersten Data Transfer Bus-Schnittstelle, wie etwa der Data Transfer
Bus-Schnittstelle 311, kommt diese Eingabe vom Knoten-Master 300 für interne
Speicherports. Das Befehls-/Adress-Wort wird einen Taktzyklus lang im Register 420 zwischengespeichert.
Beim nächsten
Taktzyklus wird das Befehls-/Adress-Wort von der Data Transfer Bus-Schnittstelle über den
Befehls-/Adress-Ausgang 411 ausgegeben. Dieser Ausgang
ist mit dem Befehls-/Schreibdateneingang der nächsten Data Transfer Bus-Schnittstelle in
der Schleife verbunden. Im Fall der letzten Data Transfer Bus-Schnittstelle in
der Schleife, wie etwa der Data Transfer Bus-Schnittstelle 318,
wird das Befehls-/Adress-Wort verworfen bzw. gelöscht. Die Schreibdaten werden
am Schreibdateneingang 403 empfangen und im Register 425 zwischengespeichert.
Mit dem nächsten Taktzyklus
werden diese Schreibdaten über
den Schreibdatenausgang 413 an die nächste Data Transfer Bus-Schnittstelle
geliefert. Es ist zu beachten, dass 3 das Befehls-/Adress-Wort
und das Schreibdaten-Wort auf einer einzigen Leitung darstellt.
Die einzelnen Bits des Befehls/Schreibdaten-Worts von 3 sind
der Klarheit wegen in 4 separat dargestellt.
-
Das
Lesedatenwort wird am Lesedateneingang 405 empfangen. Dieses
Lesedatenwort wird für
einen Taktzyklus im Register 430 zwischengespeichert. Die
Data Transfer Bus-Schnittstelle 311 gibt jeden Zyklus ein Lesedatenwort
am Lesedatenausgang 415 aus. In Abhängigkeit vom Zustand der Data
Transfer Bus-Schnittstelle 400 könnte die
Lesedatenausgabe die Lesedaten umfassen, die zuletzt am Lesedateneingang 405 empfangen
worden sind, oder Daten, die aus dem entsprechenden Speicher, der
durch den Multiplexer 435 ausgewählt wurde, abgerufen worden
sind.
-
Der
Adressenkomparator 440 spricht auf den Adressteil des empfangenen
Befehls-/Adress-Worts an. In Verbindung mit dem Adressenbereichsblock 441 bestimmt
der Adressenkomparator 440, ob das eben empfangene Befehls-/Adress-Wort Maßnahmen
von Seiten der Data Transfer Bus-Schnittstelle erfordert. In der
bevorzugten Ausführungsform
ist jedem internen Speicherport-Knoten 301 bis 308 eine
verschiedene Untermenge eines einheitlichen Adressraums zugeordnet.
Dieser Untermengen-Adressenbereich wird vorzugsweise bei der Herstellung
festgelegt. Der Adressenbereichsblock 441 definiert die
Adressraum-Untermenge
jedes internen Speicherport-Knotens durch Spezifizieren der höchstwertigen
Bits der Adresse. Die niedrigstwertigen Bits der Adresse definieren
einen Adressenplatz innerhalb des lokalen Speichers 460 dieses
internen Speicherport-Knotens. Dies ist logisch der lexikalischen
Zerlegung der Adresse in eine Knotennummer und eine lokale Adresse äquivalent.
Alternativ könnte
der Adressenbereichsblock 441 einen Adressenbereich durch
eine oder mehrere Adressober- und -untergrenzen spezifizieren. Der
Adressenkomparator 440 würde bestimmen, ob die empfangene
Adresse in einen Adressenbereich fällt, der durch ein entsprechendes
Paar aus Adressober- und -untergrenze definiert ist. Die durch den
Adressbereichsblock 441 definierten Adressgrenzen könnten bei
der Herstellung fest eingestellt werden. Dies könnte durch Maskenprogrammierung
eines Registers, durch ein laserprogrammiertes Register oder durch
ein mittels Fuse- oder Antifuse-Technologie programmiertes Register, wie
im Stand der Technik bekannt, geschehen. Alternativ könnten die
Adressgrenzen während
des Betriebs unter Verwendung von Steuerregisterschreibvorgängen schreibbar
sein. Die Adressen dieser Steuerregister müssen bei einer Initialisierung
einen bekannten, festen Zustand aufweisen. Ungeachtet der Art und
Weise der Spezifizierung des Knotenadressenbereichs erzeugt der
Adressenkomparator 440 ein Übereinstimmungssignal, wenn
er eine Übereinstimmung
zwischen der empfangenen Adresse und dem entsprechenden Knotenadressenbereich
feststellt. Dieses Übereinstimmungssignal
wird aktiv sein, wenn das eben empfangene Befehls-/Adress-Wort Maßnahmen
von Seiten des aktuellen internen Speicherport-Knotens erfordert.
-
Das Übereinstimmungssignal
von dem Adressenkomparator 440 beliefert einen EN-Eingang
eines Decodierers 443. Der Decodierer 443 reagiert
auf die Befehlsabschnitte des empfangenen Befehls-/Adress-Worts.
Diese Abschnitte, wie etwa die oben beschriebenen Bits "RD" und "WR", bestimmen die Maßnahmen,
die von Seiten der Data Transfer Bus-Schnittstelle zu ergreifen
sind. Der Decodierer 443 steuert die Maßnahme, die von der Data Transfer
Bus-Schnittstelle 311 ergriffen wird, durch Steuern des
Multiplexers 435 und des Befehlsteils 453 einer
Speicherbusschnittstelle 450. Wenn der Adressenkomparator 440 das Übereinstimmungssignal
nicht erzeugt, dann steuert der Decodierer 443 den Multiplexer 435,
um die am Lesedateneingang 405 empfangenen Lesedaten für eine Speicherung
im Register 430 auszuwählen.
Der Decodierer 443 steuert den Befehlsteil 453 der
Speicherbusschnittstelle 450, inaktiv zu sein.
-
Wenn
der Adressenkomparator 440 ein Übereinstimmungssignal erzeugt
und der Decodierer 443 eine Leseoperation erkennt, dann
steuert der Decodierer 443 eine Leseoperation. Der Decodierer 443 steuert
den Befehlsteil 453 der Speicherbusschnittstelle 450,
um eine Leseoperation auszuführen.
Dies könnte
beispielsweise geschehen, indem die Ausgabe eines R/W-Signals vom
Steuerteil 453 der Speicherbusschnittstelle 450 an
den Speicher 460 bewirkt wird, um ein Lesen anzugeben.
Schließlich
steuert der Decodierer 445 den Multiplexer 435,
um die Ausgabe vom Datenteil 451 der Speicherbusschnittstelle 450 zur
Speicherung im Register 430 auszuwählen. Wenn sie erst einmal
im Register 430 gespeichert sind, werden die eben gelesenen
Daten im nächsten
Taktzyklus über
den Lesedatenausgang 415 an die nächste Data Transfer Bus-Schnittstelle
geliefert.
-
Schließlich, wenn
der Adressenkomparator
440 eine Übereinstimmung erkennt und
der Decodierer
443 bestimmt, dass das eben empfangene Befehls-/Adress-Wort eine
Operation des Schreibens in den Speicher an dem Knoten ist, steuert
der Decodierer
443 eine Schreiboperation. In diesem Fall
steuert der Decodierer
443 den Multiplexer
435,
um die eben am Lesedateneingang
405 empfangenen Lesedaten
in das Register
430 zu laden. Diese gespeicherten Lesedaten
werden im nächsten
Taktzyklus am Lesedatenausgang
415 ausgegeben. Der Decodierer
443 steuert
den Befehlsteil
453 der Speicherbusschnittstelle
450,
um eine Schreiboperation anzuzeigen. Dementsprechend werden die
Schreibdaten von dem empfangenen Schreibdatenwort über den
Datenteil
451 der Spei cherbusschnittstelle
450 an
der Adresse, die in dem eben empfangenen Befehls-/Adress-Wort angegeben ist, das im Register
420 gespeichert
ist, in den Speicher
460 geschrieben. Eine Zusammenfassung
der Funktionsweise der Data Transfer Bus-Schnittstelle
311 ist
nachstehend in der Tabelle 1 gezeigt.
Adressenkomparator 440 | Decodierer 443 | Multiplexer 435 | Befehlsteil 453 |
keine Übereinstimmung | – | Lesedateneingang 405 | inaktiv |
Übereinstimmung | Lesen | Datenteil 451 | Lesen |
Übereinstimmung | Schreiben | Lesedateneingang 405 | Schreiben |
Tabelle
1
-
Um
zusammenzufassen, die Schleife mit synchroner, fester Latenz arbeitet
wie folgt: Wenn der interne Speicherknoten-Master 300 einen
Befehl an den Data Transfer Bus 255 ausgibt, bewegt sich
der Befehl durch die gesamte Schleife, pro Zyklus um einen internen
Speicherport-Knoten. Jeder interne Speicherport-Knoten prüft die Adresse jedes Befehls,
um zu ermitteln, ob der Befehl innerhalb seines Adressenbereichs
ist. Wenn die Adresse außerhalb
des Adressenbereichs des internen Speicherport-Knotens ist, dann
wird der Befehl von dem internen Speicherport-Knoten unbeachtet
gelassen. Wenn die Adresse innerhalb des Adressenbereichs des internen
Speicherport-Knotens ist, dann führt
der Knoten den Befehl aus. Wenn dieser Befehl ein Lesebefehl ist,
liefert der interne Speicherport-Knoten die Lesedaten an den nächsten Knoten
in der Schleife. Die Lesedaten werden sich dann auf dem Leseweg
der Schleife des Data Transfer Busses 255 fortbewegen,
bis sie den Knoten-Master 300 für interne Speicherports erreichen.
Wenn dieser Befehl ein Schreibbefehl ist, schreibt der interne Speicherport-Knoten
die empfangenen Schreibdaten in eine Speicherzelle des Speichers,
welche der empfangenen Adresse entspricht.
-
Das
folgende Beispiel erläutert
unter Bezugnahme auf 3 den Lesebefehl und die Lesedaten-Latenzparameter
in dem Schleifenbus mit synchroner, fester Latenz. Dieses Beispiel
ist mit der Übertragung
von Daten von dem internen Speicherport-Knoten 304 (in 3 mit
A beschriftet) zu dem internen Speicherport-Knoten 308 (in 3 mit
B beschriftet) verbunden.
-
Beim
Takt 0 schickt die Übertragungssteuereinheit 220 mit
Hub und Ports ein "Befehls-/Schreibdaten"-Wort und ein "Lesedaten"-Wort an den Knoten-Master 300 für interne
Speicherports. In dem "Befehls-/Schreibdaten"-Wort ist das Bit "RD" aktiv, was einen
Lesebefehl angibt. Das Schreibdatenfeld des "Befehls-/Schreibdaten"-Worts und das Lesedatenfeld des "Lesedaten"-Worts enthalten
keine Informationen. 3 zeigt, dass die anfänglichen
Lesedaten, die an den Lesedatenworteingang des internen Speicherport-Knoten 301 geliefert
werden, von einer festen Quelle kommen. Dies könnten nur Einsen (1) oder nur
Nullen (0) sein. Das Adressfeld des "Befehls-/Schreibdaten"-Worts enthält eine
Adresse innerhalb des internen Speicherport-Knotens 304.
-
Beim
Auslesetakt 1 lieferte der Knoten-Master 300 für interne
Speicherports das "Befehls-/Schreibdaten"-Wort an die Data
Transfer Bus-Schnittstelle 311 des internen Speicherport-Knotens 301.
Das "Lesedaten"-Wort, das keine
Daten enthält,
wird von einer konstanten Quelle, in 3 veranschaulicht,
an den Schreibdateneingang der Data Transfer Bus-Schnittstelle 311 geliefert.
Wie zuvor beschrieben könnte
diese konstante Quelle nur aus Einsen (1) oder nur aus Nullen (0)
bestehen.
-
Bei
dem Auslesetakt 2, dem Takt 3 und dem Takt 4 werden die zwei Wörter von
der Data Transfer Bus-Schnittstelle 311 über die
Data Transfer Bus-Schnittstellen 312 und 313 zur
Data Transfer Bus-Schnittstelle 314 übermittelt. Beim Takt 4 erkennt
die Data Transfer Bus-Schnittstelle 314 eine Übereinstimmung
mit dem Adressfeld des Befehls-/Schreibdaten-Worts. Dies gibt an,
dass der Befehl zu diesem Knoten gelenkt wird. Die Operation wird
als eine Leseoperation decodiert. Die Data Transfer Bus-Schnittstelle 314 übermittelt den
Lesebefehl und die empfangene Adresse an den internen Speicherport-Knoten 304.
Die Daten werden von dem adressierten Platz des Speichers abgerufen
und in den Datenteil 461 der Speicherbusschnittstelle 460 geladen.
Diese Daten werden beim Takt 5 an die Data Transfer Bus-Schnittstelle 315 geliefert.
Folglich umfasst die Lesebefehls-Latenzzeit in diesem Beispiel 4
Takte.
-
Bei
dem Auslesetakt 5, dem Takt 6, dem Takt 7 und dem Takt 8 werden
das Befehls-/Schreibdaten-Wort und das Lesedaten-Wort über den
Data Transfer Bus 255 an die Data Transfer Bus-Schnittstellen 315, 316, 317 und 318 übermittelt.
Das Befehls-/Schreibdaten-Wort ist unverändert, und das Lesedatenwort enthält die Daten,
die vom internen Speicherport-Knoten 304 abgerufen worden
sind.
-
Beim
Auslesetakt 9 wird das Befehls-/Schreibdaten-Wort verworfen bzw.
gelöscht.
Der Lesezugriff ist abgeschlossen, und das Befehls-/Schreibdaten-Wort
wird nicht länger
gebraucht. Das Lesedatenwort wird an den Knoten-Master 300 für interne
Speicherports übermittelt.
In diesem Beispiel beträgt
die Lesedaten-Latenzzeit
5 Takte. Die Gesamtsumme aus Lesebefehls-Latenzzeit und Lesedaten-Latenzzeit
beträgt
9 Takte.
-
Vom
Lesetakt 10 bis zum Takt 10 + N werden die Lesedaten vom Knoten-Master für interne
Speicherports 300 an die Leitweglenkungseinheit 160 in
der Übertragungssteuereinheit 220 mit
Hub und Ports übermittelt.
Die Leitweglenkungseinheit 160 schickt die Lesedaten zu
dem internen Speicherport 155 mit der Zieladresse zurück. In diesem
Beispiel ist das Ziel innerhalb des internen Speicherport-Knotens 308.
Die Anzahl der Takte, die benötigt
wird, kann variieren, wenn die Leitweglenkungseinheit 160 eine
Datenanpassung für den
Schreibvorgang oder einen Lese-Modifiziere-Schreib-Zyklus wegen
der Datenanpassung durchführen muss.
-
Für den Schreibzyklus
veranlasst die Leitweglenkungseinheit, dass der Knoten-Master 300 für interne Speicherports
ein Befehls-/Schreibdaten-Wort bildet. Dieses Befehls-/Schreibdaten-Wort
enthält
Schreibdaten, die den vom internen Speicherport-Knoten 304 gelesenen
Daten entsprechen. Das Befehls-/Schreibdaten-Wort
hat das Bit "WR" aktiv, was eine
Schreiboperation angibt. Die Adresse ist die Zieladresse in dem
internen Speicherport-Knoten 308.
-
Beim
Schreibtakt 1 schickt der Knoten-Master 300 für interne
Speicherports die "Befehls-/Schreibdaten" an die Data Transfer
Bus-Schnittstelle 311 und "Lesedaten" von der konstanten Quelle.
-
Beim
Schreibtakt 2, den Takten 3, 4, 5, 6 und 7 werden die zwei Wörter zu
aufeinanderfolgenden Data Transfer Bus-Knoten 312, 313, 314, 315, 316 und 317 geschickt.
Die Adresse stimmt mit keinem der Knoten überein, und so bleiben die
zwei Wörter
unverändert.
-
Beim
Schreibtakt 8 erreichen die zwei Wörter die Data Transfer Bus-Schnittstelle 318.
Die Data Transfer Bus-Schnittstelle 318 erkennt eine Übereinstimmung
mit der Adresse in dem Befehls-/Schreibdaten-Wort. Die Schreibdaten
werden an den internen Speicher geliefert, damit sie auf die Adresse
geschrieben werden.
-
Beim
Takt 9 werden die Befehls-/Schreibdaten-Wörter verworfen bzw. gelöscht. Das
Lesedaten-Wort, das keine Daten enthält, wird an den Knoten-Master 300 für interne
Speicherports zurückgeschickt.
Die Schreib-Latenzzeit von der Ausgabe des Schreibbefehls bis zur
Rückgabe
des Schreibbefehls kommt 9 Takten gleich.
-
Die
Tabelle 2 listet die "Lesebefehls-Latenzzeit" und die "Lesedaten-Latenzzeit" für jeden
Knoten der Konfiguration von
3 auf. Außerdem zeigt
die Tabelle 2 die gesamte Lese-Latenzzeit jedes Data Transfer Bus-Knotens,
die bei dieser Schaltung eine Konstante von 9 Takten ist.
Lese-Latenzzeit-Tabelle |
Datenübertragungsknoten | Lesebefehls-Latenzzeit | Lesedaten-Latenzzeit | gesamte
Lese-Latenzzeit |
311 | 1 | 8 | 9 |
312 | 2 | 7 | 9 |
313 | 3 | 6 | 9 |
314 | 4 | 5 | 9 |
315 | 5 | 4 | 9 |
316 | 6 | 3 | 9 |
317 | 7 | 2 | 9 |
318 | 8 | 1 | 9 |
Tabelle
2
-
5 zeigt
ein Blockdiagramm eines Beispiels für eine bevorzugte Prozessor-
und Cachespeicher-Kombination, welche die internen Speicherknoten 270, 271 und 272 von 2 und 301 bis 308 von 3 umsetzt.
Jeder interne Speicherknoten 270, 271 und 272 umfasst
vorzugsweise einen digitalen Signalpro zessorkern und entsprechenden
Befehls- und Daten-Cachespeicher. Die Übertragungssteuereinheit 220 mit
Hub und Ports sorgt für
die gesamte Datenkommunikation zwischen internen Speicherknoten 270, 271 und 272, externen
Eingabe/Ausgabe-(E/A-)Einrichtungen und Peripheriegeräten an den
externen Ports 230 bis 233 und internem Speicher
an dem lokalen Speicherport 260. Jeder interne Speicherknoten 270, 271 und 272 umfasst vorzugsweise
einen digitalen VLIW-(Very Long Instruction Word)Signalprozessorkern 44,
eine Programmspeicher-Steuereinheit (PMC: Program Memory Controller) 46,
eine Datenspeicher-Steuereinheit (DMC: Data Memory Controller) 48,
einen Emulations-, Test-, Analyse- und Fehlersuchblock 50,
eine Schnittstelle 52 für
lokalen Speicher und den Data Transfer Bus-(DTB). Die internen Speicherknoten 270, 271 und 272 und
die Übertragungssteuereinheit 220 mit
Hub und Ports kommunizieren über
ein Paar Busse mit hohem Durchsatz. Der übertragungsanforderungs-Zuführmechanismus 245 wird
von digitalen Signalprozessorkernen 44 verwendet, um Bearbeitungsvorgänge in der Übertragungssteuereinheit 220 mit
Hub und Ports zu spezifizieren und anzufordern. Der Data Transfer
Bus (DTB) 255 wird verwendet, um Daten von Objekten im
globalen Speicherabbild zu laden zu speichern. Zwar kann ein gegebener
digitaler Signalprozessorkern 44 auf seinen eigenen internen, lokalen
Speicher innerhalb des Clusters ohne Genehmigung von der Übertragungssteuereinheit 220 mit
Hub und Ports zugreifen, aber ein Zugriff auf globalen Speicher
außerhalb
seines lokalen Speichers erfordert eine von der Übertragungssteuereinheit gesteuerte
Datenübertragung,
ob nun der Zugriff auf externen Speicher oder auf lokalen Speicher
eines anderen digitalen Signalprozessors erfolgt. Die Gesamtarchitektur
ist skalierbar und ermöglicht
die Implementierung vieler interner Speicherknoten, obwohl die zurzeit
bevorzugte Ausführungsform
drei ist. Es sollte beachtet werden, dass Einzelheiten der Architektur,
wie etwa die Anzahl der digitalen Signalprozessorkerne und ihre
Befehlsatzarchitekturen, für
die vorliegenden Lehren nicht entscheidend sind. Diese Mikroprozessorarchitektur
ist nur beispielhaft, und die vorliegenden Lehren sind auf viele
Mikroprozessorarchitekturen anwendbar.
-
6 ist
ein Blockdiagramm, das mehr Einzelheiten des in 5 gezeigten
digitalen Signalprozessorkerns 44 zeigt. Der digitale Signalprozessorkern 44 ist
ein 32-Bit/8-Wege-VLIW-Pipeline-Prozessor. Der Befehlssatz besteht
aus Befehlen mit einer festen Länge
von 32 Bit, von der Art eines reduzierten Computer- Befehlssatzes (RISC),
die auf Anwendungen der digitalen Signalverarbeitung abgestimmt
sind. Fast alle Befehle führen
Register-zu-Register-Operationen durch, und alle Speicherzugriffe
werden unter Verwendung von expliziten Lade-/Speicher-Befehlen ausgeführt. Wie
in 6 gezeigt ist, umfasst die Befehlspipeline 58 die
Fetch-Stufe 60 und die Decodier-Stufe 62. Die
Fetch-Stufe 60 ruft unter der Steuerung der Programmspeicher-Steuereinheit 46 vom
Befehlscache 64 Programmcodes in Gruppen von acht Befehlen,
Abrufpaket genannt, in den Prozessorkern 64 ab. Die Decodier-Stufe 62 analysiert
das Abrufpaket, bestimmt Parallelität und Betriebsmittelverfügbarkeit
und baut ein Ausführungspaket
aus bis zu acht Befehlen zusammen. Jeder Befehl in dem Ausführungspaket
wird dann in Steuersignale umgesetzt, um die entsprechenden Einheiten
in der Ausführungspipeline 66 zu
treiben. Die Ausführungspipeline 66 umfasst
zwei symmetrische Datenwege, den Datenweg A 68 und den
Datenweg B 70, eine gemeinsame 64-Bit-Lade-/Speichere-Einheitengruppe,
D-Einheitengruppe 72, und eine gemeinsame Verzweigungseinheitengruppe,
P-Einheitengruppe 74. Jeder Datenweg 32 enthält eine
32-Wort-Registerdatei (RF) 76 und vier Ausführungseinheitengruppen,
die A-Einheitengruppe 78, die C-Einheitengruppe 80,
die S-Einheitengruppe 82 und
die M-Einheitengruppe 84. Insgesamt gibt es zehn separate
Einheitengruppen in der Ausführungspipeline 66.
In jedem Zyklus können
acht von diesen Einheiten gleichzeitig eingeplant sein. Jede Funktionseinheitengruppe
enthält
mehrere Funktionseinheiten, wobei einige unter den Einheitengruppen
doppelt sind. Insgesamt gibt es neun 32-Bit-Addierer, vier 32-Bit-Verschiebeeinrichtungen,
drei Verknüpfungsoperatoren
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-8-Bit-Multiplizierer konfigurierbar. Der Speicher
bei den internen Speicherknoten 270, 271 und 272 ist
vorzugsweise in Befehlscachespeicher 64, der über die
Programmspeicher-Steuereinheit 46 gesteuert wird, und Datencachespeicher
und Direktzugriffsspeicher 88, die über die Datenspeicher-Steuereinheit 48 gesteuert
werden, untergliedert. Diese Speicherzuordnungsbereiche werden von
dem digitalen Signalprozessorkern 44 auf herkömmliche
Weise benutzt.
-
Jeder
digitale Signalprozessorkern 44 kann Datenübertragungen
auf verschiedenen Wegen anfordern. Der digitale Signalprozessorkern 44 kann
in Reaktion auf einen expliziten Datenübertragungsbefehl eine Datenübertragungsan forderung
an die Übertragungssteuereinheit 220 mit
Hub und Ports ausgeben. Der Datenübertragungsbefehl muss die
Datenquelle, das Datenziel und die Datenmenge spezifizieren. Diese
Spezifizierungen können
durch Direktfelder in den Befehlen oder durch Parameter, die in
Registern oder Speicher gespeichert sind, erfolgen. Es ist zu bevorzugen,
dass jeder digitale Signalprozessorkern 44 imstande ist,
eine Datenübertragung
anzufordern, die durch die Übertragungssteuereinheit 220 mit
Hub und Ports betrieben werden kann. Folglich kann ein digitaler
Signalprozessorkern 44 Daten intern oder extern übertragen
und laden oder irgendeinen internen Speicherknoten lesen.
-
Jeder
digitale Prozessorkern 44 umfasst vorzugsweise außerdem automatische
Mechanismen zum Erzeugen von Anforderungen einer Datenübertragung
für den
Cachebetrieb. Folglich bewirkt ein Befehlscache-Fehltreffer vorzugsweise,
dass die Programmspeicher-Steuereinheit 46 eine Anforderung
einer Datenübertragung
von einer anderen Datenquelle erzeugt, um eine Line des Befehlscaches 64 mit
Daten, einschließlich
Programmbefehlen, die unter der Adresse gespeichert sind, die den
Cache-Fehltreffer erzeugt, zu füllen. Genauso
bewirkt ein Datencache-Fehltreffer bei einem Datenlesen vorzugsweise,
dass die Datenspeicher-Steuereinheit 48 eine Datenübertragungsanforderung
erzeugt, um Daten abzurufen, um eine Line in dem Datencache/Direktzugriffsspeicher 88 mit
entsprechenden Daten zu füllen.
Diese Befehle und Daten sind auf einer höheren Speicherebene gespeichert.
Diese höhere
Speicherebene kann ein chipintegrierter kombinierter Cache sein,
der von allen digitalen Signalprozessorkernen 44 verwendet
wird, oder er kann sich außerhalb
der integrierten Mehrprozessorenschaltung befinden. Es gibt zwei
Varianten von Datencache-Fehltreffern bei Datenschreibvorgängen. Bei
einem Durchschreiben hat ein Datenschreiben durch den digitalen
Prozessorkern 44, das den Datencache/Direktzugriffsspeicher 88 verfehlt,
zur Folge, dass die Datenspeichersteuereinheit 48 eine
Datenübertragungsanforderung
erzeugt, um die Schreibdaten am zugehörigen Speicherort auf einer
höheren
Speicherebene zu speichern. Bei einem Zurückschreiben hat ein Datenschreiben
durch den digitalen Prozessorkern 44, das den Datencache/Direktzugriffsspeicher 88 verfehlt,
zur Folge, dass die Datenspeichersteuereinheit 48 eine
Datenübertragungsanforderung
erzeugt, um entsprechende Daten von dem zugehörigen Speicherort auf einer
höheren
Speicherebene zum Speichern in den Datencache/Direktzugriffsspeicher 88 zurückzurufen.
Die Schreibdaten werden dann in den Datencache/Direktzugriffsspeicher 88 geschrieben,
wobei die entsprechenden Daten, die eben von der höheren Speicherebene
zurückgerufen
wurden, überschreiben. Dieser
Prozess wird als "Write
Allocation" innerhalb
des Datencaches bezeichnet.
-
Die
Datenspeichersteuereinheit 48 verwendet vorzugsweise auch
eine Datenübertragungsanforderung,
um bei einer Cache-Räumung
eines verfälschten
Eintrags ein Zurückschreiben
von Daten in einen Speicher höherer
Ebene abzuwickeln. Ein verfälschter
Cacheeintrag schließt
Daten ein, die modifiziert worden sind, seitdem sie von einer höheren Speicherebene
abgerufen wurden. Diese modifizierten Daten entsprechen einem späteren Zustand
des Programms, als die Daten, die auf der höheren Speicherebene gespeichert
sind. Wenn derartige Daten ersetzt werden müssen, um für neue Cachedaten Platz zu
machen, als Cacheräumung bezeichnet,
müssen
diese verfälschen
Daten in die höhere
Speicherebene zurückgeschrieben
werden, um den korrekten Programmzustand zu bewahren. Die Übertragungssteuereinheit 220 mit
Hub und Ports wird vorzugsweise für dieses Zurückschreiben
von geräumten,
verfälschten
Cacheeinträgen
verwendet.
-
Es
ist zu beachten, dass die vorangehende Beschreibung eine Latenzzeit
von einem Zyklus für
ein Lesen oder Schreiben in den Speicher, der den internen Speicherport-Knoten
zugeordnet ist, unterstellt. Die einen einzigen Zyklus umfassende
Lese-/Schreib-Latenzzeit ist für
eine korrekte Funktion der Schleife nicht erforderlich. Vorteilhaft
wird eine feste Lese-Latenzzeit erzielt, solange die Verzögerung in
jedem internen Speicherport-Knoten gleich ist. Eine solche feste
Lese-Latenzzeit ist wünschenswert,
um eine direkte Implementierung einer Datenidentifizierung zu ermöglichen.
Lesedaten werden immer nach einer festen Anzahl von Zyklen, die
auf den Lesebefehl folgen, erhalten. Die Schleifenstruktur stellt
sicher, dass keine Lesedatenkollision auftritt, da die Lesedaten
von entsprechenden, adressierten Knoten in der Reihenfolge der Lesebefehle
empfangen werden. Ferner ist zu beachten, dass ein Schreibbefehl
an einen bestimmten internen Speicherport-Knoten die gleiche Latenzzeit
wie ein Lesebefehl an diesen Knoten hat. Folglich sind, wenn der
Knoten-Master 300 für
interne Speicherports ein Lese/Schreib-Befehlspaar oder ein Schreib-/Lese-Befehlspaar
an die gleiche Adresse ausgibt, die zurückgegebenen Lesedaten immer
korrekt. Die Schleife stellt sicher, dass der entsprechende Lese-
oder Schreibbefehl jeden Knoten in der Reihenfolge wie ausgegeben
erreicht, wodurch die korrekten Lesedaten zurückgegeben werden. Folglich
ergeben sich all die Vorteile dieser Erfindung aus einem festen
Intervall an jedem Knoten, ungeachtet dessen, ob es einen oder mehrere
Taktzyklen umfasst.
-
Ein
beträchtlicher
Nutzen ergibt sich auch dann, wenn die Verzögerung bei jedem internen Speicherport-Knoten
nicht einheitlich oder variabel ist. Da der Lesebefehl und die Lesedaten
der gesamten Schleife folgen müssen,
werden die Lesedaten immer in der gleichen Reihenfolge, wie die
Lesebefehle ausgegeben wurden, an den Knoten-Master 300 für interne
Speicherports zurückgegeben.
Jeder Knoten braucht nur Befehle in der Reihenfolge des Empfangs
abzuarbeiten, ohne einem späteren
Befehl zu ermöglichen,
einen früheren Befehl
zu durchkreuzen. Während
die Latenz variabel sein kann, bleibt folglich die Reihenfolge der
zurückgegebenen
Lesedaten auch für
eine uneinheitliche oder variable Verzögerung an den Knoten fest.
Da für
Lesebefehle und Schreibbefehle an einen Knoten der gleiche Weg verwendet
wird, kommen Lese- und Schreibbefehle an demselben Knoten in der
Reihenfolge an, in der sie durch den Knoten-Master 300 für interne
Speicherports ausgegeben wurden. Folglich braucht der Knoten-Master 300 für interne
Speicherports bei einem Lese-/Schreib-Befehlspaar oder einem Schreib-/Lese-Befehlspaar
an dieselbe Adresse keine Vorkehrungen für eine korrekte Datenrückgabe zu
treffen. Diese Merkmale sind nicht von einer kritischen zeitlichen
Koordinierung abhängig,
sondern ergeben sich aus der Natur der Schleifenstruktur.