PatentDe  


Dokumentenidentifikation DE102004054562A1 24.05.2006
Titel Verfahren und Vorrichtung zur Adressierung von Registern eines Prozessors
Anmelder Infineon Technologies AG, 81669 München, DE
Erfinder Nie, Xiaoning, Dr.-Ing., 85579 Neubiberg, DE
Vertreter Patent- und Rechtsanwälte Kraus & Weisert, 80539 München
DE-Anmeldedatum 11.11.2004
DE-Aktenzeichen 102004054562
Offenlegungstag 24.05.2006
Veröffentlichungstag im Patentblatt 24.05.2006
IPC-Hauptklasse G06F 12/10(2006.01)A, F, I, 20051017, B, H, DE
Zusammenfassung Zur Adressierung eines Registerspeichers in einem Prozessor wird vorgeschlagen, logische Registeradressen (LRA) über eine Zuordnungstabelle (242) einer physikalischen Registeradresse (PRA) zuzuordnen. Ein durch die logischen Registeradressen (LRA) definierter logischer Adressraum und ein durch die physikalischen Adressen (PRA) definierter physikalischer Adressraum sind vorzugsweise in Seiten gleicher Größe unterteilt. Die Zuordnungstabelle (242) ordnet für jede logische Registeradresse (LRA) einen ersten Adressabschnitt der logischen Registeradresse (LRA) einem Bereich des Registerspeichers zu, wobei der Adressabschnitt der logischen Registeradresse (LRA) insbesondere eine logische Seitennummer (LPN) darstellen kann und einer physikalischen Seitennummer (PPN) zugeordnet wird. Die physikalische Registeradresse (PRA) ergibt sich dann aus der physikalischen Seitennummer (PPN) und einem Adressversatz (RO), welcher es ermöglicht, ein bestimmtes Register innerhalb der durch die physikalische Seitennummer (PPN) identifizierten Seite des Registerspeichers zu adressieren.

Beschreibung[de]

Die vorliegende Erfindung betrifft ein Verfahren zur Adressierung von Registern eines Prozessors sowie eine entsprechende Vorrichtung, wobei insbesondere die Möglichkeit geschaffen wird, einen vergrößerten Registerspeicher zu adressieren.

Ein typischer Prozessor für elektronische Datenverarbeitungsanwendungen umfasst eine Befehlsaufnahmeeinheit, eine Befehlsdecodierungseinheit, einen Registerspeicher und eine Ausführungseinheit. Ein dem Stand der Technik entsprechender Aufbau ist in 3 schematisch dargestellt. Die Befehlsaufnahmeeinheit 220' entnimmt einen Befehl einem Programmcodespeicher 210' und leitet ihn an die Befehlsdecodierungseinheit 230' weiter. Die Befehlsdecodierungseinheit 230' extrahiert aus dem Befehl Registeradressen RA, welche Registern 0'15' des Registerspeichers 100' zugewiesen sind. Ein Befehl kann eine oder mehrere Registeradressen enthalten, wobei die durch diese Registeradressen RA adressierten Register 0'15' Daten enthalten, welche für die Ausführung des Befehls benötigt werden, bzw. zur Aufnahme eines Ergebnisses der Befehlsausführung bestimmt sind. Die Befehlsdecodierungseinheit 230' erzeugt abhängig von dem jeweiligen Befehl Steuersignale zur Adressierung des Registerspeichers 100' und Steuersignale für die Ausführungseinheit 260'.

Die Ausführungseinheit 260' des Prozessors nimmt Daten aus den adressierten Registern 0'15' auf, verarbeitet sie entsprechend dem jeweiligen Befehl und schreibt das Ergebnis der Verarbeitung in ein Register, welches in dem Befehl ebenfalls durch eine entsprechende Registeradresse RA identifiziert ist. Somit erfolgt eine Übertragung von Daten DAT von dem Registerspeicher 100 zu der Ausführungseinheit 260' und umgekehrt von der Ausführungseinheit 260' zu dem Registerspeicher 100'.

Ein einfaches Beispiel für einen Befehl ist

ADD R3 R2 R1,

wobei R1, R2 und R3 Registeradressen RA bezeichnen, welche in dem Befehl enthalten sind. Genauer veranlasst dieser Befehl eine Addition des Inhalts des Registers R1 zu dem Inhalt des Registers R2, wobei das Ergebnis der Addition in dem Register R3 gespeichert wird. Wenn der Registerspeicher 100' wie in 3 dargestellt 16 Register 0'15' aufweist, können die Register 0'15' unter Verwendung einer Registeradresse RA mit vier Bit Länge adressiert werden. Bei dem oben angegebenen Beispielbefehl würden somit zwölf Bit für die Codierung der Registeradressen in dem Befehl erforderlich sein.

