DE69804562T2 - Prozessarchitektur und Verfahren zur Durchführung von verschiedenen Adressierungsarten - Google Patents

Prozessarchitektur und Verfahren zur Durchführung von verschiedenen Adressierungsarten

Info

Publication number
DE69804562T2
DE69804562T2 DE69804562T DE69804562T DE69804562T2 DE 69804562 T2 DE69804562 T2 DE 69804562T2 DE 69804562 T DE69804562 T DE 69804562T DE 69804562 T DE69804562 T DE 69804562T DE 69804562 T2 DE69804562 T2 DE 69804562T2
Authority
DE
Germany
Prior art keywords
indirect addressing
addressing
virtual register
pointer
memory
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
DE69804562T
Other languages
English (en)
Other versions
DE69804562D1 (de
Inventor
Sumit K. Mitra
Joseph W. Triece
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.)
Microchip Technology Inc
Original Assignee
Microchip Technology 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 Microchip Technology Inc filed Critical Microchip Technology Inc
Application granted granted Critical
Publication of DE69804562D1 publication Critical patent/DE69804562D1/de
Publication of DE69804562T2 publication Critical patent/DE69804562T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime 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
    • 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/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30138Extension of register space, e.g. register cache
    • 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
    • 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/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • 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/35Indirect addressing

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)

