Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
METHOD FOR PROCESSING A PROGRAM CODE AND PROCESSOR ARRANGEMENT FOR CARRYING OUT SAID METHOD
Document Type and Number:
WIPO Patent Application WO/2003/012630
Kind Code:
A1
Abstract:
The invention relates to a method for processing a program code in a command pipeline with a processor arrangement, especially a digital signal processor, that comprises functional units (6) that process data in a synchronous manner. According to said method, a sequence of primary instruction words (TVLIP) derived from a translation of the program code is processed, said sequence consisting of a plurality of instruction word parts, and a sequence of secondary instruction words (VLIW) is generated from the sequence of primary instruction words. The invention also relates to a processor arrangement for carrying out the inventive method. In order to reduce the average electrical power requirement for carrying out the method, the sequence of primary instruction words is sequentially stored in a first register device (1) from where the primary instruction words (TVLIW) are transmitted to a first decoder device (2) in which a sequence of secondary instruction words (VLIW) with a respective plurality of instruction word parts (FIW) is generated from the sequence of primary instruction words to control the functional units. In a second register device (3), at least one instruction word part (FIW) is stored that is decoded by a second decoder device (4) associated with the respective functional unit. Said word part is deposited in a third register device (5) in a decoded manner and used to control the respective functional unit (6). At least one of the register devices (3, 5, 10) is pulse-triggered and the pulse of the at least one pulse-triggered register device is adapted to respond to the program code to be processed.