Bei dem Registerspeicher handelt es sich um einen lokalen Speicher des Prozessors, auf welchen Zugriffe mit einer hohen Geschwindigkeit möglich sind. Der Zugriff auf den lokalen Registerspeicher erfolgt insbesondere mit einer deutlich höheren Geschwindigkeit als der Zugriff auf einen externen Speicher.

Die Verarbeitungsgeschwindigkeit des Prozessors kann somit erhöht werden, indem möglichst viele Daten lokal in dem Registerspeicher 100' gespeichert werden, anstelle diese Daten in dem externen Speicher zu speichern. Somit ist ein möglichst großer Registerspeicher von Vorteil. Andererseits würde sich dann der in dem Befehl für die Codierung der Registeradressen verwendete Bereich vergrößern. Es besteht somit ein Bedarf, einen möglichst großen Registerspeicher zum lokalen Speichern von Daten verwenden zu können, ohne gleichzeitig die Anzahl von Bits zur Codierung der Registeradressen in dem Befehl vergrößern zu müssen.

Weiterhin ist es wünschenswert, bei Prozessoren, welche ein so genanntes Multithreading, d.h. die Verarbeitung mehrerer Prozessstränge, hardwaremäßig unterstützen, z.B. so genannte PP32-Prozessoren, die Register flexibel den einzelnen Prozesssträngen zuordnen zu können. Bei solchen Prozessoren sind beispielsweise für vier Prozessstränge jeweils 16 Register, d.h. insgesamt 64 Register, bereitgestellt. Wenn eine Anwendung nur einen Prozessstrang benötigt, ist es dann von Vorteil, den gesamten Registerspeicher für diesen einen Prozessstrang verfügbar zu machen. Das Problem besteht jedoch darin, den Registerspeicher zu adressieren, ohne dabei die Anzahl von Bits zur Codierung der Registeradressen zu erhöhen.

In diesem Zusammenhang ist es aus der US 2004/0003208 A1 bekannt, die Registerzugriffsmöglichkeiten eines Prozessors zu erhöhen, indem virtuelle Register verwendet werden. In diesem Fall werden zur Verarbeitung der Daten Werte aus virtuellen Registern in nicht-virtuelle Register übertragen und umgekehrt. Zu diesem Zweck sind spezielle Übertragungsbefehle vorgesehen. Bei diesem Ansatz bestehen jedoch Probleme hinsichtlich der Skalierbarkeit und hinsichtlich der Abwärtskompatibilität zu bereits existierenden Programmcodes. Der Ansatz lässt sich nicht ohne weiteres auf unterschiedliche Größen des Registerspeichers und mehrere Prozessstränge übertragen.

Es ist somit eine Aufgabe der vorliegenden Erfindung, eine Verfahren sowie eine Vorrichtung zur Adressierung von Registern eines Prozessors bereitzustellen, welche die oben beschriebenen Probleme lösen und insbesondere eine Adressierung einer erweiterten Anzahl von Registern ermöglichen, ohne die Befehlscodierung zu beeinträchtigen, wobei gleichzeitig eine Abwärtskompatibilität bezüglich bereits existierender Programmcodes gewährleistet ist.

Diese Aufgabe wird erfindungsgemäß durch ein Verfahren mit den Merkmalen des Anspruchs 1 sowie durch eine Vorrichtung mit den Merkmalen des Anspruchs 11 gelöst. Die abhängigen Ansprüche definieren bevorzugte und vorteilhafte Ausführungsformen der Erfindung.

Bei dem erfindungsgemäßen Verfahren wird davon ausgegangen, dass ein Prozessor einen Registerspeicher umfasst, welcher eine Anzahl von Registern aufweist, die durch eine entsprechende Anzahl von physikalischen Registeradressen adressierbar sind. Die Adressierung erfolgt, indem zunächst eine logische Registeradresse vorgegeben wird, welche aus einer Anzahl von logischen Registeradressen auswählbar ist, wobei die Anzahl der logischen Registeradressen vorzugsweise höchstens der Anzahl der physikalischen Registeradressen entspricht. Bevorzugt ist die Anzahl der physikalischen Registeradressen größer als diejenige der logischen Registeradressen und beträgt beispielsweise ein Vielfaches der Anzahl der logischen Registeradressen. Die logischen Registeradressen definieren einen logischen Adressraum, während die physikalischen Registeradressen einen physikalischen Adressraum definieren.

