DE19842254A1 - Datenverarbeitungsgerät - Google Patents

Datenverarbeitungsgerät

Info

Publication number
DE19842254A1
DE19842254A1 DE19842254A DE19842254A DE19842254A1 DE 19842254 A1 DE19842254 A1 DE 19842254A1 DE 19842254 A DE19842254 A DE 19842254A DE 19842254 A DE19842254 A DE 19842254A DE 19842254 A1 DE19842254 A1 DE 19842254A1
Authority
DE
Germany
Prior art keywords
signal
unit
command
functional units
scheduler
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.)
Granted
Application number
DE19842254A
Other languages
English (en)
Other versions
DE19842254C2 (de
Inventor
Nigel C Paver
Paul Day
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.)
Cogency Technology Inc
SK Hynix Inc
Original Assignee
Cogency Technology Inc
LG Semicon Co Ltd
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
Priority claimed from US08/932,956 external-priority patent/US6055620A/en
Application filed by Cogency Technology Inc, LG Semicon Co Ltd filed Critical Cogency Technology Inc
Publication of DE19842254A1 publication Critical patent/DE19842254A1/de
Application granted granted Critical
Publication of DE19842254C2 publication Critical patent/DE19842254C2/de
Anticipated expiration legal-status Critical
Expired - Fee Related 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/3822Parallel decoding, e.g. parallel decode units
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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/30181Instruction operation extension or modification
    • G06F9/30196Instruction operation extension or modification using decoder, e.g. decoder per instruction set, adaptable or programmable decoders
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • 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/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags
    • 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/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • 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/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • 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/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • G06F9/3871Asynchronous instruction pipeline, e.g. using handshake signals between stages

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)
  • Programmable Controllers (AREA)
  • Executing Machine-Instructions (AREA)

Description