Inventors:
DRESCHER WOLFRAM (DE)
BETZINGER HELGE (DE)
Application Number:
PCT/DE2002/001881
Publication Date:
February 13, 2003
Filing Date:
May 24, 2002
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
SYSTEMONIC AG (DE)
DRESCHER WOLFRAM (DE)
BETZINGER HELGE (DE)
International Classes:
G06F1/32; G06F9/38; (IPC1-7): G06F9/38; G06F1/32
Foreign References:
DE19859389C12000-07-06
US5819058A1998-10-06
US5983339A1999-11-09
Other References:
WEISS M H, FETTWEIS G P: "Dynamic codewidth reduction for VLIW instruction set architectures in digital signal processors", PROCEEDINGS IWISPO 96 INTERNATIONAL WORKSHOP ON IMAGE AND SIGNAL PROCESSING ON THE THEME OF ADVANCES IN COMPUTATIONAL INTELLIGENCE, 4 November 1996 (1996-11-04) - 7 November 1996 (1996-11-07), Manchester, UK, pages 517 - 520, XP000920877
GARY S ET AL: "POWERPC 603TM, A MICROPROCESSOR FOR PORTABLE COMPUTERS", IEEE DESIGN & TEST OF COMPUTERS, IEEE COMPUTERS SOCIETY. LOS ALAMITOS, US, vol. 11, no. 4, 21 December 1994 (1994-12-21), pages 14 - 23, XP000498501, ISSN: 0740-7475
Attorney, Agent or Firm:
LIPPERT, STACHOW SCHMIDT & PARTNER (Krenkelstrasse 3 Dresden, DE)
Download PDF:
Claims:
Verfahren zur Abarbeitung eines Programmcodes sowie eine Prozessoranordnung zur Ausführung des Verfahrens
1. Verfahren zur Abarbeitung eines Programmcodes in einer Befehlspipeline mit einer Prozessoreinrichtung, insbesondere einem digitalen Signalprozessor, die Funktionseinheiten aufweist, welche synchron Daten verarbeiten, wobei eine aus einer Übersetzung des Programmcodes stammende Folge von Primärinstruktionsworten (TVLIW) aus mehreren Instruktionswortteilen verarbeitet wird, und aus der Folge der Primärinstruktionsworte eine Folge von Sekundärinstruktionswörter mit jeweils mehreren Instruktionswortteilen zur Ansteuerung der Funktions einheiten erzeugt wird, d a d u r c h g e k e n n z e i c h n e t, dass die Primärinstruktionswortfolge sequentiell in eine erste Registereinrichtung (1) gespeichert wird, von der die Primärinstruktionswörter (TVLIW) in eine erste Decodereinrichtung (2) übermittelt werden, in der aus der Folge der Primärinstruktionswörter eine Folge von Sekundärinstruktionswörter (VLIW) mit jeweils mehreren Instruktionswortteilen (FIW) zur Ansteuerung der Funktionseinheiten (6) erzeugt wird, wobei in einer zweiten Registereinrichtung (3) zumindest ein Instruktionswortteil (FIW) gespeichert wird, das von einer der jeweiligen Funktionseinheit (6) zugeordneten zweiten Decodereinrichtung (4) decodiert und in einer dritten Registereinrichtung decodiert abgelegt wird, mit welchem die jeweilige Funktionseinheit angesteuert wird, wobei zumindest eine der Registereinrichtungen (3,5, 10) taktzustandsgesteuert wird und der Takt (glclk, g2clk, g3clk) der zumindest einen taktzustandsgesteuerten Registereinrichtung (3,5, 10) im Ansprechen auf abzuarbeitenden Programmcode geschaltet wird.
2. Verfahren nach Anspruch 1, d a d u r c h g e k e n n z e i c h n e t, dass der Takt im Ansprechen auf zumindest ein Primärinstruktionswort (TVLIW) geschaltet wird, wobei Information (17) zum Schalten des Taktes während des Decodierens des zumindest einen Primärinstruktionsworts erzeugt wird.
3. Verfahren nach Anspruch 1 oder 2, d a d u r c h g e k e n n z e i c h n e t, dass mehrere in der Befehls pipeline hintereinander angeordnete Registereinrichtungen (3,5, 19) taktzustandsgesteuert werden, wobei für zumindest eine Registereinrichtung (5,10) der Takt im Ansprechen auf den abzuarbeitenden Programmcode verzögert zur in der Befehlspipeline vorhergehenden Register einrichtung (3) geschaltet wird.
4. Verfahren nach Anspruch 3, dadurch g e k e n n z e i c h n e t, dass der Takt für in der Befehlspipeline hintereinander angeordnete Registereinrichtungen (3,5, 10) um eine solche Zeitdauer zeitversetzt geschaltet wird, die der Laufzeit zwischen den Registereinrichtungen entspricht.
5. Prozessoranordnung zum Durchführen eines Verfahrens nach einem der Ansprüche 1 bis 4 mit mehreren, synchron Daten verarbeitenden Funktionseinheiten, g e k e n n z e i c h n e t d u r c h eine ersten Registereinrichtung (1), in der ein Primärinstruktionswort (TVLIW) aus einer Folge von Primärinstruktionswörter speicherbar ist, eine erste Decodereinrichtung (2), in welcher aus dem Primärinstruktionswort ein Sekundärinstruktionswort (VLIW) mit mehreren Instruktionswortteilen (FIW) zur Ansteuerung der Funktionseinheiten erzeugbar ist, eine zweite Registereinrichtung (3), in welcher zumindest ein Instruktionswortteil (FIW) speicherbar ist, mehrere zweite Decodereinrichtungen (4), welche jeweils einer Funktionseinheit (6) zugeordnet sind, und in welchen jeweils ein Instruktionswortteil decodierbar ist, sowie mehrere dritte Registereinrichtung (5), in welchen das jeweilige decodierte Instruktionswortteil speicherbar ist, mit welchem die jeweilige Funktionseinheit (6) ansteuerbar ist, ein Taktnetzwerk, mit welchem zumindest eine der Registereinrichtungen (3,5, 10) taktzustandssteuerbar ist sowie eine Taktschalteinrichtung (11,12, 13), mit welcher der Takt für die zumindest eine taktzustandsgesteuerte Registereinrichtung einbzw. ausschaltbar ist.
6. Prozessoreinrichtung nach Anspruch 5, d a d u r c h g e k e n n z e i c h n e t, dass die Taktschalteinrichtung (11,12, 13) einen Takteingang (21,22, 23), einen Steuereingang (17,18, 19) sowie einen Taktausgang (24,25, 26) aufweist, wobei der Schaltungseingang mit der ersten Decodereinrichtung (2) sowie der Taktausgang mit der Registereinrichtung (3,5, 10) verbunden ist und am Takteingang ein Taktsignal anliegt.
7. Prozessoranordnung nach Anspruch 5 oder 6, g e k e n n z e i c h n e t d u r c h eine, einer Registereinrichtung (5 ; 10) zugeordneten Schaltungsverzögerungseinrichtung (15 ; 16), mit welcher das Schalten des Taktes für die Registereinrichtung verzögerbar ist.
8. Prozessoranordnung nach Anspruch 5,6 oder 7, dadurch g e k e n n z e i c h n e t, dass mehreren taktzustands gesteuerten Registereinrichtungen (5 ; 10) jeweils ein Taktschalter (12 ; 13) und eine Schaltungsverzögerungseinrichtung (15 ; 16) zugeordnet sind, wobei der Takt für in der Befehlspipeline benachbarte Registereinrichtungen jeweils um eine vorgegebene Zeitdauer, insbesondere eine Taktperiode verzögert schaltbar ist.
9. Prozessoranordnung nach Anspruch 8, d a d u r c h g e k e n n z e i c h n e t, dass die Schaltungsverzögerungs einrichtungen (15,16) der mehreren taktzustandsgesteuerten Registereinrichtungen (5,10) in Reihe geschaltet sind und die Schaltungsverzögerungseinrichtungen eine Schaltungs verzögerung um eine vorgegebene Zeitdauer bewirken, wobei sich die Schaltungsverzögerung für eine vorgegebene Registereinrichtung durch die Addition der Schaltungs verzögerungen der der Registereinrichtung vorgeschalteten Schaltungsverzögerungseinrichtungen bestimmt.
10. Prozessoranordnung nach einem der Ansprüche 7 bis 8, d a durch gekennzeichnet, dass zumindest eine taktzustandsgesteuerte Registereinrichtung in einer Funktionseinheit eine Schaltungsverzögerungseinrichtung aufweist.
11. Prozessoranordnung nach einem der Ansprüche 7 bis 10, d a d u r c h g e k e n n z e i c h n e t, dass in der Befehlspipeline hintereinander angeordnete, taktzu standsgesteuerte Registereinrichtungen, welche unterschied lichen Unterfunktionseinheiten einer vorgegebenen Funk tionseinheit zugeordnet sind, eine Schaltungsver zögerungseinrichtung aufweisen.
Description:
Verfahren zur Abarbeitung eines Programmcodes sowie eine Prozessoranordnung zur Ausführung des Verfahrens Die Erfindung betrifft ein Verfahren zur Abarbeitung eines Programmcodes in einer Befehlspipeline mit einer Prozessor- anordnung, insbesondere einem digitalen Signalprozessor, die Funktionseinheiten aufweist, welche synchron Daten verarbeiten, wobei eine aus einer Übersetzung des Programmcodes stammende Folge von Primärinstruktionsworten (TVLIP) aus mehreren Instruktionswortteilen verarbeitet wird, und aus der Folge der Primärinstruktionsworte eine Folge von Sekundärinstruk- tionsworten erzeugt wird.