Um über eine Anzahl von logischen Registeradressen, welche geringer sein kann als diejenige der physikalischen Registeradressen, die Register des Registerspeichers adressieren zu können, wird eine Zuordnungstabelle bereitgestellt, welche Bereichen des logischen Adressraums jeweils einen Bereich des physikalischen Adressraums zuordnet.

Der physikalische Adressraum wird hierzu vorzugsweise in Seiten unterteilt, wobei die Seiten jeweils mehrere Register umfassen und bevorzugt von gleicher Größe sind. Die Bereiche des physikalischen Adressraums, zu welchen die Zuordnung der Bereiche des logischen Adressraums erfolgt, entsprechen dann vorzugsweise den Seiten des Registerspeichers. Vorzugsweise ist auch der logische Adressraum in Seiten unterteilt, welche die Bereiche des logischen Adressraums bilden. Die Seiten des logischen und des physikalischen Adressraums können dann durch eine logische Seitennummer bzw. durch eine physikalische Seitennummer adressierbar sein.

Durch Verwendung der Zuordnungstabelle ist es möglich, den Adressbereich, welcher durch die logischen Registeradressen adressierbar ist, deutlich zu vergrößern. Wenn beispielsweise die Bereiche des logischen Adressraums durch einen Adressabschnitt der logischen Registeradressen adressiert werden, welcher den zwei höchstwertigsten Bits einer binären Codierung der logischen Registeradressen entspricht, sind durch diesen Adressabschnitt der logischen Registeradresse auch vier unterschiedliche Bereiche des logischen Adressraums adressierbar. Diese Bereiche des Registerspeichers können beispielsweise den vier ersten Seiten des physikalischen Adressraums zugeordnet sein, wobei die Seiten z.B. jeweils vier Register umfassen können. Zwei weitere Bits der logischen Registeradresse, welche einen Adressversatz bilden, können dann verwendet werden, um innerhalb einer Seite die einzelnen Register zu adressieren. Durch die Zuordnungstabelle ist es möglich, auch Register des Registerspeichers zu adressieren, welche außerhalb der ersten vier Seiten des physikalischen Adressraums liegen. Hierzu wird einem Bereich des logischen Adressraums durch die Zuordnungstabelle ein Bereich des Registerspeichers zugeordnet, welcher außerhalb der ersten vier Seiten des physikalischen Adressraums liegt. Bevorzugt geschieht dies, indem der logischen Seitennummer eine physikalische Seitennummer zugeordnet wird.

Die Verwendung der Zuordnungstabelle ermöglicht es somit, den logischen Registeradressen physikalische Registeradressen zuzuordnen, welche aus einer deutlich größeren Anzahl auswählbar sind als die logischen Registeradressen. Der Registerspeicher wird erfindungsgemäß dann mit derjenigen physikalischen Registeradresse adressiert, welche der vorgegebenen logischen Registeradresse zugeordnet ist.

Das Bereitstellen der Zuordnungstabelle geschieht vorzugsweise in dynamischer Weise. Hierfür umfasst ein Befehlssatz zur Steuerung der Adressierung einen Befehl zum Hinzufügen einer Zuordnung zwischen einer der logischen Seitennummern und einer der physikalischen Seitennummern zu der Zuordnungstabelle. Entsprechend umfasst der Befehlssatz vorzugsweise auch einen Befehl zum Entfernen einer Zuordnung zwischen einer der logischen Seitennummern und einer der physikalischen Seitennummern aus der Zuordnungstabelle. Mit derartigen Befehlen kann die Zuordnungstabelle auf einfache Weise an die jeweils zu adressierenden Bereiche des physikalischen Adressraums angepasst werden, wobei insbesondere der Vorteil besteht, dass eine geringe Anzahl von Bits benötigt wird, um die logische Seitennummer bzw. die physikalische Seitennummer zu codieren. Dieses Konzept kann daher auch für sehr große Registerspeicher angewendet werden, ohne dass die Anzahl der zur Befehlscodierung erforderlichen Bits vergrößert werden müsste.

Weiterhin ist es auch möglich, das Verfahren bei Prozessoren anzuwenden, welche zur Verarbeitung mehrerer Prozessstränge ausgestaltet sind. Vorzugsweise wird dann für jeden der Prozessstränge eine eigene Zuordnungstabelle bereitgestellt. In diesem Fall ist es auch möglich, dass eine Seite des Registerspeichers mehr als einem Prozessstrang zugeordnet wird, wodurch beispielsweise ein effektiver Austausch von Daten zwischen verschiedenen Prozesssträngen ermöglicht wird. Das erfindungsgemäße Verfahren zur Adressierung von Registern ist somit besonders vorteilhaft zum Einsatz bei zur Verarbeitung mehrerer Prozessstränge ausgestalteten Prozessoren, z.B. so genannten Multithreading-Prozessoren geeignet.