Die vorliegende Erfindung bezieht sich auf ein Datenverarbei­ tungsgerät nach dem Oberbegriff des Patentanspruches 1; all­ gemein betrifft die Erfindung einen Scheduler bzw. eine Sy­ stemsteuerung für einen in Datenverarbeitungssystemen verwen­ deten Digitalprozessor, dessen Echtzeiteinstellung durch ei­ nen Benutzer sowie ein Verfahren für einen Digitalprozessor.
Ein Prozessor, wie beispielsweise ein Mikroprozessor, ein Mi­ krocontroller oder ein Digitalsignalprozessor (DSP) umfaßt eine Vielzahl von Funktionseinheiten, die jeweils eine spezi­ fische Aufgabe erfüllen und mit einem Satz von binär kodier­ ten Befehlen beaufschlagt sind, die Operationen an den Funk­ tionseinheiten innerhalb der Prozessorarchitektur vornehmen. Die binär kodierten Befehle können dann kombiniert werden, um ein Programm zu erzeugen, das eine bestimmte gegebene Aufgabe erfüllt. Derartige Programme können mit der Prozessorarchi­ tektur ausgeführt oder im Speicher für eine anschließende Ausführung gespeichert werden.
Um ein gegebenes Programm ablaufen zu lassen, müssen die Funktionseinheiten innerhalb der Prozessorarchitektur syn­ chronisiert sein, um eine korrekte (beispielsweise hinsicht­ lich Zeit und Reihenfolge usw.) Ausführung der Befehle zu ge­ währleisten.
"Synchron"-Systeme gelten dabei für ein Stufensignal mit fe­ ster Zeit (d. h. ein Taktsignal), das zu den Funktionseinhei­ ten gespeist ist, um eine synchronisierte Ausführung sicher­ zustellen. Somit benötigen in allen einschlägigen bekannten Synchronsystemen die Funktionseinheiten ein Taktsignal. Je­ doch brauchen nicht alle Funktionseinheiten in Betrieb zu sein für einen gegebenen Befehlstyp. Da die Funktionseinhei­ ten aktiviert werden können, selbst wenn dies für eine gege­ bene Befehlsausführung unnötig ist, können Synchronsysteme ineffizient sein.
Die Verwendung eines Taktsignales fester Zeit, d. h. eines fe­ sten Taktzyklus, in Synchronsystemen beschränkt auch das De­ sign der Funktionseinheiten. Jede Funktionseinheit muß so ausgelegt sein, daß sie ihren Betrieb im schlimmsten Fall in­ nerhalb des Taktzyklus ausführt, obwohl der Betrieb unter ei­ nem schlimmsten Fall selten sein wird. Eine Betriebsauslegung für den schlimmsten Fall vermindert das Verhalten von Syn­ chronsystemen, was insbesondere dann gilt, wenn ein Betrieb für einen typischen Fall viel schneller abläuft als derjenige unter Kriterien für den schlimmsten Fall. Demgemäß versuchen Synchronsysteme den Taktzyklus zu reduzieren, damit Verhal­ tensstrafen minimiert werden, die durch Kriterien für einen Betrieb unter dem schlimmsten Fall verursacht sind. Ein Redu­ zieren des Taktzyklus unter Kriterien für den schlimmsten Fall erfordert steigend komplexe Steuerungssysteme oder zu­ nehmend komplexe Funktionseinheiten. Diese komplexeren Syn­ chronsysteme reduzieren die Wirksamkeit hinsichtlich Fläche und Leistungsaufnahme, um gegebene Verhaltenskriterien, wie beispielsweise reduzierte Taktzyklen zu erfüllen.
Herkömmliche Eigenzeitsysteme, auch als Asynchronsysteme be­ kannt, beseitigen zahlreiche Probleme, die dem Taktsignal von Synchronsystemen zugeordnet sind. Demgemäß treten in Syn­ chronsystemen Verhaltensstrafen lediglich bei einem tatsäch­ lichen (seltenen) Betrieb unter einem schlimmsten Fall auf. Demgemäß können Asynchronsysteme für ein typisches Fallver­ halten zugeschnitten werden, was in einer verminderten Kom­ pliziertheit für Prozessorausführungen resultiert, welche die Verhaltensanforderungen erfüllen. Da weiterhin Asynchronsy­ steme lediglich Funktionseinheiten aktivieren, wenn dies für den gegebenen Befehlstyp erforderlich ist, wird die Wirksam­ keit gesteigert. Somit können Asynchronsysteme eine gestei­ gerte Wirksamkeit hinsichtlich Integration und Leistungsver­ brauch bieten.
Durch Koppeln derartiger Funktionseinheiten zusammen zur Bil­ dung größerer Blöcke können steigend komplexe Funktionen rea­ lisiert werden. Fig. 1 zeigt zwei derartige Funktionseinhei­ ten, die über Datenleitungen und Steuerleitungen gekoppelt sind. Eine erste Funktionseinheit 100 ist ein Sender, der Da­ ten ausschickt. Eine zweite Funktionseinheit 102 ist ein Emp­ fänger, der die Daten empfängt.
Eine Kommunikation zwischen den Funktionseinheiten 100, 102 wird erzielt durch Bündeldatendrähte 104. Eine Eigenzeit- oder Asynchronmethode verwendet Funktionseinheiten mit einem asynchronen Schnittstellenprotokoll für das Leiten von Daten und einen Steuerstatus mit zwei Steuerleitungen. Eine Anfor­ derungssteuerleitung Req ist durch den Sender 100 gesteuert und wird aktiviert, wenn der Sender 100 gültige Daten auf die Datendrähte 104 gegeben hat. Ein Bestätigungs- oder Quittie­ rungssteuerdraht Ack wird durch den Empfänger 102 gesteuert und aktiviert, wenn der Empfänger 102 die Daten verbraucht hat, die auf die Datendrähte 104 gegeben wurden. Dieses asyn­ chrone Schnittstellenprotokoll ist als ein "Handshake" (Hän­ deschütteln) bekannt, da der Sender 100 und der Empfänger 102 beide miteinander kommunizieren, um die Bündeldaten zu lei­ ten.
Das in Fig. 1 gezeigte asynchrone Schnittstellenprotokoll kann verschiedene Zeitprotokolle für eine Datenkommunikation verwenden. Ein herkömmliches Protokoll beruht auf einem 4- Phasen-Steuerkommunikationsschema. Fig. 2 zeigt ein Zeitdia­ gramm für das 4-Phasen-Steuerkommunikationsschema.
Wie in Fig. 2 gezeigt ist, gibt der Sender 100 an, daß die Daten auf den Datendrähten 104 gültig sind, indem ein aktiver Anforderungssteuerdraht Req hoch gemacht wird. Der Empfänger 102 kann bei Bedarf nunmehr die Daten verwenden. Wenn der Empfänger 102 nicht länger die Daten fordert, meldet er an den Sender 100 einen aktiven Bestätigungssteuerdraht Ack hoch. Der Sender 100 kann nunmehr die Daten von dem Kommuni­ kationsbus, wie beispielsweise den Datendrähten 104, entfer­ nen und die nächste Kommunikation vorbereiten.
In dem 4-Phasen-Protokoll müssen die Steuerleitungen in den Anfangszustand zurückkehren. Demgemäß deaktiviert der Sender 100 die Ausgangsanforderung durch Zurückführen des Anforde­ rungssteuerdrahtes Req auf niedrig. Bei der Deaktivierung des Anforderungssteuerdrahtes Req kann der Empfänger 102 den Be­ stätigungssteuerdraht Ack niedrig deaktivieren, um dem Sender 100 anzuzeigen, daß der Empfänger 102 bereit für mehr Daten ist. Der Sender 100 und der Empfänger 102 müssen diesem strengen Befehlsablauf von Ereignissen folgen, um in dem 4-Phasen-Steuerkommunikationsschema zu kommunizieren. In vor­ teilhafter Weise gibt es aber keine obere Einschränkung bei den Verzögerungen zwischen aufeinanderfolgenden Ereignissen.
Ein Zuerst-ein-zuerst-aus-(FIFO-)Register oder eine Pipeline liefert ein Beispiel von Eigenzeitsystemen, die eine Anzahl von Funktionseinheiten zusammenkoppeln. Fig. 3 zeigt eine derartige Eigenzeit-FIFO-Struktur. Die Funktionseinheiten können Register 300a-300c sein, die ein Eingabeschnittstel­ lenprotokoll und ein Ausgabeschnittstellenprotokoll haben.
Wenn sie leer sind, kann jedes der Register 300a-300c Daten über eine Eingabeschnittstelle 302 zur Speicherung empfangen. Sobald Daten in dem Register gespeichert sind, kann die Ein­ gabeschnittstelle nicht mehr Daten akzeptieren. In diesem Zu­ stand ist der Eingang des Registers 300a "blockiert". Das Re­ gister 300a bleibt blockiert, bis das Register 300a wieder leer ist. Sobald jedoch das Register 300a Daten enthält, kann das Register 300a die Daten zu der nächsten Stufe (d. h. Regi­ ster) der Eigenzeit-FIFO-Struktur über eine Ausgabeschnitt­ stelle 304 leiten. Die Register 300a erzeugen eine Ausgabean­ forderung, wenn die auszugebenden Daten gültig sind. Sobald die Daten verbraucht sind und die Daten nicht länger benötigt werden, ist das Register 300a dann in dem leeren Zustand, Demgemäß kann das Register 300a wieder Daten mittels des Ein­ gabeschnittstellenprotokolles empfangen.
Verkettung der Register 300a-300c zusammen durch Koppeln der Ausgabeschnittstelle 304 mit der Eingabeschnittstelle 302 bildet das Mehrstufen-FIFO bzw. die Pipeline. Somit werden Ausgabeschnittstellenanforderungs- und Bestätigungssignale Rout und Aout jeweils mit den Eingabeschnittstellenanforde­ rungs- und Bestätigungssignalen Rin und Ain der folgenden Re­ gister (-Stufe) 300a bis 300c gekoppelt. Wie in Fig. 3 ge­ zeigt ist, werden in den FIFO-Eingang 306 geleitete Daten von dem Register 300a zu dem Register 300c geschickt, um gegebe­ nenfalls am FIFO-Ausgang 308 auszutreten. Damit wird eine Da­ tenaufreihung angeboten, da die Daten sequentiell längs des FIFO geschickt sind. Die in Fig. 3 gezeigte FIFO-Struktur kann das in Fig. 2 dargestellte 4-Phasen-Steuerkommunika­ tionsschema als das Eingabe- und Ausgabe-Schnittstellenproto­ koll verwenden.
Um einen Asynchronprozessor auszuführen, ist eine komplexere Anordnung der Funktionseinheiten erforderlich. Um weiterhin einen Befehl zu verarbeiten, muß der Befehl dekodiert werden, damit die Funktionseinheiten aktiviert werden können, die er­ forderlich sind, um die entsprechende Aufgabe des Befehls auszuführen. Um jedoch den Befehl auszuführen, können die Funktionseinheiten Abhängigkeiten, wie beispielsweise Daten­ abhängigkeiten, haben, so daß die Funktionseinheiten nicht nur gemeinschaftlich arbeiten können (beispielsweise inner­ halb eines Taktzyklus wie in Synchronsystemen). Derartige Ab­ hängigkeiten begünstigen sequentielle Operationen bezüglich der Aktivität der Funktionseinheit, um jeden Befehl korrekt auszuführen.
Ein Asynchronprozessor ist offenbart in "A Fully Asynchronous Digital Signal Processor Using Self-Timed Circuits" von Ja­ cobs u. a., IEEE Journal of Solid-State Circuits, Band 25, Nr. 6, 1990 (im folgenden aks "Jacobs" abgekürzt). Jedoch beginnt der Asynchronprozessor bei Jacobs lediglich eine voreinge­ stellte Aktivierungsreihenfolge von allen Funktionseinheiten unabhängig von dem Befehl. Demgemäß hat der Asynchronprozes­ sor von Jacobs derartige Nachteile, daß Unwirksamkeiten auf­ treten, da unnötige Funktionseinheiten für einen gegebenen Befehl aktiviert werden. Weitere Unwirksamkeiten treten auf, da die Fähigkeit zum Ausnutzen möglicher gleichzeitiger Ope­ rationen durch Funktionseinheiten, die keine Datenabhängig­ keiten haben, fehlt. Zusätzlich kann Jacobs nicht individuell die Reihenfolge und Ausführung der Funktionseinheit-Aktivität für jeden Befehl steuern, um Gleichzeitigkeit und Wirksamkeit zu verstärken.
Außerdem kann Jacobs nicht eine Echtzeitdefinition von Befeh­ len oder einer vollständig in Hardware programmierbaren Ar­ chitektur ausführen.
Die obigen Literaturstellen werden ausdrücklich in den Offen­ barungsgehalt der Anmeldung hinsichtlich zusätzlicher De­ tails, Merkmale und/oder als Stand der Technik einbezogen.
Es ist eine Aufgabe der vorliegenden Erfindung, ein Datenver­ arbeitungsgerät zu schaffen, das für eine Benutzermodifikati­ on eines in Echtzeit gesetzten CPU-Befehles und für Steuer­ operationen geeignet ist, die Abhängigkeiten von Funktions­ einheiten in Asynchronsystemen erfordern.
Zur Lösung dieser Aufgabe schafft die vorliegende Erfindung ein Datenverarbeitungsgerät, wie dieses in Patentanspruch 1 oder 2 oder 3 angegeben ist.
Vorteilhafte Weiterbildungen der Erfindung ergeben sich aus den Unteransprüchen.
Das erfindungsgemäße Datenverarbeitungsgerät umfaßt eine Vielzahl von Funktionseinheiten, wobei jede Funktionseinheit einen Satz von vorgeschriebenen Operationen ausführt, eine programmierbare Schaltung, die wenigstens einen Befehl eines Befehlssatzes modifiziert, wobei der modifizierte Befehl eine modifizierte Echtzeit ist, einen Controller, der einen gegen­ wärtigen Befehl dekodiert, um mittels der Vielzahl von Funk­ tionseinheiten eine entsprechende Befehlstask bzw. einen ent­ sprechenden Befehlsprozeß auszuführen, und eine Kommunikati­ onsvorrichtung, die die Funktionseinheiten, die programmier­ bare Schaltung und den Controller koppelt.
Nachfolgend wird die Erfindung anhand der Zeichnungen näher erläutert. Es zeigen:
Fig. 1 ein Blockdiagramm mit einer Eigenzeit-Datenschnitt­ stelle,
Fig. 2 ein Diagramm, das Signalwellenformen eines 4- Phasen-Datenschnittstellenprotokolles zeigt,
Fig. 3 ein Blockdiagramm, das eine Eigenzeit-FIFO-Struktur zeigt,
Fig. 4 ein Blockdiagramm, das einen Digitalprozessor zeigt,
Fig. 5 ein Diagramm, das Operationen einer Befehlspipeline zeigt,
Fig. 6 ein Diagramm, das einen Funktionsfluß des Prozes­ sors von Fig. 4 für einen Befehl zeigt,
Fig. 7 ein Diagramm, das einen Funktionsfluß des Prozes­ sors von Fig. 4 für einen anderen Befehl zeigt,
Fig. 8 ein Diagramm, das ein bevorzugtes Ausführungsbei­ spiel eines Schedulers in einem Eigenzeitprozessor gemäß der vorliegenden Erfindung zeigt,
Fig. 9 ein Diagramm, das ein bevorzugtes Ausführungsbei­ spiel eines Scheduler-Funktionseinheit-Controllers gemäß der vorliegenden Erfindung zeigt,
Fig. 10 ein Diagramm, das ein asymmetrisches C-Gatter zeigt,
Fig. 11 ein Diagramm, das ein komplexes asymmetrisches 4- Eingang-C-Gatter zeigt,
Fig. 12 ein Diagramm, das ein bevorzugtes Ausführungsbei­ spiel einer Schedule-Steuerlogik gemäß der vorlie­ genden Erfindung zeigt,
Fig. 13 ein Diagramm eines bevorzugten Ausführungsbeispiels einer programmierbaren Struktur für eine Dekodier­ funktionseinheit und
Fig. 14 ein Diagramm, das einen Flußablauf von Operationen der programmierbaren Dekodierfunktionseinheit von Fig. 13 zeigt.
Eine Architektur eines beispielhaften Prozessors 400 ist in Fig. 4 gezeigt. Die Architektur des Prozessors 400 umfaßt Funktionseinheiten, die beispielsweise in einem Mikroprozes­ sor verwendet sind, einen Mikrocontroller und DSP- Implementationen bzw. -Ausführungen. Jede der Funktionsein­ heiten ist durch einen gemeinsamen Resource-Datenbus 416 ge­ koppelt.
Eine Programmzählerfunktionseinheit PC 402 erzeugt eine Be­ fehlsprogrammadresse. Die PC 402 umfaßt einen Adreßstapel zum Halten von Adressen auf Subroutine oder Unterbrechungsrufen. Eine Befehlsdekodiererfunktionseinheit 404 steuert ein Be­ fehlsabrufen und -dekodieren. Die Befehlsdekodierfunktions­ einheit 404 enthält einen Befehlsdekodierer zum Erzeugen der Steuerung von Funktionseinheiten und ein Statusregister zum Halten eines gegenwärtigen Prozeßstatus. Eine Rechen- und Lo­ gikfunktionseinheit ALU 406 führt Daten- und Rechenoperatio­ nen mittels einer Ganzzahlen-Rechen-ALU aus. Die ALU 406 ent­ hält auch einen Datenakkumulator zum Speichern eines Ergeb­ nisses einer spezifischen Daten- oder Rechenoperation.
Der Prozessor 400 umfaßt außerdem eine Multiplizierfunktions­ einheit MULT 408, die eine Datenmultiplikation ausführt, und eine indirekte Adreßregisterfunktionseinheit ADDR 410. Die ADDR 410 hält indirekte Datenadressen in einer Adreßregi­ steranordnung. Eine Schreib/Lese-Speicherfunktionseinheit RAM 414 wird verwendet, um Datenwerte zu speichern. Eine Daten- RAM-Steuerfunktionseinheit RAMC 412 steuert einen Speicherzu­ griff für einen Datenspeicher in dem RAM 414.
In dem Prozessor 400 können die Funktionsblöcke gleichzeitig bzw. gemeinsam arbeiten. Jedoch muß der Prozessor 400 ein korrektes Management des gemeinsamen Resource-Datenbusses 416 durch Steuern von Daten- und Sequenzanforderungen gewährlei­ sten, wenn Kommunikationen zwischen Funktionseinheiten auf­ treten. Somit muß der Prozessor 400 Funktionseinheit-Abhän­ gigkeiten, wie beispielsweise Datenabhängigkeiten zwischen Funktionseinheiten, auflösen. Vorzugsweise steuert die Archi­ tektur des Prozessors 400 Kommunikationen zwischen Funktions­ einheiten.
Der Prozessor 400 verwendet vorzugsweise eine 3-Stufen- Befehlspipeline, die aus Befehlsabruf-, Befehlsdekodier- und Befehlsausführungszyklen zusammengesetzt ist. Eine Pipeline- Architektur verbessert Verhaltensanforderungen, indem sie ei­ ne wirksamere (beispielsweise gleichzeitige) Verwendung von Funktionseinheiten der Prozessorarchitektur erlaubt. Wie in Fig. 5 gezeigt ist, ermöglicht es eine 3-Stufen-Befehlspipe­ line, daß jede Pipelinestufe überlappt, was Gleichzeitigkeit und Prozessorverhalten verbessert.
Zum Ausführen eines Programmes an einer Prozessorarchitektur, wie beispielsweise dem Prozessor 400, muß ein Satz von Befeh­ len und entsprechenden Befehlstasks definiert werden. Während Operationen wird jeder Befehl dekodiert, um die Funktionsein­ heiten zu aktivieren, die erforderlich sind, um die entspre­ chende Befehlstask durchzuführen. Jedoch können zum Ausführen des entsprechenden Befehlstasks für jeden derartigen Befehl einzelne Funktionseinheiten Abhängigkeiten, wie beispielswei­ se Datenabhängigkeiten, haben. In diesem Fall können die Funktionseinheiten, die aktiviert werden müssen, nicht gleichzeitig arbeiten, sondern müssen blockiert werden, bis ein besonderer Zustand (beispielsweise ein Zustand, der die Datenabhängigkeit löst) gültig ist.
Beispielsweise sei ein Befehl "ADD*+" betrachtet, was der Be­ fehl ist, indirekt adressierte Daten zu dem Datenakkumulator in der ALU 406 zu addieren. Wie in Fig. 6 gezeigt ist, be­ steht eine Abhängigkeit zwischen Funktionseinheiten, die von dem Prozessor 400 benötigt werden, um den ADD*+ Befehl durch­ zuführen. Vor der Ausführung der Addition innerhalb der ALU 406 muß der von dem ADD*+ Befehl benötigte Operand aus dem Speicher gelesen werden. Die ALU 406 muß daher blockieren, bis der Operand aus dem RAM 414 gelesen wurde und auf dem Da­ tenbus 416 gültig ist. In dem Prozessor 400 wird ein Spei­ cherzugriff durch den RAMC 412 gesteuert. Bevor die Daten aus dem Speicher gelesen werden, muß jedoch die Quellenadresse der Daten generiert werden. Für Befehle, die einen direkten Modus des Adressierens verwenden, ist der Adreßzeiger gewöhn­ lich innerhalb des Befehlswortes. Somit kann für ein Direkt­ modusadressieren der Adreßzeiger mit anderer Dekodierinforma­ tion zu dem RAMC 412 geschickt werden. Jedoch verwendet der ADD*+ Befehl den indirekten Modus des Adressierens. Für einen indirekten Modus des Adressierens muß die Adreßquelle gene­ riert werden, indem sie aus der Adreßregisteranordnung des ADDR 410 gelesen wird, und der RAMC 412 muß blockieren, bis die Adresse auf dem Datenbus 416 gültig ist.
Derartige Abhängigkeiten veranschaulichen sequentielle Anfor­ derungen, die für die Aktivität der Funktionseinheiten des Prozessors 400 verstärkt sind, um eine korrekte Ausführung eines gegebenen Befehles zu gewährleisten. Somit zeigt Fig. 6 ein Flußdiagramm von aktivierten Funktionseinheiten zur Ausführung des ADD*+ Befehles durch den Prozessor 400. Der PC 402 wird ebenfalls vorzugsweise durch den ADD*+ Befehl akti­ viert. Der PC 402 wird durch den Prozessor 400 benötigt, um die nächste Befehlsadresse zu generieren und den nächsten Be­ fehl aus dem Programmspeicher wieder zu gewinnen. Der gleich­ zeitige Betrieb des PC 402 mit dem ADDR 410 gewährleistet, daß die Befehlspipeline des Prozessors 400 einen konstanten Befehlsbus aufrechterhält.
Fig. 7 zeigt ein Flußdiagramm von aktivierten Funktionsein­ heiten in dem Prozessor 400 für einen anderen Befehl, einen indirekten Speicherakkumulatorbefehl "STA*+". Der "STA*+"- Befehl speichert den Datenakkumulator bei einer indirekt adressierten Datenstelle. Vor der Aktivierung des RAMC 412 zum Speichern eines Datenbuswertes in dem Datenspeicher RAM 414 müssen beispielsweise die Akkumulatordaten auf den Daten­ bus 416 durch die ALU 406 angesteuert und eine indirekte Adresse durch den ADDR 410 generiert werden.
Es besteht keine Zwischenabhängigkeit zwischen der ALU 406 und der ADDR 410 für den indirekten Speicherakkumulatorbefehl STA*+. Somit können die ALU 406 und der ADDR 410 gemeinsam bzw. gleichzeitig arbeiten. Jedoch wird die Aktivierung des RAMC 412 blockiert, bis die ALU 406 und die ADDR 410 beide ihre Tasks bzw. Prozessor abgeschlossen haben. In Fig. 7 ist wiederum der PC 402 gezeigt, der parallel mit der STA*+ Be­ fehlsausführung arbeitet, da die Programmbefehlsadresse und der Abruf erforderlich sind, um die Befehlspipeline zu fül­ len.
Die oben beschriebenen Befehlsbeispiele veranschaulichen die Komplexität des Managements, das erforderlich ist, um jede Funktionseinheit innerhalb eines Prozessors für die Ausfüh­ rung eines Befehles zu ordnen und zu aktivieren. Weiterhin können zahlreiche Befehle in einem Befehlssatz definiert wer­ den. Um somit einen vorbestimmten Pegel an Gleichzeitigkeit für die Funktionseinheiten zu erreichen, die aktiviert sind, wenn ein Befehlssatz durchgeführt wird, sind zahlreiche ver­ schiedene Flußdiagramme erforderlich. In ähnlicher Weise wird eine derartige Managementsteuerung erforderlich für ein asyn­ chrones System, das einen Satz von Funktionsblöcken verwen­ det, um definierte Operationen auszuführen.
Zur Erzielung der Steuerung, die zum Ausführen eines Befehls­ satzes an einem Prozessor, wie beispielsweise einer Architek­ tur des Prozessors 400 erforderlich ist, werden nunmehr ein bevorzugtes Ausführungsbeispiel eines Gerätes und eines Ver­ fahrens für eine asynchrone Systemsteuerung gemäß der vorlie­ genden Erfindung beschrieben. Wie in Fig. 8 gezeigt ist, um­ faßt eine Architektur eines Prozessors 800 das bevorzugte Ausführungsbeispiel eines Eigenzeit-Schedulers. Der Prozessor 800 umfaßt beispielhafte Funktionseinheiten: einen PC 802, eine ALU 808, einen MULT 808, ein ADDR 810, einen RAMC 812. Die Operationen der Funktionseinheiten des Prozessors 800 sind ähnlich zu der Operation der Funktionseinheiten des oben beschriebenen Prozessors 400. Demgemäß wird eine Detailbe­ schreibung weggelassen. Jedoch soll die vorliegende Erfindung nicht so begrenzt werden. Zusätzlich sind weniger oder alter­ native Funktionseinheiten, die zum Ausführen des Prozessors 800 aufgrund der beabsichtigten Betriebsanforderungen und Pe­ ripherie verwendet werden, innerhalb des Bereiches der vor­ liegenden Erfindung.
Wie in Fig. 8 gezeigt ist, ist eine Dekodierfunktionseinheit in zwei getrennte Funktionseinheiten einschließlich einer De­ kodierbefehlsfunktionseinheit 804 und einer Scheduler- Controller-Funktionseinheit 814 aufgespalten. Die Dekodierbe­ fehlssteuerung 804 steuert die Eigenzeit der Befehlsausfüh­ rungsphase und enthält zusätzliche Funktionalität, wie bei­ spielsweise Statusregister. Der Scheduler-Controller 814 de­ kodiert den gegenwärtigen Befehl und erzeugt auch die rele­ vanten Funktionssteuerbündel für jede der Funktionseinheiten. Der Scheduler-Controller 814 enthält so vorzugsweise ähnliche Funktionalität von Teilen des Befehlsdekodierers 404. Fig. 8 zeigt auch einen Scheduler-Steuerbus 820, der die relevanten Scheduler-Steuerdaten zu jeder Funktionseinheit über einen Scheduler-Funktionseinheit-Controller 816 speist, Funktions­ einheit-Anforderungssteuerleitungen 822 und Funktionseinheit- Bestätigungssteuerleitungen 818.
Der Eigenzeit-Scheduler umfaßt den Scheduler-Controller 814, den Scheduler-Steuerbus 820 und den Eigenzeit-Scheduler- Funktionseinheit-Controller 816 in dem Eingabeprotokoll für jede Funktionseinheit des Prozessors 800 und entsprechende zusätzliche Steuerbits, die mit dem Steuerdatenbus gebündelt sind. Die zusätzlichen Steuerbits, die die Eigenzeit- Scheduler-Funktionalität ausführen, werden vorzugsweise zu­ sammen mit den erforderlichen Funktionssteuerbits für jede Funktionseinheit innerhalb der Scheduler-Steuereinheit 814 erzeugt. Steuerdatenbündel werden vorzugsweise mittels einer programmierbaren Logikanordnung (PLA) erzeugt, wo jede Be­ fehl-Mnemonik in die PLA eingegeben wird und die geeigneten Steuerbündel für jede Funktionseinheit als Ausgang erzeugt werden.
Operationen des bevorzugten Ausführungsbeispiels des Eigen­ zeit-Schedulers werden nunmehr beschrieben. Wie in Fig. 8 gezeigt ist, erzeugt für einen Ausführungszyklus von jedem Befehl in dem Prozessor 800 die Dekodierbefehlssteuerung 804 ein aktives Ausführungsanforderungssignal ExecReq zu allen Funktionseinheiten. An diesem Punkt sind alle Steuerdatenbün­ del von dem Scheduler-Controller 814 für jede der Funktions­ einheiten gültig, da die Steuerdatenbündel in dem Ausfüh­ rungszyklus für den vorangehenden Befehl erzeugt werden (vgl. beispielsweise Fig. 6).
Bei Empfang des Ausführungsanforderungssignales ExecReq, ak­ tiviert jede Funktionseinheit aufgrund einer Steuerinformati­ on in dem Scheduler-Controller 814 ein Steuerdatenbündel, das über den Scheduler-Steuerbus 820 übertragen ist. Die Steuer­ information kann vorzugsweise eine von drei möglichen Opera­ tionen in der Funktionseinheit beginnen. Die drei Operationen umfassen Bypass, Aktivieren (ohne Bedingung) und Blockieren (mit Bedingung). Jedoch soll die vorliegende Erfindung nicht so begrenzt werden. Beispielsweise kann irgendein Satz von Operationen verwendet werden, der wenigstens die folgenden Operationen erzielt.
In der Bypass- (bzw. Nebenschluß-)Operation ist eine Funkti­ onseinheit nicht für die Ausführung einer Befehlstask für den gegenwärtigen Befehl erforderlich. Somit wird diese Funkti­ onseinheit überbrückt. Die Funktionseinheit erzeugt unmittel­ bar ein entsprechendes Bestätigungssignal (beispielsweise ALUAck für die ALU 806), das dessen Abschluß meldet. In dem Aktivier-(bedingungslos-)Betrieb beginnt die Funktionseinheit Operationen, wie diese durch die Steuerinformation von dem Scheduler-Controller 814 definiert sind. Nach Abschluß ihrer Funktion erzeugt die Funktionseinheit das entsprechende Be­ stätigungssignal. Im Blockier-(bedingungs-)Betrieb blockiert die Funktionseinheit, bis eine oder mehrere zusätzliche Funk­ tionseinheiten ihre jeweiligen Operationen (beispielsweise eine Funktion und das entsprechende Bestätigungssignal) abge­ schlossen haben. Für den Blockier-(bedingungs-)Betrieb hat die Funktionseinheit Abhängigkeiten aufgrund der Operationen von anderen Funktionseinheiten. Entsprechend muß die Funkti­ onseinheit bis zu dem Abschluß der einen oder mehreren Funk­ tionseinheiten warten, bei der bzw. denen deren Aktivierung blockiert ist.
Der Scheduler-Funktionseinheit-Controller 816 für jede Funk­ tionseinheit blockiert eine entsprechende Funktionseinheit, bis die Datenabhängigkeiten aufgelöst sind. Mit anderen Wor­ ten, der Scheduler-Funktionseinheit-Controller 816 für jede Funktionseinheit überwacht die Bestätigungssignale, indem beispielsweise die Bestätigungssteuerdrähte 818 der zusätzli­ chen Funktionseinheiten verwendet werden, bei denen deren Ak­ tivierung blockiert ist. Wie oben erläutert wurde, aktiviert bei Abschluß ihrer Funktion jede der Funktionseinheiten den entsprechenden Bestätigungssteuerdraht 818. Wenn der Schedu­ ler-Funktionseinheit-Controller 816 erfolgreich den Abschluß von allen Funktionseinheiten überwacht hat, bei denen deren Aktivierung blockiert ist, kann die Funktionseinheit akti­ viert werden, ihre Funktion ausführen und deren Abschluß an die Dekodierbefehlssteuerung 804 rückbestätigen.
Da der Prozessor 800 vorzugsweise ein 4-Phasen-Steuerproto­ koll verwendet, beginnt die Dekodierbefehlssteuerung 804 vor­ zugsweise einen Erholungszyklus, wenn alle Funktionseinheiten ihre Funktionen abgeschlossen haben, wie dies durch die Be­ stätigungssteuerleitungen 818 gemeldet ist. Die Dekodierbe­ fehlssteuerung 804 kann dann den nächsten Befehlsausführungs­ zyklus vorbereiten.
Jedoch können bei dem 4-Phasen-Steuerprotokoll zwei Funkti­ onseinheiten in dem Prozessor 800 nicht abhängig voneinander sein, da eine Blockierung in diesem Fall zu dem Zustand eines toten Punktes führen kann. In dem Zustand des toten Punktes wird weder eine Funktionseinheit aktiviert, bis die andere Funktionseinheit ihre Funktion abgeschlossen hat. Jedoch soll die vorliegende Erfindung nicht darauf begrenzt sein, eine Kreuzabhängigkeit infolge des 4-Phasen-Steuerprotokolles nicht zu erlauben. Um beispielsweise einen toten Punkt zu verhindern, kann ein alternatives Schnittstellenprotokoll oder ein Prioritätsschema verwendet werden, damit es Funkti­ onseinheiten erlaubt ist, voneinander abhängig zu sein.
Der Scheduler-Controller 814 ist nicht eine Funktionseinheit in dem gleichen Sinn wie die ALU 806 oder der RAMC 812 Funk­ tionseinheiten sind. Der Scheduler-Controller 814 dekodiert den Befehl für die nächste Ausführungsphase. Daher arbeitet der Scheduler-Controller 814 parallel mit dem gegenwärtigen Befehlsausführungszyklus und liefert Daten, die alle Funkti­ onseinheiten steuern. Somit kann der Scheduler-Controller 814 nicht fortgeschrieben werden, bis alle Funktionseinheiten ab­ geschlossen sind, und das zuvor ausgeführte Steuerdatenbündel ist nicht länger erforderlich. Die Verwendung eines 4-Phasen- Steuerprotokolles kann für die Eigenzeit-Scheduler-Operatio­ nen benutzt werden, da die Dekodierbefehlssteuerung 804 das ExecReq-Signal nach Eintreten der Erholungsphase niedrig setzt. Das niedrige ExecReq-Signal zeigt dem Scheduler- Controller 814 an, daß sein vorangehendes Steuerdatenbündel nicht länger erforderlich ist und für den nächsten Ausfüh­ rungszyklus fortgeschrieben werden kann. Demgemäß führt der Scheduler-Controller 814 ein Bestätigungssignal PLAAck nach niedrig zurück, um anzuzeigen, daß das neue Steuerdatenbündel nunmehr gültig ist und der nächste Ausführungszyklus akti­ viert werden kann.
Somit kann das bevorzugte Ausführungsbeispiel des Eigenzeit- Schedulers dynamisch eine Ausführungsreihenfolge, Gleichzei­ tigkeit und Sequenz von allen Funktionseinheiten unter seiner Steuerung festlegen. Weiterhin können zusätzliche Befehle an­ schließend zu dem Befehlssatz addiert werden, indem bei­ spielsweise lediglich der addierte Befehl mneumonisch in der PLA ausgeführt wird, um ein Steuerdatenbündel zu erzeugen. In ähnlicher Weise können folgende Funktionseinheiten leicht in der Prozessorarchitektur eingebaut werden, indem ein Proto­ koll verwendet wird, wie beispielsweise ein Scheduler- Funktionseinheit-Controller.
Ein bevorzugtes Ausführungsbeispiel der Scheduler-Funktions­ einheit-Steuerschaltung wird nunmehr beschrieben. Jedoch soll die vorliegende Erfindung nicht hierauf begrenzt sein, da al­ ternative Schnittstellenprotokolle verwendet werden können. Fig. 9 zeigt ein Schaltungsdiagramm einer solchen Scheduler- Funktionseinheit-Steuerschaltung 900, die als der Scheduler- Funktionseinheit-Controller 816 in dem Prozessor 800 verwen­ det werden kann. Demgemäß wird die Scheduler-Funktionsein­ heit-Steuerschaltung aufgrund eines 4-Phasen-Steuerprotokol­ les beschrieben.
Die Scheduler-Funktionseinheit-Steuerschaltung 900 umfaßt zwei asymmetrische C-Gatter 902, 904, ein komplexes 4- Eingangs-C-Gatter 906 und zwei NOR-Gatter 908, 910. C-Gatter können als eine UND-Funktion für Eigenzeit-Ereignisse arbei­ ten. Zahlreiche verschiedene Ausführungen von C-Gattern exi­ stieren, jedoch führen alle die Grundfunktion aus, daß ein Eingangszustand einen hohen Zustand an dem C-Gatter-Ausgang auslöst, daß ein verschiedener Eingangszustand einen niedri­ gen Zustand an dem C-Gatter-Ausgang auslöst und daß die ver­ bleibenden Eingangszustände der C-Gatter-Eingangsstifte einen zuvor eingestellten Ausgang zurückhalten. Fig. 10 zeigt ein beispielhaftes asymmetrisches 4-Eingang-C-Gatterelement 100, das ein Spezialfall des Standard-Muller-C-Gatters ist. Diese Form eines C-Gatters ist bekannt als ein asymmetrisches C- Gatter, da alle Eingangsstifte das Einstellen des Gatteraus­ ganges auf hoch bewirken, wobei jedoch lediglich ein Ein­ gangsstift das Einstellen des Gatterausganges auf niedrig veranlaßt. Dieses in Fig. 10 gezeigte asymmetrische C-Gatter 1000 hat die folgende Funktion:
  • WENN InB UND InN1 UND InN2 UND InN3 DANN Ausgang → Hoch,
    SONST WENN/InB DANN Ausgang → Niedrig; und
    SONST keine Änderung an Ausgang.