Die Erfindung betrifft ferner eine Prozessoranordnung zur Durchführung des Verfahrens mit mehreren, synchron Daten verarbeitenden Funktionseinheiten. In derartigen Prozessor- anordnungen werden die Funktionseinheiten zu jedem Takt von einem zugeordneten Sekundärinstruktionswort angesteuert, wobei die Funktionseinheiten parallel zueinander arbeiten. Ein einzelnes Sekundärinstruktionswort umfasst mehrere Instruk- tionswortteile, wobei ein einzelnes Instruktionswortteil zur Ansteuerung einer einzelnen Funktionseinheit dient.

Ein derartiges Verfahren zur Ansteuerung von Funktionseinheiten in einem Prozessor und eine Prozessoranordnung zur Durchführung des Verfahrens ist in der deutschen Patentschrift DE 198 59 389 Cl offenbart.

Beispielsweise kann aus. einem komprimierten Primär- instruktionswort ein Sekundärinstruktionswort erzeugt werden, wobei unter Umständen Berechnungen notwendig sind, die nicht innerhalb eines einzelnen Taktes durchgeführt werden können.

Weiterhin kann es sein, dass sich beim Auslesen von Primärinstruktionswörtern aus dem Programmspeicher und dem Laden derselben in einen Decoder, in welchem Primärwörter in Sekundärwörter umgewandelt werden, Verzögerungen ergeben.

Beides hat zur Folge, dass nicht zu jedem Takt ein vollständiges Sekundärinstruktionswort für die weitere Bearbeitung bereitstellt werden kann. In diesem Fall kann die Vorrichtung so eingestellt sein, dass die innerhalb des einen Taktes ermittelten Instruktionswortteile bereitgestellt und die noch nicht berechneten Instruktionswortteile durch NOP ((No Operation) -Befehle) ersetzt werden. Weiterhin ist es auch möglich, dass alle Instruktionswortteile durch NOP-Befehle ersetzt werden und erst nach der Ermittlung des gesamten Sekundärinstruktionsworts dieses für die weitere Bearbeitung in der Befehlspipeline bereitgestellt wird.

Die Behandlung dieses NOP-Befehls in der Befehlspipeline ist grundsätzlich nicht von der eines anderen Befehls zu unterscheiden. Dies bedeutet, dass sich beispielsweise der Leistungsverbrauch bei der Abarbeitung des NOP-Befehls kaum von dem eines anderen Befehls unterscheidet. Insbesondere bei mobilen Geräten, wie Handys oder Laptops, kann die unnötige Aufwendung von Energie im Hinblick auf eine beschränkte Energieressource und im Hinblick auf die Notwendigkeit, Abwärme abzuführen, Probleme zur Folge haben. Ferner könnte ein verminderter elektrischer Leistungsbedarf bei der Befehls- ausführung beispielsweise zu einer Steigerung der Leistungsfähigkeit einer Prozessoranordnung durch Einstellen eines höheren Prozessortaktes ausgenutzt werden.

Somit liegt der Erfindung die Aufgabe zugrunde, den durch- schnittlichen elektrischen Leistungsbedarf der eingangs beschriebenen Prozessoranordnung zu vermindern.

Diese Aufgabe wird durch ein Verfahren mit den Merkmalen des Anspruchs 1 bzw. einer Prozessoranordnung mit den Merkmalen des Anspruchs 5 gelöst.