Auch bei der erfindungsgemäßen Vorrichtung wird davon ausgegangen, dass zur Adressierung von Registern zunächst eine logische Registeradresse vorgegeben wird, welche aus einer Anzahl von logischen Registeradressen auswählbar ist, die einen logischen Adressraum definieren.

Die erfindungsgemäße Vorrichtung zur Adressierung von Registern eines Prozessors, welcher einen Registerspeicher mit einer Anzahl von Registern umfasst, der durch eine entsprechende Anzahl von einen physikalischen Adressraum definierenden physikalischen Registeradressen adressierbar ist, umfasst Adresszuordnungsmittel, welche dazu ausgestaltet sind, mittels einer Zuordnungstabelle Bereiche des logischen Adressraums jeweils einem Bereich des physikalischen Adressraums zuzuordnen. Auf diese Weise wird eine Zuordnung der vorgegebenen logischen Registeradresse zu einer der physikalischen Registeradressen aus dem jeweiligen zugeordneten Bereich des physikalischen Adressraums erreicht, so dass die Vorrichtung den Registerspeicher mit derjenigen physikalischen Registeradresse adressieren kann, welche der vorgegebenen logischen Registeradresse zugeordnet ist. Die Anzahl der logischen Registeradressen entspricht dabei vorzugsweise höchstens der Anzahl der physikalischen Registeradressen. Die Vorrichtung ist bevorzugt zur Durchführung des oben beschriebenen erfindungsgemäßen Verfahrens ausgestaltet. Hierfür ist es insbesondere vorteilhaft, wenn die Vorrichtung ein Befehlsdecodierungsmittel bzw. eine Befehlsdecodierungseinheit umfasst, welche dazu ausgestaltet ist, abhängig von decodierten Befehlen Steuersignale für die Adresszuordnungsmittel zu erzeugen. Dies ermöglicht eine dynamische Anpassung der Zuordnungstabelle über entsprechende Befehle.

Wie es aus den obigen Erläuterungen hervorgeht, bietet die vorliegende Erfindung insbesondere den Vorteil einer Skalierbarkeit. Dies bedeutet, dass der erfindungsgemäße Ansatz auf eine beliebige Anzahl von Registern und eine beliebige Anzahl von Prozesssträngen angewendet werden kann. Als weiterer Vorteil bietet sich eine Abwärtskompatibilität zu bereits bestehenden Programmcodes, welche auf einer herkömmlichen Adressierung der Register basieren. Dies ergibt sich daraus, dass die Adresscodierung in den Befehlen durch Verwendung der vorliegenden Erfindung nicht verändert wird.

Nachfolgend wird die vorliegende Erfindung anhand eines bevorzugten Ausführungsbeispiels unter Bezugnahme auf die beigefügten Zeichnungen näher erläutert.

1 veranschaulicht schematisch ein Ausführungsbeispiel eines Prozessoraufbaus mit einer erfindungsgemäßen Adressierung eines Registerspeichers;

2 veranschaulicht die erfindungsgemäße Zuordnung von logischen Registeradressen zu physikalischen Registeradressen mittels einer Zuordnungstabelle; und

3 zeigt ein Beispiel für einen Prozessoraufbau mit einer Adressierung eines Registerspeichers gemäß dem Stand der Technik.

1 veranschaulicht schematisch die Adressierung eines Registerspeichers 100 in einem Prozessor. 1 hat die Form eines Blockdiagramms, welches den Prozessoraufbau und seine Funktionsweise veranschaulicht. 1 kann jedoch gleichzeitig auch als Diagramm zur Veranschaulichung eines Verfahrensablaufs bei der Verarbeitung von Daten durch den Prozessor unter besonderer Berücksichtigung der Adressierung des Registerspeichers 100 verstanden werden.

Ein Programmcode in Form von Maschinencode ist in einem Programmcodespeicher 210 abgelegt. Eine Befehlsaufnahmeeinheit 220 entnimmt dem Programmcodespeicher 210 nacheinander Befehle zur Ausführung und leitet diese zur Decodierung an eine Befehlsdecodierungseinheit 230 weiter. Die Befehlsdecodierungseinheit extrahiert aus dem jeweiligen Befehl eine oder mehrere logische Registeradressen LRA, welche für die Ausführung des Befehls bzw. zur Speicherung eines Ergebnisses vorgesehene Register 063 identifizieren. Werte aus diesen Registern werden als Daten DAT an eine Ausführungseinheit 260 übermittelt, und von der Ausführungseinheit 260 ermittelte Ergebnisse werden als Daten DAT zurück an den Registerspeicher 100 übermittelt, wo sie in dem dafür vorgesehenen Register 063 abgelegt werden.

