DE69130723T2 - Verarbeitungsgerät mit Speicherschaltung und eine Gruppe von Funktionseinheiten - Google Patents

Verarbeitungsgerät mit Speicherschaltung und eine Gruppe von Funktionseinheiten

Info

Publication number
DE69130723T2
DE69130723T2 DE69130723T DE69130723T DE69130723T2 DE 69130723 T2 DE69130723 T2 DE 69130723T2 DE 69130723 T DE69130723 T DE 69130723T DE 69130723 T DE69130723 T DE 69130723T DE 69130723 T2 DE69130723 T2 DE 69130723T2
Authority
DE
Germany
Prior art keywords
memory
unit
processing device
units
delay
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE69130723T
Other languages
English (en)
Other versions
DE69130723D1 (de
Inventor
Jean-Michel Junien Nl-5656 Aa Eindhoven Labrousse
Gerrit Ary Nl-5656 Aa Eindhoven Slavenburg
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NXP BV
Original Assignee
Koninklijke Philips Electronics NV
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Koninklijke Philips Electronics NV filed Critical Koninklijke Philips Electronics NV
Publication of DE69130723D1 publication Critical patent/DE69130723D1/de
Application granted granted Critical
Publication of DE69130723T2 publication Critical patent/DE69130723T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Memory System (AREA)
  • Storage Device Security (AREA)

Description

    Verarbeitungsgerät mit Speicherschaltung und eine Gruppe von Funktionseinheiten
  • Die Erfindung bezieht sich auf ein Verarbeitungsgerät wie im beschreibenden Teil von Anspruch 1 dargelegt. Ein derartiges Verarbeitungsgerät ist aus einem Artikel mit dem Titel "CREATE-LIFE: A modular design approach for high performance ASIC's" von den Erfindern des vorliegenden Patentes, erschienen in COMPCON SPRING '90 am 26. Februar 1990 in San Francisco, USA, auf den Seiten 427-433, bekannt.
  • Derartige Verarbeitungsgeräte enthalten Bauteile, die in der Technik als Prozessoren mit sehr langem Befehlswort (very long instruction word processors, VLIW processors) bekannt sind.
  • Der ideale VLIW-Prozessor und ein praktischer VLIW-Prozessor, bekannt als TRACE-Prozessor, werden von R.P. Cowell et al in einem Artikel mit dem Titel "A VLIW Architecture for a Trace Scheduling Compiler" beschrieben, der in den Proceedings of the Second International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS II) in Palo A1to, Kalifornien, vom 5.-8. Oktober 1987, auf den Seiten 180-192, erschienen ist. In einem VLIW-Prozessor ist jeder Programmbefehl ein binäres Wort, das eine Gruppe von Feldern enthält, die entsprechende Funktionseinheiten steuern, und umfaßt typischerweise mehr als 100 Bits. Ein besonderer in der Technik als Scheduler bekannter Compiler nutzt Feinparallelität in einer gewünschten Operationsfolge, um diese sehr langen Programmbefehle zu kompilieren und dabei so viele Funktionseinheiten wie möglich pro Zyklus zu verwenden.
  • Die Speicherschaltung in einer VLIW-Maschine, die oft als Registerdatei bezeichnet wird, dient dazu, von den Funktionseinheiten erzeugte Zwischenergebnisse zu puffern und diese Ergebnisse an die Dateneingänge derselben oder anderer Funktionseinheiten zur weiteren Verarbeitung weiterzuleiten. In dem "idealen" VLIW-Prozessor ist die Speicherschaltung ein Direktzugriffspeicher (random-access memory, RAM) mit mehreren Ports, so daß jeder Ausgang der Funktionseinheiten mit einem Schreibport und jeder Eingang der Funktionseinheiten mit einem Leseport einer gemein samen Gruppe aus Speicherelementen verbunden ist.
  • Unglücklicherweise erfordert, wie von Colwell et al angemerkt, "jegliche vernünftige Anzahl von Funktionseinheiten in dem idealen VLIW-Prozessor eine unmöglich große Anzahl von Ports zur Registerdatei. " In Reaktion auf diese Einschränkung nutzt der TRACE-Prozessor echte Multiport-Registerdateien lediglich zwischen Paaren von Funktionseinheiten. Dadurch geht ein Teil der Leistung des idealen VLIW unweigerlich verloren, und die Registerdateien erfordern immer noch viele Ports, einschließlich zusätzlicher Ports für den Datenaustausch untereinander.
  • Monolithische Integration ist besonders wünschenswert für einen VLIW- Prozessor, dessen interne Bandbreite im Vergleich zu herkömmlichen Prozessoren sehr groß ist. Ein monolithischer VLIW-Prozessor wird von S. Borkar et al in einem Artikel mit dem Titel "iWarp: An Integrated Solution to High-Speed Parallel Computing" beschrieben, der bei der Konferenz Supercomputing ' 88 in Kissimmee, Florida, im November 1988 vorgelegt wurde. Das iWarp-Bauelement enthält tatsächlich fünf Funktionseinheiten, die mit einer echten Multiport-Registerdatei verbunden sind. Die Größe und Komplexität von echten Multiport-Speichern bleibt jedoch ein Haupthindernis bei der Konstruktion und Integration von großen VLIW-Prozessoren, bei denen acht, zehn, zwanzig oder mehr Funktionseinheiten erforderlich sind.
  • Eine weitere Form eines VLIW-Verarbeitungsgerätes wird von B.R. Rau et al in den US-amerikanischen Patentschriften 4.251.874 und 4.553.203 und in der Abhandlung "A Statically Scheduled VLSI Interconnect for Parallel Processors" beschrieben, die bei der CMU Conference on VLSI Systems and Computations im Oktober 1981 vorgelegt wurde. In diesem Gerät sind Multiport-Register an jedem Kreuzungspunkt in einer Crossbar-Schaltung angeordnet, die jeden Eingang der Funktionseinheiten mit jedem Ausgang der Funktionseinheiten verbindet. Bei jeder bedeutenden Anzahl von Funktionseinheiten wird die Schaffung und Steuerung einer derartig großen Anzahl unabhängiger Registerdateien unmöglich.
  • In der gleichzeitig anhängigen Patentanmeldung 290.979, auf die oben verwiesen wird, wird ein Videosignalprozessor beschrieben, bei dem für jeden Eingang jeder Funktionseinheit (in der Anmeldung 290.979 als "Prozessorelement" bezeichnet) eine separate Speichereinheit (in der Anmeldung 290.979 als "Silo" bezeichnet) vorgesehen wird. Die Eingänge der Silos werden durch ein Crossbar-Schaltnetz unter Pro grammsteuerung mit den Ergebnisausgängen der Prozessorelemente verbunden. Ein ähnlicher Aufbau eines Verarbeitungsgerätes wurde von den Erfindern des erfindungsgemäßen Verarbeitungsgerätes in "CREATE-LIFE: A Design System for High Performance VLSI Circuits", erschienen in den Proc. IEEE International Conference on Computer Design, vom 3.-5. Oktober 1988, beschrieben.
  • Bei Betrieb werden die Programmbefehle für ein derartiges Verarbeitungsgerät so angeordnet, daß jedes Ergebnis nur in diejenigen Speichereinheiten geschrieben wird, in denen das Ergebnis für zukünftige Zyklen benötigt wird. Das Schreiben von anderen Ergebnissen in andere Speichereinheiten kann parallel erfolgen, so daß im wesentlichen die gesamte Leistung eines echten Multiport-Speichers ausgenutzt wird, jedoch mit einer derartig großen Einsparung in bezug auf die Schaltungsfläche, daß ein 32-Bit-VLIW-Prozessor mit zehn oder sogar fünfzehn Funktionseinheiten mit der heutigen Technik auf einem einzigen Chip integriert werden kann.
  • Die Leistung dieser Art von Prozessor erreicht nicht diejenige des idealen VLIW-Prozessors, und zwar aufgrund von "Kollisionen", wenn zwei Ergebnisse im gleichen Arbeitszyklus in dieselbe Speichereinheit (dasselbe Silo) geschrieben werden müssen. Während dieses Leistungsdefizit in einem Gerät mit nur wenigen Funktionseinheiten gering ist, stellte sich heraus, daß Kollisionen ein erhebliches Leistungsdefizit in Geräten verursachen können, die mehr Funktionseinheiten aufweisen. Eine große Anzahl von Kollisionen erschwert auch die Ablaufplanung für das Verarbeitungsgerät, vor allem, weil die Neuplanung zum Vermeiden einer Kollision leicht zu einer oder mehreren weiteren Kollisionen führen kann.
  • Aus der europäischen Patentschrift Nr. EP-A-0 259 095 ist ein Verarbeitungsgerät mit einem Cache bekannt. In diesem Verarbeitungsgerät ist ein Verzögerungsglied mit dem Ergebnisausgang einer Befehlseinheit verbunden, so daß das Schreiben eines Ergebnisses in den Cache verzögert werden kann, bis keine Kollision beim Zugriff auf den Cache mehr verursacht wird.
  • Der Erfindung liegt die Aufgabe zugrunde, das Problem der Kollision in einem Verarbeitungsgerät des oben beschriebenen Typs, in dem die Speicherschaltung nicht übermäßig groß und kompliziert ist, zu mindern.
  • Das erfindungsgemäße Verarbeitungsgerät wird in dem beschreibenden Teil von Anspruch 1 geschildert. Durch die Verwendung eines Verzögerungsgliedes in der Speicherschaltung, das durch das Schaltnetz zwischen eine Funktionseinheit, die ein kollidierendes Ergebnis an das Schaltnetz ausgibt, und eine Speichereinheit schalten kann, kann jetzt eine Kollision verhindert werden, ohne daß die Operationen für die verschiedenen Funktionseinheiten neu geplant werden müssen. Die Leistung des idealen VLIW-Prozessors wird ungefähr aufrechterhalten, da immer eines der beiden kollidierenden Ergebnisse vor dem anderen von der entsprechenden Funktionseinheit benötigt wird. Falls aufgrund der Verzögerung eine neue Kollision erfolgt, kann auch diese mit Hilfe des Verzögerungsgliedes verhindert werden, ohne daß es zu einem Leistungsverlust kommt.
  • Das Verzögerungsglied kann eine Speichereinheit mit einem einzigen Speicherplatz enthalten, die zum Beispiel eine, feste Verzögerung von einem Arbeitszyklus ausführen kann. Das Schaltnetz kann durch den Programmbefehl so gesteuert werden, daß der Eingang des Verzögerungsgliedes mit dem Ausgang des Verzögerungsgliedes verbunden wird, um ein Ergebnis um mehr als einen Arbeitszyklus zu verzögern.
  • Ein einziges Verzögerungsglied ermöglicht lediglich die Vermeidung von einer Kollision von zwei Werten pro Zyklus (pro Befehl). Daher kann eine Vielzahl von Verzögerungsgliedern vorgesehen werden, die die gleichzeitige Verzögerung von einer Vielzahl von Ergebnissen, die in einem einzigen Arbeitszyklus erzeugt wurden, ermöglichen. Die Anzahl der Verzögerungsglieder kann so gewählt werden, daß sie in Abhängigkeit von der Anzahl der zu erwartenden Kollisionen kosteneffizient ist. Außerdem kann das Schaltnetz in der Lage sein, jedes Verzögerungsglied mit nur einer Teilgruppe der Speichereinheiten zu verbinden, um auf diese Weise die Schaltungsfläche zu reduzieren, die für die Verbindung des/der Verzögerungsgliedes/-glieder erforderlich ist.
  • Es sind auch verschiedene Arten von Verzögerungsgliedern möglich. Ein Verzögerungsglied kann zum Beispiel eine Speichereinheit enthalten, die eine Vielzahl von adressierbaren Speicherplätzen aufweist, wodurch die gleichzeitige Verzögerung einer Vielzahl von Ergebnissen erfolgen kann.
  • Gemäß einem zweiten Aspekt schafft die Erfindung ein Verarbeitungsgerät, in dem mindestens eine der Speichereinheiten der Speicherschaltung mehr als einen Schreibport aufweist, der mit dem Schaltnetz verbunden ist. In einem derartigen Gerät können "kollidierende" Ergebnisse in der Tat in demselben Zyklus in dieselbe Speichereinheit geschrieben werden. Bei einer derartigen Ausführungsform treten zwar erneut die Probleme echter Multiport-Speicher auf, jedoch ist die von acht separaten Speichereinheiten mit je zwei Schreibports benötigte Fläche kleiner als diejenige, die von einem echten Multiport-Speicher mit sechzehn Schreibports in Anspruch genommen wird. Der/die zusätzliche(n) Schreibport(s) kann/können als Alternative oder zusätzlich zu den Verzögerungsgliedern zur Vermeidung von Kollisionen vorgesehen werden.
  • In einem erfindungsgemäßen Gerät können die gleichen Funktionseinheiten wie in den bekannten VLIW-Prozessoren vorgesehen werden. Dazu gehören Rechenwerke (arithmetic and logic units, ALU) für Ganzzahlen bzw. Gleitkommazahlen, Datenspeichereinheiten, Verzweigungssteuereinheiten und spezielle Einheiten für Multiplikation, Verschiebung, Datenübertragung usw. Im Idealfall wird jede Einheit im Pipelining angeordnet, so daß sie in jedem Zyklus eine neue Funktion beginnen kann, auch wenn eine "Latenz" von einem oder mehreren Zyklen entstehen kann, bevor das Ergebnis jeder Funktion zur Verfügung steht.
  • Kurze Beschreibung der Zeichnungen
  • Ausführungsbeispiele der Erfindung sind in der Zeichnung dargestellt und werden im folgenden näher beschrieben. Es zeigen:
  • Fig. 1 ein verallgemeinertes Verarbeitungsgerät gemäß dem ersten Aspekt der Erfindung;
  • Fig. 2 ein spezielles Verarbeitungsgerät gemäß dem ersten Aspekt der Erfindung;
  • Fig. 3 das Format eines sehr langen Befehlswortes in dem Gerät aus Fig. 2;
  • Fig. 4 einen Teil des nachgebildeten Multiport-Speichers in dem Gerät aus Fig. 2;
  • Fig. 5 die Funktion eines beispielhaften Programmteils;
  • Fig. 6 die Ablaufplanung des beispielhaften Programmteils für das Gerät aus Fig. 2 einschließlich des Problems der Kollisionen;
  • Fig. 7 eine abgeänderte Ausführung des verallgemeinerten Verarbeitungsgerätes aus Fig. 1 und
  • Fig. 8 eine weitere abgeänderte Ausführung des verallgemeinerten Ver arbeitungsgerätes aus Fig. 1 gemäß dem zweiten Aspekt der Erfindung.
  • Ausführliche Beschreibung der Ausführungsbeispiele
  • Fig. 1 zeigt ein Blockschaltbild eines Verarbeitungsgerätes, das N Funktionseinheiten F1, F2, ... FN und eine nachgebildete Multiport-Speicherschaltung 10 umfaßt. Jede Funktionseinheit Fk (wobei k eine Zahl von 1 bis N ist) besitzt Eingänge zum Empfangen erster und zweiter Operanden Fk.L und Fk.R von entsprechenden Datenausgängen 12 der Speicherschaltung 10. Jede Funktionseinheit Fk besitzt einen Steuereingang 13 zum Empfangen eines entsprechenden Operationsauswahlcodes (Opcodes) Fk.OP von einem (in Fig. 1 nicht dargestellten) Befehlsregister. Ein Ausgang jeder Funktionseinheit Fk leitet ein Ergebnis Fk.O an einen entsprechenden Dateneingang 14 der Speicherschaltung 10 weiter.
  • Innerhalb der nachgebildeten Multiport-Speicherschaltung 10 ist eine separate Lese-/Schreib-Speichereinheit (RAM) 15 für jeden Datenausgang 12 der Speicherschaltung 10 vorgesehen (in diesem Beispiel zwei pro Funktionseinheit). Jede derartige Speichereinheit 15 weist einen einzigen Leseport auf, der das entsprechende Argument Fk.x (wobei x L oder R ist) der zugehörigen Funktionseinheit über den Datenausgang 12 zuführt. Ein Leseadresseneingang ist jedem Leseport zugeordnet und empfängt eine Leseadresse Fk.x.RA vom Befehlsregister.
  • Jeder Dateneingang 14 der Speicherschaltung 10 bildet eine Busleitung 16 innerhalb eines Crossbar-Schaltnetzes 18 der Speicherschaltung 10. Das Crossbar- Schaltnetz 18 enthält außerdem eine Anzahl von Multiplexern 20, von denen jeder einen Ausgang aufweist, der mit einem Schreibport der entsprechenden Speichereinheit 15 verbunden ist. Jeder Multiplexer 20 kann, gesteuert von einem vom Befehlsregister empfangenen Auswahlsignal Fk.x.SE, jegliche der Busleitungen 16 (Ausgänge der Funktionseinheiten) mit dem Schreibport der zugehörigen Speichereinheit 15 verbinden. Das Befehlsregister führt auch einem Schreibadresseneingang jeder Speichereinheit 15 eine entsprechende Schreibadresse Fk.x.WA und ein zugehöriges Schreibaktivierungssignal Fk.x.WE, zu.
  • In der Speicherschaltung 10 ist ein Verzögerungsglied in Form eines Spezialregisters 21 vorgesehen. Ein Dateneingang des Spezialregisters 21 kann, gesteuert von einem vom (nicht dargestellten) Befehlsregister empfangenen Auswahlsignal SP.SE, über einen zusätzlichen Multiplexer 22 im Schaltnetz 18 mit jeder beliebigen Busleitung 16 verbunden werden. Ein Ausgang des Spezialregisters 21, der ein Signal SP.O ausgibt, bildet eine zusätzliche Busleitung 24 in dem Crossbar-Schaltnetz 18. Die Busleitung 24 kann durch jeglichen der Multiplexer 20 so verbunden werden, daß sie das Signal SP.O dem Schreibport der entsprechenden Speichereinheit 15 zuführt. Die zusätzliche Busleitung 24 kann außerdem durch ein Auswahlsignal SP.SE für die Verbindung zum Eingang des Spezialregisters ausgewählt werden.
  • Das in Fig. 1 gezeigte Gerät stellt einen Teil eines VLIW-Prozessors dar, in dem alle Funktionseinheiten - unter der Steuerung eines eine Folge von sehr langen Befehlswörtern enthaltenden Programms - synchron und parallel funktionieren. Durch die Pipeline-Anordnung innerhalb der Funktionseinheiten und der Steuerschaltung kann jede Funktionseinheit Fk in jedem Arbeitszyklus eine Grundfunktion beginnen, wobei sie ihre Operanden von der Multiport-Speicherschaltung 10 holt und ihre Ergebnisse in demselben oder einem folgenden Zyklus wieder in die Speicherschaltung 10 schreibt.
  • Ein Befehlswort pro Arbeitszyklus wird aus Daten erzeugt, die in einem Programmspeicher gespeichert sind. Verschiedene Felder des Befehlswortes, das mehrere hundert Bits lang sein kann, bilden die verschiedenen Adressen- und Auswahlsignale mit dem Suffix. SE,. WA,. WE, .RA und. OP in Fig. 1, die die Speicherschaltung 10 steuern und die von den Funktionseinheiten 8 durchzuführenden Funktionen auswählen. Durch geeignete Programmierung (vorzugsweise automatisiert durch einen Scheduler- Compiler, wie unten beschrieben) kann Feinparallelität innerhalb eines Algorithmus genutzt werden, um sicherzustellen, daß so viele Funktionseinheiten wie möglich nützliche Operationen in jedem Zyklus beginnen.
  • Bei dem idealen VLIW-Prozessor würde ein echter Multiport-Speicher bewirken, daß ein Ergebnis Fk.O von jeglichem Funktionseinheitsausgang frei in der Speicherschaltung gespeichert und zu einem späteren Zeitpunkt gelesen werden kann, um als Argument von einer beliebigen anderen Funktionseinheit Fk' verwendet zu werden. Die nachgebildete Multiport-Speicherschaltung 10 kann fast die gleiche Funktionalität bieten, indem Ergebnisse nur in Speichereinheiten gespeichert werden, die mit den Funktionseinheiten verbunden sind, die diese Ergebnisse später als Operanden verwenden müssen. Der Scheduler kennt diese erforderlichen Ergebnisse aus dem Zwischenco deteil selbst.
  • Abgesehen von dem Verzögerungsglied 21 (SP) besteht für den nachgebildeten Multiport-Speicher 10 die Einschränkung, daß zwei Ergebnisse Fk.O und Fk'.O, die in demselben Zyklus von unterschiedlichen Funktionseinheiten erzeugt wurden, nicht beide in dieselbe Speichereinheit (RAM) 15 geschrieben werden können. Stellt der Scheduler-Compiler fest, daß zwei in demselben Zyklus erzeugte Ergebnisse in späteren Zyklen aus derselben Speichereinheit 15 gelesen werden müssen, so stellt dies eine "Kollision zweier Werte" dar. Es können natürlich auch Kollisionen höherer Ordnung auftreten, bei denen drei oder mehr in einem Zyklus erzeugte Ergebnisse von demselben Funktionseinheitseingang benötigt werden, jedoch treten diese typischerweiser wesentlich seltener auf als Kollisionen zweier Werte. Viele Kollisionen können durch eine minimale Unterbrechung vermieden werden, zum Beispiel durch Vertauschen des linken und des rechten Operanden einer symmetrischen Operation. Im allgemeinen muß jedoch eine Neuplanung größeren Ausmaßes durchgeführt werden. Im folgenden werden das Problem der Kollisionen und seine Lösung durch die Verwendung von Verzögerungsgliedern beschrieben. Eine weitere Beschreibung erfolgt dann mit Bezug auf den speziellen Prozessor in den Fig. 2 bis 4.
  • Das Verzögerungsglied in Form des Spezialregisters 21 (SP) ermöglicht es dem nachgebildeten Multiport-Speicher 10, die Leistung eines echten Multiport-Speichers auch in dem Fall zu bieten, daß eine Kollision zweier Werte in einem gegebenen Zyklus auftritt. Es sei angenommen, daß die in demselben Zyklus i durch die Funktionseinheiten F1 und F2 erzeugten Ergebnisse F1.O(i) und F2.O(i) beide in späteren Zyklen erforderlich sind, um den ersten Operanden F1.L für die Funktionseinheit F1 zu bilden. Da in diesem Ausführungsbeispiel jede Speichereinheit nur über einen Leseport verfügt, wird immer eines dieser Ergebnisse, zum Beispiel F1.O(i), vor dem anderen, d.h. F2.O(i), benötigt. Der Scheduler kann F1.O(i) sofort mit Hilfe der Felder F1.L. SE(i), F1.L. WA(i) und F1.L.WE(i) in dem Befehlswort für Zyklus (i) an den gewünschten Platz in der Speichereinheit 15 für den Operanden F1.L weiterleiten. Das weniger dringend benötigte Ergebnis F2.O(i) kann in demselben Befehlswort mit Hilfe des Feldes SP.SE(i) zum Spezialregister 21 weitergeleitet werden. Angenommen, Register 21 implementiert eine feste Verzögerung von einem Zyklus, dann erscheint das verzögerte Ergebnis F2.O(i) im folgenden Zyklus als SP.O(i+1). Die Felder F1.L.SE(i+1), F1.L.WA(i+1) und F1.L.WE(i+1) im nächsten Befehl (Zyklus i+1) können dann dazu verwendet werden, das verzögerte Ergebnis F2.O(i) zur Speichereinheit für den Operanden F1.L weiterzuleiten, wo es benötigt wird.
  • Dieser Vorgang kann erfolgen, ohne daß die Positionen der Operationen im Ablaufplan beeinflußt werden. Es ist anzumerken, daß die Verzögerung eines Ergebnisses eine weitere Kollision verursachen kann, zum Beispiel wenn sich herausstellt, daß ein im Zyklus i+1 erzeugtes drittes Ergebnis, beispielsweise F1.O(i+1), ebenfalls in dieselbe Speichereinheit geschrieben werden muß. Diese Kollision kann auch ohne Leistungsverlust verhindert werden, da wiedertun eines der Ergebnisse F2(i) und F1.O(i+1) immer früher benötigt wird als das andere. Je nachdem, welches der Ergebnisse dringender benötigt wird, kann entweder (a) das verzögerte Ergebnis F2.O(i) = SP.O(i+1) für eine weitere Verzögerung um einen Zyklus zum Register 21 zurückgeleitet werden, während F1.O(i+1) in die Speichereinheit geschrieben wird, oder (b) F1.O(i+1) kann zum Spezialregister 21 weitergeleitet und SP.O(i+2) werden, während das verzögerte Ergebnis F2.O(i) = SP.O(i+1) in die Speichereinheit geschrieben wird.
  • Mit einem einzigen Register 21 als Verzögerungsglied kann nur eine einzige Kollision zweier Werte einmal verhindert werden. Durch das Hinzufügen weiterer dem Register 21 ähnlicher Register könnten Kollisionen von drei Werten bzw. mehrere Kollisionen zweier Werte verhindert werden. Jedes Register und der zugehörige Multiplexer 22 erfordern sehr wenig zusätzliche Schaltungsfläche.
  • Die Art und die Anzahl der Funktionseinheiten, die Anzahl und die Länge ihrer Operanden und Ergebnisse und die Anzahl der Speicherplätze in jeder zugehörigen Speichereinheit können alle frei gewählt werden, um dem geplanten Anwendungsbereich des Gerätes angepaßt werden. Ein relativ kleines VLIW-Gerät wird im folgenden als Beispiel unter Bezugnahme auf die Fig. 2 bis 6 beschrieben.
  • In Fig. 2 ist eine nachgebildete Multiport-Speicherschaltung 30 mit fünf Funktioneinheiten verbunden, die eine Konstanteneinheit CO, ein Rechenwerk AL, eine Registereinheit RG, eine Datenspeichereinheit DM und eine Verzweigungseinheit BR umfassen. Innerhalb der Speicherschaltung 30 sind in schematischer Form die Speichereinheiten 26, die Multiplexer 27 und ein Spezialregister SP mit einem zugehörigen Multiplexer 29 dargestellt.
  • Es ist ein globaler Controller 41 vorgesehen, der einen Sequencer SEQ und eine Befehlsausgabe-Pipeline IIP enthält. Der Sequencer SEQ erzeugt in jedem Zyklus ein Programmzählwort PC, das der Befehlsausgabe-Pipeline IIP zugeführt wird. Die Befehlsausgabe-Pipeline IIP kann sich außerhalb des Chips befinden und beinhaltet den Programmspeicher, in dem die sehr langen Befehlsworte, die das auszuführende Programm bilden, codiert sind. Nach einer Verzögerung von einer gewissen Anzahl von Zyklen führt die Befehlsausgabe-Pipeline IIP einem Befehlsregister 46 auf dem Chip ein sehr langes Befehlswort IW zu, das in dem Programmspeicher unter der Adresse PC gespeichert ist.
  • Das Befehlswort IW im Register 46 umfaßt ein Zielsteuerfeld DEC und eine Anzahl von Feldern COC, ALC, RGC, DMC und BRC zur Steuerung der einzelnen Funktionseinheiten CO, AL, RG, DM bzw. BR. Die Gesamtzahl der Bits im Befehlswort IW beträgt 162, obwohl der beschriebene Prozessor ein sehr einfaches Beispiel darstellt. Fig. 3 zeigt Felder des Befehlswortes IW genauer, wobei die Anzahl der Bits in jedem markierten Feld unterhalb dieses Feldes angegeben ist.
  • Die Konstanteneinheit CO weist keine Operandeneingänge und einen 32- Bit-Ergebnisausgang (CO.O) auf, der mit einem Eingang der Speicherschaltung 30 verbunden ist. Tatsächlich umfaßt die Konstanteneinheit CO eine direkte Verbindung zwischen dem 32-Bit-Feld COC im Befehlswort IW (Fig. 3) und dem Ausgang der Konstanteneinheit CO. Die Konstanteneinheit CO ermöglicht es daher, Konstantenwerte von innerhalb des Befehlswortes über die Speicherschaltung 30 anderen Einheiten zuzuführen.
  • Das Rechenwerk AL weist einen 1-Bit-Schutzwerteingang (AL.G) und zwei (links und rechts) 32-Bit-Argumenteingänge (AL.L und AL.R) auf, die mit den entsprechenden Speichereinheiten innerhalb der Speicherschaltung 30 verbunden sind. Die Einheit AL hat einen 32-Bit-Ausgang (AL.O), der zurück zur Speicherschaltung 30 verbunden ist, und wird von einem 16-Bit-Feld ALC des Befehlswortes IW gesteuert.
  • Fig. 4 zeigt im Detail den Teil der nachgebildeten Multiport-Speicherschaltung 30, der zu dem Rechenwerk AL gehört. Wie in dem verallgemeinerten Ausführungsbeispiel in Fig. 1 werden den Operanden AL.G, AL.L bzw. AL.R separate Speichereinheiten (RAMs) 48, 50 und 52 zugeordnet. Im Gegensatz zu dem Ausführungsbeispiel in Fig. 1 sind jedoch keine separaten Schreibaktivierungssignale WE für die Speichereinheiten in dem Gerät aus den Fig. 2 bis 4 vorgesehen. Stattdessen kann mindestens ein nichtexistenter oder zumindest nichtbeschreibbarer Speicherplatz adressiert werden, wenn nicht gewünscht wird, daß in diese Speichereinheit geschrieben wird. Die Breite des Befehlswortes IW kann daher reduziert werden, da keine WE-Bits vorliegen, wenn angenommen wird, daß der Wert dieser Bits zum Zeitpunkt der Ablaufplanung bereits bekannt ist, wenn die Ergebnisse bestimmten Speicherplätzen zugewiesen werden.
  • Die Speichereinheit 48 für das Schutzbit AL.G hat acht 1-Bit-Plätze für die Speicherung boolescher Werte (Bits), einschließlich eines nichtbeschreibbaren Speicherplatzes, wie gerade beschrieben. Eine 3-Bit-Leseadresse für die Speichereinheit 48 wird durch Befehlsregister 46 von einem 3-Bit-Feld AL.G.RA im Steuerfeld ALC des Befehlswortes IW (siehe Fig. 3) zugeführt, und ein 1-Bit-Leseport 54 der Speichereinheit führt der Einheit AL ein Schutzbit AL.G. von dem adressierten Speicherplatz zu.
  • Eine Anzahl von 1-Bit-Eingängen eines Multiplexers 56 ist mit den Bits geringster Wertigkeit (least significant bit, lsb) der 32-Bit-Busleitungen verbunden, die mit den Ergebnisausgängen (CO.O, AL.O usw.) der verschiedenen Funktionseinheiten verbunden sind. Ein zusätzlicher Eingang des Multiplexers ist mit dem niedrigstwertigen Bit einer zusätzlichen 32-Bit-Busleitung 58 verbunden, die eine verzögerte Ergebnisausgabe SP.O vom Spezialregister SP überträgt, das von der gleichen Art wie das Verzögerungsglied mit dem Bezugszeichen 21 in Fig. 1 ist. Die Verwendung des niedrigstwertigen Bits für die Schutzbits erfordert die Kompatibilität mit gewissen Programmierkonventionen, darunter zum Beispiel die Sprache "C". In einer anderen Umgebung kann es günstiger sein, das Bit mit der höchsten Wertigkeit (most significant bit, msb) oder ein anderes Bit auszuwählen.
  • Der Multiplexer 56 weist einen 1-Bit-Ausgang 60 auf, der mit einem Schreibport der Speichereinheit 48 verbunden ist. Der Multiplexer 56 wird von einem 3- Bit-Auswahlfeld AL.G.SE im Zielsteuerfeld DEC des Befehlswortes IW gesteuert. Eine 3-Bit-Schreibadresse für den Schreibport der Speichereinheit 48 wird von dem benachbarten 3-Bit-Feld AL.G.WA im Zielsteuerfeld DEC geliefert.
  • In gleicher Weise sind den 32-Bit-Speichereinheiten 50 (für AL.L) und 52 (für AL.R) die 32-Bit-Multiplexer 62 bzw. 64 zugeordnet. Jede weist 16 Speicherplätze einschließlich eines nichtbeschreibbaren Speicherplatzes auf. Das Zielsteuerfeld DEC enthält zwei 3-Bit-Auswahlfelder AL.L.SE und AL.R.SE zum Steuern der Multiplexer 62 und 64 und zwei 4-Bit-Felder AL.L.WA und AL.R.WA, die 4-Bit-Schreibportadressen für die Speichereinheiten 50 bzw. 52 liefern. Zwei 4-Bit-Felder AL.L.RA und AL.R.RA im Steuerfeld ALC liefern die Leseadressen für die Leseports der Speichereinheiten 50 (für AL.L) bzw. 52 (für AL.R).
  • Ein Operationscode AL.OP für das Rechenwerk AL wird von einem S- Bit-Feld im Steuerfeld ALC für die Einheit AL zugeführt. In jedem Zyklus bestimmt der Operationscode AL.OP, welche Operation (Addition, Subtraktion, Vergleich, UND, ODER usw.) mit den Argumenten AL.L und AL.R durchgeführt werden soll, um das Ergebnis AL.O zu erzeugen.
  • Zurück zu Fig. 2: die Registereinheit RG bietet eine On-Chip-Speichermöglichkeit für sechzehn häufig verwendete Programmvariablen mit je 32 Bits. Die Einheit RG hat innerhalb der Speicherschaltung 30 zugehörige Speichereinheiten für ein Schutzbit RG.G und einen 32-Bit-Dateneingang RG.I. Die Speichereinheiten weisen jeweils nur vier Speicherplätze, einschließlich eines nichtbeschreibbaren Speicherplatzes auf. Ein Datenausgang (RG.O) ist mit einem Eingang der Speicherschaltung 30 verbunden, in der er eine entsprechende Busleitung (RG.O, siehe auch Fig. 4) bildet. Das Zielsteuerfeld DEC enthält zwei 3-Bit-Auswahlfelder RG.G.SE und RG.LSE zur Steuerung der zugehörigen Multiplexer und zwei 2-Bit-Schreibadressenfelder RG.G.WA und RG.I.WA zur Auswahl zwischen den vier Speicherplätzen in den entsprechenden Speichereinheiten.
  • Innerhalb des 9-Bit-Registereinheit-Steuerfeldes RGC sind zwei 2-Bit- Leseadressen RG.G.RA und RG. LRA vorgesehen, um den Speicherplatz der Werte RG.G. und RG.I auszuwählen, die von den entsprechenden Speichereinheiten gelesen werden sollen. Ein 5-Bit-Operationscodefeld RG.OP enthält ein Bit zum Auswählen zwischen Registerlese- und Registerschreibfunktionen und vier Bits zum Auswählen zwischen den sechzehn Registern innerhalb der Einheit RG. Der Speicherplatz einer Variablen innerhalb der Registereinheit RG ist daher durch den Compiler festgelegt.
  • Die Datenspeichereinheit DM weist - zumindestens im Entwurf - eine größere Speicherkapazität für Variablen auf und umfaßt in der Praxis eine Schnittstelle zu einer Off-Chip-Schreib-Lese- bzw. Festspeicherbank über einen On-Chip-Cache von der Art, wie sie dem Fachkundigen wohlbekannt ist. Innerhalb der nachgebildeten Multi port-Speicherschaltung 30 sind separate Speichereinheiten für ein Schutzbit DM.G, ein 32-Bit-Adressenwort DM.A und ein 32-Bit-Eingangsdatenwort DM.I vorhanden. Diese Speichereinheiten haben jeweils 256 Speicherplätze einschließlich eines nichtbeschreibbaren Speicherplatzes. Ein 32-Bit-Datenausgang (DM.O) der Datenspeichereinheit DM ist mit einem Eingang der Speicherschaltung 30 verbunden, in der er eine entsprechende Busleitung (DM.O, siehe auch Fig. 4) bildet. Das Zielsteuerfeld DEC enthält drei 3-Bit-Auswahlfelder DM.G.SE, DM.A.SE und DM.I.SE zur Steuerung der Multiplexer innerhalb der Speicherschaltung 30 und drei 8-Bit-Schreibadressenfelder DM.G.WA, DM.A.WA und DM.I.WA zur Auswahl zwischen den 256 Speicherplätzen in jeder der zugehörigen Speichereinheiten.
  • Innerhalb des 25-Bit-Datenspeichereinheit-Steuerfeldes DMC sind drei 8- Bit-Leseadressen DM.G.RA, DM.A.RA und DM. LRA zur Auswahl des Speicherplatzes der Werte DM.G, DM.A und DM.I vorhanden, die aus ihren entsprechenden Speichereinheiten gelesen werden sollen. Ein 1-Bit-Operationscodefeld DM.OP enthält ein Bit zur Auswahl zwischen den Speicherlese- und Speicherschreibfunktionen. Das Adressenwort DM.A definiert die Adresse zum Schreiben des Datenwortes DM.I oder zum Lesen des Datenwortes DM.O. Dies ermöglicht die dynamische Berechnung von 32-Bit- Adressen während des Ablaufs der Programme, die zur Adressierung von 232 Speicherplätzen ausreichen.
  • Die Verzweigungseinheit BR ermöglicht es, die Reihenfolge der von dem Sequencer SEQ erzeugten Befehlsadressen PC so zu ändern, daß eine Verzweigung bei der Programmausführung bewirkt wird. Zu der Einheit BR gehören Speichereinheiten innerhalb der Speicherschaltung 30 für ein Schutzbit BR.G und eine 32-Bit-Zieladresse BR.A. Diese Speichereinheiten weisen je vier Speicherplätze auf, einschließlich eines nichtbeschreibbaren Speicherplatzes. Das Zielsteuerfeld DEC enthält zwei 3-Bit-Auswahlfelder BR.G.SE und BR.A.SE zur Steuerung der zugehörigen Multiplexer und zwei 2-Bit-Adressenfelder BR.G.WA und BR.A.WA zur Auswahl zwischen den vier Speicherplätzen in den entsprechenden Speichereinheiten.
  • Innerhalb des 4-Bit-Verzweigungseinheit-Steuerfeldes BRC sind zwei 2- Bit-Leseadressen BR.G.RA und BR.A.RA zur Auswahl des Speicherplatzes der Werte BR.G und BR.A vorgesehen, die aus ihren entsprechenden Speichereinheiten gelesen werden sollen. Die Verzweigungseinheit leitet einfach das Schutzbit BR.G und die Zieladresse BR.A zum Sequencer SEQ weiter. Es ist kein Operationscodefeld BR.OP erforderlich. Innerhalb des Sequencers SEQ wird der boolesche Wert des Schutzbits BR.G geprüft. Ist BR.G WAHR, muß eine Verzweigung implementiert werden und der Sequencer SEQ setzt den nächsten Wert von PC gleich der von der Speicherschaltung 30 empfangenen Zieladresse BR.A. Ist BR.G FALSCH, erhöht der Sequencer SEQ lediglich den Wert von PC um Eins auf PC+1 und adressiert den nächsten Befehl im gespeicherten Programm.
  • Daher kann durch die Weiterleitung eines logischen Ergebnisses AL.O an die Speichereinheit für BR.G (lsb WAHR oder FALSCH) eine bedingte Verzweigung durchgeführt werden. Eine unbedingte Verzweigung (immer oder nie) kann durchgeführt werden, indem ein Konstantenergebnis CO.O an die Speichereinheit für BR.G weitergeleitet wird oder indem die Schaltung so ausgelegt wird, daß die nichtbeschreibbaren Speicherplätze in dieser Speichereinheit permanent WAHR oder permanent FALSCH sind. Dies ist bei dem vorliegenden Ausführungsbeispiel besonders günstig, da, wie oben beschrieben, mindestens ein Speicherplatz in jeder Speichereinheit schon nichtbeschreibbar ist. Oft wird ein Schutzbit BR.G = FALSCH (nie verzweigen) erforderlich sein, wenn in einem gegebenen Zyklus keine Verzweigung gestartet werden soll.
  • Der Sequencer SEQ erzeugt auch einen Pseudoprogramm-Zählwert PPC, der einem Eingang der Speicherschaltung 30 zugeführt wird, wo er eine Busleitung bildet (PPC, siehe Fig. 4). Der PPC kann von anderen Funktionseinheiten einschließlich der Verzweigungseinheit BR genutzt werden, um eine programmzählerbezogene Adressierung zu implementieren. Zu diesem Zweck kann eine Leseverzögerung definiert werden als die Differenz zwischen der Zyklusnummer eines Befehls zum Lesen eines Wertes PPC aus der Busleitung in eine Speichereinheit und der Zyklusnummer des Befehls, bei dem PC gleich diesem Wert von PPC ist.
  • Im Betrieb erfolgt eine Verzweigungsverzögerung von b Zyklen zwischen dem Zyklus i, in dem ein Verzweigungsbefehl ausgegeben wird, und dem ersten Zyklus i+b, in dem das Befehlswort IW(i+b) von dem Verzweigungsbefehl beeinflußt wird. Der gleiche boolesche Wert, der den Verzweigungsbefehl bedingt, kann zu den Schutzbiteingängen AL.G, RG.G, DM.G und BR.G weitergeleitet und in den dazwischenliegenden Zyklen dazu verwendet werden, zustandsverändernde Operationen bedingt zu sperren, die für die verschiedenen Funktionseinheiten während der Verzweigungsver zögerung einschließlich weiterer Verzweigungen geplant sind. Unter Nutzung der Kenntnisse der Verzweigungswahrscheinlichkeit wird der Compiler dadurch in die Lage versetzt, nützliche Operationen innerhalb der Verzweigungsverzögerung eines unwahrscheinlichen bedingten Verzweigungsbefehls zu planen und gleichzeitig einen korrekten Zustand in der Minderzahl der Fälle sicherzustellen, in denen die Verzweigungsbedingung erfüllt wird. Um zu ermöglichen, daß ungeschützte Operationen höchst effizient in diesen Einheiten initiiert werden, kann der nichtbeschreibbare Speicherplatz jeder Schutzbit-Speichereinheit so ausgelegt werden, daß in Reaktion auf die geeigneten zugehörigen Leseadressen .RA an ihren Leseports WAHR erscheint. Die nichtbeschreibbaren Speicherplätze der 32-Bit-Operandenspeichereinheiten können ebenfalls so ausgelegt werden, daß sie einen bekannten, häufig benötigten Wert, z.B. Null, ausgeben.
  • Lediglich der Inhalt des Off-Chip-Speichers, der Register der Registereinheit RG und des Programmzählers PC wird als Teil des für das Programmiergerät sichtbaren Zustands des Verarbeitungsgerätes in dem vorliegenden Ausführungsbeispiel angesehen. Die nachgebildete Multiport-Speicherschaltung 30 wird vom Compiler rein vorübergehend als Puffer für Zwischenvariable verwendet. Infolgedessen benötigen Funktionseinheiten wie die Konstanteneinheit CO keinen Schutz. Das Rechenwerk AL erhält einen Schutz, um Ausnahmen wie gelegentlich auftretenden arithmetischen Überlauf zu vermeiden, auch wenn die Einheit AL selbst nicht den für das Programmiergerät sichtbaren Zustand des Gerätes verändern kann.
  • Zusätzlich zu der Verzweigungsverzögerung der Verzweigungseinheit BR muß der Scheduler-Compiler die sogenannte "Latenz" jeder Funktionseinheit kennen. Die Latenz einer Funktionseinheit ist definiert als die Differenz zwischen der Nummer des Zyklus, in der eine Operation gestartet wird, und der Nummer des Zyklus, in dem das Ergebnis (AL.O usw.) dieser Operation erzeugt und vom Zielsteuerfeld DEC zu dem/den gewünschten Speicherplatz (-plätzen) in der nachgebildeten Multiport-Speicherschaltung 30 weitergeleitet wird. Die obengenannte Verzweigungsverzögerung kann als die Summe der Latenz durch die Verzweigungseinheit BR und eine Latenz durch den Sequencer SEQ und die Off-Chip-Befehlsausgabe-Pipeline IIP angesehen werden.
  • Zum Zweck des folgenden Programmierbeispiels wird angenommen, daß die folgende Latenzen für die Funktionseinheiten gelten:
  • Einheit CO - Latenz 0 Zyklen;
  • Einheit AL - Latenz 1 Zyklus;
  • Einheit RG - Latenz 1 Zyklus;
  • Einheit DM - Latenz 2 Zyklen; und
  • Einheit BR - Verzweigungsverzögerung 5 Zyklen.
  • Die nachstehende Liste enthält einen Teil des Quellencodes einer höheren Programmiersprache. Die Variablen p und q zeigen auf zwei Datensätze im Speicher. Das Ziel des Programms ist es, das Kopieren von zwei 32-Bit-Werten von Feldern in dem Datensatz q in zwei entsprechende Felder im Datensatz p zu bewirken.
  • Liste 1
  • p^.field1 : = q^.field1;
  • p^.field2 : = q^.field2;
  • Fig. 5 zeigt eine mögliche Organisation von Daten, die zur Implementierung der Befehle der höheren Programmiersprache aus der Liste 1 verwendet werden könnte. Die Programmvariablen werden in einer Hochgeschwindigkeits-Registerdatei REG mit sechzehn Speicherplätzen numeriert von 0 bis 15 und einer größeren Schreib-Lese-Speicherbank MEM (außerhalb des Chips) gespeichert. Eine lokale Basisadresse LB ist am Speicherplatz 0 der Registerdatei REG gespeichert. Die Adresse LB zeigt auf den Beginn einer Tabelle mit Variablenwerten in der Speicherbank MEM, wobei die beiden Datensatzzeiger p und q an den Speicherplätzen LB+12 bzw. LB+8 gespeichert sind. Jede Variable p und q ist ein Zeiger auf den Beginn des entsprechenden Datensatzes, der an anderer Stelle in der Speicherbank MEM gespeichert ist. Das erste Feld jedes Datensatzes ist mit einem Versatz von Null bezüglich der durch die entsprechende Zeigervariable definierten Adresse gespeichert. Das zweite Feld jedes Datensatzes ist mit einem Versatz von vier von der entsprechenden Zeigervariablen gespeichert. Somit kann der Wert q^.field2 aus dem Speicherplatz mit der Adresse q+4 gelesen werden.
  • Liste 2 zeigt einen Teil eines Zwischencodes mit der Bezeichnung T1, der durch einen Compiler erzeugt werden könnte, um die Befehle einer höheren Programmiersprache aus Liste 1 in einem VLIW-Prozessor auszuführen, wobei die oben in bezug auf Fig. 5 beschriebene Datenorganisation vorausgesetzt wird. Jede Zeile der Liste 2 definiert eine einzelne Grundoperation Op001 bis Op014, deren Ausführung durch eine geeignete Funktionseinheit zu planen ist. Ein Kommentar (*...*) am Ende jeder Zeile gibt erst die Art der benötigten Funktionseinheit (AL, RG, CO usw.) an und beschreibt dann das Ergebnis (die Ausgabe) dieser Operation. Die Bezugszeichen 001 und 002 in der Operation Op003 (beispielsweise) geben an, daß die Operanden für Op003 die Ergebnisse von Op001 bzw. Op002 sind. Somit besteht die Wirkung der Operation Op003 darin, die Ergebnisse der Operationen Op001 und Op002 zu addieren, während die Wirkung der Operation Op009 darin besteht, das Ergebnis von Op008 in den Off-Chip-Datenspeicher an einen durch das Ergebnis von Op004 adressierten Speicherplatz zu schreiben. Betrachtet man diese Informationen in Zusammenhang mit der Beschreibung aus Fig. 5, dann erklärt sich der Zweck jeder Operation Op001 bis Op014 in Liste 2 zur Implementierung der in Liste 1 aufgeführten Funktion selbst.
  • Liste 2
  • T1:
  • Op001 rdreg(0); (* RG, lokale Basisadresse *)
  • Op002 constant(12); (* CO, Versatzwert für p *)
  • Op003 aplus 001 002; (* AL, Adresse von p *)
  • Op004 read 003; (* DM, p *)
  • Op005 constant(8); (* CO, Versatzwert für q *)
  • Op006 aplus 001 005; (* AL, Adresse von q *)
  • Op007 read 006; (* DM, q *)
  • Op008 read 007; (* DM, q^.field1 *)
  • Op009 write 004 008; (* DM, p^.field1 : = q^.field1 *)
  • Op010 constant (4); (* CO, Versatz für field2 *)
  • Op011 aplus 004 010; (* AL, Adresse von p^.field2 *)
  • Op012 aplus 007 010; (* AL, Adresse von q^.field2 *)
  • Op013 read 012; (* DM, q^.field2 *)
  • Op014 write O11 013; (* DM, p^.field2: = q^.field2 *)
  • GOTO EXIT
  • Es ist offensichtlich, daß der Zwischencodeteil T1 sequentiell und nicht speziell für irgendeine besondere Konfiguration des VLIW-Prozessors dargestellt ist, vorausgesetzt, daß mindestens eine Funktionseinheit für die Durchführung jeder Operation geeignet ist. Ist der Compiler erst einmal bei der Erfassung derartiger Teilstücke angekommen, die zusammen ein Anwendungsprogramm ergeben, ist es die Aufgabe eines Schedulers, jede Operation des Teilstücks auf eine bestimmte Funktionseinheit in einem bestimmten Zyklus in einer bestimmten Gerätekonfiguration abzubilden. Der Scheduler arbeitet mit einer Reihe von Einschränkungen, die durch den Aufbau des speziellen VLIW-Prozessor vorgegeben sind. Diese Einschränkungen betreffen in erster Linie die Anzahl und die Art der im Ziel-VLIW-Prozessor verfügbaren Funktionseinheiten und die Latenz jeder Funktionseinheit. Weitere Einschränkungen betreffen die Anzahl der Speicherplätze in jeder Speichereinheit des nachgebildeten Multiport-Speichers. Diese Speicherplätze werden vom Scheduler nach Bedarf dynamisch zugeordnet. Bei dem einfachen, durch das Teilstück T1 dargestellten Ablaufplanungsproblem ist zu erkennen, daß die Anzahl der Speicherplätze in jeder Speichereinheit in dem VLIW-Verarbeitungsgerät aus den Fig. 2 bis 4 ausreicht und die begrenzte Kapazität der Speichereinheiten in der vorliegenden Beschreibung nicht als Einschränkung angesehen zu werden braucht.
  • Die Latenz für jede Operation ist von Bedeutung, weil Operationen, die von den Ergebnissen anderer Operationen abhängen, erst geplant werden dürfen, wenn die Latenzen aller anderen Operationen abgelaufen sind. Somit muß zum Beispiel die Operation Op009 mindestens 2 Zyklen später als Op004 (DM Latenz ist 2) und mindestens 2 Zyklen später als Op008 geplant werden. Auf ähnliche Weise kann die Operation Op011 in demselben Zyklus wie Op010 (CO Latenz ist 0) geplant werden, jedoch mindestens 2 Zyklen später als Op004 (DM Latenz ist 2). Dies setzt voraus, daß das gleichzeitige Schreiben und in einen Speicherplatz und Lesen aus einem Speicherplatz möglich ist. Sonst kann eine Latenz von einem weiteren Zyklus für jede Operationsart erforderlich sein.
  • Fig. 6 zeigt drei unterschiedliche Ablaufpläne (I, II und III), die jeweils den Zwischencodeteil T1 auf den oben in bezug auf die Fig. 2, 3 und 4 beschriebenen speziellen VLIW-Prozessor abbilden. Jede Zeile jeder Tabelle stellt ein sehr langes Befehlswort IW und somit einen Maschinenzyklus dar. Die Nummer der Zyklen ist in der Spalte links außen mit der Überschrift Cy angegeben. Die nächsten fünf Spalten stellen die fünf Steuerfelder COC, ALC, RGC, DMC und BRC für die fünf Funktions einheiten (CO usw. in Fig. 2) dar. Jedes Steuerfeld beginnt eine Operation in seiner entsprechenden Funktionseinheit. Somit weist das Feld COC in Zyklus 0 des Ablaufplans I die Konstanteneinheit (CO in Fig. 2) an, Op005 zu beginnen, so daß das Ergebnis CO.O=8 am Ausgang der Einheit CO in demselben Zyklus (CO Latenz ist 0) erscheint. Auf ähnliche Weise wird die Register-Leseoperation Op001 im Zyklus 0 durch das Feld RGC initiiert. Der Wert LB der lokalen Basisadresse ist somit in Zyklus 1 (RG Latenz ist 1) RG.O.
  • Die Auswahlfelder DEC.--.--.SE des Zielsteuerfeldes DEC sind in jedem Befehl rechts von den Funktionseinheit-Steuerfeldern dargestellt. Diese Felder leiten die Ergebnisse der verschiedenen Operationen Op001-Op014 an die entsprechenden Speichereinheiten weiter, wenn derartige Ergebnisse verfügbar werden. Der Scheduler berücksichtigt die Latenzen der verschiedenen Funktionseinheiten bei der Festlegung des Zielsteuerfeldes DEC. Somit wird zum Beispiel das Ergebnis RG.O der Register-Leseoperation Op001, die durch das Feld RGC in Zyklus 0 gestartet wird, durch das Feld DEC.AL.L.SE im folgenden Befehl, Zyklus 1, an die Speichereinheit für linke Operanden des Rechenwerkes AL weitergeleitet. Dies wird durch den Code RG in der Spalte AL.L im Ablaufplan I, Zyklus 1, angegeben. Auf ähnliche Weise wird die Speicher- Leseoperation Op007 durch das Feld DMC in Zyklus 2 gestartet, während das Ergebnis DM.O dieser Operation an die Adressenspeichereinheit der Datenspeichereinheit DM weitergeleitet wird, indem das Feld DEC.DM.A.SE in Zyklus 4 auf "DM" gesetzt wird (DM Latenz ist 2).
  • Der Scheduler fügt seine eigenen Operationen Nw015 und Nw016 hinzu, um einen Sprung zum nächsten Teilstück ("GOTO EXIT" in Liste 2) durchzuführen. Nw015 verwendet die Konstanteneinheit CO in Zyklus 1 dazu, die Zieladresse für die Verzweigung zu definieren, die zur Adressenspeichereinheit der Verzweigungseinheit BR weitergeleitet wird, indem das Auswahlfeld DEC.BR.A.SE in Zyklus 1 auf "CO" gesetzt wird. Nw016 verwendet das Verzweigungssteuerfeld BRC ebenfalls in Zyklus 1 dazu, eine unbedingte (BR.G=1) Verzweigung zur Zieladresse zu initiieren. Die lange Verzweigungsverzögerung von 5 Zyklen stellt sicher, das die Übertragung der Steuerung an die Zieladresse erst in Zyklus 8 stattfindet, nachdem das Teilstück T1 beendet ist. Mit anderen Worten: die Verzweigungsoperation wurde im Ablaufplan so vorverlegt, daß die Durchführung von nützlichen Operationen während der Verzweigungsver zögerung geplant werden kann. Es ist festzuhalten, daß nur ungefähr ein Drittel der möglichen maximalen Anzahl von Operationen tatsächlich in Fig. 6, Ablaufplan 1, geplant ist. Dies liegt an der sehr geringen Größe des Beispiel-Teilstückes, und es wird dem Fachkundigen klar sein, daß bei der Ablaufplanung eines längeren Teilstücks eine größere Anzahl nützlicher Operationen geplant werden kann, weil in längeren Teilstücken ein höheres Maß an Parallelität vorliegt.
  • Die große Anzahl von bedingten Verzweigungsfunktionen in längeren Teilstücken wird in dem beschriebenen Ausführungsbeispiel durch die Verwendung der Schutzbits .G mit booleschem Wert gehandhabt, indem die Tatsache genutzt wird, daß die Verzweigungswahrscheinlichkeit der meisten bedingten Verzweigungen auf nahe Eins oder nahe Null gebracht werden kann. So wird zum Beispiel eine 100mal auszuführende Schleife eine Verzweigung nach sich ziehen, von der vorausgesagt werden kann, daß sie mit einer Wahrscheinlichkeit von 0,99 oder 0,01 auftritt.
  • Der Ablaufplan I in Fig. 6 könnte von einem VLIW-Prozessor mit einem echten Multiport-Speicher ausgeführt worden sein, der das Zielsteuerfeld DEC vollkommen ignoriert. Der Ablaufplan I enthält jedoch eine Kollision für den Zugriff auf eine Speichereinheit des nachgebildeten Multiport-Speichers und ist somit keine gültige Abbildung der Operationen Op001-Op014 auf den Prozessor in den Fig. 2, 3 und 4. In Zyklus 5 des Ablaufplans I ist das Ergebnis DM.O von Op004 für die Speichereinheit für linke Operanden (AL.L) des Rechenwerkes AL und für die Adressenspeichereinheit (DM.A) der Datenspeichereinheit DM bestimmt. In demselben Zyklus 5 ist auch das Ergebnis AL.O von Op012 für die Adressenspeichereinheit (DM.A) der Datenspeichereinheit DM bestimmt. Diese Kollision wird durch den Code XX in Feld DEC.DM.A.SE im Zyklus 5, Ablaufplan I, gekennzeichnet.
  • Ohne das Verzögerungsglied (Spezialregister SP) müßte der Scheduler, wenn er die Kollision entdeckt, diese Operationen neu planen, bis die Beschränkungen der Prozessor-Hardware erfüllt sind. Im vorliegenden Beispiel könnte dies zum Ablaufplan II in Fig. 6 führen. In Ablaufplan II wurde Op004 um einen Zyklus verzögert und startet in Zyklus 4. Von dem Ergebnis von Op004 hängen jedoch die Operationen Op009, Op001 und Op014 ab, die daher auch um mindestens einen Zyklus verzögert werden müssen. Diese Operationen wurden im Ablaufplan I mit den anderen Operationen Op012, Op008, Op013 und Op014 verschachtelt, die aufgrund der Be schränkungen der Hardware ebenfalls neu geplant werden müssen.
  • Dieser Vorgang der Neuplanung oder Rückwärtsverarbeitung ("backtracking") kann immer durchgeführt werden, um die Hardware-Beschränkungen zu erfüllen, jedoch nimmt das neu geplante Teilstück T1 jetzt 9 anstelle von 8 Zyklen in Anspruch. Dies bedeutet, daß dieser Teil des Anwendungsprogramms 12,5% länger dauert als in einem idealen VLIW-Prozessor mit den gleichen Funktionseinheiten. Außerdem erfordert die Rückwärtsverarbeitung zusätzliche Arbeit des Compilers, einschließlich der Vermeidung neuer Kollisionen, die beim Vermeiden der ersten Kollision entstehen. Das Problem des zusätzlichen Compileraufwandes wird besonders akut in größeren Maschinen, in denen eine Kollision in fast jedem Zyklus auftreten könnte. Es ist offensichtlich, daß die Existenz einer Kollision im allgemeinen erst entdeckt wird, wenn mehrerer Befehle nach dem Zyklus geplant wurden, in dem die Kollision auftrat. In einem großen Gerät mit zehn oder mehr Funktionseinheiten erfordert dies die Neuplanung von zehn oder sogar hunderten von Operationen, wobei während der Neuplanung neue Kollisionen genauso häufig auftreten können.
  • In Fig. 6 stellt der Ablaufplan III die Vermeidung der Beispiel-Kollision ohne Rückwärtsverarbeitung durch Verwendung eines Verzögerungsgliedes in Form des Spezialregisters SP dar, wie oben für das verallgemeinerte Gerät in Fig. 1 beschrieben. Das Auswahlfeld DEC.SP.SE im Zielsteuerfeld DEC ist im Ablaufplan III rechts dargestellt. Es ist ersichtlich, daß die Ablaufplanung der Operationen Op001-Op014 und Nw015-Nw016 fast identisch mit dem Ablaufplan I (echter Multiport-Speicher) ist. Im Ablaufplan III wird jedoch die Kollision in Zyklus 5 zwischen den beiden für die Speichereinheit DM.A bestimmten Ergebnissen dadurch vermieden, daß das Ergebnis DM.O von Op004 zum Spezialregister weitergeleitet wird, und zwar indem das Feld DEC.SP.SE im Zielsteuerfeld DEC auf "DM" gesetzt wird. Das Feld DEC.DM.A.SE wird dann in Zyklus 6 auf "SP" gesetzt, um das verzögerte Ergebnis von Op004 rechtzeitig zur Speichereinheit DM.A weiterzuleiten, damit es von der Datenspeichereinheit DM in Op009, Zyklus 6, gelesen werden kann.
  • Das verzögerte Ergebnis von Op004 kollidiert nun in Zyklus 6 mit dem Ergebnis von Op011, die beide für die Speichereinheit DM.A bestimmt sind. Im Ablaufplan III wurde der Beginn von Op011 daher auf den Zyklus 6 verschoben, ohne daß dies für andere Operationen Konsequenzen hat. Eine alternative Lösung für diese zweite Kollision hätte darin bestanden, Op011 in Zyklus 5 zu lassen und das Ergebnis von Op011 durch Setzen des Feldes DEC.SP.SE auf "AL" in Zyklus 6 zu verzögern. Das verzögerte Ergebnis von Op011 hätte dann rechtzeitig zum Beginn von Op014 zur Speichereinheit DM.A weitergeleitet werden können, indem das Feld DEC.DM.A.SE in Zyklus 7 auf "SP" gesetzt würde.
  • Das Spezialregister SP ist immer wirksam, um den Leistungspegel eines echten Multiport-Systems aufrechtzuerhalten und gleichzeitig die Rückwärtsverarbeitung zu vermeiden, solange nur eine einzige Kollision von zwei Werten in einem gegebenen Zyklus auftritt. Dies folgt aus der Tatsache, daß eine Funktionseinheit in jedem Zyklus nur einen Wert aus einer Speichereinheit lesen kann; dies bedeutet, daß immer eines der kollidierenden Ergebnisse vor dem anderen benötigt wird. Wenn sich zum Zweck der Beweisführung herausstellt, daß das Ergebnis von Op011 dringender benötigt wird als das Ergebnis von Op004, dann könnte das Ergebnis von Op004 um zwei Zyklen oder jegliche Anzahl an Zyklen verzögert werden, bis es schließlich dringender benötigt würde als ein kollidierendes Ergebnis. Auf jeden Fall könnte eine anschließende Neuplanung von anderen Operationen vermieden werden.
  • In bezug auf das verallgemeinerte VLIW-Gerät aus Fig. 1 zeigt Fig. 7 ein verbessertes Verzögerungsglied in Form einer speziellen Direktzugriff Speichereinheit 70 mit mehreren Speicherplätzen und nicht in Form eines einfachen Registers mit einer festen Verzögerung. Das Befehlsregister für dieses Ausführungsbeispiel liefert ein zusätzliches Steuerfeld, das eine Leseportadresse SP.RA, eine Schreibportadresse SP.WA und ein zugehöriges Schreibaktivierungssignal SP.WE für die spezielle Speichereinheit 70 definiert. Die unterschiedlichen Speicherplätze der speziellen Speichereinheit ermöglichen es dem Scheduler, eine entsprechende Anzahl "überlappender" Kollisionen von zwei Werten zu vermeiden. Diese überlappenden Kollisionen sind Kollisionen, die in unterschiedlichen Zyklen auftreten, sich jedoch überlappen, weil die Ergebnisse um mehr als einen Zyklus verzögert werden müssen.
  • Zur Vermeidung von Kollisionen höherer Ordnung bzw. mehrerer Kollisionen zweier Werte in einem einzigen Zyklus können einfach weitere Verzögerungsglieder hinzugefügt werden. Beim Entwurf eines VLIW-Gerätes kann - um ein kosteneffizientes Gerät zu erhalten - die Anzahl derartiger Glieder ebenso variiert werden wie die Anzahl und die Art der Funktionseinheiten sowie die Kapazität der Speichereinheiten für ihre entsprechenden Operanden variiert werden können. Die Verzögerungsglieder können als einfache Verzögerungsregister, adressierte Direktzugriff Speichereinheiten, eine Mischung aus beiden oder in einer anderen nützlichen Form ausgelegt werden. Jede Verzögerung könnte auf eine Teilgruppe der Funktionseinheiten des Gerätes hinsichtlich ihres Eingangs bzw. Ausgangs beschränkt werden, um die durch die erforderlichen Busleitungen eingenommene Schaltungsfläche zu reduzieren.
  • Wenn ein automatischer Scheduler erst einmal mit den durch eine gegebene Hardware-Konfiguration defmierten Beschränkungen programmiert worden ist, muß sich der menschliche Programmierer nicht mehr um die genaue Zuordnung der Operationen innerhalb des VLIW-Prozessors kümmern. Da alle derartigen Details vom Scheduler beim Compilieren festgelegt werden und, nicht während der Laufzeit, wie es von einigen parallelen Rechnern bekannt ist, kann der Entwerfer eines VLIW-Gerätes schnell die Leistung einer Vielzahl von Konfigurationen einfach durch Ausführen des Schedulers mit den geeigneten Beschränkungen vergleichen, ohne daß eine funktionierende Maschine konstruiert werden muß.
  • Fig. 8 stellt einen alternativen Aufbau des nachgebildeten Multiport- Speichers dar, der ebenfalls eine Kollision von zwei Werten verhindern kann. In bezug auf beispielsweise den linken Operandeneingang der ersten Funktionseinheit F1 wurde die Speichereinheit 15 für den operanden F1.L (Fig. 1) durch eine Speichereinheit 80 mit zwei Schreibports 81 und 82 ersetzt, die jeweils über einen entsprechenden Multiplexer 84 oder 85 mit einer beliebigen der Busleitungen 16 verbunden werden kann. Die Speichereinheit 80 erfordert zwei Schreibadressen F1.L1.WA und F1.L2.WA, zu denen je ein Aktivierungssignal .WE gehört, und die Multiplexer 84 und 85 benötigen die entsprechenden Auswahlsignale F1.L1.SE und F1.L2.SE. Diese Signale werden wiederum von zusätzlichen Feldern in dem sehr langen Befehlswort zugeführt.
  • Verglichen mit den Verzögerungsgliedern 21 (Fig. 1), SP (Fig. 2) und 70 (Fig. 7) hat die Schaffung mehrerer Schreibports in der einzigen Speichereinheit 80 den Nachteil, daß bei der zusätzlichen Schaltungskomplexität nur Kollisionen in der Speichereinheit F1.L vermieden werden. Es kann jedoch sein, daß Kollisionen am häufigsten in einer bestimmten Funktionseinheit oder einer Art von Funktionseinheiten auftreten. Wenn es nicht kosteneffizient ist, zusätzliche Funktionseinheiten dieser Art vorzusehen, könnte das Ausführungsbeispiel aus Fig. 8 interessant sein. Die Schaltung in Fig. 8 hat den Vorteil, daß keine Busleitung (24, Fig. 1) zum Schaltnetz hinzugefügt wird. Bei einem typischen VLIW-Gerät nehmen die Busleitungen normalerweise einen wesentlichen Teil der Schaltungsfläche ein. Die Multiport-Speichereinheit 80 beansprucht ebenfalls eine größere Fläche, jedoch ist der nachgebildetete Multiport- Speicher 10 als Ganzes immer noch wesentlich effizienter als ein echter Multiport-Speicher, der alle Funktionseinheiten gemeinsam versorgt. Auf jeden Fall zeigt die gestrichelte Busleitung 24 in Fig. 8, daß die Speichereinheit 80 mit mehreren Schreibports zusätzlich zu einem Verzögerungsglied vorgesehen werden kann und nicht nur eine Alternative darstellt. Außerdem könnte ein nichtbeschreibbarer Speicherplatz in der Multiport-Speichereinheit 80 enthalten sein, so daß, wie in dem oben in den Fig. 2 bis 4 beschriebenen Ausführungsbeispiel, die beiden Schreibaktivierungssignale F1.L1.WE und F1.L2.WE überflüssig wären.
  • Das Endergebnis sieht so aus, daß der Entwerfer eines VLIW-Prozessors über eine Reihe von Verfahren verfügt, um die Leistung des nachgebildeten Multiport- Speichers zu verbessern, so daß diese näher an die Leistung eines echten Multiport- Speichers herankommt. Die Auswahl des für einen gegebenen Anwendungsfall geeignete Verfahrens oder die Kombination mehrerer Verfahren bleibt dem Entwerfer überlassen und hängt von den Anwendungskriterien ab.
  • Die Auswahl der Anzahl und der Art der zu integrierenden Funktionseinheiten ist ebenfalls im wesentlichen frei. Jede Einheit in dem speziellen Ausführungsbeispiel aus Fig. 2 ist zwar in gewissem Maße auf die Durchführung einer speziellen Funktion oder Gruppe von Funktionen spezialisiert, jedoch könnten diese Gruppen von Funktionen alle in einer allgemeineren Mehrzweck-Funktionseinheit kombiniert werden, um die Ablaufplanung so flexibel wie möglich zu gestalten. Ein Nachteil dieser Art der Funktionseinheit besteht darin, daß eine konstante Latenz für alle Funktionen wünschenswert ist, um ein vollständiges Pipelining zu ermöglichen, so daß die Geschwindigkeit der schnelleren Operationen (wie die Erzeugung von Konstanten) an diejenige der langsamsten Operationen angepaßt werden muß. Auf der anderen Seite können spezialisiertere Arten von Funktionseinheiten für einen gegebenen Anwendungsfall nützlich sein, zum Beispiel bei der Durchführung von Gleitkomma-Multiplikation, "Barrel Shifting" oder Eingabe/Ausgabe-Funktionen. Die gleiche Art von Einheiten, wie sie in herkömmlichen Mikroprozessoren verwendet werden, ist gut für ein erfindungs gemäßes Verarbeitungsgerät geeignet oder leicht vom Fachkundigen an den Einsatz in diesem Verarbeitungsgerät anzupassen.