Verfahrensseitig wird das Problem dadurch gelöst, dass die Primärinstruktionswortfolge sequentiell in eine erste Register- einrichtung gespeichert wird, von der die Primär- instruktionswörter (TVLIW) in eine erste Decodereinrichtung übermittelt werden, in der aus der Folge der Primärinstruk- tionswörter eine Folge von Sekundärinstruktionswörter (VLIW) mit jeweils mehreren Instruktionswortteilen (FIW) zur Ansteuerung der Funktionseinheiten erzeugt wird. Dabei wird in einer zweiten Registereinrichtung zumindest ein Instruk- tionswortteil (FIW) gespeichert, das von einer der jeweiligen Funktionseinheit zugeordneten zweiten Decodereinrichtung decodiert und in einer dritten Registereinrichtung decodiert abgelegt wird, mit welchem die jeweilige Funktionseinheit angesteuert wird, wobei zumindest eine der Register- einrichtungen taktzustandsgesteuert wird und der Takt der zumindest einen taktzustandsgesteuerten Registereinrichtung im Ansprechen auf abzuarbeitenden Programmcode geschaltet wird.

Anordnungsseitig wird das Problem dadurch gelöst, dass die Prozessoranordnung eine ersten Registereinrichtung aufweist, in der ein Primärinstruktionswort (TVLIW) aus einer Folge von Primärinstruktionswörter speicherbar ist, eine erste Decodereinrichtung, in welcher aus dem Primärinstruktionswort ein Sekundärinstruktionswort (VLIW) mit mehreren Instruktionswortteilen (FIW) zur Ansteuerung der Funktionseinheiten erzeugbar ist, eine zweite Register- einrichtung, in welcher zumindest ein Instruktionswortteil (FIW) speicherbar ist, mehrere zweite Decodereinrichtungen, welche jeweils einer Funktionseinheit zugeordnet sind, und in welchen jeweils ein Instruktionswortteil decodierbar ist, sowie mehrere dritte Registereinrichtung, in welchen das jeweilige decodierte Instruktionswortteil speicherbar ist, mit welchem die jeweilige Funktionseinheit ansteuerbar ist, ein Taktnetzwerk, mit welchem zumindest eine der Register- einrichtungen taktzustandssteuerbar ist sowie eine Taktschalt- einrichtung, mit welcher der Takt für die zumindest eine

taktzustandsgesteuerte Registereinrichtung ein-bzw. ausschalt- bar ist.

Der Erfindung liegt die Idee zugrunde, die zu einem vorgegebenen Takt nicht benötigte Einrichtung bei der Befehlsausführung einer Befehlspipeline durch Ausschalten des Taktes stillzulegen, wodurch der Energiebedarf für die betreffende Einrichtung innerhalb der Taktabschaltung zumindest stark vermindert wird. Dabei können prinzipiell alle Einrichtungen für die verschiedenen Phasen der Befehls- ausführung in der Befehlspipeline betroffen sein, bei- spielsweise Einrichtungen für eine Befehlsbereitstellungsphase, eine Decodier-und Operantenbereit-stellungsphase, eine Ausführungsphase, eine Speicherzu-griffsphase oder eine Resultatsspeicherphase. Es versteht sich, dass die Erfindung nicht nur auf eine derartige fünfstufige Befehlspipeline, sondern grundsätzlich auf alle Befehls-pipelines anwendbar ist.

Alle in diesen Phasen betroffenen Einrichtungen sind Registereinrichtungen, beispielsweise Ein-bzw. Ausgangs- register oder Bearbeitungsregister, insbesondere einer Decodiereinrichtung bzw. einer Funktionseinheit.

Durch das Abschalten der betreffenden Registereinrichtung bzw.

Registereinrichtungen durch Entfernen des Taktes von den Registereinrichtungen während vorgegebenen Zeitdauern, zu denen die jeweilige Registereinrichtung nicht benötigt wird, können die Probleme des Standes der Technik vermindert werden. Es sei darauf hingewiesen, dass mit dem erfindungsgemäßen Verfahren auch bei einer vorgegebenen Bearbeitung von Daten die für die Bearbeitung nicht benötigten Prozessoreinrichtungen, insbesondere die nicht benötigten Funktionseinheiten gezielt durch Abschalten des Taktes abgeschaltet werden können, wodurch der Leistungsbedarf der Prozessoranordnung automatisch an die benötigten Berechnungsverfahren angepasst werden kann.

Vorteilhafte Ausführungsformen der Erfindung sind in den Unteransprüchen angegeben.