Die Befehlsdecodierungseinheit erzeugt abhängig von den decodierten Befehlen Steuersignale für die Ausführungseinheit 260 sowie auch Steuersignale für eine Zuordnungseinheit 240.

Der Registerspeicher 100 stellt einen internen physikalischen Datenspeicher des Prozessors dar. Der Registerspeicher 100 besteht aus insgesamt NRF Registern, wobei bei dem Beispiel von 1 NRF = 64 ist. Im Folgenden wird angenommen, dass die Register 063 alle die gleiche Größe aufweisen. Es ist jedoch auch möglich, dass die Register 063 von unterschiedlicher Größe sind.

Der Registerspeicher ist in MP Seiten aufgeteilt, wobei eine Seite jeweils einen Bereich des Registerspeichers 100 darstellt, welcher NP Register umfasst. Es gilt daher die Beziehung NRF = MP·NP.

Bei dem Beispiel von 1 sind insgesamt 16 Seiten mit jeweils vier Registern vorgesehen, so dass der Registerspeicher 100 insgesamt 64 Register umfasst. Die Register sind mit Bezugszeichen 063 bezeichnet, welche gleichzeitig jeweils einer physikalischen Registeradresse PRA des Registers 063 entsprechen. Die physikalischen Registeradressen PRA definieren einen physikalischen Adressraum.

Der maschinencodierte Programmcode in dem Programmcodespeicher 210 umfasst Befehle, welche einen logischen Adressraum verwenden, um die Register 063 zu identifizieren. Hierfür steht in dem logischen Adressraum eine bestimmte Anzahl von logischen Registeradressen LRA zur Verfügung. Im Folgenden wird davon ausgegangen, dass die logischen Registeradressen LRA in einer Binärcodierung mit vier Bit vorliegen, wie es beispielsweise bei so genannten PP32-Prozessoren üblich ist, um einen Registerspeicher mit insgesamt 16 Registern zu adressieren.

Somit übersteigt die Anzahl von möglichen physikalischen Registeradressen PRA die Anzahl von möglichen logischen Registeradressen LRA, so dass eine dynamische Registerzuordnung verwendet wird, um den logischen Registeradressen LRA jeweils eine der physikalischen Registeradressen PRA zuzuordnen.

Zu diesem Zweck wird sowohl der logische Adressraum als auch der physikalische Adressraum in Bereiche in Form von Seiten unterteilt. Über eine konfigurierbare Zuordnungstabelle 242, welche in einem speziellen Speicher der Zuordnungseinheit 240 bereitgestellt ist, wird den Seiten des logischen Adressraums jeweils eine Seite des physikalischen Adressraums zugeordnet. Speziell werden die Registeradressen, d.h. sowohl die logischen Registeradressen LRA als auch die physikalischen Registeradressen PRA, in einen ersten und einen zweiten Abschnitt unterteilt, wobei der erste Abschnitt durch eine vorgegebene Anzahl der höchstwertigsten Bits der Registeradresse LRA, PRA gebildet ist und der zweite Adressabschnitt durch die übrigen Bits der Registeradresse LRA, PRA gebildet ist. Der erste Adressabschnitt der Registeradressen LRA, PRA entspricht einer Seitennummer, während der zweite Adressabschnitt der Registeradressen LRA, PRA einem Adressversatz entspricht, der es ermöglicht, ein bestimmtes Register 063 innerhalb der durch die Seitennummer spezifizierten Seite, relativ zu einem Seitenanfang zu adressieren. Bei dem hierin beschriebenen Beispiel umfasst der Adressversatz zwei Bit, so dass alle vier Register einer Seite adressiert werden können.

Die Registerzuordnung erfolgt über Adresszuordnungsmittel, welche durch die Zuordnungseinheit 240 bereitgestellt sind. Die Zuordnungseinheit 240 gewährleistet mittels der Zuordnungstabelle 242, welche den logischen Seitennummern der logischen Registeradressen LRA jeweils eine physikalische Seitennummer der physikalischen Registeradressen PRA zuordnet, dass es möglich ist, mit der geringeren Anzahl von möglichen logischen Registeradressen LRA alle physikalischen Registeradressen PRA zu adressieren. Zu diesem Zweck erfolgt in der Zuordnungseinheit 240 im Wesentlichen ein Ersetzen der logischen Seitennummer in der logischen Registeradresse LRA durch die in der Zuordnungstabelle für diese logische Seitennummer vorgegebene physikalische Seitennummer, wobei der Adressversatz RO unverändert bleibt.

