-
Gebiet der Erfindung
-
Die
vorliegende Erfindung bezieht sich allgemein auf eine zentrale Verarbeitungseinheit
und insbesondere auf eine erweiterbare zentrale Verarbeitungseinheit.
-
Hintergrund
der Erfindung
-
Eine
zentrale Verarbeitungseinheit (CPU: central processing unit) ist
im Allgemeinen das primäre "Gehirn" einer microcomputerintegrierten
Schaltung (MCU). Neben der CPU umfasst eine MCU normalerweise ein
oder mehrere integrierte Peripherieelemete oder -bereiche, wie etwa
Speicher, Timer und Bus-Schnittstellen. Die CPU ist jedoch üblicherweise verantwortlich
für das
Empfangen und Interpretieren von Software-Anweisungen, die verwendet
werden, um die MCU zu steuern.
-
Eine
spezielle CPU kann von verschiedenen MCUs verwendet werden. Wenn
dieselbe CPU bei verschiedenen MCUs verwendet wird, werden diese MCUs
allgemein als eine "Familie" betrachtet (wie etwa
die MC68HC05-Familie von Microcomputern, erhältlich bei Motorola, Inc. in
Austin, Texas). Es gibt viele Vorteile, dieselbe CPU mit verschiedenen MCUs
zu verwenden, sowohl vom Standpunkt des Herstellers aus als auch
vom Standpunkt des Kunden aus gesehen. Ein solcher Vorteil ist Software-Kompatibilität unter
den MCUs in einer Familie, die dieselbe CPU benutzen.
-
Ein
Problem entsteht jedoch, weil eine Familie von MCUs normalerweise
in einem weiten Bereich von Anwendungen eingesetzt wird. Manche MCU-Kunden
wünschen
oder benötigen
speziell zugeschnittene Anweisungen (auch applikationsspezifische
Anweisungen genannt), z.B. digitale Signalverarbeitungsanweisungen
oder Fuzzy-Logic-Anweisungen. Andere MCU-Kunden benötigen diese
speziell zugeschnittenen Anweisungen jedoch nicht und sind nicht
Willens, die zusätzlichen
Kosten zu bezahlen, die damit verbunden sind, dass diese speziell
zugeschnittenen Anweisungen Teil der CPU sind. Daher wird es unabhängig davon,
wie die Abwägung zwischen
anwendungsspezifischen Anweisungen und Kosten getroffen wird, viele
MCU-Kunden geben, die mit der von dem CPU-Designer getroffenen Abwägung unzufrieden
sind.
-
Ein
zweites Problem entsteht aufgrund der Tatsache, dass eine Familie
von MCUs im Allgemeinen für
mehrere Jahre auf dem Markt ist. Die Erfordernisse von MCU-Kunden ändern sich
jedoch mit einer schnelleren Geschwindigkeit. Beispielsweise benötigten vor
nur 5 Jahren wenige, wenn über haupt, MCU-Kunden
Fuzzy-Logic-Anweisungen. Heute ist es nicht ungewöhnlich,
dass Fuzzy-Logic-Anweisungen eine Notwendigkeit für eine erhebliche
Anzahl von MCU-Kunden sind. Als ein Ergebnis ist es sehr schwierig,
heute eine CPU zu designen, die anwendungsspezifische Anweisungen
beinhaltet, die während
der Lebensdauer der CPU höchst üblich erforderlich
sein werden. Tatsächlich
kann es sein, dass einige der anwendungsspezifischen Anweisungen, die
in Zukunft von einer erheblichen Anzahl von MCU-Kunden benötigt werden,
noch nicht bekannt sind.
-
Ein
drittes Problem entsteht, weil einige MCU-Kunden einige kritische
Softwareroutinen haben, die von bestehenden Niedrigpreis-CPUs nicht zufrieden
stellend durchgeführt
werden können.
Diese MCU-Kunden sind daher gezwungen, eine MCU mit einer leistungsstärkeren und
teureren CPU zu verwenden, um den Erfordernissen einiger kritischer Software-Routinen gerecht
zu werden. Es kann jedoch sein, dass die leistungsstärkere und
teurere CPU den Energieverbrauchs- und/oder Kostengrenzen des Kunden nicht
gerecht wird.
-
Die
oben erwähnten
Probleme sind höchst aktuell
bei MCU-Anwendungen, die sehr kostensensitiv sind, beispielsweise
low-end-MCUs, wie etwa die MC68HC05-Familie von Microcomputern.
Bei der derzeitigen MC68HC05-Familie von Microcomputern gibt es
keine einfache und kosteneffiziente Möglichkeit, neue Anweisungen
hinzuzufügen.
Es gibt daher keinen einfachen und kosteneffizienten Weg, eine CPU
so zuzuschneiden, wie sich die Bedürfnisse und Erfordernisse der
MCU-Kunden ändern.
-
"Increasing an instruction
set without increasing word length" von Moser, Jr. erschienen in Electronics
vol. 48, no 9, 6. Februar 1975, New York USA, Seiten 114–115, lehrt das
Aufstocken eines Satzes von Instruktionen ohne Vergrößerung der
Wortlänge. Ein
4-Bit-Anweisungswort kann eine von zwei Bedeutungen haben, abhängig vom
Zustand eines Flip-Flops und davon, welcher Decoder benutzt wird. Eine
1111 Anweisung von Decoder 1 setzt den Flip Flop, deaktiviert den
Decoder 1 und aktiviert Decoder 2; eine 1111-Anweisung von dem Decoder 2 löscht den
Flip-Flop, deaktiviert Decoder 2 und aktiviert Decoder 1.
-
"New instruction and
extended instruction handling" erschienen
in IBM Technical Disclosure Bulletin, vol. 21, no. 1, Juni 1978,
New York, USA, Seiten 201–202,
lehrt das Hinzufügen
neuer Anweisungen durch Erweiterung des Anweisungsdecoders durch
zusätzliche
Decoder, die nur auf entsprechende neue Anweisungen antworten, während sie
die zuvor bereits existierenden Decoder deaktivieren und die Signalgebung
für eine
unzulässige
Operation verzögern.
Dieser Artikel lehrt auch das Decodieren von Anweisungen, die breiter
sind als der Speicherdatenpfad, indem eine lange Anweisung in zwei
aufeinander folgende Teile unterteilt und ein "Gedächtnis"-Register zur Verfügung gestellt
wird, welches nur einen Teil der ersten Hälfte speichert, die benötigt wird,
um sich daran zu erinnern, welche lange Anweisung gerade ausgeführt wird.
-
Zusammenfassung
der Erfindung
-
Die
zuvor erwähnten
Erfordernisse werden erfüllt
und andere Vorteile werden erreicht durch die vorliegende Erfindung,
die eine zentrale Verarbeitungseinheit ist, wie in einem der Ansprüche 1–6 zitiert.
-
Die
vorliegende Erfindung wird vom Fachmann anhand der unten stehenden,
detaillierten Beschreibung in Verbindung mit den beigefügten Zeichnungen
verstanden werden.
-
Kurze Beschreibung
der Zeichnungen
-
1 illustriert
in Form eines Blockdiagramms ein Datenverarbeitungssystem 10 gemäß einer
Ausführungsform
der vorliegenden Erfindung;
-
2 illustriert
in Form eines Blockdiagramms eine erweiterbare zentrale Verarbeitungseinheit 12 von 1 gemäß einer
Ausführungsform der
vorliegenden Erfindung;
-
3 illustriert
in Form eines Blockdiagramms eine alternative erweiterbare zentrale
Verarbeitungseinheit 12' von 1 gemäß einer
Ausführungsform
der vorliegenden Erfindung;
-
4 illustriert
in Form eines Blockdiagramms einen ersten Zustandssequenzer 58 von 2 gemäß einer
Ausführungsform
der vorliegenden Erfindung;
-
5 illustriert
in Form eines Blockdiagramms einen ersten Zustandssequenzer 158 von 3 gemäß einer
Ausführungsform
der vorliegenden Erfindung;
-
6 illustriert
in Form eines Blockdiagramms einen zweiten Zustandssequenzer 68 von 2 gemäß einer
ersten Ausführungsform
der vorliegenden Erfindung;
-
7 illustriert
in Form eines Blockdiagramms einen zweiten Zustandssequenzer 168 von 3 gemäß einer
Ausführungsform
der vorliegenden Erfindung; und
-
8 illustriert
in Form eines Blockdiagramms einen Bereich einer Ausführungseinheit 56 von 2 und
einen identischen Bereich einer Ausführungseinheit 156 von 3 gemäß einer
Ausführungsform
der vorliegenden Erfindung.
-
Beschreibung der bevorzugten
Ausführungsform
-
Benötigt wurde
eine einfache und kosteneffiziente Weise, einer zentralen Verarbeitungseinheit (CPU)
neue Anweisungen hinzuzufügen.
Durch Modifizieren der Architektur einer neuen CPU oder CPU nach
dem Stand der Technik kann die neue CPU oder CPU nach dem Stand
der Technik erweiterbar gestaltet werden, so dass neue Anweisungen
auf eine relativ einfache und kosteneffiziente Weise hinzugefügt werden
können.
Der Ausdruck "erweiterbar" im Hinblick auf
eine CPU wird verwendet, um zu bezeichnen, dass der CPU neue Anweisungen
durch einfaches Hinzufügen
einer bestimmten speziellen Schaltung und ohne die Notwendigkeit
zur wesentlichen Veränderung
der bestehenden CPU-Schaltung hinzugefügt werden können.
-
Durch
Verwendung der vorliegenden Erfindung kann eine erweiterbare CPU
mit einem Basissatz von Anweisungen designt werden, die den Erfordernissen
der Niederpreis-Kunden entsprechen. Aufgrund der Einfachheit und
der niedrigen Kosten des Aufrüstens
einer erweiterbaren CPU mit neuen Anweisungen sind Kunden, die anwendungsspezifische Anweisungen
wünschen
oder benötigen,
in der Lage, eine oder mehrere anwendungsspezifische Anweisungen
hinzufügen,
während
nach wie vor ein vernünftiger
Preis beibehalten wird. Außerdem
können, wenn
neue Algorithmen entwickelt werden oder in der Zukunft populär werden,
neue Anweisungen zu der erweiterbaren CPU hinzugefügt werden,
um die neuen Algorithmen auf einfache und kosteneffiziente Weise
zu implementieren.
-
Durch
Verwendung der vorliegenden Erfindung kann eine CPU-Architektur
auf System-Niveau gemäß dem Stand
der Technik, nämlich
die MC68HC05 CPU-Architektur bei der illustrierten Ausführungsform
modifiziert und erweiterbar gestaltet werden, so dass keine wesentlichen
Schaltungsänderungen
erforderlich sein werden, um neue Anweisungen hinzuzufügen. Statt
dessen wird die Hinzufügung
einer speziellen, vorbestimmten Schaltung erforderlich sein, um
die neuen Anweisungen durchzuführen.
Die sich ergebende, erweiterbare CPU, bezeichnet als MC68HC08, ist
Objektcode-kompatibel mit der bestehenden MC68HC05-Familie von MCUs.
-
Eine
CPU nach dem Stand der Technik kann erweiterbar gestaltet werden,
indem folgende Modifikationen durchgeführt werden: (1) es wird mehr
als einer Steuereinheit gestattet, Steuersignale in die Ausführungseinheit
einzuspeisen; (2) alle Register in dem Programmierermodell werden
in der Ausführungseinheit
positioniert (einschließlich
das Bedingungscode-Register); (3) die Zustandssequenzerschaltung
wird modifiziert; und (4) es werden einige Steuersignale hinzugefügt.
-
Sobald
die CPU erweiterbar ist, können
zusätzliche
Anweisungen ohne wesentliche Änderungen
der Schaltung der erweiterbaren CPU hinzugefügt werden.
-
Neue
Anweisungen können
hinzugefügt
werden, indem einfach eine zweite Steuereinheit 64 und ein
zweiter Zustandssequenzer 68 hinzugefügt werden. Man beachte, dass
der größte Teil
der zweiten Steuereinheit 64 ein Duplikat der ursprünglichen Steuereinheit 54 sein
kann und dass einiges des zweiten Zustandssequenzers 68 ein
Duplikat des ursprünglichen
Zustandssequenzers 58 sein kann. Man beachte auch, dass
sowohl die ursprüngliche Steuereinheit 54 und die
zweite Steuereinheit 64 vollen Zugriff auf alle Ressourcen
innerhalb der Ausführungseinheit 56 haben.
-
Zusätzlich zu
dem Hinzufügen
neuer Anweisungen, die die bestehenden Ressourcen der Ausführungseinheit 156 verwenden,
können
auch der Ausführungseinheit
selbst neue Ressourcen hinzugefügt
werden. Die internen Busse der Ausführungseinheit werden zum physikalischen
Rand der Ausführungseinheit
geleitet. Daher kann eine Ausführungseinheitserweiterung 153 hinzugefügt und direkt
mit einem oder mehreren internen Bussen der Ausführungseinheit gekoppelt werden,
um die Funktionalität der
Ausführungseinheit
durch Hinzufügen
von Registern, einer weiteren arithmetischen Logikeinheit (ALU:
arithmetic logic unit) einer Spezialfunktionsschaltung oder irgendeiner
anderen erwünschten Schaltung
zu vergrößern.
-
Als
ein Ergebnis gestattet es die vorliegende Erfindung, dass eine CPU
nach dem Stand der Technik erweiterbar gestaltet wird, so dass der
erweiterbaren CPU einfach eine Schaltung hinzugefügt werden kann,
um den unterschiedlichen Benutzerbedürfnissen sowohl in der Gegenwart
als auch in der Zukunft, zu entsprechen. Als ein Resultat wurden
die Kosten für
individuelle Kundenflexibilität
wesentlich reduziert.
-
Beschreibung
der Figuren
-
Die
Ausdrücke "Setzen" und "Negieren" werden verwendet,
wenn Bezug genommen wird auf das Verändern eines Signals, eines
Statusbits oder einer ähnlichen
Einrichtung in ihren logisch wahren bzw. logisch falschen Zustand.
Wenn der logisch wahre Zustand einen logischen Pegel Eins hat, hat
der logisch falsche Zustand einen logischen Pegel Null und wenn der
logisch wahre Zustand ein logischer Pegel Null ist, ist der logisch
falsche Zustand ein logischer Pegel Eins.
-
Der
Ausdruck "Bus" wird verwendet,
wenn Bezug genommen wird auf eine Mehrzahl von Signalen, die verwendet
werden können,
um einen oder mehrere verschiedene Informationstypen, wie etwa Daten,
Adressen, Steuerwerte oder Zustandswerte zu senden.
-
1 illustriert
eine Ausführungsform
eines Datenverarbeitungssystems 10. Die Datenverarbeitungssystemschaltung 10 hat
eine erweiterbare zentrale Verarbeitungseinheits-(CPU-)Schaltung 12,
einen Systemintegrationsbereich der Schaltung 14, einen
seriellen Bereich der Schaltung 16, eine Direktzugriffspeicher-(RAM-)Schaltung 18,
eine Festwertspeicher-(ROM-)Schaltung 20, eine weitere
Speicherschaltung 22 (z.B. elektrisch löschbarer, programmierbarer
Festwertspeicher, EEPROM), eine Portlogikschaltung 24,
eine externe Busschnittstellenschaltung 26, einen Timer-Bereich
der Schaltung 28 und eine Direktspeicherzugriff-(DMA-:
direct memory access)Schaltung 30, von denen jede bidirektional
mit der Busschaltung 32 gekoppelt ist. Die erweiterbare
CPU 12 und der Systemintegrationsbereich 14 sind
mittels der Busschaltung 34 bidirektional miteinander gekoppelt.
Die erweiterbare CPU 12 ist mittels der Busschaltung 36 mit
dem DMA 30 gekoppelt.
-
Der
Systemintegrationsbereich 14 kann für das Datenverarbeitungssystem 10 externe
Signale mittels integrierter Schaltungspins 38 empfangen und
senden. Der serielle Bereich 16 kann für das Datenverarbeitungssystem 10 externe
Signale mittels integrierter Schaltungspins 40 empfangen und
senden. Abhängig
von der Art des Speichers kann der weitere Speicher 22 für das Datenverarbeitungssystem 10 externe
Signale mittels integrierter Schaltungspins 42 optional
empfangen und senden. Die Portlogik 24 kann für das Datenverarbeitungssystem 10 externe
Signale mittels integrierter Schaltungspins 44 empfangen
und senden. Die externe Busschnittstelle 26 kann für das Datenverarbeitungssystem 10 externe
Signale mittels integrierter Schaltungspins 46 empfangen
und senden. Der Timerbereich 28 kann für das Datenverarbeitungssystem 10 externe
Signale mittels integrierter Schaltungspins 48 empfangen
und senden.
-
2 illustriert
in Form eines Blockdiagramms eine erweiterbare zentrale Verarbeitungseinheit
(CPU) 12 von 1 gemäß einer Ausführungsform
der vorliegenden Erfindung. Die erweiterbare CPU 12 ist
in zwei Hauptbereiche unterteilt, nämlich die CPU-Kernschaltung 50 und
die CPU-Steuerungserweiterungsschaltung 52.
-
Der
CPU-Kern 50 weist eine Steuereinheitsschaltung 54,
eine Ausführungseinheits-(EU-:
execution unit)Schaltung 56 und eine erste Zustandssequenzerschaltung 58 auf.
Die Steuereinheit 54 weist eine programmierbare Steuerlogik-Array-(Steuer-PLA-:
control progammable logic array)Schaltung 60 auf, die Steuer-PLA-Signale
an eine Random-Control-Logikschaltung 62 übermittelt.
Die Random-Control-Logik 62 übermittelt
getaktete Steuersignale an die Ausführungseinheit 56.
Die Random-Control-Logik 62 empfängt Zustandssignale von der
Ausführungseinheit 56.
Das Steuer-PLA 60 übermittelt
Signale an den und empfängt
Signale von dem ersten Zustandssequenzer 58. Die Random-Control-Logik 62 umfasst
eine Deaktivierungsschaltung 63.
-
Die
CPU-Steuerungserweiterung 52 weist eine Steuereinheitsschaltung 64 und
eine zweite Zustandssequenzerschaltung 68 auf. Die Steuereinheit 64 weist
eine Steuerfestwertspeicher-(Steuer-ROM-)Schaltung 70 auf,
die Steuer-ROM-Signale an
eine Random-Control-Logikschaltung 72 übermittelt. Die Random-Control-Logik 72 übermittelt
getaktete Steuersignale an die Ausführungseinheit 56.
Die Random-Control-Logik 72 empfängt Zustandssignale von
der Ausführungseinheit 56.
Die Random-Control-Logik 72 umfasst eine Deaktivierungsschaltung 73.
-
Der
Steuer-ROM 70 übermittelt
Signale an den und empfängt
Signale von dem zweiten Zustandssequenzer 68. Der Steuer-ROM 70 übermittelt auch
Signale an den ersten Zustandssequenzer 58. Der zweite
Zustandssequenzer 68 übermittelt
ein oder mehrere Signale an die Random-Control-Logik 62; der zweite Zustandssequenzer 68 übermittelt auch
Signale an die Random-Control-Logik 72. Der zweite Zustandssequenzer 68 empfängt Signale
von dem Steuer-PLA 60.
-
Die
Ausführungseinheit 56 ist
bidirektional mit dem Bus 32 gekoppelt. Der erste Zustandssequenzer 58 und
der zweite Zustandssequenzer 68 sind angeschlossen, um
Anweisungen von dem Bus 32 zu empfangen.
-
3 illustriert
in Form eines Blockdiagramms eine erweiterbare zentrale Verarbeitungseinheit
(CPU) 12' von 1 gemäß einer
Ausführungsform
der vorliegenden Erfindung. Die erweiterbare CPU 12' ist in drei
Hauptbereiche unterteilt, nämlich
die CPU-Kernschaltung 150, die CPU-Steuerungserweiterungsschaltung 152 und
die Ausführungseinheitserweiterungsschaltung 153.
-
Der
CPU-Kern 150 weist eine Steuereinheitsschaltung 154,
eine Ausführungseinheits-(EU-: execution
unit)Schal tung 156 und eine erste Zustandssequenzerschaltung 158 auf.
Die Steuereinheit 154 weist eine programmierbare Steuerlogik-Array-(Steuer-PLA-)Schaltung 160 auf,
die Steuer-PLA-Signale
an eine Random-Control-Logikschaltung 162 übermittelt.
Die Random-Control-Logik 162 übermittelt getaktete Steuersignale
an die Ausführungseinheit 156.
Die Random-Control-Logik 162 empfängt Statussignale
von der Ausführungseinheit 156.
Das Steuer-PLA übermittelt
Signale an den und empfängt
Signale von dem ersten Zustandssequenzer 158. Die Random-Control-Logik 162 umfasst
eine Deaktivierungsschaltung 163.
-
Die
CPU-Steuerungserweiterung 152 weist eine Steuereinheitsschaltung 164 und
eine zweite Zustandssequenzerschaltung 168 auf. Die Steuereinheit 164 weist
eine Steuer-Festwertspeicher-(Steuer-ROM-)Schaltung 170 auf,
die Steuer-ROM-Signale an eine Random-Control-Logikschaltung 172 übermittelt.
Außerdem
weist die Steuereinheit 164 eine Steuer-Festwertspeicher-(Steuer-ROM)-Erweiterungsschaltung 171 auf,
die Steuer-ROM-Erweiterungssignale an eine Random-Control-Logikerweiterungsschaltung 175 übermittelt.
Die Random-Control-Logik 172 übermittelt getaktete Steuersignale
an die Ausführungseinheit 156.
Außerdem übermittelt
die Random-Control-Logikerweiterung 175 getaktete Steuersignale
an die Ausführungseinheitserweiterung 153.
Die Random-Control-Logik 172 empfängt Statussignale von der Ausführungseinheit 156.
Außerdem
empfängt
die Random-Control-Logikerweiterung 175 Statussignale von
der Ausführungseinheitserweiterung 153.
Die Random-Control-Logik 172 umfasst eine Deaktivierungsschaltung 173.
-
Der
Steuer-ROM 170 übermittelt
Signale an den und empfängt
Signal von dem zweiten Zustandssequenzer 168. Der Steuer-ROM 170 übermittelt auch
Signale an den ersten Zustandssequenzer 158. Der zweite
Zustandssequenzer 168 übermittelt
ein oder mehrere Signale an die Random-Control-Logik 162; der zweite Zustandssequenzer 168 übermittelt auch
Signale an die Random-Control-Logik 172. Der zweite Zustandssequenzer 168 empfängt Signale von
dem Steuer-PLA 160.
-
Die
Ausführungseinheit 156 ist
bidirektional mit dem Bus 32 gekoppelt. Der erste Zustandssequenzer 158 und
der zweite Zustandssequenzer 168 sind angeschlossen, um
Anweisungen von dem Bus 32 zu empfangen. Außerdem ist
die Ausführungseinheitserweiterung 153 mit
der Ausführungseinheit 156 mittels
eines oder mehrerer interner Ausführungseinheits-(EU-)Busse gekoppelt.
-
4 illustriert
in Form eines Blockdiagramms einen Zustandssequenzer 58 von 2 gemäß einer
Ausführungsform
der vorliegenden Erfindung. Eine Auswahl Multiplexer-(MUX-)Schaltung 80 empfängt ein
Anweisungsende-Signal von der Steuer-PLA 60 und ein Anweisungsende-Signal
von dem Steuer-ROM 70. Die Auswahl-Multiplexer-(MUX-)Schaltung 82 empfängt ein
Vorgriffs-(Lookahead-)Signal von dem Steuer-PLA 60 und ein Vorgriffssignal
von dem Steuer-ROM 70. Die Zustandslogikschaltung 84 empfängt Folgezustands-(Next
State)Signale von dem Steuer-PLA 60.
-
Der
MUX 80 und der MUX 82 empfangen jeweils ein Kontrolltransfer-(Control
Transfer)Signal von dem Steuer-PLA 60. Der Ausgang des
MUX 80 ist mit einem Steuereingang der Anweisungsregisterschaltung 86 gekoppelt
und ist mit der Zustandslogik 84 gekoppelt. Der Ausgang
des MUX 82 ist mit einem Steuereingang einer Operationscode-Vorgriffsregisterschaltung 88 gekoppelt.
Das Operationsco de-Vorgriffsregister 88 ist mit dem Bus 32 gekoppelt,
um Anweisungen zu empfangen. Das Anweisungsregister 86 ist
mit dem Operationscode-Vorgriffsregister 88 gekoppelt,
um Anweisungen zu empfangen.
-
Die
Decoder-Schaltung 89 ist mit dem Anweisungsregister 86 gekoppelt,
um Anweisungen zu empfangen. Der Decoder 89 ist mit der
Zustandslogik 84 verbunden, um Zustandsinformation zu empfangen.
Der Decoder 89 erzeugt Steuersignale, die zu dem Steuer-PLA 60 gehen.
Außerdem
benötigt
der erste Zustandssequenzer 58 Timing-Signale (nicht dargestellt).
-
5 illustriert
in Form eines Blockdiagramms einen ersten Zustandssequenzer 158 von 3 gemäß einer
Ausführungsform
der vorliegenden Erfindung. Eine Auswahl-Multiplexer-(MUX-)Schaltung 90 empfängt ein
Anweisungsende-Signal von der Steuer-PLA 160 und ein Anweisungsende-Signal von dem Steuer-ROM 170.
Eine Auswahl-Multiplexer-(MUX-)Schaltung 92 empfängt ein
Vorgriffs-(Lookahead-)Signal von dem Steuer-PLA 160 und
ein Vorgriffs-(Lookahead)Signal von dem Steuer-Rom 170.
Eine Zustandslogikschaltung 94 empfängt Folgezustands-(Next State-)Signale von
dem Steuer-PLA 160.
-
MUX 90 und
MUX 92 empfangen jeweils ein Kontrolltransfer-(Control
Transfer-)Signal von der Steuer-PLA 160. Der Ausgang des
MUX 90 ist mit einem Steuereingang einer Anweisungsregisterschaltung 96 gekoppelt
und ist mit einer Zustandslogik 94 gekoppelt. Der Ausgang
des MUX 92 ist mit einem Steuereingang einer Operationscode-Vorgriffsregisterschaltung 98 verbunden.
Das Operationscode-Vorgriffsregister 98 ist mit dem Bus 32 gekoppelt,
um Anweisungen zu empfangen. Ein Anweisungsregister 96 ist
mit dem Operationscode-Vorgriffsregister 98 verbunden,
um Anweisungen zu empfangen.
-
Eine
Decoderschaltung 99 ist mit dem Anweisungsregister 96 gekoppelt,
um Anweisungen zu empfangen. Der Decoder 99 ist mit der
Zustandslogik 94 gekoppelt, um Zustandsinformation zu empfangen.
Der Decoder 99 erzeugt Steuersignale, die an das Steuer-PLA 160 gehen.
Außerdem
benötigt
der erste Zustandssequenzer 158 Timing-Signale (nicht dargestellt).
-
6 illustriert
in Form eines Blockdiagramms einen zweiten Zustandssequenzer 68 von 2 gemäß einer
Ausführungsform
der vorliegenden Erfindung. Eine Steuereinheitsauswahllogik-Schaltung 101 empfängt ein
Kontrolltransfersignal von dem Steuer-PLA 60 und ein Anweisungsendsignal
von dem Steuer-ROM 70. Die Steuereinheitsauswahllogik 101 liefert
ein Deaktivierungs-(Disable-)Signal an die Random-Control-Logik 62,
ein Aktivierungs-(Enable-)Signal an die Random-Control-Logik 72 und
ein Aktivierungssignal an den Steuer-ROM 70. Optional kann
die Steuereinheitsauswahllogik 101 ein Deaktivierungssignal
an die Steuer-PLA liefern.
-
Die
Zustandslogikschaltung 104 umfasst eine Zählerschaltung 107.
Die Zustandslogik 104 empfängt Folgezustandsignale von
dem Steuer-ROM 70. Die Anweisungsregisterschaltung 106 empfängt ein
Vorgriffssignal von dem Steuer-ROM 70. Das Anweisungsregister 106 ist
mit dem Bus 32 gekoppelt, um Anweisungen zu empfangen.
Der Zähler 107 ist
mit dem Bus 32 gekoppelt, so dass der Zähler 107 über den
Bus 32 beschrieben werden kann. Die Decoder-Schaltung 109 ist
mit dem Anweisungsregister 106 gekoppelt, um Anweisungen
zu empfangen. Der Decoder 109 ist mit der Zustandslogik
gekop pelt, um Zustandsinformation zu empfangen. Der Decoder erzeugt
Steuersignale, die an den Steuer-ROM 70 gehen. Außerdem benötigt der
zweite Zustandssequenzer Timing-Signale (nicht dargstellt). Die
Steuereinheitsauswahlschaltung 101 ist mit dem Anweisungsregister 106 gekoppelt.
-
7 illustriert
in Form eines Blockdiagramms einen zweiten Zustandssequenzer 168 von 3 gemäß einer
Ausführungsform
der vorliegenden Erfindung. Die Steuereinheitsauswahllogik-Schaltung 111 empfängt ein
Kontrolltransfersignal von dem Steuer-PLA 160 und ein Anweisungsendsignal
von dem Steuer-ROM 170. Die Steuereinheitsauswahlschaltung 101 liefert
ein Deaktivierungssignal an die Random-Control-Logik 162, ein Aktivierungssignal
an die Random-Control-Logik 172 und
ein Aktivierungssignal an den Steuer-ROM 170. Optional kann die
Steuereinheitsauswahllogik 101 ein Deaktivierungssignal
an die Steuer-PLA 160 liefern.
-
Die
Zustandslogikschaltung 114 umfasst eine Zählerschaltung 117.
Die Zustandslogik 114 empfängt Folgezustandsignale von
dem Steuer-ROM 170. Die Anweisungsregisterschaltung 116 empfängt ein
Vorgriffssignal von dem Steuer-ROM 170.
Das Anweisungsregister 116 ist mit dem Bus 32 gekoppelt,
um Anweisungen zu empfangen. Der Zähler 117 ist mit dem
Bus 32 gekoppelt, so dass der Zähler 117 über den
Bus 32 beschrieben werden kann. Die Decoder-Schaltung 119 ist
mit dem Anweisungsregister 116 gekoppelt, um Anweisungen
zu empfangen. Der Decoder 119 ist mit der Zustandslogik 114 gekoppelt,
um Zustandsinformation zu empfangen. Der Decoder 119 erzeugt
Steuersignale, die an den Steuer-ROM 170 gehen. Zusätzlich erfordert der
zweite Zustandssequenzer 168 Timing-Signale (nicht dargestellt).
Die Steuereinheits auswahllogik 111 ist mit dem Anweisungsregister 116 gekoppelt.
-
8 illustriert
eine Ausführungsform
eines Bereichs der Ausführungseinheit 56 von 2.
Gleichermaßen
illustriert 8 auch eine Ausführungsform
eines Bereichs einer Ausführungseinheit 156 von 3.
Die Steuereinheitsauswahllogik 101 ist mit dem Anweisungsregister 106 gekoppelt.
-
Eine
Programmzähler-/Erhöhungsregisterschaltung
(high) 200 empfängt
Information von dem Bus 202 und liefert Information an
den Bus 204. Eine Programmzähler-Registerschaltung (low) 206 empfängt Information
von dem Bus 202 und liefert Information an den Bus 204.
Eine Stapelzeigerregisterschaltung 208 empfängt Information
von dem Bus 202 und liefert Information an den Bus 204.
Eine Akkumulatorregisterschaltung 210 empfängt Information
von dem Bus 202 und liefert Information and den Bus 204.
Eine Indexregisterschaltung 212 empfängt Information von dem Bus 202 und
liefert Information an den Bus 204.
-
Eine
Temporäradressregister-Schaltung (high) 214 empfängt Information
von dem Bus 202 und liefert Information an den Bus 216.
Eine Temporäradressregister-Schaltung
(low) 218 empfängt
Information von dem Bus 202 und liefert Information an den
Bus 216. Eine Datenbusschnittstellenschaltung 220 empfängt Information
von dem Bus 202 und liefert Information an den Bus 216.
Eine Konstantenerzeugungslogikschaltung 222 liefert Information
an den Bus 204.
-
Eine
arithmetische Logikeinheit (ALU) 224 empfängt Daten
von dem Bus 204 und von dem Bus 216. Die ALU 224 ist
bidirektional mit einer Flaggenschaltung 226 gekoppelt.
Die Flaggenschaltung 226 ist bidirektional mit dem Bedingungs coderegister 228 gekoppelt.
Das Bedingungscoderegister 228 erhält Information von dem Bus 202 und
liefert Information an den Bus 216. Der Ausgang der ALU 224 ist
mit einer Schiebeschaltung 230 gekoppelt. Der Schieber 230 liefert
Information an den Bus 202.
-
Das
Programmzähler-/Erhöhungsregister (high) 200 und
das Temporäradressregister
(high) 214 liefern jeweils Information an den High-Bus 232. Die
Adressbus-Pufferschaltung
(high) 234 empfängt Information
von dem High-Bus 232 und liefert Information an das Programmzähler/Erhöhungsregister (high) 200.
Der Adressbus-Puffer (high) 234 ist mit dem Adressbus (high) 236 gekoppelt.
Der Adressbus (high) 236 ist mit dem Bus 32 gekoppelt.
-
Das
Programmzähler-Register
(low) 206, das Temporäradressregister
(low) 218 und das Stapelzeigerregister 208 liefern
jeweils Information an den Low-Bus 238. Die Adressbus-Pufferschaltung (low) 240 empfängt Information
von dem Low-Bus 238. Der Adressbus-Puffer (low) ist angeschlossen, um
den Adressbus (low) 242 anzusprechen. Der Adressbus (low) 242 ist
mit dem Bus 32 gekoppelt.
-
Der
Low-Bus 238 empfängt
Information von dem Datenbus 244. Die Datenbusschnittstelle 220 empfängt Information
von dem und liefert Information an den Datenbus 244. Der
Datenbus 244 ist mit dem Bus 32 gekoppelt.
-
Betrieb der
bevorzugten Ausführungsform
-
Die
vorliegende Erfindung erlaubt es, dass eine CPU erweiterbar gestaltet
wird, so dass es leicht ist, Schaltungen hinzuzufügen, so
dass sehr wenig bestehende Schal tung verändert werden muss, um neue
Anweisungen oder Algorithmen zu implementieren.
-
Es
wird Bezug genommen auf 1. Ein Datenverarbeitungssystem 10 illustriert
eine mögliche MCU
innerhalb einer MCU-Familie. Da MCUs in derselben Familie im Wesentlichen
unterschiedliche integrierte Peripherieelemente aufweisen, kann
es sein, dass andere Ausführungsformen
des Datenverarbeitungssystems 10 keinen ROM 20 haben,
kann es sein, dass sie keine externe Busschnittstelle 26 haben
und es kann sein, dass sie keinen DMA 30 haben. Tatsächlich kann
es sein, dass andere Ausführungsform
des Datenverarbeitungssystems 10 weniger, mehr oder andere
Peripherieelemente aufweisen, als diejenigen, die in 1 illustriert
sind.
-
In
der Vergangenheit verwendeten MCUs innerhalb einer speziellen Familie
fast immer die exakt selbe CPU. Die vorliegende Erfindung gestattet
es MCUs innerhalb einer speziellen Familie, unterschiedliche erweiterbare
CPUs 12 zu verwenden, die alle miteinander verwandt sind,
indem sie Erweiterungen desselben CPU-Kerns 50 darstellen. 2 illustriert
eine mögliche
Ausführungsform
einer erweiterbaren CPU 12. 3 illustriert
eine zweite mögliche
Ausführungsform
einer erweiterbaren CPU 12, nämlich die erweiterbare CPU 12'.
-
Es
wird Bezug genommen auf 2. Eine Familie von MCUs, die
auf der in 2 illustrierten erweiterbaren
CPU 12 basiert, hat denselben CPU-Kern 50. Eine
solche Familie von MCUs, basierend auf einer Ausführungsform
des CPU-Kerns 50, wird MC68HC08-Familie genannt. Der CPU-Kern 50 ist
eine Modifikation einer CPU-Architektur nach dem Stand der Technik,
nämlich
der MC68HC05 CPU-Architektur. Andere Ausführungsformen der vorliegenden
Erfindung könnten
andere CPU-Architekturen verwenden. Aufgrund der Tatsache, dass
er modifiziert wurde, ist der CPU-Kern 50, anders als im
Stand der Technik, erweiterbar.
-
Die
CPU-Steuerungserweiterung 52 illustriert eine Ausführungsform
der zusätzlichen
Schaltung, die dem CPU-Kern 50 hinzugefügt werden kann, um eine neue
Anweisung oder einen Algorithmus zu implementieren. Die CPU-Steuerungserweiterung 52 hat
bei der MC68HC05 CPU gemäß dem Stand
der Technik nicht existiert. Die speziellen Modifikationen, die
an der MC68HC05 CPU gemäß dem Stand
der Technik durchgeführt
wurden, um sie erweiterbar zu machen, sollen nun diskutiert werden.
-
Wir
beginnen mit der Ausführungseinheit 56. Mit
einer Ausnahme kann die Ausführungseinheit 56 auf
dem Niveau individueller Logikgatter identisch zum Stand der Technik
sein, diese eine Ausnahme ist das Bedingungscoderegister 228 (siehe 8).
Bei der MC68HC05 CPU gemäß dem Stand
der Technik war das Bedingungscoderegister physikalisch in dem Random-Control-Logikbereich
der Steuereinheit positioniert, weil das Bedingungscoderegister
Zustandsinformationen zu dem jüngsten
vergangenen Zustand der Ausführungseinheit
beinhaltete. Die Steuereinheit benötigte diese Zustandsinformation,
um zu bestimmen, welche getakteten Steuersignale zu setzen waren,
um die Ausführungseinheit
während
des folgenden Zustandes zu steuern. Beispielsweise musste die Steuereinheit
den logischen Zustand des Null-Bits
in dem Bedingungscoderegister kennen, um zu bestimmen, wie die Ausführungseinheit
für bestimmte
bedingte Zweiganweisungen anzusteuern war.
-
Um
die CPU 12 jedoch erweiterbar zu gestalten, muss die Steuereinheit 64 Zugriff
auf alle Zustandsinformationen der Ausführungseinheit 56 haben.
Indem das Bedingungscoderegister 228 in die Ausführungseinheit 56 verlegt
wird, enthält
die Ausführungseinheit 56 nun
alle Register in dem Programmierermodell und daher alle Zustandsregister
und Zustandsinformation für
die Ausführungseinheit 56. Daher
hat eine zweite Steuereinheit 64 direkten Zugriff auf alle
Zustandsinformationen der Ausführungseinheit 56 direkt
von der Ausführungseinheit 56.
Bei der erweiterbaren CPU 12 haben sowohl die Steuereinheit 54 als
auch die Steuereinheit 64 Zugriff auf denselben identischen
Satz von Zustandssignalen von der Ausführungseinheit 56;
und die Zustandssignale umfassen Zustandsinformation von dem Bedingungscoderegister 228 in
der Ausführungseinheit 56.
-
Auf
dem Layout-Niveau muss die Ausführungseinheit 56 physikalisch
in einer integrierten Halbleiterschaltung angeordnet werden, so
dass der vollständige
Satz von getakteten Steuersignalen und der vollständige Satz
von Zustandssignalen sowohl für
die Steuereinheit 54 als auch für die Steuereinheit 64 verfügbar sind.
Das bedeutet, dass alle getakteten Steuersignale und alle Zustandssignale
physikalisch so umgeleitet werden müssen, dass sie sowohl mit der
Steuereinheit 54 als auch mit der Steuereinheit 64 gekoppelt
werden können.
-
Bei
der illustrierten Ausführungsform
der vorliegenden Erfindung sind die Leiter, die die getakteten Steuersignale übermitteln,
jeweils an einem Ende mit der Steuereinheit 54 angeschlossen,
werden jeweils durch die Ausführungseinheit 56 geleitet
und werden jeweils außerhalb
der Ausführungseinheit 56 an
das andere Ende geleitet, unabhängig
davon, ob oder ob nicht die CPU-Steuerungserweiterung 52 implementiert
ist. Beim Stand der Technik musste nur eine Steuereinheit, nämlich die
Steuereinheit 54, mit den getakteten Steuersignalen und
den Zustandssignalen gekoppelt sein; und daher mussten die Leiter, die
die getakteten Steuersignale übermittelten,
lediglich außerhalb
der Ausführungseinheit 56 an
das eine Ende geleitet werden.
-
Die
speziellen Modifikationen, die an der Steuereinheit nach dem Stand
der Technik durchgeführt
wurden, um eine Steuereinheit 54 zu bilden, sollen nun
diskutiert werden. Wie zuvor angemerkt, wurde das Bedingungscoderegister 228 aus
der Random-Control-Logik 62 verlegt. Außerdem wurde der Random-Control-Logik 62 die
Deaktivierungsschaltung 63 hinzugefügt, um zu gestatten, dass die
getakteten Steuersignale deaktiviert werden. Wenn die getakteten
Steuersignale deaktiviert sind, werden sie nicht an die Ausführungseinheit 56 übermittelt
und haben daher keinen Effekt auf die Ausführungseinheit 56.
-
Die
Deaktivierungsschaltung 63 wird mittels eines Signals angesteuert,
welches von dem zweiten Zustandssequenzer 68 erzeugt wird.
Bei einer Ausführungsform
der vorliegenden Erfindung umfasst die Deaktivierungsschaltung 63 ein Übertragungsgatter (nicht
dargestellt) für
jedes getaktete Steuersignal). Wenn der CPU-Kern 50 ohne
CPU-Steuerungserweiterung 52 verwendet
wird, sind die Übertragungsgatter
(nicht dargestellt) immer aktiviert, so dass die getakteten Steuersignale
immer an die Ausführungseinheit 56 übermittelt
werden. Wenn der CPU-Kern 50 mit CPU-Steuerungserweiterung 52 verwendet
wird, sind die Übertragungsgatter
(nicht dargestellt) entweder aktiviert oder deaktiviert, basierend
darauf, ob ein Deaktivierungssignal von dem zweiten Zustandssequenzer 68 gesetzt
oder negiert ist (siehe 6).
-
Man
beachte, bei einer Ausführungsform
der vorliegenden Erfindung ist die Deaktivierungsschaltung 83 eine
Kippschaltung (latch; nicht dargestellt), die den gesetzten Zustand
des Deaktivierungssignals von dem zweiten Zustandssequenzer 68 einrasten
lässt.
Wenn dann ein Timing-Signal (nicht dargestellt) gesetzt wird, aktiviert
die Kippschaltung die Übertragungsgatter,
was es gestattet, dass bestimmte getaktete Steuersignale an das
Stapelzeigerregister und den Programmzähler/Erhöher (high) 200 in der
Ausführungseinheit 56 (siehe 8) übermittelt werden.
Die Kippschaltung (nicht dargestellt) wird daher verwendet, um den
Effekt des Deaktivierungssignals auf die Ausführungseinheit 56 für einige
der getakteten Steuersignale zu verzögern. Abgesehen von diesen
Unterschieden kann die Random-Control-Logik 62 identisch
zu der Random-Control-Logik nach dem Stand der Technik sein.
-
Das
Steuer-PLA 60 ist dasselbe wie beim Stand der Technik mit
dem Zusatz: (1) ein neuer Eingangszustand von dem ersten Zustandssequenzer 58 (für eine spezielle
Kontrolltransferanweisung); (2) einige Ausgangs-Steuer-PLA-Signale; und (3)
einige logische UND-Ausdrücke
und/oder logische OR-Ausdrücke
innerhalb des Steuer-PLA 60. Die zusätzlichen Signale und Schaltungen
haben mit der Übertragung
von Steuerzeichen der Ausführungseinheit 56 zwischen
den zwei Steuereinheiten 54 und 65 zu tun. Die Übertragung
von Steuerzeichen der Ausführungseinheit 56 zwischen
den zwei Steuereinheiten 54 und 64 sollen nachfolgend
im Detail beschrieben werden.
-
Es
wird Bezug genommen auf 4. Die speziellen Modifikationen,
die an dem Zustandssequenzer nach dem Stand der Technik durchgeführt wurden,
um den ersten Zustandssequenzer 58 zu bilden, sollen nun
diskutiert werden. Wie beim Stand der Technik wirkt der erste Zustandssequenzer 58 in Verbindung
mit dem Steuer-PLA 60 als eine Statusmaschine in dem der
nächste
Zustand des CPU-Kerns 50 basierend auf dem derzeitigen
Zustand des CPU-Kerns und der aktuellen Anweisung, die über den
Bus 32 empfangen wird, bestimmt wird. Der erste Zustandssequenzer 58 ist
in der Lage, denselben Zustandsübergang
zu handhaben, wie im Stand der Technik. Zusätzlich ist der erste Zustandssequenzer 58 auch
in der Lage, die Zustandsübergänge zu handhaben,
die in die Übertragung
von Steuerzeichen der Ausführungseinheit 56 zwischen den
zwei Steuereinheiten 54 und 64 involviert sind.
-
Es
wird noch immer Bezug genommen auf 4. Der Stand
der Technik wies keinen MUX 80 und MUX 82 auf.
Beim Stand der Technik wurde, anstatt die Ausgabe aus dem MUX 80 zu
verwenden, um anzuzeigen, wann das Anweisungsregister 86 geladen
war, ein Ausgangssignal aus dem Steuer-PLA 60 verwendet.
Gleichermaßen
wurde, anstatt die Ausgabe aus dem MUX 82 zu verwenden,
um anzuzeigen, wann das Operationscodevorgriffsregister 88 geladen
war, ein Ausgangssignal aus dem Steuer-PLA 60 verwendet.
Die Zustandslogik 84 ist in der Lage, neue Anweisungen
zu handhaben, nämlich
die spezielle Kontrolltransferanweisung, die der Stand der Technik
nicht aufwies. Diese neue Anweisung spielt bei der Übertragung
von Steuerzeichen der Ausführungseinheit 56 zwischen
den zwei Steuereinheiten 54 und 64 eine Rolle.
Anders als beim Stand der Technik sind der Decoder 89 und
das Steuer- PLA 60 auch
in der Lage, diese selbe neue, spezielle Transferanweisung zu handhaben.
-
Folglich
erfordern die Schaltungsmodifikationen, die an einer MC68HC05 CPU
nach dem Stand der Technik durchgeführt wurden, um sie erweiterbar zu
machen, lediglich eine geringe Menge an zusätzlicher Schaltung im Vergleich
zu der bestehenden Schaltung. Die Vorteile, die aus diesen Schaltungsänderungen
erwachsen, sind jedoch außerordentlich wichtig.
Als ein Ergebnis dieser Schaltungsänderungen kann die Funktionalität desselben
CPU-Kerns 50 erweitert werden, indem verschiedene CPU-Steuerungserweiterungsschaltungen 52,
die auf verschiedene Kundenanforderungen speziell zugeschnitten wurden,
hinzugefügt
werden.
-
Der
Betrieb der erweiterbaren CPU soll nun diskutiert werden (siehe 2).
Zunächst
kann es sein, dass die erweiterbare CPU 12 lediglich einen CPU-Kern 50 ohne
CPU-Steuerungserweiterung 52 enthält. Beispielsweise
kann es sein, dass der CPU-Kern allein als die erweiterbare CPU 12 in
dem in 1 illustrierten Datenverarbeitungssystem verwendet
wird. Es kann jedoch auch sein, dass der CPU-Kern 50 in
Verbindung mit verschiedenen speziell zugeschnittenen Ausführungsformen
der CPU-Steuerungserweiterung 52 verwendet wird. Der Einschluss
der CPU-Steuerungserweiterung 52 ist eine Weise, in der
die erweiterbare CPU 12 erweitert werden kann.
-
Das
in 2 illustrierte Blockdiagramm ist lediglich eine
mögliche
Ausführungsform
der CPU-Steuerungserweiterung 52.
Die CPU-Steuerungserweiterung 52 könnte in jeglicher Weise designt
sein, solange die CPU-Steuerungserweiterung 52 die
getakteten Steuersignale erzeugt, um die Ausführungseinheit 56 zu
steuern, und solange die CPU-Steuerungserweiterung 52 eine
Schaltung aufweist, die es gestattet, die Steuerung der Ausführungseinheit 56 zwischen
den zwei Quellen der getakteten Steuersignale hin und her zu transferieren.
-
Die
illustrierte Ausführungsform
des CPU-Kern 50 besteht aus zwei grundlegenden Schaltungsbereichen.
Der erste Bereich, einschließlich
die Steuereinheit 54 und erster Zustandssequenzer 58,
empfängt
Anweisungen über
den Bus 32 und erzeugt getaktete Steuersignale, die verwendet
werden, um die Ausführungseinheit 56 zu
steuern. Dieser erste Bereich der Steuerschaltung kann auf verschiedene
Weisen implementiert sein. Der zweite Bereich, die Ausführungseinheit 56,
empfängt
die getakteten Steuersignale und verwendet dieses getakteten Steuersignale,
um die Anweisungen tatsächlich auszuführen. Die
Ausführungseinheit 56 kann
gleichermaßen
auf verschiedene Weisen implementiert sein.
-
Die
in 2 illustrierte Ausführungsform der CPU-Steuerungserweiterung 52 ist
eine einfache Weise, die CPU-Steuerungserweiterung 52 zu
bauen. Mit einigen Schaltungsänderungen
kann die CPU-Steuerungsweiterung 52 als ein Spiegelbild
der Steuereinheit 54 und des ersten Zustandssequenzers 58 implementiert
werden. Die Schaltung in der Random-Control-Logik 72 kann
als eine exakte Kopie der Schaltung in der Random-Control-Logik 62 implementiert
werden. Die Eingangssteuersignale in die Random-Control-Logik 72,
nämlich
die Steuer-ROM-Signale, kommen von dem Steuer-ROM 70 und
werden durch das speziell zugeschnittene ROM-Muster bestimmt, welches
in dem ROM 70 gespeichert ist. Verschiedene Kunden können verschiedene
ROM-Muster verwenden, die die Ausführungseinheit 56 veranlassen,
neue Anweisungen durchzuführen.
-
Es
wird Bezug genommen auf 2 und 4. Der erste
Zustandssequenzer 58 in Verbindung mit dem Steuer-PLA 60 hat
primär
die Funktion als Zustandsmaschine für den CPU-Kern 50.
In dieser Fähigkeit
empfängt
der erste Zustandssequenzer 58 Anweisungen von dem BUS 32.
Der erste Zustandssequenzer 58 decodiert (unter Verwendung des
Decoders 89) dann sowohl die aktuelle, auszuführende Anweisung
(aus dem Anweisungsregister 86) als auch den aktuellen
internen Zustand des CPU-Kerns 50 (von der Zustandslogik 84).
Der erste Zustandssequenzer 58 gibt dann Signale von dem Decoder 89 aus,
die die Eingaben in das Steuer-PLA 60 sind.
-
Der
ROM 70 in der CPU-Steuereinheit 64 dient als ähnliche
Funktion wie das Steuer-PLA 60 in der Steuereinheit 54.
Das Steuer-PLA 60 erzeugt die Eingangssignale für die Random-Control-Logik 62 und
erzeugt Kontrolltransferinformation für den ersten Zustandssequenzer 58 und
für den
zweiten Zustandssequenzer 68. Der ROM 70 erzeugt
die Eingangssignale für
die Random-Control-Logik 72 und erzeugt Kontrolltransferinformation
für den
ersten Zustandssequenzer 58 und für den zweiten Zustandssequenzer 68.
-
Man
beachte, dass das Steuer-PLA 60 und der ROM 70 als
irgendwelche Arten programmierbarer Arrays implementiert sein können, einschließlich jegliche
Arten von Speicher oder jegliche Arten von programmierbaren Logik-Arrays.
Das Steuer-PLA 60 und der ROM 70 könnten selbst
als Random-Logik implementiert
und mit der übrigen
Random-Control-Logikschaltung
in den entsprechenden Steuereinheiten 54 und 64 kombiniert
werden.
-
Ein
programmierbares Logik-Array (PLA: programmable logic array) erfordert
im Allgemeinen weniger Halbleiterfläche als ein Festwertspeicher (ROM:
read only memory); es ist jedoch einfacher und schneller, einen
ROM speziell zuzuschneiden als ein PLA speziell zuzuschneiden. Da
dasselbe Steuer-PLA 60 für verschiedene Versionen erweiterbarer CPUs 12 verwendet
wird, ist es vorteilhaft, das Steuer-PLA 60 als ein PLA
zu implementieren, um Halbleiterfläche zu sparen. Da der Steuer-ROM 70 verschiedene
Programmierungen für
verschiedene Versionen erweiterbarer CPUs 12 haben muss,
kann es einfacher und schneller sein, den Steuer-ROM 70 als einen
ROM zu implementieren.
-
Die
getakteten Steuersignale liefern der Ausführungseinheit 56 alle
erforderlichen Steuerinformationen. Der Bus 32 wird als
ein Adress- und Datenpfad verwendet, um die in der Ausführungseinheit 56 positionierten
Register zu lesen und zu schreiben. Die erweiterbare CPU 12 weist
auch zwei verschiedene Steuereinheiten auf, nämlich die Steuereinheit 54 und
die Steuereinheit 64. Jede der beiden Steuereinheiten 54 und 64 ist
vollständig
in der Lage, dieselben getakteten Steuersignale zu erzeugen, die
verwendet werden, um die Ausführungseinheit 56 zu steuern.
Gleichermaßen
hat jede der beiden Steuereinheiten 54 und 64 vollständigen Zugriff
auf alle Ressourcen innerhalb der Ausführungseinheit 56.
-
Folglich
ist die Steuereinheit 54 selbst vollkommen in der Lage,
die gesamte Ausführungseinheit
zu steuern. Gleichermaßen
ist die Steuereinheit 64 selbst vollkommen in der Lage,
die gesamte Ausführungseinheit 56 zu
steuern. Tatsächlich
sind bei einigen Ausführungsformen
der erweiterbaren CPU 12 die Steuereinheit 54 und
die Steuereinheit 64 jeweils an entgegen gesetzte Enden
der selben getakteten Steuersignalleiter, die durch die Ausführungseinheit 56 ge leitet
werden und dann jeweils zu der Steuereinheit 54 und 64 geleitet
werden, gekoppelt.
-
Bei
der illustrierten Ausführungsform
der vorliegenden Erfindung wird eine spezielle Kontrolltransferanweisung
verwendet, um die Steuerung der Ausführungseinheit 56 von
der Steuereinheit 54 auf die Steuereinheit 64 zu übertragen.
Bei der illustrierten Ausführungsform
führt die
CPU-Steuerungserweiterung 52,
nachdem die Steuereinheit 64 die Kontrolle der Ausführungseinheit 56 erhalten
hat, eine Anweisung durch, bevor die Kontrolle der Ausführungseinheit 56 automatisch
an die Steuereinheit 54 zurückgegeben wird. Jedes Mal,
wenn der Benutzer der erweiterbaren CPU 12 die CPU-Steuerungserweiterung 52 benutzen
möchte,
um eine speziell zugeschnittene Anweisung auszuführen, muss daher der Benutzer
die spezielle Kontrolltransferanweisung, gefolgt von der speziell
zugeschnittenen Anweisung in sein oder ihr Software-Programm einschließen.
-
Obgleich
bei dieser Ausführungsform
die CPU-Steuerungserweiterung 52 nur
eine speziell zugeschnittene Anweisung ausführen kann, bevor die Kontrolle
automatisch an die Steuereinheit 54 zurückgegeben wird, kann diese
eine Anweisung jede Anzahl von Anweisungseinheitszyklen enthalten. Eine
Kunde kann daher eine vollständige
Subroutine normaler Anweisungen als eine einzelne, speziell zugeschnittene
Anweisung definieren. Ein Kunde kann auch mehrere speziell zugeschnittene
Anweisungen definieren, die unterschiedliche Anzahlen von Ausführungseinheitszyklen
beinhalten, indem die korrekte, entsprechende Steuerinformation
in dem Steuer-ROM 70 gespeichert wird.
-
Man
beachte, dass ein Ausführungseinheitszyklus
von der Menge an Zeit definiert wird, die erforderlich ist, um die
folgenden drei Schritte in der Ausführungseinheit 56 (siehe 8)
auszuführen:
(1) Übertragen
eines oder mehrerer Werte an die ALU 224; (2) Verwenden
der ALU 224, um eine arithmetische oder logische Operation
durchzuführen;
und (3) Übertragen
des Ergebniswertes von der ALU 224 an ein Register. Bei
einer Ausführungsform
der vorliegenden Erfindung können
zwei Ausführungseinheitszyklen
für jeden
Buszyklus des Busses 32 durchgeführt werden.
-
Ein
Bit-Feld innerhalb jeder speziell zugeschnittenen Anweisung kann
verwendet werden, um festzulegen, welche speziell zugeschnittene
Anweisung ausgeführt
werden soll. Bei einer Ausführungsform
der vorliegenden Erfindung umfasst die spezielle Kontrolltransferfunktion
zwei Bytes: das erste Byte ist der Operationscode, der nur für die spezielle
Kontrolltransfersanweisung (die dieselbe für jede speziell zugeschnittene
Anweisung ist) verwendet wird; und das zweite Byte ist die Startadresse
in dem Steuer-ROM 70 (die für jede speziell zugeschnittene
Anweisung unterschiedlich sein kann).
-
Bei
einer Ausführungsform
der vorliegenden Erfindung hat die spezielle Kontrolltransferanweisung
denselben Effekt auf die Ausführungseinheit 56 wie
eine "keine Operation"-(NOP-: no operation)Anweisung.
Gleichermaßen
haben die letzten beiden Ausführungseinheitszyklen
jeder speziell zugeschnittenen Anweisung, die von der Steuereinheit 64 gesteuert
wird, denselben Effekt auf die Ausführungseinheit 56,
wie eine NOP-Anweisung. Die NOP-Anweisung, die spezielle Kontrollübertragungsanweisung
und der letzte Bereich jeder speziell zugeschnittenen Anweisung
bestehen jeweils aus zwei Ausführungseinheitszyklen.
Während
des ersten Ausführungseinheitszyklus
wird ein Erhöhen
des Programmzählerre gisters 200, 206 gestartet.
Während des
zweiten Ausführungseinheitszyklus
wird das Erhöhen
des Programmzählerregisters 200, 206 abgeschlossen.
Mit Ausnahme des Programmzählerregisters 200, 206,
wird die Ausführungseinheit 56 während der
Ausführung
der speziellen Kontrolltransferfunktion nicht beeinflusst, selbst
wenn getaktete Steuersignale angesteuert werden.
-
Obgleich
es vielfältige
Implementationen gibt, die verwendet werden könnten, um die Kontrolle der
Ausführungseinheit 56 unter
Verwendung einer speziellen Kontrolltransferanweisung zu übergeben, soll
nun die in den 2, 4 und 6 illustrierte Implementierung
diskutiert werden. Die Steuereinheitsauswahllogik 101 in
dem zweiten Zustandssequenzer 68 (siehe 6)
ist verantwortlich für
die Aktivierung und Deaktivierung der geeigneten Steuereinheiten 54 und 64.
Bei der illustrierten Ausführungsform
wird die spezielle Kontrolltransferanweisung verwendet, um die Übertragung
der Kontrolle von der Steuereinheit 54 auf die Steuereinheit 64 zu initiieren,
und ein Anweisungsendsignal von dem Steuer-ROM 70 wird
verwendet, um die Übertragung der
Kontrolle von der Steuereinheit 64 zurück zu der Steuereinheit 54 zu
initiieren, nachdem eine speziell zugeschnittene Anweisung durchgeführt wurde.
-
Bei
der illustrierten Ausführungsform
liefert die Steuereinheitsauswahllogik 101 separate Steuersignale,
um die Random-Control-Logik 62, die Random-Control-Logik 72,
den Steuer-ROM 70 und das Steuer-PLA 60 zu aktivieren
oder zu deaktivieren. Das Deaktivierungssignal zum Deaktivieren
des Steuer-PLA 60 ist optional und bei der illustrierten
erweiterbaren CPU 12 nicht implementiert. Bei der illustrierten
Ausführungsform
wurden zwei separate Signale von der Steuereinheitsauswahllogik 101 für jede Steuereinheit 54 und 64 erzeugt.
Zwei Signale wurden für
jede Steuereinheit verwendet, weil die Random-Control-Logik 62 vor
dem Steuer-PLA 60 deaktiviert werden musste und weil die
Random-Control-Logik 72 vor dem Steuer-ROM 70 deaktiviert
werden musste. Auf ähnliche
Weise musste das Steuer-PLA 60 vor der Random-Control-Logik 62 aktiviert werden
und der Steuer-ROM 70 musste vor der Random-Control-Logik 72 aktiviert
werden.
-
Das
Steuer-PLA 60 erzeugt ein Kontrolltransfersignal, welches
sowohl an den ersten Zustandssequenzer 58 als auch an den
zweiten Zustandssequenzer 68 geliefert wird. Das Kontrolltransfersignal
wird gesetzt, nachdem die spezielle Kontrolltransferanweisung empfangen
wurde. Das Kontrolltransfersignal zeigt sowohl dem ersten Zustandssequenzer 58 als
auch den zweiten Zustandssequenzer 68 an, dass die Kontrolle
der Ausführungseinheit 56 von
der Steuereinheit 54 an die Steuereinheit 64 übergeben
wird.
-
Wenn
die spezielle Kontrolltransferanweisung noch nicht empfangen wurde,
ist das Kontrolltransfersignal negiert. Wenn das Kontrolltransfersignal
negiert ist, ist die Steuereinheit 54 aktiviert und die
Steuereinheit 64 ist deaktiviert. Auch sind, wenn das Kontrollübertragungssignal
negiert ist, alle Ausgaben der Kontrolleinheitsauswahllogik 101 negiert. Negieren
des Deaktivierungssignals an die Random-Control-Logik 62 versetzt
die getakteten Steuersignale in die Lage, von der Random-Control-Logik 62 an
die Ausführungseinheit 56 geliefert
zu werden. Negieren des optionalen Deaktivierungssignals an das
Steuer-PLA 60 erlaubt es dem Steuer-PLA 60, von
dem ersten Zustandssequenzer 58 freigegeben zu werden.
Negieren des Aktivierungssignals an die Steuer-Logik 72 deaktiviert
die getakteten Steuersignale, so dass sie nicht von der Random-Control-Logik 72 an
die Ausführungseinheit 56 geliefert
werden. Negieren des Aktivierungssignals an den Steuer-ROM 70,
verhindert, dass der Steuer-ROM 70 von dem zweiten Zustandssequenzer 58 freigegeben wird.
-
Wenn
die spezielle Kontrolltransferanweisung noch nicht empfangen wurde,
ist der Steuer-ROM 70 deaktiviert. Wenn der Steuer-ROM 70 deaktiviert
ist, kann er den logischen Zustand seiner Ausgaben nicht verändern. Selbst
wenn er jedoch deaktiviert ist, fährt der Steuer-ROM 70 damit
fort, seine Ausgangssignale mit entweder einem vorbestimmten Anfangsmuster
von logischen Zuständen oder
mit dem letzten Muster von logischen Zuständen, die die Ausgangssignale
hatten, bevor der Steuer-ROM 70 deaktiviert wurde, anzusteuern.
Bei einer Ausführungsform
der vorliegenden Erfindung ist das letzte Muster von logischen Zuständen, die
die Ausgangssignale hatten bevor der Steuer-ROM deaktiviert wurde,
stets dasselbe wie das vorbestimmte Anfangsmuster von logischen
Zuständen.
-
Der
Betrieb des in den 2 und 4 illustrierten
ersten Zustandssequenzers 58 soll nun im Detail diskutiert
werden. Das Kontrolltransfersignal von dem Steuer-PLA 60 wird
verwendet, um zu bestimmen, ob die Steuereinheit 54 den
ersten Zustandssequenzer 58 kontrolliert oder ob die Steuereinheit 64 den
ersten Zustandssequenzer 58 kontrolliert. Das Kontrolltransfersignal
wird benutzt, um zu bestimmen, ob der MUX 80 ein Anweisungsendsignal
von dem Steuer-PLA 60 ausgibt oder ob der MUX 80 ein
Anweisungsendsignal von dem Steuer-ROM 70 ausgibt. Gleichermaßen wird
dasselbe Kontrolltransfersignal verwendet, um zu bestimmen, ob der MUX 80 ein
Vorgriffssignal von dem Steuer-PLA 60 ausgibt oder ob der
MUX 80 ein Vorgriffssignal von dem Steuer-ROM 70 ausgibt.
Man beachte, dass das Kontrolltransfersignal auch bestimmt, ob die
Anweisungsendsignaleingabe in die Zustandslogik 84 von dem
Steuer-PLA oder von dem Steuer-ROM 70 stammt.
-
Das
Kontrolltransfersignal bestimmt im Ergebnis, ob die Steuereinheit 54 oder
die Steuereinheit 64 den Anweisungsfluss durch den ersten
Zustandssequenzer 58 kontrolliert. Das Setzen des Ausgangs
des MUX 82 veranlasst eine Anweisung von dem Bus 32 in
das Operationscodevorgriffsregister 88 geladen zu werden.
Das Setzen des Ausgangs des MUX veranlasst eine Anweisung von dem
Operationscodevorgriffsregister 88 in das Anweisungsregister 86 geladen
zu werden.
-
Die
Zustandslogik 84 empfängt
Folgezustandssignale von dem Steuer-PLA 60. Der Decoder 89 bestimmt
in Verbindung mit dem Steuer-PLA 60, welcher nächste Zustand
von diesen Folgezustandssignalen und von der aktuellen Anweisung
in dem Anweisungsregister 86 gespeichert werden soll. Wenn
der CPU-Kern 50 ohne die optionale CPU-Steuerungserweiterung 52 verwendet
wird, wird das Kontrolltransfersignal niemals gesetzt. Wenn jedoch
der CPU-Kern 50 in Verbindung mit der optionalen CPU-Steuerungserweiterung 52 verwendet
wird, wird das Steuer-PLA das Kontrolltransfersignal setzen und
die Ausgabe des Decoders 89 wird von dem Kontrolltransfersignal
betroffen sein.
-
Der
erste Zustandssequenzer 58 sendet auch Timing-Information (nicht
dargestellt) an das Steuer-PLA 60 bezüglich wann die Eingaben in
das Steuer-PLA 60 gültig
sind und wann die Ausgaben aus dem Steuer-PLA 60 gültig sind.
Wenn die Ausgaben aus dem Steuer-PLA 60 gültig sind,
aktiviert der erste Zustandssequenzer 58 die Steuer-PLA-Signale,
so dass sie an die Random-Control-Logik 62 gesendet werden.
Die Random-Control-Logik 62 qualifiziert die Steuer-PLA-Signale dann mit
der Timing-Information und mit der Status-Information, die von der Ausführungseinheit 56 über die
Statussignale zurück
empfangen wurden. Die Random-Control-Logik 62 gibt dann die getakteten
Steuersignal aus, die ein kompletter Satz von Signalen sind, der erforderlich
ist, um die Ausführungseinheit 56 vollständig zu
kontrollieren.
-
Da
der erste Zustandssequenzer 58 bei einem CPU-Kern 50 verwendet
werden kann, der allein und ohne eine CPU-Steuerungserweiterung 52 arbeitet,
kann es wünschenswert
sein, den größten Teil der
Schaltung, die sich mit dem Kontrolltransfer beschäftigt, in
dem zweiten Zustandssequenzer 68 und in der Steuereinheit 64 zu
positionieren. Es kann effizienter sein, Eingangs- und Ausgangspfade
für Steuersignale,
die sich mit dem Kontrolltransfer befassen, in dem CPU-Kern 50 einzuschließen, jedoch
den größten Teil
der tatsächlichen
Kontrolltransferschaltung in der CPU-Steuerungserweiterung 52 zu
positionieren. Der Vorteil dieses Ansatzes ist es, dass in dem CPU-Kern 50 keine
Halbleiterfläche
für Funktionen
verschwendet wird, die bei einem allein stehenden CPU-Kern 50 nicht
benötigt
werden. Daher werden die Kosten des CPU-Kerns 50 für sich allein
auf einem Minimum gehalten.
-
Der
Betrieb des in den 2 und 6 illustrierten
zweiten Zustandssequenzers 68 soll nun im Detail diskutiert
werden. Der zweite Zustandssequenzer 68 wirkt primär als eine
Zustandsmaschine für
die CPU-Steuerungserweiterung 52. In dieser Funktion empfängt der
zweite Zustandssequenzer 68 Anweisungen von dem Bus 32.
Der zweite Zustandssequenzer 68 decodiert dann (unter Verwendung
des Decoders 109) sowohl die aktuelle, auszuführende Anweisung
(aus dem Anweisungsregister 106) als auch den aktuellen
internen Zustand der CPU-Steuerungserweiterung 52 (aus
der Zustandslogik 104). Der zweite Zustandssequenzer 78 gibt
dann Signale aus dem Decoder 109 aus, die Eingaben in den
Steuer-ROM sind.
-
Das
Setzen des Vorgriffssignals von dem Steuer-ROM 70 in Verbindung
mit einem Timing-Signal (nicht dargestellt) veranlasst eine Anweisung
von dem Bus 32 in das Anweisungsregister 106 geladen zu
werden. Die Zustandslogik 104 empfängt Folgezustandssignale von
dem Steuer-ROM 70. Der Decoder 109 bestimmt in
Verbindung mit dem Steuer-ROM 70, welcher nächste Zustand
von diesen Folgezustandssignalen und von der aktuellen Anweisung
in dem Anweisungsregister 106 gespeichert werden soll.
Man beachte, dass der Decoder 109 fortfahren kann, Signale
an den Steuer-ROM 70 auszugeben, selbst wenn die Steuereinheit 64 deaktiviert
wurde. Der Steuer-ROM 70 wird von den Eingaben, die er
von dem Decoder 109 empfängt, nicht beeinflusst, solange
der Steuer-ROM 70 deaktiviert ist.
-
Die
Zustandslogik 104 umfasst einen Zähler 107. Der Zähler 107 kann
von dem Bus 32 aus beschrieben und möglicherweise gelesen werden.
Der Zähler 107 kann
verwendet werden, um Schleifen innerhalb einer Anweisung, die von
dem zweiten Zustandssequenzer 68 und der Steuereinheit 64 ausgeführt wird,
zu erzeugen. Als ein Beispiel kann es sein, dass ein Kunde wünscht, eine
neue Anweisung hinzuzufügen,
die ein Durchführen
desselben Ausführungseinheitszyklus "N" Male umfasst, wie etwa das "N"-malige Schieben eines bestimmten Registerwertes.
Durch Laden des Wertes "N" in den Zähler 107 und
durch Verringern des Zählers 107 nach
jedem Ausführungseinheitszyklus,
in dem das bestimmte Register geschoben wird, ist die Zustandslogik 104 in der
Lage, zu verfolgen, wann derselbe Zustand "N" Mal
durchlaufen ist. Die Zustandslogik 104 sendet dann ein
Signal an den Decoder 109, um anzuzeigen, dass die Schleife
beendet ist. Auf diese Weise kann eine einzelne, von der CPU-Steuerungserweiterung 52 ausgeführte Anweisung
im Ergebnis in einer Anweisung Schritte implementieren, die normalerweise
viele Anweisungen erfordern würden.
-
Der
zweite Zustandssequenzer 68 sendet auch Timing-Information (nicht
dargestellt) an den Steuer-ROM 70 bezüglich wann die Eingaben in
den Steuer-ROM 70 gültig
sind und wann die Ausgaben aus dem Steuer-ROM 70 gültig sind.
Wenn die Ausgaben aus dem Steuer-ROM 70 gültig sind,
aktiviert der zweite Zustandssequenzer 68 die Steuer-ROM-Signale,
so dass sie an die Random-Control-Logik 72 übermittelt
werden. Die Random-Control-Logik 72 qualifiziert die Steuer-ROM-Signale dann mit
Timing-Information und Statusinformation, die sie von der Ausführungseinheit 56 über die
Statussignale zurück
empfängt.
Die Random-Control-Logik 72 gibt dann die getakteten Steuersignale aus,
die der vollständige
Satz von Signalen sind, die erforderlich sind, um die Ausführungseinheit 56 vollständig zu
kontrollieren.
-
Nun,
da der Betrieb des ersten Zustandssequenzers 58 und des
zweiten Zustandssequenzer 68 diskutiert sind, soll der
Transfer der Kontrolle zwischen den Steuereinheiten 54 und 64 im
Detail diskutiert werden. Um die Kontrolle der Ausführungseinheit 56 von
der Steuereinheit 54 zu der Steuereinheit 64 zu
transferieren, muss die erweiterbare CPU 12 eine spezielle
Kontrolltransferanweisung empfangen.
-
Sobald
die spezielle Kontrolltransferanweisung durch das Anweisungsregister 86 von
dem Bus 32 empfangen ist, beginnt der Transfer der Kontrolle von
der Steuereinheit 54 zu der Steuereinheit 64.
Der Decoder 89 decodiert die spezielle Kontrolltransferanweisung
und gibt entsprechende Signale aus, die einzigartig für die spezielle
Kontrolltransferanweisung sind. Das Steuer-PLA 60, welches
noch immer aktiviert ist, antwortet auf die spezielle Kontrolltransferanweisung
durch Setzen des Kontrolltransfersignals und durch Senden der Steuer-PLA-Signale
an die Random-Control-Logik 62.
Da die auszuführende Anweisung
die spezielle Kontrolltransferanweisung ist, steuert die Random-Control-Logik 62 die
getakteten Steuersignale mit einem ersten vorbestimmten Muster von
logischen Zuständen
und dann mit einem zweiten vorbestimmten Muster von logischen Zuständen an.
-
Bei
einer Ausführungsform
ist dieses erste vorbestimmte Muster von logischen Zuständen dasselbe
wie das von den getakteten Steuersignalen während des ersten Ausführungseinheitszyklus
einer NOP-Anweisung angesteuerte. Ansteuern der getakteten Steuersignale
mit den ersten vorbestimmten Mustern von logischen Zuständen veranlasst
das Programmzählerregister 200, 206 in
der Ausführungseinheit 56,
erhöht
zu werden. Ansteuern der getakteten Steuersignale mit dem zweiten
vorbestimmten Muster von logischen Zuständen hat keinen Einfluss auf
die Ausführungseinheit 56.
Während
des zweiten Ausführungseinheitszyklus
wird, wenn die getakteten Steuersignale mit dem zweiten vorbestimmten
Muster von logischen Zuständen
angesteuert werden, die Kontrolle tatsächlich von der Steuereinheit 54 zur
Steuereinheit 64 transferiert.
-
Bei
einer Ausführungsform
der vorliegenden Erfindung kann es daher sein, dass beide Steuereinheiten 54 und 64 gleichzeitig
ihre entsprechenden getakteten Steuersignale mit dem zweiten vorbestimmten
Muster von logischen Zuständen
ansteuern, während
die Kontrolle tatsächlich
von der Steuereinheit 54 zur Steuereinheit 64 transferiert
wird. Sobald die Kontrolle transferiert ist, führt die Steuereinheit 64 eine
speziell zugeschnittene Anweisung durch. Die letzten beiden Ausführungseinheitszyklen jeder
speziell zugeschnittenen Anweisung sind identisch mit den zwei Ausführungseinheitszyklen
der speziellen Kontrolltransferanweisung; beide sind identisch mit
den zwei Ausführungseinheitszyklen der
NOP-Anweisung.
-
Setzen
des Kontrolltransfersignals durch das Steuer-PLA 60 wird verwendet, um den
Transfer der Kontrolle von der Steuereinheit 54 zur Steuereinheit 64 zu
initiieren. Als ein Ergebnis des Setzens des Kontrolltransfersignals
wird die Steuereinheit 54 deaktiviert und die Steuereinheit 64 wird
aktiviert. Wenn das Kontrolltransfersignal gesetzt ist, werden alle
Ausgaben der Steuereinheitsauswahllogik 101 gesetzt. Das
Setzen des Signals von der Steuereinheitsauswahllogik 101 zum
Anweisungsregister 106 veranlasst das Anweisungsregister 106,
das zweite Byte der speziellen Kontrolltransferanweisung vom Bus 32 zu
laden.
-
Setzen
des Deaktivierungssignals an die Random-Control-Logik 62 deaktiviert
die getakteten Steuersignale, so dass sie nicht von der Random-Control-Logik 62 an
die Ausführungseinheit 56 geliefert
werden. Setzen des optionalen Deaktivierungssignals an das Steuer-PLA 60 verhindert,
dass das Steuer-PLA 60 von dem ersten Zustandssequenzer 58 freigegeben
wird. Setzen des Aktivierungssignals an die Random-Control-Logik 72 versetzt
die getakteten Steuersignale in die Lage, von der Random-Control-Logik 72 an
die Ausführungseinheit 56 geliefert
zu werden. Setzen des Aktivierungssignals an den Steuer-ROM 70 gestattet
es dem Steuer-ROM 70, von dem zweiten Zustandssequenzer 58 freigegeben
zu werden.
-
Man
beachte, dass die Reihenfolge, in der die Ausgangssignale von der
Steuereinheitsauswahllogik 107 gesetzt werden, wichtig
ist. Zuerst muss der Steuer-ROM 70 aktiviert werden. Optional
kann das Steuer-PLA 60 deaktiviert werden. Dann kann die Random-Control-Logik 72 aktiviert
werden und schließlich
kann die Random-Control-Logik 62 deaktiviert werden.
-
Der
zweite Zustandssequenzer 68 empfängt das zweite Byte der speziellen
Transferanweisung vom Bus 32. Bei einer Ausführungsform
der vorliegenden Erfindung ist das zweite Byte der speziellen Transferanweisung
die Startadresse der speziell zugeschnittenen Anweisung in dem Steuer-ROM 70. Der
Decoder 89 übermittelt
dann die Startadresse der speziell zugeschnittenen Anweisung an
den Steuer-ROM 70. Der Steuer-ROM 70 verwendet
diese Startadresse, um auf eine bestimmte ROM-Position zuzugreifen.
Die an dieser bestimmten ROM-Position gespeicherte Information wird
dann als die Steuer-ROM-Signale an die Random-Control-Logik 72 ausgegeben.
-
Diese
Steuer-ROM-Signale zeigen der Random-Control-Logik 72 an, dass sie die getakteten Steuersignale
mit demselben zweiten vorbestimmten Muster von logischen Zuständen ansteuern
sollte, die von der Random-Control-Logik 62 angesteuert werden.
Für eine
kurze Zeitspanne während
des zweiten Ausführungseinheitszyklus
der speziellen Kontrolltrans feranweisung steuern daher sowohl die Random-Control-Logik 62 als
auch die Random-Control-Logik 72 ihre entsprechenden getakteten
Steuersignale mit demselben zweiten vorbestimmten Muster von logischen
Zuständen
an. Der Zweck dieser kurzen Überlappperiode
ist es, sicherzustellen, dass es den getakteten Steuersignale, die die
Ausführungseinheit 56 ansteuern,
niemals gestattet wird zu schweben oder in einen unbekannten oder
unbeabsichtigten logischen Zustand überzugehen. Die getakteten
Steuersignale werden daher stets von einer oder beiden Steuereinheiten 54 und 64 angesteuert.
-
Sobald
die Random-Control-Logik 72 ihre getakteten Steuersignale
mit dem zweiten vorbestimmten Muster von logischen Zuständen ansteuert, setzt
der zweite Zustandssequenzer 68 ein Deaktivierungssignal
an die Random-Control-Logik 62,
welches die Ausgabe der getakteten Steuersignale von der Random-Control-Logik 62 deaktiviert.
Zu diesem Zeitpunkt kontrollieren der zweite Zustandssequenzer 68 und
die Steuereinheit 64 die Ausführungseinheit 56 vollständig. Der
erste Zustandssequenzer 58 und die Steuereinheit 54 haben
keine Kontrolle über die
Ausführungseinheit 56.
Bei einer Ausführungsform
der vorliegenden Erfindung jedoch fahren der erste Zustandssequenzer 58 und
die Steuereinheit 54 fort, in demselben Zustand zu bleiben;
das bedeutet, dass, falls die Random-Control-Logik 62 nicht deaktiviert
worden wäre,
sie damit fortfahren würde, ihre
getakteten Steuersignale mit dem zweiten vorbestimmten Muster von
logischen Zuständen
anzusteuern.
-
Das
Setzen des Kontrolltransfersignals durch das Steuer-PLA 60 beeinflusst
auch den ersten Zustandssequenzer 58. Das Setzen des Kontrolltransfersignals
wird verwendet, um die Ausgabe des MUX 80 und die Ausgabe
des MUX 82 zu än dern.
Als ein Ergebnis des Setzens des Kontrolltransfersignals schaltet
der MUX 80 vom Ausgeben des Anweisungsendsignals von dem
Steuer-PLA 60 um auf ein Ausgeben des Anweisungsendsignals
von dem Steuer-ROM 70. Auf ähnliche Weise schaltet als
ein Ergebnis des Setzens des Kontrolltransfersignals der MUX 82 vom
Ausgeben des Vorgriffssignals von dem Steuer-PLA um auf ein Ausgeben
des Vorgriffssignals von dem Steuer-ROM 70.
-
Als
ein Ergebnis des Setzens des Kontrolltransfersignals empfängt die
Zustandslogik 84 das Anweisungsendsignal von dem Steuer-ROM 70 anstatt
von dem Steuer-PLA 60. Durch Verwenden des Anweisungsendsignals
von dem Steuer-ROM 70 ist die Zustandslogik 84 in
der Lage, zu bestimmen, wann die speziell zugeschnittene Anweisung
beendet ist und daher wann die Kontrolle von der Steuereinheit 54 zur
Steuereinheit 64 zurücktransferiert werden
muss.
-
Der
zweite Zustandssequenzer 68 und die Steuereinheit 64 empfangen
die nächste
Anweisung, die speziell zugeschnittene Anweisung, vom Bus 32. Bei
einer Ausführungsform
der vorliegenden Erfindung ist die speziell zugeschnittene Anweisung
tatsächlich
ein zweites Byte der speziellen Kontrolltransferanweisung, die auf
die Position im Steuer-ROM 70 zeigt, die die Startadresse
für die
speziell zugeschnittene Anweisung ist.
-
Der
zweite Zustandssequenzer 68 und die Steuereinheit 64 kontrollieren
nun die Ausführungseinheit 56 vollständig, während der
Ausführung
dieser speziell zugeschnittenen Anweisung. Am Ende der speziell
zugeschnittenen Anweisung muss die Random-Control-Logik 72 erneut
ihre getakteten Steuersignale mit demselben zweiten vorbestimmten Muster
von logischen Zuständen
ansteuern. Der zweite Zustandsse quenzer 68 reaktiviert
dann die Ausgabe der getakteten Steuersignale von der Random-Control-Logik 62 durch
Negieren des Deaktivierungssignals. Erneut steuern daher für eine kurze Zeitspanne
sowohl die Random-Control-Logik 62 als auch die Random-Control-Logik 72 ihre
entsprechenden getakteten Steuersignale mit demselben zweiten vorbestimmten
Muster von logischen Zuständen
an.
-
Am
Ende der speziell zugeschnittenen Anweisung setzt der Steuer-ROM 70 das
Anweisungsendsignal. Das Setzen des Anweisungsendsignals durch den
Steuer-ROM 70 wird verwendet, um den Transfer der Kontrolle
von der Steuereinheit 64 zurück zur Steuereinheit 54 zu
initiieren. Als ein Ergebnis des Setzens des Anweisungsendsignals
wird die Steuereinheit 64 deaktiviert und die Steuereinheit 54 wird
aktiviert.
-
Wenn
das Anweisungsendsignal gesetzt ist, werden alle Ausgaben der Steuereinheitsauswahllogik 101 negiert.
Negieren des Deaktivierungssignals an die Random-Control-Logik 62 versetzt
die getakteten Steuersignale in die Lage, von der Random-Control-Logik 62 an
die Ausführungseinheit 56 geliefert
zu werden. Negieren des optionalen Deaktivierungssignals an das
Steuer-PLA 60 gestattet es dem Steuer-PLA 60, von dem ersten Zustandssequenzer 58 freigegeben
zu werden. Negieren des Aktivierungssignals an die Random-Control-Logik 72 deaktiviert
die getakteten Steuersignale, so dass sie nicht von der Random-Control-Logik 72 an
die Ausführungseinheit 56 geliefert
werden. Negieren des Aktivierungssignals an den Steuer-Rom 70 verhindert,
dass der Steuer-ROM 70 von dem zweiten Zustandssequenzer 58 freigegeben
wird.
-
Man
beachte, dass die Reihenfolge, in der die Ausgangssignale von der
Steuer-Einheitsauswahllogik 101 ne giert werden, wichtig
ist. Zuerst muss, wenn das Steuer-PLA 60 deaktiviert wurde,
es reaktiviert werden. Dann kann die Random-Control-Logik 62 reaktiviert
werden. Als nächstes
kann die Random-Control-Logik 72 deaktiviert werden und schließlich kann
der Steuer-ROM 70 deaktiviert werden.
-
Eine
zweite Implementierung (nicht illustriert) zum Übergeben der Kontrolle über die
Ausführungseinheit 56 unter
Verwendung einer speziellen Kontrolltransferanweisung soll nun diskutiert
werden. Bei dieser zweiten Implementierung ist kein Kontrolltransfersignal
erforderlich. Statt dessen bestimmt der Decoder 109, wann
die spezielle Kontrolltransferanweisung empfangen wurde und wann
die Kontrolle der Ausführungseinheit 56 von
der Steuereinheit 54 an die Steuereinheit 64 transferiert
werden soll. Der Decoder 109 liefert dann anstelle des
Kontrolltransfersignals ein Signal an die Steuereinheitsauswahllogik 101,
welches anzeigt, dass der Kontrolltransfer beginnen sollte. Dieses
Signal vom Decoder 110 hat auf die Steuereinheitsauswahllogik 101 denselben Effekt
wie er für
das Kontrolltransfersignal beschrieben wurde.
-
Man
beachte, dass andere Ausführungsformen
der vorliegenden Erfindung andere Ansätze zum Transfer der Kontrolle über die
Ausführungseinheit 56 zwischen
zwei oder mehr Steuereinheiten verwenden können. Die Verwendung einer
speziellen Kontrolltransferanweisungen ist nur eine Weise, die Kontrolle
zu transferieren. Außerdem
könnte
ein Ansatz, anstelle eines automatischen Rückkehrens der Kontrolle über die
Ausführungseinheit 56 zur
Steuereinheit 54 nach Ausführung lediglich einer speziell zugeschnittenen
Anweisung, verwendet werden, der es erlaubt, dass irgendeine Anzahl
von speziell zugeschnittenen Anweisungen ausgeführt wird, bevor die Kontrolle
zurück
zur Steuereinheit 54 übergeben wird.
-
Bei
der illustrierten Ausführungsform
der vorliegenden Erfindung sollte die spezielle Kontrolltransferanweisung
nicht verwendet werden, wenn der CPU-Kern 50 ohne CPU-Steuerungserweiterung 52 erweitert
wird. Das bedeutet, dass, wenn die Steuereinheit 64 nicht
implementiert ist, die Steuereinheit 54 die Kontrolle über die
Ausführungseinheit 56 behalten
muss. Wenn daher der CPU-Kern 50 ohne CPU-Steuerungserweiterung 52 verwendet
wird, wird die spezielle Kontrolltransferanweisung als ein illegaler
Operationscode behandelt. Man beachte, dass, wenn die illegale Operationscodeschaltung (nicht
dargestellt) in der Random-Logik 62 einen illegalen Operationscode
erkennt, das Datenverarbeitungssystem 10 zurückgesetzt
wird.
-
Um
jedoch den CPU-Kern 50 mit der CPU-Steuerungserweiterung 52 zu
verwenden, ist eine leichte Modifikation in der Steuereinheit 54 erforderlich.
Die Steuereinheit 54 muss nämlich so modifiziert werden,
dass die spezielle Kontrolltransferanweisung nicht länger als
ein illegaler Operationscode behandelt wird, sondern tatsächlich als
die spezielle Kontrolltransferanweisung ausgeführt wird. Bei einer Ausführungsform
der vorliegenden Erfindung besteht diese Modifikation einfach darin,
eines der Steuer-PLA-Signale
daran zu hindern, in den Bereich der Random-Control-Logik 62 eingegeben
zu werden, der erkennt, dass ein illegaler Operationscode empfangen
wurde. Bei einigen Implementierungen kann diese Modifikation so
einfach sein, dass ein offener Kreis in einem Leiter erzeugt wird.
Als ein Ergebnis wird die spezielle Kontrolltransferanweisung nicht
als ein illegaler Operationscode interpretiert, wenn der CPU-Kern 50 mit
der CPU-Steuerungserweiterung 52 benutzt wird.
-
Andere
Ausführungsformen
der vorliegenden Erfindung können
andere Ansätze
zum Transfer der Kontrolle über
die Ausführungseinheit 56 zwischen
der Steuereinheit 54 und der Steuereinheit 64 verwenden.
Tatsächlich
kann jedes Verfahren verwendet werden, das einen sanften Transfer
sicherstellt. Beispielsweise kann ein Bitfeld in einer Anweisung
selbst, benutzt werden, um anzuzeigen, welche Steuereinheit, 54 oder 64,
die Ausführungseinheit während der
Ausführung
dieser speziellen Anweisung kontrollieren soll.
-
Alternativ
kann ein programmierbares Steuerregister ein Bitfeld enthalten,
welches bestimmt, welche Steuereinheit derzeit die Ausführungseinheit 56 kontrolliert.
Alternativ kann ein von außerhalb
der erweiterbaren CPU 12 empfangenes Signal verwendet werden,
um anzuzeigen, welche Steuereinheit, 54 oder 64,
die Ausführungseinheit
während
der Ausführung
der nachfolgenden Anweisungen kontrollieren soll. Dieses externe
Signal könnte
in einem anderen Bereich des Datenverarbeitungssystems 10 erzeugt
werden oder dieses Signal könnte
von außerhalb
des Datenverarbeitungssystems 10 über einen integrierten Schaltkreispin
empfangen werden.
-
Es
wird Bezug genommen auf 3. Mit einigen Änderungen
kann die in 3 illustrierte erweiterbare
CPU 12' dieselbe
sein wie die in 2 illustrierte und oben beschriebene
erweiterbare CPU 12. Die erweiterbare CPU 12' umfasst mehrere
neue Schaltungsblöcke,
nämlich
die Ausführungseinheitserweiterung 153,
die Random-Control-Logikerweiterung 175 und
die Steuer-ROM-Erweiterung 171.
-
Außerdem werden
ein oder mehrere interne Busse der Ausführungseinheit 156 (d.h.
EU-interne Busse) zu wenigs tens einem physikalischen Rand der Ausführungseinheit 156 geleitet.
Die Ausführungseinheitserweiterung 153 kann
daher hinzugefügt
und direkt mit einem oder mehreren der EU-internen Busse gekoppelt werden, um
die Funktionalität der
kombinierten Ausführungseinheiten 153 und 156 zu
erhöhen.
Die Ausführungseinheitserweiterung 153 kann
jede gewünschte
Schaltung enthalten, beispielsweise ein oder mehrere Register, eine
oder mehrere arithmetische Logikeinheiten (ALUs) und jede Art von
Spezialfunktionsschaltung.
-
Die
Random-Control-Logikerweiterung 175 repräsentiert
die Erweiterung oder Hinzufügung,
die zur Random-Control-Logik 172 durchgeführt werden kann,
um die in der Ausführungseinheitserweiterung 153 enthaltene
Schaltung zu steuern. Die Random-Control-Logik 172 hat
die Fähigkeit,
die getakteten Steuersignale zu erzeugen, welche die Ausführungseinheit 156 vollständig kontrollieren.
Die Random-Control-Logik 172 hat
jedoch nicht die Fähigkeit,
die getakteten Steuersignale zu erzeugen, um die Ausführungseinheitserweiterung 153 vollständig zu
kontrollieren. Die Random-Control-Logikerweiterung 175 kann
daher erforderlich sein, um die getakteten Steuersignale zu erzeugen,
um die Ausführungseinheitserweiterung 153 vollständig zu
kontrollieren.
-
Auf ähnliche
Weise repräsentiert
die Steuer-ROM-Erweiterung 171 die
Erweiterung oder Hinzufügung,
die zum Steuer-ROM 170 durchgeführt werden kann, um die in
der Ausführungseinheitserweiterung 153 enthaltene
Schaltung zu steuern. Der Steuer-ROM 170 hat die Fähigkeit,
die Steuer-ROM-Signale
zu erzeugen, die erforderlich sind, um die Steuerungsausführungseinheit 156 vollständig zu
kontrollieren. Der Steuer-ROM 170 hat jedoch nicht die
Fähigkeit,
die Steuer-ROM-Signale zu erzeugen, die erforderlich sind, um die
Ausführungseinheitserweiterung 153 vollständig zu
kontrollieren. Die Steuer-ROM-Erweiterung 171 kann daher
erforderlich sein, um die Steuer-ROM-Erweiterungssignale zu erzeugen,
die erforderlich sind, um die Ausführungseinheitserweiterung 153 vollständig zu
kontrollieren.
-
Man
beachte, dass der in 5 illustrierte erste Zustandssequenzer 158 in
derselben Weise implementiert sein kann, wie der in 4 illustrierte
erste Zustandssequenzer 58. Man beachte auch, dass der
in 7 illustrierte zweite Zustandssequenzer 168 in
derselben Weise implementiert sein kann, wie der in 6 illustrierte
zweite Zustandssequenzer 68.
-
Es
wird Bezug genommen auf 8. Anders als die Tatsache,
dass das Bedingungscoderegister 228 nun innerhalb der Ausführungseinheit 56 positioniert
ist, funktioniert die Ausführungseinheit 56 intern in
derselben Weise wie eine Ausführungseinheit nach
dem Stand der Technik funktioniert. Das Layout der Ausführungseinheit 56 muss
jedoch erlauben, dass beide Steuereinheiten 54 und 64 die
getakteten Steuersignale liefern, die die Ausführungseinheit 56 kontrollieren,
und muss erlauben, dass beide Steuereinheiten 54 und 64 die
Statussignale empfangen. Die Details, wie die getakteten Steuersignale
die Ausführungseinheit 56 kontrollieren,
sind nicht illustriert. Die getakteten Steuersignale werden jedoch
benutzt, um die Ausführungseinheit 56 in
derselben Weise wie beim Stand der Technik zu kontrollieren.
-
Zusammenfassung
und einige alternative Ausführungsformen
Zusammenfassend erlaubt es die vorliegende Erfindung, eine neue
CPU oder eine CPU nach dem Stand der Technik erweiterbar zu gestalten,
so dass leicht eine Schaltung zu der erweiterbaren CPU 12 oder 12' hinzugefügt werden
kann, um unterschiedliche Kundenbedürfnisse sowohl jetzt als auch
in der Zukunft zu erfüllen.
Als ein Ergebnis wurden die Kosten für individuelle Kundenflexibilität signifikant
reduziert.
-
Der
Ausdruck "erweiterbar" in Bezug auf eine CPU
wird benutzt, um zu bedeuten, dass neue Anweisungen der CPU hinzugefügt werden
können,
indem einfach eine bestimmte spezielle Schaltung hinzugefügt wird,
ohne dass wesentliche Änderungen an
der bestehenden CPU Schaltung vorgenommen werden müssten. Neue
Anweisungen können
einfach hinzugefügt
werden, indem eine zweite Steuereinheit 64 und ein zweiter
Zustandssequenzer 68 hinzugefügt werden. Man beachte, dass
der größte Teil der
zweiten Steuereinheit 64 ein Duplikat der ursprünglichen
Steuereinheit 54 sein kann und dass einiges des zweiten
Zustandssequenzer 68 ein Duplikat des ursprünglichen
Zustandssequenzers 58 sein kann. Es kann sein, dass einige
Ausführungsformen der
vorliegenden Erfindung einen oder mehrere Decoder 89, 99, 109 und 119 nicht
benötigen.
-
Zusätzlich zu
dem Hinzufügen
neuer Anweisungen, welche die bestehenden Ressourcen der Ausführungseinheit 156 verwenden,
können
auch neue Ressourcen als eine Erweiterung der Ausführungseinheit 156 hinzugefügt werden.
Die internen Busse der Ausführungseinheit 156 werden
zu dem physikalischen Rand der Ausführungseinheit 156 geleitet.
Eine Aus führungseinheitserweiterung 153 kann
daher hinzugefügt
und direkt mit einem oder mehreren der internen Busse der Ausführungseinheit 156 gekoppelt
werden. Die Ausführungseinheitserweiterung 153 erhöht die Funktionalität der Ausführungseinheit 156 durch
das Hinzufügen
von Registern, einer weiteren arithmetischen Logikeinheit (ALU),
einer Spezialfunktionsschaltung oder irgendeiner anderen gewünschten
Schaltung.
-
Obgleich
die vorliegende Erfindung unter Bezugnahme auf spezielle Ausführungsbeispiele
illustriert und beschrieben wurde, kommen dem Fachmann weitere Modifikationen
und Verbesserungen in den Sinn. Beispielsweise können bei einer alternativen
Ausführungsform
der vorliegenden Erfindung alternative Architekturen für den CPU-Kern 50 und
die CPU-Steuerungserweiterung 52 verwendet werden. Die
in 2 und 3 verwendeten Architekturen sind
lediglich mögliche
Architekturen, die verwendet werden können. Außerdem ist die vorliegende
Erfindung nicht auf nur zwei Steuereinheiten 54 und 64 limitiert.
Mit einigen Modifikationen in der Kontrolltransferschaltung im ersten
Zustandssequenzer 58 und im zweiten Zustandssequenzer 68 können andere
Ausführungsformen
der vorliegenden Erfindung mehr als zwei Steuereinheiten verwenden.
-
Man
beachte, dass bei alternativen Ausführungsformen der vorliegenden
Erfindung eine Zeitspanne der "Nichtansteuerung" bestehen kann, während welcher
weder die Steuereinheit 54 noch die Steuereinheit 64 die
getakteten Steuersignale ansteuern. Eine "Nichtansteuerungs"-Zeit unterbricht den Betrieb der erweiterbaren
CPU 12 nicht, wenn die getakteten Steuersignale nicht in
der Lage sind, den internen Zustand der Ausführungseinheit 56 während der "Nicht ansteuerungs"-Zeit permanent zu verändern (z.B.
während
die internen Busse der Ausführungseinheit
vorgeladen werden).
-
Es
versteht sich daher, dass diese Erfindung nicht auf speziell illustrierten
Formen limitiert ist.