Um zu Beginn der Befehlsausführung in der Befehlspipeline die notwenige Information zum An-bzw. Ausschalten von vorgegebenen Registereinrichtungen bereitzustellen, kann vorgesehen sein, dass der Takt im Ansprechen auf zumindest ein Primärinstruktionswort geschaltet wird, wobei die Information zum Schalten des Taktes während des Decodierens des zumindest einen Primärinstruktionsworts erzeugt wird. Hierdurch kann sichergestellt werden, dass die bei der Abarbeitung dieses Primärinstruktionsworts im weiteren Verlauf der Befehlsausführung nicht benötigten Registereinrichtungen zu Beginn festgestellt werden und somit zu vorgegebenen Zeitpunkten während der Abarbeitung des Primärinstruktionsworts aus-bzw. eingeschaltet werden können. Hierzu kann vorgesehen sein, dass für benachbarte Registereinrichtungen der Takt im Ansprechen auf den abzuarbeitenden Programmcode verzögert zu in der Befehlspipeline vorhergehenden Registereinrichtungen geschaltet wird. Dadurch kann dem Umstand Rechnung getragen werden, dass ein Befehl während der Befehlsausführung innerhalb einer Befehlspipeline über einen mehrere Takte umfassenden Zeitraum abgearbeitet wird, sodass die erfindungsgemäße Abschaltung der Registereinrichtungen seitlich versetzt erfolgen kann. Insbesondere kann die Verzögerung zwischen zwei in der Befehlspipeline benachbarten Registereinrichtungen gerade der Laufzeit zwischen den beiden Registern entsprechen und beispielsweise eine Taktperiode betragen.

Anordnungsseitig kann die Prozessoranordnung zum Schalten des Taktes eine, einer Registereinrichtung zugeordnete Taktschalteinrichtung umfassen, die einen Takteingang, einen Schaltungseingang sowie einen Taktausgang aufweist, wobei der Steuereingang mit der ersten Decodereinrichtung sowie der Taktausgang mit der Registereinrichtung verbunden ist und am Takteingang ein Taktsignal anliegt.

Um das Schalten des Taktes relativ zu einem vorgegebenen Steuerwort oder Steuersignal verzögert ausführen zu können,

kann die Prozessoreinrichtung eine Schaltungsver- zögerungseinrichtung aufweisen, die ein vorgegebenes Eingangssignal oder Eingangswort zeitlich verzögert am Ausgang wieder ausgibt. Auf diese Weise können alle betroffenen Registereinrichtungen mit einem einzigen Steuersignal angesteuert werden, das speziell für die jeweilige Registereinrichtung verzögert wird.

Erfindungsgemäß können mehrere taktzustandsgesteuerte Registereinrichtungen jeweils zugeordnet einen Taktschalter und eine Schaltungsverzögerungseinrichtung aufweisen. Dabei können die Schaltungsverzögerungseinrichtungen in Reihe geschaltet sein und alle Schaltungsverzögerungseinrichtungen eine vorbestimmte Taktverzögerung bewirken, wobei sich die Taktverzögerung für eine vorgegebene Registereinrichtung durch die Addition der Taktverzögerungen für die Register- einrichtungen ergibt, welche der vorgegebenen Register- einrichtungen vorgeschaltet sind. Durch die Verwendung identischer Schaltungsverzögerungseinrichtungen für die verschiedenen Registereinrichtungen wird ein einfach herzustellendes Verzögerungsnetzwerk ermöglicht, wobei die der jeweiligen Registereinrichtungen zugeordnete Schaltungsver- zögerungseinrichtung gerade eine zusätzliche Verzögerung gegenüber den in der Befehlspipeline vorhergehenden Registereinrichtung bewirkt.

Vorteilhafterweise kann das Prinzip der Erfindung auch auf Unterfunktionseinheiten einer vorgegebenen Funktionseinheit angewendet werden, d. h., auch Registereinrichtungen, welche Unterfunktionseinheiten zugeordnet sind, können einen verzögerbaren Taktschalter aufweisen um bei Bedarf die Unterfunktionseinheit abzustellen.

Die Erfindung wird durch das Beschreiben einer Ausführungsform unter Bezugnahme auf die beiliegenden Figuren erläutert, wobei Fig. 1 den Befehlspfad eines beispielhaften Signalprozessors

in einer Prinzipskizze, Fig. 2 eine erfindungsgemäße Ausbildung des in Figur 1 dargestellten Befehlspfades, Fig. 3 die erfindungsgemäße Abarbeitung einer beispielhaften Befehlsabfolge, Fig. 4 eine weitere Befehlsabfolge, Fig. 5 die herkömmliche Abarbeitung der in Fig. 4 gezeigten Befehlsabfolge, und Fig. 6 die erfindungsgemäße Abarbeitung der in Fig. 4 gezeigten Befehlsabfolge zeigt.

In Fig. 1 sind die verschiedenen Phasen der Befehlsausführung in einer dreistufigen Befehlspipeline taktbezogen für eine beispielhafte Prozessoranordnung dargestellt. Dabei wird ein Primärinstruktionswort (TVLIW : tagged very large instruction word), das komprimiert ist und sich aus mehreren Instruktionswortteilen zusammensetzt, in einer ersten Bereitstellungsphase To in ein erstes Register 1 geladen. Das Primärinstruktionswort weist eine Breite von 32 bit auf. In einer ersten Decoderphase T1 wird das Primärinstruktionswort in einem ersten Decoder 2 decodiert, wobei im wesentlichen eine Dekomprimierung durchgeführt wird und das resultierende Instruktionswort als 250 bit breites Sekundärinstruktionswort (VLIW : very large instruction word) in das zweite Register 3 eingeschrieben wird.