Die Zuordnungseinheit wird durch eine Steuer- und Überwachungseinheit 250 gesteuert und überwacht. Die Steuer- und Überwachungseinheit 250 ermöglicht zum einen eine Anpassung oder Konfiguration der Zuordnungstabelle, um die Register 063 des Registerspeichers 100 dynamisch adressieren zu können, und gewährleistet zum anderen eine Überwachung der Zuordnungseinheit 240, um beispielsweise den gerade auszuführenden Befehl zu überspringen, wenn bestimmte Bedingungen nicht erfüllt sind. Hierfür umfasst die Steuer- und Kontrolleinheit 250 Mittel, um anhand der Registeradressen LRA, PRA eine Konsistenzüberprüfung durchzuführen.

Speziell ist die Steuer- und Überwachungseinheit dazu ausgestaltet, die Zuordnungstabelle 242 abhängig von den durch die Decodierungseinheit 230 bereitgestellten Steuersignalen anzupassen und zu konfigurieren.

Die in 1 schematisch dargestellte Adressierung eignet sich sowohl für Prozessoren, welche einen einzigen Prozessstrang ausführen, als auch für Prozessoren, welche dazu ausgestaltet sind, mehrere Prozessstränge auszuführen, d.h. für so genannte Multithreading-Prozessoren. Im Folgenden soll von einem solchen Multithreading-Prozessor ausgegangen werden. In diesem Fall verfügt jeder Prozessstrang über eigene Hardware-Ressourcen, wobei es sich um Datenregister, Programmzähler, Statusregister usw. handeln kann. Die Registerzuordnung durch die Zuordnungseinheit 240 erfolgt in einer auf den jeweiligen Prozessstrang beschränkten Weise, indem eine physikalische Registeradresse einer logischen Registeradresse und einem bestimmten Kontext, d.h. bestimmten Hardware-Ressourcen eines Prozessstrangs, zugeordnet wird. Insbesondere verfügt jeder Prozessstrang bzw. Kontext über eine eigene Zuordnungstabelle 242.

2 veranschaulicht genauer die Zuordnung von logischen Registeradressen LRA und physikalischen Registeradressen PRA durch die Zuordnungseinheit 240. Die Zuordnungseinheit 240 umfasst zu diesem Zweck die Zuordnungstabelle 242. Die Zuordnungstabelle 242 umfasst einen ersten Bereich 244, in welchem die möglichen logischen Seitennummern LPN für einen ersten Adressabschnitt von zwei Bit Größe dargestellt sind. Es handelt sich dabei um vier unterschiedliche logische Seitennummern LPN, welche Werte von 0, 1, 2 und 3 annehmen. Jeder logischen Seitennummer LPN in dem Bereich 244 ist in dem Bereich 246 eine physikalische Seitennummer PPN zugeordnet, wobei es sich bei dem in 2 dargestellten Beispiel um die Seitennummern 5, 8, 9 und 11 handelt. Die Zuordnungstabelle umfasst somit Paare von logischer Seitennummer und physikalischer Seitennummer, welche durch (0, 5), (1, 8), (2, 9), (3, 11) gegeben sind. So wird beispielsweise die logische Seitennummer 2 der physikalischen Seitennummer 9 zugeordnet. Im vorliegenden Beispiel handelt es sich bei den im ersten Bereich dargestellten logischen Seitennummern LPN nicht um Werte, die im eigentlichen Sinn in der Zuordnungstabelle 242 gespeichert sind, sondern um einen Index, welcher der Adressierung von Einträgen in der Zuordnungstabelle 242 dient.

Um aus der logischen Registeradresse LRA die physikalische Registeradresse PRA zu erzeugen, wird zunächst von der logischen Registeradresse LRA der Adressversatz RO abgespalten, so dass lediglich die logische Seitennummer LPN verbleibt. Die logische Seitenummer LPN wird anhand der Zuordnungstabelle 242 durch die entsprechende physikalische Seitennummer PPN ersetzt. An diese physikalische Seitennummer PPN wird nun der zuvor abgespaltene Adressversatz RO angefügt, um schließlich die physikalische Registeradresse zu erhalten.

Es versteht sich, dass die in 2 dargestellten und oben beschriebenen Zuordnungen lediglich beispielhaft gewählt sind und frei konfiguriert werden können. Insbesondere sind die Zuordnungen in der Zuordnungstabelle 242 durch entsprechende Befehle anpassbar. Eine Zuordnungstabelle 242 der in 2 dargestellten Art ist für jeden Prozessstrang vorgesehen.

