DE69918033T2 - Zentrale Verarbeitungseinheit mit Befehl zur Datenverlängerung - Google Patents

Zentrale Verarbeitungseinheit mit Befehl zur Datenverlängerung Download PDF

Info

Publication number
DE69918033T2
DE69918033T2 DE69918033T DE69918033T DE69918033T2 DE 69918033 T2 DE69918033 T2 DE 69918033T2 DE 69918033 T DE69918033 T DE 69918033T DE 69918033 T DE69918033 T DE 69918033T DE 69918033 T2 DE69918033 T2 DE 69918033T2
Authority
DE
Germany
Prior art keywords
extension
register
command
cpu
operand
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
DE69918033T
Other languages
English (en)
Other versions
DE69918033D1 (de
Inventor
Kyung Youn Cho
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.)
Advanced Digital Chips Inc
Original Assignee
Advanced Digital Chips 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 Advanced Digital Chips Inc filed Critical Advanced Digital Chips Inc
Application granted granted Critical
Publication of DE69918033D1 publication Critical patent/DE69918033D1/de
Publication of DE69918033T2 publication Critical patent/DE69918033T2/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/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • 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
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants

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)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)

Description

  • Hintergrund der Erfindung
  • Die vorliegende Erfindung bezieht sich auf einen Zentralprozessor (CPU) mit Befehlen konstanter Länge zum Verändern von Speicheradressen, Offsets und Direktdaten.
  • Stand der Technik
  • Wie aus 5 ersichtlich ist, umfasst ein herkömmlicher Zentralprozessor eine Registerdatei 7, die ein GPR (General Purpose Register) umfasst, das so konfiguriert ist, dass es für eine Architektur geeignet ist, die ein Bereich ist, um den Zugriff des Benützers zu erleichtern, und ein SPR (Special Purpose Register), das für einen bestimmten Zweck verwendet wird; ein Befehlsregister 4 zum Speichern eines aus einem Speicher eingefügten Befehls; einen Dekodier- und Steuerabschnitt 5 zum Dekodieren eines OP-Codes und eines im Befehlsregister 4 gespeicherten Operanden sowie zum Erzeugen eines vorbestimmten Steuersignals gemäß einem Befehl; einen Betriebsabschnitt 6 zum Verarbeiten des im Dekodier- und Steuerabschnitt 5 dekodierten Befehls; ein Speicherdatenregister 1 zum Speichern/Puffern von Daten, wenn die Daten in den Speicher geschrieben oder von diesem gelesen werden; ein Speicheradressenregister 2 zum Speichern/Ausgeben einer in einem Programmzähler gezählten Adresse; und ein Steuersignalregister 3 zum Puffern eines Steuersignalseingangs von einer externen Quelle.
  • Der als "Maschinensprache" bezeichnete Befehl der CPU umfasst einen OP-Code, der in einer Anordnung von binären Bits ausgedrückt ist und eine Operation darstellt, sowie einen Operanden, der den Gegenstand darstellt, an dem der OP-Code angeordnet werden kann.
  • Betrachtet man einen ADD-Befehl als ein Beispiel für OP-Codes und Operanden, so bedeutet 'A = B + C', dass 'B' zu 'C' zu addieren ist, und das Ergebnis als 'A' zu speichern ist. Hierin ist '+' ein OP-Code, der die Operation darstellt, und 'A', 'B' und 'C' sind Operanden als Objekte, auf die eine Operation angewandt werden soll. Der obige Ausdruck kann '0001 0000 0001 0010' sein, wenn er in die Maschinensprache umgesetzt ist, wobei '0001' ein OP-Code ist, der '+' symbolisiert, '0001' und '0010' Operanden sind, die A, B und C symbolisieren. Die Darstellung der binären Zahlen kann oftmals als hexadezimale Zahl sein, da das Lesen schwierig ist. Die Darstellung der hexadezimalen Zahl im obigen Beispiel wird '0x 1012'. In der Maschinensprache umfasst der Operand ein Register, eine Speicheradresse, ein Offset und Direktdaten.
  • Die Anzahl der Register ist in vielen Fällen auf 32 beschränkt. Wenn z. B. die Anzahl der Register 16 beträgt, so kann dies als ein Operand mit 4 Bits (2**4 = 16) dargestellt werden. Aber im Fall einer Speicheradresse kann eine 32-Bit-CPU einen Speicher von 4 G-Bytes verwenden. Für die Darstellung ist eine 32-Bit-Adresse notwendig. Somit wird die Operandenlänge, die diese definiert, immer länger. Im Fall von Offset und Direktdaten wird die Länge des Operanden ebenfalls ähnlich dem Speicher immer länger. Wird die Länge des Operanden länger, so wird auch die Länge der Maschinensprache länger. Und wenn die Länge der Maschinensprache länger wird, erhöht sich die Programmgröße und dies wirkt sich schlecht auf die Effizienz aus.
  • Deshalb sollte jede der CPUs über ein technisches Verfahren verfügen, um den Operanden effizient darzustellen. Das in IBM-PC verwendete 80386 besitzt einen Multi-Byte-Längen-Befehl. So ist die Befehls-Maschinensprache 'MOVE' von 80386 auf der Länge des Operanden wie folgt definiert:
  • Figure 00020001
  • Auch MC68000 besitzt einen ähnlichen Multi-16-Bit-Längen-Befehl wie 80386. Der Befehl mit variabler Länge hat, wie bereits zuvor beschrieben, den Vorteil, dass er eine beliebige Länge eines Operanden darstellen kann, zeigt jedoch auch den Nachteil, dass es schwierig ist, die Befehlsdekodierung sowie Ausnahmesituationen etc. zu verarbeiten, da die Länge der Maschinensprache sich geändert hat. Die CPU mit dem Befehl mit variabler Länge wird als CISC (Complex Instruction Set Computer; Prozessor mit komplettem Befehlssatz) bezeichnet.
  • Andererseits ist in RISC (Reduced Instruction Set Computer; Computer mit reduziertem Befehlsvorrat) die Länge der Maschinensprache fixiert. So hat z. B. MIPS-R3000, SPARC, ARM-7 etc. einen mit 32 Bit Länge festgelegten Befehl, SH-3, von Hitachi Co. hergestellt, hat einen Befehl mit 16 Bit fester Länge. Diese Befehle mit konstanten Längen erleichtern die Dekodierung der Befehle, die Verarbeitung der Ausnahmebedingungen und die Annahme einer Befehlskette (pipe-line), um die hohe Leistung der CPU aufgrund der konstanten Länge der Maschinensprache umzusetzen. Im Gegensatz dazu ergibt sich aufgrund der fixierten Länge des Befehls eine Beschränkung der Länge des Operanden.
  • So hat z. B. MIPS-R3000 eine Speicherkapazität von 32 Bit. Nichtsdestotrotz ist ein Offset, das in einer Maschinensprache darstellen kann, eine 16-Bit und eine 32-Bit-CPU, aber die Länge einer Direktkonstante ist auf 16 Bit begrenzt. Dies stellt einen der Gründe dar, warum die Programmkodierung schwierig ist und das Leistungsverhalten sich verschlechtert.
  • Auch ist der Befehl 'MOVE' eine Operation zum Kopieren des Inhalts eines Registers in ein anderes Register, in welchem der Registeroperand eine Länge von 5 Bit aufweist, da MIPS-R3000 32 Register hat. Geht man davon aus, dass der OP-Code für das Darstellen von 'MOVE' auf 6 Bit definiert ist, so kann der Befehl mit fixer Länge als 16-Bit-Befehl definiert werden. Um aber den Befehl mit fixer Länge zu verwenden, wird der mit 16 Bit darstellbare Befehl als 32-Bit-Befehl dargestellt. Der Befehl mit der auf 32 Bit festgelegter Länge zeigt aber den Nachteil, dass die Länge des Operanden begrenzt ist und einen unnötig langen Befehl hat.
  • Betrachtet man ein anderes Beispiel, so hat TR-4101 einen Befehl mit einer fixen Länge von 16 Bit sowie die Funktion der Verlängerung eines Teils des Befehls mit fixer Länge und des Operanden. So umfasst z. B. ein Befehl 'LOAD', der Daten aus einem Speicher abruft, einen OP-Code zum Darstellen von 'LOAD' sowie ein Zielregister, das ein abgerufenes und gespeichertes Register darstellt, ein Index-Register, das die Positionen eines Operanden und eines Speichers angibt, und einen Offset-Operanden, der das Offset von Operanden und Index darstellt. Damit diese OP-Codes und verschiedene andere Arten von Operanden auf einem 16 Bit langen Befehl dargestellt werden können, beschränkt TR-4101 das Offset auf 5 Bit. Aber ein Offset von 5 Bit ist nicht ausreichend, um die Speicherposition darzustellen. Aus diesem Grund verwendet TR-4101 einen Befehl 'EXTEND'.
  • Der Befehl 'EXTEND' umfasst einen OP-Code von 5 Bit und einen konstanten Direktoperanden von 11 Bit. Hierin ist der 11 Bit umfassende konstante Direktoperand gemäß dem Befehl, der als nächster zum Befehl 'EXTEND' positioniert ist, interpretiert. So sind z. B., wenn 'LOAD' als nächstes zum Befehl 'EXTEND' aufscheint, der 11 Bit umfassende konstante Direktoperand des Befehls 'EXTEND' und ein 5-Bit-Offset des Befehls 'LOAD' miteinander verkettet, um das 16-Bit-Offset darzustellen.
  • Die Befehlverlängerungs-Technologie von TR-4101 dient nur dazu, das Offset und die Direktkonstante auf 16 Bit zu verlängern, es löst aber die Begrenzung der Operandenlänge nicht, die eine herkömmliche RISC-CPU besitzt. Der Befehl, der einen Operanden verlängern kann, verändert das Aufzeigen des Operanden gemäß dem vorhandenen Befehl 'EXTEND'. Der Befehl, den vorangegangenen Befehl 'EXTEND' zu verketten, wird in einen Befehl aufgenommen. Anders gesagt bedeutet dies, dass dies insofern zu Nachteilen führt, als die Verarbeitung der Ausnahmebedingung neben dem Befehl 'EXTEND' nicht ausgeführt werden kann und dass die Anfrage in Reaktion auf die Peripherievorrichtung nicht in Echtzeit verarbeitet werden kann.
  • Das Dokument EP 0 395 348 A2 offenbart ein Verfahren und eine Vorrichtung für eine Multi-Gauge-Berechnung, worin größere Direkt- und Verschiebungswerte in den Befehlen durch das Präfixieren der Direkt- oder Verschiebungsfeldwerte erzeugt werden können. Jede CPU besitzt ihr eigenes allgemeines Register-Set, Status-Register und Programmzähler; diese Register sind für den Prozessor lokal. Jeder Prozessor verfügt auch über ein lokales Register, das als Präfix-Register bezeichnet wird. Werte werden in das Präfix-Register über einen Präfix-Befehl geladen. Wird ein Befehl mit einem präfixierbaren Direkt- oder Verschiebungsfeld ausgeführt, so werden die Inhalte des Präfix-Registers mit dem Direkt- oder Verschiebungsfeld des Befehls verkettet, um die effektiven Direkt- oder Verschiebungswerte zu bilden.
  • Die vorliegende Erfindung stellt einen Zentralprozessor bereit, der einen Verlängerungsbefehl besitzt, um zur nächsten Routine zurückzukehren, wobei der Prozess des Verlängerungsbefehls unmittelbar nach Durchführung eines Ausnahmeverarbeitungs-Prozedur ausgehalten wird, selbst wenn eine Ausnahmesituation neben einem Verlängerungsbefehl auftritt.
  • Zusammenfassung der Erfindung
  • Nach einem ersten Aspekt der Erfindung ist ein Verfahren zum Verlängern eines allgemeinen Befehls in einem Zentralprozessor (CPU) bereitgestellt, wobei das Verfahren umfasst: das Empfangen eines Verlängerungsbefehls; das Setzen eines Verlängerungs-Flags in Reaktion auf das Empfangen des Verlängerungsbefehls; das Speichern von im Verlängerungsbefehl enthaltenen Verlängerungs-Daten in einem Verlängerungsregister in Reaktion auf das Empfangen des Verlängerungsbefehls; das Empfangen des allgemeinen Befehls; das Erzeugen eines verlängerten Befehls, wenn das Verlängerungs-Flag gesetzt ist, umfassend: 1) zumindest einen Teil des allgemeinen Befehls, und 2) zumindest einen Teil der Verlängerungsdaten im Verlängerungsregister; gekennzeichnet dadurch, dass das Verlängerungsregister für den Programmierer zugänglich ist.
  • Nach einem zweiten Aspekt der Erfindung ist ein Zentralprozessor (CPU) bereitgestellt, der Folgendes aufweist: einen Befehlssatz zum Betreiben der CPU; ein oder mehrere Sammelleitungsmedien für die Kommunikation in der CPU; ein Verlängerungsregister zum Speichern von Verlängerungsdaten, wobei das Verlängerungsregister an zumindest eines des/der einzelnen Sammelleitungsmediums/-medien gekoppelt ist; einen Verlängerungsbefehl aus dem Befehlssatz, wobei der Verlängerungsbefehl einen Verlängerungsoperationscode und ein oder mehrere Verlängerungsoperationsfelder aufweist, so dass der Verlängerungsoperationscode der CPU befiehlt, im Verlängerungsbefehl eingeschlossene Verlängerungsdaten mit zumindest einem Teil eines allgemeinen Befehls aus dem Befehlssatz zu verketten, um einen verlängerten Befehl auszubilden; dadurch gekennzeichnet, dass das Verlängerungsregister für den Programmierer zugänglich ist.
  • Vorzugsweise umfasst der allgemeine Befehl einen OP-Code und ein Operandenfeld, das mit dem im Verlängerungsdatenfeld des Verlängerungsregisters gespeicherten Verlängerungsdaten zu verketten ist, um so den verlängerten Befehl auszubilden, so dass der verlängerte Befehl übersetzt und ausgeführt werden kann.
  • Vorzugsweise umfasst die CPU gemäß der Erfindung ein Verlängerungs-Flag zum Darstellen des Status des Verlängerungsdatenfelds des Verlängerungsregisters. Das Verlängerungs-Flag kann ein oder eine Vielzahl von Bits sein, das/die für den Programmierer zugänglich ist/sind. Der Verlängerungsbefehl kann einen OP-Code zum Darstellen der Operation des Speicherns von Verlängerungsdaten im Verlängerungsdatenfeld des Verlängerungsregisters umfassen. Der Operand des Verlängerungsbefehls kann in einen Steuerblock übersetzt werden, um den Operanden im Verlängerungsdatenfeld des Verlängerungsregisters zu speichern und den Status des Verlängerungs-Flags zu ändern. Der allgemeine Befehl kann einen OP-Code und ein Operandenfeld umfassen, das in einen Befehl übersetzt wird, der gemäß dem Status des Verlängerungs-Flags nur das Operandenfeld im allgemeinen Befehl des Steuerblocks umfasst, oder mit den im Verlängerungsdatenfeld des Verlängerungsregisters gespeicherten Verlängerungsdaten verkettet ist, um ein neues Operandenfeld auszubilden, und danach in einen verlängerten Befehl übersetzt wird, der das neu gebildete Operandenfeld umfasst, das ausgeführt wird, um den allgemeinen Befehl im Steuerblock auszuführen und den Status des Verlängerungs-Flags zu ändern.
  • Somit umfasst die Erfindung einen Zentralprozessor, der ein Verlängerungsregister ER, Mittel zum Darstellen des Status des Verlängerungsregisters, einen Befehl zum Speichern eines Werts im ER und einen Befehl, der bewirkt, dass die Operanden-Übersetzung unterschiedlich auf dem Status des Verlängerungsregisters basiert. Die Erfindung kann einen Zentralprozessor mit einem Befehl mit fixer Länge sowie zum Ändern der Länge einer Speicheradresse, des Offsets und einer Direktkonstante realisieren.
  • Kurze Beschreibung der Zeichnungen
  • Die Erfindung ist nachfolgend im Detail mit Bezug auf die begleitenden Zeichnungen beschrieben, worin:
  • 1 ein Blockdiagramm ist, das einen Zentralprozessor gemäß der Erfindung veranschaulicht;
  • 2 ein Blockdiagramm ist, das die Anwendung einer Befehlskette der CPU veranschaulicht;
  • 3 ein Blockdiagramm ist, welches das Ausführen des Befehls Abrufen und Dekodieren mit Hilfe eines Zeitdiagramms der Befehlskette verdeutlicht;
  • 4 ein Blockdiagramm ist, das ein Befehlsformat darstellt, in welchem das Verlängerungs-Flag auf ein Status-Flag gesetzt wird; und
  • 5 ein Blockdiagramm ist, das eine CPU nach dem Stand der Technik veranschaulicht.
  • Detaillierte Beschreibung der Erfindung
  • 1 ist ein Blockdiagramm, das eine Ausführungsform einer CPU mit einem Verlängerungsbefehl gemäß der Erfindung veranschaulicht, worin die Ausführungsform eine Mikroprogrammsteuereinheit (MCU) mit einer 32-Bit-Architektur adaptiert. Die MCU ermöglicht die Verlängerung und Reduzierung eines Datenwegs und einer Sammelleitungsbreite, und ihre detaillierten Blöcke können in verschiedenen Verfahren definiert werden. Aber die Ausführungsform verwendet eine 21-Bit-MCU, um die Erklärungen zu vereinfachen.
  • Gemäß der Ausführungsform der Erfindung umfasst eine 32-Bit-CPU mit einem Verlängerungsbefehl eine Registerdatei 80, eine 32-Bit-Sammelleitung, einen Dekodier-Steuerabschnitt 50, eine arithmetische logische Statement-Einheit 60 (nachfolgend hierin als ALSU bezeichnet), einen Multiplikator/Divisor 70 und einen Adresserzeugungsabschnitt 90, in welchem der Befehl 16 Bit umfasst und eine dreistufige Befehlskette verwendet, und worin eine Speicherstruktur vier 8-Bit-Speicher, die parallel miteinander verkettet sind, umfasst.
  • Nachfolgend sind nun die Grundfunktion und der Betrieb jedes Elements der 32-Bit-CPU, die einen Verlängerungsbefehl aufweist, beschrieben.
  • Wird das System zuerst zurückgestellt, so liest die MCU eine Startadresse aus einem Speicher und speichert diese in einem Datensignalspeicherungsabschnitt (data latch portion) 10. Danach wird der Adresswert in einem Programmzähler (PC) in der Registerdatei 80 gespeichert. So lange das Programm der Reihe nach wieder in seinem Zyklus weitermacht, wird der Wert gemäß der Speicheranordnung erhöht. Der Adresserzeugungsabschnitt 90 weist den Wert zu und liest ein Programm, dass ein Benützer aus dem Speicher haben möchte. Der Adresserzeugungsabschnitt 90 wählt Elemente, die dem folgenden Befehl entsprechen, und die Datenspeicheradresse aus, verwendet diese für ein sequentielles oder nicht-sequentielles Fortführen des Programms, liest den Befehl an der Adresse und speichert diese im Vor-Befehlsregister 20, um das Programm der Reihe nach fortzusetzen, oder er entnimmt die notwendigen Daten aus dem Speicher und speichert sie im Datensignalspeicherungsabschnitt 10, um die richtige Operation durchzuführen.
  • Wenn der Befehl durchgeführt wird, wird der Befehl für die Befehlskette tatsächlich aus dem Vor-Befehlregister (PIR) 20 abgerufen. Der Vor-Dekodierer 30 klassifiziert den Befehl in große Kategorien. Hierin dienen große Kategorien dazu, den definierten Befehl in verschiedene ähnliche Typen basierend auf der Anzahl einer Befehlskette und einem durchzuführenden Verfahren zu klassifizieren, um zu bestimmen, welcher Status-Übergang durchgeführt wird. Danach wird der Befehl im Befehlsregister (IR) 40 gespeichert. Der Dekodier-Steuerabschnitt 50 weist den gespeicherten Wert und das Ausgangssignal aus dem Vor-Dekodierer 30 zu und bestimmt den Status-Übergang des entsprechenden Befehls, um entsprechend jedes Status ein Steuersignal zu erzeugen. Die 32 Bit-ALSU 60 und der Multiplikator/Divisor 70 werden vom Steuersignal betätigt, um das Ausgangssignal-Resultat in der Registerdatei 80 zu speichern.
  • Die detaillierte Konfiguration der Registerdatei 80 ist in 4 dargestellt. Die Registerdatei 80 ist in GPR und SPR unterteilt. Das GRP ist ein Bereich, auf die der Benützer leichten Zugriff hat, und umfasst sechzehn 32-Bit-Register. Im Gegensatz dazu ist das SPR ein Register, das für einen bestimmten Zweck verwendet wird, und umfasst einen PC (Programmzähler), einen SP (Benützer/Supervisor-Zeiger), ein LR (Link-Register), ein ML/MH (Multiply Result Low/High Register; Multiplikationsergebnis-Low/High-Register), ein SR (Status-Register) etc. Von diesen Registern funktionieren LR, ML/MH und SR wie folgt:
  • LR (Link-Register): Tritt während des Ablaufes eines nicht-sequentiellen Programms eine Verzweigung auf, so wird der Wert des Programmzählers im Speicher (Stapelbereich) wie zuvor beschrieben gespeichert. Im Falle der distalen Funktion wird danach die Operation für den Zurückempfang der Adresse unmittelbar und für das Aufrufen der distalen Funktion leicht durchgeführt. Berücksichtigt man diese Punkte, so wird im Fall des Abrufens der distalen Funktion die Adresse nicht im Speicher gespeichert, sondern das Link-Register wird für eine vorübergehende Speicherung verwendet. Wird die Operation der Funktion nicht durch den obigen Prozess angehalten und wird der Adresswert zurückempfangen, so wird dadurch die Systemleistung verbessert, da auf den Speicher zum Lesen nicht zugegriffen wird.
  • ML/MH (Multiply Result Low/High Register): In der MCU gibt es einen Multiplikator und einen Divisor. Somit werden die zwei Register für eine temporäre Speicherung der Resultate ihrer Operationen verwendet.
  • SR (Status-Register): Diese Register wird verwendet, um verschiedene Status-Werte im Verlauf der Berechnungen wie jener in allen allgemeinen MCUs zu speichern, das heißt, es handelt sich hier um eine Sammlung von Status-Flags, die den Status des Zentralprozessors darstellen.
  • Der Zentralprozessor mit einem Verlängerungsbefehl gemäß der Erfindung umfasst weiters ein Verlängerungsregister (ER) in der Registerdatei 80 und ein Verlängerungs-Flag, das den Verlängerungs-Status der Erfindung darstellt. In der Ausführungsform ist das Verlängerungsregister in der SPR angeordnet, aber seine Position ist für das Zuteilen zu einer beliebigen Stelle, auf die ein Programmierer zugreifen kann, irrelevant. Das Flag zum Darstellen des Verlängerungs-Status ist auch in Hinblick auf die Positionierung an einer beliebigen Stelle, auf die der Programmierer Zugriff hat, irrelevant, es ist aber in der Ausführungsform im SR positioniert.
  • Verlängerungsregister (ER): Das Verlängerungsregister wird zum temporären Speichern eines Offset- oder Direktdatenwerts und zum Erzeugen einer vorbestimmten Menge des Operanden verwendet. In der Ausführungsform ist das Verlängerungs-Flag zum Darstellen des Status des Verlängerungsfelds im Status-Register umfasst.
  • Die Gesamtlänge des ER wird entsprechend der Wortlänge der CPU geändert und weist in einer 16-Bit-CPU eine Länge von gleich oder weniger als 16 Bit auf, in einer 32-Bit-CPU von gleich oder weniger als 32 Bit und in einer 64-Bit-CPU von gleich oder weniger als 64 Bit. Hierin ist die 32-Bit-Länge des ER als Beispiel erklärt, aber es ist anzumerken, dass dies nur die Erklärungen erleichtern, aber keineswegs die ER-Länge und die Wortlänge der CPU beschränken soll.
  • Das ER sollte eine solche Gestalt von mehr als 1 Bit Länge aufweisen, so dass der Programmierer darauf zugreifen kann. Einige Flags und Register in der CPU enthalten ER, auf die der Programmierer nicht zugreifen kann. In der Ausführungsform der Erfindung ist das ER als ein Bit des Status-Registers erklärt, und es ist anzumerken, dass dies nur der Erklärung dient und nicht den Aspekt der Ausführungsform des EF beschränken soll. Auch speichert die CPU der Erfindung Daten im ER und umfasst das Verlängerungs-Flag (EF), um die Verwendung oder Nicht-Verwendung des Verlängerungsregisters darzustellen und Befehle zu trennen, um die Verwendung des ER ausreichend möglich zu machen, ohne dabei das EF zu verwenden. In der Ausführungsform ist ein Beispiel gegeben, in welchem das EF verwendet wird.
  • Die CPU der Erfindung hat den Befehl zum Speichern von Daten im ER und gleichzeitig Setzen des EF auf "1", das für die Vereinfachung der Erklärung 'LDERI' bezeichnet wird. Ausgehend davon, dass der Befehl mit einer fixen Länge von 16 Bit in der 32-Bit-CPU verwendet wird und der Operand des Befehls 'LDERI' in eine 14-Bit-Direktkonstante definiert ist, liest sich der Befehlssatz wie folgt:
    LDERI #123
    verschiebt arithmetisch das ER um eine Länge von 14 Bit nach links und betreibt die Addition von '123' des Operandenteils zum ER, wenn das EF vor der Ausführung des Befehls "1" ist. Die arithmetische Verschiebung ist ein Beispiel der Verwendung des ER, die in der Erfindung verwendet wird. Zusätzlich dazu gibt es ein Verfahren, um die Wertigkeit durch eine Operandenmenge zu füllen, ein Verfahren, um das ER mit dem Operanden, wobei dieser bei jedem Befehl in eine fixierte Position gesetzt wird, zu verwenden etc. Das ER kann auch in einem Verfahren verwendet werden, so dass es für den Programmierer auf verschiedene Weisen zugänglich ist. Ist das EF vor dem Ausführen des Befehls "0", so verlängert die CPU das Signal von '123', das ein Operandenteil des Befehls ist, um ein 32-Bit zu machen und es im ER zu speichern. In beiden Fällen ist das EF auf "1" gesetzt.
  • Die Operandenlänge des Befehls "LDERI" wird gemäß der Definition eines anderen Befehls bestimmt, der nicht auf seine Länge in der Erfindung beschränkt ist. Ist das Beispiel gegeben, in welchem die Direktkonstante als Operand im Befehl 'LDERI' verwendet wird, so ist anzumerken, dass verschiedene Arten von Operanden, wie z. B. eine Speicheradresse etc., verwendet werden können. So kann z. B. eine PC-relative Adressierung verwendet werden. Dies bedeutet, dass die Erfindung ein oder eine Vielzahl von Befehlsmittel/n aufweisen kann, um die Daten in das ER zu laden.
  • Die CPU mit einem Verlängerungsbefehl gemäß der Erfindung weist allgemeine Befehle nach dem Stand der Technik auf, worunter ein Befehl, der für variierende Operanden notwendig ist, sich dadurch unterscheidet, dass der Operand gemäß dem EF-Status interpretiert wird. So wird z. B. in der 32-Bit-CPU mit einem Befehl mit einer fixen Länge von 16 Bit ein Befehl 'JMP', der eine fixe Länge von 8 Bit aufweist, wie folgt dargestellt:
    JMP offset
  • Der Befehl 'JMP' ist ein Befehl, der die Reihenfolge der Programme verändert, das den Befehl durchführt, der in einem Offset von der aktuellen Programmposition neben dem Befehl positioniert ist. Die angesprungene Offset-Position liegt innerhalb des Bereichs von –128 Byte bis +127 Byte, da die Offset-Länge durch ein 8-Bit bestimmt ist.
  • In diesem Fall wird das Offset entsprechend dem Status des EF als zwei interpretiert. Zuerst, wenn das 'EF' '0' ist, wird die Offset-Länge als ein 8-Bit interpretiert. Ist das 'EF' '1', so verschiebt die CPU den Wert des ER arithmetisch um 8 Bit nach links und addiert als nächstes das im Befehl dargestellte 8-Bit-Offset, um das Offset zu berechnen. Aus diesem Grund wird der Operand des Befehls so verlängert, dass er ein 32-Bit-Offset aufweist. Die Ausführungsform adaptiert ein Verfahren, in welchem das ER verwendet wird, indem das Verfahren der arithmetischen Verschiebung unter verschiedenen ER-Verwendungsverfahren verwendet wird.
  • Die Distanzen, um die das EF nach links verschoben wird, unterscheiden sich entsprechend dem Befehl. In den vorangegangenen Beispielen bewegt der Befehl 'LDERI' um 14 Bit und der Befehl 'JMP' bewegt um 8 Bit.
  • Das EF-Flag wird durch den Befehl 'LDERI' '1' und '0' in allen Befehlen, die sich auf das EF-Register beziehen, ausgenommen dabei der Befehl 'LDERI'. Aber das EF-Flag kann gemäß dem Verfahren der Ausführungsform verschiedene Werte und verschiedene Aspekte der Ausführungsform, die den Status der Befehlsverlängerung darstellen, aufweisen.
  • Unter Berücksichtigung eines anderen Beispiels, wenn die Operandenlänge von 'LDERI' in einer 64-Bit-CPU mit einem Befehl mit einer fixen Länge von 16 Bit 12 Bit ist, geht man davon aus, dass die Operation der Programme wie folgt verläuft:
    LDERI#opr1: BEFEHL – 1
    LDERI#opr2: BEFEHL – 2
    LDERI#opr3: BEFEHL – 3
    LDERI#opr4: BEFEHL – 4
    JMP Offset: BEFEHL – 5
  • Unter der Annahme, dass das EF vor dem Ausführen des 'BEFEHLS – 1' '0' ist, hat das ER einen Wert, der auf das Signal von 'opr1' durch den 'BEFEHL – 1' auf 64 Bit verlängert ist, und das EF wird '1'. Das ER verschiebt 'opr1' arithmetisch um 12 Bit nach links, da das EF '1' im 'BEFEHL – 1' ist, und hat einen Wert, der 'opr2' addiert. Dies ist ebenfalls ein Beispiel für die arithmetische Verschiebung nach links, das zu den Verfahren der Verwendung von ER gehört. Zu diesem Zeitpunkt sollte, wenn die Ausnahmebedingung auftritt, die Ausnahme-Verarbeitung vorher ausgeführt werden, ohne dass dabei der 'BEFEHL – 3' ausgeführt wird.
  • In der CPU, die einen Verlängerungsbefehl gemäß der Erfindung aufweist, können, da EF und ER Register und Programme sind, die dem Programmierer Zugriff bieten, ihre Inhalte so reserviert werden, indem sie in Stapeln und Puffern des Speichers gespeichert werden. Nachdem die Ausnahmebedingung verarbeitet wurde, wenn die im Stapel und Speicher gespeicherten ER und EF wiedergeladen sind, kann der nächste Befehl 'BEFEHL – 3' richtig ausgeführt werden. Selbst wenn eine andere Ausnahmebedingung während der Ausnahme-Verarbeitung auftritt, werden ER und EF nacheinander gespeichert und wiedergeladen, um die korrekte Ausführung des Programms sicherzustellen. Die Offset-Länge des 'BEFEHLS – 5 beträgt 48 Bit, was dazu führt, dass die Operanden vom 'BEFEHL – 1' bis zum 'BEFEHL – 4' zueinander addiert werden, wozu das 8-Bit-Offset, das der 'BEFEHL – 5' hat, addiert wird, um auf diese Weise die Länge von 56 Bit zu erreichen.
  • Deshalb ist man der Meinung, dass in den CPU mit einem Verlängerungsbefehl gemäß der Erfindung alle Befehle eine fixe Länge aufweisen und unabhängig voneinander ausgeführt werden und über Operanden mit variierender Länge verfügen können.
  • 4 ist ein Blockdiagramm, das eine Registerdatei-Architektur und ein Befehlsformat darstellt, in welchem ein Verlängerungs-Flag gemäß der Ausführungsform einer CPU mit einem Verlängerungsbefehl gesetzt ist.
  • Wie in der Zeichnung veranschaulicht ist, stellt jedes Bit eines Status-Registers einen vorbestimmten Status dar. Hierin ist anzumerken, dass das neunzehnte. Bit ein Verlängerungs-Flag ist, wie es zuvor beschrieben wurde, das bestimmt, ob der nächstbegleitete Befehl einen kürzeren oder einen verlängerten Wert als Offset oder Direktwert annimmt. Natürlich wurde in der Ausführungsform des Bit im Status-Register das neunzehnte. Bit als Flag verwendet, aber dies stellt nur ein Beispiel dar und kann im Wesentlichen in einer Hardware in verschiedenen Verfahren ausgeführt sein.
  • 2 verdeutlicht ein Beispiel dafür, wie eine Befehlskette einer MCU, wie sie in der Ausführungsform verwendet wird, betrieben wird. Wie bereits zuvor beschrieben, wird eine dreistufige Befehlskette verwendet: Abruf → Dekodierung → Ausführung, was bedeutet, dass der Befehl 'Simple', wobei jeder als ein Zyklus genommen wird, abgerufen, dekodiert und ausgeführt wird. LD/ST ist der Befehl, der aus dem Speicher liest/in den Speicher schreibt, wofür zusätzlich noch eine Stufe erforderlich ist, um eine effektive Adresse zu erhalten. Auch unterstützt die CPU den multiplen Verschiebungsbefehl ohne multiplizierende, dividierende und "Barrel"-Verschieber, worin der multiple Befehl ein Befehl ist, der die Ausführung in einem solchen Einfach-Zyklus, in dem die typische Befehlskette für den Befehl dargestellt ist, nicht beenden kann. 3 ist eine schematische Zeitabfolge einer Befehlskette darüber, wie ein Befehl abgerufen, dekodiert und ausgeführt wird.
  • Bis jetzt wurde der allgemeine Operationsablauf der Erfindung beschrieben. Nunmehr wird die Operation eines Verlängerungsbefehls in einer 32-Bit-CPU mit einem Verlängerungsbefehl gemäß der Erfindung im Detail wie folgt beschrieben:
  • Während des Ausführens des allgemeinen Befehls, keines Verlängerungsbefehls, führt, wie zuvor beschrieben, die MCU die folgenden zwei Operationen aus, wenn der Verlängerungsbefehl erzeugt wird.
  • Zuerst wird das neunzehnte. Bit des Status-Registers in '1' ('0' im Fall der negativen Logik) geändert. Ist das neunzehnte. Register auf '1' eingestellt, so, überprüft der nächste Befehl das Flag. Wenn der Befehl die Operation READ/WRITE darstellt, befiehlt er dem ER, ihm den Offset-Wert zuzuweisen, und wenn der Befehl eine interne Operation eines ALSU ist, so befiehlt er dem ER, ihm den Direktwert zuzuweisen.
  • Als zweiter Schritt wird der beabsichtigte Offset- oder Direktwert in das ER gebracht, in welchem sich zwei Fälle ergeben. Im ersten Fall wird der Verlängerungsbefehl anfänglich verwendet, oder der Wert des ER wurde bereits verwendet, selbst wenn der Verlängerungsbefehl im Voraus ausgegeben wurde, und im zweiten Fall wird der ER-Wert nicht verwendet, obwohl der Verlängerungsbefehl bereits im Voraus ausgeführt wurde.
  • Um dies zu erklären, geht man davon aus, dass der Verlängerungsbefehl wie die folgende Tabelle definiert ist.
    Figure 00160001
    Tabelle 1. Beispiel eines Verlängerungsbefehls
  • &
    IR[15 : 14], OP-Code
    *
    IR[13 : 0], Direktdaten
  • Im ersten Fall werden 14 Bit, wie in Tabelle 1 angezeigt, im 13-Bit bis 0-Bit des ER aufgefüllt, wobei die Bits mit hoher Wertigkeit von den Bits mit höchster Wertigkeit der Direktdaten als Signalverlängerung aufgefüllt werden. Im zweiten Fall werden, da die 14-Bits bereits im ER im Voraus aufgefüllt worden sind, die 14 Bits der Direktdaten im 13-Bit bis 0-Bit des ER aufgefüllt, nachdem die 14 Bits nach links verschoben worden sind, um den Wert zu reservieren. Das arithmetische Verschieben wird als Beispiel verwendet. Zusätzlich zu dem bereits oben beschriebenen Verfahren kann das 27-Bit bis 14-Bit für eine Verlängerung aufgefüllt werden, wobei die 13-Bit bis 0-Bit in sich selbst gehalten werden. Durch den obigen Prozess kann die wiederholte Ausführung des Verlängerungsbefehls das Offset und den Direktwert unendlich verlängern.
  • Als nächstes wird die Operation eines Befehls, der nach einem Verlängerungsbefehl erfolgen kann, erklärt.
  • Zuerst wird der Befehl, der in Tabelle 2 angezeigt ist, zum Zwecke der Erklärung definiert, unter Berücksichtigung dessen, wie der Befehl beim Datenverschiebungsbefehl zum Lesen der Daten aus dem Speicher oder Schreiben der Daten in den Speicher als ein Adressen-Offset ausgeführt wird.
    Figure 00170001
    Tabelle 2. Beispiel eines 32-Bit-Befehls zum Laden/Speichern
  • &
    IR[15 : 12], OP-Code (Laden/Speichern)
    #
    IR[11 : 8], Quelle-/Zielregister
    *
    IR[7 : 4], Offset-Daten
    %
    IR[3 : 0], Index-Register
  • Wird der Befehl ausgeführt, so wird das Verlängerungs-Flag, welches das neunzehnte. Bit des Status-Registers ist, zuerst einem Dekodier-Steuerabschnitt 50 zugewiesen. Ist der Flag-Wert auf '0' ('1' im Fall der negativen Logik) eingestellt, so stellt die effektive Adresse einen Wert dar, der das Offset zum Wert des Index-Registers addiert. Hierin ist nur die Datenbreite des Speichers zu berücksichtigen, da verschiedene Konfigurationen verfügbar sind, so z. B. die Konfiguration etc., in welcher die vier 8-Bit-Speicher parallel miteinander verbunden werden können, um dem Benützer die Handhabung zu erleichtern, oder in welchem zwei 16-Byte-Speicher parallel miteinander verbunden werden können. Wie bereits zuvor ausgeführt wurde, beruht die Ausführungsform auf der Annahme, dass vier 8-Bit-Speicher parallel miteinander verbunden werden können. In diesem Fall ist es zum Zeitpunkt des Addierens des Offsets erforderlich, den Offset-Wert um 2 Bits nach links zu verschieben. Somit sind die, 2 Bits mit geringer Wertigkeit bedeutungslos, da der gegenwärtig ausgeführte Befehl ein 32-Bit-Befehl zum Laden/Speichern ist. Ist der Flag-Wert aber '1' ('0' im Fall der negativen Logik), so bedeutet dies, dass der Verlängerungsbefehl nach einer gewissen Zeit ausgeführt wurde, um das Offset so zu verschieben, so dass es beim ER verlängert wird. Aus diesem Grund verschiebt die effektive Adresse den ER-Wert um 4 Bits nach links, wobei die 2 Bits mit geringer Wertigkeit unter den im Befehl umfassten 4 Bits um 2 Bits nach links verschoben werden, um den Wert des Index-Registers dazu zu addieren und danach die effektive Adresse zu erhalten. Natürlich ist bezogen auf die Definition die Menge des ER, die nach links verschoben werden soll, variabel, sie ist aber hierbei so definiert, als ob nur die 4 Bits für die Konsistenz des Befehls verschoben werden. Im Beispiel ermöglicht der 32-Bit-Befehl zum Laden/Speichern, dass der Benützer bis zum Index-Register +63 auf die Adresse zugreifen kann. Überschreitet das Offset aber 63, so wird der Wert, der 15 überschreitet, in das ER verschoben, wobei der Verlängerungsbefehl und der 32-Bit-Befehl zum Laden/Speichern ausgeführt wird, damit der Benützer eine erwünschte Adresse haben kann oder auf diese zugreifen kann. Dies ist als einfacher arithmetischer Ausdruck wie folgt dargestellt:
    When E-Flag is '0'; EA ← (Zero extend IR[7 : 4] &"00") + Rindex When E-Flag is '1'; EA ← (ER << 4 & IR[5 : 4] & "00") + Rindex
  • Zweitens wird in Hinblick darauf, wenn der Direktdatenwert des Datenverschiebungsbefehls geladen wird, der Befehl für sich selbst wie in Tabelle 3 dargestellt definiert.
    Figure 00180001
    Tabelle 3. Beispiel eines Befehls zum Laden von Direktdaten
  • &
    IR[15 : 12], OP-Code (Laden von Direktdaten)
    #
    IR[11 : 8], Zielregister
    *
    IR[7 : 0], kodierte Direktdaten
  • Wie aus Tabelle 3 ersichtlich ist, kann ein mit einem Vorzeichen versehener 7-Bit-Direktwert, z. B. –256 bis +255, durch den Befehl zum Laden der Direktendaten in das Zielregister geladen werden. Liegt der erforderliche Direktwert außerhalb eines Bereichs von –256 bis +255, so wird der Verlängerungsbefehl zuerst ausgeführt, um den erwünschten Direktwert in das ER zu verschieben, und danach wird der Befehl zum Laden der Direktdaten ausgeführt, um den erwünschten Direktwert zu erhalten. In diesem Fall wird der Befehl zum Laden der Direktdaten am Befehlsregister 40 gespeichert. Um diesen auszuführen, wird das neunzehnte. Bit des Status-Registers zugewiesen, wenn der Dekodier-Steuerabschnitt 50 ein Steuersignal erzeugt. Ist der Flag-Wert auf '0' gesetzt ('1' im Fall der negativen Logik), so wird der Direktwert im Befehl, z. B. –256 bis +255, in das Zielregister geladen und um 4 Bits nach links verschoben, und danach werden die 4 Bit mit niedriger Wertigkeit des Befehls in die verschobene Position aufgefüllt, um eine erwünschte Größe des Direktwerts zu laden. Natürlich ist bezogen auf die Definition des Befehls die Menge des nach links zu verschiebenden ER oder der darin aufzufüllende Wert ziemlich veränderbar. Wird der 32-Bit-Direktwert vom definierten Befehl angefordert, so wird der Verlängerungsbefehl zwei Mal ausgeführt, um die 24 Bit mit hoher Wertigkeit in das ER zu verschieben. Danach wird der Befehl zum Laden der Direktdaten ausgeführt, um den 32-Bit-Direktwert zu erhalten. Dies ist als einfacher arithmetischer Ausdruck wie folgt dargestellt:
    When E-Flag is '0'; Rdst ← Sign extend IR[7 : 0]When E-Flag is '1'; Rdst ← ER << 4 & IR[3 : 0]
  • Drittens wird im Fall eines ALU-Befehls der Befehl, wie in Tabelle 4 dargestellt, wie folgt definiert:
    Figure 00200001
    Tabelle 4. Beispiel eines ALU-Befehls
  • &
    IR[15 : 8], OP-Code (ALU-Befehl)
    #
    IR[7 : 4], Zielregister
    *
    IR[3 : 0], wenn E = '0'. Quellenregister außer einem Direktregister
  • Im Allgemeinen wird der Operand des ALU-Befehls in verschiedene Arten wie folgt klassifiziert:
    • (1) Berechnung zwischen zwei Registern
    • (2) Berechnung mit den Werten eines Registers und der Direktdaten
    • (3) Berechnung mit den Inhalten eines Registers und eines Speichers
  • Aber in einer allgemeinen RISC-Architektur greift der Befehl, außer der Befehl zum Laden-Speichern, nicht auf den Speicher zu. Somit wird die hierin in der Architektur als Beispiel angeführte ALU-Berechnung ebenfalls gemäß den Charakteristiken des allgemeinen RISC, die, wie in Tabelle 4 dargestellt ist, als ein Befehl dargestellt ist, in zwei Arten klassifiziert. Der ALU-Befehl wird am Befehlsregister 40 gespeichert. Erzeugt der Dekodier-Steuerabschnitt 50 zum Ausführen ein Steuersignal, so wird das Verlängerungs-Flag des Status-Register zugewiesen. Ist das Verlängerungs-Flag '0' (im Fall der positiven Logik), so bedeutet der Befehl die Berechnung zwischen zwei Registern. Ist das Verlängerungs-Flag '1', so bedeutet der Befehl die Berechnung mit den Werten eines Registers und der Direktdaten. Im ersten Fall wird ein beliebiges der 16 Register durch die 4 Bit vom dritten Bit bis zum niedrigsten Bit des Befehls ausgewählt, um die Berechnung mit dem Zielregister (IR[7 : 4]) auszuführen, damit der sich ergebende Wert im Zielregister aufgezeichnet werden kann. Im Gegensatz dazu bedeutet der zweite Fall, dass das Zielregister und das ER- Register zugewiesen werden, um ihre Inhalte zu dem Direktwert zu addieren. Anders gesagt, wird die Berechnung mit dem Direktdatenwert ausgeführt, so wird zuerst der Verlängerungsbefehl ausgeführt, um eine erwünschte Menge in das ER zu verschieben, und danach wird der ALU-Befehl ausgeführt. Das Beispiel ist als einfacher arithmetischer Ausdruck wie folgt dargestellt:
    When E-Flag is '0'; Rdst ← RSTC + Rdst When E-Flag is '1'; Rdst ← (ER << 4 & IR[3 : 0]) + Rdst
  • Viertens wird in Hinblick auf das Beispiel einer Sprunganweisung der Befehl wie in Tabelle 5 angezeigt für sich selbst definiert.
    Figure 00210001
    Tabelle 5. Beispiel einer Sprunganweisung
  • &
    IR[15 : 8], OP-Code (Sprunganweisung)
    *
    IR[7 : 0], Offset-Daten
  • Es können verschiedene Arten von Sprunganweisungen vorliegen, aber der PC(Programmzähler)-relative Befehl wird als Beispiel verwendet, wie dies in Tabelle 5 dargestellt ist. Der Befehl wird am Befehlsregister 40 gespeichert. Erzeugt der Dekodier-Steuerabschnitt 50 zum Ausführen ein Steuersignal, so wird das Verlängerungs-Flag darin zugewiesen. Ist das Verlängerungs-Flag '0', so wird das 8-Bit mit einem Vorzeichen in einen Programmzähler addiert. So kann z. B. der Bereich von –512 bis +511 in den Programmzähler gesprungen werden. Die Gründe dafür, dass die Datenlänge 8 Bit und der Bereich –512 bis +511 beträgt, liegen darin, dass die für die Ausführungsform adaptierte Architektur den 16-Bit-Befehl verwendet und vier Speicher mit einer Datenbreite von 8 Bit parallel miteinander verbunden werden sollen.
  • Dies ist deshalb, weil das Bit mit geringster Wertigkeit bedeutungslos ist, weil der wesentliche Offset-Wert augrund des Auffüllens der Bits mit geringster Wertigkeit mit '0' 9 Bit wird. Im Gegensatz dazu wird, wenn das Verlängerungs-Flag '1' ist, das ER-Register auf dem Programmzähler zugewiesen, um den Offset-Wert zu addieren, um eine effektive Adresse zu erzeugen, die angesprungen wird. Anders gesprochen, liegt die anzuspringende Adresse außerhalb eines Bereichs von –512 bis +511, so wird der Verlängerungsbefehl zuerst ausgeführt, um eine erwünschter Menge in das ER zu verschieben, und danach wird die Sprunganweisung ausgeführt, um das erforderliche Offset zu erhalten. Der Fall ist wie folgt als einfacher arithmetischer Ausdruck dargestellt:
    When E-Flag is '0'; EA ← (Sign extend IR[7 : 0] & '0') + PCWhen E-Flag is '1'; EA ← (ER << 9 & IR[7 : 0] & '0') + PC
  • Bis jetzt wurde in verschiedenen typischen Arten vieler Befehle anhand von einigen Beispielen erklärt, wie der Verlängerungsbefehl adaptiert ist. Obwohl hierin nicht erklärt, kann der Befehl, der für das Offset oder den Direktwert erforderlich ist, für eine Adaption des Verlängerungsbefehls im selben Verfahren wie zuvor durchgeführt werden, und man geht nicht davon aus, dass die verlängerbare Menge begrenzt ist.
  • In Hinblick darauf, wie zu verfahren ist, wenn die Ausnahmebedingung bei Ausführung des Befehls auftritt, liegt der Kern des Problems darin, wie der Status gehalten wird, bis die Verarbeitung der Ausnahmebedingung beendet ist, wenn die Ausnahmebedingung während der Ausführung des Verlängerungsbefehls auftritt, und wie der Offset- oder der Direktwert nach der Verarbeitung der Ausnahmebedingung wieder hergestellt wird. Wie bereits zuvor beschrieben wurde, verwendet die Erfindung ein Verlängerungs-Flag und ein ER, um die obig angesprochenen Probleme einer Lösung zuzuführen. Damit diese Lösungen ausgeführt werden können, wird das ER in das SPR eingesetzt, und ein Bit im Status-Register wird be stimmt, als das in 4 dargestellte Verlängerungs-Flag verwendet zu werden. Natürlich ist dies ein einfaches Beispiel, um die Erklärung für zahlreiche Verfahren, die in ihrer Ausführungsform die Hardware der Erfindung aufweisen, zu vereinfachen.
  • Gemäß der Erfindung werden die meisten MUC dazu verwendet, einige Elemente in einen Stapelbereich zu speichern, um zu verhindern, dass der fortschreitende Programmablauf vor der Verarbeitung der Ausnahmebedingung verloren geht, wenn die Ausnahmebedingung auftritt. Die Architektur der Ausführungsform speichert auch die Werte des Programmzählers und das Status-Register in den Stapelbereich. Somit kann, wenn die Werte des Programmzählers und des Status-Registers wieder empfangen werden, die Erfindung beide Probleme lösen, sowohl dass der Verlängerungs-Flag-Wert zugewiesen wird, um den Status zu halten, wenn die Ausnahmebedingung während des Ausführens des Verlängerungsbefehls auftritt, als auch dass das ER in der Software zugänglich ist, um den ER-Wert vor der Verarbeitung der Ausnahmebedingung in den Stapelbereich zu verschieben, und danach den ER-Wert aus dem Stapelbereich wiederherstellt, nachdem die Verarbeitung der Ausnahmebedingung stattgefunden hat.