Das asymmetrische C-Gatter 1000 wird vorzugsweise als die C- Gatter 902, 904 in dem Scheduler-Funktionseinheit-Controller 900 verwendet.
Wie in Fig. 11 gezeigt ist, hat das komplexe asymmetrische C-Gatter 906 die folgende Funktion:
  • WENN InB UND (In0 ODER (InA1 UND InA2)) DANN Ausgang → Hoch;
    SONST WENN/InB DANN Ausgang → Niedrig, und
    SONST keine Änderung an Ausgang.
Die Scheduler-Funktionseinheit-Steuerschaltung 900 umfaßt: Anforderungs-, Bestätigungs-, Start-, Beendigungs- und Rück­ setz-Schnittstellensignale. Das Anforderungssignal Req for­ dert einen Eingang (beispielsweise von Dekodier-Befehls­ steuerung 804) auf, eine Funktionseinheitsaktivität zu begin­ nen. Das Bestätigungssignal Ack wird bei Abschluß der Funkti­ onseinheit-Aktivität (beispielsweise Bypass) ausgegeben. Das Startsignal Start ist das interne Aktivierungssignal für die Funktionseinheit. Das Beendigungssignal Finish ist das inter­ ne Abschlußsignal für die Funktionseinheit. Das Rücksetzsi­ gnal Rst ist ein Schaltungsrücksetzsignal, das den Zustand einer Steuerlogik beginnt. Wie in Fig. 9 gezeigt ist, ist das Rücksetzsignal Rst auf aktiv hoch gesetzt.
Fig. 9 zeigt auch eine zusätzliche abhängige Steuereinheit 912. Eingangssignale zu der Abhängigkeitssteuereinheit 912 umfassen vorzugsweise das Steuerdatenbündel und Bestätigungs­ signale für die überwachte Funktionseinheit.
Operationen des Scheduler-Funktionseinheit-Controllers 900 werden nunmehr beschrieben. Nach einer Initialisierung wird der Scheduler-Funktionseinheit-Controller 900 durch ein ins Positive gehendes Eingangsanforderungssignal Req aktiviert. Das Anforderungssignal Req läßt dann ein Ausgangssignal von einem der beiden C-Gatter 902, 904 stark abhängig von den Steuersignalen Bypass und Execute übergehen. Wenn das Bypass- Signal hoch ist, dann geht das Ausgangssignal des C-Gatters 904 an seinem Ausgang nach hoch. Das hohe Ausgangssignal des C-Gatters 904 zeigt an, daß die entsprechende (nicht gezeig­ te) Funktionseinheit überbrückt bzw. nebengeschlossen wird. Das C-Gatter 904 aktiviert dann ein Signal ByPR, das seiner­ seits ein Ausgangssignal des C-Gatters 906 nach hoch überge­ hen läßt, um das Bestätigungssignal Ack zu erzeugen. Der Scheduler-Funktionseinheit-Controller 900 muß dann durch eine Erholungsphase gehen, wobei das Eingangsanforderungssignal Req nach niedrig geht, was seinerseits das Ausgangsbestäti­ gungssignal Acq nach niedrig rücksetzt.
Wenn bei einer aktiven Anforderung das Steuersignal Execute hoch ist, geht das Ausgangssignal des C-Gatters 902 nach hoch über. Das hohe Ausgangssignal des C-Gatters 902 aktiviert das entsprechende interne Funktionseinheitssignal Start, um seine Aktivität einzuleiten. Der Abschluß der Aktivität der ent­ sprechenden Funktionseinheit wird durch das interne Signal Finish gemeldet, das nach aktiv hoch übergeht. Das hohe in­ terne Signal Finish läßt seinerseits das Ausgangssignal des komplexen C-Gatters 906 nach hoch übergehen, was das Aus­ gangsbestätigungssignal Ack erzeugt.
Der Scheduler-Funktionseinheit-Controller 900 hat vorzugswei­ se eine zusätzliche Funktion, die ein Sicherheitsmerkmal der Schaltung beifügt. Die Signale Finish und ByPR werden durch das 2-Eingang-NOR-Gatter 908 geschickt, um unrichtige Über­ gänge des Ausgangssignales der aktivierten C-Gatter 902, 904 zu verhindern. Das NOR-Gatter 908 erlaubt es den Steuersigna­ len Execute und Bypass, undefiniert zu werden, nachdem ein aktives Bestätigungssignal Acq erzeugt wurde. Die Rückkopp­ lungsschleife schaltet die Aktivierung (aktives hohes Aus­ gangssignal) von einem der C-Gatter 902, 904 ab, bis beide Gatter in ihren anfänglichen niedrigen Zustand zurückgekehrt sind, was den Abschluß von deren 4-Phasen-Protokollzyklus an­ zeigt. Es sei darauf hingewiesen, daß die Steuersignale Execute und Bypass niemals beide aktiv (hoch) sein müssen, wenn eine aktive hohe Anforderung auftritt. In diesem Fall werden beide C-Gatter 902, 904 aktiv, was ein unvorhersehba­ res Verhalten und möglicherweise einen toten Punkt verur­ sacht.
Die Steuersignale Bypass und Execute werden vorzugsweise durch den Eigenzeit-Scheduler von dem Steuerdatenbündel und überwachten Funktionseinheit-Bestätigungssignalen erzeugt. Fig. 12 zeigt eine beispielhafte Steuerschaltung 1200 als Beispiel für eine Funktionseinheit mit Abhängigkeiten von zwei anderen Funktionseinheiten A und B (nicht gezeigt). Die Steuerschaltung 1200 kann beispielsweise als die Abhängig­ keitssteuerschaltung 912 des Scheduler-Funktionseinheit- Controllers 900 verwendet werden.
Für die Steuerschaltung 1200 ist ein 3-Bit-Schedule-Steuer­ datenbündel erforderlich. Das 3-Bit-Schedule-Steuerdaten­ bündel ist als das Datenbündel SchCtrl[2 : 0] in Fig. 12 ge­ zeigt. Als beispielhafte Bitdefinitionen des Steuerdatenbün­ dels SchCtrl[2 : 01] aktiviert ein hoher Zustand des Bitsigna­ les SchCtrl[0] die entsprechende Funktionseinheit. Wenn das Bitsignal SchCtrl[0] niedrig ist, wird die entsprechende Funktionseinheit überbrückt bzw. nebengeschlossen. Wenn das Bitsignal SchCtrl[1] hoch ist, erfolgt ein Warten des Bestä­ tigungssignales für die Funktionseinheit A UnitAAck auf hoch, bevor die entsprechende Funktionseinheit aktiviert wird. Wenn das SchCtrl[1]-Bitsignal niedrig ist, wird vor einer Aktivie­ rung nicht gewartet. Das SchCtrl[2]-Bitsignal arbeitet in ähnlicher Weise wie das Signal SchCtrl[1] mit Ausnahme in Be­ ziehung auf die Funktionseinheit B.
Wenn daher das Signal SchCtrl[0] niedrig ist, wird das Bypass-Signal auf hoch gesetzt, und die Funktionseinheit wird nicht aktiviert. Es sei darauf hingewiesen, daß dann, wenn das Bypass-Signal hoch ist, das Execute-Signal vorzugsweise nach niedrig gezwungen wird, um zu gewährleisten, daß beide Signale nicht zur gleichen Zeit aktiviert sind. Wenn das Si­ gnal SchCtrl[0] hoch ist, wird das Bypass-Signal abgeschal­ tet. Jedoch ist die Aktivierung des Execute-Signales abhängig von den verbleibenden Bits des Schedule-Steuerdatenbündels. Wenn alle verbleibenden Bits (beispielsweise SchCtrl[2 : 1]) niedrig sind, dann hat die Funktionseinheit keine Datenabhän­ gigkeiten, und das Execute-Signal wird auf hoch gesetzt, um die Funktionseinheit zu aktivieren. Wenn die verbleibenden Steuerbits des Scheduler-Steuerdatenbündels hoch sind, dann liegen Datenabhängigkeiten vor, und das Execute-Signal ver­ bleibt niedrig, um eine Aktivierung der Funktionseinheit zu blockieren. Wenn die Steuerbits SchCtrl[0] und SchCtrl[1] beide hoch sind, wird das Execute-Signal niedrig bleiben, bis das UnitAAck-Signal nach hoch geht, was eine Auflösung der Abhängigkeit in der Funktionseinheit A hervorruft, so daß die blockierte Funktionseinheit fortschreiten kann. Wenn mehr als ein Bit des Steuerdatenbündels gesetzt ist (beispielsweise SchCtrl[1] und SchCtrl[2] sind beide hoch), dann bleibt das Execute-Signal niedrig, bis jede gewählte Abhängigkeit aufge­ löst ist.
Obwohl die Steuerschaltung 1200 zwei Funktionseinheiten A und B überwacht, soll die vorliegende Erfindung nicht so begrenzt sein. Demgemäß kann der Eigenzeit-Scheduler eine, drei oder mehr Abhängigkeiten überwachen. Jedoch ist eine vorbestimmte Menge einer Einstellzeit erforderlich, um zu garantieren, daß die Bypass- und Execute-Signale in einem gültigen Zustand sind, bevor das aktive hohe Anforderungssignal Req in die Schedule-Steuerschaltung 1200 eingegeben wird.
Wie in Fig. 8 gezeigt ist, ist eine Dekodierfunktionseinheit in zwei getrennte Funktionseinheiten einschließlich der Deko­ dierbefehlsfunktionseinheit 804 und der Scheduler-Steuerfunk­ tionseinheit 814 gespalten. Jedoch können die Funktion und Ausführung der Dekodierbefehle und das Erzeugen der relevan­ ten Funktionssteuerbündel für jede der Funktionseinheiten als eine benutzer-programmierbare Struktur ausgeführt werden. So können beispielsweise die Scheduler-Controller- Funktionsein­ heit 814 oder Teile des Befehlsdekodierers 404 als die benut­ zer-programmierbare Struktur ausgeführt werden.
Beispielsweise kann ein Befehlssatz durch die Dekodierinfor­ mation spezifiziert werden. Somit kann mit einer benutzer­ programmierbaren Struktur die Dekodierinformation mittels ei­ ner programmierbaren Struktur modifiziert werden, um die De­ kodierinformation auszuführen, die zwischen einem Befehl (beispielsweise einem Befehlsbitmuster) und einem Satz von zu aktivierenden Funktionsblöcken ausgestaltet ist. Endbenutzer können einen vorbestimmten Befehlssatz und beliebige zusätz­ liche gewünschte Befehle oder einen Endbenutzer definierten Befehlssatz spezifizieren (solange die gewünschten Befehle in der Hardware ausgestaltet werden können). In diesem Fall wird der Endbenutzer als jemand anders als der Hersteller angese­ hen. Weiterhin kann die gleiche Hardware (beispielsweise Di­ gitalprozessor, Chip oder dergleichen) mehrfach abweichende Befehlssätze tragen, die verändert werden können, indem le­ diglich die benutzer-programmierbare Struktur zurückgeladen wird.
Ein bevorzugtes Ausführungsbeispiel einer benutzer-program­ mierbaren Struktur für eine Dekodierfunktionseinheit gemäß der vorliegenden Erfindung wird nunmehr beschrieben. Wie in Fig. 13 gezeigt ist, umfaßt der Digitalprozessor 800 einen benutzer-programmierbaren Scheduler-Controller 1302. Der Ei­ genzeit-Prozessor 800 wurde oben beschrieben, so daß demgemäß eine Detailbeschreibung hier weggelassen wird.
Der benutzer-programmierbare Scheduler-Controller 1302 kann mittels Register, RAM, ROM, einer Kombination von Registern, RAM und ROM oder dergleichen ausgeführt werden. Die Verwen­ dung eines RAM oder von Registern erlaubt es dem benutzer­ programmierbaren Scheduler-Controller 1302, die Dekodierin­ formation von einer externen Quelle zu laden, wie dies in Fig. 13 gezeigt ist. Wie oben beschrieben ist, spezifiziert die Dekodierinformation, welche Funktionseinheiten aktiviert sind, und bringt die aktivierten Funktionseinheiten in der gewünschten Reihenfolge für jeden auszuführenden Befehl in eine Sequenz. Daher führt der benutzer-programmierbaren Sche­ duler-Controller 1302 in dem Eigenzeit-Digitalprozessor eine Architektur aus, die nach einer Herstellung vollständig pro­ grammierbar ist, so lange die Funktionseinheiten, die zum Durchführen der beabsichtigten Operation notwendig sind, in dem Digitalprozessor vorliegen.
Eine auf einem ROM basierende Ausführung eines benutzer­ programmierbaren Scheduler-Controllers 1302 führt die Hard­ ware oder eine hardverdrahtete Funktion der Dekodierinforma­ tion, die wenigstens eine Dekodiertabelle umfaßt, in eine fe­ ste Software oder ROM über. Wie oben beschrieben ist, über­ setzt die Dekodiertabelle die Befehl-Mnemonik in Funktions­ einheit-Schedule bzw. -Plan oder -Verzeichnis und Steuerin­ formation. Bei der ROM-Ausführung wird die Dekodiertabelle festgelegt, nachdem sie in den ROM kodiert ist. Alternativ kann eine begrenzte Modifikation mittels Flash-ROM-Technolo­ gie, EEPROM oder dergleichen enthalten sein.
Eine auf RAM basierende Ausführung des benutzer-programmier­ baren Scheduler-Controllers 1302, die in einer externen Quel­ le vorliegt, kann boot-geladen während einer Initialisierung des Prozessors 800 sein um die Dekodiertabelle in den inter­ nen Speicher zu kopieren. Der kopierte Befehlssatz kann dann durch den Signalprozessor, Hauptprozessor oder dergleichen des Digitalprozessors 800 verwendet werden. Die externe RAM- Quelle kann ein externer Speicher, ein interner Speicher oder eine andere Quelle eines programmierbaren Speichers auf einem Chip sein, der den Prozessor 800 enthält. Weiterhin kann der externe RAM mehrere verschiedene vorbestimmte Befehlssätze umfassen. In diesem Fall kann einer der mehreren Befehlssätze durch einen Benutzer während oder vor einer Initialisierung gewählt werden. Alternativ kann einer der mehreren Befehls­ sätze aufgrund von vorliegenden oder erfaßten Bedingungen ge­ wählt werden. Beispielsweise kann der gewählte Satz der Be­ fehlssätze aufgrund einer Einstellung von externen Stiften oder Pins gewählt werden. Insbesondere kann nach einer Feh­ lererfassung ein spezifischer Satz von Fehlerkorrekturbefeh­ len geladen werden. Weiterhin kann der gewählte Befehlssatz entweder vor einer Initialisierung, während einer Initiali­ sierung oder während folgenden Operationen geladen werden.
Im allgemeinen wird für auf ROM und RAM basierenden Ausfüh­ rungen der Befehlssatz sequentiell in den Speicher geladen. Dann werden Adreßbits in dem Befehl oder der Befehl-Mnemonik verwendet, um auf die gewünschte Speicherstelle zuzugreifen. Demgemäß nimmt der Befehlssatz in der Größe zu, mehr Bits sind in dem Befehl und mehr Adressen im Speicher erforder­ lich. Beispielsweise kann ein 8-Bit-Befehl bis zu 256 ge­ trennte Befehle darstellen und benötigt 28 oder 256 Speicher­ plätze. In ähnlicher Weise benötigt ein 16-Bit-Befehl 216 oder 65 536 Speicherplätze.
Eine auf einem Register basierende Ausführung des benutzer­ programmierbaren Scheduler-Controllers 1302 verwendet im all­ gemeinen eine Anordnung von Registern. Die auf einem Register beruhende Ausführung verwendet die Registeranordnung zum Aus­ führen einer Dekodiertabelle oder einer Nachschlagtabellen- Darstellung des Funktionseinheit-Schedule bzw. -Plans und der Steuerinformation. Vorzugsweise erlaubt die auf einem Regi­ ster basierende Ausführung mehr Flexibilität, da die Befehle nicht in sequentielle Stellen oder Plätze im Speicher über­ setzt werden. Somit kann ein spärlich bevölkerter Speicher dargestellt werden. Der benutzer-programmierbare Scheduler- Controller 1302 wurde als verschiedene Ausführungen von ROM, RAM oder Registern beschrieben. Jedoch soll die vorliegende Erfindung nicht hierauf begrenzt sein. Beispielsweise kann jede benutzer-programmierbare Struktur für den benutzer­ programmierbaren Scheduler-Controller 1302 verwendet werden.
Operationen des benutzer-programmierbaren Scheduler- Controllers 1302 werden nunmehr anhand der Fig. 14 beschrie­ ben. Wie in Fig. 14 gezeigt ist, startet der Prozessor in Schritt 1400, wo eine Steuerung sich zu Schritt 1402 fort­ setzt.
In Schritt 1402 wird die Dekodiertabelle in eine programmier­ bare Einheit (beispielsweise ROM, RAM, Register oder derglei­ chen), wie beispielsweise den benutzer-programmierbaren Sche­ duler-Controller 1302 geladen. In Schritt 1402 können sich mehrfach verändernde Versionen der Dekodiertabelle geladen werden. Die Dekodiertabelle kann einen Befehl zu einer Zeit oder in Blöcken von mehreren Befehlen laden. Ab Schritt 1402 schreitet die Steuerung zu Schritt 1404 fort. In Schritt 1404 wird eine Prüfung für eine Initialisierung gemacht. Wenn die Bestimmung in Schritt 1404 bestätigend ist, schreitet die Steuerung zu Schritt 1406 fort. Alternativ kehrt, wenn eine Initialisierung nicht erfaßt wird, die Steuerung zu Schritt 1404 zurück.
In Schritt 1406 beginnt eine Initialisierung. Von Schritt 1406 schreitet die Steuerung zu Schritt 1408 fort. In Schritt 1408 erfolgt eine Prüfung für einen Dekodierzustand. Wenn der Dekodierzustand nicht in Schritt 1408 eingestellt ist, schreitet die Steuerung zu Schritt 1410 fort. In Schritt 1410 wird eine Standard- bzw. Mangeldekodiertabelle von der pro­ grammierbaren Einheit geladen, und eine Initialisierung wird abgeschlossen. Wenn jedoch ein Dekodierzustand in Schritt 1408 eingestellt ist, schreitet die Steuerung zu Schritt 1412 fort. In Schritt 1412 wird eine gewählte Dekodiertabelle von der programmierbaren Einheit geladen, und eine Initialisie­ rung wird abgeschlossen. Beispielsweise kann die Initialisie­ rung die Form des Zusammenstellens des Quellenkodes eines Hauptprozessors eines Datenverarbeitungsgerätes annehmen. In dem Eigenzeit-Prozessor 800 bildet das Funktionseinheit- Schedule und Steuerinformation, die in der Dekodiertabelle dargestellt ist, die Prozeßarchitektur ab. Wenn beispielswei­ se ein Fehlerdekodierzustand in Schritt 1408 erfaßt wird, kann ein Fehlerbefehlssatz von der programmierbaren Einheit in die Dekodiertabelle geladen werden. Ein solcher Fehlerbe­ fehlssatz kann verwendet werden, eine Spur zu identifizieren und einen erfaßten Fehler in dem Digitalprozessor, seinen Pe­ ripherieeinheiten oder in einem ausgeführten Anwendungspro­ gramm zu korrigieren. Von den Schritten 1410 und 1412 schrei­ tet die Steuerung zu Schritt 1414 fort.
In Schritt 1414 führt der Hauptprozessor Befehle aufgrund ei­ nes Befehlssatzes aus, der durch die benutzer-programmierbare Dekodierinformation ausgeführt ist, um ein Anwendungsprogramm abzuarbeiten. Von Schritt 1414 schreitet die Steuerung zu Schritt 1416 fort. In Schritt 1416 erfolgt eine Prüfung, um zu bestimmen, ob der Benutzer es wünscht, die Dekodierinfor­ mation während einer Ausführung zu modifizieren. Wenn die Be­ stimmung in Schritt 1416 bestätigend ist, schreitet die Steuerung zu Schritt 1418 fort, wo der Benutzer die Dekodier­ tabelle mittels der programmierbaren Einheit (beispielsweise RAM oder Register) modifiziert. Somit wird in Schritt 1418 die Dekodiertabelle in Echtzeit modifiziert, ohne beispiels­ weise den Prozessor- oder Anwendungskode erneut zusammenzu­ stellen. Von Schritt 1418 kehrt die Steuerung zu Schritt 1416 zurück. Wenn die Bestimmung in Schritt 1416 negativ ist, setzt sich die Steuerung zu Schritt 1420 fort. In Schritt 1420 ist der Prozeß abgeschlossen.
Um den Prozeß des Ladens neuer Befehlsdekodierinformation zu vereinfachen, kann ein Standardsatz von Universalbefehlen de­ finiert und in der Dekodierinformation der programmierbaren Einheit (beispielsweise programmierbarer Speicher, wie z. B. ROM) hart verdrahtet werden. Vorzugsweise umfassen die hart verdrahteten Befehle Befehlstypen, wie beispielsweise Initia­ lisierungsbefehle (beispielsweise "Laden", "Übertragen" oder dergleichen), um einen einfachen Zugriff zu der Dekodierta­ belle in der programmierbaren Einheit zu ermöglichen. Derar­ tige Befehle sind als "Haushaltungs-"Befehle bekannt und sind gewöhnlich immer in dem Prozessor gültig. Dagegen können Be­ fehle, die nur für einen Operationsmodus des Prozessors (beispielsweise Fehlerbefehle) gültig sind, zu lediglich ei­ nem der Mehrfachbefehlssätze delegiert werden.
Um die Abmessung des programmierbaren Dekodierspeichers auf einem Mindestmaß zu halten, können die erlaubten Eingangsbit­ muster begrenzt werden, um einen vorbestimmten Satz von Be­ fehlen in einem Betriebsmodus zu tragen. Somit könnte der Be­ fehlssatz auf 256 verschiedene Befehle je Befehlssatz be­ grenzt werden. Auch aus Effizienzgründen ist die Position von beliebigen Feldern in dem Befehlsbitmuster festgelegt. Fest­ gelegte Felder können Kosten reduzieren und die zum Kodieren und Dekodieren erforderliche Logik vereinfachen. Somit kann das Befehlsbitmuster als die niederwertigsten sieben Bits des Befehlswortes definiert werden.
Weiterhin können aufgrund des benutzer-programmierbaren Sche­ duler-Controllers 1302 Dekodiertabellen-"Programm"-Makros, die programm-besondere Hardware-Konfigurationen für verschie­ dene Funktionen manipulieren können, ausgeführt werden. Die Programm-Makros können innerhalb der benutzer-programmier­ baren Scheduler-Steuerung 1302 in Echtzeit unter Software- Steuerung fortgeschrieben werden. Somit erlaubt die benutzer­ programmierbare Struktur mehrere Flexibilitätspegel für den Endbenutzer. Weiterhin erlaubt die benutzer-programmierbare Struktur verschiedene Flexibilitätszeitpunkte in der Entwick­ lung der entsprechenden Hardware (beispielsweise Digitalpro­ zessor). Wie oben beschrieben ist, kann die benutzer-program­ mierbare Scheduler-Steuerung 1302 verwendet werden, um eine Universalarchitektur mit verschiedenen Mehrfachfunktionsein­ heiten, die Befehlbits, externe Steuerstifte oder ein benut­ zer-programmierbares Register oder einen Speicher verwenden, zu erzeugen, damit die Scheduler-Steuerung geliefert wird. Eine derartige Ausführung erlaubt einen mehrfach aufgereihten Compiler für den Prozessor 800, um Befehle zu erzeugen, die in einer benutzer-definierbaren parallelen Architektur ablau­ fen. Alternativ erlaubt die Verwendung eines derartigen Sche­ dulers die Konstruktion von Hardware-programmierbaren Chips, deren Funktionalität geändert werden kann, indem die Schedu­ ler-Steuerbits innerhalb eines Registers, Speichers oder ex­ ternen Pins bzw. Stiften verändert werden, damit die Ausfüh­ rung der Daten unter den Funktionseinheiten umorganisiert wird. Das bevorzugte Ausführungsbeispiel des benutzer-pro­ grammierbaren Scheduler-Controllers 1302 und des diesen in einem Eigenzeit-Datenverarbeitungsgerät verwendenden Verfah­ rens führt zu einer vollständigen Hardware-programmierbaren Architektur. Somit soll die benutzer-programmierbare Struktur nicht auf den Prozessor 800 begrenzt werden.
Das Unterstützen einer derartigen Architektur innerhalb einer Synchronumgebung erfordert eine Steigerung in der Komplexi­ tät. Die Konzepte des Planens bzw. Schedulens innerhalb eines Synchron-Paradigmas ist komplexer infolge der weiteren Anfor­ derung der Bezugnahme auf Phasen eines Taktsignales oder Taktzyklus. Wie oben beschrieben ist, erzwingt der Takt auch eine starrere Design-Umgebung für die Funktionseinheiten und muß darauf zugeschnitten sein, einen Betriebsfall des schlimmsten Falles der programmierbaren Architektur zu hand­ haben.
Obwohl der Scheduler in bezug auf ein besonderes Design be­ schrieben wurde, ist das Konzept auf die Steuerung von allge­ meinen Eigenzeitschaltungen mit Zwischenkommunikation-Unter­ blöcken und nicht lediglich Prozessor-Architekturen, die oben beschrieben sind, anwendbar. Weiterhin wird der Eigenzeit- Scheduler in einem Eigenzeit-DSP-Design mittels eines 4- Phasen-Steuerschemas ausgeführt. Jedoch können alternative Eigenzeit-Schnittstellenprotokolle verwendet werden, die von dem 4-Phasen-Steuerschema verschieden sind.
Die bevorzugten Ausführungsbeispiele der vorliegenden Erfin­ dung erlauben eine benutzer-programmierbare Schaltungssteue­ rung. Ein Software-Designer, der eine Hardware-Architektur verwendet, die die benutzer-programmierbare Schaltungssteue­ rung ausführt, kann eine neue Ordnung der Operationen defi­ nieren, um eine generelle Hardware für spezifische Anwendung oder für Software-Anwendungsprogramm zu optimieren. Vorzugs­ weise kann Software für eingebettete Systeme auf eine Archi­ tektur für eine gegebene Anwendung zugeschnitten werden, um Systemkosten zu reduzieren oder das Verhalten zu verbessern, ohne neue Kunden-Hardware zu erfordern.
Wie oben beschrieben ist, können die bevorzugten Ausführungs­ beispiele des Gerätes zum Steuern von asynchronen Systemen gemäß der vorliegenden Erfindung gestaltet werden, um jegli­ chen Befehlstyp auf den vorgesehenen Funktionseinheiten aus­ zuführen, was eine Funktionseinheit-Ausführung in jeder ge­ forderten sequentiellen Ordnung, einer gleichzeitigen Ordnung oder überhaupt nicht aktiviert, erlaubt.
Wie oben beschrieben ist, führen die bevorzugten Ausführungs­ beispiele gemäß der vorliegenden Erfindung ein effizientes Funktions- oder Arbeits-Schedulen bzw. Planen in einer gene­ ralisierten Architektur (beispielsweise einer Prozessor- Architektur) insbesondere für hoch gestaltete Architekturen aus (beispielsweise eine Prozessor-Architektur, in der neue Befehle und Hardware beigefügt werden können). Weiterhin kön­ nen die bevorzugten Ausführungsbeispiele des Eigenzeit- Schedulers gemäß der vorliegenden Erfindung die Steuerstruk­ turen für Digitalprozessoren vereinfachen. Zusätzlich erlaubt die benutzer-programmierbare Struktur der Dekodierinformation eine mit der Zeit laufende Definition von Befehlen und eine vollständig Hardware-programmierbare Architektur. Die bevor­ zugten Ausführungsbeispiele gemäß der vorliegenden Erfindung verwenden eine Eigenzeit- und Zwischenblock-Kommunikation zum Ausführen der bevorzugten Ausführungsbeispiele des Gerätes zur Steuerung von Asynchronsystemen.
Die vorliegende Erfindung kann sofort auch auf andere Geräte­ arten angewandt werden.