Wie obenstehend erläutert, ist die Prozessoranordnung zur parallelen Verarbeitung von Daten ausgebildet. Hierzu umfasst der Prozessor mehrere Funktionseinheiten, die synchron und taktzustandsgesteuert Daten verarbeiten. Zur Ansteuerung jeder einzelnen Funktionseinheit weist das Sekundärinstruktionswort (VLIW) eine Anzahl von Instruktionswortteilen (FIW : function

instruction word), die jeweils einer Funktionseinheit zugeordnet sind. Demnach entspricht die Anzahl der Instruktionswortteilen der Anzahl der parallelarbeitenden Funktionseinheiten. In der Figur ist von den Instruktionswortteilen im Register 3 nur das erste, FIW und das letzte, FIWn bezeichnet.

In einer zweiten Decodierphase T2 wird jedes Instruk- tionswortteil (FIW) in einer zweiten Decodereinrichtung 4 decodiert und der decodierte Befehl in einem dritten Register 5 abgelegt. Dabei kann je nach Ausführungsform jeder Funktionseinheit bzw. jedem Instruktionswortteil eine separate Decodereinrichtung zugeordnet sein, oder eine einzelne Decodereinrichtung alle Instruktionswortteile gleichzeitig innerhalb der zweiten Decodierphase decodieren. In der in Fig.

1 dargestellten Ausführungsform weist die Prozessoreinrichtung für jedes Instruktionswortteil eine Decodereinrichtung auf, wobei nur die für das erste Instruktionswortteil FIWonotwendige Decodereinrichtung 4 und die zugeordneten nachfolgenden Einrichtung dargestellt sind.

Nun schließt sich die Ausführungsphase T3 an, in welcher die Funktionseinheit 6 mit dem decodierten Instruktionswortteil zur vorbestimmten Bearbeitung von Daten angesteuert wird. Wie in der Figur 1 gezeigt, kann die Funktionseinheit selbst mehrere Funktionsuntereinheiten 7,8 aufweisen, die sequentiell Daten bearbeiten, wobei das Zwischenergebniss im Funktions- einheitsregister 9 abgelegt werden, mit dessen Inhalt die nachfolgende Funktionsuntereinheit 8 gespeist wird. In dem in Fig. 1 dargestellten Befehlswortpfad umfasst die Aus- führungsphase im Gegensatz zu der Bereitstellungs-und den beiden Decodierphasen mehrere Takte, wobei innerhalb eines Taktes die Funktion einer einzelnen Funktionsuntereinheit ausgeführt wird. Es ist jedoch auch möglich, dass die Ausführungsphase, d. h., die Verarbeitung der Daten innerhalb der Funktionsuntereinheiten insgesamt einen einzelnen Taktzyklus in Anspruch nimmt, wobei die Abarbeitung in den

Funktionsuntereinheiten schneller erfolgt, sodass die Addition der Verarbeitungszeiten aller Funktionsuntereinheiten gerade einem Taktzyklus entspricht.

Zeitkritisch in dem in Fig. 1 dargestellten Befehlswortpfad ist die Dekomprimierung des Primärinstruktionsworts (TVLIW) in der ersten Dekodiereinrichtung 2 zum Erzeugen des die Instruktionswortteile (FIWi) umfassenden Sekundärin- struktionsworts. Weiterhin kann es sein, dass unter Umständen Primärinstruktionsworte nicht schnell genug aus dem Programmspeicher in die erste Decodiereinrichtung 2 geladen werden können. In solchen Situationen, in welchen am Ende eines Taktes im Register 3 kein vollständiges Sekundär- instruktionswort bereitgestellt werden kann, wird herkömmlicherweise ein NOP-Befehl anstelle der einzelnen Instruktionswortteile in die Registereinrichtung 3 geschrieben.

Dieser NOP-Befehl wird nach dem Stand der Technik in den darauffolgenden Phasen wie ein normaler Befehl abgearbeitet mit den bekannten Nachteilen.

Hier setzt die Erfindung an, welche im Folgenden unter Bezugnahme auf Fig. 2 näher beschrieben wird.

Wieder ist der Befehlswortpfad ausgehend von der ersten Registereinrichtung 1, in welchem das Primärinstruktionswort abgespeichert wird bis zum Ergebnisregister 10, in welchem das Ergebnis der in der Funktionseinheit 6 ausgeführten Berechnung abgelegt wird, dargestellt. Alle Einrichtungen sind taktzustandsgesteuert, was bedeutet, dass diese durch den Takt gesteuert werden. Das Taktsignal auf der Leitung 14 wird dabei über ein Taktnetzwerk an allen Einrichtungen bereitgestellt.