Description

  • Diese Erfindung bezieht sich im Allgemeinen auf Prozessoren und, spezifischer, auf ein Prozessorarchitektursystem und ein Verfahren, welches die Kodierung mehrfacher Adressierungsarten durch virtuelle Registeradressen ermöglicht, um die Anzahl direkt adressierbarer Register im Prozessorarchitektursystem zu maximieren.
  • Allgemeines lässt sich sagen, dass ein Prozessor eine Einheit ist, in der eine Zentralprozesseinheit (CPU) vorhanden ist und dazu verwendet wird, gespeicherte Befehlen oder Mikrobefehle abzuholen und auszuführen. Einige Beispiele für Prozessoren sind Mikrocontroller, Mikroprozessoren und Digitale - Signal - Prozessoren. Jede Art Prozessor operiert auf Daten, die im Allgemein auch als Operanden bezeichnet werden. Diese Daten werden im Allgemeinen in Registern oder im Speicherraum gespeichert.
  • Eine Befehl weist die CPU eines Prozessors an, sowohl eine bestimmten Operation auszuführen, als auch einen oder mehrere Operand(en) für die Operation zu identifizieren. Prozessoren bieten verschiedene Mittel für das Adressieren der Daten für einen Operation an. Diese Mittel werden allgemein als Adressierungsarten bezeichnet. Die Adressierungsarten werden gewöhnlich für arithmetische und logische Operationen und Datentransfer Operationen verwendet und können auf einen Quelloperand, eine Zielortoperand oder beide zutreffen.
  • Das Problem gegenwärtigen Prozessorarchitekturschemata ist, dass das Hinzufügen oder das Ändern von Adressierungsarten extrem schwierig ist. Ohne größere Änderungen an der Befehlssatzorganisation sind solche Änderungen und Hinzufügungen zu den Adressierungsarten nicht möglich. Änderungen an der Befehlsatzstruktur sind jedoch nicht wünschenswert, da viele Werkzeuge wie Assembler und Compiler auch drastische Änderungen erfordern würden.
  • Ein anderes Problem der herkömmlichen Verfahren zur Kodierung von Adressierungsarten in einen Befehl ist, dass sich die Anzahl direkt adressierbarer "Register" erheblich vermindern. Wenn z. B. 8-Bits in einem Befehlswort vorhanden sind um einen Registeroperand zu spezifizieren, wäre es möglich, 256 Register direkt zu adressieren. Wird jedoch zwecks andere Adressierungsarten eines der 8-Bits zu diesem Zweck entnommen, so können nur noch 128 Register direkt adressiert werden.
  • In vorhandenen Prozessorarchitekturschemata in denen alternative Adressierungsarten vorhanden sind, wird die Kodierung durch "Steuerregister" realisiert, um die Zahl direkt adressierbarer Register zu maximieren. Jedoch verursacht dieses dennoch ein anderes Problem, da die "Vorwahl" der indirekten Adressierungsarten statisch (bis zu einer Rekonfigurierung) und nicht von Befehl zu Befehl dynamisch ist.
  • Folglich bestand eine Notwendigkeit einen verbesserten Mikrocontrollerarchitekturschema zur Verfügung zu stellen. Das verbesserte Mikrocontrollerarchitekturschema muss es dem Benutzer erlauben, Adressierungsarten hinzuzufügen und zu ändern. Das verbesserte Mikrocontrollerarchitekturschema muss es dem Benutzer weiterhin erlauben, Adressierungsarten auf einer Befehl - zu - Befehl Basis dynamisch zu ändern.
  • US Dokument US 4,047,245 beschreibt eine System zur indirekten Adressierung dedizierter Speicherorte das einen Multiplexer enthält, der zwischen dem Speicheradressenausgangsregister einer Zentralprozesseinheit (CPU) und der Adresseingabe des Speichers angeordnet ist. Einige Speicherorte sind für indirekte Adressierungsfunktionen dediziert. Dieses Dokument stellt, wie zuvor aufgezeigt, keine Lösung zur Verfügung, die es dem Benutzer erlaubt den Adressierungsmodus dynamisch auf einer Befehl - zu - Befehl Basis zu ändern.
  • In Übereinstimmung mit einer Ausführungsform der vorliegenden Erfindung, ist es Gegenstand der vorliegenden Erfindung eine verbessertes Verfahren zur Kodierung mehrerer Adressierungsarten und eines Prozessor- oder Mikrocontrollerarchitekturschema zur Verfügung zu stellen.
  • Ein weiterer Gegenstand der vorliegenden Erfindung ist, ein verbessertes Verfahren und ein Prozessor- oder Mikrocontrollerarchitekturschema zur Verfügung zu stellen, das es dem Benutzer erlaubt, Adressierungsarten hinzuzufügen und zu ändern.
  • Ein ebenfalls weiterer Gegenstand der vorliegenden Erfindung ist, ein verbessertes Verfahren und ein Prozessor- oder Mikrocontrollerarchitekturschema zur Verfügung zu stellen, dass es dem Benutzer erlaubt, Adressierungsarten hinzuzufügen und zu ändern, wobei die Anzahl direkt adressierbaren Registern maximiert wird.
  • Ein ebenfalls weiterhin Gegenstand der vorliegenden Erfindung ist, die zuvor erwähnten Verbesserungen des Verfahrens und einem Prozessor- oder Mikrocontrollerarchitekturschema unter Beibehalten der Fähigkeit Adressierungsarten auf einer Befehl - zu - Befehl Basis dynamisch auszuwählen, zur Verfügung zu stellen.
  • In Übereinstimmung mit einer Ausführungsform der vorliegenden Erfindung, wird ein Prozessorarchitekturschema, die Kodierung mehrfacher Adressierungsarten durch Verwendung virtueller Registeradressen, um die Anzahl der direkt adressierbaren Register im Prozessorarchitekturschema zu maximieren, offenbart. Das Verfahren beinhaltet folgende Schritte: Zur Verfügung stellen eines für den Prozessor ausführbaren Befehlsatzes; Dedizieren eines ersten Abschnittes eines jeden Befehls des Befehlsatzes zur Kennzeichnung, wo jeweiliger Befehl ausgeführt werden soll; Erstellen eines indirekten Adressierungszeigers im Speicher; und Erstellen eines dedizierten Satzes der virtuellen Registeradressen im Speicher gleich einer Anzahl indirekten Adressierungsarten, welche mit dem indirekten Adressierungszeiger verbunden sind, worin jede der virtuellen Registeradressen eine indirekte Adressierungsart vorschreibt, die mit dem indirekte Adressierungszeiger verwendet wird, falls der Zugriff hierdurch erfolgt, und hierdurch Flexibilität erlaubt auf einer Befehl - zu - Befehl Basis eine Adressierungsart dynamisch auszuwählen.
  • In Übereinstimmung mit einer weiteren Ausführungsform der vorliegenden Erfindung, wird ein Prozessor oder Prozessorarchitekturschema, das die Kodierung mehrfacher Adressierungsarten durch Verwendung von virtuellen Registeradressen ermöglicht, um die Anzahl der direkt adressierbaren Register im Prozessorarchitekturschema zu maximieren, offenbart. Der Prozessor oder das Prozessorarchitekturschema verwendet für die Ausführung der Befehl eine Zentralprozesseinheit. Eine Speichereinheit wird mit der CPU zur Speicherung von Daten verbunden. Ein Zeigerregister wird im Speicher für die Speicherung einer Adressort erstellt, an der die Befehl zugreifbar sind, wenn eine Adresse, die über das Zeigerregister zugeordnet ist, aufgerufen wird im Speicher werden dedizierte virtuelle Registeradresse Orten erstellt. Die dedizierten virtuellen Registeradressorten, die dem Zeigerregister zugeordnet sind, bestimmen die indirekten Adressierungsarten die mit dem Zeigerregister zu verwenden sind, wenn auf eine der dedizierten Adressorten zugegriffen wird, wobei Flexibilität der dynamisch Auswahl einer Adressierungsarten auf einer Befehl - zu - Befehl Basis ermöglicht wird.
  • Die vorangehenden und andere Gedanken, Eigenschaften und Vorteile der Erfindung werden im folgenden aus der weitergehenden Beschreibung der bevorzugten Ausführungsformen der Erfindung, die in den zugehörigen Zeichnungen veranschaulicht werden, offensichtlich.
  • Fig. 1 zeigt ein einfaches Blockdiagramm, das eine typische Kodierung eines Befehls im Stand der Technik darstellt.
  • Fig. 2 zeigt ein einfaches Blockdiagramm, welches die Kodierung eines Befehls unter Verwendung der vorliegenden Erfindung darstellt.
  • Fig. 3 zeigt ein einfaches Blockdiagramm der Datenspeicherkarte unter Verwendung der vorliegenden Erfindung.
  • Bezugnehmend auf Fig. 1 wird ein typischer von einem Prozessor auszuführender Befehl 10 des Standes der Technik gezeigt. Die Befehl 10 enthält eine Mehrzahl von Bits 12. Die Bits 12 werden im Allgemeinen in drei Hauptfelder geteilt: (1) ein Befehlscode - Feld 14, (2) ein Register - oder Datenadressfeld 16 und ein (3) Adressierungsart - Feld 18. Das Befehlscode - Feld 14 ist eine Anzahl Bits 12, welche die vom Prozessor auszuführende Operation spezifizieren. Im allgemeinen gibt es drei Hauptarten von Operationen: (1) Arithmetik- und Logikoperationen (d. h., addieren, subtrahieren, usw.); (2) Datentransferoperationen; und (3) Programmsteuerung (z. B., Verzweigungsoperationen). Das Register- oder Datenadressfeld 16 weist auf den Operand (d. h., Daten), auf denen die Operation durchgeführt werden soll, hin. Es ist möglich mehr als ein Register- oder Datenadressfeld 16 zu haben. Es kann z. B. ein Quelladressfeld und ein Zieladressefeld geben.
  • Der Befehl 10, der in Fig. 1 gezeigt wird, hat eine Befehlsbreite von 16 Bits. Das 7. Bit im Befehl 10 wird benutzt, um eine Adressierungsart auszuwählen. Wenn das 7. Bit null (0) ist, wird direktes Adressieren impliziert. Daher bilden die Bits < 6:0> eine 7-Bit Registers Adresse, die 128 Register zulässt. Wenn das 7. Bit eins (1) ist wird eine indirekte Adresse impliziert. Hier kodieren die Bits < 6:0> sowohl die Datenzeigeradresse als auch Inkrementierung/Dekrementierung Optionen des Zeigers.
  • Im der Stand der Technik werden 8-Bits des Befehl verwendet, um den "OP-Code" zu kodieren. Folglich verbleiben 8-Bits zur Adressierung von Registerorten. Mit diesen 8 Bits konnten bis zu 256 Register in der Architektur aufgenommen werden. Da jedoch das 7. Bit als Adressierungsart - Bit benutzt wird um zwischen indirekten Adressieren und direkten Adressieren zu unterscheiden, können nur 128 Register aufgenommen werden. Durch Einführung eines Adressierungsart - Bit wird die Anzahl der adressierbaren Registern auf die Hälfte verringert. Außerdem ist das Ändern oder das Hinzufügen von Adressierungsarten extrem schwierig. Ohne große Änderungen an der Befehlsatzorganisation, sind die Änderungen oder das Hinzufügung von Adressierungsarten nicht möglich. Eine Änderung an der Befehlsatzstruktur ist nicht wünschenswert, da viele Werkzeuge wie Assembler oder Compiler auch drastische Änderungen erfordern würden.
  • Eine Verbesserung zur Adressierungsart - Bit wurde von MICROCHIP TECHNOLOGY in ihren PIC17C42A Mikrocontrollern eingeführt. In der Befehlskodierung war die Registeradresse eine direkte Adresse, es sei denn, die Adresse entsprach einer spezifischen Adressort (d. h. 00 hex), in diesem Fall war die Adresse indirekt. Wenn die Adresse 00 hex ist, stammt die Registeradresse von einem Zeigerregister. Die Option das Zeigerregister zu inkrementieren oder dekrementieren wird durch ein Steuerregister festgelegt. Mehrere Steuerbits im Steuerregister legen fest, ob eine Postautoinkrement oder eine Postautodekrement auf dem Zeigerwert erfolgt soll, oder ob der Zeigerwert unverändert gelassen werden soll.
  • Ein Hauptnutzen des MICROCHIP-TECHNOLOGY PICI7C42A Mikrocontrollers ist, dass jeder Befehl nun auf die volle Anzahl von 256 Register zugreifen kann. Nur ein der Adressen wird reserviert und ist keine wirklicher Adressort, um indirekte Adresse zu implementieren. Jedoch ist eine bedeutende Beeinträchtigung zu diesem Kodierungsschema, dass die Inkrement/Dekrement Optionen des Zeigerregister festgelegt und durch die Steuerbits im Steuertegister vorgegeben sind. Diese Optionen sind nicht · dynamisch, wo bei jedem Befehl der Benutzer eine Auswahl über die Inkrement und Dekrement Option treffen könnte.
  • Bezugnehmend auf Fig. 2 wird ein durch das Prozessorarchitekturschema der vorliegenden Erfindung auszuführender Befehl 20 gezeigt. Der Befehl 20 enthält eine Mehrzahl von Bits 22. Die Bits 22 werden im Allgemeinen in drei Hauptfelder aufgeteilt: (1) ein Befehlscode- Feld 24, das anzeigt, welche Art von Operation ausgeführt wird, (2) ein Zielort 26, der angibt, wo das Resultat der Prozessoroperation gespeichert wird, und (3) ein Registeradressfeld 28, das die Adresse der Register- oder Datenvariable anzeigt, auf die der Befehl 20 operieren soll. In der bevorzugten Ausführungsform der vorliegenden Erfindung, ist der Befehl ein 16 Bit Befehl.
  • Bezugnehmend auf Fig. 3 wird ein Datenregisterregister 36 in Datenspeicher 30 eingeführt. Der Datenspeicher 30 enthält eine Mehrzahl von Adressorten 32. In der in Fig. 3 gezeigt Ausführungsform, ist der Speicher ein linearer 4K Speicher, welcher in eine Mehrzahl von Seiten 34 aufgeteilt ist, worin jede Seite 34 256 Adressorte 32 hat. Das Datenzeigerregister 36 hat eine oder mehr virtuellen Registeradressorte 33, die in der Registeradressekarte reserviert sind. Jeder reservierte virtuelle Registeradresseort 33 leitet eine indirekte Adressierungsart ein, wenn auf ihn zugegriffen wird.
  • Momentan gibt es fünf Hauptarten von Adressierungsarten: einfaches indirektes Adressieren, indirektes Adressieren mit Autopostinkrement, indirektes Adressieren mit Autopostdekrement, indirektes Adressieren mit Autopreinkrement und indirektes Adressieren mit einem Offset. Bei einer einfachen indirekten Adressierungsart wird die Adresse des Operanden im Datenzeigerregister 36 gehalten. Die CPU 38 greift zuerst auf das Datenzeigerregister 36 zu, um die Adresse zu erhalten, und greift unter Verwendung dieser Adresse auf den Operanden zu. Das indirekte Adressieren mit Autoinkrement oder Autodekrement sind Formen indirekter Adressierung, bei denen das Datenzeigerregister 36 entweder vor dem Datenzugriff (d. h., Prae - Inkrement oder Prae - Dekrement) oder nach dem Datenzugriff (d. h., Post-Inkrement oder Post-Dekrement) inkrementiert oder dekrementiert wird. In einer indirekten Adressierungsart mit Offset, wird die Adresse der Operand berechnet, indem man einen Offsetwert zum Inhalt des Datenzeigerregisters 36 addiert. Der Offsetwert kann in der Befehl eingebettet werden oder kann aus einem anderen Register stammen. In der vorliegenden Ausführungsform stammt der Offsetwert aus dem "W" Register, welches das Speicher oder "Arbeits-" Register ist. Das Datenzeigerregister 36 kann, wie zuvor, vor oder nach dem Operand Zugang inkrementiert oder dekrementiert werden.
  • Das Datenzeigerregister 36 erfordert für jede indirekte Adressierungsart, die das Datenzeigerregister 36 realisiert, eine getrennte virtuelle Registeradressort 33 im Datenspeicher 30. In der bevorzugten Ausführungsform der vorliegenden Erfindung, werden fünf virtuelle Registeradressorte 33 benötigt, um die fünf indirekten Adressierungsarten zu realisieren, die oben besprochen wurden. Jedoch können abhängig von dem Gebrauch des Datenzeigerregister 36 sowohl zusätzliche als auch wenigere indirekte Adressierungsarten realisiert werden. Außerdem können zusätzliche Datenzeigerregister 36 in Datenspeicher 30 realisiert werden. Jedes Datenzeigerregister 36 hat eine oder mehr virtuellen Registeradressorte 33, die im Registeradressekarte reserviert werden. Jeder reservierte virtuelle Registeradresseort 33 initiiert eine indirekte Adressierungsart für das dazugehörige Datenzeigerregister 36, wenn auf ihn zugegriffen wird. Jedes Datenzeigerregister 36 ist eine lesbarer und schreibbarer Adressort. In der bevorzugten Ausführungsform der vorliegenden Erfindung, ist jedes Datenzeigerregister 36 ein 12 Bit breiter Zeiger, der es ermöglicht auf einen 4K Bytes großen Speicherbereichs zuzugreifen. Folglich wird jedes Datenzeigerregister 36 aus zwei 8 Bit breiten Register (hohes Byte und niedriges Byte) organisiert, die als lesbare und schreibbare Register zugänglich sind. In der bevorzugten Ausführungsform der vorliegenden Erfindung werden also 7 Adressorte verwendet, um ein 12 Bits breites Datenregister mit fünf indirekten Adressierungsarten zu realisieren.
  • Die vorliegende Erfindung maximiert die Anzahl der Registeradressen, die als universelle Register verwendet werden können. In der Befehlskodierungstechnik unter Verwendung · der bevorzugten Ausführungsform des vorliegenden Verfahren, sind 8 Bits vorhanden, um einen Datenspeicher oder -register zu adressieren. Hierdurch werden bis zu 256 Register ermöglicht. Da 7 der Register benutzt werden, um die verschiedenen indirekten Adressierungsschemata zu realisieren; sind 249 direkt adressierbare Register möglich. Zusätzliches Datenzeigerregister 36 können ohne weiteres hinzugefügt werden, ohne die Anzahl der direkt adressierbaren Register drastisch zu vermindern. Die vorliegende Erfindung erhöht in einem großen Maß die Anzahl der adressierbaren Register gegenüber dem in Fig. 1 dargestellt Beispiel aus dem Stand der Technik.
  • Die vorliegende Erfindung erlaubt die Flexibilität des Hinzufügens oder des Entfernens indirekter Register. Da die indirekten Register nicht im Befehl selbst kodiert werden, sondern durch speziellen Registeradressen verschlüsselt sind, ist es möglich, neue Datenzeigerregister 36 hinzuzufügen. Zwei unterschiedliche Produkte, die auf dem gleichen Prozessor basieren, können so einfacher unterschiedliche Anzahlen von Datenzeigerregistern besitzen als herkömmliche Verfahren.
  • Die vorliegende Erfindung erlaubt auch die Flexibilität des Hinzufügens, des Löschens oder der Änderung von Adressierungsarten. Gleich wie Datenzeigerregister 36 leicht hinzugefügt oder gelöscht werden können, können leicht verschiedene Adressierungsarten hinzugefügt oder gelöscht werden. Alles, was zur Hinzufügung einer neuen Adressierungsart benötigt wird, ist eine neue Datenadressort als spezielle Adresse zu kennzeichnen.
  • Mit der vorliegenden Erfindung ist es möglich, Adressierungsarten und Register zu mischen und anzupassen. Adressierungsarten aus dem Stand der Technik, wenn sie als Teil eines Instruktionsformats kodiert werden, sind ziemlich starr. Mit der vorliegenden Erfindung ist es möglich, jede mögliche Zahl von Zeigerregister zu besitzen, wobei jedes jegliche Zahl und Art indirekten Adressieren unterstützt. Die Gesamtsumme der Datenzeigerregister 36 und der Adressierungsarten werden nur durch praktische Betrachtungen der Menge der Schaltlogik und der zur Realisierung hierfür benötigten Schaltkreise begrenzt.
  • Die vorliegende Erfindung erlaubt auch die Flexibilität jede indirekte Adressierungsart auf einer Befehl - zu - Befehl zu verwenden. PIC17C42A Mikrocontroller aus dem Stand der Technik verwendet ein spezielles Steuerregister, um die Variationen des indirekten Adressierens zu steuern. Die Beschränkung hiervon ist, dass sobald die Steuerbits für einen spezifischen Modus eingestellt sind, alle Befehlen nur den ausgewählten Modus verwenden können, bis die Steuerbits geändert werden. Dieses verringert die Wahl von Adressierungsarten in einem gegebenen Segment des Codes auf tatsächlich eine, da es impraktikabel ist, die Steuerbits häufig zu ändern. In der vorliegenden Erfindung wird jede Variation des indirekten Adressierens eine einzigartige Registeradresse zugeordnet. So ist es möglich, jede indirekte Adressierungsart in jedem Befehl zu verwenden.
  • Unter Bezugnahme auf Fig. 3 wird die Arbeitsweise der vorliegenden Erfindung besprochen. Innerhalb der ersten Seite (d. h., Speicherbank 0), sind die ersten 128 Orten für spezielle Funktionsregister reserviert. An diese Orten sind auch die speziellen indirekten Adressen lokalisiert. Ein oder mehr Datenzeigerregister 36 befinden sich in diesem Bereich. Jedes Datenzeigerregister 36 hat eine oder mehr virtuellen Registeradressorte 33, die in der Registeradressekarte reserviert sind, um indirekte Adressieren zu initiieren. Falls auf keine der indirekten Adressierenden Orte zugegriffen wird, findet direkte Adressieren statt. Wenn eine Befehl auf einen der reservierten Adressorte zugreift (d. h., Adresse < 4:0> in Fig. 3), muss eine indirekte Adressierungsart mit dem dazugehörigen Datenzeigerregister 36 verwendet werden. Wenn z. B. der Befehl "ADDIERE W, 12h" ist, addiert der Befehl normalerweise den Inhalt von "W" mit dem Inhalt in der Adresse 12h und legt die Antwort in "W" ab. Da jedoch die Adresse 12h ein reservierter Adressort für das Datenzeigerregister 36 an den Adressen 10h, 11h ist, wird "W" dem Inhalt des tatsächlichen Ortes hinzugefügt, auf den durch die Daten des Datenzeigerregister 36 an den Adressen 10h, 11h verwiesen wird. Die Summe wird dann in "W" gespeichert. Adresse 12h legt auch fest, dass ein Post- Inkrementierung beteiligt ist. Folglich wird dann das Datenzeigerregister 36 an den Adressen 10h, 11h automatisch um 1 inkrementiert.

