DE69315192T2 - Datenverarbeitungssystem und -Verfahren mit einem erweitbaren Register - Google Patents

Datenverarbeitungssystem und -Verfahren mit einem erweitbaren Register

Info

Publication number
DE69315192T2
DE69315192T2 DE69315192T DE69315192T DE69315192T2 DE 69315192 T2 DE69315192 T2 DE 69315192T2 DE 69315192 T DE69315192 T DE 69315192T DE 69315192 T DE69315192 T DE 69315192T DE 69315192 T2 DE69315192 T2 DE 69315192T2
Authority
DE
Germany
Prior art keywords
instructions
register
data processing
processing system
index register
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 - Fee Related
Application number
DE69315192T
Other languages
English (en)
Other versions
DE69315192D1 (de
Inventor
Michael I Catherwood
James S Divine
Charles F Studor
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
Motorola 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 Motorola Inc filed Critical Motorola Inc
Publication of DE69315192D1 publication Critical patent/DE69315192D1/de
Application granted granted Critical
Publication of DE69315192T2 publication Critical patent/DE69315192T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/342Extension of operand address space
    • 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/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30112Register structure comprising data of variable length

Landscapes

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

Description

    Bereich der Erfindung
  • Die vorliegende Erfindung bezieht sich allgemein auf ein Datenverarbeitungssystem und insbesondere auf ein Datenverarbeitungssysten und -verfahren mit einem erweiterbaren Register.
  • Hintergrund der Erfindung
  • Eine Zentraleinheit (CPU) ist allgemein das wichtigste "Gehirn" einer integrierten Mikrosteuerschaltung (MCU). Außer der CPU umfaßt eine MCU normalerweise ein oder mehrere Peripherieeinheiten oder Abschnitte auf der Platine, wie zum Beispiel Speicher, Taktgeber und Busschnittstellen. Die CPU jedoch ist normalerweise verantwortlich für den Empfang und die Ausführung der zur Steuerung der MCU verwendeten Softwareanweisungen.
  • Eine bestimmte CPU kann in verschiedenen MCUs verwendet werden. Wenn bei verschiedenen MCUs die gleiche CPU verwendet wird, so heißt es allgemein, daß diese MCUs eine Familie (wie zum Beispiel die MC68HC05 Familie von Motorola Inc., Austin, Texas Mikrosteuerungen) bilden. Es ergeben sich sowohl aus der Sicht des Herstellers als auch aus der Sicht des Verbrauchers viele Vorteile, wenn bei verschiedenen MCUs dieselbe CPU verwendet wird. Einer dieser Vorteile ist, daß die Software innerhalb einer Familie von MCUs, die dieselbe CPU verwenden, untereinander kompatibel ist.
  • Ein Problem entsteht jedoch dann, wenn eine neue und leistungsfähigere Version der CPU gewünscht wird. Eine der zu treffenden Schlüsselentscheidungen beim Entwurf einer neuen und leistungsfähigeren Version einer CPU ist, ob der Objektcode mit der alten CPU kompatibel bleiben soll oder nicht. Der Ausdruck "Objektcode- Kompatibilität", wie er in diesem Text verwendet wird, ist eine "alles oder nichts"-Entscheidung der neuen CPU. Das heißt, entweder kann die für die alte CPU in Maschinensprache geschriebene Software auf der neuen CPU laufen (und die selben Ergebnisse liefern) oder nicht. Somit müssen für ein für die alte CPU in Maschinensprache geschriebenes Softwareprogramm alle Unterschiede zwischen der alten CPU und der neuen CPU vollständig klar sein.
  • Eine neue CPU, die objektcode-kompatibel mit der alten CPU entworfen wird, hat einen sehr wichtigen Vorteil. Der Vorteil besteht darin, daß für die alte CPU geschriebene Software unmittelbar auf die neue CPU übertragen werden kann. Kunden, die die alte CPU gekauft und verwendet hatten, können einfach zur Nutzung der neuen, leistungsstärkeren CPU überwechseln, und die Kunden können sicher sein, daß die Software, die sie auf der alten CPU verwendet hatten, ebenso auf der neuen CPU laufen wird. Dem Kunden entstehen somit durch das Ändern oder Neuschreiben von Software zur Verbesserung für eine leistungsfähigere CPU keine Kosten. Die Entwicklung einer neuen und leistungsfähigeren CPU, die objektcode-kompatibel mit einer alten CPU ist, erlaubt es den Kunden, ohne Ausgaben und Risiken durch Einfügen von Änderungen in die Software mit einer leistungs fähigeren CPU aufzurüsten.
  • Eine Möglichkeit, eine neue CPU leistungsfähiger zu machen, ist das Erweitern von einem oder mehreren Register durch das Vergrößern der Anzahl der Bits in den Registern, wie zum Beispiel das Vergrößern eines Indexregisters von 8 auf 16 Bit. Das Indexregister wird beim indizierten Adreßmodus verwendet. Dieser indizierte Adreßmodus wird normalerweise verwendet, um auf Tabellen mit Daten im Speicher zuzugreifen. Durch das Vergrößern des Indexregisters von 8 auf 16 Bit wird der Speicherplatz, auf den die CPU zugreifen und den sie verwenden kann, erheblich vergrößert. Tatsächlich gibt es manche Kunden mit neuen Produkten, die die Erweiterung des Indexregisters von 8 auf 16 Bit unbedingt wollen, um neue Produktmerkmalen zu ermöglichen.
  • Allgemein wird im indizierten Adreßnodus der im Indexregister gespeicherte Wert als ein Zeiger auf den Anfang einer in sequentiellen Speicherplätzen des Speichers gespeicherten Tabelle von Datenwerten verwendet. Ein Offset-Wert, der normalerweise als Teil einer Anweisung enthalten ist, wird dann zu dem Wert im Jndexregister hinzugefügt, um auf einen bestimmten Speicherplatz in der Tabelle der Datenwerte zuzugreifen. Es gibt jedoch noch verschiedene andere Arten, wie ein Indexregister verwendet werden kann. Indizierte Adreßmoden sind in der Fachwelt allgemein bekannt.
  • Das einfache Vergrößern des Indexregisters von 8 Bit in der alten CPU auf 16 Bit in der neuen CPU würde die Objektcode- Kompatibilität zerstören, weil diverse für die alte CPU geschriebene Programme andere Resultate ergeben würde, wenn sie von der neuen CPU ausgeführt würden. Ein Softwareprogramm zum Beispiel, das das Indexregister heraufsetzte, würde, wenn das Register den Wert $FF enthält, beim 8-Bit Registers der alten CPU den Überlauf in den Wert $00 verursachen, beim 16-Bit Register der neuen CPU würde dieselbe Software den Wert statt dessen auf $0100 heraufsetzen. Durch das einfache Vergrößern des Indexregisters von 8-Bit auf 16- Bit in der neuen CPU wird die Objektcode-Kompatibilität also zerstört.
  • Obwohl man die Größe eines Registers vergrößern oder erweitern kann und gleichzeitig die Objektcode-Kompatibilität erhalten kann, erfordert dies viele. neuen Anweisungen und notwendigerweise entsprechende Schaltungen zur Implementierung der neuen Anweisungen. Durch eine neue doppelte Anweisung für jede alte Anweisung, die das erweiterbare Register verwendet oder betrifft, ist es bei der neuen CPU möglich, die Größe eines Registers zu erweitern und gleichzeitig objektcode-kompatibel zu bleiben. Die erste Menge von Anweisungen stimmt mit den Anweisungen der alten CPU überein (d.h. sie verwenden und betreffen nur 8 Bit des erweiterbaren Registers), und sie erhalten somit die Objektcode-Kompatibilität. Die zweite Menge von Anweisungen ist eine Verdopplung; die zweite Menge führt dieselben Funktionen aus wie die erste Menge von Anweisungen, verwendet jedoch alle 16 Bits des erweiterbaren Registers.
  • Im Fall eines Indexregisters gibt es eine bestimmte Anzahl von Anweisungen, die das Indexregister verwenden oder betreffen. Das Hinzufügen einer Menge von doppelten Anweisungen für alle Anweisungen, die das Indexregister verwenden oder betreffen, würde daher zu einer untragbar starken Vergrößerung des Schaltungsaufwands führen.
  • Es wird daher angestrebt, eine leistungsfähigere CPU zu entwerfen, die durch das Hinzufügen von so wenig wie möglich zusätzlichen Schaltungen und Aufwand mit der alten CPU objektcode-kompatibel ist.
  • Ein Datenverarbeitungssystem gemäß dem Oberbegriff von Anspruch 1 ist aus der Patentschrift EP A 0 503 514 bekannt.
  • Aus der Patentschrift US A 4 040 035 ist eine Mikroprozessor- Architektur mit einem Indexregister bekannt, das mit ersten und zweiten Abschnitten eines Adreß- und eines Datenbusses verbunden ist, also ein Indexregister, das zwei Abschnitte erfordert.
  • Zusammenfassung der Erfindung
  • Gemäß einem ersten Aspekt der Erfindung wird ein Datenverarbeitungssystem nach Anspruch 1 geschaffen.
  • Gemäß einem zweiten Aspekt der Erfindung wird ein Verfahren zum Erweitern einer ersten Menge von Anweisungen eines vorher existierenden Datenverarbeitungssystems zu einer zweiten Menge von Anweisungen zur Verwendung in einem Datenverarbeitungssystem nach Anspruch 6 vorgeschlagen.
  • Für den Fachmann wird die vorliegende Erfindung in der folgenden ausführlichen Beschreibung zusammen mit den beigefügten Zeichnungen erläutert.
  • Kurze Beschreibung der Zeichnungen
  • Fig. 1 zeigt als Blockdiagramm ein Datenverarbeitungssystem 10 gemäß einer Ausführungsform der vorliegenden Erfindung,
  • Fig. 2 zeigt als Blockdiagramm eine Zentraleinheit (CPU) 12 aus Fig. 1 gemäß einer Ausführungsform der vorliegenden Erfindung,
  • Fig. 3 zeigt als Blockdiagramm einen Teil einer Ausführungseinheit 56 aus Fig. 2 gemäß einer Ausführungsform der vorliegenden Erfindung,
  • Fig. 4 zeigt als Blockdiagramm ein 8-Bit-Indexregister 302 nach dem Stand der Technik,
  • Fig. 5 zeigt als Blockdiagramm ein 16-Bit-Indexregister 304, das durch die Verkettung der (oberen) Indexregisterschaltung 205 und der (unteren) Indexregisterschaltung 212 gebildet wird,
  • Fig. 6 zeigt als Tabelle den Einfluß, den bestimmte Gruppen von alten und neuen Anweisungen auf die Teile 205 und 212 des Indexregisters haben, und
  • Fig. 7 zeigt als Tabelle eine Beschreibung der neuen Anweisungen, die das (obere) Indexregister ändern können.
  • Beschreibung der bevorzugten Ausführungsform
  • Es wurde ein kostengünstigerer Weg gebraucht, um die Länge eines Registers zu erweitern und gleichzeitig die Objektcode- Kompatibilität zu erhalten. Für jede der alten Anweisungen, die das Indexregister betrafen, eine neue 16-Bit Anweisung hinzuzufügen, war zu aufwendig.
  • Der Ausdruck "erweiterbares Register", wie er in dieser Anmeldung verwendet wird, bezeichnet ein Register, dessen Länge erweitert werden kann. Der Ausdruck "Größe" in Bezug auf ein Register wird mit der gleichen Bedeutung wie der Ausdruck "Länge" verwendet.
  • Die vorliegende Erfindung fügt zu dem existierenden Indexregister ein oberes Byte hinzu. Bei der vorliegenden Erfindung werden sowohl alle Anweisungen der alten CPU verwendet als auch als einige wenige neue Anweisungen, die das neue obere Byte des Indexregisters verändern können, hinzugefügt. Zu beachten ist, daß alle Anweisungen der alten CPU genau den gleichen hexadezimalen Betriebscode haben und die wenigen neuen Anweisungen Betriebscodes haben, die in der alten CPU nicht definiert waren.
  • Beachtet werden sollte, daß in der vorliegenden Erfindung einige der Anweisungen aus der alten CPU (wie in der alten CPU) nur 8 Bit des Indexregisters verwenden, wobei andere Anweisungen der alten CPU dahingehend modifiziert wurden, (anders als in der alten CPU) alle 16 Bits des Indexregisters zu verwenden. Obwohl einige der alten Anweisungen alle 16 Bit eines Indexregisters verwenden, wird die Objektcode-Kompatibilität trotzdem erhalten.
  • Das neue obere Byte des Indexregisters wird beim Reset auf den Wert $00 initialisiert, und nur die wenigen neuen Anweisungen können das neue obere Byte des Indexregisters ändern. Keine der alten Anweisungen, die das Indexregister ändern, haben Einfluß auf das neue obere Byte. Man sollte jedoch beachten, daß alle indizierten Anweisungen des Adreßmodus, gleichgültig ob alt oder neu, alle 16 Bit des Indexregisters einschließlich des neuen oberen Bytes verwenden. Alte indizierte Anweisungen des Adreßmodus, die nur 8 Bit des Indexregisters in der alten CPU verwenden, nutzen nun alle 16 Bit des Indexregisters der neuen CPU.
  • Wenn nur alte Anweisungen verwendet werden, bleibt die Objektcode-Kompatibilität jedoch erhalten, weil das neue obere Byte des Indexregisters stets $00 enthält, und die Ergebnisse von allen Arbeitsschritten der Indexadressierung, die das 8-Bit Indexregister mit dem Wert $xy verwenden, mit denen der entsprechenden Arbeitsschritte der Indexadressierung, die das gesamte 16-Bit Indexregister mit den Wert $00xy verwenden, übereinstimmen.
  • Wenn jedoch ein Kunde bereit ist, eine neue Software in Maschinencode mit den neuen Anweisungen zu schreiben, kann der Kunde die Vorteile eines vollständigen 16-Bit Indexregisters und des vergrößerten Speicherplatzes, auf den die CPU im indizierten Adreßmodus zugreifen kann, ausnutzen.
  • Durch die vorliegende Erfindung kann daher eine neue CPU 12 mit einem erweiterbaren Indexregister entworfen werden. Die neue CPU 12 ist objektcode-kompatibel mit der alten CPU mit 8-Bit Indexregister, und gleichzeitig kann das Indexregister der neuen CPU 12 wirksam auf 16 Bit erweitert werden, wenn neue Anweisungen verwendet werden. Dadurch kann der Nutzer entweder die für die alte CPU und einem funktionsfähigen 8-Bit-Indexregister geschriebene Software in Maschinensprache verwenden oder eine neue Software in Maschinensprache für die neue CPU 12 mit einem funktionsfähigen 16- Bit Indexregister schreiben.
  • Die Ausdrücke "setzen" und "negieren" werden in Bezug auf Anderungen eines Signals, eines Zustandsbits oder einer vergleichbaren Vorrichtung in den Zustand logisch Wahr beziehungsweise logisch Falsch verwendet. Wenn der logische Zustand Wahr den logischen Pegel Eins hat, dann hat der Zustand logisch Falsch den logischen Pegel Null, und wenn der logische Zustand Wahr den logischen Pegel Null hat, dann liegt der logische Zustand Falsch auf dem logischen Pegel Eins.
  • Der Ausdruck "Bus" wird zur Bezeichnung von mehreren Signalen verwendet, die zur Übertragung von einer oder mehreren verschiedenen Arten von Informationen, wie etwa Daten, Adressen, Steuersignalen oder Zustandssignalen verwendet werden können. Das Zeichen "$" vor einer Zahl bedeutet, daß die Zahl hexadezimal also zur Basis 16 dargestellt ist.
  • Beschreibung der Figuren
  • Fig. 1 zeigt eine Ausführungsform eines Datenverarbeitungssystems 10. Die Datenverarbeitungsschaltungen 10 enthalten eine Schaltung 12 für die Zentraleinheit (CPU), eine Schaltung 14 für den Systemintegrationsabschnitt, eine Schaltung 16 für den seriellen Abschnitt, eine Schaltung 18 für den Direktzugriffsspeicher (RAM), eine Festwertspeicherschaltung 20(ROM), eine Ausweichspeicherschaltung 22 (z.B. ein elektrisch löschbarer programmierbarer Festspeicher (EEPROM)), eine Logikschaltung 24 für eine Parallelschnittstelle, eine Schnittstellenschaltung 26 für den äußeren Bus, eine Schaltung 28 für den Taktgeberabschnitt und eine Schaltung 30 für einen direkten Speicherzugriff (DMA).
  • Alle Schaltungen von der CPU 12, der Systemintegrationsschaltung 14, der seriellen Schaltung 16, dem RAM 18, dem ROM 20, der Ausweichspeicherschaltung 22, der Port-Logikschaltung 24, der Schnittstellenschaltung für den äußeren Bus 26, der Taktgeberschaltung 28 bis zur DMA-Schaltung 30 sind bidirektional mit einem Informationsbus 32 verbunden. Die CPU 12 und der Systemintegrationsabschnitt 14 sind bidirektional über einen Bus 34 verbunden. Außerdem ist die CPU 12 mit dem DMA 30 über einen Bus 36 verbunden.
  • Der Systemintegrationsabschnitt 14 kann äußere Signale zu und vom Datenverarbeitungssystem 10 über die Anschlüsse 38 der integrierten Schaltung empfangen und übermitteln. Der serielle Abschnitt 16 kann äußere Signale zu und vom Datenverarbeitungssystem über die Anschlüsse 40 der integrierten Schaltung empfangen und übermitteln. Abhängig von der Art des Speichers kann der Ausweichspeicher 22 bei Bedarf äußere Signale zu und vom Datenverarbeitungssystem 10 über die Anschlüsse 42 der integrierten Schaltung empfangen und übermitteln. Die Logik 24 der Parallelschnittstelle kann äußere Signale zu und vom Datenverarbeitungssystem 10 über die Anschlüsse 44 der integrierten Schaltung empfangen und übermitteln. Die Schnittstelle 26 mit dem äußeren Bus kann äußere Signale zu und vom Datenverarbeitungssystem 10 über die Anschlüsse 46 empfangen und übermitteln, und der Taktgeberabschnitt 28 kann äußere Signale zu und vom Datenverarbeitungssystem 10 über die Anschlüsse 48 der integrierten Schaltung empfangen und übermitteln.
  • Die in Fig. 1 gezeigte Ausführungsform des Datenverarbeitungssystems 10, veranschaulicht eine spezielle Mikrosteuerung innerhalb einer Familie von Mikrosteuerungen. Weil bei Mikrosteuerungen derselben Familie im allgemeinen jeweils unterschiedliche Peripherieeinheiten auf dem Chip untergebracht sind, stellt Fig. 1 nur eine Ausführungsform eines Datenverarbeitungssystems 10 dar. Zum Beispiel kann es sein, daß andere Ausführungsformen eines Datenverarbeitungssystems 10 kein ROM 20, keine äußere Busschnittstelle 26 oder kein DMA 30 haben. Andere Ausführungsformen des Datenverarbeitungssystens 10 haben möglicherweise weniger, mehr oder andere Peripherieeinheiten, als in Fig. 1 gezeigt.
  • Fig. 2 zeigt als Blockdiagramm eine Zentraleinheit (CPU) 12 aus Fig. 1 gemäß einer Ausführungsform der vorliegenden Erfindung. Wie in Fig. 2 gezeigt, kann die CPU 12 konzeptionell in drei Hauptbestandteile unterteilt werden: eine Steuereinheit 54, eine Ausführungseinheit 56 und eine Ablaufsteuerung 58.
  • Die Steuereinheit 54 enthält eine programmierbare Steuerlogikmatrix 60 (Steuer-PLA) und eine wahlfreie Steuerlogikschaltung 62. In der Steuereinheit 54 ist die Steuer-PLA 60 mit der wahlfreien Steuerlogikschaltung 62 verbunden, um mehrere, insgesamt als Steuer-PLA-Signale bezeichnete Signale zu übermitteln. Die wahlfreie Steuerlogik 62 ist mit der Ausführungseinheit 56 verbunden, um mehrere getaktete Steuersignale zu übermitteln und um mehrere Zustandssignale zu erhalten. Die Steuer-PLA 60 ist mit der Ablaufsteuerung 58 verbunden, um als Ablaufsteuerungseingangssignale bezeichnete Signale zu übertragen und um als Ablaufsteuerungsausgangssignale bezeichnete Signale zu empfangen. Die Ablaufsteuerung 58 ist mit dem Informationsbus 32 verbunden, um Anweisungen zu empfangen. Die Ausführungseinheit 56 ist mit dem Informationsbus 32 bidirektional verbunden. Einige Ausführungsformen der Ablaufsteuerung 58 können Dekodierer 59 enthalten.
  • Fig. 3 zeigt eine Ausführungsform eines Teils der Ausführungseinheit 56 aus Fig. 2. Die Programmzähler (hoch)/Inkrementierer Schaltung 200 erhält Informationen vom Bus 202 und liefert Informationen an den Bus 204. Die (obere) Indexregisterschaltung 205 erhält Informationen vom Bus 202 und liefert Informationen an den Bus 204. Die (untere) Programmzählerregisterschaltung 206 erhält Informationen vom Bus 202 und liefert Informationen an den Bus 204. Die Stapelzeigerregisterschaltung 208 erhält Informationen vom Bus 202 und liefert Informationen an den Bus 204. Die Zwischenspeicherschaltung 210 erhält Informationen vom Bus 202 und liefert Informationen an den Bus 204. Die (untere) Indexregisterschaltung 212 erhält Informationen vom Bus 202 und liefert Informationen an den Bus 204.
  • Die Schaltung 214 des temporären (oberen) Adreßregisters erhält Informationen vom Bus 202 und liefert Informationen an den Bus 216. Die Schaltung 218 des temporären (unteren) Adreßregisters erhält Informationen vom Bus 202 und liefert Informationen an den Bus 216. Die Datenbus-Schnittstellenschaltung 220 erhält Informationen vom Bus 202 und liefert Informationen an den Bus 216. Die Konstantenerzeugerlogikschaltung 222 liefert Informationen an den Bus 204.
  • Die arithmetische Logikeinheit (ALU) 224 erhält Daten vom Bus 204 und vom Bus 216. Die ALU 224 ist in beide Richtungen verbunden mit der Flag-Schaltung 226. Die Flag-Schaltung 226 ist in beide Richtungen mit dem Bedingungscoderegister 228 verbunden. Das Bedingungscoderegister 228 erhält Informationen vom Bus 202 und liefert Informationen an den Bus 216. Der Ausgang der ALU 224 ist mit der Schiebeschaltung 230 verbunden. Die Schiebeschaltung 230 liefert Informationen an den Bus 202.
  • Der (obere) Programmzähler /das Inkrementiererregister 200, das (obere) Indexregister 205 und das (obere) Register 214 für temporäre Adressen liefern jeweils Informationen an den Hoch-Bus 232. Die (obere) Adreßbuspufferschaltung 234 erhält Informationen vom Hoch-Bus 232 und liefert Informationen an den (oberen) Programmzähler /das Inkrementiererregister 200. Der (obere) Adreßbuspuffer 234 ist mit dem (oberen) Adreßbus 236 verbunden. Der (obere) Adreßbus 236 ist mit dem Informationsbus 32 verbunden.
  • Das (untere) Programmzählerregister 206, das (untere) Register 218 für temporäre Adressen und das Stapelzeigerregister 208 liefern jeweils Informationen an den Niedrig-Bus 238. Die (untere) Adreßbuspufferschaltung 240 erhält Informationen vom Niedrig-Bus 238. Der (niedrige) Adreßbuspuffer 240 ist mit dem (unteren) Adreßbus 242 verbunden. Der (untere) Adreßbus 242 ist mit dem Informationsbus 32 verbunden.
  • Der Niedrig-Bus 238 erhält Informationen vom Datenbus 244. Die Datenbusschnittstelle 220 erhält Informationen von und liefert Informationen an den Datenbus 244. Der Datenbus 244 ist mit dem Informationsbus 32 verbunden. In einer Ausführungsform der vorliegenden Erfindung sind der (obere) Adreßbus 236, der (untere) Adreßbus 242 und der Datenbus 244 letztlich Teile des Informationsbusses 32.
  • Fig. 4 zeigt als Blockdiagramm ein 8-Bit Indexregister 302 nach dem Stand der Technik.
  • Fig. 5 zeigt als Blockdiagramm ein 16-Bit Indexregister 304, das aus der Verkettung der (oberen) Indexregisterschaltung 205 und der (unteren) Indexregisterschaltung 212 gebildet ist. Die (obere) Indexregisterschaltung 205 und die (untere) Indexregisterschaltung 212 sind jeweils ein 8-Bit Teilregister des 16-Bit Indexregisters 304. Sowohl die (obere) Indexregisterschaltung 205 als auch die (untere) Indexregisterschaltung 212 sind in der Ausführungseinheit 56 in Fig. 3 enthalten.
  • Fig. 6 zeigt als Tabelle die Wirkung, die bestimmte Gruppen von alten und neuen Anweisungen auf die Teile 205 und 212 des Indexregisters in der neuen CPU 12 haben.
  • Fig. 7 zeigt als Tabelle eine Beschreibung der neuen Anweisungen, die in der Lage sind das (obere) Indexregister 205 in der neuen CPU zu verändern.
  • Die Arbeitsweise der bevorzugten Ausführungsform
  • Die vorliegende Erfindung erlaubt die Entwicklung einer neuen leistungsfähigeren CPU, die objektcode-kompatibel mit der alten CPU ist und die gleichzeitig so wenig Schaltungen und Aufwand wie möglich hinzufügt. Die neue CPU 12 stellt ein erweiterbares Register bereit, das in einer Ausführungsform ein von 8 Bit auf 16 Bit erweiterbares Indexregister ist. Das erweiterbare Indexregister der neuen CPU 12 kann wie ein 8-Bit Register arbeiten, um die Objektcode-Kompatibilität zu wahren, es kann aber auch erweitert werden und als ein 16-Bit Register genutzt werden, um die Möglichkeiten des indizierten Adreßmodus in der neuen CPU 12 zu vergrößern.
  • Fig. 6 zeigt als Tabelle die Wirkung, die bestimmte Gruppen von alten und neuen Anweisungen auf die Teile 205 und 212 des Indexregisters in der neuen CPU 12 haben. "Alte" Anweisungen sind Anweisungen, die für die alte CPU definiert wurden und die die alte CPU ausführen konnte. Jede Anweisung aus der Menge der Anweisungen für die alte CPU ist daher eine "alte" Anweisung. "Neue" Anweisungen sind Anweisungen, die für die neue CPU 12 definiert sind und die die neue CPU 12 ausführen kann, die jedoch für die alte CPU nicht definiert waren. Die Menge der Anweisungen für die neue CPU 12 enthält alle "alten" Anweisungen und alle "neuen" Anweisungen, die hinzugefügt wurden, um die Möglichkeiten der neuen CPU 12 zu vergrößern.
  • Unter der Überschrift "ALTE ANWEISUNGEN" gibt es zwei Aussagen, die die Wirkung betreffen, die alte Anweisungen auf die Teile 205 und 212 des Indexregister in der neuen CPU haben. Das (obere) Indexregister 205 kann von den alten Anweisungen nicht verändert werden. Das (untere) Indexregister 212 jedoch kann von den alten Anweisungen verändert werden; und das (obere) Indexregister 205 zusammen mit dem (unteren) Indexregister 212 werden als verkettetes Indexregister 304 im indizierten Adreßmodus verwendet.
  • Unter der Überschrift "NEUE ANWEISUNGEN" gibt es zwei Aussagen, die die Wirkung betreffen, die neue Anweisungen auf die Teile 205 und 212 des Indexregisters in der neuen CPU 12 haben. Sowohl das (obere) Indexregister 205 als auch das (untere) Indexregister 212 können von den neuen Anweisungen verändert werden. Und das (obere) Indexregister 205 wird zusammen mit dem (unteren) Indexregister 212 als ein verkettetes Indexregister 304 im indizierten Adreßmodus verwendet.
  • In der neuen CPU 12 wird ein oberes Byte, nämlich das (obere) Indexregister 205, zu dem bestehenden Indexregister hinzugefügt und gleichzeitig die Objektcode-Kompatibilität bewahrt. Die alte CPU hatte ein Indexregister 302 (vergl. Fig. 4), das der (unteren) Indexregisterschaltung 212 (vergl. Fig. 3) direkt entsprach. Im Gegensatz zur alten CPU jedoch besitzt die neue CPU 12 eine weitere (obere) Indexregisterschaltung 205 (vergl. Fig. 3), die mit der (unteren) Indexregisterschaltung 212 verkettet werden kann, um im Endeffekt ein 16-Bit Indexregister 304 (vergl. Fig. 5) zu bilden.
  • Die neue CPU 12 verwendet sowohl alle Anweisungen der alten CPU als auch einige wenige hinzugefügte neue Anweisungen, die das neue obere Byte des Indexregisters 304 (vergl. Fig. 7) verändern können. Zu beachten ist, daß alle alten Anweisungen genau denselben hexadezimalen Betriebscode wie in der alten CPU haben und die neuen Anweisungen Betriebscodes haben, die in der alten CPU nicht definiert waren.
  • In einer Ausführungsform der vorliegenden Erfindung stammt die alte CPU aus der MC68HC05-Mikrosteuerungsfamilie, erhältlich bei Motorola, Inc. Austin, Texas. Eine vollständige Liste der alten Anweisungen ist erhältlich in den diversen Betriebsanleitungen für die MC68HC05-Familie, die von Motorola Inc. veröffentlicht wurden. Einige der alten Anweisungen, die in der Lage waren das Indexregister 302 (vergl. Fig. 4) zu verändern, sind zum Beispiel folgende: die "DECX"-Anweisung, die Eins von Inhalt des Indexregisters 302 abzieht, die "INCX"-Anweisung, die Eins zum Inhalt des Indexregisters 302 hinzufügt, die "LDX"-Anweisung, die einen unmittelbaren Wert oder den Inhalt des angegebenen Speicherplatzes in das Indexregister 302 lädt, die "LSLX"-Anweisung, die alle Bits des Indexregisters 302 um eine Stelle nach links verschiebt und eine Null in das nullte Bit schiebt, die "NEGX"-Anweisung, die den Inhalt des Indexregisters 302 durch seine Zweierkomplementwert ersetzt, und die "TAX"-Anweisung, die das Indexregister mit dem Inhalt des Zwischenspeichers lädt.
  • Es ist wichtig, die Ergebnisse zu verstehen, die dadurch erzeugt werden, daß den alten und neuen Anweisungen ermöglicht wird, die Teile 205 und 212 des Indexregisters auf die in Fig. 6 gezeigte Weise zu beeinflussen. In der neuen CPU 12 verwenden einige der alten Anweisungen (genau wie in der alten CPU) nur 8 Bit des Indexregisters, die übrigen alten Anweisungen wurden jedoch modifiziert, damit sie (im Unterschied zur alten CPU) alle 16 Bit des Indexregisters verwenden. Obwohl einige von den alten Anweisungen alle 16 Bits des Indexregisters verwenden, wird, wie nun beschrieben werden wird, trotzdem die Objektcode-Kompatibilität erhalten.
  • Das neue obere Byte des Indexregisters, nämlich das (obere) Indexregister 205 wird beim Reset auf den Wert $00 initialisiert, und nur die wenigen in Fig. 7 gezeigten neuen Anweisungen sind in der Lage, das neue obere Byte des Indexregisters zu ändern (vergl. Fig. 5). Keine der alten Anweisungen, die das Indexregister ändern, hat eine Wirkung auf das neue obere Byte. Jede Software, die für die Ausführung auf der alten CPU geschrieben wurde, wird daher keine Wirkung auf das neue obere Byte des Indexregisters haben. Wenn also für die alte CPU geschriebene Software (die daher nur alte Anweisungen verwendet) von der neuen CPU 12 ausgeführt wird,. wird das neue obere Byte des Indexregisters niemals modifiziert oder verändert und wird stets auf dem Reset-Wert $00 bleiben.
  • Es sollte jedoch beachtet werden, daß alle Anweisungen des indizierten Adreßmodus, die das Indexregister nicht ändern, ob alt oder neu, die gesamten 16 Bit einschließlich des neuen oberen Bytes des Indexregisters 304 verwenden. Die alten Anweisungen des mdizierten Adreßmodus, die in der alten CPU nur ein 8-Bit Indexregister verwendeten, verwenden daher nun die gesamten 16 Bit des Indexregisters 304 der neuen CPU 12.
  • Die Objektcode-Kompatibilität wird jedoch erhalten, weil das neue obere Byte des Indexregisters stets $00 enthält, wenn alte Anweisungen verwendet werden. Der 8-Bit-Wert $xy und der 16-Bit- Wert $00xy liefern dasselbe Ergebnis, wenn sie verwendet werden, um eine wirksame Adresse in einer indizierten Adreßmodusanweisung zu berechnen, die das Indexregister nicht ändert. Alle Indexadressierungsarbeitsschritte in der alten CPU, die das Indexregister nicht geändert hatten und die nur ein 8-Bit Indexregister mit dem Wert $xy verwendeten, erzeugen bei den entsprechenden Indexadressierungsarbeitsschritten in der neuen CPU 12, die das gesamte 16-Bit- Indexregister mit dem Wert $00xy verwenden, identische Ergebnisse. Die Objektcode-Kompatibilität wird daher selbst dann erhalten, wenn einige alte Anweisungen nun ein 16-Bit-Register statt eines 8-Bit- Registers verwenden.
  • Wenn jedoch ein Kunde unter Verwendung der neuen Anweisungen eine neue Software schreiben will, kann der Kunde die Vorteile eines vollen 16-Bit Indexregisters und des damit zusammenhängenden Zuwachses an Tabellengröße im Speicher, auf die von der CPU im indizierten Adreßmodus zugegriffen werden kann, nutzen. Der Kunde kann die in Fig. 7 gezeigten neuen Anweisungen verwenden, um den $00 Wert zu ändern, der ursprünglich im oberen Byte des Indexregisters 304 gespeichert ist.
  • Zu beachten ist, daß andere Ausführungsformen der vorliegenden Erfindung den Reset-Wert $00 des oberen Bytes nicht unbedingt brauchen, statt dessen kann es jedoch notwendig sein, wenn die Software dies erfordert, daß der Nutzer einen Wert $00 in das obere Byte schreibt. Zum Beispiel kann es sein, daß für Software, die niemals das Indexregister 304 verwendet, kein Wert $00 in das Indexregister 304 geschrieben werden muß.
  • Fig. 7 zeigt als Tabelle eine Beschreibung der neuen Anweisungen, die in der Lage sind, das (obere) Indexregister 205 in der neuen CPU 12 zu ändern. Mehr, weniger oder andere neue Anweisungen können in anderen Ausführungsformen der vorliegenden Erfindung verwendet werden. Die vorliegende Erfindung setzt keine Einschränkungen oder Grenzen hinsichtlich Art oder Funktion von jeder neuen Anweisung. Mindestens eine Anweisung, die der Nutzer verwenden kann, um den im neuen oberen Byte des Indexregisters gespeicherten Wert zu ändern, wäre jedoch wünschenswert.
  • Zu beachten ist, daß es zwei Arten von neuen Anweisungen gibt, die das obere Byte des Indexregisters in der neuen CPU 12 ändern. Die erste Art von neuen Anweisungen ist in der Lage, nur das obere Byte zu ändern und hat keine Wirkung auf das niedrige Byte (z.B. die PULH Anweisung). Die zweite Art von neuen Anweisungen ist in der Lage, sowohl das obere Byte als auch das niedrige Byte zu ändern (z.B. die AIX, CBEQ, LHX, MOV und TSX Anweisungen).
  • Die vorliegende Erfindung macht nur zwei Einschränkungen hinsichtlich der Ausführung von alten Anweisungen durch die neue CPU 12: (1) bei alten Anweisungen, die das Indexregister 302 in der alten CPU änderten, verhält sich das (untere) Indexregister 205 genauso und ergibt die Speicherung desselben Wertes wie im Indexre gister 302, um die Ojektcode-Kompatibilität zu erhalten, und (2) alle Anweisungen des indizierten Adreßmodus, neue ebenso wie alte, verwenden alle 16 Bit des Indexregisters 304, damit nicht alle Anweisungen des indizierten Adreßmodus verdoppelt werden müssen.
  • Der Betrieb der Schaltungsausführung der vorliegenden Erfindung soll nun beschrieben werden.
  • Das Datenverarbeitungssystem 10 in Fig. 1 veranschaulicht eine mögliche MCU aus einer MCU Familie. Weil MCUs derselben Familie verschiedene Peripherieeinheiten auf dem Chip haben, können andere Ausführungsformen des Datenverarbeitungssystems 10 ohne ein ROM 2Q, ohne äußere Busschnittstelle 26 oder ohne DMA 30 sein. Tatsächlich können andere Ausführungsformen des Datenverarbeitungssystems 10 weniger, mehr oder andere Peripherieeinheiten als die in Fig. 1 gezeigten haben.
  • Während des Betriebs der Ausführungsform der in Fig. 1 gezeig ten Erfindung, wird der Systemintegrationsabschnitt 14 verwendet, um verschiedene Aufgaben für das Datenverarbeitungssystem 10 zu übernehmen. Der Systemintegrationsabschnitt 14 liefert allgemein mehrere Steuerinformationen, um den Betrieb des Datenverarbeitungssystems 10 sowohl zu ermöglichen als auch zu unterbrechen, um Taktsteuerung zu liefern und die Verarbeitung von Exceptions zu leisten. Der Systemintegrationsabschnitt 14 kann mit der CPU 12 direkt über den Bus 34, mit einem äußeren Nutzer über mehrere Anschlüsse 38 der integrierten Schaltung und mit jeder von mehreren übrigen Komponenten des Datenverarbeitungssystems 10 über den Informationsbus 32 verbunden sein.
  • Im Datenverarbeitungssystem 10 erlaubt die DMA 30 den direkten Austausch von Daten zwischen den Speichern innerhalb des Datenverarbeitungssystems 10 und mehreren (nicht gezeigten) Peripheriegeräten. Wenn ein Nutzer ein schnelles Speicherzugriffsverfahren braucht, kann die DMA 30 innerhalb des Datenverarbeitungssystems 10 wahlfrei ausgeführt werden. Die Verwendung und Ausführung von Schaltungeh für direkten Speicherzugriff sind in der Technik der Datenverarbeitung allgemein bekannt und werden nicht ausführlicher erläutert.
  • Der Taktgeberabschnitt 28 führt mehrere Taktfunktionen aus, die auf einen frei laufenden 16-Bit-Zähler beruhen. Wenn er über mehrere Anschlüsse 48 der integrierten Schaltung freigegeben wird,
  • kann der Taktgeberabschnitt 28 eine Eingabe-Erfassungsfunktion, eine Ausgangs-Vergleichsfunktion, ein Echtzeit-Interrupt oder eine "Computer arbeitet korrekt"-Wachhundfunktion erfüllen. Die Ausführung und Verwendung von jeder dieser Funktionen ist in der Datenverarbeitungstechnik allgemein bekannt und wird nicht ausführlicher erörtert. Eine modifizierte Art des Taktgeberabschnitts 28 ist in der Mikrosteuerung auf dem Motorola-Chip MC68HC11, erhältlich bei Motorola Inc. Austin, Texas, ausgeführt.
  • Die äußere Busschnittstelle 26 steuert den Empfang und die Übertragung von Adreß- und Datenwerten zwischen einem äußeren Nutzer oder äußeren Peripheriegerät und dem Datenverarbeitungssystem 10. Die äußere Busschnittstelle 26 tauscht über den Informationsbus 32 mehrere Adreß- und Datenwerte mit einem übrigen Teil des Datenverarbeitungssystens 10 aus.
  • Die Port-Logikschaltung 24 steuert den Betrieb und die Funktion von jeden einzelnen von mehreren Anschlüssen 44 der integrierten Schaltung. Die Port-Logikschaltung 24 kann die mehreren Anschlüsse 44 der integrierten Schaltung konfigurieren, um in einer ersten Betriebsart als Eingangs-/ Ausgangsanschlüsse für allgemeine Zwecke zu arbeiten. In einer zweiten Betriebsart kann die Port- Logikschaltung 24 jeden der mehreren Anschlüsse 44 der integrierten Schaltung verwenden, um Adressen- und Dateninformationen gemultiplext auszutauschen.
  • Das RAM 18, ROM 20 und der Ausweichspeicher 22 können zur Speicherung von Informationen wie etwa Softwareanweisungen in Maschinensprache, Datenwerte und Adreßwerte, die dann vom Datenverarbeitungssystem 10 benutzt werden, verwendet werden.
  • Der serielle Abschnitt 16 tauscht digitale Daten seriell zwischen dem Datenverarbeitungssystem 10 und einem äußeren Nutzer oder einem äußeren Peripheriegerät aus. Die seriellen digitalen Daten und geeignete Steuersignale werden über die mehreren Anschlüsse 40 der integrierten Schaltung ausgetauscht.
  • Fig. 2 zeigt die neue CPU 12 mit weiteren Einzelheiten. Die CPU 12 ist in wesentlichen in drei Hauptteile gegliedert. Die drei Hauptteile enthalten die Steuereinheit 54, die Ausführungseinheit 56 und die Ablaufsteuerung 58. Die Ablaufsteuerung 58 arbeitet zusammen mit der Steuer-PLA 60 als eine Zustandsmaschine, indem sie ausgehend sowohl vom gegenwärtigen Zusand der neuen CPU 12 als auch von der vorliegenden Anweisung, die über den Informationsbus 32 erhalten wurde, den nächsten Zustand der neuen CPU 12 bestimmen.
  • Einige Ausführungsformen der vorliegende Erfindung können einen Dekodierer 59 enthalten. Der Dekodierer 59 kann (wie gezeigt) ein Teil der Ablaufsteuerung 58 sein; alternativ kann er zwischen der Ablaufsteuerung 58 und der Steuer-PLA 60 geschaltet sein, oder er kann alternativ zwischen den Informationsbus 32 und der Ablaufsteuerung 58 geschaltet sein. Der Dekodierer 59 wird zum Dekodieren der über den Informationsbus 32 übermittelten Betriebscodes der Anweisungen verwendet. Wenn der Dekodierer 59 in der Ablaufsteuerung 58 enthalten ist, wird über die Ablaufsteuerungsausgangssignale der Ausgang des Dekodierers 59 an die Steuer-PLA 60 übermittelt.
  • Während des Betriebs der neuen CPU 12 erhält die Ablaufsteue rung 58 Anweisungen vom Informationsbus 32. Die Ablaufsteuerung 58 legt die Reihenfolge, in der die Anweisungen zur Steuereinheit 54 geleitet werden, fest. Die Anweisung wird an die Steuer-PLA 60 der Steuereinheit 54 über die Ablaufsteuerungsausgangssignale geliefert. Nach dem Erhalt der Anweisung stellt die Steuer-PLA 60 die mehreren Steuer-PLA-Signale für die wahlfreie Steuerlogik 62 bereit. Die logischen Zustände der Steuer-PLA-Signale werden von den logischen Zuständen der von der Steuer-PLA 60 erhaltenen Ablaufsteuerungsausgangssignale bestimmt.
  • Die Steuer-PLA 60 stellt ebenfalls die sequentiellen Eingangssignale für die Ablaufsteuerung 58 bereit, um eine Rückkopplungsinformation bezüglich des gegenwärtigen inneren Zustands der neuen CPU 12 und bezüglich des bei der Ausführung der gegenwärtigen Anweisung gemachten Fortschritts zu liefern. Die wahlfreie Steuer logik 62 liefert die Taktsteuerungsinformation an jeden der mehreren Steuer-PLA-Signale. Die wahlfreie Steuerlogik 62 gibt die mehreren getakteten Steuersignale an die Ausführungseinheit 56 aus.
  • Zu beachten ist, daß die Steuer-PLA 60 als jede Art von programmierbarer Matrix einschließlich jeder Art von Speicher oder jede Art von programmierbarer Logikmatrix ausgeführt sein könnte. Die Steuer-PLA 60 könnte auch als wahlfreie Logik ausgeführt sein und mit der wahlfreien Steuerlogik 62 verbunden sein.
  • Eine programmierbare Logikmatrix (PLA) benötigt allgemein weniger Fläche auf dem Halbleiter als ein Festspeicher (ROM). Es ist jedoch einfacher und schneller ein ROM kundenspezifisch anzufertigen als ein PLA. Weil dieselbe Steuer-PLA 60 für verschiedene Versionen der neuen CPU 12 verwendet werden soll, kann es vorteilhaft sein, die Steuer-PLA 60 als ein PLA auszuführen, um Fläche auf dem Halbleiter zu sparen.
  • Die getakteten Steuersignale werden zur Steuerung der Ausführungseinheit 56 verwendet. Die Ausführungseinheit 56 führt gesteuert von den getakteten Steuersignalen alle zur Ausführung der Anweisung nötigen Funktionen aus. Der Informationsbus 32 wird als Adreß- und Datenpfad verwendet, um die Register der Ausführungseinheit 56 zu lesen und zu beschreiben. Die Ausführungseinheit 56 liefert die mehreren Zustandssignale an die wahlfreie Steuerlogik 62, um der neuen CPU 12 den anliegenden Zustand zu melden. Die wahlfreie Steuerlogik 62 verwendet die logischen Zustände der Zustandssignale, um bei der Bestimmung der logischen Zustände der getakteten Steuersignale zu helfen.
  • Allgemeinen erhält und dekodiert die neue CPU 12 Anweisungen, stellt mehrere Steuersignale bereit, führt die Anweisungen in Abhängigkeit von den mehreren Steuersignalen aus und liefert dann Rückkopplungsinformationen bezüglich der Ausführung der Anweisung, so daß eine neue Anweisung empfangen und ausgeführt werden kann.
  • Fig. 3 zeigt einen Teil der Ausführungseinheit 56 mit weiteren Einzelheiten. Die Einzelheiten, wie die getakteten Steuersignale die Ausführungseinheit 56 steuern, sind nicht gezeigt. Die getakteten Steuersignale werden jedoch verwendet, um die Ausführungseinheit 56 wie nach dem Stand der Technik üblich zu steuern. Das heißt, die getakteten Steuersignale werden verwendet, um den Informationsfluß über die verschiedenen Busse und zu und von den verschiedenen Registern, Puffern und anderen in Fig. 3 gezeigten Schaltungen zu steuern.
  • Der indizierte Adreßmodus soll nun beschrieben werden. Viele CPUs haben die Fähigkeit, Anweisungen in einem indizierten Adreßmodus auszuführen. Obwohl der indizierte Adreßmodus sich von CPU zu CPU unterscheiden kann, bleiben einige der allgemeinen Prinzipien verhältnismäßig durchgängig gültig. Der indizierte Adreßmodus wird oft als Möglichkeit verwendet, bequem auf im Speicher gespeicherte Tabellen mit Informationen zuzugreifen.
  • Beim indizierten Adreßmodus wird der im einem Indexregister gespeicherte Wert allgemein als ein Zeiger. auf den Anfang einer in fortlaufenden Speicherplätzen im Speicher gespeicherten Tabelle von Datenwerten verwendet. Ein Offset-Wert, der allgemein als Teil einer Anweisung enthalten ist, wird dann zum Wert im Indexregister hinzu addiert, um auf einen bestimmten Speicherplatz in der Tabelle von Datenwerten zuzugreifen. Alternativ kann der Offset-Wert als ein Zeiger auf den Anfang einer Tabelle von Datenwerten verwendet werden, und das Indexregister kann die Verschiebung in die Tabelle enthalten. Es gibt verschiedene andere Wege, wie ein Indexregister verwendet werden kann. Die indizierten Adreßmoden sind dem normalen Fachmann allgemein bekannt.
  • Oft gibt es verschiedene Arten von indizierter Adressierung innerhalb des indizierten Adreßmodus. Der Einfachheit halber werden diese verschiedenen Arten von indizierten Adressierungen innerhalb des indizierten Adreßmodus "Sub-Moden" genannt. Als Beispiel werden die verschiedenen "Sub-Moden" innerhalb des indizierten Adreßmodus der MC68HC05 Mikrosteuerung beschrieben. Die MC6BHC05 Mikrosteuerung hat innerhalb des indizierten Adreßmodus drei "Sub-Moden": (1) kein Offset, (2) 8-Bit-Offset und (3) 16-Bit-Offset. Diese drei Sub-Moden innerhalb des indizierten Adreßmodus der MC68HC05 Mikrosteuerung werden nun beschrieben.
  • Im ersten Sub-Modus "kein Offset" wird der Wert des Indexregisters direkt als wirksame Adresse für die Anweisung verwendet. Im ersten Sub-Modus ist daher jede Anweisung eine Ein-Byte-Anweisung, in der das eine Byte der Betriebscode der Anweisung ist.
  • Im zweiten Süb-Modus "8-Bit-Offset" ist als Teil der Anweisung ein 8-Bit-Offset-Wert enthalten. Dieser 8-Bit-Offset-Wert wird zum Wert im Indexregister addiert, um die wirksame Adresse für die Anweisung zu erzeugen. Im zweiten Sub-Modus ist jede Anweisung eine Anweisung mit zwei Byte, in der das erste Byte der Betriebscode der Anweisung und das zweite Byte ein 8-Bit-Offset-Wert ist.
  • Im dritten Sub-Modus "16-Bit-Offset" ist als Teil der Anwei sung ein 16-Bit-Offset-Wert enthalten. Dieser 16-Bit-Offset-Wert wird zum Wert im Indexregister hinzugezogen, um die wirksame Adresse für die Anweisung zu erzeugen. Im dritten Sub-Modus ist daher jede Anweisung eine Anweisung mit drei Byte, bei denen das erste Byte der Betriebscode der Anweisung und das zweite zusammen mit dem dritten Byte ein 16-Bit-Offset-Wert ist.
  • In einer Ausführungsform hat die neue CPU 12 dieselben drei Sub-Moden innerhalb des indizierten Adreßmodus wie die MC68HC05 Mikrosteuerung, und alle von der neuen CPU 12 ausgeführten alten Anweisungen stammen von den Anweisungen der MC68HC05 Mikrosteuerung ab. Andere Ausführungsformen der vorliegenden Erfindung können mehr, weniger oder andere Sub-Moden innerhalb des indizierten Adreßmodus verwenden. Außerdem können andere Ausführungsformen der vorliegenden Erfindung den indizierten Adreßmodus anders definieren. In der Tat kann die vorliegende Erfindung für jeden Adreßmodus verwendet werden, der einen Registerwert als Teil der Berechnung einer für eine Anweisung wirksamen Adresse verwendet.
  • Der Betrieb der Ausführungseinheit 56 bei Anweisungen, die den indizierten Adreßmodus verwenden, soll nun beschrieben werden (vergl. Fig. 3). Zu beachten ist, daß nur die Schritte, die zur Bestimmung der wirksamen Adresse verwendet werden, im einzelnen beschrieben werden. Zugleich mit Anweisungen, die den indizierten Adreßmodus verwenden, werden auch andere Schritte, wie etwa das Heraufsetzten des (unteren) Programmzählerregisters 206, ausgeführt. Diese anderen Schritte jedoch werden nicht ausführlich beschrieben.
  • Im ersten Süb-Modus "kein Offset" wird der Wert im Indexregister direkt als die wirksame Adresse für die Anweisung verwendet. Unabhängig davon, ob die Anweisung eine alte Anweisung oder eine neue Anweisung ist, werden beide Bytes oder Teile des Indexregisters 304 nämlich das (obere) Indexregister 205 und das (untere) Indexregister 212 verwendet.
  • Weil das (untere) Indexregister 212 keinen direkten Zugriff auf den Informationsbus 32 hat, ist der erste Schritt, den im (unteren) Indexregister 212 gespeicherten Wert in das temporäre (untere) Adreßregister 218 zu übertragen. Weil der Bus 202 der einzige Eingangspfad zum temporären (untere) Adreßregister 218 ist, ist es notwendig den im (unteren) Indexregister 212 gespeicherten Wert durch die ALU 224 zu leiten. Der im (unteren) Indexregister 212 gespeicherte Wert wird über den Bus 204 zu einem Eingang der ALU 224 übertragen. Jedes im Bus 216 enthaltene Signal ist auf den logischen Pegel Eins vorgeladen. Die ALU 224 bekommt alle binären Einsen vom Bus 216 und invertiert dann die logischen Pegel alle zu binären Nullen. Am einen Eingang der ALU 224 liegt daher der Wert des (unteren) Indexregister 212 und am anderen Eingang der ALU 224 liegt Null. Die ALU 224 addiert dann Null zum Wert vom (unteren) Indexregister 212. Dann überträgt die ALU 224 das Ergebnis der Addition über den Bus 202 in das temporäre (untere) Adreßregister 218.
  • Als nächstes wird der im temporären (unteren) Adreßregister 218 gespeicherte Wert über den Niedrig-Bus 238 zum (unteren) Adreßbuspuffer 240 übertragen. Zur selben Zeit wird der im (oberen) Indexregister 205 gespeicherte Wert über den Hoch-Bus 232 zum (oberen) Adreßbuspuffer 234 übertragen. Die wirksame Adresse ist daher eine 16-Bit-Adresse, die durch die Verkettung des Werts aus dem (oberen) Indexregister 205 und dem Wert aus dem (unteren) Indexregister 212 gebildet wird. Die wirksame 16-Bit-Adresse wird aus der neuen CPU 12 über den Informationsbus 32 übertragen.
  • Im zweiten Sub-Modus "8-Bit-Offset" ist ein 8-Bit-Offset-Wert als Teil der Anweisung enthalten. Dieser 8-Bit-Offset-Wert wird zum Wert im Indexregister 304 addiert, um die für die Anweisung wirksame Adresse zu erzeugen. Unabhängig davon, ob die Anweisung ein alte-Anweisung oder eine neue Anweisung ist, werden beide Bytes oder Teile des Indexregisters 30, nämlich das (obere) Indexregister 205 und das (untere) Indexregister 212, verwendet.
  • Der 8-Bit-Offset, der als Teil der Anweisung einbezogen wurde, wird vom Informationsbus 32 zum Datenbus 244 übertragen, dann zu der Datenbusschnittstelle 220, dann zum Bus 216 und dann zum Eingang der ALU 224. Währenddessen wird der im (unteren) Indexregister 212 gespeicherte Wert zum anderen Eingang der ALU 224 über den Bus 204 übertragen. Die ALU 224 addiert den 8-Bit-Offset zum Wert aus dem (unteren) Indexregister 212 und überträgt dann das Ergebnis über den Bus 202 in das temporäre (untere) Adreßregister 218. Ein internes (nicht gezeigtes) Übertragsignal wird von der ALU 224 erzeugt. Der logische Zustand des internen Übertragsignals wird dadurch bestimmt, ob sich bei der Addition ein Übertrag ergeben hat oder nicht. Der logische Zustand des internen Übertragsignals wird innerhalb der neuen CPU 12 gespeichert.
  • Als nächstes wird das interne Übertragsignal (entweder eine binäre Null oder eine binäre Eins) zu dem im (oberen) Indexregister 205 gespeicherten Wert hinzugefügt. Der im (oberen) Indexregister 205 gespeicherte Wert wird über den Bus 204 an einen Eingang der ALU 224 übertragen. Jedes Signal, das auf dem Bus 216 anliegt, ist auf einen logischen Pegel Eins vorgeladen. Die ALU 224 bekommt alle binären Einsen vom Bus 216 und invertiert dann die logischen Pegel alle zu binäre Nullen. An einem Eingang der ALU 224 liegt der Wert vom (oberen) Indexregister 205 und am anderen Eingang zur ALU 224 liegt Null. Die Alu 224 addiert dann das interne Übertragsignal zur Null und dann zu dem Wert vom (oberen) Indexregister 205. Die Alu 224 überträgt dann das Ergebnis über den Bus 202 in das temporäre (obere) Adreßregister 214.
  • Dann wird der Inhalt des temporären (obere) Adreßregisters 214 zum (oberen) Adreßbuspuffer 234 über den Hoch-Bus 232 übertragen. Zur selben Zeit wird der Inhalt des temporären (unteren) Adreßregisters 218 zum (unteren) Adreßbuspuffer 240 über den Niedrig-Bus 238 übertragen. Die wirksame Adresse ist daher eine 16-Bit Adresse, die durch die Addition eines 8-Bit Versatzes zu der Verkettung des im (oberen) Indexregister 205 gespeicherten Wertes mit den im (unteren) Indexregister 212 gespeicherten Wert gebildet wird. Die wirksame 16-Bit-Adresse wird aus der neuen CPU 12 über den Informationsbus 32 übertragen.
  • Im dritten Süb-Modus "16-Bit-Offset" ist ein 16-Bit-Offset- Wert als Teil der Anweisung enthalten. Dieser 16-Bit-Offset-Wert wird zum Wert im Indexregister addiert, um die für die Anweisung wirksame Adresse zu erzeugen. Unabhängig davon, ob die Anweisung eine alte Anweisung oder eine neue Anweisung ist, werden beide Bytes oder Teile des Indexregisters 304, nämlich das (obere) Indexregister 205 und das (untere) Indexregister 212, verwendet.
  • Das obere Byte des 16-Bit-Offsets, das als Teil der Anweisung einbezogen wurde, wird vom Informationsbus 32 zum Datenbus 244, dann zur Datenbus-Schnittstelle 220, dann zum Bus 216 und dann zum Eingang der ALU 224 übertragen. Jedes Signal, das im Bus 204 enthalten ist, ist auf einem logischen Pegel Eins vorgeladen. Die ALU 224 erhält alle binären Einsen vom Bus 204 und invertiert die logischen Pegel dann alle zu binären Nullen. Ein Eingang zur ALU 224 ist daher das obere Byte des 16-Bit-Offsets, und der andere Eingang zur ALU 224 ist Null. Die ALU 224 addiert dann das obere Byte des 16-Bit Versatzes zur Null und überträgt das Ergebnis über den Bus 202 in das temporäre (obere) Adreßregister 214.
  • Als nächstes wird das niedrige Byte des 16-Bit-Offsets, das als Teil der Anweisung enthalten war, vom Informationsbus 32 zum Datenbus 244, dann zur Datenbus-Schnittstelle 220, dann zum Bus 216 und dann zum Eingang des ALU 224 übertragen. Währenddessen wird der im (unteren) Indexregister 212 gespeicherte Wert über den Bus 204 zum anderen Eingang der ALU 224 übertragen. Die ALU 224 addiert das niedrige Byte des 16-Bit-Offsets zum Wert vom (unteren) Indexregister 212 und überträgt dann das Ergebnis über den Bus 202 in das temporäre (untere) Adreßregister 212. Ein internes (nicht gezeigtes) Übertragsignal wird von der ALU 224 erzeugt. Der logische Zustand des internen Übertragsignals wird davon bestimmt, ob die Addition einen Übertrag ergab oder nicht. Der logische Zustand des internen Übertragsignals wird innerhalb der neuen CPU 12 gespeichert.
  • Als nächstes werden das interne Übertragsignal (entweder eine binäre Null oder eine binäre Eins) und das obere Byte des 16-Bit- Offsets zu dem im (oberen) Indexregister 205 gespeicherten Wert addiert. Der im (oberen) Indexregister 205 gespeicherte Wert wird über den Bus 204 an einen Eingang der ALU 224 übertragen. Auf dieselbe Weise wird das obere Byte des im temporären (oberen) Adreßregister 214 gespeicherten 16-Bit Versatzes über den Bus 216 an den anderen Eingang der ALU 224 übertragen. Am einen Eingang der ALU 224 liegt daher der Wert aus dem (oberen) Indexregister 205, und am anderen Eingang der ALU 224 liegt das obere Byte des 16-Bit- Offsets. Die ALU 224 addiert dann den inneren Übertrag, den Wert vom (oberen) Indexregister 205 und das obere Byte des 16-Bit- Offsets zusammen. Die ALU 224 überträgt dann das Ergebnis über den Bus 202 in das temporäre (obere) Adreßregister 214.
  • Dann wird der Inhalt des temporären (oberen) Adreßregisters 214 über den Hochbus 232 zum (obere) Adreßbuspuffer 234 übertragen. Gleichzeitig wird der Inhalt des temporären (unteren) Adreßregisters 218 über den Niedrig-Bus 238 zum (unteren) Adreßbuspuffer 240 übertragen. Die wirksame Adresse ist daher eine 16-Bit-Adresse, die durch die Addition eines 16-Bit-Offsets zu der Verkettung des im (oberen) Indexregister 205 gespeicherten Wertes und des im (unteren) Indexregister 212 gespeicherten Wertes gebildet ist. Die wirksame 16-Bit-Adresse wird aus der neuen CPU 12 über den Informationsbus 32 übertragen.
  • Zusammenfassung und einige weitere Ausführungsformen
  • Insgesamt erlaubt die vorliegende Erfindung die Entwicklung einer neuen CPU 12 mit einem erweiterbaren Indexregister 304. Die neue CPU 12 ist mit der alten CPU mit 8-Bit-Indexregister objektcode-kompatibel, und gleichzeitig kann das Indexregister der neuen CPU 12 wirkungsvoll auf 16-Bits erweitert werden, wenn neue Anweisungen verwendet werden. Als eine Folge muß der Nutzer sich zwischen der Verwendung der für die alte CPU geschriebenen Software in Maschinensprache mit der Funktionsfähigkeit eines 8-Bit- Registers oder dem Schreiben einer neuen Software in Maschinensprache für die neue CPU 12 mit der Funktionsfähigkeit eines 16-Bit- Indexregisters entscheiden.
  • Obwohl die vorliegende Erfindung in Bezug zu bestimmten Ausführungsformen veranschaulicht und beschrieben wurde, sind für den Fachmann weitere Änderungen und Verbesserungen denkbar. Zum Beispiel können bei anderen Ausführungsformen der vorliegenden Erfindung andere Architekturen für das Datenverarbeitungssystem 10, für die neue CPU 12 und für die Ausführungseinheit 56 verwendet werden. Die in den Fig. 1, Fig. 2 und Fig. 3 gezeigten Architekturen sind nur mögliche Architekturen, die verwendet werden können. Zum Beispiel könnte die Ausführungseinheit 56 jede Anzahl oder Art von Register haben. Ebenso könnte die Erfindung verwendet werden, um jede Registergröße erweiterbar zu machen. Zum Beispiel könnte ein 16-Bit-Register auf 32-Bit in einer weiteren neuen CPU 12 erweitert werden. Ebenso könnte die Ausführungseinheit 56 andere Busgrößen oder andere Busübertragungswege haben.
  • Die vorliegende Erfindung kann statt für das Indexregister für andere Arten von Registern verwendet werden. Außerdem kann die vorliegende Erfindung verwendet werden, um ein Register in jeglichem digitalen Datenprozessor erweiterbar zu machen nicht nur in einer Zentraleinheit (CPU).
  • Unabhängig von der vorliegenden Erfindung kann die Leistungsfähigkeit eines Datenverarbeitungssystems 10 durch verschiedene Verfahren ebenfalls vergrößert werden, die unabhängig voneinander die Objektcode-Kompatibilität betreffen. Zum Beispiel vergrößern manche Datenverarbeitungssysteme 10 zusätzlich zur Nutzung der vorliegenden Erfindung die Leistungsfähigkeit weiter durch die Verringerung der Zyklen, die nötig sind, um eine oder mehrere Anweisungen innerhalb der neuen CPU 12 auszuführen. Wenn eine neue CPU 12 die Zahl der Zyklen, die nötig sind, um eine oder mehrere Anweisungen auszuführen, ändert, dann muß eventuell die vom Zeittakt beeinflußte Software in Maschinensprache für die alte CPU geändert werden. Obwohl die vorliegende Erfindung die Objektcode- Kompatibilität zwischen der alten CPU und der neuen CPU 12 bewahrt, können daher unabhängig von der vorliegenden Erfindung andere Verbesserungen der Leistungsfähigkeit der neuen CPU 12 die Objektcode-Kompatibilität in manchen Ausführungsformen beeinflussen.
  • Es ist damit gemeint, daß diese Erfindung nicht auf die beschriebenen bestimmten Ausführungsformen begrenzt ist und daß mit den angefügten Ansprüchen alle Veränderungen, die nicht vom Umfang der Erfindung abweichen, mit abgedeckt sein sollen.

Claims (9)

1. Datenverarbeitungssystem (10), das von einer ersten Menge von Anweisungen eines vorher bestehenden Datenverarbeitungsystems zu einer zweiten Menge von Anweisungen erweitert werden kann, wobei die zweite Menge von Anweisungen die Anweisungen der ersten Menge von Anweisungen enthält, wobei das Datenverarbeitungssystem Register hat, die erweitert werden können, um zum Zweck der Bewahrung der Objektcode-Kompatibilität zwischen der ersten Menge von Anweisungen und der zweiten Menge von Anweisungen die Bitgröße zu vergrößern, wobei das Datenverarbeitungssystem (19) außerdem gekennzeichnet ist durch:
ein Register (304) mit einen ersten Teilregister (212), das von Anweisungen sowohl aus der ersten Menge von Anweisungen als auch aus der zweiten Menge von Anweisungen geändert werden kann, wobei das Register (304) ein zweites Teilregister (205) hat, das nur von Anweisungen aus der zweiten Menge von Anweisungen und nicht von Anweisungen aus der ersten Menge von Anweisungen geändert werden kann, wobei das zweite Teilregister einen gespeicherten Wert enthält, der von keiner Anweisung aus der ersten Menge von Anweisungen unabhängig von der Art der Anweisungen geändert wird, und
eine mit dem Register (304) verbundene Adreßerzeugungsschaltung (204, 216, 202, 224, 214, 218, 232, 234, 240), wobei die Adreßerzeugungsschaltung (204, 216, 202, 224, 214, 218, 232, 234, 240) eine Kombination des ersten Teilregisters (212) und des zweiten Teilregisters (205) verwendet, um eine Adresse zu erzeugen, wenn das Datenverarbeitungssystem (10) einen Adressierungsarbeitsschritt durchführt.
2. Datenverarbeitungssystem (10) nach Anspruch 1, außerdem dadurch gekennzeichnet, daß die Adreßerzeugungsschaltung (204, 216, 202, 224, 214, 218, 232, 234, 240) eine Verkettung des ersten Teilregisters und des zweiten Teilregisters ausführt, um die Adresse zu erzeugen.
3. Datenverarbeitungssystem (10) nach Anspruch 1, außerdem gekennzeichnet durch eine Schaltung (62), die das zweite Teilregister (205) auf einen Nullwert zurücksetzt, wenn das Datenverarbeitungssystem (10) zurückgesetzt wird.
4. Datenverarbeitungssystem (10) nach Anspruch 1 außerdem dadurch gekennzeichnet, daß das Datenverarbeitungssystem (10) objektcode-kompatibel mit einem bereits existierenden bekannten Datenverarbeitungssystem ist.
5. Datenverarbeitungssystem (10) nach Anspruch 4, in dem eine erste Menge von Anweisungen außerdem dadurch gekennzeichnet ist, daß sie einen ersten Betriebscode hat, der mit einem ersten bekann ten Betriebscode übereinstimmt, der im bereits existierenden Datenverarbeitungssystem verwendet wurde, und eine zweite Anweisung, die eine Anweisung aus der zweiten Menge von Anweisungen ist, außerdem dadurch gekennzeichnet ist, daß sie einen zweiten Betriebscode hat, der in der bereits existierenden Datenverarbeitungsanlage nicht definiert ist.
6. Verfahren zum Erweitern einer ersten Menge von Anweisungen eines bereits existierenden Datenverarbeitungssystems auf eine zweite Menge von Anweisungen zur Verwendung in einem Datenverarbeitungssystem (10), wobei die zweite Menge von Anweisungen Anweisungen aus der ersten Menge von Anweisungen enthält, wobei das Datenverarbeitungssystem (10) Register hat, die erweitert werden können, um zum Zweck der Bewahrung der Objektcode-Kompatibilität zwischen der ersten Menge von Anweisungen und der zweiten Menge von Anweisungen die Bitgröße zu vergrößern, wobei das Verfahren außerdem gekennzeichnet ist durch:
Ändern eines ersten Teilregisters (212) eines Registers (304) durch Anweisungen aus sowohl der ersten Menge von Anweisungen als auch aus der zweiten Menge von Anweisungen,
Ändern eines zweiten Teilregisters (205) des Registers (304) nur durch Anweisungen aus der zweiten Menge von Anweisungen und nicht durch Anweisungen aus der ersten Menge von Anweisungen, wobei das zweite Teilregister einen gespeicherten Wert enthält, der unabhängig von der Art der Anweisung von keiner Anweisung aus der ersten Menge von Anweisungen geändert wird, und
Koppeln der Adreßerzeugungsschaltung (204, 216, 202, 224, 214, 218, 232, 234, 240) mit dem Register (304), um eine Adresse zu erzeugen, wenn das Datenverarbeitungssystem (10) einen Arbeitsschritt zur Adressierung ausführt, wobei die Adreßerzeugungsschaltung (204, 216, 202, 224, 214, 218, 232, 234, 240) eine Kombination des ersten Teilregisters (212) und des zweiten Teilregisters (205) verwenden, um die Adresse bereitzustellen.
7. Verfahren nach Anspruch 6, das außerdem die Schritte umfaßt:
Verwenden einer Verkettung des ersten Teilregisters und des zweiten Teilregisters als eine Kombination des ersten Teilregisters und des zweiten Teilregisters, um die Adresse bereitzustellen.
8. Verfahren nach Anspruch 6, das außerdem die Schritte umfaßt:
Zurücksetzen des zweiten Teilregisters (205) auf einen Nullwert, wenn das Datenverarbeitungssystem (10) zurückgesetzt wird.
9. Verfahren nach Anspruch 6, das außerdem die Schritte umfaßt:
Erzeugen einer wirksamen Adresse als die Adresse.
DE69315192T 1992-12-24 1993-11-11 Datenverarbeitungssystem und -Verfahren mit einem erweitbaren Register Expired - Fee Related DE69315192T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US07/996,744 US5680632A (en) 1992-12-24 1992-12-24 Method for providing an extensible register in the first and second data processing systems

Publications (2)

Publication Number Publication Date
DE69315192D1 DE69315192D1 (de) 1997-12-18
DE69315192T2 true DE69315192T2 (de) 1998-04-02

Family

ID=25543253

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69315192T Expired - Fee Related DE69315192T2 (de) 1992-12-24 1993-11-11 Datenverarbeitungssystem und -Verfahren mit einem erweitbaren Register

Country Status (6)

Country Link
US (1) US5680632A (de)
EP (1) EP0614137B1 (de)
JP (1) JP3616402B2 (de)
KR (1) KR100287600B1 (de)
DE (1) DE69315192T2 (de)
HK (1) HK1004611A1 (de)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW267222B (en) * 1994-10-05 1996-01-01 Ibm Improved method and system of addressing
JP2885197B2 (ja) * 1996-08-16 1999-04-19 日本電気株式会社 演算処理装置及び演算処理方法
US5948076A (en) * 1997-12-31 1999-09-07 Adaptec, Inc. Method and system for changing peripheral component interconnect configuration registers
US6366998B1 (en) 1998-10-14 2002-04-02 Conexant Systems, Inc. Reconfigurable functional units for implementing a hybrid VLIW-SIMD programming model
WO2001025941A1 (en) 1999-10-06 2001-04-12 Cradle Technologies Multiprocessor computer systems with command fifo buffer at each target device
US6351806B1 (en) 1999-10-06 2002-02-26 Cradle Technologies Risc processor using register codes for expanded instruction set
US6988154B2 (en) 2000-03-10 2006-01-17 Arc International Memory interface and method of interfacing between functional entities
JP2003162411A (ja) * 2001-11-28 2003-06-06 Hitachi Ltd データプロセッサ
US7203820B2 (en) * 2002-06-28 2007-04-10 Sun Microsystems, Inc. Extending a register file utilizing stack and queue techniques
US20040049657A1 (en) * 2002-09-10 2004-03-11 Kling Ralph M. Extended register space apparatus and methods for processors
US8464030B2 (en) * 2010-04-09 2013-06-11 International Business Machines Corporation Instruction cracking and issue shortening based on instruction base fields, index fields, operand fields, and various other instruction text bits
US9507599B2 (en) 2013-07-22 2016-11-29 Globalfoundries Inc. Instruction set architecture with extensible register addressing
JP6314717B2 (ja) * 2014-07-18 2018-04-25 株式会社安川電機 ラダープログラム作成装置、モニタリング装置、コンピュータプログラム及び機器制御装置

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4040035A (en) * 1974-10-30 1977-08-02 Motorola, Inc. Microprocessor having index register coupled to serial-coupled address bus sections and to data bus
US4363091A (en) * 1978-01-31 1982-12-07 Intel Corporation Extended address, single and multiple bit microprocessor
NL7807314A (nl) * 1978-07-06 1980-01-08 Philips Nv Inrichting voor het vergroten van de lengte van een logisch computeradres.
US4240142A (en) * 1978-12-29 1980-12-16 Bell Telephone Laboratories, Incorporated Data processing apparatus providing autoincrementing of memory pointer registers
US4277827A (en) * 1979-01-02 1981-07-07 Texas Instruments Incorporated Microprocessor based system for the development and emulation of programmable calculator control read only memory software
US4300195A (en) * 1979-08-09 1981-11-10 Motorola, Inc. CMOS Microprocessor architecture
US4287566A (en) * 1979-09-28 1981-09-01 Culler-Harrison Inc. Array processor with parallel operations per instruction
US4430705A (en) * 1980-05-23 1984-02-07 International Business Machines Corp. Authorization mechanism for establishing addressability to information in another address space
US4679166A (en) * 1983-01-17 1987-07-07 Tandy Corporation Co-processor combination
US4876639A (en) * 1983-09-20 1989-10-24 Mensch Jr William D Method and circuitry for causing sixteen bit microprocessor to execute eight bit op codes to produce either internal sixteen bit operation or internal eight bit operation in accordance with an emulation bit
US4722047A (en) * 1985-08-29 1988-01-26 Ncr Corporation Prefetch circuit and associated method for operation with a virtual command emulator
US4878197A (en) * 1987-08-17 1989-10-31 Control Data Corporation Data communication apparatus
US5125087A (en) * 1988-11-07 1992-06-23 Microsoft Corporation Method of resetting sequence of access to extended memory disrupted by interrupt processing in 80286 compatible system using code segment register
US5297272A (en) * 1989-08-02 1994-03-22 Advanced Logic Research, Inc. Apparatus for automatically disabling and isolating a computer's original processor upon installation of a processor upgrade card
US5261077A (en) * 1990-06-29 1993-11-09 Digital Equipment Corporation Configurable data path arrangement for resolving data type incompatibility
DE69231451T2 (de) * 1991-03-11 2001-05-10 Mips Technologies,Inc. Rückwärts kompatible Rechnerarchitektur mit erweiterten Wortbreiten und Adressraum

Also Published As

Publication number Publication date
US5680632A (en) 1997-10-21
EP0614137A3 (de) 1995-04-26
KR940015806A (ko) 1994-07-21
DE69315192D1 (de) 1997-12-18
JPH06230962A (ja) 1994-08-19
HK1004611A1 (en) 1998-11-27
KR100287600B1 (ko) 2001-04-16
EP0614137B1 (de) 1997-11-12
EP0614137A2 (de) 1994-09-07
JP3616402B2 (ja) 2005-02-02

Similar Documents

Publication Publication Date Title
DE69530520T2 (de) Computerprogrammprodukt zur Verwendung von Mehrfachbefehlssätzen
DE3876780T2 (de) Mikrorechner mit eingebauter chipauswahl und programmierbarer busdehnung.
DE69115344T2 (de) Vorverarbeitungsprozessor zur Verbindung von Befehlen für einen Cache-Speicher
DE69421755T2 (de) Initialisierung von Mehrfachbus-Netzwerken
DE68926385T2 (de) Methode und Hardware-Ausführung von komplexen Datentransferbefehlen
DE60018078T2 (de) Einstellung von bedingungswerten in einem rechner
DE3486085T2 (de) Zentrale Verarbeitungseinheit für einen Digitalrechner.
DE3685876T2 (de) Meister-sklave-mikroprozessorsystem mit einem virtuellen speicher.
DE3688824T2 (de) Datenverarbeitungssystem.
DE2517276A1 (de) Datenverarbeitungssystem
DE69315192T2 (de) Datenverarbeitungssystem und -Verfahren mit einem erweitbaren Register
DE69428303T2 (de) Verfahren und Vorrichtung zum Datenarbeiten mit mehreren Statusbitgruppen
DE69230211T2 (de) Integrierter Speicher, Verwaltungsverfahren und resultierendes Informationssystem
DE60224774T2 (de) Datenverarbeitungssystem mit Lese-, Änderungs- und Schreibeinheit
DE2524046C2 (de) Elektronische Datenverarbeitungsanlage
DE2230102A1 (de) Rechenwerk fuer variable wortlaengen
DE69028269T2 (de) Virtuelles Adressierungsverfahren zum Betrieb eines Speichers in einer Datenverarbeitungsanlage und Einrichtung zur Ausführung besagten Verfahrens
DE68927783T2 (de) Mikroprozessor mit äusserem steuerungsspeicher
DE69615987T2 (de) Integrierte Schaltung mit programmierbarer Bus-Konfiguration
DE2714805A1 (de) Datenverarbeitungssystem
DE2756768A1 (de) Mikroprozessor-architektur
DE2910839A1 (de) Einrichtung zur ausfuehrung einer speziellen verzweigungsinstruktion
DE1931966B2 (de) Datenverarbeitungsanlage mit Assoziativspeichern
DE3854853T2 (de) Datenprozessor mit erweiterten Operationsfunktionen
EP0010185A1 (de) Virtuell-Adressiervorrichtung für einen Computer

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8328 Change in the person/name/address of the agent

Free format text: SCHUMACHER & WILLSAU, PATENTANWALTSSOZIETAET, 80335 MUENCHEN

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

Owner name: FREESCALE SEMICONDUCTOR, INC., AUSTIN, TEX., US

8339 Ceased/non-payment of the annual fee