Das als Ausgangsregister des Decoders 2 wirkende Register 3, welches auch als Eingangsregister des Decoders 4 arbeitet, das als Ausgangsregister des Decoders 4 wirkende Register 5, welches auch als Eingangsregister für die Funktionseinheit 6 arbeitet und das Ausgangsregister 10 der Funktionseinheit 6 weisen jeweils eine Taktschalteinrichtung 11,12 und 13 auf,

die jeweils mit ihrem Takteingang 21,22 und 23 an die Taktleitung 14 angeschlossen sind. Der Takt wird jeweils an einem Taktausgang 24,25, 26 an das jeweilige Register 3,5, 10 zur Steuerung desselben weitergegeben. Die Takt- schaltungseinrichtung 11,12, 13 weisen ferner einen Steuereingang 18,19 bzw. 20 auf, mit welchem der am Taktausgang weitergegebene Takt ein-bzw. ausgeschaltet werden kann. Die Steuereingänge sind mit der ersten Decodereinrichtung 2 verbunden, welche ein Steuersignal in Form eines vorgegebenen Bits über eine Steuerleitung 17 an die Steuereingänge weitergibt. Dabei ist die Registereinrichtung 3 direkt mit der Decodereinrichtung 2 verbunden, während die Registereinrichtung 5 über eine erste Verzögerungseinrichtung 15 an die Decodereinrichtung 2 angeschlossen ist und die Registereinrichtung 10 durch eine Reihenschaltung von Schaltungsverzögerungseinrichtungen 15,16 mit der Decodereinrichtung 2 zum Empfang des Steuersignals verbunden ist. Erfindungsgemäß weisen somit die Registereinrichtungen 2, 3 und 10 einen geschalteten Takt (gated clock) auf, der im Ansprechen auf das decodierte Primärinstruktionswort geschaltet wird, wobei die einzelnen Schaltern entsprechend der Befehlswortlaufzeiten zwischen den Registern zeitverschoben angesteuert werden.

Der gleiche Takt g2clk, welcher zum Steuern des Registers 5 verwendet wird, liegt auch an den Eingangsregistern 27,28 der Funktionseinheit 6 an, sodass auch deren Ladevorgang erfindungsgemäß geschaltet werden kann.

Im Folgenden wird die erfindungsgemäße Befehlsausführung in der in Fig. 2 dargestellten Befehlspipeline anhand der Figuren 3 bis 6 näher erläutert. Dabei sei der Einfachheit halber angenommen, dass die Befehlsbereitstellungsphase To, die erste und die zweite Decodierphase T1, T2, sowie die Bearbeitungsphase T3 jeweils einen einzigen Taktzyklus benötigen.

In den Fällen, in denen der Decoder 2 innerhalb eines Taktes TS

aus dem Primärinstruktionswort ein vollständiges Sekundärinstruktionswort erzeugt, gibt diese kein Steuersignal auf der Leitung 17 ab, aufgrund dessen die Taktschalteinrichtungen 11,12 bzw. 13 den Takt an der jeweils zugeordneten Registereinrichtung abschalten, so dass nun die Schaltung auf herkömmliche Weise die in sie eingespeisten Befehle abarbeitet. Für den Fall, dass die Decodereinrichtung 2 nicht in der Lage ist, innerhalb eines Taktzyklusses aus T1 das im ersten Register 1 abgelegte Primärinstruktionswort vollständig in ein Sekundärinstruktionswort umzuwandeln, sei zunächst angenommen, dass alle Registerabschnitte in der Registereinrichtung 3, welche vorgegebenen Instruktionswortteilen zugeordnet sind, mit einem NOP-Befehl gefüllt werden und gleichzeitig ein Steuerbefehl in Form eines vorgegebenen Steuerbits über die Schaltungsver- zögerungseinrichtung 15 an die Taktschalteinrichtung 12 übermittelt wird, sodass diese den Takt für die der Decodereinrichtung 4 zugeordneten Registereinrichtung 5 abschaltet, was, wie obenstehend erläutert, dem Abschalten der Decodereinrichtung 2 entspricht. Die Schaltungsverzöger- ungseinrichtung 15 verzögert das Steuersignal um einen vollen Takt, sodass das Abschalten der Decodereinrichtung 4 realisiert ist, zu dem der NOP-Befehl in der Decodereinrichtung 4 ausgeführt werden sollte. Da im darauffolgenden Takt im Eingangsregister 5 der Funktionseinheit 6 kein gültiger Steuerbefehl anliegt, wird diese über die Taktschalteinrichtung 13 in Form des Ausgangsregisters 10 abgeschaltet. Da zwischen der Abschaltung der Decodereinrichtung 4 und der Funktionseinheit 6 wiederum eine Taktperiode liegt, ist relativ zum Schaltzeitpunkt der Taktschalteinrichtung 12 eine weitere Schaltungsverzögerungseinrichtung 16 vorgesehen, die mit der ersten Schaltungsverzögerungseinrichtung 15 in Reihe liegt und auch eine Schaltverzögerung um eine Taktperiode hervorruft.

