-
Gebiet der
Erfindung
-
Die
vorliegende Erfindung betrifft Datenprozessoren im Allgemeinen und
Verfahren und eine Vorrichtung zur Gruppierung von Datenprozessorbefehlen
und ein mit dieser zu verwendendes Befehlssystem im Besonderen.
-
Hintergrund
der Erfindung
-
Es
sind viele verschiedene Typen von Datenprozessoren verfügbar. Einige
Datenprozessoren verfügen über mehrere
Ausführungseinheiten,
die gleichzeitig verwendet werden können. Die Steuerung von Befehlen
für derartige
Datenprozessoren kann entweder dynamisch oder statisch erfolgen.
Beide Typen von Systemen funktionieren auf einem sequentiellen Befehlsstrom,
der unter Verwendung herkömmlicher
Programmerstellungs-Softwarewerkzeug, einschließlich Optimierungsassembler
und Compiler, zur Ausführung
erstellt worden ist. Im Allgemeinen erfordern dynamische Systeme
beträchtlich
mehr Hardware in dem Datenprozessor, während statische Systeme komplexere
Programmerstellungs-Softwaretechniken benötigen. Das gemeinsame Ziel
ist jedoch, die dem Befehlsstrom innewohnende Befehlspegelparallelität bei Aufrechterhaltung des
Erscheinungsbilds der Ausführungsregelmäßigkeit
zu identifizieren und zu verwerten.
-
In
einem dynamischen Befehlsplanungssystem erhält eine spezielle Hardware
in dem Datenprozessor ein Schiebefenster der Sichtbarkeit in den
sequentiellen Befehlsstrom aufrecht. Bei jedem Befehlssende- bzw.-dispatchzyklus
wählt die
Steuerungshardware vorbehaltlich serieller Befehlsbeschränkungen
so viele der sichtbaren Befehle aus, wie durch die Ausführungseinheiten
und andere Systemmittel untergebracht werden können. Zusätzliche Hardware pflegt einen
Datensatz von jedem Befehl, während
dieser unterwegs ist, und bricht, abhängig von Systembedingungen,
den Befehl entweder vorzeitig ab oder zieht ihn entsprechend zurück. Ein
Beispiel eines dynamisch gesteuerten Datenprozessors ist der Motorola
MPC604 Mikroprozessor.
-
In
einem statischen Befehlsplanungssystem prüft das Programmerstellungs-Softwarewerkzeug,
nachdem es den seriellen Befehlsstrom erzeugt und möglicherweise
optimiert hat, diesen Strom erneut und ordnet auf der Grundlage
von Information, die die Hardwarekonfiguration und die Betriebseigenschaften
des Zieldatenprozessors beschreibt, jene Befehle in Gruppen an,
die gefahrlos parallel ausgeführt
werden können.
Aufgrund der Schwierigkeit bei der Vorhersage der Aktionen bestimmter
Programmkonstrukte, wie indirekte oder berechnete Speicherreferenzen,
ist es nicht möglich,
im Voraus eine optimale Planung zu garantieren. Zur Unterbringung
solcher nicht vorhersagbarer Konstrukte werden üblicherweise einige Hardwareverriegelungen vorgesehen.
Ein Beispiel eines statisch geplanten Datenprozessors war der Multiflow
Trace 7/14/28. Der Compiler für
die Trace-Maschine
wurde gemeinhin als Bulldog Compiler bezeichnet, der Name, der ihr
von seinen ursprünglichen
Autoren während
deren Aufenthalts an der Yale Universität gegeben wurde.
-
Beim
Gruppieren von Befehlen für
den Trace, der eine sehr lange Befehlswort ("Very Long Instruction Word (VLIW)")-Maschine war, war
der Bulldog Compiler, abhängig
von dem Maschinenmodell, auf eine VLIW mit entweder 7, 14 oder 28
feststehenden Funktionsbefehlsschlitzen beschränkt. Jeder beliebige Befehlsschlitz,
für den
der Compiler keine nützliche
Arbeit finden konnte, wurde einfach mit einem Nicht-Operations ("no-operation (NOP)")-Befehl (d. h. alles
Nullen) ausgefüllt.
Anstatt diese nutzlosen NOPs in dem Speicher zu speichern, drückte ("squash out") der Compiler die
NOPs heraus und stellte den Satz brauchbarer Befehlswörter voran,
wobei jedes VLIW mit einem Bitverzeichnis ausgestattet wurde, das
den Standort der zerdrückten NOPs
(oder umgekehrt gesehen, der brauchbaren Befehlswörter) anzeigte.
Zum Zeitpunkt vor dem Abruf verwendete der Trace-Cache/Speicher-Controller die Information
in dem Bitverzeichniswort zum Regenerieren der NOPs, so dass der
Cache mit vollständig
bestückten
VLIWs gefüllt
war. Das Bitverzeichnis wurde ausgesondert, sobald die entsprechenden
VLIWs während
dem Vor-Abruf regeneriert waren, und keinem Teil der Befehlssendung-
oder Ausführungs-Hardware
war deren Existenz überhaupt
bewusst. Selbst wenn dieser Mechanismus die logische Länge jedes
VLIW in dem Speicher um ein Wort verlängerte, tendierte er aufgrund
der Unfähigkeit
des Compilers, sämtliche
Befehlsschlitze in jedem VLIW mit brauchbaren Befehlswörtern zu
füllen, im
Allgemeinen dazu, die physische Länge der gespeicherten VLIWs
zu verringern. Andererseits konnte dieser Mechanismus für einen
gut konstruierten Code die tatsächliche
Codegröße in dem
Speicher beträchtlich
vergrößern.
-
Ein
jüngeres
Beispiel eines statisch gesteuerten Datenprozessors ist die Texas
Instruments TMS320C62xx Mikroprozessorfamilie ('C62). In der 'C62 enthält jedes Befehlswort ein speziell
zugeordnetes "P" Bit, das bei Einstellung
durch das Programmerstellungs-Softwarewerkzeug der Sendehardware
anzeigt, dass das Befehlswort parallel mit dem nachfolgenden Befehlswort
gesendet bzw. zugewiesen werden kann. Folglich enthält ein gleichzeitig
gesendetes "Ausführungspaket" ein Befehlswort
mit einem freien P-Bit und bis zu einer maximalen Anzahl von vorangestellten
Befehlswörtern,
wobei jedes ein eingestelltes P-Bit aufweist. Das US Patent Nr.
5,560,028 offenbart eine Veränderung
an diesem Mechanismus, in der das Erfassen des Parallelsende-Steuerungsbits zwischen
jedem Satz parallel sendbare Befehlswörter hin- und hergeschaltet wird.
Durch Zuordnen eines Bits von jedem Befehl zu der Gruppierungsfunktion
ist in den obigen statisch geplanten bzw. gesteuerten Systemen ein
signifikanter Bereich des Befehls für andere Funktionen, wie dem
Codieren von Datenverarbeitungsoperationen, nicht verwendbar.
-
Die
US Patente 4,907,192 und 5,475,853 offenbaren ferner die Verwendung
von festen, in einen Befehl eingegliederten Tagbits zum Liefern
zusätzlicher
Verarbeitungsinformation an einen Prozessor, was jedoch das US Patent
5,560,028 betrifft, kann dies zur Folge haben, dass signi fikante
Bereiche des Befehls für andere
Funktionen unbrauchbar sind.
-
Großer Wert
wird auf die Ausführungsgeschwindigkeit
für das
Verarbeiten von Daten und Befehlen unter Verwendung eines derartigen
Mehrfachausführungsdatenprozessors
gelegt. Da jedoch die Komplexität
der Datenprozessorarchitektur bei Verwendung mehrerer Ausführungseinheiten
erhöht
wird, tendiert die Größe des Computerbefehlscodes
dazu, sich zu vergrößern. In
vielen Anwendungen ist eine vergrößerte Codegröße aufgrund
erhöhter
Kosten und erhöhten
Platzbedarfs für
zusätzlichen
Speicher unerwünscht.
Eine solche Anwendung ist eine Klasse von Datenprozessoren, die
als digitale Signalprozessoren ("digital
signal processors (DSPs)")
bekannt sind. DSPs werden in vielen Anwendungen, wie zellularen
Telefonen, benutzt, bei denen großer Wert auf geringe Größe und geringe
Energie gelegt wird. Für
einen Datenprozessor mit mehreren Ausführungseinheiten wäre es wünschenswert,
eine schnellere Befehlsverarbeitung bereitzustellen, ohne die Befehlscodegröße beträchtlich
zu erweitern.
-
Dementsprechend
besteht ein Bedarf für
verbesserte Verfahren und eine verbesserte Vorrichtung zum Gruppieren
von Rechenbefehlen und für
ein verbessertes Befehlssystem.
-
Kurze Beschreibung
der Zeichnungen
-
Während die
Erfindung in den beigefügten
Ansprüchen
ausführlich
dargelegt wird, werden andere Merkmale der Erfindung durch die folgende,
in Verbindung mit den beigefügten
Zeichnungen vorgenommene Beschreibung offenbart. Es zeigen:
-
1 ein Blockdiagramm einer
Ausführungsform
eines Datenverarbeitungssystems.
-
2 ein Diagramm, das Register
in dem Kern des Systems von 1 veranschaulicht.
-
3 ein Diagramm, das eine
bestimmte Ausführungsform
eines Bereichs des Kerns des Systems von 1 mit einer einzelnen Multiplizier- und
Akkumulier-Einheit veranschaulicht.
-
4 ein Diagramm, das eine
andere Ausführungsform
eines Bereichs des Kerns des Systems von 1 mit zwei Multiplizier- und Akkumulier-Einheiten
veranschaulicht.
-
5 ein Diagramm, das eine
weitere Ausführungsform
eines Bereichs des Kerns des Systems von 1 mit vier Multiplizier- und Akkumulier-Einheiten
veranschaulicht.
-
6 ein Diagramm, das eine
bestimmte Ausführungsform
der Multiplizier- und Akkumulier-Einheit der 3–5 veranschaulicht.
-
7. ein Diagramm, das eine
bestimmte Ausführungsform
der Bitfeld- und Logik-Einheit des Systems von 1 veranschaulicht.
-
8 ein Diagramm, das eine
bestimmte Ausführungsform
der Adressenerzeugungseinheit in dem Kern des Systems von 1 veranschaulicht.
-
9 ein Diagramm, das eine
bestimmte Ausführungsform
eines Verfahrens zur Parallelverarbeitung von durch das System von 1 auszuführenden Befehlen.
-
10 ein Diagramm, das einen
Satz abgerufener Rechenbefehle und einen durch das System von 1 durchzuführenden
Ausführungssatz
gruppierter Rechenbefehle veranschaulicht.
-
11 ein Diagramm, das eine
Präfixsende-
und Befehlssende-Operation für
den Kern des Systems von 1 veranschaulicht.
-
12–17 verschiedene
Ausführungsformen
eines Befehlssystems, das mit dem System von 1 verwendet werden kann.
-
18 ein Diagramm, das ein
Befehlssystem veranschaulicht, das statische Gruppierung verwendet.
-
19 ein Diagramm, das verschiedene
Werte für
ein Typenunterfeld in dem Befehlssystem von 18 veranschaulicht.
-
Beschreibung
einer bevorzugten Ausführungsform
-
Gemäß einem
Aspekt der vorliegenden Erfindung wird ein Datenverarbeitungssystem
mit einem Datenverarbeitungskern und einem Befehlssystem bereitgestellt,
wobei das Befehlssystem eine Befehlswurzel mit einem Operationsauswahlfeld
zum Auswählen
einer durch den Datenprozessorkern durchzuführenden Operation aufweist,
und das ein Befehlspräfix
mit einer auswählbaren
Länge aufweist,
um dem Befehlspräfix zu
ermöglichen,
wenigsten ein aus einer Mehrzahl von Feldern auswählbares
Feld unterzubringen.
-
Vorzugsweise
ist eines der auswählbaren
Felder ein bedingtes Ausführungsfeld,
wobei die Befehlswurzel und das Befehlspräfix einen Befehl umfassen,
dessen Durchführung
durch den Datenprozessorkern von dem bedingten Ausführungsfeld
des Befehlspräfix
abhängt.
-
Vorzugsweise
umfasst der Befehl mehr als eine Befehlswurzel.
-
Des
Weiteren umfasst das Datenverarbeitungssystem vorzugsweise 2n Bänke
von 2m Registern, wobei das Befehlspräfix zum
Auswählen
einer der 2n Bänke von Register ein Registerbank-Auswahlfeld
mit einer Breite n aufweist; und die Befehlswurzel zum Auswählen einer
der 2m Register in der aus den Bänken ausgewählten einen,
ein Registerauswahlfeld mit einer Breite m aufweist.
-
Vorzugsweise
ist das Operationsauswahlfeld zum Auswählen einer auf einem Operanden
mit einer ersten Länge
durchzuführenden
Operation ausgelegt; und weist das Befehlspräfix ein Operandenbreiten-Modifikationsfeld
zum Modifizieren der ausgewählten
Operation auf derart, dass sie auf einem Operanden mit einer zweiten
Breite durchzuführen
ist.
-
Vorzugsweise
weist das Befehlspräfix
ein Befehlsgruppenfeld zum Auswählen
einer Mehrzahl von Befehlsstämmen
auf, um eine Gruppe zu umfassen, wobei der Datenprozessorkern gleichzeitig
die Durchführung aller
durch die Gruppe ausgewählter
Operationen initiiert.
-
Vorzugsweise
ist der Datenprozessorkern angeordnet, um Operationen eines ersten
und eines zweiten Typs sequentiell und eine Mehrzahl von Operationen
des ersten Typs parallel auszuführen,
wobei das Operationsauswahlfeld angeordnet ist, um einen des ersten
Typs und des zweiten Typs von durch den Datenprozessorkern auszuführenden
Operationen auszuwählen,
wobei das Operationsauswahlfeld ein Typenunterfeld mit einer Breite
n aufweist, dessen Werte wie folgt zugeteilt sind: ein erster Wert,
wenn der erste Operationstyp sequentiell auszuführen ist, ein zweiter Wert,
wenn der erste Operationstyp parallel auszuführen ist, und ein dritter Wert
aus den restlichen (2n – 2) Werten, wenn der zweite
Operationstyp auszuführen
ist.
-
Vorzugsweise
ist der Datenprozessorkern geeignet, um Operationen des ersten und
des zweiten Typs sequentiell und eine Mehrzahl von Operationen des
ersten Typs parallel auszuführen,
wobei das Operationsauswahlfeld angeordnet ist, um einen des ersten
Typs und des zweiten Typs von durch den Datenprozessorkern auszuführenden
Operationen auszuwählen,
wobei das Operationsauswahlfeld ein Typenunterfeld aufweist, wobei
das Typenunterfeld einen ersten Wert für Operationen des sequentiell
auszuführenden
ersten Typs aufweist; sowie einen zweiten Wert für Operationen des parallel
auszuführenden
ersten Typs und für
wenigstens eine ausgewählte
Operation des sequentiell auszuführenden
zweiten Typs aufweist.
-
Zu
beachten ist, dass die verwendeten bestimmten Begriffe und Ausdrücke und
die in der ausführlichen
Beschreibung und den beigefügten
Zeichnungen dargelegten bestimmten strukturellen und funktionalen Einzelheiten
lediglich veranschaulichenden Zwecken dienen und hiermit nicht beabsichtigt
wird, den Rahmen der Erfindung, wie in den beigefügten Ansprüchen beschrieben,
auf irgendeine Weise zu begrenzen.
-
Bezugnehmend
auf 1 wird eine Ausführungsform
eines Verarbeitungssystems 10 veranschaulicht. Das Verarbeitungssystem 10 umfasst
einen Prozessorkern 12, eine Systemschnittstelleneinheit
("system interface
unit (SIU)") 14,
eine direkte Speicherzugriffseinheit 16, eine Peripherieeinheit 18,
wie einen seriellen Kommunikationsport oder Timer, interne Speichermodule 20 und 22 und
ein externes Speicherschnittstellenmodul 19. Das Verarbeitungssystem 10 kann
ebenfalls als Datenprozessor bezeichnet werden.
-
Der
Prozessorkern 12 umfasst eine Adressenregisterdatei 26,
einen Programmsequenzer 24, Datenregisterdateien 28 und 29,
Adressenarithmetik-Logikeinheiten 30 (auch als Adressenerzeugungseinheiten ("address generation
units (A-GUs)") bezeichnet), Multiplizier-
und Akkumulier ("multiply
and accumulate (MAC)")-Einheiten 32 (allgemein
auch als Datenarithmetik-Logikeinheiten ("data arithmetic logic units (DALUs)") bezeichnet), eine
Bitfeld- und Logik-Einheit 34 und einen optionalen Befehlserweiterungsbeschleuniger 36.
Die Adressen-ALUs 30 sind über einen internen Bus 60 an
die Adressenregisterdatei 26 gekoppelt. Die Multiplizier-
und Akkumulier-Einheiten 32 sind über einen internen Bus 62 an
die Datenregisterdateien 28 und 29 gekoppelt und
die Bitfeldeinheit 34 ist über einen internen Bus 64 an
die Datenregisterdateien 28 und 29 gekoppelt.
Der Programmzuordner 24 ist über einen Befehlsbus 44 an
die Adressen-ALUs 30, die DALUs 32, die Bitfeldeinheit 34 und
den Befehlserweiterungsbeschleuniger 36 gekoppelt.
-
Das
System 10 umfasst ferner einen Programmbus 38,
einen ersten Datenbus 40 einen zweiten Datenbus 42,
einen Peripheriebus 88, einen direkten Speicherzugriffs
(direct memory access (DMA)")-Bus 84 und einen
externen Speicherschnittstellenbus 102. Der Programmbus 38 ist über einen
Bus 46 an den Programmsequenzer 24, über einen
Bus 66 an die SIU 14 und über die Busse 72 bzw. 82 an
die internen Speicher 20 und 22 gekoppelt. Die
Datenbusse 40 und 42 sind über die Busse 48 und 50 an
die Adressenregisterdatei 26, über die Busse 52 und 54 an
die Datenregisterdateien 28 und 29 und über die
Busse 56 und 58 an den Befehlserweiterungsbeschleuniger 36 gekoppelt.
Die Datenbusse 40 und 42 sind über die Busse 74–80 an
die Speicher 20 und 22 gekoppelt.
-
Der
DMA-Bus 84 ist über
einen Bus 90 an die SIU 14, über einen Bus 92 an
die DMA 16, über
einen Bus 94 an die Peripherieeinheit 18 und über die
Busse 95 bzw. 97 an die Speichereinheiten 20 und 22 gekoppelt.
Der Peripheriebus 88 ist über einen Bus 96 an
die SIU 14, über
einen Bus 98 an die DMA 16 und über einen
Bus 100 an die Peripherieeinheit 18 gekoppelt.
Der externe Speicherbus 102 ist an das externe Speicherschnittstellenmodul 19 gekoppelt
und ist in Verbindung mit dem System 10 an einen externen
Speicher (nicht gezeigt) gekoppelt. In der veranschaulichten Ausführungsform
ist der Programmbus 38 128 Bits breit, und die anderen
Busse 40, 42, 84 und 88 sind
32 Bits breit.
-
Bezug
nehmend auf 2 wird eine
bestimmte Ausführungsform
von Registern in dem Kern 12 des Systems 10 offenbart.
Wie veranschaulicht umfasst die Adressenregisterdatei 26 die
Register R0–R7,
die Stapelzeiger ("stack
pointer (SP)"),
N0–N3,
M0–M2,
MCTL, SA0–SA3,
LC0–LC3.
Der Programmsequenzer 24 umfasst den Programmzähler, ein
Zustandsregister und Betriebsmodus- und Zustandsregister. Die Datenregisterdatei 28 umfasst
die Register D0–D7,
und die Datenregisterdatei 29 umfasst die Register D8–D15. In
einer alternativen Ausführungsform
kann zur Kosteneinsparung, wie bei den Ein- oder Zwei-MAC-Konfigurationen,
nur ein einzelnes Register verwendet werden. In anderen Hochleistungsanwendungen
können
auch mehr als zwei Registerdateien verwendet werden.
-
Bezug
nehmend auf 3 wird eine
bestimmte Ausführungsform
mit einem Multiplizierakkumulator 32 in dem Kern 12 veranschaulicht.
In dieser Ausführungsform
ist die einzelne MAC 32 über den Bus 62 an die
Registerdateien 28 und 29 gekoppelt. Die Bitfeldeinheit 34 ist über den
Bus 64 an die Datenregisterdateien 28 und 29 gekoppelt.
Die Datenregisterdateien 28 und 29 sind über ein
Zwischenschifter /Begrenzer-Modul 104 und über die
Busse 52, 54, 106 an die Datenbusse 40 und 42 gekoppelt.
Das Schifter-/Begrenzer-Modul 104 wird
zum Umwandeln von Daten in ein 40-Bit-Format über die Busse 106 in
ein 16-Bit-Format über
die Busse 52 und 54 verwendet.
-
Bezug
nehmend auf 4 wird eine
bestimmte Ausführungsform
mit zwei Multiplizierakkumulatoren 32 in dem Kern 12 veranschaulicht.
Diese Ausführungsform
ist ähnlich
der Ausführungsform
von 3, mit der Ausnahme,
dass zwei MAC-Einheiten 32 anstelle einer MAC 32 bestehen.
Ein zusätzlicher
Bus 62 wird benötigt,
um die Datenregisterdateien 28 und 29 an die zweite
MAC-Einheit 32 zu koppeln. Ferner weisen die Busse 52 und 54 32
Bits anstelle 16 Bits auf, um die zusätzlichen Daten von den zwei
MACs zu übertragen. Auf ähnliche
Weise veranschaulicht 5 eine
Ausführungsform
mit vier MAC-Einheiten 32. Es sollte klar sein, dass die
vorliegende Erfindung nicht durch die vorstehenden beispielhaften
Konfigurationen beschränkt werden
soll und nicht auf die bestimmte Anzahl von MAC-Einheiten 32 oder
die besondere Anordnungen begrenzt ist.
-
Bezug
nehmend auf 6 wird eine
bestimmte Ausführungsform
einer MAC-Einheit 32 veranschaulicht. Die MAC-Einheit 32 umfasst
einen Multiplizierer 110 und einen Addierer 112.
Der Multiplizierer 110 empfängt von den Datenregisterdateien 28 und 29 Dateneingaben
und multipliziert die Datenelemente 111 und 114,
um eine multiplizierte Ausgabe 116 zu erzeugen, die in
den Addierer 112 eingegeben wird. Der Addierer summiert
eine zweite Dateneingabe 120 mit dem Multipliziererergebnis 116,
um ein akkumuliertes Ergebnis 122 zu erzeugen, das zurück an die
Datenregisterdateien 28 und 29 ausgegeben wird.
-
Bezug
nehmend auf 7 wird eine
bestimmte Ausführungsform
der Bitfeld-Logikeinheit 34 offenbart. Die Bitfeld-Logikeinheit 34 umfasst
einen Schifter 124, einen Maskenbitgenerator 126,
eine Logikeinheit 128 und einen Multiplexer 129.
Die Bitfeld- und Logik-Einheit empfängt über den Bus 64 Eingaben
und erzeugt eine Ausgabe, die das Ergebnis von entweder einer Verschiebung,
einer Maskierungsoperation, z. B. Entfernen bestimmter Bits von
den Eingangsdaten und/oder einer logischen Operation, wie eine logische
und, oder, ausschließlich
oder oder Umkehroperation ist. Das Ergebnis der ausgewählten Operation
wird als ein Vierzig-Bit-Ergebnis über den Zweiwegebus 64 zurück an ein
ausgewähltes
Register in den Registerdateien 28 und 29 ausgegeben.
-
Bezug
nehmend auf 8 wird eine
bestimmte Ausführungsform
der Adressenerzeugungseinheit (AGU) veranschaulicht. Die AGU umfasst
die Register M0–M2,
N0–N3,
R0–R7,
SP von der Adressenregisterdatei 26 und das modifizierte
Steuerungsregister ("modified
control register (MCTL)").
Die AGU umfasst ferner die Adressenarithmetik-Logikeinheiten 30.
Die AGU ist über
die Register 26 an den ersten und den zweiten Adressenbus 140, 142 und
an den Programmadressenbus 138 gekoppelt. Wie in 8 veranschaulicht, empfangen
die ALUs 30 Daten von verschiedenen Registern, führen auf
den Eingangsdaten ausgewählte
arithmetische Operationen durch und liefern ein arithmetisches Ergebnis
an ausgewählte
Ausgaberegister. Zum Beispiel kann eine in dem Register R0 gespeicherte
Adresse über
den Bus 140 ausgegeben werden. Danach kann das Register
R0 zu einem Offset von einem ausgewählten Register N0 addiert und
die resultierende Additionsausgabe in dem Register R0 gespeichert
werden.
-
9 veranschaulicht ein Pipeline-Ausführungsverfahren,
das mit dem System 10 von 1 verwendet
wird. Das Pipeline-Verfahren umfasst die Ausführungsschritte des Programmvorabrufens 200,
des Programmabrufens 202, des Zuweisens und Decodierens 204,
des Adressenerzeugens 206 und des Ausführens 208.
-
10 veranschaulicht einen
Befehlsabrufsatz und gruppierte Befehlsausführungssätze. Der Befehlsabrufsatz 210 umfasst
eine Folge von auszuführenden
Befehlen. In der veranschaulichten Ausführungsform umfasst die Befehlsfolge
acht von N bis N + 7 nummerierte Befehle. In einer Hardwareimplementierung kann
diese Befehlsfolge als ein oder mehrere Befehlpuffer implementiert
werden. Die den Abrufsatz 210 umfassenden Befehle sind
zum Programmerstellungszeitpunkt zum Beispiel in die Ausführungssätze 216, 218 und 220 statisch
gruppiert worden. In dem veranschaulichten Beispiel trennt eine
erste Abgrenzung 212 die letzten zwei Befehle #N und #N
+ 1 des ersten Ausführungssatzes 216 von
den vier den zweiten Ausführungssatz 218 umfassenden
Befehlen #N + 2–#N
+ 5, und eine zweite Abgrenzung 214 trennt den zweiten
Ausführungssatz 218 von
den ersten zwei Befehlen #N + 6 und #N + 7 des dritten Ausführungssatzes 220.
Jeder der Befehle in demselben Ausführungssatz wird durch das System
gleichzeitig gesendet bzw. dispatched. Sämtliche der Befehle in einem
bestimmten Ausführungssatz
können
im Wesentlichen zum selben Zeitpunkt gesendet oder ausgegeben werden
und in bestimmten Fällen,
in denen jeder der Befehle in einem Ausführungssatz die gleiche Zykluszählung aufweist,
kann jeder der Befehle am Ende des letzten Ausführungszyklus ausgeschieden
werden.
-
Bezug
nehmend auf 11 wird
eine bestimmte Ausführungsform
eines Bereichs des Systems 10 veranschaulicht. Die Ausführungsform
veranschaulicht eine Präfixsendeeinheit 222,
die Befehle 210, ein Befehlssendemodul 224, verschiedene
Datenarithmetik-Logikeinheiten (DALUs) 32 und Adressenerzeugungseinheiten
(AGUs) 30. Die Präfixsendeeinheit 222,
die Befehle 210 und das Befehlssendemodul 224 sind
in der Lage, den Programmsequenzer 24 zu bilden. Da in
der veranschaulichten Ausführungsform
sechs Ausführungseinheiten
bestehen, würde
die maximale Anzahl von Befehlen, die in einem Ausführungssatz
gruppiert werden können,
sechs sein. In dem veranschaulichten Beispiel sind die ersten zwei
Befehle N und N + 1 Präfixbefehle.
Der Präfixbefehl
wird an die Präfixsendeeinheit 222 weitergeleitet.
Der Präfixbefehl
kann ein, oder wie veranschaulicht, mehr als ein Präfixwort
enthalten. Die Präfixsendeeinheit 222 wandelt
die Präfixbefehle in
Steuerungssignale, wie die Gruppierungserweiterung, bedingte Ausführung und
Schleifenverzweigungs-Steuerungssignale
um, die der Befehlssendeeinheit 224 zugeführt werden.
Die Befehlssendeeinheit 224 gruppiert dann die Befehle
in Ausführungssätze und
führt,
wie durch die Steuerungssignale von der Präfixsendeeinheit 222 angewiesen,
bestimmte Operationen durch. Dann werden die gruppierten Befehle über einen
Routingmechanismus gleichzeitig den entsprechenden Ausführungseinheiten 30, 32, 34 zur
parallelen Decodierung und Ausführung
gesendet. Gleichzeitiges Senden bedeutet, dass die Ausführung von
jedem der gruppierten Befehle während
einem gemeinsamen Taktzyklus initiiert wird. In der veranschaulichten
Ausführungsform
des Systems 10 wird die Ausführung von jedem der gruppierten
Befehle während
einem gemeinsamen Taktzyklus initiiert, a ber einer oder mehrere
der gruppierten Befehle können
während
einem anderen Taktzyklus die Ausführung vollenden.
-
Bezug
nehmend auf 12 wird
eine bestimmte Ausführungsform
eines Befehlssystems 300 veranschaulicht, der mit dem System 10 verwendet
werden kann. Das Befehlssystem 300 umfasst ein Befehlspräfixwort 302 und
ein Befehlswurzelwort 316. Das Befehlspräfix 302 umfasst
ein bedingtes Ausführungsfeld 304 und
andere Felder 312. Die Befehlswurzel 316 umfasst
ein Operationsauswahlfeld 306, ein optionales Operandenfeld 308 und
ein optionales Feld 310 für andere Operationen, wie Gruppieren
mehrerer Befehle ohne Präfix.
Das bedingte Ausführungsfeld 302 enthält Information
darüber,
ob die Befehlswurzel 316 bedingt auszuführen ist. Wenn zum Beispiel
das bedingte Ausführungsfeld
ein erster Wert ist, dann wird die Befehlswurzel unbedingt ausgeführt werden;
wenn es ein zweiter Wert ist, dann wird die Befehlswurzel abhängig von
dem Wert eines vorbestimmten Bits in einem Zustands- oder Datenregister
bedingt ausgeführt
werden. Wo mehr als eine Befehlswurzel besteht, der in einem Ausführungssatz
gruppiert ist, wird das bedingte Ausführungsfeld 304 verwendet,
um zu bestimmen, ob oder ob nicht die gesamte Gruppe von Befehlsstämmen 316 ausgeführt wird.
Jedoch kann in einer alternativen, nicht gezeigten Ausführungsform
das bedingte Ausführungsfeld 304 die
wahlweise Ausführung
oder Nichtausführung
von einem oder mehreren Befehlsstämmen oder Teilsätzen von
diesen, die dem Präfix
folgen, steuern. In einer anderen Ausführungsform entspricht jedes
aus der Mehrzahl bedingter Ausführungsfelder
jedem aus der Mehrzahl von Befehlsstämmen, um individuell die Ausführung jeder
Befehlswurzel in einer Befehlsgruppe zu steuern. In einer bevorzugten
Ausführungsform
bilden das Präfix 302 und
die Be fehlswurzel (-Wurzeln) 316 einen einzelnen integralen
Befehl 314. Wenn der Befehl 314 unbedingt auszuführen ist
und das Präfix 302 nicht
für irgendeine
andere seiner hiernach zu beschreibenden Verwendungen benötigt wird,
kann dieser in einem solchen System aus dem Befehl 314 gelöscht werden.
-
Bezug
nehmend auf 13 wird
eine Ausführungsform
eines Befehlssystems 320 offenbart. Das Befehlssystem 320 umfasst
ein Präfix 322,
eine erste Befehlswurzel 326 und bis zu 2N Befehlsstämme 330.
Das Präfix 322 umfasst
ein Gruppenfeld 324, das N Bits breit ist. Jeder der Befehlsstämme 326–330 umfasst
ein Operationsauswahlfeld 331, 332 und andere
Operationsfelder. Das Gruppenfeld 324 zeigt an, wie viele
unmittelbar dem Präfix 322 folgende
Befehlsstämme 326–330 parallel
auszuführen
sind. Folglich gruppiert das Gruppenfeld 324 in dem Präfix 322 die
Befehlsstämme
ausdrücklich
in Ausführungssätze. In
der bevorzugten Ausführungsform
können
Befehlsstämme
mit einer Vielfalt an Operationsauswahlfeldwerten mit anderen Befehlsstämmen gruppiert
werden, während
es sein kann, dass die Werte anderer aufgrund von Hardware- oder Timing-Einschränkungen
nicht gruppiert werden können.
Wie in 14 veranschaulicht,
werden die Befehlswörter 346 und 348 mit
dem Präfix 342 zur
Bildung einer Befehlsgruppe 358 kombiniert, wohingegen
die Befehlswurzel 350 nicht gruppiert wird und eine einzelne
Befehlsgruppe 360 bildet.
-
Bezug
nehmend auf 15 wird
eine weitere Ausführungsform
eines Befehlssystems veranschaulicht. Das Befehlssystem umfasst
ein Präfix 380 und
eine Befehlswurzel 384. Das Befehlssystem operiert auf einem
Datenoperanden mit variabler Breite 388, wie einem auf
einen oder von einem Speicher übertragenen 32-Bit-
oder 64-Bit-Datenelement. Das Präfix 380 umfasst
ein Operandenlängen-Modifikationsfeld 382,
und die Befehlswurzel 384 umfasst ein Operationsauswahlfeld 386.
Das Präfix 380,
die Befehlswurzel 384 und der Operand 388 bilden
zusammen einen Befehl 390. Das Operandenlängenmodifikationsfeld 382 zeigt
an, ob der Operand 388 eine erste vorbestimmte Länge oder
eine modifizierte zweite Länge
aufweist. Wo beispielsweise das Operationsauswahlfeld 386 anzeigt,
dass die Befehlswurzel 384 eine Schiebeoperation für ein 16-Bit-Wort ist
und wo das Operandenlängen-Modifikationsfeld 382 frei
ist, weist der Operand eine Länge
von 16 Bits auf. Wenn jedoch das Operandenlängen-Modifikationsfeld 382 eingestellt
wird, dann wird die Operation eine Schiebeoperation für ein 32-Bit-Wort, und der Operand
weist eine Länge
von 32 Bits auf. Durch Codieren des Längenmodifikationsfeldes in
das Präfixwort 380 wird
die Anzahl der Operationen, die für die Ausführung ausgewählt werden
können,
erhöht,
ohne jedoch dem Operationsauswahlfeld 386 in der Befehlswurzel 384 irgendeine
zusätzliche
Länge hinzufügen zu müssen, wodurch
unter bestimmten Umständen
die Codegröße reduziert
wird.
-
Bezug
nehmend auf 16 wird
eine Ausführungsform
eines Befehlssystems 400 offenbart. Das Befehlssystem 400 umfasst
ein Präfix 402 und
eine Befehlswurzel 408. Das Präfix 402 umfasst ein
oder mehrere Registerbank-Auswahlfelder,
wie ein erstes Registerbank-Auswahlfeld 404 und ein zweites
Registerbank-Auswahlfeld 406. Das erste Registerbank-Auswahlfeld 404 und
das zweite Registerbank-Auswahlfeld 406 sind N-Bits
lang. Das Befehlswort 408 umfasst die M-Bit-Registerauswahlfelder 410 und 412.
Das erste Registerbank-Auswahlfeld 404 kann verwendet werden,
um eine bestimmte Bank an Registern anzuzeigen, die für eine erste
Ausführungseinheit,
wie eine erste DALU-Einheit 32, zu verwenden ist. Das zweite
Registerbank-Auswahlfeld 406 kann verwendet werden, um
eine bestimmte Bank an Registern anzuzeigen, die für eine zweite Ausführungseinheit,
wie eine zweite DALU-Einheit 32, zu verwenden ist. In einer
bestimmten Ausführungsform ist
N = 1 und M = 3. In dieser Ausführungsform
existieren zwei verschiedene Registerbänke, wie die Registerdateien 28 und 29 des
Systems 10, und jede der Registerbänke weist acht Register auf.
Anstatt zusätzlichen Platz
in dem Befehlswort 408 zu verbrauchen, kann auf diese Weise
unter Verwendung der Registerbank-Auswahlfelder 404–406 des
Präfixwortes 402 auf
die oberen Bankregister, wie die Register R8–R15 der Registerdatei 29 wahlweise
zugegriffen werden, wodurch unter bestimmten Bedingungen Befehlswort-Speicherplatz aufgespart
wird.
-
Bezug
nehmend auf 17 wird
eine Ausführungsform
eines Befehlssystems 420 mit Präfixwörtern mit variablen Längen gezeigt.
Das Befehlssystem 420 umfasst ein erstes Präfixwort 422,
ein zweites Präfixwort 424 und
ein N-tes Präfixwort 426.
Jedes Präfixwort 422–426 umfasst
ein entsprechendes Präfixlängenfeld 428–432.
Die Präfixlängenfelder 428–432 bilden
eine Kette, wobei jedes anzeigt, ob das Präfixwort abgeschlossen ist oder
ob ein zusätzliches
Präfixwort
besteht. Auf diese Weise können
viele Präfixwörter in
einer Kette mit variabler Länge
untereinander verbunden werden. Jedoch enthält in der bevorzugten Ausführungsform
das erste Präfixwort 422 das
Längenfeld
nicht, da das erste und das zweite Präfixwort andere Felder aufweisen,
die indirekt anzeigen, ob das Präfix
ein oder zwei Wörter
lang ist.
-
Eine
bestimmte Ausführungsform
eines Befehlssystems, das einen codierten Präfixbefehl verwendet, der viele
der früher
veranschaulichten Präfixfelder
kombiniert, wird nachstehend offenbart. In dieser Ausführungsform
bestehen ein Einwortpräfix-Codierungsformat
und ein Zweiwortpräfix-Codierungsformat.
-
In
dem Einwortpräfix-Codierungsformat
weist das Einwortpräfix
folgende binäre
Anordnung auf:
-
-
-
In
der Zweiwortform weist das Präfix
folgendes Format auf:
-
-
Im
Fall von Zwei-Operanden-DALU-Einheits-Befehlen wird nur -EE verwendet.
-
Im
Fall von Ein-Operanden-DALU-Einheits-Befehlen wird nur --E verwendet.
-
-
-
Gemäß einer
anderen Ausführungsform
wird nun ein Verfahren des Gruppierens von Befehlen ohne Verwendung
eines Präfixbefehls
offenbart. Bezug nehmend auf 18 wird
ein Befehl ohne Präfixwort
veranschaulicht, der zum Durchführen einer
statischen Gruppierung verwendet werden kann. Der Befehl 450 umfasst
ein oder mehrere Befehlswörter,
wie ein erstes Befehlswort 452 und ein zweites Befehlswort 454.
Das erste Befehlswort 452 umfasst ein auch als Opcode bezeichnetes
Operationsauswahlfeld 456, das zum Auswählen einer Mehrzahl verschiedener
Operationen, die auf einem System, wie dem System 10, durchgeführt werden
können,
verwendet werden kann. Das Operationsauswahlfeld 456 umfasst
ein Typenunterfeld 458, das eine Breite von n Bits aufweist.
In einer bestimmten Ausführungsform
ist n gleich zwei. Während
als Beispiel ein Zwei-Befehlswort-Befehl veranschaulicht worden
ist, sind das Typenunterfeld in dem Operationsauswahlfeld und die
Verwendung des Typenunterfeldes, wie hierin beschrieben, auf Einzelwort-
und auf Mehrwort-Befehle vieler Typen anwendbar.
-
Bezug
nehmend auf 19 wird
ein Diagramm vorgestellt, das veranschaulicht, wie verschiedene
Typen von Befehlen, die durch das Operationsauswahlfeld in einem
Befehl codiert werden, auf dem Wert in dem Typenunterfeld abgebildet
werden können.
Das Typenunterfeld wird im Allgemeinen dazu verwendet, Gruppierungs-
und Mehrwort-Befehlsinformation für einen Ausführungssatz
mit mehreren Befehlen und/oder mehreren Befehlswörtern bereitzustellen. Die
Befehle, die ausgeführt
werden können,
werden auf einer hohen Stufe in Typ I-Befehle und Typ II-Befehle
geteilt. Typ I-Befehle
können
entweder auf eine sequentielle oder eine parallele Weise ausgeführt werden,
d. h. die Typ I-Befehle können
für die
Ausführung
mit anderen Befehlen in einem Ausführungssatz gruppiert werden.
Typ II-Befehle können
sequentiell ausgeführt
werden, sind aber begrenzt für
eine parallele Ausführung
fähig oder
sind möglicherweise
gar nicht gruppierbar. Einige Typ II-Befehle 510 können nicht
mit irgendeinem anderen Befehl gruppiert werden. Ein Beispiel eines
solchen, nicht gruppierbaren Befehls ist der Schlummer- bzw. Doze-Befehl,
der den Datenprozessor 10 in einen Niedrigleistungs-Standbymodus
versetzt.
-
Wie
in 19 gezeigt, wird
für Typ
I-Befehle, die sequentiell auszuführen sind, das Typenunterfeld
auf einen ersten Wert, wie 01 für
das Segment 502 in der veranschaulichten Ausführungsform,
eingestellt. Für
Typ I-Befehle, die mit anderen Einwortbefehlen parallel auszuführen sind,
wird das Typenunterfeld auf einen zweiten Wert, wie 00 für das Segment 504 in
dem Diagramm, eingestellt. Wenigstens einem Typ II-Befehl wird ein dritter
Wert, wie 10 für
das Segment 510, oder optional ein vierter Wert, wie 11
für das
Segment 512, zugeteilt. Die Verwendung des Typenunterfeldes
mit zwei Bits, wie für
das Befehlsgruppieren gezeigt, führt
zu einer Reduzierung in dem für
die Auswahl von Befehlen verwendbaren Opcode-Platz. Wenn zum Beispiel
in einem früheren
System ein einziges Bit speziell für Gruppierungsinformation zugeordnet
war, würde
der Opcode-Platz nachteiligerweise um fünfzig Prozent (50%) reduziert
werden. Mit einem System von zwei Bits würde der Opcode-Platz um fünfundzwanzig
Prozent (25%) reduziert werden.
-
Um
jedoch in der veranschaulichten Ausführungsform nützlichen
Opcode-Platz aufzusparen, verwenden bestimmte Mehrwortbefehle einen
Bereich des Opcode-Platzes für
den zweiten Wert, d. h. 00, des Typenunterfeldes wieder. Das Segment 506 für Mehrwortbefehle,
die parallel mit wenigstens einem anderen Befehl auszuführen sind
und das Segment 508 für
Mehrwortbefehle, die sequentiell auszuführen sind, verwenden einen
Bereich des Opcode-Quadranten, der die pa rallelen Typ I-Einwortbefehle
anteilig nutzt. Ein Verfahren der Implementierung dieser Wiederverwendungstechnik
ist, Kombinationen von Befehlen zu verwenden, die sonst nicht gestattet
wären,
wie das Kombinieren eines gruppierbaren Typ I-Befehls mit einem
nicht gruppierbaren Typ II-Befehl. Durch Verwendung von ansonsten
widersprüchlichen
Befehlskombinationen können
Mehrwortfolgen codiert werden. Auf diese Weise wird wertvoller Opcode-Platz
aufgespart, was zu einem verbesserten Befehlssystem führt.
-
Ein
Beispiel der vorstehend im Allgemeinen beschriebenen verschiedenen
Typen von Befehlen wird nachstehend dargestellt. Die tatsächlichen
Verbundbefehle sind in Klammern.
-
Sequentieller
Typ I 502: Erhöhe
Register D0 (erhöhe
d0) Paralleler Typ I 504: Erhöhe Register d0 und bewege Wort
an der Adresse des Registers r0 zu Register d1 (erhöhe d0, bewege.w
(r0), d1) (zwei gepaarte Einwortbefehle).
-
Mehrwort 506:
Bewege Adresse in dem Register nach Addieren des Offsets zu dem
Register d3 (erhöhe
d0, bewege.b (R3 + 1000), d3) (ein Einwort- und ein Mehrwort-Befehl).
-
Sequentieller
Mehrwort 508: Addiere 1000 zu d0 und speichere in d1 (addiere
#1000, d0, d1).
-
Typ
II 510 oder 512: Pausiere in der Ausführung (Schlummern).
-
Während es
möglich
ist, dass die Typ II-Befehle in den Segmenten 510 und 512 der
gleiche Typ sind, könnten
in einer bestimmten Ausführungsform
die Befehle derart geteilt werden, dass die Befehle ohne zugelassene
Gruppierung in das Segment 510 gestellt werden und die
Befehle mit be grenzt zugelassener Gruppierung in das Segment 512 gestellt
werden.
-
Mit
Befehlen, die das vorstehend beschriebene Typenunterfeld aufweisen,
können
allgemeine Regeln zum Gruppieren von Befehlen verwendet werden.
Beispiele solcher Regeln sind:
- 1. Befehlswörter mit
einem Typenunterfeld von 00 werden von zusätzlichen zu gruppierenden Befehlswörtern gefolgt.
- 2. Befehlswörter
mit einem anderen Typenunterfeld als 00 sind das letzte Wort in
dem Befehl.
- 3. Eine 10 in dem letzten Befehlswort, wobei sich wenigstens
zwei Befehlswörter
in dem Ausführungssatz befinden,
zeigt an, dass wenigstens ein Mehrwortbefehl auszuführen ist.
- 4. Ein Bit nach dem Typenunterfeld in dem zweiten Wort in einer
Befehlsgruppe kann dazu verwendet werden, Zweiwortbefehle mit Paarung
von Dreiwortbefehlen zu unterscheiden. In einer Ausführungsform
ist das unterscheidende Bit das dem Typenunterfeld in dem zweiten
Befehlswort einer Gruppe von Befehlswörtern unmittelbar folgende
Bit. Die Verwendung zusätzlicher
Bits in denselben oder anderen Befehlswörtern kann andere Befehle,
wie Vierwortbefehle von Dreiwortbefehlen sowie gepaarte Ein- oder
Zweiwortbefehle, unterscheiden.
-
In
einer bestimmten veranschaulichenden Ausführungsform bestehen 3 Möglichkeiten,
Gruppierungsinformation für
Gruppierungsbefehle in Ausführungssätze zu befördern:
- – Verwendung
der 2–3
am meisten signifikanten Bits in dem Befehl -- kein Präfix wird
verwendet
- – Verwendung
eines 1-Wort-Präfix
für einen
Ausführungssatz
- – Verwendung
eines 2-Wort-Präfix
für einen
Ausführungssatz
-
Der
folgende Gruppierungsalgorithmus wählt aus, welche Option zu verwenden
ist (wenn die zu gruppierenden Befehle vorgegeben sind), um die
Befehlscodegröße zu reduzieren.
Der Algorithmus ist:
- – werden die Register d8–d15 in
dem Ausführungssatz
verwendet?
- – Ja – > verwende 2-Wort-Präfix
- – Nein – > fahre fort
- – wird
der Satz bedingt ausgeführt
(Ifc), oder sollte er Schleifeninformation befördern?
- – Ja – > verwende 1-Wort-Präfix
- – Nein – > fahre fort
- – weist
der Ausführungssatz
lediglich einen Befehl auf?
- – Ja – > kein Präfix erforderlich
- – Nein – > fahre fort
- – sind
die Befehle in dem Satz nach ihrem Typ gruppierbar?
- – Ja – > kein Präfix erforderlich – codiere
Gruppierung unter Verwendung nur der 2 am meisten signifikanten Bits
- – Nein – > verwende 1-Wort-Präfix
-
Nachstehend
wird in tabellarischer Form eine weitere Beschreibung einer statischen
Gruppierungsausführungform
erörtert.
-
Codieren
eines Einwortbefehlstyps
2 am meisten signifikante Bits von
dem
-
Zweiwort-
oder Dreiwort-Identifizierung
(L – letzter Befehl in dem Ausführungssatz)
-
-
Bestimmte
zusätzliche
Aspekte der vorliegenden Offenbarung werden nachstehend zusammengefasst.
-
In
einem zum Durchführen
ausgewählter
Operationen geeigneten Datenprozessor umfasst ein Befehlssystem
ein Präfixwort
mit einem bedingten Ausführungsfeld
zum Auswählen
einer Bedingung, unter der der Datenprozessor eine auszuwählende Operation
durchführen
wird und ein Befehlswort mit einem Operationsauswahlfeld zum Auswählen der
durch den Datenprozessor durchzuführenden Operation. Es kann
sein, dass das bedingte Ausführungsfeld
eine Bedingung auswählt,
unter der der Datenprozessor die ausgewählte Operation nicht durchführen wird.
In einer Ausführungsform
umfassen das Präfixwort
und das Befehlswort einen Befehl oder einen Ausführungsschritt, dessen Durchführung durch
den Datenprozessor von dem bedingten Ausführungsfeld des Präfixwortes
abhängt.
Der Befehl kann mehr als ein Befehlswort enthalten. In einer anderen
Ausführungsform
befindet sich das Präfix
optional in dem Befehl.
-
Ein
System zur Befehlserteilung an einen zur Durchführung von ausgewählten Operationen
geeigneten Datenprozes sor, wobei das System ein Präfixwort
mit einem bedingten Ausführungsfeld
zum Auswählen einer
Bedingung umfasst, unter der der Datenprozessor eine auszuwählende Operation
durchführen
wird, und ein Befehlswort mit einem Operationsauswahlfeld zum Auswählen der
durch den Datenprozessor durchzuführenden Operation umfasst.
Es ist möglich,
dass das bedingte Ausführungsfeld
eine Bedingung auswählt,
unter der der Datenprozessor die ausgewählte Operation nicht durchführen wird.
In einer Ausführungsform
umfassen das Präfixwort
und das Befehlswort einen Befehl, dessen Durchführung durch den Datenprozessor
von dem bedingten Ausführungsfeld
des Präfixwortes
abhängt.
Der Befehl kann mehr als ein Befehlswort enthalten. Ferner kann
sich das Präfix
optional in dem Befehl befinden.
-
In
einer anderen Ausführungsform
betrifft die vorliegende Offenbarung ein System zur Befehlserteilung
an einen zur Durchführung
von ausgewählten
Operationen geeigneten Datenprozessor, wobei das System ein Präfixwort
mit einem bedingten Ausführungsfeld
zum Auswählen
einer Bedingung, unter der der Datenprozessor eine auszuwählende Operation
durchführen
wird, und ein Befehlswort mit einem Operationsauswahlfeld zum Auswählen der
durch den Datenprozessor durchzuführenden Operation umfasst.
Es ist möglich, dass
das bedingte Ausführungsfeld
eine Bedingung auswählt,
unter der der Datenprozessor die ausgewählte Operation nicht durchführen wird.
-
Das
Präfixwort
und das Befehlswort können
einen Befehl umfassen, dessen Durchführung durch den Datenprozessor
von dem bedingten Ausführungsfeld
des Präfixwortes
abhängt.
Der Befehl kann mehr als ein Befehlswort enthalten.
-
Eine
andere Ausführungsform
betrifft ein Befehlssystem in einem zum Durchführen von Operationen auf Operanden
mit einer ersten und einer zweiten Länge geeigneten Datenprozessor.
Das Befehlssystem umfasst ein Präfixwort
mit einem Operandenlängen-Modifikationsfeld
zum Modifizieren einer auszuwählenden Operation
derart, dass sie auf einem Operanden mit der zweiten Länge durchgeführt wird,
und ein Befehlswort mit einem Operationsauswahlfeld zum Auswählen der
auf einem Operanden mit der ersten Länge durchzuführenden
Operation. In einer Ausführungsform
weisen die Operanden eine Mehrzahl von Längen auf, wählt das Operationsauswahlfeld
eine auf einem Operanden mit einer vorbestimmten aus der Mehrzahl
von Längen durchzuführende Operation
aus, und modifiziert das Operandenlängen-Modifikationsfeld die
Operation derart, dass sie auf einem Operanden mit einer anderen
aus der Mehrzahl von Längen
durchgeführt
wird.
-
In
einem Datenprozessor umfasst ein Befehlssystem ein Präfixwort
mit einem Befehlsgruppenfeld zum Auswählen einer Länge einer
Befehlsgruppe und eine Mehrzahl von Befehlswörtern, wobei jedes Befehlswort ein
Operationsauswahlfeld zum Auswählen
einer durch den Datenprozessor durchzuführenden Operation aufweist.
Der Datenprozessor initiiert gleichzeitig die Durchführung aller
durch Befehlswörter
ausgewählten,
die Gruppe umfassenden Operationen. Das Präfixwort und das Befehlswort
können
einen Befehl bilden. In einer Ausführungsform geht das Präfixwort
jedem Befehlswort in dem Befehl voran. In einer anderen Ausführungsform
hat das Befehlsgruppenfeld die Länge
n und kann 2n aus der Mehrzahl von Befehlswörtern gruppieren. Es bestehen
ferner bestimmte Befehlswörter,
die nicht mit irgendwelchen aus der Mehrzahl von Befehlswörtern gruppiert
werden können.
-
Ein
System zur Befehlserteilung an einen Datenprozessor wird bereitgestellt.
Das System umfasst eine Befehlswurzel und ein Befehlspräfix. Die
Befehlswurzel weist ein Operationsauswahlfeld zum Auswählen einer
durch den Datenprozessor durchzuführenden Operation auf. Das
Befehlspräfix
weist ein Feld auf, das aus wenigstens einem der Folgenden ausgewählt wurde:
ein bedingtes Ausführungsfeld
zum Auswählen
einer Bedingung, unter der der Datenprozessor die ausgewählte Operation
durchführen
wird, ein Operandenlängen-Modifikationsfeld
zum Modifizieren der ausgewählten
Operation derart, dass sie auf einem Operanden mit einer unterschiedlichen
Länge durchgeführt wird,
ein Befehlsgruppenfeld zum Auswählen
einer Wortlänge
einer Befehlsgruppe, die die Befehlswurzel umfasst und ein Präfixlängen-Auswahlfeld
zum Auswählen
einer Wortlänge
des Befehlspräfix.
Der Befehl kann mehr als eine Befehlswurzel enthalten. Typischerweise
geht das Präfix
wenigstens einem der Befehlsstämme
voran.
-
Ein
System zur Befehlserteilung an einen Datenprozessor mit einer Mehrzahl
von Registern. Das System umfasst eine Befehlswurzel mit einem Registerauswahlfeld
mit einer Breite m zum Auswählen
von einem der 2m Register in dem Datenprozessor;
und ein Befehlspräfix
mit einem Registerauswahl-Erweiterungsfeld mit einer Breite n zum
Erweitern der Breite des Registerauswahlfeldes, um eines der 2m+n Register in dem Datenprozessor auszuwählen.
-
Somit
sind hierin eine Ausführungsform
einschließlich
wenigstens einer bevorzugten Ausführungsform eines bzw. einer
verbesserten Verfahrens und Vorrichtung zum Gruppieren von Datenprozessorbefehlen
und Ausführungsformen
von Befehlssystemen beschrieben worden. Fachleuten in der Technik
wird klar sein, dass der offenbarte Gegenstand auf zahlrei che Weise
modifiziert werden kann und viele andere Ausführungsformen als die vorstehend
speziell dargelegte bevorzugte Form annehmen kann. Zum Beispiel
werden die spezifischen Elemente und die Konfiguration des Datenprozessors 10 lediglich
als Beispiel beschrieben. Viele andere alternative Systeme können verwendet
werden. Zum Beispiel sind die DMA 16, die Speicher 20 und 22 und bestimmten
Ausführungseinheiten
in dem Kern 12 optional.