Zum dynamischen Anpassen der Registerzuordnung sind im Befehlssatz des Prozessors spezielle Befehle vorgesehen, welche durch die Befehlsdecodierungseinheit 230 decodiert und in entsprechende Steuersignale für die Zuordnungseinheit umgesetzt werden, wobei ein erster Befehl für einen in dem Befehl spezifizierten Prozessstrang und eine in dem Befehl spezifizierte logische Seitennummer LPN eine Zuordnung zu einer in dem Befehl spezifizierten physikalischen Seitennummer PPN hinzufügt. Ein zweiter Befehl ist dafür vorgesehen, für einen in dem Befehl spezifizierten Prozessstrang und eine in dem Befehl spezifizierte logische Seitennummer LPN die vorhandene Zuordnung zu einer physikalischen Seitennummer PPN zu entfernen. Der jeweilige Prozessstrang wird in den Befehlen durch eine entsprechende Prozessstrangnummer identifiziert. Bei einem Neustart des Prozessors oder bei einem Rücksetzvorgang, beispielsweise nach einer Fehlfunktion, werden die Zuordnungstabellen 242 mit voreingestellten Werten gefüllt. Hierdurch wird gewährleistet, dass auch ohne Verwendung der Befehle zum dynamischen Anpassen der Zuordnungstabellen 242 eine definierte Adressierung der Register 063 erfolgt. Der Prozessor ist somit dafür geeignet, einen Programmcode auszuführen, der nicht die speziellen Befehle zum Anpassen der Zuordnungstabellen 242 verwendet, so dass eine Abwärtskompatibilität gewährleistet ist.

Die speziellen Vorteile der anhand von 1 und 2 dargestellten Adressierung des Registerspeichers 100 können insbesondere ausgeschöpft werden, wenn ein spezieller Compiler verwendet wird, welcher einen Programmcode erzeugt, der die speziellen Befehle nutzt, um die Zuordnungstabellen 242 anzupassen. Dies kann beispielsweise geschehen, bevor oder nachdem in dem Programmcode eine bestimmte Funktion aufgerufen wird. Weiterhin kann dies geschehen, bevor oder nachdem durch den Programmcode zwischen verschiedenen Prozesssträngen umgeschaltet wird. Außerdem besteht die Möglichkeit, die Zuordnungstabellen 242 mittels der dafür vorgesehenen speziellen Befehle anzupassen, bevor oder nachdem zwischen verschiedenen Programmgerüsten umgeschaltet wird.