Claims (21)

1. Verfahren zum Kodieren mehrerer Adressierungsarten durch die Verwendung virtueller Registeradressen, um die Anzahl direkt adressierbarer Register in einer Prozessorarchitektur zu maximieren, wobei das Verfahren die Schritte umfasst:
Bereitstellen eines durch einen Prozessor auszuführenden Befehlssatzes;
Verwenden eines ersten Abschnitts (27) jedes Befehls (20) des Befehlssatzes zur Kennzeichnung, wo jeder Befehl (20) ausgeführt werden soll;
dadurch gekennzeichnet, dass das Verfahren die Schritte umfasst:
Einrichten eines indirekten Adressierungszeigers im Speicher (30); und
Einrichten einer dedizierten Gruppe der virtuellen Registeradressen in dem Speicher (30), deren Anzahl der Anzahl an indirekten Adressierungsarten, die mit den indirekten Adressierungszeigern verknüpft sind, entspricht, wobei jede der virtuellen Registeradressen eine im Zusammenhang mit dem indirekten Adressierungszeiger zu verwendende indirekte Adressierungsart vorgibt, wenn darauf zugegriffen wird, um dadurch eine Flexibilität bei der Auswahl der Adressierungsarten in dynamischer Weise von Befehl zu Befehl zu ermöglichen.
2. Verfahren nach Anspruch 1, bei dem der Schritt des Einrichtens einer dedizierten Gruppe von virtuellen Registeradressen in dem Speicher (30) weiterhin den Schritt umfasst, eine virtuelle Registeradresse zum Bewirken einer einfachen indirekten Adressierung zu dedizieren, wenn auf diese zugegriffen wird.
3. Verfahren nach Anspruch 1, bei dem der Schritt des Einrichtens einer dedizierten Gruppe von virtuellen Registeradressen in dem Speicher (30) weiterhin den Schritt umfasst, eine virtuelle Registeradresse zum Bewirken einer indirekten Adressierung mit automatischer nachfolgender Inkrementierung (auto post increment) zu dedizieren, wenn auf dieses zugegriffen wird
4. Verfahren nach Anspruch 1, bei dem der Schritt des Einrichtens einer dedizierten Gruppe von virtuellen Registeradressen in dem Speicher (30) weiterhin den Schritt umfasst, eine virtuelle Registeradresse zum Bewirken einer indirekten Adressierung mit automatischer nachfolgender Dekrementierung (auto post decrement) zu dedizieren, wenn auf diese zugegriffen wird.
5. Verfahren nach Anspruch 1, bei dem der Schritt des Einrichtens einer dedizierten Gruppe von virtuellen Registeradressen in dem Speicher (30) weiterhin den Schritt umfasst, eine virtuelle Registeradresse zum Bewirken einer indirekten Adressierung mit automatischer vorhergehender Inkrementierung (auto pre increment) zu dedizieren, wenn auf dieses zugegriffen wird.
6. Verfahren nach Anspruch 1, bei dem der Schritt des Einrichtens einer zugewiesenen Gruppe von virtuellen Registeradressen in dem Speicher (30) weiterhin den Schritt umfasst, eine virtuelle Registeradresse zum Bewirken einer indirekten Adressierung mit Offset zu verwenden, wenn auf dieses zugegriffen wird.
7. Verfahren nach Anspruch 1, bei dem der Schritt des Einrichtens eines indirekten Adressierungszeigers in dem Speicher (30) weiterhin den Schritt umfasst, einen indirekten Adressierungszeiger einzurichten, der ein indirekter Adressierungszeiger mit 12 Bit Breite ist.
8. Verfahren nach Anspruch 1, das weiterhin die Schritte umfasst:
Einrichten mehrerer indirekter Adressierungszeiger in dem Speicher (30); und
Einrichten einer dedizierten Gruppe von virtuellen Registeradressen in dem Speicher (30), deren Anzahl einer totalen Anzahl von indirekten Adressierungsarten entspricht, die mit den mehreren indirekten Adressierungszeigern verknüpft sind, wobei jede virtuelle Registeradresse eine im Zusammenhang mit dem indirekten Adressierungszeiger zu verwendende indirekte Adressierungsart vorgibt, wenn darauf zugegriffen wird, um dadurch eine Flexibilität bei der Auswahl der Adressierungsarten dynamisch von Befehl zu Befehl zu ermöglichen.
9. Verfahren nach Anspruch 8, bei dem der Schritt des Einrichtens einer dedizierten Gruppe von virtuellen Registeradressen in dem Speicher (30), deren Anzahl einer totalen Anzahl von indirekten Adressierungsarten, die mit den mehreren indirekten Adressierungszeigern verknüpft sind, weiterhin den Schritt umfasst, eine indirekte Adressierungsart für jede der virtuellen Registeradressen auszuwählen.
10. Verfahren nach Anspruch 9, bei dem der Schritt des Auswählens einer indirekten Adressierungsart für jede der virtuellen Registeradressen weiterhin den Schritt umfasst, eine indirekte Adressierungsart aus den folgenden auszuwählen: einfache indirekte Adressierung, indirekte Adressierung mit automatischer nachfolgender Inkrementierung (auto post increment), indirekte Adressierung mit automatischer nachfolgender Dekrementierung (auto post decrement), indirekte Adressierung mit automatischer vorhergehender Inkrementierung (auto pre increment) und indirekte Adressierung mit Offset.
11. Verfahren nach Anspruch 9, bei dem der Schritt des Einrichtens mehrerer indirekter Adressierungszeiger in dem Speicher (30) weiterhin den Schritt umfasst, mehrere indirekte Adressierungszeiger einzurichten, die indirekte Adressierungszeiger mit 12 Bit Breite sind.
12. Prozessor, der das Kodieren mehrerer Adressierungsarten durch die Verwendung virtueller Registeradressen ermöglicht, um die Anzahl direkt adressierbarer Register in dem Prozessor zu maximieren und der in Kombination aufweist:
eine zentrale Verarbeitungseinheit (38) zum Ausführen eines Befehls (20);
einen an die zentrale Verarbeitungseinheit (38) gekoppelten Speicher zum Speichern von Daten;
ein Zeigerregister (36) in dem Speicher (30) zum Speichern eines Ortes, auf den ein Befehl (20) zugreifen soll, wenn auf eine mit dem Zeigerregister (36) verknüpfte Adresse zugegriffen wird;
dadurch gekennzeichnet, dass der Prozessor aufweist:
dedizierte virtuelle Registeradressorte (33) in dem Speicher (30) die zu dem Zeigerregister (36) gehören, das eine im Zusammenhang mit dem Zeigerregister (36) zu verwendende indirekte Adressierungsart vorgibt, wenn auf einen der dedizierten Adressorte (33) zugegriffen wird, um dadurch eine Flexibilität bei der Auswahl von Adressierungsarten dynamisch von Befehl zu Befehl zu gewährleisten.
13. Prozessor nach Anspruch 12, der weiterhin einen virtuellen Registeradressort (33) aufweist, bei dem eine einfache indirekte Adressierung durchgeführt wird, wenn auf diesen zugegriffen wird.
14. Prozessor nach Anspruch 12, der weiterhin einen virtuellen Registeradressort (33) aufweist, bei dem eine indirekte Adressierung mit automatischer nachfolgender Inkrementierung durchgeführt wird, wenn auf diesen zugegriffen wird.
15. Prozessor nach Anspruch 12, der weiterhin einen virtuellen Registeradressort (33) aufweist, bei dem eine indirekte Adressierung mit automatischer nachfolgender Dekrementierung durchgeführt wird, wenn auf diesen zugegriffen wird.
16. Prozessor nach Anspruch 12, der weiterhin einen virtuellen Registeradressort (33) aufweist, bei dem eine indirekte Adressierung mit automatischer vorhergehender Inkrementierung durchgeführt wird, wenn auf diesen zugegriffen wird.
17. Prozessor nach Anspruch 12, der weiterhin einen virtuellen Registeradressort (33) aufweist, bei dem eine indirekte Adressierung mit Offset durchgeführt wird, wenn auf diesen zugegriffen wird.
18. Prozessor nach Anspruch 12, bei dem das Zeigerregister (36) ein Zeigerregister mit 12 Bit Breite ist.
19. Prozessor nach Anspruch 12, der weiterhin aufweist:
mehrerer Zeigerregister (36) in dem Speicher (30);
dedizierte virtuelle Registeradressorte (33) in dem Speicher (30), deren Anzahl der totalen Anzahl indirekter Adressierungsarten, die den mehreren Zeigerregistern (36) zugewiesen sind, entspricht, wobei jeder zugewiesene Adressort (33) eine indirekte Adressierungsart vorgibt, die im Zusammenhang mit einem zugehörigen Zeigerregister der mehreren Zeigerregister (36) verwendet werden soll, wenn darauf · zugegriffen wird, um dadurch eine Flexibilität beim Auswählen von Adressierungsarten dynamisch von Befehl zu Befehl zu ermöglichen.
20. Prozessor nach Anspruch 19, bei dem jeder der mehreren Zeigerregister (36) Zeigerregister mit 12 Bit Breite sind.
21. Prozessor nach Anspruch 19, bei dem jeder der dedizierten virtuellen Registeradressorte (33) in dem Speicher (30), deren Anzahl einer totalen Anzahl der zu den mehreren Zeigerregistern (36) gehörenden indirekten Adressierungsarten entspricht, eine der folgenden indirekten Adressierungsarten durchführt: einfache indirekte Adressierung, indirekte Adressierung mit automatischer nachfolgender. Inkrementierung, indirekte Adressierung mit automatischer nachfolgender Dekrementierung, indirekte Adressierung mit automatischer vorhergehender Inkrementierung und indirekte Adressierung mit Offset.
DE69804562T 1997-10-07 1998-09-28 Prozessarchitektur und Verfahren zur Durchführung von verschiedenen Adressierungsarten Expired - Lifetime DE69804562T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US08/946,426 US6192463B1 (en) 1997-10-07 1997-10-07 Processor architecture scheme which uses virtual address registers to implement different addressing modes and method therefor

