DE69804562T2 - Prozessarchitektur und Verfahren zur Durchführung von verschiedenen Adressierungsarten - Google Patents
Prozessarchitektur und Verfahren zur Durchführung von verschiedenen AdressierungsartenInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims description 23
- 230000008859 change Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000007796 conventional method Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 238000007792 addition Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30101—Special purpose registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30138—Extension of register space, e.g. register cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30189—Instruction operation extension or modification according to execution mode, e.g. mode flag
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/35—Indirect 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.
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)
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)
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 |
-
1997
- 1997-10-07 US US08/946,426 patent/US6192463B1/en not_active Expired - Lifetime
-
1998
- 1998-09-28 EP EP98118314A patent/EP0908812B1/de not_active Expired - Lifetime
- 1998-09-28 DE DE69804562T patent/DE69804562T2/de not_active Expired - Lifetime
- 1998-09-28 AT AT98118314T patent/ATE215713T1/de not_active IP Right Cessation
- 1998-10-07 KR KR1019980041806A patent/KR19990036893A/ko not_active Application Discontinuation
- 1998-10-07 JP JP10285657A patent/JPH11224193A/ja not_active Withdrawn
- 1998-10-13 TW TW087116582A patent/TW405075B/zh not_active IP Right Cessation
-
2000
- 2000-10-18 US US09/691,375 patent/US6578139B1/en not_active Expired - Lifetime
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 |