-
Die Erfindung betrifft ein Verfahren
zur Befehlsdecodierung in einer Prozessoranordnung, wie einem digitalen
Signalprozessor, die mehrere, synchron Daten verarbeitende Funktionseinheiten
mit jeweils zumindest einer zugeordneten Decodereinrichtung aufweist,
wobei ein Instruktionswort (VLIW) durch mehrere, jeweils eine Kennung
umfassende Instruktionswortteile gebildet wird und jedes Instruktionswortteil
zumindest einer Funktionseinheit zugeordnet und zur Ansteuerung
der zumindest einen Funktionseinheit in einer zugeordneten Decodereinrichtung
decodiert wird. Ferner betrifft die Erfindung eine derartige Prozessoranordnung.
-
Ein solches Verfahren zur Ansteuerung
von Funktionseinheiten in einem Prozessor und einer Prozessoranordnung
zur Durchführung
des Verfahrens ist beispielsweise in der deutschen Patentschrift
DE 198 59 389 C1 offenbart.
Dabei arbeiten die Funktionseinheiten zueinander parallel und werden zu
jedem Takt von einem Instruktionswort angesteuert. Diese Instruktionsworte
ihrerseits bestehen aus mehreren Instruktionswortteilen, wobei je
ein Instruktionswortteil zur Ansteuerung je einer Funktionseinheit
dient. Die Instruktionswortteile weisen eine vorgegebene Breite
und Reihenfolge im Instruktionswort auf, sodass diese in Abhängigkeit
ihrer Anordnung im Instruktionswort ihrer jeweiligen Funktionseinheit bzw.
deren Decodereinheit zuordenbar sind. Eine Erhöhung der Anzahl der parallel
arbeitenden Funktionseinheiten zur Steigerung des Verarbeitungspotentials
des Rechners hat demnach eine Vergrößerung der Bit-Breite der Instruktionsworte
zur Folge. Damit verbunden erhöht
sich der Speicherbedarf für die
Instruktionsworte im Programmspeicher.
-
Der Erfindung liegt somit die Aufgabe
zugrunde, bei einem gattungsbildenden Verfahren zur Befehlscodierung
bzw. einer gattungsbildenden Prozessoranordnung den Programmspeicherbedarf
zu verringern.
-
Verfahrensseitig wird die Aufgabe
dadurch gelöst,
dass in einem vorgegebenen, jedoch einstellbaren Abschnitt des Instruktionswortes
ein Instruktionswortteil erfasst wird und im Ansprechen auf das im
vorgegebenen Abschnitt abgelegte Instruktionswortteil Information
zur Festlegung eines weiteren Abschnittes des Instruktionswortes
ermittelt wird, in welchem nachfolgend ein weiteres, d.h. ein nächstes Instruktionswortteil
für eine
weitere, d.h. eine nächste Decodereinrichtung
erfasst wird. Durch das erfindungsgemäße Verfahren kann das einer
bestimmten Decodereinrichtung zugeordnete Instruktionswortteil innerhalb
des Instruktionswortes erfasst und erkannt werden, wodurch die Notwendigkeit
vermieden werden kann, das jedes Instruktionswortteil in einem vorgegebenen
Bereich innerhalb des Instruktionswortes angeordnet ist. Damit kann
eine höhere
Flexibilität beim
Aufbau des aus mehreren Instruktionswortteilen zusammengesetzten
Instruktionswortes bereitgestellt und letztlich Programmspeicher
eingespart werden.
-
Der Erfindung liegt die Idee zugrunde,
von dem vorgegebenen Aufbau des Instruktionswortes, d.h. einer festen
Abfolge von Instruktionswortteilen gleicher Länge, bei welcher ein vorgegebener
Abschnitt des Instruktionswortes einer vorgegebenen Decodereinrichtung
zuordenbar ist, dahingehend abzuweichen, dass auch unterschiedliche
Instruktionswortlängen
und eine flexible Anordnung der Instruktionswortteile innerhalb
des Instruktionswortes möglich
sind. Erfindungsgemäß kann somit
die Notwendigkeit vermieden werden, dass alle Instruktionswortteile
die gleiche Bit-Breite aufweisen. Für die Umsetzung dieser Idee
ist vorgesehen, dass wahlfrei auf Abschnitte des Instruktionswortteils
zugegriffen werden kann und nachfolgend überprüft wird, ob ein erfasstes Instruktionswortteil
für eine
vorgegebene Decodereinrichtung gültig
ist, d.h. von dieser verarbeitet werden kann. Um das Auffinden eines
weiteren Instruktionswortteils für
eine andere Decodereinrichtung zu erleichtern, ist erfindungsgemäß vorgesehen,
dass im Ansprechen auf das im vorgegebenen Abschnitt abgelegte Instruktionswortteil
Information zur Festlegung des weiteren, nächsten Abschnittes des Instruktionswortes
ermittelt wird, in welchem nachfolgend das Instruktionswortteil
für die
nächste Decodereinrichtung
erfasst wird.
-
Um beim Nichterfassen eines gültigen Instruktionswortteils
für die
vorgegebene Decodereinrichtung in dem vorgegebenen Abschnitt dieses
Instruktionswortteil zur Gültigkeitsüberprüfung für eine weitere
Decodereinrichtung bereitzustellen, kann vorgesehen sein, dass im
Ansprechen auf das Nichterfassen eines gültigen Instruktionswortteils
für die vorgegebene
Decodereinrichtung in dem vorgegebenen Abschnitt der weitere Abschnitt
als der vorgegebene Abschnitt festgelegt wird. Auf diese Weise kann nachfolgend überprüft werden,
ob ein erfasstes Instruktionswortteil für eine weitere, d.h. eine andere Decodereinrichtung
ein gültiges
Instruktionswortteil darstellt.
-
Um für alle Decodereinrichtungen
zu überprüfen, ob
ein bestimmtes Instruktionswort ein gültiges Instruktionswortteil
beinhaltet, kann vorgesehen sein, dass das Instruktionswort sukzessiv
abschnittsweise nach einem der jeweiligen Decodereinrichtung zugeordneten,
d.h. gültigen
Instruktionswortteil durchsucht wird, wobei nach jeder, jeweils
einer Decodereinrichtung zugeordneten Suche Information zur Festlegung
des nachfolgend zu durchsuchenden weiteren Abschnittes des Instruktionswortes
nach einem Instruktionswortteil für die nächste Decodereinrichtung ermittelt
wird. Ausgehend von einer ersten Decodereinrichtung bis zur letzten
Decodereinrichtung kann auf die beschriebene Weise für die jeweilige
Decodereinrichtung ein zugeordnetes, d.h. gültiges Instruktionswortteil
erfasst werden, wobei die Festlegung des zu durchsuchenden Abschnittes
im Instruktionswort von der bzw. den vorhergehenden Erfassungen
von Instruktionswortteilen abhängt.
-
Vorteilhaft können die ermittelten Informationen
zur Festlegung des weiteren Abschnittes des Instruktionswortes Angaben über die
Bit-Breite eines im vorgegebenen Abschnitt aufgefundenen gültigen Instruktionswortteils
und Angaben über
die Lage des vorgegebenen Abschnittes im Instruktionswort umfassen,
sodass mit beiden Angaben der weitere, d.h. der nächste Abschnitt
im Instruktionswort berechnet werden kann, in welchem dann nachfolgend
nach einem gültigen
Instruktionswortteil für
die weitere, d.h. nächste
Decodereinrichtung gesucht wird.
-
Um zu ermitteln, ob ein erfasstes
Instruktionswortteil einer bestimmten Decodereinrichtung zugeordnet
ist, d.h. für
diese gültig
und somit verarbeitbar ist, kann vorgesehen sein, dass ein erfasstes Instruktionswortteil
mit den für
die jeweilige Decodereinrichtung gültigen Instruktionswortteilen
verglichen wird. Darüber
hinaus kann im Instruktionswortteil selbst auch die Gültigkeit
für eine
vorgegebene Decodereinrichtung codiert sein.
-
Zur weiteren Verminderung des Programmspeicherbedarfs
kann ferner vorgesehen sein, dass ein Instruktionswortteil als ein
für mehrere
Decodereinrichtungen gültiger
Instruktionswortteil erkannt wird und jeweils der vorgegebene Abschnitt
als der weitere Abschnitt festgelegt wird, sodass das im vorgegebenen
Abschnitt erfasste Instruktionswortteil von allen nachfolgenden
Decodereinrichtungen decodiert wird. Dies bedeutet, dass der vorgegebene Abschnitt
für alle
nachfolgenden Decodereinrichtungen nach einem gültigen Instruktionswortteil
durchsucht wird, was letztlich dazu führt, dass das im vorgegebenen
Abschnitt abgelegte Instruktionswortteil auch allen nachfolgenden
Deco dereinrichtungen zugeführt
und von diesen decodiert wird.
-
Um die Flexibilität des erfindungsgemäßen Verfahrens
zusätzlich
zu erhöhen,
kann vorgesehen sein, dass operandenspezifische Informationen eines
Instruktionswortteils von einer Decodereinrichtung zu einer weiteren
Decodereinrichtung übermittelt
werden. Damit sind beispielsweise Strukturen ausbildbar, bei welchen
operandenspezifische Informationen durch eine Decodereinrichtung
ausgewertet werden und das Ergebnis zur weiteren Verarbeitung an
eine den zugeordneten Operationscode verarbeitende Decodereinrichtung
weitergegeben wird, wodurch unter Umständen eine höhere Verarbeitungsgeschwindigkeit
realisierbar ist.
-
Zweckmäßig wird die Bit-Breite eines
Instruktionswortteils in dessen Opcode codiert, sodass ohne Zeitverlust
die Information zur Ermittlung des nächsten Abschnittes innerhalb
des Instruktionswortes erfassbar ist. Ferner können damit auch Hardwarestrukturen
zur Erfassung der Bit-Breite vermieden werden.
-
Um den Hardwareaufwand zur Erfassung der
Instruktionswortteile innerhalb des Instruktionswortes zu verringern,
kann vorgesehen sein, dass die Breite der jeweiligen Instruktionswortteile
auf ein Vielfaches einer vorgegebenen ganzzahligen Konstanten eingestellt
wird. Dies bedeutet, dass zwar Instruktionswortteile unterschiedliche
Bit-Breiten aufweisen können,
diese jedoch einen gemeinsamen, vorgegebenen Teiler besitzen.
-
Um zu ermöglichen, dass mehr als ein
Instruktionswortteil eines Instruktionswortes von jeweils mehreren
zugeordneten Decodereinrichtungen decodiert wird, kann vorgesehen
sein, dass Abschnitten den Instruktionswortes nicht einzelne Decodereinrichtungen,
sondern Decodervorrichtungen zugeordnet sind, welche die Decodierfunktionalitäten mehrerer
Decodereinrichtungen umfassen. Dabei ist ein Instruktionswortteil
innerhalb des Instruktionswortes jeweils einer Decodervorrichtung
zugeordnet. Damit wird die Decodierfunktionalität einer Funktionseinheit über mehrere,
jeweils einem Abschnitt des Instruktionswortes zugeordnete Decodervorrichtungen redundant
verteilt. In jeder Decodervorrichtung wird das im jeweils zugeordneten
Abschnitt des Instruktionswortes erfasste Instruktionswortteil in
den Decodierfunktionalitäten
decodiert, für
welche das Instruktionswortteil gültig ist. Dieses Verfahren
bietet sich vorteilhaft insbesondere dann an, wenn verschiedene
Funktionseinheiten gleiche Instruktionswortteile parallel verarbeiten.
Der Speicherbedarf für
das Instruktionswort wird dabei dadurch erniedrigt, dass ein für mehrere
Decodereinrichtungen gültiges
Instruktionswortteil nur einmal innerhalb des Instruktionswortes
angeordnet sein muss. Da das Instruktionswortteil einer einzelnen
Decodervorrichtung den Decodierfunktionalitäten mehrerer Decodereinrichtungen zugeführt wird,
kann das Instruktionswort allen Decodierfunktionalitäten der
Decodervorrichtung zugeführt
und von diesen verarbeitet werden, für welche es gültig ist.
-
Das Prinzip der Zuordnung eines Abschnittes
des Instruktionswortes zu einer Decodervorrichtung, welche die Decodierfunktionalitäten mehrerer Decodereinrichtungen
aufweist, kann prinzipiell auf alle Abschnitte des Instruktionswortes übertragen werden.
Damit verbunden ist zwar eine hohe Redundanz in Bezug auf einzelne
Decodierfunktionalitäten aufgrund
der beschriebenen Decoderstruktur, der Speicherbedarf für den Programmspeicher
kann durch das erfindungsgemäße Verfahren
jedoch insbesondere bei spezifischen Anwendungen stark herabgesetzt
werden. Um die jeweilige Funktionseinheit anzusteuern, werden die
Decoderausgänge
der verschiedenen Decodervorrichtungen für die der Funktionseinheit
zugeordneten Decodierfunktionalität zusammengeführt.
-
Vorrichtungsseitig löst die Erfindung
die Aufgabe mit einer Prozessoranordnung mit mehreren, synchron
datenverarbeitenden Funktionseinheiten, wobei zur Befehlssteuerung
der Funktionseinheiten ein Instruktionswort vorgesehen ist, welches
den Funktionseinheiten zugeordnete Instruktionswortteile umfasst und
jeder Funktionseinheit zumindest eine Decodereinrichtung zugeordnet
ist, welche ein der jeweiligen Funktionseinheit zugeordnetes Instruktionswortteil
zur Ansteuerung der Funktionseinheit decodiert. Dabei ist eine Registereinrichtung
zur Aufnahme des Instruktionswortes vorgesehen und mehrere, jeweils
zumindest einer Decodereinrichtung zugeordnete Mittel, mit welchen
jeweils ein Instruktionswortteil in einem jeweils vorgegebenen Abschnitt
des Instruktionswortes erfassbar ist. Dieser Abschnitt des Instruktionswortes
ist im Betrieb der Prozessoranordnung flexibel festlegbar und dann
für den
nachfolgenden Verfahrensschritt vorgegeben. Weiterhin umfasst die
Prozessoranordnung Mittel zur Festlegung eines weiteren Abschnittes
des Instruktionswortes im Ansprechen auf das erfasste Instruktionswortteil
im vorgegebenen Abschnitt des Instruktionswortes. Das in der Registereinrichtung
abgelegte Instruktionswort kann über
die angegebenen Mittel nach einem für eine jeweilige Decodereinrichtung
gültigen
Instruktionswort durchsucht werden. Letztlich ist auf diese Weise
für alle
umfassten Decodereinrichtungen das jeweils zugeordnete Instruktionswortteil
innerhalb des Instruktionswortes ermittelbar.
-
Zur sukzessiven Festlegung des zu
untersuchenden Abschnittes innerhalb der Registereinrichtung nach
einem gültigen
Instruktionswortteil für
die dem jeweiligen Abschnitt zugeordneten Decodereinrichtung kann
ein Mittel zur Festlegung eines weiteren Abschnittes des Instruktionswortes
ein Addierglied aufweisen, in welchem eine Information über die
Lage des vorgegebenen Abschnittes des Instruktionswortes innerhalb
der Registereinrichtung und eine Information über die Länge des Instruktionswortteils
im vorgegebenen Abschnitt des Instruktionswortes datenverarbeitbar
ist.
-
Zweckmäßig kann ein oder mehrere Mittel zum
Erfassen eines Instruktionswortteils innerhalb des Instruktionswortes
zum wahlfreien Zugreifen innerhalb eines vorgegebenen Bereichs auf
die Registereinrichtung vorgesehen sein. Dieser vorgegebene Bereich kann
je nach Ausführungsform
die gesamte Bit-Breite der Registereinrichtung oder auch nur einen
Teil davon umfassen, welcher auf der Basis der vorhergehenden Erfassungen
von Instruktionswortteilen innerhalb der Registereinrichtung ermittelbar ist.
Dieses Mittel kann insbesondere als eine mit der Registereinrichtung
verbundene Multiplexereinrichtung ausgebildet sein, mit der auf
vorbestimmte Bit-Bereiche der Registereinrichtung zugegriffen werden
kann.
-
Zweckmäßigerweise ist das i-te Mittel
zum Erfassen eines der i-ten
Decodereinrichtung zugeordneten Instruktionswortteils so ausgebildet,
dass auf einen Bereich der Registereinrichtung zugegriffen werden
kann, der größer als
der Bereich des (i-1)-ten Mittels
zum Erfassen eines Instruktionswortteils ist, wobei der i-te Bereich
den (i-1)-Bereich der Registereinrichtung einschließt. Damit
kann insbesondere sichergestellt werden, dass Instruktionswortteile,
die in einem vorderen Bereich des Instruktionswortes angeordnet
sind, prinzipiell von allen zumindest einer Decodereinrichtung zugeordneten
Mitteln zum Erfassen eines Instruktionswortteils nach einem jeweils gültigen Instruktionswortteil
untersucht werden können.
Somit kann vorgesehen sein, dass ein Instruktionswort nur für einzelne
Funktionseinheiten bzw. deren zugeordneten Decodereinrichtungen
gültige
Instruktionswortteile umfasst, sodass die Bit-Breite des Instruktionswortes
reduziert werden kann. Dabei kann insbesondere vorgesehen sein,
dass für
die Decodereinrichtungen, für
welche innerhalb des Instruktionswortes kein gültiges Instruktionswortteil
umfasst ist, automatisch ein sogenannter „NOP"-Befehl
eingefügt
wird.
-
In einer vorteilhaften Ausführungsform
sind die Decodierfunktionalitäten
der Decodereinrichtungen in der Prozessoranordnung redundant angeordnet,
wobei mehrere Decodervorrichtungen umfasst sind, welche jeweils
Funktionalitäten
mehrerer Decodereinrichtungen aufweisen, und den Decodervorrichtungen
jeweils ein Mittel zugeordnet ist, mit welchem ein Instruktionswortteil in
einem vorgegebenen Abschnitt des Instruktionswortes erfassbar ist
sowie ein Mittel zur Festlegung eines weiteren Abschnittes des Instruktionswortes
im Ansprechen auf das Instruktionswortteil im vorgegebenen Abschnitt
des Instruktionswortes. Auf diese Weise ist den verschiedenen Abschnitten
der Registereinrichtung des Instruktionswortes jeweils eine Decodervorrichtung
zugeordnet, in welcher das im zugeordneten Abschnitt erfasste Instruktionswortteil
verarbeitet wird. Somit kann erreicht werden, dass ein einzelnes
Instruktionswortteil als Compound-Befehl in mehreren Decodereinrichtungen
verarbeitbar ist. Ferner ist es auch möglich, innerhalb eines einzelnen
Instruktionswortes mehrere derartiger Compound-Befehle anzugeben.
-
Beliebige Compound-Befehle innerhalb
des Instruktionswortes sind umsetzbar, wenn die dem ersten Abschnitt
zugeordnete Decodervorrichtung die Decodierfunktionalitäten aller
Funktionseinheiten aufweist und die den nachfolgenden Abschnitten
zugeordneten Decodervorrichtungen jeweils eine Dekodierfunktionalität weniger,
sodass die dem letzten Abschnitt der Registereinrichtung zugeordnete
Decodervorrichtung die Decodierfunktionalität einer einzigen Funktionseinheit
umfasst.
-
Eine grundsätzliche Regel bei dem Betrieb der
erfindungsgemäßen Prozessoranordnung
besteht darin, dass unabhängig
von der Verwendung von einem oder mehreren Compound-Instruktionswortteilen
innerhalb des Instruktionswortes nur ein einzelnen Instruktionswortteil
einer Decodereinrichtung zugeordnet ist, sodass innerhalb eines
Instruktionswortes die bestimmte Decodereinrichtung, d.h. die Decodierfunktionalität nur einmal
angesprochen wird. Um den Eingang einer Funktionseinheit mit dem Ausgang
der ihr zugeordneten Decodereinrichtung zu verknüpfen, kann vorgesehen sein,
dass der jeweilige Ausgang einer in mehreren Decodervorrichtungen
angeordneten Decodierfunktionalität über ein logisches Netzwerk
mit der Funktionseinheit verbunden ist, damit diese mit ihrem entsprechenden
decodierten Instruktionswortteil angesprochen werden kann.
-
Eine grundsätzlich neue Betriebsweise der erfindungsgemäßen Prozessoranordnung
kann dadurch bereitgestellt werden, dass Decodereinrichtungen zum Übermitteln
von decodierten Operanten eines Instruktionswortteils miteinander
verbunden sind, sodass die Decoder untereinander Decodierinformation
austauschen, welche für
nachfolgende Decoderoperationen verwendet werden.
-
Die Erfindung wird im Folgenden durch
das Beschreiben zweier Ausführungsformen
auf der Grundlage der beiliegenden Zeichnungen erläutert, wobei
-
1 in
einer Prinzipdarstellung und im Ausschnitt eine herkömmliche
Prozessoranordnung zur parallelen Datenverarbeitung,
-
2 in
einer Prinzipdarstellung und im Ausschnitt eine erste Ausführungsform
einer erfindungsgemäßen Prozessoranordnung
zur parallelen Datenverarbeitung,
-
3 ein
beispielhaftes Instruktionswort für die in 2 dargestellte Anordnung und
-
4 in
einer Prinzipdarstellung im Ausschnitt eine zweite Ausführungsform
einer erfindungsgemäßen Prozessoranordnung
zur parallelen Datenverarbeitung zeigt.
-
Die Erfindung baut auf einer Prozessoranordnung
zur parallelen Datenverarbeitung auf, wie sie im Ausschnitt in 1 dargestellt ist. Diese
umfasst synchron datenverarbeitende Funktionseinheiten 310, 320, 330, 340,
welchen jeweils eine Decodereinrichtung 210, 220, 230, 240 zugeordnet
ist, die ihrerseits jeweils mit vorgegebenen und sich nicht überlappenden
Abschnitten einer Registereinrichtung 100 verbunden sind.
Die Registereinrichtung 100 ist zur Aufnahme eines Instruktionswortes (VLIW:
very large instruction word) ausgebildet. Ein solches Instruktionswortes
setzt sich aus einer vorgegebenen Anzahl von sogenannten Instruktionswortteilen
(FIW: function instruction word) zusammen, die eine feste Breite
von 20 Bit aufweisen und an einem bestimmten und festen Bereich
innerhalb des Instruktionswortes angeordnet sind. Jedes dieser Instruktionswortteile
ist zum Ansteuern einer Funktionseinheit gebildet und wird von der
ihr zugeordneten Decodereinrichtung decodiert. Da das einer bestimmten
Funktionseinheit zugeordnete Instruktionswortteil innerhalb des
Registers 100 immer am gleichen Ort mit der vorgegebenen
Breite angeordnet ist, ist der jeweilige Decodereingang fest mit
dem bestimmten Bereich der Registereinrichtung 100 verbunden.
Die erste Decodereinrichtung 210 ist beispielsweise von
der Bit-Stelle A0 bis zur Bit-Stelle A19, die zweite Decodereinrichtung 220 ist
von der Bit-Stelle A20 bis zur Bit-Stelle A39 und
die letzte Decodereinrichtung 220 ist von der Bit-Stelle
A180 bis zur Bit-Stelle A199 mit
der Registereinrichtung 100 verbunden. Wie ersichtlich,
umfasst die dargestellte herkömmliche
Prozessoranordnung somit 10 Funktionseinheiten mit jeweils zugeordneter
Decodereinrichtung, wobei die Registereinrichtung 100 ein
Instruktionswort von 200 Bit aufnimmt. Ein abzuarbeitendes Instruktionswort
wird in das Register 100 eingelesen und im darauffolgenden
Takt abschnittsweise von den Decodereinrichtungen 210 bis 240 erfasst,
welche das ihr zugeordnete Instruktionswortteil decodieren und zur
synchronen Steuerung aller Funktionseinheiten 310 bis 340 an
die ihr zugeordnete Funktionseinheit weitergeben, in welcher die
im jeweiligen Funktionsinstruktionswort niedergelegte Datenverarbeitung
durchgeführt
wird. Es versteht sich, dass in den einzelnen Funktionseinheiten
nicht notwendigerweise gleiche Berechnungen durchgeführt werden sondern
auch unterschiedliche Befehle ausgeführt werden können. Wie
bekannt, setzt sich ein Instruktionswortteil in der Regel aus einer
Kennung d.h. einem Operationscode und einem oder mehreren Operanden
zusammen. Es werden jedoch auch Instruktionswortteile verwendet,
die nur aus einem Operationscode bestehen.
-
2 zeigt
in einer Prinzipdarstellung eine erste Ausführungsform einer erfindungsgemäß gestalteten
Prozessoranordnung im Ausschnitt. Die Anordnung weist wiederum zehn
Funktionseinheiten auf, denen jeweils eine Decodereinrichtung zugeordnet
ist, in welcher das der Funktionseinheit zugeordnete Instruktionswortteil
decodiert wird. Zur Aufnahme des jeweiligen Instruktionswortteils
sind alle 10 Decoder 210, 220,..., 230, 240 über einen
Bus 150 mit der Registereinrichtung 100 verbunden.
Im Unterschied zum beschriebenen Stand der Technik kann die Registereinrichtung 100 bei
der Abarbeitung einer durch Instruktionsworte gebildete Befehlskette Instruktionswortteile
unterschiedlicher Breite aufweisen, sodass auch ein einzelnes Instruktionswort
nicht in jedem Fall die volle Breite der Registereinrichtung 100 ausfüllt. Damit
kann letztlich der nicht dargestellte Programmspeicherbereich in
seiner Größe vermindert
werden. Das in die Registereinrichtung 100 eingeschriebene
Instruktionswort weist zehn Instruktionswortteile auf, die insgesamt
150 Bit umfassen, sodass 50 Bit der Registereinrichtung unbeschrieben sind.
Das im Bereich der Bit-Stelle A0 bis A14, d.h. 15 Bit umfassende Instruktionswortteil 110 ist
der ersten Decodereinrichtung 210 bzw. der ersten Funktionseinrichtung 310 zugeordnet.
Das von der Bit-Stelle A15 bis A24 angeordnete Instruktionswortteil 120 umfasst
10 Bit und ist der zweiten Decodereinrichtung 220 bzw.
der zweiten Funktionseinrichtung 320 zugeordnet. Dem entsprechend
gibt das von der Bit-Stelle 130 bis zur Bit-Stelle 149 angeordnete,
20 Bit breite Instruktionswortteil 140 den in der Decodereinrichtung 240 zu
decodierenden Befehl an, welcher in der Funktionseinrichtung 340 ausgeführt wird.
-
Da ein Instruktionswortteil, das
einer bestimmten Decodereinrichtung bzw. einer bestimmten Funktionseinrichtung
zugeordnet ist, nicht mehr innerhalb eines festen, unveränderlichen
Abschnittes in jedem Instruktionswort der Befehlskette angeordnet
ist, sind Mittel vorgesehen, um innerhalb von Abschnitten des Instruktionswortes
nach einem gültigen Instruktionswortteil
für die
jeweilige Decodereinrichtung zu suchen. Dabei wird das Ergebnis
dieser Suche zur Festlegung eines weiteren Abschnittes innerhalb
des Instruktionswortes verwendet, in welchem nachfolgend für die nächste Decodereinrichtung nach
einem gültigen
Instruktionswort gesucht wird. Hierzu umfasst jede Decodereinrichtung
eine Multiplexer-Einrichtungen 410, 420,..., 430 und 440,
mit welchen jeweils wahlfrei auf einstellbare Abschnitte des Registers 100 zugegriffen
werden kann. Weiterhin weisen die in 2 dargestellten
Decodereinrichtungen 210, 220 und 230 jeweils
einen Ausgang 610, 620, 630 auf, über den
die Breite des erfassten und gültigen
Instruktionswortteils an die Multiplexer-Einrichtung der nachfolgenden
Decodereinrichtung weitergegeben werden kann. Ferner sind Addierereinrichtungen 520, 530 und 540 vorgesehen,
in denen die Bit-Breite der ermittelten Instruktionswortteile addiert
werden.
-
Im Folgenden wird auf die Funktionsweise der
in 2 dargestellten Anordnung
eingegangen. Das 150 Bit breite und zehn Instruktionswortteile umfassende
Instruktionswort wurde im Vorfeld als Teil eines Befehlsstromes
in das Register 100 eingelesen und wird nun von den Decodern 210, 220,..., 230 und 240 abschnittsweise
aufgenommen. Das Instruktionswort wird sukzessive auf gültige Instruktionswortteile
für die
10 umfassten Decodereinrichtungen untersucht. Da die maximale Breite
des Instruktionswortteils für
die erste Decodereinrichtung 210 20 Bit beträgt, ist
die Multiplexer-Einrichtung 410 so eingerichtet, dass diese
wahlfrei auf die ersten 20 Bit der Registereinrichtung 100 zugreifen
kann. Ferner ist vorgegeben, dass das der Decodereinrichtung 210 zugeordnete
Instruktionswortteil mindestens 10 Bit aufweist. Demnach wird die
Multiplexer-Einrichtung 410 zuerst
zum Erfassen der ersten 10 Bit eingestellt, das erfasste Wort in
dem vorgegebenen Abschnitt mit gültigen
Instruktionswortteilen für
die erste Decodereinrichtung verglichen und beim Nichtauffinden
eines gültigen
Instruktionswortteils die Bit-Breite des vorgegebenen Abschnittes
bis zur maximalen Breite des vorgegebenen Abschnittes erhöht, wobei
jedes Mal das sich ergebende Instruktionswortteil mit den gültigen Instruktionswortteilen
der ersten Decodereinrichtung 210 verglichen wird.
-
Im vorliegenden Beispiel wird nach
der Einstellung einer Breite von 15 Bit im vorgegebenen Abschnitt
ein gültiges
Instruktionswortteil 110 für die erste Decodereinrichtung 210 erkannt
und dieser zugeführt.
Gleichzeitig wird die Breite des aufgefundenen Instruktionswortteils
am Ausgang 610 der ersten Decodereinrichtung 210 an
die Multiplexer-Einrichtung 420 der zweiten Decodereinrichtung 220 weitergegeben.
Auf diese Weise wird die zweite Multiplexer-Einrichtung auf den
Beginn des weiteren, d.h. des nächsten
Abschnittes innerhalb des Instruktionswortes eingestellt, in welchem
nachfolgend nach einem gültigen
Instruktionswortteil für
die zweite Decodereinrichtung 220 gesucht wird. Auch dieser
weitere, hier zweite Abschnitt kann eine Breite zwischen 10 und
20 Bit aufweisen. Dem entsprechend wird der Bereich, ausgehend von
der Bit-Stelle A15 bis zur Bit-Stelle A25,
zuerst nach einem gültigen
Instruktionswortteil für
die zweite Decodereinrichtung 220 untersucht. Vorliegend
ergibt ein Vergleich mit dem in der Decodereinrichtung abgelegten
gültigen
Instruktionswortteilen, dass das Instruktionswortteil 120 gültig ist,
sodass dieses nachfolgend von der Decodereinrichtung decodiert und
das decodierte Wort an die Funktionseinheit 320 weitergegeben
werden kann. Auch hier gibt die zweite Decodereinrichtung an ihrem
Ausgang 620 die Breite des ihr zugeordneten Instruktionswortteiles
aus, wobei die Breiten der beiden erfassten gültigen Instruktionswortteile
in der Addierereinrichtung 520 summiert werden, um den
Beginn des Abschnittes für
die nächste
Multiplexer-Einrichtung festzulegen. Dieser Vorgang setzt sich für alle nachfolgenden,
teilweise nicht dargestellten Einrichtungen fort. Auch an der neunten
Decodereinrichtung 230 bzw. der zehnten Decodereinrichtung 240 wird zur
Festlegung des Beginns des zu untersuchenden Abschnittes innerhalb
des Instruktionswortes die Summe der Breiten der bislang aufgefun denen
Instruktionswortteile in den Addierereinrichtungen 530 bzw.
540 zur Breite des in der vorhergehenden Decodereinrichtung erfassten
gültigen
Instruktionswortteils addiert. Auf die beschriebene Weise wird somit, ausgehend
von der ersten Decodereinrichtung 210 bis zur zehnen Decodereinrichtung 240,
das Instruktionswort sukzessiv abschnittsweise nach einem der jeweiligen
Decodereinrichtungen zugeordneten Instruktionswortteil durchsucht,
wobei nach jeder, jeweils einer Decodereinrichtung zugeordneten
Suche der Beginn des nachfolgend zu durchsuchenden Abschnittes festgelegt
wird. Der jeweilige Abschnittsbeginn wird dadurch festgelegt, dass
sukzessiv die Breiten der aufgefundenen gültigen Instruktionswortteile
addiert werden.
-
Die in 2 dargestellte
Prozessoranordnung kann auch Instruktionsworte verarbeiten, die eine
geringere Anzahl von Instruktionswortteilen als umfasste Decodereinrichtungen
bzw. Funktionseinheiten aufweist. Wird beispielsweise für die erste
Decodereinrichtung 210 innerhalb des Abschnittes von A0 bis A20 kein gültiges Instruktionswort
aufgefunden, wird automatisch vom Decoder zur Funktionseinheit 310 ein „NOP"-Befehl weitergegeben
und über
den Ausgang 610 die Breite „0" an den nächsten Multiplexer 420 weitergegeben,
sodass dieser nun für
die Erfassung eines gültigen
Instruktionswortes für
die zweite Decodereinrichtung 220 auf den Bereich zwischen
A0 bis A19 zugreift.
-
Mit der dargestellten Ausführungsform
sind ferner sogenannte Compound-Befehle verarbeitbar, bei welchen
ein einzelnen Instruktionswortteil als gültig für mehrere aufeinanderfolgende
Decodereinrichtungen erfasst und verarbeitet wird. Ein beispielhaftes
Instruktionswort, das in der Registereinrichtung 100 eingeschrieben
ist, zeigt 3. Das Instruktionswort
setzt sich nur aus fünf
Instruktionswortteilen mit jeweils 15 Bit zusammen, sodass die Registereinrichtung 100 ab
der Bit-Stelle A74 bis zur Bit-Stelle A199 keine
gültigen
Daten aufweist. Bei der Erfassung des ersten gültigen Instruktionswort teils
in der Decodereinrichtung 210 wird erkannt, dass das Instruktionswortteil
auch gültig
für die
zweite Decodereinrichtung ist und dem entsprechend am Ausgang 610 der
Wert 0 zum Festlegen des Beginns des nächsten Abschnittes an die Multiplexer-Einrichtung 420 weitergegeben.
Demnach wird der weitere Abschnitt als identisch mit dem vorhergehenden
Abschnitt erkannt, sodass auch für
die Decodereinrichtung 220 innerhalb des Bereiches A0 bis A20 nach einem
gültigen
Instruktionswortteil, wie beschrieben, gesucht wird. Nach dem Erkennen
in der zweiten Decodereinrichtung 220, dass das erfasste
Instruktionswortteil auch für
diese gültig
ist, jedoch nicht für
die nachfolgende, nicht dargestellte dritte Decodereinrichtung, wird
am Ausgang 620 die Breite des in der ersten und zweiten
Decodereinrichtung 210, 220 erfassten gültigen Instruktionswortteils
an die Addierereinrichtung 520 weitergegeben. In der Addierereinrichtung
wird diese Bit-Breite mit der am Ausgang 610 der ersten Decodereinrichtung 210 abgegebenen
Bit-Breite summiert wird, sodass letztlich der nicht dargestellte dritte
Multiplexer auf einen Bereich innerhalb des Instruktionswortes eingestellt
wird, der dem ersten Instruktionswortteil 710 folgt. In
den nachfolgenden, auch nicht dargestellten fünf Decodereinrichtungen wird
erkannt, dass das folgende Instruktionswortteil 720 für alle diese
Decodereinrichtungen gültig
ist und dementsprechend wieder die Breite 0 an die nachfolgende
Addierereinrichtung weitergegeben wird. Erst die siebte Decodereinrichtung
gibt die Länge
des Instruktionswortteils 720 an die ihr zugeordnete Addierereinrichtung
weiter. Die im Instruktionswort weiterhin enthaltenen Instruktionswortteile 730, 740 und 750 werden
dann für
die drei letzten Decodereinrichtungen, von denen in der Figur die
beiden letzten mit den Bezugszeichen 230 und 240 dargestellt
sind, jeweils als gültiges
Instruktionswortteil erkannt und verarbeitet.
-
Eine weitere Ausführungsform der Erfindung zeigt 4. Obwohl identisch aufgebaut,
sind zum Zwecke der Übersichtlichkeit
im Vergleich zur Anordnung gemäß 2 die Registereinrichtung
100 und die
Addierereinrichtungen weggelassen sowie die Multiplexer-Einrichtungen 410, 420,..., 430 und 440 unverschaltet
dargestellt. Jeder der 10 Funktionseinheiten 310, 320,..., 330 und 340 ist
jeweils eine Decodervorrichtung zugeordnet, die mehrere Decodierfunktionalitäten, d.h.
Decodereinrichtungen umfassen können.
Im vorbezeichneten Beispiel weist die dem ersten Abschnitt des Instruktionswortes
zugeordnete Decodervorrichtung 810 alle Decodereinrichtungen 210, 220...230, 240 auf.
Die nächste
Decodervorrichtung 820 weist alle Decodereinrichtungen außer der
ersten Decodereinrichtung 210 auf. Diese Aufbausystematik
setzt sich sukzessiv in den Decodervorrichtungen fort, d.h. jede
Decodervorrichtung weist relativ zur vorhergehenden Decodervorrichtung eine
Decodereinrichtung weniger auf. Demnach umfasst die letzte Decodervorrichtung 840 nur
die der letzten Funktionseinheit 340 zugeordnete Decodereinrichtung 240.
Die Ausgänge
der Decodereinrichtungen mit identische Dekodierfunktionalität sind über Oder-Verknüpfungseinrichtungen 910...960 mit dem
Eingang der jeweils zugeordneten Funktionseinheit verbunden. Beispielsweise
sind die Ausgänge der
Decodereinrichtungen 220 in der zweiten Decodervorrichtung 810 und
der ersten Decodervorrichtung 820 über die Verknüpfungseinrichtung
910 zum Eingang der Funktionseinrichtung 320 geführt. In gleicher
Weise sind die Ausgänge
der Decodereinrichtungen 230, welche Befehle für die Funktionseinheit 330 decodieren, über die
Oder-Verknüpfungselement 920 und 930 mit
dem Eingang der Funktionseinheit 330 verbunden. Es versteht
sich, dass die Ausgänge
der Decodereinrichtungen 230 der nicht dargestellten Decodervorrichtungen
auch in die Oder-Verknüpfungkaskade
für die
Funktionseinheit 330 eingebunden sind.
-
Die prinzipielle Arbeitsweise der
in 4 dargestellte Prozessoranordnung
ist sehr ähnlich
der in 2 dargestellten.
Auch hier wird in einem vorgegeben einstellbaren Abschnitt des Instruktionswortes ein
Instruktionswortteil erfasst und im Ansprechen auf das im vorgegebenen
Abschnitt abgelegte Instruktionswortteil dessen Bit-Breite an die
nächste Multiplexer- Einrichtung weitergegeben,
sodass der Beginn des nächsten
Abschnittes, in welchem nach dem nächsten Instruktionswortteil
gesucht wird, festgelegt ist. Im Unterschied zu der in 2 dargestellten Ausführungsform
ist jedoch innerhalb der ersten Decodervorrichtung sichergestellt,
dass das erfasste Instruktionswortteil zumindest für eine der
umfassten Decodereinrichtungen 210 bis 240 gültig ist.
Demnach wird mit Sicherheit immer ein für die erste Decodervorrichtung 810 gültiges Instruktionswortteil
erfasst, das in zumindest einem der Decodereinrichtungen verarbeitet
werden kann. Durch den beschriebenen Aufbau ist es ferner auch möglich, dass
das erfasste Instruktionswortteil von mehreren Decodereinrichtungen
als gültig
erkannt und von diesen verarbeitet wird, wobei die das gleiche Instruktionswortteil verarbeitende
Decodereinrichtungen nicht unbedingt nebeneinander angeordnet sein
müssen,
wie es im vorhergehenden Beispiel der Fall war. Ferner kann die
in 4 dargestellte Anordnung
beliebige Compound-Befehle verarbeiten. Beim Betrieb ist darauf zu
achten, dass bei der Abarbeitung eines Instruktionswortes eine bestimmte
Decodereinrichtung nur ein einziges Mal mit einem gültigen Instruktionswortteil
gespeist wird, damit die logische Verknüpfung der Ausgänge der
redundant in den verschiedenen Decodervorrichtungen angeordneten
Decodereinrichtung eindeutig bleibt.
-
- 100
- Register
- 110,
120, 130, 140
- Abschnitte
des Registers 100
-
- bzw.
Instruktionswortteil
- 200
- Decoder
- 210,
220, 230, 240
- Decodereinrichtung
- 300
- Berechnungseinrichtung
- 310,
320, 330, 340
- Funktionseinheit
- 410,
420, 430, 440
- Multiplexer-Einrichtung
- 450
- Register
- 520,
530, 540
- Addierereinrichtung
- 610,
620, 630
- Decoderausgang
- 710,
720, 730, 740, 750
- Abschnitte
des Registers 100
-
- bzw.
Instruktionswortteil
- 810,
820, 830, 840
- Decodervorrichtung
- 910,
920, 930, 940, 950, 960
- Oder-Verknüpfungseinrichtung
- Ai
(i = 0... 199)
- Bit-Stellen
des Registers 100