Anspruch[de]
  1. Verfahren zur Adressierung von Registern (063) eines Prozessors,

    wobei ein Registerspeicher (100) mit einer Anzahl von Registern (063) durch eine entsprechende Anzahl von physikalischen Registeradressen (PRA) adressierbar ist, welche einen physikalischen Adressraum definieren, gekennzeichnet durch die Schritte

    – Vorgeben einer logischen Registeradresse (LRA), welche aus einer Anzahl von logischen Registeradressen (LRA) auswählbar ist, wobei die logischen Registeradressen (LRA) einen logischen Adressraum definieren,

    – Bereitstellen einer Zuordnungstabelle (242), welche Bereichen des logischen Adressraums jeweils einen Bereich des physikalischen Adressraums zuordnet, um den logischen Registeradressen (LRA) aus den Bereichen des logischen Adressraums jeweils eine der physikalischen Registeradressen (PRA) aus dem jeweiligen zugeordneten Bereich des physikalischen Adressraums zuzuordnen,

    – Adressieren des Registerspeichers (100) mit derjenigen physikalischen Adresse (PRA), welche der vorgegebenen logischen Registeradresse (LRA) zugeordnet ist.
  2. Verfahren nach Anspruch 1,

    dadurch gekennzeichnet,

    dass der physikalische Adressraum in mehrere Seiten unterteilt wird, welche die Bereiche des physikalischen Adressraums bilden, und

    dass sich die physikalischen Registeradressen (PRA) aus einer physikalischen Seitennummer (PPN) der jeweiligen Seite des physikalischen Adressraums und einem Adressversatz (RO) zusammensetzen.
  3. Verfahren nach Anspruch 2, dadurch gekennzeichnet, dass die Seiten des physikalischen Adressraums die gleiche Größe aufweisen.
  4. Verfahren nach Anspruch 2 oder 3,

    dadurch gekennzeichnet,

    dass der logische Adressraum in mehrere Seiten unterteilt wird, welche die Bereiche des logischen Adressraums bilden, und

    dass ein Adressabschnitt der logischen Registeradresse (LRA) einer logischen Seitennummer (LPN) entspricht, und dass die logischen Registeradressen (LRA) einen weiteren Adressabschnitt aufweisen, welcher dem Adressversatz (RO) entspricht.
  5. Verfahren nach Anspruch 4, dadurch gekennzeichnet,

    dass die Zuordnungstabelle (242) den logischen Seitennummern (LPN) jeweils eine der physikalischen Seitennummern (PPN) zuordnet.
  6. Verfahren nach Anspruch 5, dadurch gekennzeichnet, dass ein Befehlssatz zur Steuerung der Adressierung einen Befehl zum Hinzufügen einer Zuordnung zwischen einer logischen Seitennummer (LPN) und einer physikalischen Seitennummer (PPN) zu der Zuordnungstabelle (242) umfasst.
  7. Verfahren nach Anspruch 5 oder 6, dadurch gekennzeichnet, dass ein Befehlssatz zur Steuerung der Adressierung einen Befehl zum Entfernen einer Zuordnung zwischen einer logischen Seitennummer (LPN) und einer physikalischen Seitennummer (PPN) aus der Zuordnungstabelle (242) umfasst.
  8. Verfahren nach einem der Ansprüche 4–7, dadurch gekennzeichnet, dass die logischen Registeradressen (LRA) binär codiert werden, wobei der Adressabschnitt der logischen Registeradressen (LRA) durch eine vorgegebene Anzahl der höchstwertigsten Bits der logischen Registeradressen (LRA) gebildet ist.
  9. Verfahren nach einem der vorhergehenden Ansprüche,

    dadurch gekennzeichnet,

    dass der Prozessor zur parallelen Verarbeitung mehrerer Prozessstränge ausgestaltet ist,

    wobei für jeden der Prozessstränge eine eigene Zuordnungstabelle (242) bereitgestellt wird.
  10. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass die Anzahl der logischen Registeradressen (LRA) höchstens der Anzahl der physikalischen Registeradressen (PRA) entspricht.
  11. Vorrichtung zur Adressierung von Registern (063) eines Prozessors,

    wobei ein Registerspeicher (100) mit einer Anzahl von Registern (063) durch eine entsprechende Anzahl von physikalischen Registeradressen (PRA) adressierbar ist, welche einen physikalischen Adressraum definieren,

    gekennzeichnet durch,

    – Adresszuordnungsmittel (240), welche dazu ausgestaltet sind mittels einer Zuordnungstabelle (242) Bereichen des logischen Adressraums jeweils einen Bereich des physikalischen Adressraums zuzuordnen, um den logischen Registeradressen (LRA) aus den Bereichen des logischen Adressraums eine der physikalischen Registeradressen (PRA) aus dem zugeordneten Bereich des physikalischen Adressraums zuzuordnen,

    wobei die Adresszuordnungsmittel (240) dazu ausgestaltet sind, den Registerspeicher (100) mit derjenigen physikalischen Registeradresse (PRA) zu adressieren, welche einer vorgegebenen logischen Registeradresse (LRA) zugeordnet ist.
  12. Vorrichtung nach Anspruch 11, dadurch gekennzeichnet, dass die Vorrichtung zur Durchführung eines Verfahrens nach einem der Ansprüche 1–10 ausgestaltet ist.
  13. Vorrichtung nach Anspruch 11 oder 12, dadurch gekennzeichnet, dass der Prozessor zur Verarbeitung mehrerer Prozessstränge ausgestaltet ist.
  14. Vorrichtung nach einem der Ansprüche 11–13, dadurch gekennzeichnet, dass die Vorrichtung ein Befehlsdecodierungsmittel (230) umfasst, welches dazu ausgestaltet ist, abhängig von decodierten Befehlen Steuersignale für die Adresszuordnungsmittel (240) zu erzeugen.
  15. Vorrichtung nach Anspruch 14, dadurch gekennzeichnet, dass die Adresszuordnungsmittel (240) dazu ausgestaltet sind, die Zuordnungstabelle (242) abhängig von den Steuersignalen anzupassen.
Es folgen 2 Blatt Zeichnungen






IPC
A Täglicher Lebensbedarf
B Arbeitsverfahren; Transportieren
C Chemie; Hüttenwesen
D Textilien; Papier
E Bauwesen; Erdbohren; Bergbau
F Maschinenbau; Beleuchtung; Heizung; Waffen; Sprengen
G Physik
H Elektrotechnik

Anmelder
Datum

Patentrecherche

Patent Zeichnungen (PDF)

Copyright © 2008 Patent-De Alle Rechte vorbehalten. eMail: info@patent-de.com