Claims (23)

  1. Verfahren zur Verlängerung eines allgemeinen Befehls in einem Zentralprozessor (CPU), wobei das Verfahren Folgendes umfasst: das Empfangen eines Verlängerungsbefehls; das Setzen eines Verlängerungs-Flags in Reaktion auf den Empfang des Verlängerungsbefehls; das Speichern im Verlängerungsbefehl enthaltener Verlängerungsdaten in einem Verlängerungsregister in Reaktion auf den Empfang des Verlängerungsbefehls; das Empfangen des allgemeinen Befehls; das Erzeugen eines verlängerten Befehls, wenn das Verlängerungs-Flag gesetzt ist, umfassend: 1) zumindest einen Teil des allgemeinen Befehls, und 2) zumindest einen Teil der Verlängerungsdaten im Verlängerungsregister; dadurch gekennzeichnet, dass das Verlängerungsregister für den Programmierer zugänglich ist.
  2. Verfahren nach Anspruch 1, worin das Verlängerungs-Flag in einem Sonder-Register beinhaltet ist.
  3. Verfahren nach einem der Ansprüche 1 oder 2, worin der Verlängerungs-Flag ein einzelnes Bit in einem Sonder-Register ist.
  4. Verfahren nach einem der Ansprüche 1 bis 3, worin die CPU eine 32-Bit-CPU ist.
  5. Verfahren nach einem der Ansprüche 1 bis 3, worin die CPU eine 64-Bit-CPU ist.
  6. Verfahren nach einem der Ansprüche 1 bis 3, worin die CPU eine 128-Bit-CPU ist.
  7. Verfahren nach einem der vorhergehenden Ansprüche, worin das Verlängerungs-Flag den Zugang zum Verlängerungsregister steuert.
  8. Zentraleinheit (CPU) umfassend: einen Befehlssatz zum Betreiben der CPU; ein oder mehrere Sammelleitungsmedien für die Kommunikation in der CPU; ein Verlängerungsregister zum Speichern von Verlängerungsdaten, wobei das Verlängerungsregister an zumindest eines des/der einzelnen oder mehreren Sammelleitungsmedien gekoppelt ist; ein Verlängerungsbefehl aus dem Befehlssatz, wobei der Verlängerungsbefehl einen Verlängerungsoperationscode und ein oder mehrere Verlängerungsoperationsfelder aufweist, so dass der Verlängerungsoperationscode der CPU befiehlt, im Verlängerungsbefehl eingeschlossene Verlängerungsdaten mit zumindest einem Teil eines allgemeinen Befehls aus dem Befehlssatz zu verketten, um einen verlängerten Befehl auszubilden; dadurch gekennzeichnet, dass das Verlängerungsregister für den Programmierer zugänglich ist.
  9. CPU gemäß Anspruch 8 mit einem Befehlsregister, das über zumindest eines des/der einen oder mehreren Sammelleitungsmedien mit dem Verlängerungsregister kommuniziert, wobei das Befehlsregister ein oder mehrere Verlängerungsoperationsfelder des Verlängerungsbefehls speichert.
  10. CPU nach einem der Ansprüche 8 oder 9, die einen Verlängerungs-Flag beinhaltet, der den Status des Verlängerungsregisters als aktiv oder inaktiv anzeigt.
  11. CPU nach Anspruch 10, worin das Verlängerungs-Flag ein einzelnes Bit in einem Sonder-Register ist.
  12. CPU nach einem der Ansprüche 8 bis 11, worin die CPU eine 32-Bit-CPU ist.
  13. CPU nach einem der Ansprüche 8 bis 11, worin die CPU eine 64-Bit-CPU ist.
  14. CPU nach einem der Ansprüche 8 bis 11, worin die CPU eine 128-Bit-CPU ist.
  15. CPU nach einem der Ansprüche 8 bis 14 umfassend: eine Registerdatei, die eine Vielzahl von allgemeinen Registern einschließt; einen Operationsprozessor, um die in der Registerdatei gespeicherten Daten operational zu verarbeiten; und eine Befehls-Dekodier- und -Steuereinheit zum Dekodieren des allgemeinen Befehls, um ein Steuersignal zu erzeugen und die Operationen des Operationsprozessors auf Basis des Steuersignals zu steuern, worin der allgemeine Befehl ein allgemeines Operationsfeld einschließt, in dem ein allgemeiner Operationscode und ein allgemeiner Operand gespeichert sind; der Verlängerungsbefehl ein Verlängerungsoperationsfeld einschließt, in dem ein Verlängerungsoperationscode und ein Verlängerungsoperand gespeichert sind; der Verlängerungsoperationscode in der Befehls-Dekodier und -Steuereinheit empfangen und dekodiert werden kann, um dadurch den Verlängerungsoperanden im Verlängerungsregister als Verlängerungsdaten zu speichern; und der allgemeine Operand und die Verlängerungsdaten während der Ausführung des allgemeinen Befehls, nachdem der Verlängerungsbefehl ausgeführt worden ist, operational verarbeitet werden können, wobei das operational verarbeitete Ergebnis als Operand für den verlängerten Befehl verwendet werden kann.
  16. CPU nach Anspruch 15, worin im Verlängerungsregister gespeicherte Verlängerungsdaten in einem Speicher oder einem allgemeinen Register gespeichert werden können und in einem allgemeinen Register oder Speicher gespeicherte Daten im Verlängerungsregister als Verlängerungsdaten gespeichert werden können.
  17. CPU nach einem der Ansprüche 15 oder 16, worin die durch einen vorhergehend ausgeführten Verlängerungsbefehl im Verlängerungsregister gespeicherten Verlängerungsdaten und der Verlängerungsoperand eines auszuführenden Verlängerungsbefehls operational verarbeitet werden können, wobei das operational verarbeitete Ergebnis als Verlängerungsdaten im Verlängerungsregister gespeichert werden kann.
  18. CPU nach einem der Ansprüche 15 bis 17, worin, je nach Wert der während der Ausführung des allgemeinen Befehls im Verlängerungsregister gespeicherten Verlängerungsdaten, der allgemeine Operand als Operand für die Ausführung des verlängerten Befehls verwendet wird, oder der allgemeine Operand und die im Verlängerungsregister gespeicherten Verlängerungsdaten operational verarbeitet werden und das operational verarbeitete Ergebnis als ein Operand für den verlängerten Befehl verwendet wird.
  19. CPU nach einem der Ansprüche 15 bis 18, worin, je nach Wert der während der Ausführung des Verlängerungsbefehls im Verlängerungsregister gespeicherten Verlängerungsdaten, der Verlängerungsoperand als Verlängerungsdaten im Verlängerungsregister gespeichert ist, oder der Verlängerungsoperand und die bereits im Verlängerungsregister gespeicherten Verlängerungsdaten werden operational verarbeitet und das operational verarbeitete Ergebnis wird als Verlängerungsdaten im Verlängerungsregister gespeichert.
  20. CPU nach einem der Ansprüche 15 bis 19, worin die im Verlängerungsregister gespeicherten Verlängerungsdaten und der allgemeine Operand operational verarbeitbar sind, um Folgendes zu erzeugen: einen Operanden zum Ausführen des verlängerten Befehls, und Daten, die im Verlängerungsregister gespeichert werden können und anzeigen, dass das Verlängerungsregister leer ist.
  21. CPU nach einem der Ansprüche 15 bis 20 mit einem Verlängerungs-Flag, das durch den Verlängerungsbefehl aktiviert wird, worin 1) wenn das Verlängerungs-Flag den Status des Verlängerungsregisters als inaktiv (z. B. sein Wert = 0) anzeigt: der Verlängerungsoperationscode durch die Befehls-Dekodier- und -Steuereinheit dekodiert werden kann, um den Verlängerungsoperanden im Verlängerungsregister als Verlängerungsdaten zu speichern und das Verlängerungs-Flag zu aktivieren, und der allgemeine Operand als der Operand für den verlängerten Befehl verwendet wird; oder 2) wenn das Verlängerungs-Flag den Status des Verlängerungsregisters als aktiv (z. B. sein Wert = 1) anzeigt: der allgemeine Operand und die im Verlängerungsregister gespeicherten Verlängerungsdaten operational verarbeitet werden und das operational verarbeitete Ergebnis als ein Operand für den verlängerten Befehl verwendet wird, und das Verlängerungs-Flag deaktiviert wird.
  22. CPU nach Anspruch 21, die einen Befehl einschließt, der den Zustand des Verlängerungs-Flags verändern kann.
  23. CPU nach einem der Ansprüche 21 oder 22, worin, je nach Status des Verlängerungs-Flags, der Verlängerungsoperand als Verlängerungsdaten im Verlängerungsregister gespeichert wird, oder der Verlängerungsoperand und die bereits im Verlängerungsregister gespeicherten Verlängerungsdaten operational verarbeitet werden und das operational verarbeitete Ergebnis als Verlängerungsdaten im Verlängerungsregister gespeichert wird.