Claims (13)

1. Verarbeitungsgerät, das folgendes umfaßt: eine Speicherschaltung (10, 30) und eine Gruppe von Funktionseinheiten (F1, F2, CO, FN, AL, RG, DM, BR), die so angeordnet sind, daß sie parallel funktionieren und von einer einzigen Folge von Programmbefehlen gesteuert werden, die aufeinanderfolgenden Arbeitszyklen des Gerätes entsprechen, wobei mindestens eine Funktionseinheit in der Gruppe (F1, F2, FN, CO, FN, AL, RG, DM, BR) mindestens einen Dateneingang zum Empfangen eines Operanden von einem zugehörigen Ausgang der Speicherschaltung (10, 30) besitzt, und mindestens zwei Funktionseinheiten in der Gruppe (F1, F2, FN, CO, FN, AL, RG, DM, BR) entsprechende Datenausgänge aufweisen, um den entsprechenden Eingängen der Speicherschaltung (10, 30) Ergebnisse zuzuführen, wobei die Speicherschaltung (10, 30) folgendes umfaßt:
- eine Vielzahl separater Speichereinheiten (15, 26), wobei jede Speichereinheit (15, 26) mindestens einen Schreibport und eine Leseport aufweist, der einen entsprechenden der Ausgänge der Speicherschaltung (10, 30) bildet;
- ein Schaltnetz (20, 27), das zwischen die Ausgänge der Funktionseinheiten (F1, F2, FN, CO, FN, AL, RG, DM, BR) und die Schreibports der separaten Speichereinheiten (15, 26) geschaltet ist, wobei das Schaltnetz (15, 26) durch die Folge von Programmbefehlen gesteuert wird, so daß ein Ergebnis von jeder Funktionseinheit (F1, F2, FN, CO, FN, AL, RG, DM, BR) an den Schreibport von einer oder mehreren Speichereinheiten (15, 26) weitergeleitet werden kann, die durch die Folge von Programmbefehlen in jedem Arbeitszyklus ausgewählt wird/werden;
dadurch gekennzeichnet, daß die Speicherschaltung (10, 30) folgendes umfaßt:
- ein Verzögerungsglied (21, 22, 29, SP) mit einem Eingang und einem Ausgang, die mit dem Schaltnetz (15, 26) verbunden sind, so daß ein in einem Arbeitszyklus durch eine der Funktionseinheiten (F1, F2, FN, CO, FN, AL, RG, DM, BR) erzeugtes Ergebnis innerhalb der Speicherschaltung (10, 30) verzögert und über das Schaltnetz (15, 26) in einem nachfolgenden Arbeitszyklus in eine Speichereinheit (15, 26) der Speicherschaltung geschrieben werden kann.
2. Verarbeitungsgerät nach Anspruch 1, dadurch gekennzeichnet, daß die Folge von Programmbefehlen auswählt, von welcher Funktionseinheit (F1, F2, FN, CO, FN, AL, RG, DM, BR) das Ergebnis durch das Verzögerungsglied (21, 22, 29, SP) verzögert wird.
3. Verarbeitungsgerät nach Anspruch 1 oder 2, wobei das Verzögerungsglied eine Speichereinheit mit einem einzigen Speicherplatz umfaßt.
4. Verarbeitungsgerät nach Anspruch 1 oder 2, wobei das Verzögerungsglied (21, 22, 29, SP) eine feste Verzögerung von einem oder mehreren Arbeitszyklen implementiert.
5. Verarbeitungsgerät nach Anspruch 4, wobei das Schaltnetz (20, 27) durch den Programmbefehl so gesteuert werden kann, daß der Eingang des Verzögerungsgliedes (21, 22, 29, SP) mit dem Ausgang des Verzögerungsgliedes gekoppelt wird, um ein Ergebnis um mehr als einen Arbeitszyklus zu verzögern.
6. Verarbeitungsgerät nach Anspruch 1, wobei das Verzögerungsglied (21, 22, 29, SP) eine Speichereinheit mit einer Vielzahl adressierbarer Speicherplätze umfaßt, die die gleichzeitige Verzögerung einer Vielzahl von Ergebnissen ermöglicht.
7. Verarbeitungsgerät nach Anspruch 1, das eine Vielzahl von Verzögerungsgliedern (21, 22, 29, SP) enthält, die die gleichzeitige Verzögerung einer Vielzahl von in einem einzigen Arbeitszyklus erzeugten Ergebnissen ermöglicht.
8. Verarbeitungsgerät nach Anspruch 1, das folgendes umfaßt:
- Mittel (BR), die eine bedingte Verzweigung in der Folge von Programmbefehlen bewirken, wobei die Verzweigung eine Verzweigungsverzögerung von mindestens einem Arbeitszyklus nach sich zieht; und
- Mittel, um Operationen, die durch mindestens eine Funktionseinheit der Gruppe von Funktionseinheiten (CO, AL, RG, DM) während der Verzweigungsverzögerung ausgeführt werden, bedingt zu sperren.
9. Verarbeitungsgerät nach Anspruch 8, wobei die Mittel zum bedingten Sperren von Operationen in mindestens einer Funktionseinheit einen Schutzwerteingang zur Funktionseinheit (CO, AL, RG, DM) besitzen, um einen booleschen Schutzwert zu empfangen, der festlegt, ob eine Operation gesperrt wird oder nicht, und eine Schutzwert-Speichereinheit (26) innerhalb der Speicherschaltung, deren Schreibport mit dem Schaltnetz verbunden ist und deren Leseport mit dem Schutzwerteingang der Funktionseinheit (CO, AL, RG; DM) verbunden ist.
10. Verarbeitungsgerät nach Anspruch 9, wobei der Schutzwertspeicher (26) einen oder mehrere nichtbeschreibbare Speicherplätze enthält, die vorher festgelegte boolesche Werte speichern.
11. Verarbeitungsgerät nach Anspruch 1, wobei mindestens eine der Speichereinheiten (15, 26) einen Schreibadresseneingang zum Empfangen eines in jedem Programmbefehl enthaltenen Schreibadressenwertes aufweist und beschreibbare und nichtbeschreibbare Speicherplätze enthält, die den unterschiedlichen Schreibadressenwerten entsprechen, wodurch eine Nichtschreiboperation in einem bestimmten Programmbefehl durch einen Schreibadressenwert durchgeführt werden kann, der einem nichtbeschreibbaren Speicherplatz entspricht, ohne daß der Programmbefehl eines separaten Schreibaktivierungswert enthält.
12. Verarbeitungsgerät nach Anspruch 1, wobei mindestens eine der Speichereinheiten (15, 26) mehr als einen Schreibport aufweist, die mit dem Schaltnetz verbunden ist.
13. Verarbeitungsgerät nach Anspruch 1, wobei die Gruppe der Funktionseinheiten und die Speicherschaltung einen Teil einer monolithischen integrierten Schaltung bilden.
DE69130723T 1990-10-05 1991-10-03 Verarbeitungsgerät mit Speicherschaltung und eine Gruppe von Funktionseinheiten Expired - Lifetime DE69130723T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US59453490A 1990-10-05 1990-10-05