Damit wird erreicht, dass zu dem Zeitpunkt, an dem die Funktionseinheit 6 den NOP-Befehl ausführen soll, diese abgeschaltet wird.

Wie aus Fig. 2 hervorgeht, wird jedoch auch das Ausgangsregister 3 der ersten Decodiereinrichtung durch das Steuersignal abgeschaltet. Somit wird beim Auftreten einer Verzögerung in der Decodereinrichtung 2 kein Sekundärinstruktionswort, also auch kein NOP-Befehl in die Befehlspipeline weitergegeben. Insofern diente die obige Bezugnahme auf den NOP-Befehl nur zur Vereinfachung der Erläuterung. Tatsächlich werden alle Einrichtungen zu den Zeitpunkten abgeschaltet, an welchen diese zum Abarbeiten eines Befehls angesteuert werden sollten, der jedoch nicht in die Pipeline eingeführt wurde.

Das erfindungsgemäße Ausführen einer Befehlsfolge ist in Fig. 3 dargestellt, wobei in der Vertikalen die beschriebenen vier Befehlsausführphasen aufgetragen und in der Horizontalen die Takte angegeben sind. Cml, Cm2 und Cm3 bezeichnen jeweils einen bestimmten Befehl in einer der beschriebenen Ausführungsphasen der Befehlspipeline während"Nop"den Befehl bezeichnet, bei welchem die entsprechende Vorrichtung abgeschaltet werden soll.

Als erstes wird der Cml-Befehl in die Pipeline eingeführt, der auf übliche Weise durch diese hindurchläuft, sodass sich in der Darstellung eine Diagonale ergibt. Gleiches gilt für den Befehl Cm2. Nun soll ein NOP-Befehl in die Befehlspipeline eingeführt werden, wobei dieser NOP-Befehl schon im Primärinstruktionswort umfasst ist und somit beispielsweise nicht dadurch erzeugt wird, dass der Decoder 2 mehrere Takte zur Erzeugung eines Sekundärinstruktionscodes benötigt. Der Befehl wird in der ersten Decodiereinrichtung 2 decodiert und erkannt, worauf die zweite Decodiereinrichtung 4 für den nächsten Takt ausgeschaltet wird. Im übernächsten Takt, in welchem die zugeordnete Funktionseinheit dem NOP-Befehl abarbeiten sollte, wird auch diese ausgeschaltet, sodass sich in Fig. 3 für die Abarbeitung des NOP-Befehls keine vollständige Diagonale ergibt. Stattdessen sind die beiden letzten Phasen mit dem Zeichen"--"bezeichnet, das andeutet, dass in dieser Abarbeitungsphase keine Aktion vorgenommen wird. Der nachfolgende Befehl Cm3 wird wieder auf die übliche Art

abgearbeitet.

Eine weitere beispielhafte Befehlsabfolge ist in Figur 4 dargestellt. Diese umfasst als ersten Befehl einen Sprungbefehl nach"XO", wo der Befehl"Cm2"aufgeführt ist.

Fig. 5 zeigt die herkömmliche Abarbeitung der in Fig. 4 gezeigten Befehlsabfolge während in Fig. 6 die erfindungsgemäße Abarbeitung der Befehlsabfolge dargestellt ist. Durch die Entkopplung des Primärinstruktionswortstromes vom Sekundär- instruktionswortstrom mittels des erfindungsgemäßen Verfahrens kann erreicht werden, dass der Primärinstruktionswortstrom einen anderen Takt wie der Sekundärinstruktionswortstrom aufweist. Wie aus den Figuren zu erkennen, kann damit auch verhindert werden, dass bei sogenannten"delayed slots" Programmierfehler auftreten.

Verfahren zur Abarbeitung eines Programmcodes sowie eine Prozessoranordnung zur Ausführung des Verfahrens Bezugzeichenliste 1 erste Registereinrichtung 2 erster Decoder 3 zweite Registereinrichtung 4 zweier Decoder 5 dritte Registereinrichtung 6 Funktionseinheit 7 Funktionsuntereinheit 8 Funktionsuntereinheit 9 Funktionseinheitsregister 10 Ergebnisregister 11 Taktschalteinrichtung 12 Taktschalteinrichtung 13 Taktschalteinrichtung 14 Taktleitung 15 Schaltungsverzögerungseinrichtung 16 Schaltungsverzögerungseinrichtung 17 Steuerleitung 18 Steuereingang 19 Steuereingang 20 Steuereingang 21 Takteingang 22 Takteingang 23 Takteingang 24 Taktausgang 25 Taktausgang 26 Taktausgang 27 Dateneingangsregister 28 Dateneingangsregister