DE69918033T 1998-11-20 1999-11-19 Zentrale Verarbeitungseinheit mit Befehl zur Datenverlängerung Expired - Lifetime DE69918033T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1019980049999A KR100322277B1 (ko) 1998-11-20 1998-11-20 확장 명령어를 가진 중앙처리장치
KR9849999 1998-11-20

Publications (2)

Publication Number Publication Date
DE69918033D1 DE69918033D1 (de) 2004-07-22
DE69918033T2 true DE69918033T2 (de) 2005-01-27

Family

ID=19559171

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69918033T Expired - Lifetime DE69918033T2 (de) 1998-11-20 1999-11-19 Zentrale Verarbeitungseinheit mit Befehl zur Datenverlängerung

Country Status (5)

Country Link
US (1) US6499099B1 (de)
EP (1) EP1003094B1 (de)
JP (1) JP2000200196A (de)
KR (1) KR100322277B1 (de)
DE (1) DE69918033T2 (de)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001142695A (ja) * 1999-10-01 2001-05-25 Hitachi Ltd 記憶場所への定数のロード方法、宛先記憶場所への定数のロード方法、レジスタへの定数のロード方法、符号ビット数の決定方法、2進数の正規化方法、及びコンピュータシステム内の命令
US6775414B1 (en) 1999-11-19 2004-08-10 Ati International Srl Variable-length code decoder
KR20010091132A (ko) * 2000-03-13 2001-10-23 구자홍 마이크로 프로세서의 데이터 연산 처리기
US7069422B2 (en) * 2000-12-22 2006-06-27 Modelski Richard P Load-shift carry instruction
JP4542722B2 (ja) * 2001-04-25 2010-09-15 富士通株式会社 命令処理方法
EP1629408B1 (de) * 2003-05-30 2015-01-28 Privaris, Inc. System und verfahren zum zuweisen und nutzen von medieninhalt-abonnementdienst-privilegien
US20060277396A1 (en) * 2005-06-06 2006-12-07 Renno Erik K Memory operations in microprocessors with multiple execution modes and register files
JP5217431B2 (ja) * 2007-12-28 2013-06-19 富士通株式会社 演算処理装置及び演算処理装置の制御方法
US8352952B2 (en) * 2008-12-01 2013-01-08 Citrix Systems, Inc. Systems and methods for facilitating virtualization of a heterogeneous processor pool
US9477476B2 (en) * 2012-11-27 2016-10-25 Qualcomm Incorporated Fusing immediate value, write-based instructions in instruction processing circuits, and related processor systems, methods, and computer-readable media
US8935781B1 (en) * 2013-02-01 2015-01-13 Google Inc. Native code module security for arm 64-bit instruction set architectures
US20150019845A1 (en) * 2013-07-09 2015-01-15 Texas Instruments Incorporated Method to Extend the Number of Constant Bits Embedded in an Instruction Set
CN108415729A (zh) * 2017-12-29 2018-08-17 北京智芯微电子科技有限公司 一种cpu指令异常的处理方法及装置

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4694391A (en) * 1980-11-24 1987-09-15 Texas Instruments Incorporated Compressed control decoder for microprocessor system
US4445177A (en) * 1981-05-22 1984-04-24 Data General Corporation Digital data processing system utilizing a unique arithmetic logic unit for handling uniquely identifiable addresses for operands and instructions
US4794517A (en) * 1985-04-15 1988-12-27 International Business Machines Corporation Three phased pipelined signal processor
EP0461257B1 (de) * 1989-01-17 1997-04-23 Fujitsu Limited Ablaufsteuerung zur decodierung von befehlen variabler länge für ein mikroprozessor
US5001662A (en) * 1989-04-28 1991-03-19 Apple Computer, Inc. Method and apparatus for multi-gauge computation
JPH04172533A (ja) * 1990-11-07 1992-06-19 Toshiba Corp 電子計算機
JPH05197545A (ja) * 1991-12-10 1993-08-06 Mitsubishi Electric Corp マイクロコンピュータ
US5878266A (en) * 1995-09-26 1999-03-02 Advanced Micro Devices, Inc. Reservation station for a floating point processing unit
JP3711422B2 (ja) * 1995-12-20 2005-11-02 セイコーエプソン株式会社 情報処理回路