Claims (12)

1. Datenverarbeitungsgerät, umfassend:
eine Vielzahl von Funktionseinheiten (802-812), deren jede einen Satz von vorgeschriebenen Operationen aus­ führt, gekennzeichnet durch
einen Scheduler-Controller (814), der wenigstens ei­ nen laufenden Befehl dekodiert, um ein Funktionseinheit- Verzeichnis und Steuerinformation zu erzeugen, und
eine Kommunkationsvorrichtung (820), die die Funkti­ onseinheiten und den Scheduler-Controller (814) koppelt.
2. Datenverarbeitungsgerät, umfassend:
eine Vielzahl von Funktionseinheiten (802-812), deren jede einen Satz von vorgeschriebenen Operationen aus­ führt, gekennzeichnet durch
einen Datenbus (820), der die Funktionseinheiten kop­ pelt,
einen asynchronen Controller, der verschiedene Aus­ führungszeiten in wenigstens dem Funktionseinheit-Ver­ zeichnis ausführt, und
einen Scheduler-Controller (814), der wenigstens ei­ nen laufenden Befehl dekodiert, um ein Funktionseinheit- Verzeichnis und Steuerinformation zu erzeugen.
3. Datenverarbeitungsgerät, umfassend:
eine Vielzahl von Funktionseinheiten (802-812), deren jede einen Satz von vorgeschriebenen Operationen aus­ führt, gekennzeichnet durch
eine programmierbare Schaltung (1302), die in der La­ ge ist, einen gesamten Befehl zu modifizieren,
einen Scheduler-Controller (814), der einen laufenden Befehl dekodiert, um eine entsprechende Befehlstask mit­ tels der Vielzahl von Funktionseinheiten durchzuführen, und
eine Kommunikationsvorrichtung (820), die die Funkti­ onseinheiten, die programmierbare Schaltung (1302) und den Scheduler-Controller (814) koppelt.
4. Datenverarbeitungsgerät nach einem der Ansprüche 1 bis 3, dadurch gekennzeichnet daß der Scheduler-Controller (814) einen ersten laufenden Befehl ausführt, indem jede der mehreren Funktionseinheiten (802-812) dazu veranlaßt wird, überbrückt oder gleichzeitig mit anderen Funkti­ onseinheiten der mehreren Funktionseinheiten oder se­ quentiell nach den anderen Funktionseinheiten der mehre­ ren Funktionseinheiten betrieben zu werden.
5. Datenverarbeitungsgerät nach Anspruch 1 oder 2, dadurch gekennzeichnet, daß eine asynchrone Steuerungsstruktur (816, 818, 822) verschiedene Ausführungszeiten in dem Funktionseinheit-Verzeichnis ausführt.
6. Datenverarbeitungsgerät nach Anspruch 1 oder 2, dadurch gekennzeichnet, daß der Scheduler-Controller (814) eine Befehlstask durch Dekodieren eines ersten laufenden Be­ fehls und Bilden einer geordneten Operation an einem Un­ tersatz der mehreren Funktionseinheiten ausführt, wobei verschiedene Formen des ersten laufenden Befehls in we­ nigstens einem von verschiedenen Funktionseinheit-Ver­ zeichnissen und verschiedener Steuerinformation resul­ tieren.
7. Datenverarbeitungsgerät nach Anspruch 1 oder 2, dadurch gekennzeichnet, daß der Scheduler-Controller (814) au­ ßerdem umfaßt:
einen Scheduler-Dekodierer, der den ersten laufenden Befehl dekodiert, um das Funktionseinheit-Verzeichnis und die Steuerinformation zu erzeugen, wobei der Schedu­ ler-Dekodierer eine Ausführung einer Logiktabelle um­ faßt, und
eine Vielzahl von Scheduler-Funktionseinheit- Controllern (816), deren jeder eine Eigenzeit von einer der mehreren Funktionseinheiten steuert.
8. Datenverarbeitungsgerät nach Anspruch 7, dadurch gekenn­ zeichnet, daß jeder der Scheduler-Funktionseinheit- Controller (816) außerdem aufweist:
eine Abhängigkeit-Überwachungseinheit (1200), die ein Bypass-Signal und ein Ausführungssignal erzeugt, wobei die Abhängigkeit-Überwachungseinheit (1200) außerdem aufweist:
eine Bypass-Schaltung, die ein Abhängigkeits­ signal empfängt und das Bypass-Signal für eine ent­ sprechende Funktionseinheit liefert,
mehrere Abhängigkeitsschaltungen, deren jede das Abhängigkeitssignal und ein entsprechendes Bestäti­ gungssignal empfängt, und
eine Steuerschaltung, die Ausgangssignale von den mehreren Abhängigkeitsschaltungen und das Bypass-Signal empfängt, um das Ausführungssignal für die entsprechende Funktionseinheit aus zugeben, und
eine Operationssteuereinheit, die das Bypass-Signal, das Ausführungssignal und ein Anforderungssignal emp­ fängt und ein Bestätigungssignal liefert, wobei die Ope­ rationssteuereinheit außerdem aufweist:
erste und zweite Logikgatter (908, 910), von de­ nen das zweite Logikgatter ein Rücksetzsignal und das Bestätigungssignal empfängt,
ein erstes C-Gatter (904), das das Anforderungs­ signal, das Bypass-Signal und Ausgangssignale der ersten Logik-Gatter empfängt und ein entsprechendes Funktionseinheit-Startsignal ausgibt,
ein zweites C-Gatter (902), das das Anforde­ rungssignal, das Ausführungssignal und Ausgangs­ signale der ersten und zweiten Logik-Gatter emp­ fängt und ein Zwischensignal ausgibt, und
ein drittes C-Gatter (906), das ein Beendigungs­ signal von der entsprechenden Funktionseinheit, das Anforderungssignal und die Ausgangssignale der er­ sten und zweiten C-Gatter empfängt und das Bestäti­ gungssignal ausgibt, wobei das erste Logik-Gatter das Beendigungssignal und das Zwischensignal emp­ fängt.
9. Datenverarbeitungsgerät nach Anspruch 1 oder 2, gekenn­ zeichnet durch eine programmierbare Schaltung (1302), die in der Lage ist, einen gesamten Befehl zu modifizie­ ren.
10. Datenverarbeitungsgerät nach Anspruch 3 oder 9, dadurch gekennzeichnet, daß der Befehl in Echtzeit modifiziert ist, und daß die programmierbare Schaltung (1302) einen Satz aus mehreren Befehlssätzen auswählt und den gewähl­ ten Befehlssatz während einer Initialisierung des Daten­ verarbeitungsgerätes lädt bzw. eingibt.
11. Datenverarbeitungsgerät nach Anspruch 3 oder 10, dadurch gekennzeichnet, daß die programmierbare Schaltung wenig­ stens eine Einheit aus einem dekodier-programmierbaren Speicher und einer Anordnung von Registern aufweist, wo­ bei die Anordnung von Registern wenigstens eine Einheit aus einer benutzer-modifizierten Einheit und einer durch eine zu dem Datenverarbeitungsgerät externen Quelle mo­ difizierten Einheit ist.
12. Datenverarbeitungsgerät nach einem der Ansprüche 1 bis 3, dadurch gekennzeichnet, daß die Vielzahl von Funkti­ onseinheiten wenigstens eine Einheit aus einer Programm­ zählereinheit (802), einer Befehlsdekodiereinheit, einer Rechen- und Logikeinheit (806), einer Multipliziererein­ heit (808), einer indirekten Adreßregistereinheit (810) und einer Datenspeichereinheit (812) aufweist, und daß der Scheduler-Controller (814) eine Dreistufen-Befehls­ pipeline und ein Vierphasen-Kommunkationsprotokoll ver­ wendet.
DE19842254A 1997-09-18 1998-09-15 Datenverarbeitungsgerät Expired - Fee Related DE19842254C2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/932,956 US6055620A (en) 1997-09-18 1997-09-18 Apparatus and method for system control using a self-timed asynchronous control structure
US08/941,573 US6044453A (en) 1997-09-18 1997-09-30 User programmable circuit and method for data processing apparatus using a self-timed asynchronous control structure