Publications (2)

Publication Number Publication Date
DE69130723D1 DE69130723D1 (de) 1999-02-18
DE69130723T2 true DE69130723T2 (de) 1999-07-22

Family

ID=24379286

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69130723T Expired - Lifetime DE69130723T2 (de) 1990-10-05 1991-10-03 Verarbeitungsgerät mit Speicherschaltung und eine Gruppe von Funktionseinheiten

Country Status (4)

Country Link
EP (1) EP0479390B1 (de)
JP (1) JP3687982B2 (de)
KR (1) KR100242619B1 (de)
DE (1) DE69130723T2 (de)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6370623B1 (en) * 1988-12-28 2002-04-09 Philips Electronics North America Corporation Multiport register file to accommodate data of differing lengths
US5539911A (en) 1991-07-08 1996-07-23 Seiko Epson Corporation High-performance, superscalar-based computer system with out-of-order instruction execution
US5961629A (en) * 1991-07-08 1999-10-05 Seiko Epson Corporation High performance, superscalar-based computer system with out-of-order instruction execution
ATE200357T1 (de) * 1991-07-08 2001-04-15 Seiko Epson Corp Risc-prozessor mit dehnbarer architektur
KR100294276B1 (ko) * 1991-07-08 2001-09-17 야스카와 히데아키 고속트랩및예외상태를구현한알아이에스씨마이크로프로세서구조
US5438668A (en) 1992-03-31 1995-08-01 Seiko Epson Corporation System and method for extraction, alignment and decoding of CISC instructions into a nano-instruction bucket for execution by a RISC computer
DE69329778T2 (de) 1992-09-29 2001-04-26 Seiko Epson Corp., Tokio/Tokyo System und verfahren zur handhabung von laden und/oder speichern in einem superskalar mikroprozessor
US6735685B1 (en) 1992-09-29 2004-05-11 Seiko Epson Corporation System and method for handling load and/or store operations in a superscalar microprocessor
DE69325785T2 (de) * 1992-12-29 2000-02-17 Koninklijke Philips Electronics N.V., Eindhoven Verbesserte Architektur für Prozessor mit sehr langem Befehlswort
WO1994027216A1 (en) * 1993-05-14 1994-11-24 Massachusetts Institute Of Technology Multiprocessor coupling system with integrated compile and run time scheduling for parallelism
US5481743A (en) * 1993-09-30 1996-01-02 Apple Computer, Inc. Minimal instruction set computer architecture and multiple instruction issue method
ES2148492T3 (es) * 1994-01-10 2000-10-16 Dow Chemical Co Ordenador de arquitectura harvard superescalar masivamente multiplexado.
WO1996029646A1 (fr) * 1995-03-17 1996-09-26 Hitachi, Ltd. Processeur
US6247036B1 (en) * 1996-01-22 2001-06-12 Infinite Technology Corp. Processor with reconfigurable arithmetic data path
US5771362A (en) * 1996-05-17 1998-06-23 Advanced Micro Devices, Inc. Processor having a bus interconnect which is dynamically reconfigurable in response to an instruction field
US5924128A (en) * 1996-06-20 1999-07-13 International Business Machines Corporation Pseudo zero cycle address generator and fast memory access
US5931939A (en) * 1996-09-25 1999-08-03 Philips Electronics North America Corporation Read crossbar elimination in a VLIW processor
JP3790607B2 (ja) 1997-06-16 2006-06-28 松下電器産業株式会社 Vliwプロセッサ
US6212544B1 (en) 1997-10-23 2001-04-03 International Business Machines Corporation Altering thread priorities in a multithreaded processor
US6076157A (en) * 1997-10-23 2000-06-13 International Business Machines Corporation Method and apparatus to force a thread switch in a multithreaded processor
US6567839B1 (en) 1997-10-23 2003-05-20 International Business Machines Corporation Thread switch control in a multithreaded processor system
US6105051A (en) * 1997-10-23 2000-08-15 International Business Machines Corporation Apparatus and method to guarantee forward progress in execution of threads in a multithreaded processor
US6697935B1 (en) 1997-10-23 2004-02-24 International Business Machines Corporation Method and apparatus for selecting thread switch events in a multithreaded processor
US6314493B1 (en) 1998-02-03 2001-11-06 International Business Machines Corporation Branch history cache
US6212628B1 (en) * 1998-04-09 2001-04-03 Teranex, Inc. Mesh connected computer
JP4630462B2 (ja) * 1999-02-23 2011-02-09 ルネサスエレクトロニクス株式会社 集積回路及びそれを用いた情報処理装置
US6988154B2 (en) 2000-03-10 2006-01-17 Arc International Memory interface and method of interfacing between functional entities
WO2003083649A1 (en) * 2002-03-28 2003-10-09 Koninklijke Philips Electronics N.V. Vliw processor
CN1685310A (zh) * 2002-09-24 2005-10-19 皇家飞利浦电子股份有限公司 在一个超长指令字处理器中启动加载立即指令的处理的装置、方法和编译器
US8667252B2 (en) 2002-11-21 2014-03-04 Stmicroelectronics, Inc. Method and apparatus to adapt the clock rate of a programmable coprocessor for optimal performance and power dissipation
US8307147B2 (en) 2005-09-09 2012-11-06 Freescale Semiconductor, Inc. Interconnect and a method for designing an interconnect

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU587714B2 (en) * 1986-08-27 1989-08-24 Amdahl Corporation Cache storage queue
WO1988008568A1 (en) * 1987-05-01 1988-11-03 Cydrome, Inc. Parallel-processing system employing a horizontal architecture comprising multiple processing elements and interconnect circuit with delay memory elements to provide data paths between the processing elements