Also Published As

Publication number Publication date
EP1003094A3 (de) 2002-09-25
JP2000200196A (ja) 2000-07-18
DE69918033D1 (de) 2004-07-22
KR19990046225A (ko) 1999-07-05
EP1003094A2 (de) 2000-05-24
KR100322277B1 (ko) 2002-03-08
EP1003094B1 (de) 2004-06-16
US6499099B1 (en) 2002-12-24

Similar Documents

Publication Publication Date Title
DE69729974T2 (de) Datenverarbeitungsschaltung, Mikrocomputer und elektronische Einrichtung
DE69738188T2 (de) Verfahren und apparat für eine erhöhte genauigkeit bei der verzweigungsvorhersage in einem superskalaren mirkroprozessor
DE3851746T2 (de) Sprungvorhersage.
DE69801673T2 (de) Co-prozessordatenzugangskontrolle
DE69534113T2 (de) Kompression der Befehlswörter eines Rechners
DE69530520T2 (de) Computerprogrammprodukt zur Verwendung von Mehrfachbefehlssätzen
DE2903349C2 (de) Prozessor und Verfahren zur Datenverarbeitung
DE3687666T2 (de) Verzweigungssteuerung in einem dreiphasen-pipeline-signalprozessor.
DE69918033T2 (de) Zentrale Verarbeitungseinheit mit Befehl zur Datenverlängerung
DE19735350A1 (de) Einzelbefehl-Mehrdaten-Verarbeitung bei einem Multimedia-Signalprozessor
DE2630323B2 (de) Datenspeichereinrichtung mit einem Hauptspeicher, einem Hilfsspeicher und einer Vorausschaulogik
DE69418146T2 (de) Temporärer Registersatz für einen superpipeline-superskalaren Prozessor
DE602004004101T2 (de) Bearbeitung von message-digest-befehlen
DE69636268T2 (de) Informationsverarbeitungsgerät zur Datenübertragung zu/von mehreren Registern durch Kurzwortbefehle
DE69616867T2 (de) Prozessor, der schnell von Unterprogrammen zurückkehrt, und Programmübersetzungsgerät, das Maschinenprogramme erzeugt, die schnell von Unterprogrammen zurückkehren
DE69732793T2 (de) Acht-bit-mikrokontroller mit risc-architektur
DE69524379T2 (de) Verarbeitungssystem mit ausgerichtetem wortverzweigungsziel
DE69816775T2 (de) Vorrichtung zur datenverarbeitung mit stapelstruktur
DE69804562T2 (de) Prozessarchitektur und Verfahren zur Durchführung von verschiedenen Adressierungsarten
DE69807412T2 (de) Prozessorarchitekturschema und Befehlssatz zur Maximierung verfügbarer Opcodes und zum Einsetzen verschiedener Adressierungsmodi
DE69229424T2 (de) Adressengeneration in einer Datenverarbeitungseinheit
DE69825461T2 (de) Verfahren und gerät zum transferieren von daten zwischen einem registerstapel und einer speicherquelle
DE3686984T2 (de) Verfahren und mittel zum laden und speichern von daten in einem rechner mit beschraenktem befehlssatz.
DE10001168A1 (de) Ausgabe-Fifo-Datenübertragungssteuereinrichtung
DE69622608T2 (de) Informationsprozessor

Legal Events

Date Code Title Description
8364 No opposition during term of opposition