Publications (2)

Publication Number Publication Date
DE69804562D1 DE69804562D1 (de) 2002-05-08
DE69804562T2 true DE69804562T2 (de) 2002-11-21

Family

ID=25484456

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69804562T Expired - Lifetime DE69804562T2 (de) 1997-10-07 1998-09-28 Prozessarchitektur und Verfahren zur Durchführung von verschiedenen Adressierungsarten

Country Status (7)

Country Link
US (2) US6192463B1 (de)
EP (1) EP0908812B1 (de)
JP (1) JPH11224193A (de)
KR (1) KR19990036893A (de)
AT (1) ATE215713T1 (de)
DE (1) DE69804562T2 (de)
TW (1) TW405075B (de)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6192463B1 (en) * 1997-10-07 2001-02-20 Microchip Technology, Inc. Processor architecture scheme which uses virtual address registers to implement different addressing modes and method therefor
US6560698B1 (en) * 1999-05-07 2003-05-06 Advanced Micro Devices, Inc. Register change summary resource
US20040030963A1 (en) * 2002-08-12 2004-02-12 Sun Microsystems, Inc., A Delaware Corporation Method and apparatus for debugging computer program
US7437532B1 (en) * 2003-05-07 2008-10-14 Marvell International Ltd. Memory mapped register file
WO2005043383A1 (en) 2003-10-23 2005-05-12 Microchip Technology Incorporated Microcontroller instruction set
US20050172064A1 (en) * 2004-01-29 2005-08-04 Marcelo Krygier Method and apparatus for addressing in mass storage non-volatile memory devices
US20070266225A1 (en) * 2006-05-09 2007-11-15 Ko Tak K V Microcontroller unit
US8004988B2 (en) * 2007-11-21 2011-08-23 Microchip Technology Incorporated Ethernet controller
US7908458B2 (en) * 2007-11-21 2011-03-15 Microchip Technology Incorporated Ethernet controller
US7996651B2 (en) * 2007-11-30 2011-08-09 Microchip Technology Incorporated Enhanced microprocessor or microcontroller
US8539210B2 (en) * 2007-11-30 2013-09-17 Microchip Technology Incorporated Context switching with automatic saving of special function registers memory-mapped to all banks
US8209521B2 (en) * 2008-10-18 2012-06-26 Micron Technology, Inc. Methods of indirect register access including automatic modification of a directly accessible address register
US8938590B2 (en) 2008-10-18 2015-01-20 Micron Technology, Inc. Indirect register access method and system
US8402249B1 (en) * 2009-10-19 2013-03-19 Marvell International Ltd. System and method for mixed-mode SDRAM address mapping
GB2540948B (en) * 2015-07-31 2021-09-15 Advanced Risc Mach Ltd Apparatus with reduced hardware register set

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4047245A (en) 1976-07-12 1977-09-06 Western Electric Company, Incorporated Indirect memory addressing
US4240142A (en) 1978-12-29 1980-12-16 Bell Telephone Laboratories, Incorporated Data processing apparatus providing autoincrementing of memory pointer registers
US5142633A (en) 1989-02-03 1992-08-25 Digital Equipment Corporation Preprocessing implied specifiers in a pipelined processor
JPH02266421A (ja) * 1989-04-07 1990-10-31 Ricoh Co Ltd 画像形成装置
US5381537A (en) * 1991-12-06 1995-01-10 International Business Machines Corporation Large logical addressing method and means
JPH08180001A (ja) * 1994-04-12 1996-07-12 Mitsubishi Electric Corp 通信方式及び通信方法及びネットワークインタフェース
US5715418A (en) * 1994-07-27 1998-02-03 Seagate Technologies, Inc. Autonomous high speed linear space address mode translation for use with a computer hard disc system
US5568651A (en) * 1994-11-03 1996-10-22 Digital Equipment Corporation Method for detection of configuration types and addressing modes of a dynamic RAM
JP3451595B2 (ja) * 1995-06-07 2003-09-29 インターナショナル・ビジネス・マシーンズ・コーポレーション 二つの別個の命令セット・アーキテクチャへの拡張をサポートすることができるアーキテクチャ・モード制御を備えたマイクロプロセッサ
US5860155A (en) 1995-11-16 1999-01-12 Utek Semiconductor Corporation Instruction decoding mechanism for reducing execution time by earlier detection and replacement of indirect addresses with direct addresses
US5835970A (en) * 1995-12-21 1998-11-10 Cypress Semiconductor Corp. Burst address generator having two modes of operation employing a linear/nonlinear counter using decoded addresses
US5809546A (en) * 1996-05-23 1998-09-15 International Business Machines Corporation Method for managing I/O buffers in shared storage by structuring buffer table having entries including storage keys for controlling accesses to the buffers
US5978836A (en) * 1997-07-28 1999-11-02 Solectron Corporation Workflow systems and methods
US6192463B1 (en) * 1997-10-07 2001-02-20 Microchip Technology, Inc. Processor architecture scheme which uses virtual address registers to implement different addressing modes and method therefor
US6128727A (en) * 1998-08-21 2000-10-03 Advanced Micro Devices, Inc. Self modifying code to test all possible addressing modes