Also Published As

Publication number Publication date
JPH04299436A (ja) 1992-10-22
EP0479390B1 (de) 1999-01-07
DE69130723D1 (de) 1999-02-18
JP3687982B2 (ja) 2005-08-24
KR920008595A (ko) 1992-05-28
EP0479390A2 (de) 1992-04-08
KR100242619B1 (ko) 2000-08-01
EP0479390A3 (en) 1993-09-15

Similar Documents

Publication Publication Date Title
DE69130723T2 (de) Verarbeitungsgerät mit Speicherschaltung und eine Gruppe von Funktionseinheiten
DE69129569T2 (de) Maschine mit sehr langem Befehlswort für leistungsfähige Durchführung von Programmen mit bedingten Verzweigungen
DE3586603T2 (de) Datenprozessor fuer interpretierende und kompilierte sprache.
DE2364408C3 (de) Schaltungsanordnung zur Adressierung der Speicherplätze eines aus mehreren Chips bestehenden Speichers
DE69017178T2 (de) Datenverarbeitungssystem mit Vorrichtung zur Befehlskennzeichnung.
DE69032381T2 (de) Vorrichtung und Verfahren für die kollektive Verzweigung in einem Mehrbefehlsstrommultiprozessor
DE68927946T2 (de) Verfahren und Vorrichtung für die Synchronisierung von parallelen Prozessoren unter Verwendung einer unscharf definierten Sperre
DE69429226T2 (de) Absendung von Befehlen an mehrere Verarbeitungseinheiten
DE69115344T2 (de) Vorverarbeitungsprozessor zur Verbindung von Befehlen für einen Cache-Speicher
DE2716369C2 (de)
DE3784050T2 (de) Ein paralleler datenprozessor.
DE69031100T2 (de) Interprozessor-Datenabhängigkeit minimierendes Übersetzungsverfahren
DE68928213T2 (de) Inhaltadressierte Speicherzellenanordnung
DE69415126T2 (de) Gegenflusspipelineprozessor
DE68927218T2 (de) Verfahren und Vorrichtung für Zustandskode in einem Zentralprozessor
DE3587591T2 (de) Mikroprozessor für Forth-ähnliche Sprache.
DE69418146T2 (de) Temporärer Registersatz für einen superpipeline-superskalaren Prozessor
DE3650602T2 (de) Datenverarbeitungssystem
DE4342250A1 (de) Rechnerarchitektur und Verfahren zum Betreiben eines Parallelrechners
DE2524229A1 (de) Datenverarbeitungssystem mit pyramidenfoermiger hierarchie des steuerflusses
DE2714805A1 (de) Datenverarbeitungssystem
DE68924719T2 (de) Vorrichtung und Verfahren zur Ausführung eines Unterprogramms in einem Datenverarbeitungssystem mit Blockumschaltung.
DE68929080T2 (de) Anordnung zum Speichern von Informationen für einen Datenanbieterprozessor
DE19526008C2 (de) Befehlsvorholeinheit für einen Computer
DE69732793T2 (de) Acht-bit-mikrokontroller mit risc-architektur

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8327 Change in the person/name/address of the patent owner

Owner name: TRIMEDIA TECHNOLOGIES, INC., SUNNYVALE, CALIF., US

8328 Change in the person/name/address of the agent

Free format text: HOFFMANN * EITLE, 81925 MUENCHEN

8327 Change in the person/name/address of the patent owner

Owner name: NXP B.V., EINDHOVEN, NL