Publications (2)

Publication Number Publication Date
DE19842254A1 true DE19842254A1 (de) 1999-03-25
DE19842254C2 DE19842254C2 (de) 2003-08-14

Family

ID=27130037

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19842254A Expired - Fee Related DE19842254C2 (de) 1997-09-18 1998-09-15 Datenverarbeitungsgerät

Country Status (6)

Country Link
US (1) US6044453A (de)
JP (1) JP3124258B2 (de)
KR (1) KR100280501B1 (de)
CA (1) CA2246252C (de)
DE (1) DE19842254C2 (de)
GB (1) GB2330673B (de)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69935924T2 (de) * 1998-07-22 2008-01-10 California Institute Of Technology, Pasadena Umgeordnete kommunikationsprozesse in asynchronen schaltkreisen mit pipelines
US6442672B1 (en) * 1998-09-30 2002-08-27 Conexant Systems, Inc. Method for dynamic allocation and efficient sharing of functional unit datapaths
US6862563B1 (en) 1998-10-14 2005-03-01 Arc International Method and apparatus for managing the configuration and functionality of a semiconductor design
US6519753B1 (en) * 1999-11-30 2003-02-11 Quicklogic Corporation Programmable device with an embedded portion for receiving a standard circuit design
AUPQ542900A0 (en) * 2000-02-04 2000-02-24 Bisinella, Richard Microprocessor
US6389315B1 (en) * 2000-02-25 2002-05-14 Medtronic, Inc. Implantable medical device incorporating self-timed logic
WO2001069411A2 (en) 2000-03-10 2001-09-20 Arc International Plc Memory interface and method of interfacing between functional entities
US7600096B2 (en) * 2002-11-19 2009-10-06 Stmicroelectronics, Inc. Coprocessor extension architecture built using a novel split-instruction transaction model
US7079147B2 (en) * 2003-05-14 2006-07-18 Lsi Logic Corporation System and method for cooperative operation of a processor and coprocessor
US7051146B2 (en) * 2003-06-25 2006-05-23 Lsi Logic Corporation Data processing systems including high performance buses and interfaces, and associated communication methods
JP4147423B2 (ja) * 2004-11-12 2008-09-10 セイコーエプソン株式会社 任意精度演算器、任意精度演算方法、および電子機器
WO2007067562A2 (en) * 2005-12-06 2007-06-14 Boston Circuits, Inc. Methods and apparatus for multi-core processing with dedicated thread management
US7660203B2 (en) 2007-03-08 2010-02-09 Westerngeco L.L.C. Systems and methods for seismic data acquisition employing asynchronous, decoupled data sampling and transmission
US8127113B1 (en) 2006-12-01 2012-02-28 Synopsys, Inc. Generating hardware accelerators and processor offloads
KR100825816B1 (ko) * 2007-01-25 2008-04-29 삼성전자주식회사 핸드쉐이크 인터페이스 방식을 이용한 디지털 신호프로세서 및 그 구동방법
US8001510B1 (en) * 2008-09-05 2011-08-16 Xilinx, Inc. Automated method of architecture mapping selection from constrained high level language description via element characterization
US20110283089A1 (en) * 2009-01-28 2011-11-17 Harshal Ingale modularized micro processor design
US10277724B2 (en) * 2014-11-20 2019-04-30 Peter M. RONCETTI Ergonomic accessory for smartphones and other hand-held portable electronic devices
KR102522990B1 (ko) * 2021-03-25 2023-04-19 (주)알파솔루션즈 브리지 인터페이스 시스템 및 그것의 제어방법

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4450519A (en) * 1980-11-24 1984-05-22 Texas Instruments Incorporated Psuedo-microprogramming in microprocessor in single-chip microprocessor with alternate IR loading from internal or external program memories
US4837740A (en) * 1985-01-04 1989-06-06 Sutherland Ivan F Asynchronous first-in-first-out register structure
US4903196A (en) * 1986-05-02 1990-02-20 International Business Machines Corporation Method and apparatus for guaranteeing the logical integrity of data in the general purpose registers of a complex multi-execution unit uniprocessor
EP0312764A3 (de) * 1987-10-19 1991-04-10 International Business Machines Corporation Datenprozessor mit mehrfachen Ausführungseinheiten zur parallelen Ausführung von mehreren Befehlsklassen
US5488729A (en) * 1991-05-15 1996-01-30 Ross Technology, Inc. Central processing unit architecture with symmetric instruction scheduling to achieve multiple instruction launch and execution
JP2908598B2 (ja) * 1991-06-06 1999-06-21 松下電器産業株式会社 情報処理装置
TW226057B (de) * 1991-12-23 1994-07-01 Philips Nv
EP0583089B1 (de) * 1992-08-12 2000-01-26 Advanced Micro Devices, Inc. Befehlsdecoder
US5848289A (en) * 1992-11-27 1998-12-08 Motorola, Inc. Extensible central processing unit
US5574927A (en) * 1994-03-25 1996-11-12 International Meta Systems, Inc. RISC architecture computer configured for emulation of the instruction set of a target computer
US5590352A (en) * 1994-04-26 1996-12-31 Advanced Micro Devices, Inc. Dependency checking and forwarding of variable width operands
GB2289778B (en) * 1994-05-17 1998-12-16 Advanced Risc Mach Ltd Data processing
EP0870228B1 (de) * 1995-10-06 2003-08-13 Advanced Micro Devices, Inc. Vereinheitlichter multifunktions-operationsverteiler für die ungeordnete befehlsexekution in einem superskalaren prozessor
US5864689A (en) * 1995-12-05 1999-01-26 Advanced Micro Devices, Inc. Microprocessor configured to selectively invoke a microcode DSP function or a program subroutine in response to a target address value of branch instruction
JPH1011289A (ja) * 1996-06-19 1998-01-16 Mitsubishi Electric Corp 並列処理プロセッサにおける命令数拡張方法および並列処理プロセッサ
US5870578A (en) * 1997-12-09 1999-02-09 Advanced Micro Devices, Inc. Workload balancing in a microprocessor for reduced instruction dispatch stalling

