Verfahren zum codieren/decodieren von VLIW cached Befehlen
Die Erfindung betrifft ein Verfahren zur Ansteuerung von Funk- tionsein eiten in einem Prozessor, wobei in einer Konfigurationsphase eine aus einer Übersetzung eines Programmcodes stammende Folge von Primärinstruktionsworten eine Fraktionierung in eine Folge von Instruktionswortteile erfährt und in einem Programmablauf nachfolgend . den Prozessor ansteuernde Instruktions- worte in der vollen Instruktionswortbreite als VLIW (Very Long Instruction Word) erzeugt und in einem Instruktionswortspeicher (Cache) zwischengespeichert werden.
Hierzu sind verschiedene Lösungen, die eine jeweils vorteilhaf- te Variante zur Synthese eines VLIW (Very Long Instruction Word) aus den im Programmablauf auftretenden Instruktionsworte behandeln, bekannt .
Ihnen ist gemeinsam, dass die Primarinstruktionsworte, welche aus einer Übersetzung des Programmcodes resultieren, als Folge fraktionierter Instruktionswortteile generiert werden.
So erfolgt der Aufbau eines aktuellen VLIW aus einer begrenzten Anzahl von Funktionsinstruktionsworten (FIW) , wobei jedes die- ser FIW genau eine Funktionseinheit (FU) des Prozessors ansteuert .
Die Deutsche Patentschrift DE 198 59 389 Cl charakterisiert den Stand der Technik für Verfahren der eingangs genannten Art.
Bei dieser Lösung erfolgt die Fraktionierung der im Programm vorliegender Primarinstruktionsworte in einzelnen Programmwor-
te, welche auch vorteilhaft als TVLIW (Tagged Very Long Instruction Word) -Container bezeichnet werden.
TVLIW-Container deshalb, weil dem einzelnen Programmwort neben einem Informationsteil, der vorwiegend durch ein FIW (Funkti- onsinstruktionswort) repräsentiert wird, auch die Angaben über die Schreib- und Lesezeilennummer eines einzusetzenden Instruktionswortspeichers, zugehörig ist. Letztere Angaben stellen eine Kennung (Tag) zum FIW dar.
Außerdem gehören zum Programmwort auch die Angaben, wie mit dem jeweiligen Inhalt des so gekennzeichneten Instruktionswortspeichers zu verfahren ist, und werden somit durch eine Operationscode (Opcode) repräsentiert.
Bei dem o.g. Verfahren werden in günstiger Weise die Datenbreite des im Prozessor zu verarbeitenden Programmmes verringert, um den Hardwareaufwand und damit die Kosten für die Realisierung des jeweiligen Prozessors niedrig zu halten.
Weiterhin sind verschiedene Lösungen bekannt, die eine jeweils vorteilhafte Variante zur Synthese eines VLIW (Very Long Instruction Word) aus den im Programmablauf auftretenden FIW behandeln.
So ist durch die Druckschrift 102 03 541.5 zur deutschen Patent-Anmeldung der weiterführende Stand der Technik umrissen.
Bei diesem wird die in einer Konfigurationsphase durchgeführte Fraktionierung der Primarinstruktionsworte durch eine anschließende verfahrensmäßige maschinelle Ähnlichkeits-Analyse erweitert, in deren Folge, die mit bestimmten Ähnlichkeitsmerkmalen (periodische Eigenschaft) ausgewählten und somit mehrfach verwendbaren Instruktionswortteile zusammengefasst werden.
Diese Folge von Instruktionswortteilen wird mit einem diesbezüglich gemeinsamen Operationscode und einer für alle Glieder der Folge gültige Kennzeichnung ihrer periodische Eigenschaft,
die mit der Anzahl der Glieder ergänzt wird, in der anschließenden Verarbeitungsphase zur Erzeugung des VLIW verwendet.
Auf diese Weise wird bei diesem speziellen Komprimierungs- vorgang in der Konfigurationsphase die Auswahl und Kennzeichnung der Instruktionswortteile vorgenommen, die in der Ausführungsphase zur Zwischenspeieherung vorgesehen sind und damit bei der Wiederverwendung gleicher Instruktionswortteile Prozessor-Performance sparen.
Bei der zunehmenden Komplexität der Prozessoren und den Anforderungen an die Verarbeitungsgeschwindigkeit wird ersichtlich, dass eine höhere Kompression bei der Codierung der Instruktionswortteile und deren Decodierung zur Erzeugung des VLIW (Very Long Instruction Word) erreicht werden muss, da eine anderweitige Erhöhung der Verarbeitungsgeschwindigkeit, z.B. durch eine Erhöhung der Arbeitstaktfrequenzen, an physikalische Grenzen stößt.
Aufgabe der Erfindung ist es, in der Ausführungsphase eine Steigerung der Prozessorperformance durch Erhöhung des Komprimierungsgrad der Primarinstruktionsworte in ihre fraktionierten Instruktionswortteilen unabhängig von speziellen Merkmalen (Pe- riodizität) der FIW zu erreichen.
Die erfindungsgemäße Aufgabenstellung wird dadurch gelöst, dass in einem ersten Schritt die Fraktionierung eines Primärinstruk- tionswortes in der Konfigurationsphase, in die Folge einer bestimmten Anzahl von Instruktionswortteilen, die in der Ausfüh- rungsphase für den Aufbau eines jeweiligen VLIW verwendet werden, erfolgt.
Dabei wird einem jeweiligen ersten und zweiten FIW (Funktions- Instruktionswortteil) ein ihm zugehöriger erster oder zweiter Operationscode vorangestellt. Dieser bestimmt damit, wie in der Ausführungsphase mit dem durch das jeweilige FIW belegten Speicherplatz des Cache umgegangen wird.
Weiterhin anschließt sich dem jeweiligen ersten oder zweiten Operationscode eine zugehörige erste oder zweite Kennung an, die die Information darstellt, welche erste oder zweite FU das jeweilige FIW ansteuert.
Es werden jeweils der erste bzw. der zweite Operationscode und ihre zugehörige erste bzw. zweite Kennung mit den jeweiligen ersten bzw. zweiten FIW zu dem ersten bzw. zweiten TVLIW Container zusammengefasst .
Hierbei repräsentieren diese in ihrer Gesamtheit das TVLIW.
In einem zweiten Schritt wird in der Konfigurationsphase das jeweils vorliegenden TVLIW in ein HVLIW gewandelt. In dem HVLIW wird ein General Header vorangestellt.
Bei der Wandlung des TVLIW in das HVLIW gilt, dass dieses mit seiner enthaltenen codeverdichteten General Header Struktur alle Funktionen des TVLIW ersetzt.
In einer Variante wird die erfindungsgemäße Aufgabenstellung dadurch gelöst, dass eine Betriebsart "Command Code" des HVLIW und seines zugehörigen General Headers realisiert wird. In diesem General Header ist die Information codiert abgelegt, die alle Kombinationen angibt, welches erste und zweite FIW (Instruktionswortteil) , nach Decodierung, in der Ausführungsphase, zur Ansteuerung einer jeweiligen ersten und/oder zweiten FU (Funktionseinheit) des Prozessors vorgesehen ist.
Weiterhin ist im General Header abgelegt, welches erste und/oder zweite FIW Speicherplätze des Cache belegt und ob bzw. welche Operation mit dem jeweiligen Speicherinhalt beim Aufbau des VLIW in der Ausführungsphase im Cache ausgeführt werden sollen. Diese Lösung zielt darauf ab, dass in der Betriebsart "Command Code" des HVLIW durch eine Zusammenfassung von mehreren Fiw und einer dazu gehörigen Zusammenfassung der Angaben, welches der FU von welchem FIW anzusteuern ist, sowie welche FIW beim Auf-
bau des VLIW bestimmte Speicherplätze des Cache belegt und welche Operation dann mit deren Speieherinhalt bezüglich anderer Speicherplätze des Cache ausgeführt werden, die angestrebte Kompression der Instruktionen realisiert wird.
Auf diese Weise werden Speicherplatz gespart und Prozessorperformance geschont.
Es wird eine vorteilhafte Ausprägung der Variante der erfin- dungsgemäßen Lösung der Aufgabenstellung dadurch erreicht, dass in dem erstem Teil des General Headers ein Header Mode, welcher eine Information über die Betriebsart "Command Code" des HVLIW und des General Headers enthält, bereitgestellt wird.
Diesem anschließt sich ein zweiter Teil an, in dem die jeweilige meist gebrauchten Kombination, welche der jeweiligen FU durch welches erstes oder zweites FIW angesteuert wird, enthalten ist.
Diese meist gebrauchte Kombination ist als codierter Tabellenwert im Wörterbuch abgelegt.
Es wird ein dritter Teil als CE-Information (Cache-ExtraInformation) angeschlossen, in dem ein Zeiger, der auf eine vorgesehene Stelle des Wörterbuches verweist, enthalten ist.
Als letzter Teil des General Headers ist die Zusatzinformation vorgesehen.
In unmittelbarer Reihenfolge an den General Header schließen sich die für den Aufbau des VLIW notwendigen ersten und zweiten FIW an.
Diese erfindungsgemäße Lösung hebt darauf ab, für die Betriebs- art "Command Mode" einen strukturierten General Header bereitzustellen, der sehr flexibel ist und alle Arten von "Command Code" unterstützt. Dieser soll auch für Weiterentwicklungen und update seine Gültigkeit behalten und seine Kompressionsmöglich-
keiten absichern.
Eine weitere Variante der erfindungsgemäßen Lösung der Aufgabenstellung dadurch erreicht, dass eine Betriebsart "Referenz- Instruktion" des General Headers realisiert wird, bei der generell die zum Aufbau des VLIW in der Ausführungsphase vorgesehenen FIW im Cache zwischengespeichert werden.
Hierbei trägt der zugehörige Header Mode eine entsprechend de- codierbare Kennung dieser Betriebsart "Referenz-Instruktion" . Es wird die Betriebsart "Referenz-Instruktion" durch eine spezielles HVLIW eingeleitet.
In diesem ist eine Adressangabe enthalten, mit der auf eine Re- ferenz-Instruktion verwiesen wird.
Weiterhin ist im nachfolgenden HVLIW, welches ebenfalls die Kennung der Betriebsart "Referenz-Instruktion" trägt, eine relative Adresse bezüglich der durch den Verweis vorliegenden Ad- resse enthalten.
Daran wird eine Maske angefügt, welche die von der Ansteuerung auszuschließenden FU repräsentiert.
Bei dieser günstigen Variante der erfindungsgemäßen Lösung werden durch die Realisierung der speziellen Betriebsart "Referenz-Instruktion" von HVLIW die großen Instruktionen für den Prozessor-Kernel vermieden, die z.B. auch im Header Mode "Command Code" groß ausfallen, weil sie für eine Vielzahl von FU (Funktionseinheiten) anwendbar sein müssen.
Dadurch sind auch jeweils Start- und Beendigungs-Phasen der Instruktionen zur Ansteuerung der Grundbestandteile der einzelnen FU notwendig.
Aufgrund vieler gleicher FIW, die zur Ansteuerung der FU in den Instruktionen z.B. in Digitalen Signal-Prozessoren (DSP) auftreten, ist aus der Kenntnis der Instruktionen für den Prozes-
sor-Kernel ersichtlich, dass die jeweiligen Start- und Beendigungs-Phasen der Instruktionen für die jeweiligen FU redundant sind.
Diese Redundanz wird durch die erfindungsgemäße Lösung vermieden, in dem mittels des HVLIW, welches die Betriebsart "Referenz-Instruktion" einleitet, eine Adressangabe als einer Referenz vorgegeben wird.
Im nachfolgenden HVLIW der Betriebsart "Referenz-Instruktion" wird in seinem General Header nur eine relative Adresseangabe mitgeteilt, mittels der das erforderliche FIW in der Ausführungsphase decodiert werden kann.
Ebenfalls in diesem HVLIW wird, an den General Header anschließend, die erste und/oder zweite FU (Funktionseinheit) , für die diese bestimmte Instruktion nicht verwendet werden soll, codiert angegeben.
Diese Angabe kann als Maske, welche die Ansteuerung von FU ausschließen, wesentlich kürzer gestaltet werden als eine Angabe aller ansteuernden FIW.
Somit brauchen bei HVLIW in der Betriebsart "Referenz- Instruktion" die jeweiligen Start- und Beendigungs-Phasen des für die Ansteuerung der vorgesehenen FU bestimmten FIW im General-Header nur einmal angegeben werden.
Auf diese Weise wird Speicherplatz gespart
Da mit dieser Kompression es nicht notwendig ist, die jeweiligen vollständigen Start- und Beendigungs-Phasen der Instruktionen beim VLIW Aufbau zu verarbeiten, wird folglich ebenfalls die Prozessorperformance in der Ausführungsphase auch weniger belastet.
Eine spezielle Variante der erfindungsgemäßen Lösung der Aufgabenstellung, welche die Betriebsart des General Headers "Refe-
renz-Instruktion" lokal günstig realisiert, wird dadurch erreicht, dass das spezielle HVLIW, welches die Betriebsart "Referenz-Instruktion" einleitet, als enthaltene Adressangabe auf das vorhergehende HVLIW verweist.
Eine weitere spezielle Variante der erfindungsgemäßen Lösung der Aufgabenstellung, welche die Betriebsart des General Headers "Referenz-Instruktion" global günstig realisiert, wird dadurch erreicht, dass das spezielle HVLIW, welches die Betriebs- art "Referenz-Instruktion" einleitet, als enthaltene Adressangabe auf eine allgemeine Adresse verweist.
Eine vorteilhafte Erweiterung zur Lösung der erfindungsgemäßen Aufgabenstellung speziell für die Betriebsart "Command Code" des HVLIW wird dadurch erreicht, dass in der Ausführungsphase das HVLIW in einem Decoderl decodiert wird, welcher mit einem Header-Decoder, einer CMDT (Command-Code-Decompression- Tabelle) , einem Cache und einer Cache-Miss-Reparatur-Logik ausgestattet ist, wobei das HVLIW zwischengespeichert vorliegt.
Der Header-Decoder erkennt die Betriebsart "Command Code" des General-Headers aus dem dort gespeicherten Header Mode.
Weiterhin werden entsprechend des erkannten Header Mode die im General Header vorliegenden Werte der FU-C durch Vergleich mit der CMDT und in Verbindung mit der ebenfalls aus dem General Header entnommenen CE-Information dekomprimiert.
Entsprechend des erkannten Header Modes wird die Zusatzinforma- tion des General Headers verarbeitet.
Ein möglicher Fehlzugriff beim Zwischenspeichern im Cache (Cache-Miss) wird durch den Ablauf einer Fehlerbehandlungsroutine in der Cache-Miss-Reparatur Logik behoben.
Abschließend wird das gültige VLIW am Ausgang des Decoders bereitgestellt.
Die Erfindung soll anhand eines Ausführungsbeispiels näher erläutert werden.
Die Fig. 1 zeigt eine Blockübersicht in dem die Kompressions- schritte dargestellt werden, welche in der Konfigurationsphase zur erfindungsgemäßen Wandlung des TVLIW 1 in das HVLIW 10 in der Betriebsart "Command Code" auszuführen sind.
In Fig. 2 ist eine Blockübersicht des erfindungsgemäßen Deco- derl 23 dargestellt, der in der Ausführungsphase das komprimierte HVLIW 10 in der Betriebsart "Command Code" in das VLIW 22 dekomprimiert und dekodiert, um damit den Prozessor 21 anzusteuern.
Wie in Figur 1 ersichtlich, ist in der Konfigurationsphase der Ausgangspunkt für die erfindungsgemäße Komprimierung das Vorliegen des TVLIW 1. Dieses besteht im Ausführungsbeispiel aus ersterem und zweitem TVLIW Container 11; 12.
Der jeweilige erste bzw. zweite TVLIW Container 11; 12 liegt mit seinen Bestandteilen, dem ersten bzw. zweiten Operationscode 2 ; 5, der ersten bzw. zweiten Kennung 3; 6 und dem ersten bzw. zweiten FIW 4; 7, vor.
In der auftretenden Reihenfolge wird jeweils ein TVLIW Container dem Code-Umsetzer 18 zugeführt und gleichzeitig wird im Co- de-Analyzer 8 die Kombination der drei Bestandteile eines TVLIW Containers auf ihre Häufigkeit ihres Auftretens in Bezug auf die weiteren TVLIW Container des jeweiligen TVLIW 1 durch Ver- gleich mit den Angaben des Wörterbuches 9 ermittelt.
Diese Angaben werden dem Code-Umsetzer 18 zur Verfügung gestellt. Dieser codiert daraus je nach der vorgesehenen Betriebsart den General Header 13 und verknüpft ihn mit den je- weiligen ersten bzw. zweiten FIW 4; 7, welche von den hinter-
einander bereitgestellten ersten bzw. zweiten TVLIW Containern 11; 12 entnommen werden.
Wenn alle TVLIW Container des TVLIW 1 abgearbeitet sind, wird der strukturierte General Header 13 bereitgestellt und liegt in den Teilen Header Mode 14, FU-C-Information 15, CE-Information 16 und Zusatzinformation 17 vor. Der General Header 13 wird der Folge von ersten bzw. zweiten FIW 4; 7 vorangestellt. Damit wird ein nun vollständiges HVLIW 10 im Speicher abgelegt.
Nachfolgend kann ein weiteres TVLIW 1 komprimiert werden.
Das Ende der erfindungsgemäßen Kompression ist erreicht, wenn alle TVLIW 1 in ein jeweiliges HVLIW 10 gewandelt sind.
Wie in Figur 2 ersichtlich, wird in der Ausführungsphase nach dem Zwischenspeichern (fetch) der Instruktionen und dadurch mit der Bereitstellung des HVLIW 10 und Decodieren dessen Header Mode 14 mit der vorliegenden Betriebsart "Command Code", der Einsatz des erfindungsgemäßen Decoderl (23) zum Dekomprimie- ren/Dekodierens des HVLIW 10 ausgelöst.
Nachfolgend wird der General Header 13 als Bestandteil des HVLIW 10 in seinen Bestandteilen im Cache 26 zwischengespei- chert und mittels dem Header Decoder 24 decodiert.
Zuerst wird mittels dem ersten Teil des General Header 13, dem Header Mode 14, seine Betriebsart erkannt und der Decoderl 23 entsprechend eingestellt.
Aus dem zweiten Teil des General Header 13 , der FU-C- Information 15, wird die Informationen für die erste bzw. zweite FU 19; 20 entnommen, welche der ersten bzw. zweiten FIW 4; 7 von der CMDT 25 berücksichtigt werden müssen.
Aus dem dritten Teil des General Header 13, der CE-Information 16 wird der zu berücksichtigende Bereich der CMDT 25 verarbeitet. Aus dem letzten Teil des General Header 13 wird die Zu- satzinformationen 17 entnommen.
Ein evtl. erkannter Fehlzugriff des Cache 26 wir von der Cache- Miss-Repair-Logik 27 behoben.
Mit diesen Informationen wird das VLIW 22 aufgebaut, indem die jeweiligen ersten und /oder zweiten FIW 4; 7 in der dekodierten Reihenfolge und Position, in der die erste bzw. zweite FU 19; 20 entsprechend am Prozessor 21 nachfolgend angesteuert wird, im VLIW 22 angeordnet werden.
Verfahren ztam codieren/decodieren von VLIW cached Befehlen
Bezugszeichenliste
TVLIW (Tagged Very Long Instruction Word) erster Operationscode erste Kennung erstes FIW (Funktions-Instruktions-Wortteil) zweiter Operationscode zweite Kennung zweites FIW Code-Analyzer Wörterbuch HVLIW (Headed Very Long Instruction Word erster TVLIW Container zweiter TVLIW Container General Header Header Mode FU-C-Information (FunctionUnit-Combination-Information) CE-Information (Cache Extra-Information) Zusatzinformation Code-Umsetzer erste FU (Funktionseinheit) zweite FU (Funktionseinheit) Prozessor VLIW (Very Long Instruction Word) Decoderl Header-Decoder
CMDT (Command-Code-Decompression-Tabelle) Cache Cache-Miss-Repair-Logik