-
Die Erfindung betrifft ein Datenverarbeitungssystem wie im Oberbegriff von
Anspruch 1 dargelegt.
-
Ein Datenverarbeitungssystem dieser Art ist aus der US-Patentschrift Nr.
5.280.620 (PHN 12.762) bekannt. Beispiele für Datenverarbeitungseinheiten sind
Recheneinheiten (ALUs: arithmetic/logic units). Multiplizierer, Datenspeicher mit autonomen
Adressierbetriebsarten, eine Eingangs-/Ausgangseinheit usw. Die Programmspeichermittel
dieses Datenverarbeitungssystems sind aus Teilspeichern zusammengesetzt, von denen
jeder für die Kommandos für eine jeweilige Datenverarbeitungseinheit bestimmt ist. In jedem
Befehlszyklus erzeugt der Programmzähler eine neue Adresse, bei der Kommandos parallel
aus den verschiedenen Teilspeichern ausgelesen werden. Die von den verschiedenen
Datenverarbeitungseinheiten ausgeführten Kommandos sind somit voneinander unabhängig
und Parallelität zwischen den Datenverarbeitungseinheiten kann maximal zum Schreiben
des Programms genutzt werden. Weil für verschiedene Datenverarbeitungseinheiten
während jedes Befehlszyklus eine große Anzahl von separaten Kommandos erforderlich ist,
wird eine derartige Architektur auch als VLIW-Architektur (VLIW: Very Long Instruction
Word; sehr langes Befehlswort) bezeichnet.
-
Daten müssen im Betrieb zwischen den verschiedenen
Datenverarbeitungseinheiten transportiert werden. Hierzu umfasst das in der erwähnten Veröffentlichung
offenbarte System Verbindungselemente in Form von Datenbussen, die bei Kreuzungen
steuerbar mit Leitungen verbunden sind, die zu den Datenanschlüssen der einzelnen
Datenverarbeitungseinheiten verlaufen. Steuercodes für diese Kreuzungen sind in den Teilspeichern
gespeichert, zusammen mit den Kommandos für die Datenverarbeitungseinheiten. In jedem
Befehlszyklus gibt jeder Teilspeicher diese Steuercodes zur Steuerung von Kreuzungen aus.
-
Bei einer integrierten Schaltung nehmen die Programmspeicher zusammen
einen erheblichen Raum ein, insbesondere wenn es viele Datenverarbeitungseinheiten gibt
und das Programm viele Befehle enthält.
-
Der Erfindung liegt unter anderem als Aufgabe zugrunde, den für das
Programm benötigten Speicherraum zu verkleinern.
-
Das erfindungsgemäße Datenverarbeitungssystem ist durch den
kennzeichnenden Teil von Anspruch 1 gekennzeichnet.
-
Das Verbindungselement hat die Funktion, den Inhalt eines einzelnen
Steuerfeldes zu einer Auswahl von Datenverbindungen zu erweitern, die von den verschiedenen
Verbindungselementen hergestellt werden, ohne dass das Steuerfeld in Teilfelder für
voneinander unabhängige Auswahlen in den verschiedenen Verbindungselementen getrennt
werden kann. Das Verbindungsauswahlelement wird daher kürzer als "Expander"
bezeichnet werden.
-
Wenn beispielsweise für das erste Verbindungselement eine
Datenverbindung von einem Speicher aus zu einem Eingangsregister einer ALU ausgewählt wird, kann
eine Gruppe von Verbindungen von oder zu anderen Registern in der betreffenden ALU für
das zweite Verbindungselement auswählbar gemacht werden, während, wenn für das erste
Verbindungselement eine Verbindung zwischen einem Ausgangsregister der ALU und
einer Ausgangseinheit gewählt wird, die Gruppe von auswählbaren Verbindungen für das
zweite Verbindungselement leer ist, sodass keine Verbindungen über das zweite
Verbindungselement möglich sind. Einschränkungen dieser Art sind drastischer als für das
Ausschließen inkonsistenter Kombinationen von Datenverbindungen notwendig ist, z. B.
Kombinationen, bei denen das erste und das zweite Verbindungselement eine Datenverbindung
zum gleichen Eingang hin erstellen, welche Kombination nicht sinnvoll ist, ungeachtet des
ausgeführten Programms.
-
Die Erfindung beruht auf der Erkenntnis, dass beim Ausführen spezieller
Programme für einen Satz zusammenarbeitender Datenverarbeitungseinheiten meistens ein
Zusammenhang zwischen den auftretenden Datenverbindungen gefunden wird. Es hat sich
gezeigt, dass lange nicht alle möglichen Konfigurationen von Datenverbindungen in einem
vollständigen Programm auftreten. Es stellt sich im Gegenteil heraus, dass in Abhängigkeit
vom Typ des Programms (beispielsweise eines mit Filteroperationen oder eines mit
schnellen Fouriertransformationen) ein spezieller begrenzter Vorrat an
Verbindungskonfigurationen vorkommt. Zum Schreiben eines Programms für das System können daher für
diesen Vorrat Einschränkungen akzeptiert werden, ohne dass dies eine wesentliche
Beschränkung des Ausmaßes bedeutet, in dem Parallelität in einer speziellen Anwendung
genutzt werden kann.
-
Obwohl das Datenverarbeitungssystem die Freiheit hat, die
Datenverarbeitungseinheiten unabhängig voneinander zu steuern, ist es darum für ein System, das nur
einen speziellen Typ eines Programms ausführen muss, nicht notwendig, dass die
Datenverbindungen der verschiedenen Datenverarbeitungseinheiten auch unabhängig
voneinander gesteuert werden können. Dies gilt insbesondere für "eingebettete" Signalprozessoren,
deren Entwurf insbesondere an einen einzigen, speziellen Typ eines Gerätes angepasst ist,
beispielsweise einen Rundfunkempfänger oder eine Decodiereinheit.
-
Die Erfindung nutzt den beschriebenen Gedanken, indem nicht mehr die
Verbindungen für jede Datenverarbeitungseinheit separat in den Befehl aufgenommen
werden, sondern stattdessen ein einzelnes Steuerfeld des Befehls zum Auswählen eines aus
dem begrenzten Vorrat an Konfigurationen möglicher Verbindungen verwendet wird. In
Abhängigkeit davon, welche Datenverbindung von dem ersten Verbindungselement
hergestellt wird, braucht das Steuerfeld dann aus nur einem Teil der real möglichen
Datenverbindungen zu wählen, um das zweite Verbindungselement zu steuern. Daher kann das aus Bits
bestehende Steuerfeld kürzer gemacht werden, ohne dass das Ausmaß der möglichen
Parallelität von Programmen wesentlich verringert wird.
-
Es sei insbesondere bemerkt, dass dies die Folge der Verwendung von
Programmen eines bestimmten Typs ist und nicht der Verwendung nur einer begrenzten
Anzahl unterschiedlicher Kommandos für die Datenverarbeitungseinheiten. Die Beschränkung
des Vorrats an Verbindungen ist daher auch für "pipelined" Systeme sinnvoll. Pipelining
bedeutet, dass die über die Verbindungselemente während eines bestimmten Befehlszyklus
transportierten Daten in einem vorhergehenden Befehlszyklus erzeugt worden sind und/
oder in einem späteren Befehlszyklus behandelt werden. Die jeweiligen Kommandofelder
des Befehls betreffen in diesem Fall andere Daten als die Daten, deren Transport vom
Steuerfeld des gleichen Befehls gesteuert wird. Unter diesen Umständen bleibt es interessant,
um das Steuerfeld des Befehls zu nutzen, um eine aus dem begrenzten Vorrat an
Konfigurationen möglicher Verbindungen auszuwählen.
-
Eine Ausführungsform des erfindungsgemäßen Datenverarbeitungssystems
ist dadurch gekennzeichnet, dass die Programmspeichermittel mit den
Datenverarbeitungseinheiten über Verbindungsmittel verbunden sind, die einen Steuereingang umfassen, und
dass der Expander ein weiteres Steuersignal für die Verbindungsmittel durch Erweiterung
des Steuerfeldes auswählt und dieses weitere Steuersignal dem Steuereingang zuführt, um
zu steuern, welches Kommandofeld des Befehlswortes welcher Datenverarbeitungseinheit
zugeführt wird, und dass für jede mögliche erste Auswahl der Expander nur eine, eventuell
leere, weitere Gruppe aus weiteren Auswahlen für das weitere Steuersignal verschafft,
wo
bei zumindest zwei der jeweiligen weiteren Gruppen sich voneinander unterscheiden. Die
Anzahl pro Befehl benötigter Bits wird somit weiter begrenzt, ohne hinsichtlich des
Ausmaßes, in dem Parallelität in einem speziellen Programmtyp genutzt werden kann, eine
wesentliche Einschränkung aufzuerlegen.
-
Die Verwendung von Verbindungsmitteln, um unter der Steuerung durch ein
Formatauswahlfeld des Befehlsworte zu steuern, welcher Teil des Befehls durch welche
Datenverarbeitungseinheit ausgeführt wird, ist an sich aus einer Veröffentlichung von A.
De Gloria: "A Programmable Instruction Format Extension to VLIW Architecture"
bekannt, veröffentlicht in "CompEuro 1992 Proceedings, Computer Systems and Software
Engineering", S. 35-40, "IEEE Computer Society Press", Los Alamitos, Kalifornien. De
Gloria zeigt auch, dass das Formatauswahlfeld die Verbindungsmittel über einen Expander
steuert, der eine begrenzte Anzahl von Verbindungskonfigurationen für den
Befehlstransport zwischen dem Speicher und den Datenverarbeitungseinheiten berücksichtigt. De
Gloria macht jedoch keinerlei Vorschläge hinsichtlich eines Expanders zum Auswählen einer
begrenzten Anzahl von Verbindungskonfigurationen für den Datentransport zwischen den
verschiedenen Datenverarbeitungseinheiten und schon gar nicht hinsichtlich der
Kombination der Wahl von Verbindungen für den Datentransport und den Befehlstransport.
-
Eine Ausführungsform des erfindungsgemäßen Datenverarbeitungssystems
ist dadurch gekennzeichnet, dass der Expander mit zumindest einer der
Datenverarbeitungseinheiten gekoppelt ist, um unter der Steuerung des Steuerfeldes ein Steuerkommando für
die zumindest eine der Datenverarbeitungseinheiten zu bilden, und dass für jede erste
Auswahl das Verbindungsauswahlelement nur eine jeweilige, eventuell leere, weitere Gruppe
auswählbarer Steuerkommandos verschafft, wobei zumindest zwei der jeweiligen weiteren
Gruppen sich voneinander unterscheiden. Somit wird in einem Teil der
Datenverarbeitungseinheiten die Kommandoausführung über den Expander gesteuert, zumindest teilweise
zusammen mit den Verbindungselementen. Es hat sich gezeigt, dass die Anzahl von pro
Befehl benötigten Bits somit weiter begrenzt wird, ohne das Ausmaß, in dem in einem
speziellen Programmtyp Parallelität verwendet werden kann, zu beschränken.
-
Eine Ausführungsform des erfindungsgemäßen Datenverarbeitungssystems
ist dadurch gekennzeichnet, dass zumindest eine der Datenverarbeitungseinheiten ein erstes
und ein zweites Register umfasst, von denen jedes real mit den Verbindungselementen zur
Zuführ von Daten über einen jeweiligen Datenanschluss gekoppelt ist, wobei die ersten
Auswahlen eine Anzahl von Datenverbindungen zum ersten Register und die jeweiligen
Gruppen eine Anzahl von Datenverbindungen zum zweiten Register umfassen. Die
Erfindung kann somit auch für Datenverarbeitungseinheiten verwendet werden, deren Register
unabhängig voneinander gleichzeitig geladen werden können.
-
Eine weitere Ausführungsform des erfindungsgemäßen
Datenverarbeitungssystems ist dadurch gekennzeichnet, dass die Kopplung ein Register umfasst, zur
Speicherung und Übertragung des Steuersignals zu den Verbindungselementen, während ein
folgendes Steuersignal gebildet wird. Das Register sorgt für Pipelining, sodass eine eventuelle
Verzögerung infolge des Einbringens des Expanders zwischen die Programmspeichermittel
und die Verbindungsmittel keine Verringerung der maximal verwendbaren Befehlsfrequenz
bewirkt. Es kann dann jedoch vorkommen, dass das Steuerfeld eines Befehls in einem
anderen Befehlszyklus verwendet wird als die Kommandofelder des betreffenden Befehls. Es
hat sich gezeigt, dass dies das Ausmaß, in dem in einem speziellen Programmtyp
Parallelität verwendet werden kann, nicht wesentlich beschränkt, weil die Wirkung der Erfindung
die Folge der Verwendung eines Programms eines bestimmten Typs ist und nicht der
Verwendung nur einer begrenzten Anzahl von verschiedenen Kommandos für die
Datenverarbeitungseinheiten.
-
Ausführungsbeispiele der Erfindung sind in der Zeichnung dargestellt und
werden im Folgenden näher beschrieben. Es zeigen:
-
Fig. 1 eine erste Ausführungsform des erfindungsgemäßen
Datenverarbeitungssystems,
-
Fig. 2 eine zweite Ausführungsform des erfindungsgemäßen
Datenverarbeitungssystems,
-
Fig. 3 eine Ausführungsform der Verbindung zwischen einem Expander und
einer Datenverarbeitungseinheit und
-
Fig. 4 eine Ausführungsform einer Datenverarbeitungseinheit.
-
Fig. 1 zeigt eine erste Ausführungsform des erfindungsgemäßen
Datenverarbeitungssystems. Dieses System umfasst einen Programmzähler 10, der einen mit einem
Adresseingang eines Programmspeichers 12 gekoppelten Ausgang hat. Der
Programmspeicher 12 umfasst eine Anzahl Stellen zur Speicherung von Programmbefehlen. Der
Programmspeicher 12 umfasst eine Anzahl Ausgänge (z. B. vier), die mit einer Anzahl
jeweiliger Datenverarbeitungseinheiten 14-1, 14-2 ... 14-N (von denen als Beispiel drei gezeigt
sind) und mit einem Expander 18 gekoppelt sind. Die Datenverarbeitungseinheiten 14-1,
14-2 ... 14-N sind über Verbindungsmittel 16 miteinander verbunden. Der Expander 18
umfasst einen Ausgang, der mit den Verbindungsmitteln 16 gekoppelt ist.
-
Für die Datenverarbeitungseinheit kann beispielsweise eine Einheit vom
ALU-(Recheneinheits-), Multiplizierer- oder Speichertyp verwendet werden. Von jedem
Typ können je nach Wunsch einer oder mehrere aufgenommen werden. Jede
Datenverarbeitungseinheit 14-1, 14-2 ... 14-N umfasst eine Anzahl Eingänge und Ausgänge für
Operanden und Ergebnisse, wobei die Anzahl vom Typ abhängt. Beispielsweise hat ein
Multiplizierer normalerweise zwei Eingänge für Operanden und einen Ausgang für ein
resultierendes Produkt, während ein Speicher häufig nur einen Dateneingang und einen
Datenausgang umfasst (der Speicher empfängt eine Adresse als Teil des Befehls, oder der Speicher
selbst enthält ein Adressregister, in das in einem gesonderten Befehlszyklus geschrieben
kann). Diese Eingänge und Ausgänge sind mit Verbindungsmitteln 16 verbunden.
Ungeachtet der Anzahl Eingänge und Ausgänge zeigt Fig. 1 der Einfachheit halber die Eingänge
und Ausgänge aller Datenverarbeitungseinheiten als einen einzigen Doppelpfeil.
-
Im Betrieb erzeugt der Programmzähler 10 in aufeinander folgenden
Befehlszyklen aufeinander folgende Adressen für den Programmspeicher 12. In Reaktion auf
jede Adresse liest der Programmspeicher 12 ein an der durch die Adresse angegebenen
Stelle gespeichertes Befehlswort. Der Programmspeicher 12 gibt die verschiedenen Felder
dieses Befehls aus. Diese Felder umfassen Kommandofelder für die verschiedenen
Datenverarbeitungseinheiten 14-1, 14-2 ... 14-N und ein Steuerfeld für den Expander 18.
Beispiele für den Inhalt des Kommandofeldes für die Datenverarbeitungseinheiten 14-1, 14-2
... 14-N sind "ADDIER"- oder " SUBTRAHIER"-codes für eine ALU oder "LADE"- und
"SPEICHER"-codes für eine Speichereinheit.
-
Das System ist somit vom "VLIW-Typ (VLIW: Very Large Instruction
Word). Zum Programmieren eines solchen Systems wird vor Ausführung des Programms
bestimmt, welche Operationen in welchem Befehlszyklus durch welche
Datenverarbeitungseinheit 14-1, 14-2 ... 14-N ausgeführt werden müssen. Für jeden Befehlszyklus wird
dann ein Befehlswort gebildet, in dem alle Kommandofelder für die während des
betreffenden Zyklus auszuführenden Operationen enthalten sind. Die so gebildeten Befehlswörter
werden in dem Programmspeicher 12 gespeichert und zu gegebener Zeit ausgeführt. Die
Bildung des Befehlswortes kann manuell erfolgen oder, wenn nötig, mit Hilfe bekannter
VLIW-Kompilierungstechniken.
-
In Abhängigkeit vom Inhalt der Kommandofelder verbrauchen und/oder
erzeugen die Datenverarbeitungseinheiten 14-1, 14-2 ... 14-N Daten an ihren Eingängen
und Ausgängen. Über die Verbindungsmittel 16 dienen die von einer
Datenverarbeitungseinheit 14-1, 14-2 ... 14-N erzeugten Daten als Eingang für eine andere
Datenverarbeitungseinheit. Die von den Verbindungsmitteln hergestellten Verbindungen werden unter
dem Einfluss des dem Expander 18 zugeführten Steuerfeldes gesteuert.
-
Der Expander 18 ist beispielsweise als Speicher ausgeführt, in dem ein
Vorrat an Steuersignalen für die Verbindungsmittel 16 gespeichert ist. Der Adresseingang 17
dieses Speichers ist mit dem Ausgang des Programmspeichers 12 gekoppelt und empfangt
das Steuerfeld des Befehlswortes, wobei der Datenausgang dieses Speichers mit dem
Steuereingang 19 der Verbindungsmittel 16 gekoppelt ist und diesem Steuersignale von
adressierten Speicherstellen zuführt. Das Steuerfeld umfasst weniger Bits als die Steuersignale,
sodass das Steuerfeld weniger Raum in dem Programmspeicher einnimmt, als nötig wäre,
um alle möglichen Steuersignale speichern zu können. Daher bildet der Vorrat an
Steuersignalen, der erzeugt werden kann, eine Teilmenge innerhalb der Menge aller möglichen
Steuersignale, die am Steuereingang 19 der Verbindungsmittel 16 funktionell wären.
-
Dieser Fall sollte von dem Fall unterschieden werden, bei dem der Ausgang
des Programmspeichers 12 direkt mit dem Steuereingang 19 der Verbindungsmittel 16 in
solcher Weise gekoppelt wird, dass die Verbindungen jeder Datenverarbeitungseinheit 14-
1, 14-2 ... 14-N unabhängig von den Verbindungen der anderen
Datenverarbeitungseinheiten gesteuert werden können (wobei Inkonsistenzen, wie der Fall, dass zwei
Datenverarbeitungseinheiten als Quelle von Daten für den gleichen Eingang einer anderen
Datenverarbeitungseinheit dienen, vernachlässigt werden). Im Fall unabhängiger Steuerbarkeit ist
die Menge Steuersignale in folgender mathematischer Hinsicht reduzierbar.
-
Reduzierbarkeit wird folgendermaßen definiert. Man nehme eine der
Datenverarbeitungseinheiten und spalte die Menge Steuersignale in solcher Weise in Teilmengen
auf, dass innerhalb jeder der Teilmengen die mit Hilfe der einen Datenverarbeitungseinheit
hergestellten Verbindungen die gleichen sind, während diese Verbindungen sich von einer
Teilmenge zur anderen unterscheiden. Es wird dann geprüft, ob eine Abbildung der
Teilmengen aufeinander in solcher Weise besteht, dass jedes Paar Steuersignale, die eine
Abbildung voneinander sind, die gleichen Verbindungen zwischen den anderen
Datenverarbeitungseinheiten erzeugen wie die eine Datenverarbeitungseinheit (unter Vernachlässigung
von Inkonsistenzen). Wenn eine solche Abbildung besteht, wird die Menge von
Steuersi
gnalen reduzierbar über die eine Datenverarbeitungseinheit genannt. Wenn die Menge von
generierbaren Steuersignalen über jede der Datenverarbeitungseinheiten reduzierbar ist,
dann wird die Menge von generierbaren Steuersignalen reduzierbar genannt.
-
Bei Verwendung eines erfindungsgemäßen Expanders 18 ist die Menge von
generierbaren Steuersignalen nicht reduzierbar. Dies stellt eine Einschränkung der
Steuerungsfreiheit der Verbindungsmittel 16 dar. Es hat sich jedoch gezeigt, dass sogar eine
wesentliche Einschränkung die Leistungsfähigkeit des Datenverarbeitungssystems kaum
beeinflusst.
-
Fig. 2 zeigt eine zweite Ausführungsform des erfindungsgemäßen
Datenverarbeitungssystems. Diese Ausführungsform umfasst wieder einen Programmzähler 20, der
mit einem Programmspeicher 22 gekoppelt ist. Der Datenausgang des Programmspeichers
22 ist an der einen Seite mit einem System von Befehlsbussen 222 gekoppelt, von denen
jeder eine Breite von n Bits hat, wobei n beispielsweise 5 ist, und an der anderen Seite mit
einem Eingang eines Expanders 230, der eine Breite von t Bits hat, wobei t beispielsweise 5
ist. Der Expander umfasst einen ersten und einen zweiten Satz Ausgangsleitungen 232, 234.
Jede der Leitungen des ersten Satzes 232 hat eine Breite von k Bits, wobei k beispielsweise
3 ist; jede der Leitungen des zweiten Satzes 234 hat eine Breite von s Bits, wobei s
beispielsweise 4 ist.
-
Die Leitungen des ersten Satzes 232 sind mit jeweiligen
Befehlsauswahlregistern 25-1, 25-2 ... 25-N gekoppelt. Die Befehlsauswahlregister 25-1, 25-2 ... 25-N sind
mit jeweiligen Befehlsselektoren 27-1, 27-2 ... 27-N gekoppelt. Die Befehlsselektoren 27-1,
27-2 ... 27-N sind zwischen dem Satz Befehlsbussen 222 und jeweiligen
Datenverarbeitungseinheiten 24-1, 24-2 ... 24-N angeordnet.
-
Die Leitungen des zweiten Satzes 234 von Ausgängen des Expanders 230
sind mit den Verbindungsmitteln 26 gekoppelt. Die Datenverarbeitungseinheiten 24-1, 24-2
... 24-N sind über die Verbindungsmittel 26 miteinander verbunden. In den
Verbindungsmitteln 26 sind die Leitungen des zweiten Satzes mit jeweiligen Datenauswahlregistern
262-1, 262-2 ... 262-N gekoppelt. Die Datenauswahlregister 262-1, 262-2 ... 262-N sind mit
jeweiligen Datenselektoren 264-1, 264-2 ... 264-N gekoppelt. Die Datenselektoren 264-1,
264-2 ... 264-N sind zwischen einem Satz Datenbusse 266 (von denen jeder eine Breite von
m Bits hat, mit m beispielsweise 16) und jeweiligen Datenverarbeitungseinheiten 24-1, 24-
2 ... 24-N angeordnet.
-
Eine der Datenverarbeitungseinheiten 24-1, 24-2 ... 24-N ist beispielsweise
eine Programmsteuereinheit (PCU) und ist mit dem Programmzähler 20 verbunden (nicht
abgebildet), um beispielsweise Sprungkommandos auszuführen, wodurch der Inhalt des
Programmzählers geändert wird. Weiterhin umfasst die Programmsteuereinheit 24-1
Verbindungen (nicht abgebildet) zu anderen Datenverarbeitungseinheiten 24-2 ... 24-N, um
Statusinformationen zur Verwendung in bedingten Sprungkommandos zu empfangen. Die
Programmsteuereinheit 24-1 ist darüber hinaus mit den Verbindungsmitteln zur
Übertragung sogenannter "unmittelbarer" Daten verbunden, die über eine Vielzahl von
Kommandofeldern eines Befehls verteilt sein können.
-
Die Verbindungsmittel 26 arbeiten folgendermaßen. Die Steuersignale auf
dem zweiten Satz 234 von Leitungen, die aus dem Expander 230 stammen, werden in den
Auswahlregistern 262-1, 262-2 ... 262-N gespeichert. Diese Signale steuern die zwischen
den Datenverarbeitungseinheiten 24-1, 24-2... 24-N von den Datenselektoren 264-1, 264-2
... 264-N hergestellten Verbindungen.
-
Wenn eine Datenverarbeitungseinheit, beispielsweise 24-2, Daten an einem
Ausgang erzeugt, die als Operand von einer anderen Datenverarbeitungseinheit,
beispielsweise 24-N, benötigt werden, wird der Ausgang der erzeugenden Datenverarbeitungseinheit
24-2 über den Datenselektor 264-2 mit einem der Datenbusse 266 verbunden. Dieser
Datenbus wird dann, über den zu der empfangenden Datenverarbeitungseinheit 24-N
gehörenden Selektor 264-N, mit dem Eingang der empfangenden Datenverarbeitungseinheit 24-N
verbunden. Ein Ausgang einer anderen Datenverarbeitungseinheit kann gleichzeitig mit
einem Eingang einer Datenverarbeitungseinheit, beispielsweise 24-1, oder sogar einem
Eingang zweier Datenverarbeitungseinheiten, beispielsweise 24-1 und 24-2, verbunden
werden.
-
Infolge der Verwendung der Auswahlregister 262-1, 262-2 ... 262-N können
die Steuersignale in einem Befehlszyklus erzeugt werden, der der eigentlichen Steuerung
mittels des Expanders 230 vorausgeht. Somit verringert die vom Expander 230 benötigte
Zeit, um diese Steuersignale zu bilden, auf diese Weise nicht die Befehlsausführungsrate
des Systems.
-
Fig. 3 zeigt eine weitere Ausführungsform der Verbindung zwischen dem
Expander 230 und einer des Datenverarbeitungseinheiten 24-1, die auf Wunsch für einen
Teil der Datenverarbeitungseinheiten verwendet werden kann. Teile, die Fig. 2 entsprechen,
werden mit den gleichen Bezugszeichen bezeichnet wie in Fig. 2. Zusätzlich zu Fig. 2 zeigt
Fig. 3 auch ein Kommandoregister 35, dessen Ausgang eine Verbindung 36 zu einem
Kommandoeingang der Datenverarbeitungseinheit 34 umfasst. Dadurch kann ein Teil des
aus dem Expander 230 kommenden Steuersignals direkt als Kommando für die
Datenverarbeitungseinheit 24-1 verwendet werden. Beispielsweise können so Kommandos gegeben
werden, die eng mit Datentransport zusammenhängen (beispielsweise "Adresszeigerregister
erhöhen" beim Auslesen von Daten, wenn die Datenverarbeitungseinheit 24-1 eine
Speichereinheit ist).
-
Fig. 4 zeigt eine Ausführungsform einer der Datenverarbeitungseinheiten
24-1. Diese Ausführungsform umfasst eine Funktionseinheit 441 und eine Anzahl von
Registern 442, 443, 444. Die Funktionseinheit 441 ist mit dem Befehlseingang gekoppelt; die
Register sind zwischen die Datenanschlüsse und die Funktionseinheit geschaltet. Als
Beispiel werden zwei Register 442, 443 als Eingangsregister gezeigt und ein Register 444 als
Ausgangsregister. Die Funktionseinheit führt im Betrieb die Kommandos aus, wobei dann
die Daten aus den Eingangsregistern 442, 443 verarbeitet werden und das Ergebnis im
Ausgangsregister 444 gespeichert wird. Bei Verwendung der Steuersignale können die
Kombinationen von Datenverbindungen, die über die Leitungen 266 von und zu den
Registern 242, 243 und 444 verlaufen, unabhängig gesteuert werden. Es genügt jedoch die
Verwendung eines nicht reduzierbaren Satzes von Kombinationen, sodass der Expander 230
vereinfacht werden kann.
-
Der Satz Befehlsbusse 222 umfasst weniger Busse, als es
Datenverarbeitungseinheiten 24-1, 24-2 ... 24-N gibt. Dies beruht auf der Erkenntnis, dass die Anzahl
gleichzeitig steuerbarer Datenverarbeitungseinheiten 24-1, 24-2 ... 24-N begrenzt werden
kann, ohne die Leistungsfähigkeit ernsthaft zu verschlechtern. Daher braucht der
Programmspeicher 22 nicht so breit zu sein, dass er Kommandofelder (von denen jedes ein
jeweiliges Kommando für eine Datenverarbeitungseinheit bildet) für alle
Datenverarbeitungseinheiten 24-1, 24-2 ... 24-N separat parallel ausgeben kann; es genügt, eine kleinere
Anzahl von Kommandofeldern parallel auszugeben. Die Befehlsselektoren 27-1, 27-2 ...
27-N sorgen dafür, dass diese Kommandofelder über den Satz Befehlsbusse 222 denjenigen
Datenverarbeitungseinheiten 24-1, 24-2 ... 24-N zugeführt werden, die in einem bestimmten
Taktzyklus gleichzeitig aktiv sein müssen. Die Befehlsselektoren 27-1, 27-2 ... 27-N
versorgen die anderen Datenverarbeitungseinheiten 24-1, 24-2 ... 24-N beispielsweise
standardmäßig mit einem NOP-Kommando (NOP: no-operation, nicht in Betrieb).
-
Die Zuführung von Kommandofeldern wird mit Hilfe des Expanders 230
gesteuert. Aus dem Programmspeicher 22 empfangt der Expander einen Teil des
Befehlswortes, das angibt, welcher Teil des Befehls aus dem Programmspeicher 22 welcher
Kombination von Datenverarbeitungseinheiten 24-1, 24-2 ... 24-N zugeführt werden muss. Bei
gleichzeitiger Verwendung von N Datenverarbeitungseinheiten 24-1, 24-2 ... 24-N, wobei
jede einen auf P verschiedene Steuersignale ansprechenden Befehlsselektor 27-1, 27-2 ...
27-N umfasst, wären insgesamt PN Steuersignale möglich.
-
Es hat sich jedoch gezeigt, dass für eine geeignete Programmierbarkeit nicht
alle PN möglichen Kombinationen von Verbindungen zwischen dem Satz Befehlsbusse 222
und den Datenverarbeitungseinheiten 24-1, 24-2 ... 24-N auswählbar zu sein brauchen.
Daher verschafft der Expander 230 nur Steuersignale für einen Vorrat an Kombinationen, der
eine Teilmenge alle möglichen Kombinationen ist. Mutatis mutandis ist auch dieser Vorrat
in dem vorstehend genannten Sinn nicht reduzierbar, sodass der Vorrat weniger als PN
Steuersignale umfasst. Jedesmal wird ein Steuersignal aus dem Vorrat auf Basis des Teils
des Befehls ausgewählt, der vom Programmspeicher 22 dem Expander 230 zugeführt wird.
Dieses Steuersignal wird in die Register 25-1, 25-2 ... 25-N geladen und den
Befehlsselektoren 27-1, 27-2 ... 27-N zugeführt.
-
Die Bits des Steuerfeldes, die den Bus festlegen, mit dem der Ausgang einer
bestimmten Datenverarbeitungseinheit verbunden wird, können beispielsweise auch den
Bus bestimmen, mit dem der Eingang einer anderen Datenverarbeitungseinheit verbunden
wird.
-
Es hat sich auch gezeigt, dass es ebenfalls nicht notwendig ist, die
Verbindungen, die von den Befehlsselektoren 27-1, 27-2 ... 27-N hergestellt werden können, und
die Verbindungen, die von den Datenselektoren 264-1, 264-2, 264-N hergestellt werden
können, unabhängig zu steuern. Dies wird zur Vereinfachung des Expanders 230 genutzt,
sodass er nur eine begrenzte Anzahl von Kombinationen von Steuersignalen für die
Befehlsselektoren 27-1, 27-2 ... 27-N und Steuersignalen für die Datenselektoren 264-1, 264-2
in Reaktion auf den vom Programmspeicher 22 empfangenen Befehl liefern kann.
-
Daher kann die Menge von generierbaren Steuersignalen für die
Datenselektoren 264-1, 264-2 ... 264-N und die Befehlsselektoren 27-1, 27-2 ... 27-N nicht auf ein
Produkt aus Daten- und Befehlsauswahl reduziert werden. In diesem Zusammenhang wird
Reduzierbarkeit auf ein Produkt aus Daten- und Befehlsauswahl folgendermaßen definiert:
die Menhe von generierbaren Steuersignalen für die Datenselektoren 264-1, 264-2 ... 264-N
und die Befehlsselektoren 27-1, 27-2 ... 27-N wird in Teilmengen aufgespalten, wobei in
jeder davon die Steuerung der Befehlsselektoren 27-1, 27-2 ... 27-N die gleiche ist.
Anschließend wird geprüft, ob eine Abbildung der Teilmengen aufeinander in solcher Weise
vorliegt, dass jedes Paar Steuersignale, das eine Abbildung eines anderen ist, die gleiche
Steuerung der Datenselektoren 264-1, 264-2 ... 264-N ergibt. Wenn eine solche Abbildung
nicht besteht, kann die Menge von Steuersignalen nicht auf ein Produkt aus Daten- und
Befehlsauswahl reduziert werden.
-
In diesem Fall, wenn BI verschiedene Steuersignale für die
Befehlsselektoren 27-1, 27-2 ... 27-N und BD Steuersignale für die Datenselektoren 264-1, 264-2 ... 264-
N generiert werden können, können weniger als BI · BD Kombinationen dieser
Steuersignale generiert werden.
-
Es hat sich auch gezeigt, dass es ebenfalls nicht notwendig ist, die in das
Kommandoregister 35 von Fig. 4 geladenen Kommandos unabhängig von den
Datenverbindungen zu steuern, die von den Datenselektoren 264-1, 264-2 ... 264-N hergestellt
werden. Dies wird auch zur Vereinfachung des Expanders 230 verwendet, sodass er nur eine
begrenzte Anzahl von Kombinationen von Kommandos für das Kommandoregister 35 und
Steuersignale für die Datenselektoren 264-1, 264-2 in Reaktion auf den vom
Programmspeicher 22 empfangenen Befehl liefern kann.
-
Natürlich betreffen die Zeichnung und die zugehörige Beschreibung nur
nicht einschränkende Ausführungsformen der Erfindung. Die Tatsache, dass die
verschiedenen Busse und die verschiedenen Signalverbindungen für die verschiedenen
Datenverarbeitungseinheiten überall durch die gleiche Anzahl Leitungen dargestellt werden, ist
beispielsweise rein illustrativ; in der Praxis können diese Anzahlen sich von einem Bus zum
anderen und von einer Datenverarbeitungseinheit zur anderen unterscheiden.
-
Weiterhin kann der Expander 18, 230 wie beschrieben als Speicher
ausgeführt werden, in dem an jeder Speicherstelle ein anderes Steuersignal gespeichert wird. In
diesem Fall liefert der Programmspeicher 12, 32 die Adresse für den Speicher in dem
Expander 18, 230 und der Speicher in dem Expander 18, 230 liefert das Steuersignal als
ausgelesene Daten (der Speicher in dem Expander 18, 230 kann ein RAM oder ein (E)(P)ROM
sein, je nach der Notwendigkeit, den Inhalt zu verändern). Statt des Speichers kann der
Expander 18, 230 eine speziell entworfene Logikschaltung mit der gleichen
Eingangs-/Ausgangsbeziehung enthalten. Allgemein gesagt kann die Ausführung dieser Schaltung kleiner
sein als die ROM-Version, weil viele Auswahlsignale für die meisten Steuersignale nicht
aktiv sind. Weiterhin kann beispielsweise die Funktion der Datenselektoren 264-1, 264-2 ...
264-N in den Datenverarbeitungseinheiten 24-1, 24-2 ... 24-N realisiert werden.
-
Das in dem Programmspeicher 12, 22 gespeicherte Programm kann von
einem menschlichen Programmierer geschrieben werden, aber es kann auch ein zu diesem
Zweck konstruierter Compiler genutzt werden. Dieser Compiler stellt eine Planung für die
Befehle auf, die für die Datenverarbeitungseinheiten 24-1, 24-2 ... 24-N benötigt werden,
und für die notwendigen Verbindungen zwischen den Datenverarbeitungseinheiten. Wenn
die Verbindungen, die den Expander 18,230 steuern, zuvor bestimmt sind, sollte der
Compiler eine dieser Verbindungen auswählen, um die geplante Verbindung zu implementieren
und er sollte auch den zugehörigen Code zum Steuern des Expanders 18, 230 in dem
Programm enthalten.
-
Sollte eine geplante Verbindung in der Teilmenge verfügbarer
Verbindungen nicht zur Verfügung stehen, ist eine Neuanordnung des Programms notwendig. Der
Compiler kann beispielsweise die Ausführung eines Befehls durch eine bestimmte
Datenverarbeitungseinheit um einen Taktzyklus aufschieben. Der benötigte Operand bleibt dann
einen Taktzyklus lang in einem Register in der Datenverarbeitungseinheit, die diesen
Operanden erzeugt, gespeichert. Es ist ratsam, zumindest alle 1-zu-1-Verbindungen zwischen
Datenverarbeitungseinheiten in der Teilmenge verfügbarer Verbindungen aufzunehmen; in
diesem Fall ist dafür gesorgt, dass alle Programme nötigenfalls mit Hilfe von später
auszuführenden Befehlen ausführbar sind. Dies kann zu einem langsameren Programm führen. In
der Praxis hat sich jedoch gezeigt, dass diese Verlangsamungen kaum signifikant sind,
wenn zulässige Verbindungen geeignet gewählt werden.
-
Es ist jedoch auch möglich, dass der Compiler selbst bestimmt, welche
Teilmenge von Verbindungen durch den Expander 18, 230 hergestellt werden kann. Hierzu
führt der Compiler beim Compilieren Buch über die benötigten Verbindungen, und es wird
dafür gesorgt, dass der Expander genau diese Verbindungen herstellen kann. Es ist dann
auch möglich, den Compiler zählen zu lassen, wie häufig jeder Verbindungstyp auftritt.
Verbindungstypen, die nur selten auftreten, können anschließend durch Neuananordnung
des Programms eliminiert werden, sodass der Expander vereinfacht und der
Programmspeicher verkleinert werden kann.