Also Published As

Publication number Publication date
GB2330673A (en) 1999-04-28
CA2246252A1 (en) 1999-03-18
GB2330673B (en) 2003-03-05
JPH11154087A (ja) 1999-06-08
KR100280501B1 (ko) 2001-02-01
DE19842254C2 (de) 2003-08-14
JP3124258B2 (ja) 2001-01-15
US6044453A (en) 2000-03-28
CA2246252C (en) 2004-03-16
GB9820155D0 (en) 1998-11-11
KR19990029948A (ko) 1999-04-26

Similar Documents

Publication Publication Date Title
DE19842254C2 (de) Datenverarbeitungsgerät
DE68927492T2 (de) Verfahren und Vorrichtung zur gleichzeitigen Verteilung von Befehlen an mehrere funktionelle Einheiten
DE69129569T2 (de) Maschine mit sehr langem Befehlswort für leistungsfähige Durchführung von Programmen mit bedingten Verzweigungen
DE3914265C2 (de)
DE60010907T2 (de) Sram-steuerungvorrichtung für parallele prozessorarchitektur mit adressen- und befehlswarteschlange und arbiter
DE19506435C2 (de) Verfahren und Einrichtung zum Vermeiden von Rückschreibkonflikten zwischen einen gemeinsamen Rückschreibpfad verwendenden Ausführungseinheiten
DE19735348B4 (de) Vektorprozessor zur Einzelbefehl-Mehrdaten-Verarbeitung unter Verwendung von mehreren Bänken von Vektorregistern und zugehöriges Verfahren zum Betreiben desselben
DE69719235T2 (de) Prozessor und Verfahren zur spekulativen Ausführung von bedingten Verzweigungsbefehlen unter Verwendung einer von mehreren Verzweigungsvorhersageverfahren
DE69636861T2 (de) Mikroprozessor mit Lade-/Speicheroperation zu/von mehreren Registern
DE69631778T2 (de) Flexible implementierung eines systemverwaltungsmodus in einem prozessor
DE2718051C3 (de) Datenverarbeitungsanlage mit Einrichtungen zur wechselnden Bearbeitung mehrerer Aufgaben
DE68929215T2 (de) Datenprozessor
DE69612991T2 (de) System zur bearbeitung von selbstmodifizierendem kode
DE3638572C2 (de)
DE60132633T2 (de) Digitale signalprozessorvorrichtung
DE60131214T2 (de) Verfahren und Anordnung zur Freilassung von Funktionseinheiten in einem multithreaded VLIW-Prozessor
EP0961980A2 (de) Verfahren zur selbstsynchronisation von konfigurierbaren elementen eines programmierbaren bausteines
DE4301417A1 (de)
DE4420703A1 (de) Mikrocomputer
DE3852056T2 (de) Koprozessor und Verfahren zu dessen Steuerung.
DE69621091T2 (de) Programmierbare Steuerung
DE19738542A1 (de) Datenverarbeitungseinrichtung
DE102004009610B4 (de) Heterogener paralleler Multithread-Prozessor (HPMT) mit geteilten Kontexten
DE68928300T2 (de) Verfahren und Vorrichtung für Pipeline-Befehlsausführung
EP1117037B1 (de) Datenverarbeitungsvorrichtung zum parallelen Verarbeiten von unabhängigen Prozessen (Threads)

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8304 Grant after examination procedure
8364 No opposition during term of opposition
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee

Effective date: 20140401