DE19842254A1 - Datenverarbeitungsgerät - Google Patents
DatenverarbeitungsgerätInfo
- 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
Links
- 238000012545 processing Methods 0.000 title claims abstract description 22
- 238000004891 communication Methods 0.000 claims abstract description 16
- 238000012790 confirmation Methods 0.000 claims description 20
- 238000012544 monitoring process Methods 0.000 claims 2
- 238000013500 data storage Methods 0.000 claims 1
- 230000006870 function Effects 0.000 description 35
- 238000010586 diagram Methods 0.000 description 18
- 230000004913 activation Effects 0.000 description 11
- 238000000034 method Methods 0.000 description 11
- 230000001360 synchronised effect Effects 0.000 description 10
- 230000000694 effects Effects 0.000 description 8
- 230000008569 process Effects 0.000 description 7
- 230000006399 behavior Effects 0.000 description 6
- 238000013461 design Methods 0.000 description 6
- 230000001419 dependent effect Effects 0.000 description 4
- 230000003542 behavioural effect Effects 0.000 description 3
- 230000000903 blocking effect Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 230000001343 mnemonic effect Effects 0.000 description 3
- 238000011084 recovery Methods 0.000 description 3
- 230000001684 chronic effect Effects 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000018109 developmental process Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 241000251468 Actinopterygii Species 0.000 description 1
- 101100452593 Caenorhabditis elegans ina-1 gene Proteins 0.000 description 1
- 208000034530 PLAA-associated neurodevelopmental disease Diseases 0.000 description 1
- 230000003213 activating effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000003292 diminished effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000446 fuel Substances 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 108090000623 proteins and genes Proteins 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 241000894007 species Species 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3818—Decoding for concurrent execution
- G06F9/3822—Parallel decoding, e.g. parallel decode units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30196—Instruction operation extension or modification using decoder, e.g. decoder per instruction set, adaptable or programmable decoders
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3856—Reordering of instructions, e.g. using queues or age tags
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
- G06F9/3871—Asynchronous 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.
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.
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.
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.
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.
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.
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)
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)
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 |
-
1997
- 1997-09-30 US US08/941,573 patent/US6044453A/en not_active Expired - Lifetime
-
1998
- 1998-08-31 CA CA002246252A patent/CA2246252C/en not_active Expired - Lifetime
- 1998-09-15 DE DE19842254A patent/DE19842254C2/de not_active Expired - Fee Related
- 1998-09-17 JP JP10262975A patent/JP3124258B2/ja not_active Expired - Fee Related
- 1998-09-17 GB GB9820155A patent/GB2330673B/en not_active Expired - Fee Related
- 1998-09-18 KR KR1019980038723A patent/KR100280501B1/ko not_active IP Right Cessation
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 |