Also Published As

Publication number Publication date
EP0908812A3 (de) 1999-12-08
US6192463B1 (en) 2001-02-20
ATE215713T1 (de) 2002-04-15
EP0908812A2 (de) 1999-04-14
EP0908812B1 (de) 2002-04-03
US6578139B1 (en) 2003-06-10
JPH11224193A (ja) 1999-08-17
DE69804562D1 (de) 2002-05-08
KR19990036893A (ko) 1999-05-25
TW405075B (en) 2000-09-11

Similar Documents

Publication Publication Date Title
DE69804562T2 (de) Prozessarchitektur und Verfahren zur Durchführung von verschiedenen Adressierungsarten
DE2542740C2 (de) Datenverarbeitungsanlage mit einer Mikroprogrammsteuerung
DE3486399T2 (de) Zentrale Verarbeitungseinheit mit der Fähigkeit, Befehle mit variablen Längen zu unterstützen.
DE69833008T2 (de) Prozessor mit instruktionskodierung mittels eines schablonenfeldes
DE69230057T2 (de) Risc mikroprozessorarchitektur mit mehrere registersätze von unterschiedlichen typen
DE69433339T2 (de) Lade-/Speicherfunktionseinheiten und Datencachespeicher für Mikroprozessoren
DE69621493T2 (de) Hardwareunterstützung zur schnellen Emulation von nicht-implementierten Befehlen
DE3851746T2 (de) Sprungvorhersage.
CH650600A5 (de) Zentralprozessoreinheit einer datenverarbeitungsanlage mit operationscode-erweiterungsregister.
DE69028269T2 (de) Virtuelles Adressierungsverfahren zum Betrieb eines Speichers in einer Datenverarbeitungsanlage und Einrichtung zur Ausführung besagten Verfahrens
DE2524229A1 (de) Datenverarbeitungssystem mit pyramidenfoermiger hierarchie des steuerflusses
DE2230102A1 (de) Rechenwerk fuer variable wortlaengen
DE2540975A1 (de) Multi-mikro-prozessor-einheit
DE3689389T2 (de) Datenverarbeitungsprozessor.
DE2910839A1 (de) Einrichtung zur ausfuehrung einer speziellen verzweigungsinstruktion
DE2318069A1 (de) Rechnersteuersystem unter verwendung von mikroprogrammierung und statisch/dynamischer erweiterung von steuerfunktionen mittels festverdrahteter logischer matrix
DE69616718T4 (de) Vorrichtung und verfahren zur bestimmung von adressen fehlausgerichteter daten
DE3856139T2 (de) Mikroprozessor
DE2556617C2 (de) Schiebe- und Rotierschaltung
DE69807412T2 (de) Prozessorarchitekturschema und Befehlssatz zur Maximierung verfügbarer Opcodes und zum Einsetzen verschiedener Adressierungsmodi
DE69231237T2 (de) Datenverarbeitungsvorrichtung
DE69824032T2 (de) Computer-prozessor und verfahren zum kontinuierlichen schreiben und lesen von daten
DE3688806T2 (de) Instruktionsprozessor.
DE69918033T2 (de) Zentrale Verarbeitungseinheit mit Befehl zur Datenverlängerung
DE68925376T2 (de) In Direktabbildung und in Bankabbildung wirksamer Informationsprozessor und Verfahren zum Schalten der Abbildungsschemas

Legal Events

Date Code Title Description
8328 Change in the person/name/address of the agent

Representative=s name: DF-MP, 80333 MUENCHEN