DE69333853T2 - Erweiterbare zentrale Verarbeitungseinheit - Google Patents

Erweiterbare zentrale Verarbeitungseinheit Download PDF

Info

Publication number
DE69333853T2
DE69333853T2 DE69333853T DE69333853T DE69333853T2 DE 69333853 T2 DE69333853 T2 DE 69333853T2 DE 69333853 T DE69333853 T DE 69333853T DE 69333853 T DE69333853 T DE 69333853T DE 69333853 T2 DE69333853 T2 DE 69333853T2
Authority
DE
Germany
Prior art keywords
control
execution unit
logic
signals
cpu
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE69333853T
Other languages
English (en)
Other versions
DE69333853D1 (de
Inventor
Charles F. Austin Studor
James S. Austin Divine
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NXP USA Inc
Original Assignee
Freescale Semiconductor Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Freescale Semiconductor Inc filed Critical Freescale Semiconductor Inc
Publication of DE69333853D1 publication Critical patent/DE69333853D1/de
Application granted granted Critical
Publication of DE69333853T2 publication Critical patent/DE69333853T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/3822Parallel decoding, e.g. parallel decode units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/22Microcontrol or microprogram arrangements
    • G06F9/28Enhancement of operational speed, e.g. by using several microcontrol devices operating in parallel
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30101Special purpose registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30196Instruction operation extension or modification using decoder, e.g. decoder per instruction set, adaptable or programmable decoders
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
    • G06F9/3895Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros
    • G06F9/3897Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros with adaptable data path

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Microcomputers (AREA)
  • Executing Machine-Instructions (AREA)
  • Programmable Controllers (AREA)

Description

  • 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.

Claims (6)

  1. Zentrale Verarbeitungseinheit (12, 12'), umfassend: eine Ausführungseinheit (56, 156); einen Bus (32) zum Übermitteln von Anweisungen, einschließlich einer speziellen Kontrolltransferanweisung; eine erste Steuerschaltung (54, 58, 154, 158), die mit der Ausführungseinheit (56, 156) und dem Bus (32) gekoppelt ist, wobei die erste Steuerschaltung (54, 58, 154, 158) eingerichtet ist, getaktete Steuersignale zum Steuern der Ausführungseinheit (56, 156) an die Ausführungseinheit zu liefern, bevor die spezielle Kontrolltransferanweisung mittels des Busses (32) übermittelt wird; und eine zweite Steuerschaltung (64, 68, 164, 168), die mit der Ausführungseinheit (56, 156) und dem Bus (32) gekoppelt ist, wobei die zweite Steuerschaltung (64, 68, 164, 168) eingerichtet ist, getaktete Steuersignale zum Steuern der Ausführungseinheit (56, 156) bereitzustellen, nachdem die Ausführung der speziellen Kontrolltransferanweisung abgeschlossen ist.
  2. Zentrale Verarbeitungseinheit (12, 12') wie in Anspruch 1, wobei die erste Steuerschaltung (54, 58, 154, 158) einen ersten Multiplexer (80, 90) enthält.
  3. Zentrale Verarbeitungseinheit (12, 12') wie in Anspruch 2, wobei die zweite Steuerschaltung (54, 58, 154, 158) weiter einen zweiten Multiplexer (82, 92) enthält.
  4. Zentrale Verarbeitungseinheit (12, 12') wie in einem der vorangehenden Ansprüche, wobei die erste Steuerschaltung (54, 58, 154, 158) eine Steuereinheit (54, 154) zum Initiieren des Transfers der Kontrolle über die Ausführungseinheit (56, 156) von der ersten Steuerschaltung (54, 58, 154, 158) zu der zweiten Steuerschaltung (64, 68, 164, 168) als Antwort auf die Ausführung der speziellen Kontrolltransferanweisung umfasst.
  5. Zentrale Verarbeitungseinheit (12, 12') wie in einem der vorangehenden Ansprüche, wobei die Ausführungseinheit (56, 156) umfasst: eine Mehrzahl von internen Ausführungseinheitsbussen (202, 204, 216), die nach außerhalb der Ausführungseinheit (56, 156) geleitet sind.
  6. Zentrale Verarbeitungseinheit (12, 12') wie in Anspruch 5, weiter umfassend: eine Ausführungseinheitserweiterungsschaltung (153), die mit der Mehrzahl von internen Ausführungseinheitsbussen (202, 204, 216) gekoppelt ist.
DE69333853T 1992-11-27 1993-09-24 Erweiterbare zentrale Verarbeitungseinheit Expired - Lifetime DE69333853T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US07/982,327 US5848289A (en) 1992-11-27 1992-11-27 Extensible central processing unit
US982327 1992-11-27

Publications (2)

Publication Number Publication Date
DE69333853D1 DE69333853D1 (de) 2005-09-15
DE69333853T2 true DE69333853T2 (de) 2006-04-13

Family

ID=25529045

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69333853T Expired - Lifetime DE69333853T2 (de) 1992-11-27 1993-09-24 Erweiterbare zentrale Verarbeitungseinheit

Country Status (5)

Country Link
US (1) US5848289A (de)
EP (2) EP0599012B1 (de)
JP (2) JP3681182B2 (de)
KR (1) KR100275059B1 (de)
DE (1) DE69333853T2 (de)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6044453A (en) * 1997-09-18 2000-03-28 Lg Semicon Co., Ltd. User programmable circuit and method for data processing apparatus using a self-timed asynchronous control structure
US6546479B1 (en) * 1998-02-10 2003-04-08 Koninklijke Philips Electronics N.V. Reduced instruction fetch latency in a system including a pipelined processor
US6099585A (en) * 1998-05-08 2000-08-08 Advanced Micro Devices, Inc. System and method for streamlined execution of instructions
US6317820B1 (en) * 1998-06-05 2001-11-13 Texas Instruments Incorporated Dual-mode VLIW architecture providing a software-controlled varying mix of instruction-level and task-level parallelism
US6510444B2 (en) 1999-06-16 2003-01-21 Motorola, Inc. Data processor architecture and instruction format for increased efficiency
WO2001069411A2 (en) 2000-03-10 2001-09-20 Arc International Plc Memory interface and method of interfacing between functional entities
JP2003529151A (ja) * 2000-03-27 2003-09-30 インフィネオン テクノロギーズ アーゲー 構成可能な長命令語(cliw)を使用するプロセッサにユーザ定義の実行ユニットを追加するための方法と装置
JP3957948B2 (ja) 2000-04-12 2007-08-15 富士通株式会社 演算処理装置
JP3930729B2 (ja) * 2001-11-30 2007-06-13 富士通株式会社 半導体装置並びにこれを用いたフラットパネル表示装置及びそのデータドライバ
JP4002151B2 (ja) * 2002-07-31 2007-10-31 富士通株式会社 情報処理装置
EP1408405A1 (de) * 2002-10-11 2004-04-14 STMicroelectronics S.r.l. Eine rekonfigurierbare Kontrollstruktur für CPUs und eine Methode für dessen Betrieb
US8145882B1 (en) * 2006-05-25 2012-03-27 Mips Technologies, Inc. Apparatus and method for processing template based user defined instructions
US8688933B2 (en) 2006-08-31 2014-04-01 Hewlett-Packard Development Company, L.P. Firmware component modification
CN101539849B (zh) * 2009-04-21 2013-10-16 北京红旗胜利科技发展有限责任公司 一种处理器以及一种寄存器选通方法
US20120226890A1 (en) * 2011-02-24 2012-09-06 The University Of Tokyo Accelerator and data processing method
US9274797B2 (en) 2012-12-19 2016-03-01 International Business Machines Corporation Computer processor with instruction for execution based on available instruction sets

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4236204A (en) * 1978-03-13 1980-11-25 Motorola, Inc. Instruction set modifier register
US4293907A (en) * 1978-12-29 1981-10-06 Bell Telephone Laboratories, Incorporated Data processing apparatus having op-code extension register
US4374418A (en) * 1979-06-27 1983-02-15 Burroughs Corporation Linear microsequencer unit cooperating with microprocessor system having dual modes
CA1324447C (en) * 1988-05-03 1993-11-16 Raymond Y. Lee Microprocessor having external control store
EP0461257B1 (de) * 1989-01-17 1997-04-23 Fujitsu Limited Ablaufsteuerung zur decodierung von befehlen variabler länge für ein mikroprozessor
US5150468A (en) * 1989-06-30 1992-09-22 Bull Hn Information Systems Inc. State controlled instruction logic management apparatus included in a pipelined processing unit
US5430862A (en) * 1990-06-29 1995-07-04 Bull Hn Information Systems Inc. Emulation of CISC instructions by RISC instructions using two pipelined stages for overlapped CISC decoding and RISC execution
JPH0476626A (ja) * 1990-07-13 1992-03-11 Toshiba Corp マイクロコンピュータ
DE69227604T2 (de) * 1991-03-11 1999-06-24 Silicon Graphics Inc Mountain Rückwärts kompatible Rechnerarchitektur mit erweiterten Wortbreiten und Adressraum
JP2677719B2 (ja) * 1991-05-08 1997-11-17 富士通株式会社 情報処理装置
GB2266606B (en) * 1992-04-27 1996-02-14 Intel Corp A microprocessor with an external command mode

Also Published As

Publication number Publication date
EP0599012B1 (de) 2005-08-10
KR100275059B1 (ko) 2000-12-15
EP1376336A3 (de) 2004-01-14
DE69333853D1 (de) 2005-09-15
EP1376336A2 (de) 2004-01-02
EP0599012A2 (de) 1994-06-01
EP0599012A3 (de) 1995-01-04
JPH0736691A (ja) 1995-02-07
JP3681182B2 (ja) 2005-08-10
US5848289A (en) 1998-12-08
JP3816932B2 (ja) 2006-08-30
JP2005050365A (ja) 2005-02-24
KR940012160A (ko) 1994-06-22

Similar Documents

Publication Publication Date Title
DE69333853T2 (de) Erweiterbare zentrale Verarbeitungseinheit
DE2542740C2 (de) Datenverarbeitungsanlage mit einer Mikroprogrammsteuerung
DE3914265C2 (de)
DE2755273C2 (de)
DE19914210B4 (de) Verfahren und Prozessor für eine gestaffelte Ausführung einer Anweisung
DE60224774T2 (de) Datenverarbeitungssystem mit Lese-, Änderungs- und Schreibeinheit
DE60017775T2 (de) Architektur und system von einem generischen und seriellen port
DE2755616C2 (de) Datenverarbeitungsanlage
DE2714805A1 (de) Datenverarbeitungssystem
DE69625486T2 (de) Speichersteuerung zur nicht sequentiellen ausführung von schreibbefehlen
DE2322674B2 (de) Mikroprogramm-Steuereinrichtung
DE2357003A1 (de) Programmierbarer prozessor
DE2910839A1 (de) Einrichtung zur ausfuehrung einer speziellen verzweigungsinstruktion
DE2424931A1 (de) Datenverarbeitungsanlage, insbesondere mikroprogramm-datenverarbeitungseinheit mit parallelen befehlsstroemen fuer mehrere ebenen von subbefehlsvorraeten
DE112004002267T5 (de) Ruhezustandsmechansimus für virtuelles Multithreading
DE69732793T2 (de) Acht-bit-mikrokontroller mit risc-architektur
DE60009496T2 (de) Mikroprozessor mit reduziertem kontextumschaltungsaufwand und verfahren
DE602004010399T2 (de) Neuadressierbare virtuelle dma-steuer und statusregister
DE4022365C2 (de) Datenübertragungssystem
DE69630416T2 (de) Mikroprozessor zur Ausführung von Befehlen mit variablen Längen
DE2336676C3 (de) Einrichtung zur Modifizierung von Mikroprogrammbefehlen
DE60027395T2 (de) Befehlsschleifenspuffer
DE2702722A1 (de) Instruktionsinterpretation in elektronischen datenverarbeitungsanlagen
DE69926934T2 (de) Mikroprozessor und Verfahren zur Ausführung von höheren Befehlen
DE4010895C2 (de) Mikroprozessor mit Befehlsdecodiereinrichtung

Legal Events

Date Code Title Description
8364 No opposition during term of opposition