DE60009496T2 - Mikroprozessor mit reduziertem kontextumschaltungsaufwand und verfahren - Google Patents

Mikroprozessor mit reduziertem kontextumschaltungsaufwand und verfahren Download PDF

Info

Publication number
DE60009496T2
DE60009496T2 DE60009496T DE60009496T DE60009496T2 DE 60009496 T2 DE60009496 T2 DE 60009496T2 DE 60009496 T DE60009496 T DE 60009496T DE 60009496 T DE60009496 T DE 60009496T DE 60009496 T2 DE60009496 T2 DE 60009496T2
Authority
DE
Germany
Prior art keywords
registers
dirty
microprocessor
dirty bit
register
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE60009496T
Other languages
English (en)
Other versions
DE60009496D1 (de
Inventor
Ashley Saulsbury
S. Daniel RICE
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.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems 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 Sun Microsystems Inc filed Critical Sun Microsystems Inc
Application granted granted Critical
Publication of DE60009496D1 publication Critical patent/DE60009496D1/de
Publication of DE60009496T2 publication Critical patent/DE60009496T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context
    • G06F9/463Program control block organisation
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • G06F9/3832Value prediction for operands; operand history buffers

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)
  • Communication Control (AREA)

Description

  • Die vorliegende Erfindung betrifft allgemein die Kontextumschaltung in Mikroprozessoren bei der Behandlung von Programmunterbrechungen. Insbesondere betrifft sie einen Mikroprozessor, der einen verringerten Kontextumschaltungsaufwand zur Behandlung von Programmunterbrechungen hat, und ein entsprechendes Verfahren zum Reduzieren des Kontextumschaltungsaufwands in einem Mikroprozessor gemäß dem Oberbegriff des Anspruchs 1 bzw. 10.
  • In einem herkömmlichen Mikroprozessor muss der Zustand des Mikroprozessors beim Ändern des Kontexts während der Behandlung einer Programmunterbrechung gesichert werden. Eine Programmunterbrechung kann wegen einer durch den Mikroprozessor von einer externen Vorrichtung empfangenen Unterbrechung oder wegen einer durch den Mikroprozessor erfassten Ausnahme auftreten. Diese Änderung des Kontexts umfasst das Sichern der von den Arbeitsregistern des Mikroprozessors gespeicherten Operanden im Hauptspeicher des Mikroprozessors. Allerdings ist der zum Ausführen dieser Operation erforderliche Kontextumschaltungsaufwand groß, da er zeitaufwändig ist und ein großer Teil des Hauptspeichers verwendet wird.
  • Es sind mehrere Lösungen vorgeschlagen worden, um den großen Kontextumschaltungsaufwand in einem Mikroprozessor zu verringern. Jede dieser Lösungen erkennt, dass einige der Arbeitsregister des Mikroprozessors zum Zeitpunkt einer Kontextumschaltung aktive Operanden (d. h. Operanden, die von dem Befehlsstrom immer noch benötigt werden) enthalten, während andere inaktive Operanden (d. h. Operanden, die von dem Befehlsstrom nicht mehr benötigt werden) enthalten. Diese Lösungen erfordern die Verfolgung der aktiven Operanden, so dass sie während der nächsten Kontextumschaltung im Hauptspeicher gesichert werden.
  • Eine Lösung besteht darin, den Mikroprozessor mit Registerfenstern für die Arbeitsregister zu versehen. Allerdings ist dies eine komplizierte und hardwareintensive Art, das Sichern der Operanden im Hauptspeicher zu verschieben, bis es absolut notwendig ist. Somit ist der Kontextumschaltungsaufwand für diese Lösung äußerst groß.
  • Eine effizientere Lösung besteht darin, für jedes Arbeitsregister ein Dirty-Bit-Register aufzunehmen. Wenn ein neuer Operand in ein besonderes Arbeitsregister geschrieben wird, wird das von dem entsprechenden Dirty-Bit-Register gespeicherte Dirty-Bit gesetzt, um anzugeben, dass das Arbeitsregister "dirty" ist (d. h. in es geschrieben worden ist) und einen aktiven Operanden speichert, der bei der nächsten Kontextumschaltung im Speicher gesichert werden muss. Wenn die nächste Kontextumschaltung stattfindet, wird der Operand im Hauptspeicher gesichert und das Dirty-Bit gelöscht (d. h. zurückgesetzt).
  • Das Problem bei dieser Lösung ist, dass der Operand lange vor der nächsten Kontextumschaltung inaktiv geworden sein kann, obgleich das Dirty-Bit immer noch angibt, dass der Operand aktiv ist. Der Mikroprozessor speichert daraufhin diesen inaktiven Operanden bei der nächsten Kontextumschaltung überflüssig im Hauptspeicher. Dies kann auch für viele weitere von den Arbeitsregistern gespeicherte Operanden der Fall sein. Somit wird bei der nächsten Kontextumschaltung ein Engpass beim Sichern dieser Operanden erzeugt. Dies macht den Kontextumschaltungsaufwand für diese Lösung unnötig groß.
  • "TECHNIQUE FOR REDuUCING THE NUMBER OF REGISTERS SAVED AT A CONTEXT SWAP", IBM TECHNICAL DISCLOSURE BULLETIN, Bd. 33, Nr. 3A, 1. August 1990 (1990-08-01), S. 234–235, XP000123918, IBM CORP., NEW YORK, USA, ISSN: 0018-8689, beschreibt ein Schema, das bei einer Kontextumlagerung bestimmt, ob alle oder keine Register eines Prozessors gesichert werden müssen. Das Schema verwendet ein Bit pro Register, um zu bestimmen, wann die Inhalte nicht gesichert werden müssen, wenn eine Kontextumlagerung auftritt. In jedem Befehl ist ein Bit pro Registerfeld vorgesehen, das angibt, ob das Register am Ende der Ausführung des Befehls tot ist. Das Bit wird während der Programmcompilierung durch einen Optimierungs-Compiler gesetzt oder wird von Hand gesetzt, wenn der Befehl in einer Assembler- oder Maschinensprache geschrieben ist.
  • US-A-5825 674 beschreibt einen NOP-Befehl mit einem reservierten Feld von Bits, das Informationen an eine Hardware-Steuereinheit liefert, um geeignete Steuersignale zu erzeugen, die die Leistung einer mobilen elektronischen Vorrichtung entweder erhöhen oder verringern.
  • Zusammengefasst umfasst die vorliegende Erfindung einen Mikroprozessor mit verringertem Kontextumschaltungsaufwand und ein entsprechendes Verfahren gemäß den Ansprüchen 1 bzw. 10. Der Mikroprozessor umfasst ein Arbeits-File, das Dirty-Bit-Register und Arbeitsregister umfasst. Die Arbeitsregister enthalten für jedes der Dirty-Bit-Register ein oder mehrere entsprechende Arbeitsregister. Außerdem umfasst der Mikroprozessor eine Decodiereinheit, die so konfiguriert ist, dass sie einen Befehl decodiert, der ein Dirty-Bit-Registerfeld besitzt, das ein ausgewähltes der Dirty-Bit-Register spezifiziert. Die Decodiereinheit ist so konfiguriert, dass sie in Reaktion darauf Decodiersignale erzeugt. Außerdem ist das Arbeits-File so konfiguriert, dass es in Reaktion auf die Decodiersignale veranlasst, dass das ausgewählte Dirty-Bit-Register ein neues Dirty-Bit speichert. Das neue Dirty-Bit gibt an, dass jeder Operand, der von dem einem oder von den mehreren entsprechenden Arbeitsregistern gespeichert wird, inaktiv ist und nicht mehr im Speicher gesichert werden muss, wenn eine neue Kontextumschaltung stattfindet.
  • Das von dem ausgewählten Dirty-Bit-Register gespeicherte vorausgehende Dirty-Bit kann angegeben haben, dass wenigstens eines der einen oder mehreren entsprechenden Arbeitsregister "dirty" ist und einen Operanden speichert, der aktiv ist und bei der nächsten Kontextumschaltung im Speicher gesichert werden muss. Allerdings können tatsächlich alle von dem einen oder den mehreren entsprechenden Arbeitsregistern gespeicherten Operanden inaktiv sein. In diesem Fall wird der Kontextumschaltungsaufwand in dem Mikroprozessor dadurch verringert, dass das neue Dirty-Bit in dem ausgewählten Dirty-Bit-Register gespeichert wird. Dies erfolgt wegen der Tatsache, dass bei der nächsten Kontextumschaltung keiner der Operanden im Speicher gesichert wird.
  • 1 ist ein Blockschaltplan eines Mikroprozessors in Übereinstimmung mit der vorliegenden Erfindung.
  • 2 ist ein Blockschaltplan einer Ausführungsform des Arbeits-Files des in 1 gezeigten Mikroprozessors.
  • 3 zeigt einen modifizierten nop-Befehl, der durch den in 1 gezeigten Mikroprozessor ausgeführt werden kann.
  • 4 zeigt Befehle einschließlich des in 3 gezeigten nop-Befehls eines Programms sowie eine Programmunterbrechungs-uBehandlungsroutine, die durch den Mikroprozessor aus 1 ausgeführt werden.
  • 5 ist ein Blockschaltplan einer weiteren Ausführungsform des Arbeits-Files des in 1 gezeigten Mikroprozessors.
  • In 1 ist ein Mikroprozessor 100 mit verringertem Kontextumschaltungsaufwand für die Behandlung von Programmunterbrechungen gezeigt. Der Mikroprozessor 100 führt Befehle in einem Befehlsstrom aus. Die Befehle sind in dem Hauptspeicher 104 des Mikroprozessors 100 gespeichert und werden durch die Holeinheit 102 des Mikroprozessors 100 aus dem Hauptspeicher 104 geholt. Die Holeinheit 102 gibt die Befehle an die Decodiereinheit 106 des Mikroprozessors 100 aus. Die Decodiereinheit 106 decodiert die Befehle und erzeugt Decodiersignale, die die Holeinheit 102, den Hauptspeicher 104, die Ausführungseinheit 108, das Arbeits-File 110 und das Spezial-File 112 des Mikroprozessors 100 steuern, um die Befehle auszuführen. Die E/A-Schnittstelle 114 des Mikroprozessors 100 wird als Schnittstelle mit externen Vorrichtungen (z. B. sekundärer Speicher, Graphikkarte, Netzwerkkarte usw.) zum Übertragen von Daten und Befehlen verwendet.
  • Nunmehr übergehend zu 2 enthält das Arbeits-File 110N Arbeitsregister wr0 bis wrN-1 und eine Steuerlogik 116. Die Steuerlogik 116 erzeugt in Reaktion auf die Decodiersignale von der Decodiereinheit 106 Steuersignale, die veranlassen, dass die Arbeitsregister wr0 bis wrN-1 die während der Ausführung der Befehle verwendeten Operanden speichern und abrufen. Die Steuerlogik 116 lenkt diese Operanden zwischen (d. h. zu und von) den Arbeitsregistern wr0 bis wrN-1 und der Ausführungseinheit 108 und dem Hauptspeicher 104.
  • Außerdem enthält das Arbeits-File 110N Dirty-Bit-Register dbr0 bis dbrN-1. Für jedes Arbeitsregister wrn gibt es ein entsprechendes Dirty-Bit-Register dbrn. Jedes Mal, wenn die Decodiereinheit 106 einen Befehl mit einem Zielregisterfeld decodiert, das ein ausgewähltes Arbeitsregister wrn als das Ziel eines neues Operanden spezifiziert, veranlasst die Steuerlogik 116, dass dieser Operand in dem Arbeitsregister wrn gespeichert wird. Wie eben erwähnt wurde, erfolgt dies dadurch, dass in Reaktion auf die durch die Decodiereinheit 106 beim Decodieren des Befehls erzeugten Decodiersignale ein Steuersignal an das Arbeitsregister wrn geliefert und der Operand zu ihm gelenkt wird. Außerdem veranlasst die Steuerlogik 116, dass das von dem entsprechenden Dirty-Bit-Register dbrn gespeicherte Dirty-Bit gesetzt wird, um anzugeben, dass der Operand "dirty" und aktiv ist und während der nächsten Kontextumschaltung im Hauptspeicher 104 gesichert werden muss. Dies wird dadurch erreicht, dass dem Dirty-Bit-Register dbrn ein neues Dirty-Bit mit einem entsprechenden binären Wert (z. B. 1 oder 0) bereitgestellt wird und ein Steuersignal zum Speichern dieses Dirty-Bits an das Dirty-Bit-Register dbrn ausgegeben wird.
  • Der von dem Arbeitsregister wrn gespeicherte Operand kann von einem späteren Befehl in dem Befehlsstrom benötigt werden. Dieser Befehl enthält ein Quellregisterfeld, das das Arbeitsregister wrn als die Quelle des Operanden spezi fiziert. Die Steuerlogik 116 veranlasst, dass der Operand aus dem Arbeitsregister wrn ausgelesen wird, indem ein Steuersignal an das Arbeitsregister wrn geliefert und der Operand aus dem Arbeitsregister wrn gelenkt wird. Dies erfolgt in Reaktion auf die Decodiersignale, die beim Decodieren des Befehls durch die Decodiereinheit 106 erzeugt werden. Obgleich der Operand jetzt inaktiv ist, gibt das von dem entsprechenden Dirty-Bit-Register dbrn gespeicherte Dirty-Bit immer noch an, dass er aktiv ist und bei der nächsten Kontextumschaltung im Hauptspeicher 104 gesichert werden muss.
  • Somit geben die momentan von allen Dirty-Bit-Registern dbr0 bis dbrN-1 gespeicherten Dirty-Bits an, welche der Arbeitsregister wr0 bis wrN-1 Operanden speichern, die bei der nächsten Kontextumschaltung im Hauptspeicher 104 gesichert werden müssen. Um die Zusatzbelastung dabei zu verringern, enthält der Befehlssatz für den Mikroprozessor 100 den in 3 gezeigten modifizierten nop-Befehl. Dieser nop-Befehl besitzt ein Opcode-Feld op, das seinen Opcode spezifiziert, und eines oder mehrere Dirty-Bit-Registerfelder dbr, die jeweils ein ausgewähltes Dirty-Bit-Register dbrn spezifizieren.
  • Der modifizierte nop-Befehl wird wie bei normalen nop-Befehlen durch einen Programmierer oder Compiler in einem Programm angeordnet, um den Befehlsstrom des Programms für die Ausgabe und Ausführung richtig auszurichten. Außerdem weiß der Programmierer oder Compiler, wann von dem Befehlsstrom verwendete aktive Operanden inaktiv werden. Dies ermöglicht, dass der Programmierer oder Compiler in jedem der Dirty-Bit-Registerfelder dbr des Befehls für ein ausgewähltes Arbeitsregister wrn, das einen solchen inaktiven Operanden speichert, ein entsprechendes Dirty-Bit-Register dbrn spezifiziert.
  • Wie wieder in 1 gezeigt ist, ist die Decodiereinheit 106 speziell konfiguriert, um den modifizierten nop-Befehl zu decodieren. Dabei erzeugt sie die normalen Decodiersignale zur Ausführung eines normalen nop-Befehls. Übergehend zu 2 erzeugt sie außerdem Decodiersignale, die für jedes Dirty-Bit-Registerfeld dbr des modifizierten nop-Befehls veranlassen, dass die Steuerlogik 116 das Dirty-Bit, das von dem in dem Dirty-Bit-Registerfeld dbr spezifizierten Dirty-Bit-Register dbrn gespeichert ist, löscht. Im Ergebnis gibt dieses Dirty-Bit daraufhin an, dass der von dem entsprechenden Arbeitsregister wrn gespeicherte Operand inaktiv ist und nun während der nächsten Kontextumschaltung nicht im Hauptspeicher 104 gesichert werden muss. Die Arbeitssteuerregisterlogik 116 erledigt dies dadurch, dass sie dem Dirty-Bit-Register dbrn ein neues Dirty-Bit mit einem entsprechenden binären Wert (z. B. 0 oder 1) bereitstellt und Steuersignale zum Speichern dieses Dirty-Bits an das Dirty-Bit-Register dbrn ausgibt. Daraufhin wird dieser Operand während der nächsten Kontextumschaltung nicht im Hauptspeicher 104 gesichert, da das von dem Dirty-Bit-Register dbrn gespeicherte Dirty-Bit angibt, dass er nicht gesichert werden muss.
  • Dadurch, dass der modifizierte nop-Befehl auf diese Weise verwendet wird, wird die Anzahl der Operanden verringert, die durch die Dirty-Bit-Register dbr0 bis dbrN-1 zum Zeitpunkt der nächsten Kontextumschaltung als aktiv identifiziert werden. Dies verringert die Anzahl der Operanden, die bei der nächsten Kontextumschaltung im Hauptspeicher 104 gesichert werden müssen. Im Ergebnis wird der Kontextumschaltungsaufwand des Mikroprozessors 100 verringert, da die Zeit und die Menge des Hauptspeichers 104, die zum Ausführen der Kontextumschaltung benötigt werden, verringert werden.
  • Um dies wirksamer zu veranschaulichen, gibt 4 ein Beispiel eines Programms und einer Programmunterbrechungs-Behandlungsroutine, die von dem Mikroprozessor 100 ausgeführt werden. Das Programm enthält, siehe auch 2, einen Ladebefehl Id zum Laden des an der Adresse addr1 des Hauptspeichers 104 gespeicherten Operanden in das Arbeitsregister wr2. Da das Arbeitsregister wr2 als das Ziel für den Operanden spezifiziert ist, wird das von dem entsprechenden Dirty-Bit-Register dbr2 für das Arbeitsregister wr2 gespeicherte Dirty-Bit gesetzt, um anzugeben, dass der Operand aktiv ist. Später veranlasst ein Additionsbefehl add in dem Programm, das die von den Arbeitsregistern wr2 und wr1 gespeicherten Operanden miteinander addiert werden, wobei der sich ergebende Operand in dem Arbeitsregister wr3 gespeichert wird. Der von dem Arbeitsregister wr2 gespeicherte Operand ist jetzt inaktiv, da er von späteren Befehlen in dem Befehlsstrom des Programms nicht verwendet wird. Daraufhin wird ein modifizierter nop-Befehl mnop in dem Programm ausgeführt. Der modifizierte nop-Befehl mnop spezifiziert das Dirty-Bit-Register dbr2. Er wird nicht nur zum Ausrichten der Befehle des Programms, sondern auch zum Löschen des Dirty-Bit-Registers dbr2 verwendet.
  • Nachdem der modifizierte nop-Befehl ausgeführt worden ist, kann eine Programmunterbrechung auftreten. In diesem Fall überträgt der Mikroprozessor 100 die Ausführung von dem Programm an eine herkömmliche Programmunterbrechungs-Behandlungsroutine. Der Spezialregister-Schreibbefehl wrspr in der Programmunterbrechungs-Behandlungsroutine veranlasst, dass der von dem Arbeitsregister wr1 gespeicherte Operand in einem Spezialregister sp0 des Spezial-Files 112 gesichert wird. Daraufhin veranlasst der Dirty-Bit-Register-Schreibbefehl wrdbr, dass die von den Dirty-Bit-Registern dbr0 bis dbrN-1 gespeicherten Dirty-Bits in dem Arbeitsregister wr1 gespeichert werden. Wenn dies erfolgt ist, bestimmt der Bit-Test-Befehl btst, ob das von dem Dirty-Bit-Register dbr0 gespeicherte Dirty-Bit null oder eins ist. Falls das Dirty-Bit null ist, gibt dies an, dass der von dem Arbeitsregister wr0 gespeicherte Operand inaktiv ist. In diesem Fall verzweigt die Programmunterbrechungs-Behandlungsroutine als Ergebnis des Verzweigung-bei-Null-Befehls bz (branch on zero) zu dem Bit-Test-Befehl btst an der Marke next1. Somit wird der von dem Arbeitsregister wr0 gespeicherte Operand nicht im Hauptspeicher 104 gesichert, da er inaktiv geworden ist. Wenn das Dirty-Bit dagegen eins ist, gibt dies an, dass der Operand aktiv ist. In diesem Fall verzweigt die Programmunterbrechungs-Behandlungsroutine nicht, und der Speicherbefehl st veranlasst, dass der in dem Arbeitsregister wr0 gespeicherte Operand an der Adresse addr2 im Hauptspeicher 104 gesichert wird.
  • Daraufhin setzt die Programmunterbrechungs-Behandlungsroutine diesen Prozess für jedes der von den Dirty-Bit-Registern dbr1 bis dbrN-1 gespeicherten verbleibenden Dirty-Bits fort. Dadurch werden die durch die Dirty-Bits in den Dirty-Bit-Registern dbr0 bis dbrN-1 identifizierten inaktiven Operanden bei der nächsten Kontextumschaltung nicht im Hauptspeicher 104 gesichert. Dies verringert die Menge des Verkehrs im Hauptspeicher 104, der zum Sichern der durch die Dirty-Bits identifizierten aktiven Operanden erforderlich ist. Auf diese Weise wird der Kontextumschaltungsaufwand des Mikroprozessors 100 verringert. Wenn die Programmunterbrechungs-Behandlungsroutine abgeschlossen ist, veranlasst der Programmunterbrechungs-Rücksprungbefehl trp rtn (trap return), dass der Mikroprozessor 100 die Ausführung zurück an das Programm überträgt, und veranlasst er außerdem, dass die von den Dirty-Bit-Registern dbr0 bis dbrN-1 gespeicherten Dirty-Bits für die nächste Kontextumschaltung gelöscht werden.
  • Wie aus dem Vorstehenden ersichtlich ist, können nicht alle Dirty-Bits für die Operanden, die nach der vorangehenden Kontextumschaltung aktiv werden und vor der nächsten Kontextumschaltung inaktiv werden, tatsächlich vor der nächsten Kontextumschaltung gelöscht werden. Dies kann an der Tatsache liegen, dass es in dem Befehlsstrom des Programms wenig Schlitze zum Einfügen des modifizierten nop-Befehls geben kann. Allerdings werden diese Operanden dennoch durch die Programmunterbrechungs-Behandlungsroutine konservativ im Hauptspeicher 104 gesichert. Somit wirkt sich die Aufnahme des modifizierten nop-Befehls nicht nachteilig auf die Ausführung des Programms nach der Kontextumschaltung in dem Mikroprozessor 100 aus.
  • Es ist möglich, dass ein Programmierer irrtümlich einen modifizierten nop-Befehl zum Löschen eines durch eines der Dirty-Bit-Register dbr0 bis dbrN-1 gespeicherten Dirty-Bits, das tatsächlich nicht gelöscht werden soll, einfügt. Dies ist ein Software-Fehler und sollte nicht erfolgen. Das Ergebnis ist, dass eines der Arbeitsregister wr0 bis wrN-1 zufällig den falschen Operanden empfangen kann, wenn eine Kontextumschaltung auftritt. Allerdings ist diese Wirkung auf das Programm des Programmierers beschränkt, während ansonsten nichts in dem Mikroprozessor 100 beeinflusst wird.
  • Außerdem ist es möglich, dass der Programmierer einen normalen nop-Befehl ausgeben möchte, ohne irgendwelche von den Dirty-Bit-Registern dbr0 bis dbrN-1 gespeicherten Dirty-Bits zu löschen. Um diese Möglichkeit zu betrachten, kann der Befehlssatz des Mikroprozessors 100 sowohl einen normalen nop-Befehl als auch den eben beschriebenen modifizierten nop-Befehl enthalten. In diesem Fall hätten der normale und der modifizierte nop-Befehl verschiedene Opcodes. Die Decodiereinheit 106 wäre dann so konfiguriert, dass sie beide Typen von nop-Befehlen decodiert, um sie richtig zu unterscheiden und auszuführen.
  • Alternativ hierzu ist, falls der Mikroprozessor 100 eine SPARC-Architektur besitzt, das Arbeitsregister wr0 immer festverdrahtet, so dass es einen Operanden mit einem Nullwert enthält und durch den Wert des von dem entsprechenden Dirty-Bit-Register dbr0 gespeicherten Dirty-Bits nicht beeinflusst wird. Somit braucht der Programmierer lediglich das Dirty-Bit-Register dbr0 in dem Dirty-Bit-Registerfeld dbr des modifizierten nop-Befehls zu spezifizieren, wenn er mit dem modifizierten nop-Befehl ein normales nop implementieren möchte. Im Ergebnis bleiben die von den anderen Dirty-Bit-Registern dbr1 bis dbrN-1 gespeicherten Dirty-Bits ungeändert. Auf diese Weise benötigt der Befehlssatz für den Mikroprozessor 100 lediglich einen nop-Befehl.
  • Außerdem können die Arbeitsregister wr0 bis wrN-1 anhand von 5 und im Gegensatz zu 2 in Sätzen organisiert sein, wobei jeder Satz mehrere Arbeitsregister wrn bis wrm besitzt. In diesem Fall gibt es lediglich J Dirty-Bit-Register dbr0 bis dbrJ-1, so dass es für jeden Satz von Arbeitsregistern wrn bis wrm ein entsprechendes Dirty-Bit-Register dbrj gibt. Jedes Mal, wenn in einem der Arbeitsregister wrn bis wrm eines Satzes ein neuer Operand gespeichert wird, wird das Dirty-Bit des entsprechenden Dirty-Bit-Registers dbrj gesetzt, um anzugeben, dass wenigstens einer der von den Arbeitsregistern wrn bis wrm gespeicherten Operanden des Satzes aktiv ist. Der modifizierte nop-Befehl wird daraufhin nur dann zum Löschen dieses Dirty-Bits verwendet, wenn alle Arbeitsregister wrn bis wrm in dem Satz Operanden speichern, die inaktiv sind. Dagegen werden alle von den Arbeitsregistern wrn bis wrm in dem Satz gespeicherten Operanden im Hauptspeicher 104 gesichert, wenn das Dirty-Bit angibt, dass wenigstens eines von ihnen immer noch aktiv ist. Wie in dem Fall, in dem es für jedes Arbeitsregister wrn ein entsprechendes Dirty-Bit-Register dbrn gibt, bestimmt der Programmierer oder Compiler, wann alle von den Arbeitsregistern wrn bis wrm in dem Satz gespeicherten Operanden inaktiv geworden sind. Außerdem veranlasst die Steuerlogik 116, dass das Setzen und Löschen des Dirty-Bits für diese Operanden auf die gleiche Weise wie früher beschrieben ausgeführt wird.
  • In der vorstehenden Diskussion wird zum Verringern des Kontextumschaltungsaufwands des Mikroprozessors 100 ein modifizierter nop-Befehl verwendet. Dies erfolgt wegen der Tatsache, dass der modifizierte nop-Befehl ungenutzte Bits besitzt, die als das Dirty-Bit-Feld dbr dienen können, sowie wegen der Tatsache, dass der modifizierte nop-Befehl zweckmäßig in ein Programm eingefügt werden kann, ohne die Leistung des Programms zu beeinflussen. Allerdings können andere Befehle, die normalerweise in einem Programm verwendet werden und ungenutzte Bits besitzen, in der Weise modifiziert werden, dass die ungenutzten Bits als Dirty-Bit-Feld dbr dienen. Auf diese Weise könnte ein solcher Befehl auf ähnliche Weise wie zuvor beschrieben zusätzlich zu dem modifizierten nop-Befehl oder an seiner Stelle verwendet werden, um die von den Dirty-Bit-Registern dbr0 bis dbrN-1 gespeicherten Dirty-Bits zu löschen.

Claims (11)

  1. Mikroprozessor (100) mit verringertem Kontextumschaltungsaufwand, wobei der Mikroprozessor (100) umfasst: ein Arbeitsregister-File (110) mit: Dirty-Bit-Registern (dbrn) und Arbeitsregistern (wrn), die ein oder mehrere entsprechende Arbeitsregister (wrn) für jedes der Dirty-Bit-Register (dbrn) umfassen, gekennzeichnet durch eine Decodiereinheit (106), die so konfiguriert ist, dass sie einen Befehl decodiert, der ein Dirty-Bit-Registerfeld besitzt, das ein ausgewähltes der Dirty-Bit-Register (dbrn) spezifiziert, und in Reaktion darauf Decodiersignale erzeugt, wobei das Arbeitsregister-File (110) so konfiguriert ist, dass es in Reaktion auf die Decodiersignale das ausgewählte Dirty-Bit-Register dazu veranlasst, ein neues Dirty-Bit zu speichern, das angibt, dass jeder Operand, der von einem oder mehreren entsprechenden Arbeitsregistern (wrn) gespeichert wird, inaktiv ist und bei der nächsten Kontextumschaltung des Mikroprozessors (100) nicht mehr im Speicher (102) gesichert werden muss.
  2. Mikroprozessor nach Anspruch 1, dadurch gekennzeichnet, dass die Arbeitsregister (wrn) nur ein entsprechendes Arbeitsregister für jedes der Dirty-Bit-Register (dbrn) enthalten.
  3. Mikroprozessor nach Anspruch 1, dadurch gekennzeichnet, dass die Arbeitsregister (wrn) mehrere entsprechende Arbeitsregister für jedes der Dirty-Bit-Register (dbrj) enthalten.
  4. Mikroprozessor nach Anspruch 1, dadurch gekennzeichnet, dass der Befehl ein modifizierter nop-Befehl ist, der so modifiziert ist, dass er das Dirty-Bit-Registerfeld enthält.
  5. Mikroprozessor nach Anspruch 1, dadurch gekennzeichnet, dass die Arbeitsregister (wrn) ein Arbeitsregister (wrn) enthalten, das hartverdrahtet ist, um einen Operanden mit einem Nullwert zu speichern.
  6. Mikroprozessor nach Anspruch 1, dadurch gekennzeichnet, dass das Arbeitsregister-File (110) eine Steuerlogik (116) umfasst, die so konfiguriert ist, dass sie in Reaktion auf die Decodiersignale: ein neues Dirty-Bit bildet, das angibt, dass jeder Operand, der von dem einen oder den mehreren entsprechenden Arbeitsregistern (wrn) gespeichert wird, inaktiv ist und für die nächste Kontextumschaltung des Mikroprozessors (100) nicht mehr im Speicher (102) gesichert werden muss, und ein Steuersignal erzeugt, um das ausgewählte Dirty-Bit-Register dazu zu veranlassen, das neue Dirty-Bit zu speichern.
  7. Mikroprozessor nach Anspruch 1, dadurch gekennzeichnet, dass die Decodiereinheit (106) so konfiguriert ist, dass sie einen Befehl decodiert, der ein Dirty-Bit-Maskenfeld besitzt, das ein oder mehrere entsprechende ausgewählte der Dirty-Bit-Register (dbrn) spezifiziert, und in Reaktion darauf Decodiersignale erzeugt und das Arbeitsregister-File (110) so konfiguriert ist, dass es in Reaktion auf die Decodiersignale die ausgewählten Dirty-Bit-Register dazu veranlasst, ein neues Dirty-Bit zu speichern, das angibt, dass jeder von dem einen oder von den mehreren entsprechenden Arbeitsregistern (wrn) gespeicherter Operand inaktiv ist und für die nächste Kontextumschaltung des Mikroprozessors (100) nicht mehr im Speicher gesichert werden muss.
  8. Mikroprozessor nach Anspruch 7, dadurch gekennzeichnet, dass der Befehl ein modifizierter nop-Befehl ist, der so modifiziert ist, dass er das Dirty-Bit-Maskenfeld enthält.
  9. Mikroprozessor nach Anspruch 1, dadurch gekennzeichnet, dass der Befehl ein modifizierter nop-Befehl ist, der so modifiziert ist, dass er wenigstens ein Dirty-Bit-Registerfeld enthält.
  10. Verfahren zum Reduzieren des Kontextumschaltungsaufwands in einem Mikroprozessor (100), wobei der Mikroprozessor (100) Dirty-Bit-Register (dbrn) und ein oder mehrere entsprechende Arbeitsregister (wrn) für jedes der Dirty-Bit-Register (dbrn) enthält, gekennzeichnet durch Decodieren eines Befehls, der ein Dirty-Bit-Registerfeld besitzt, das ein ausgewähltes Dirty-Bit-Register der Dirty-Bit-Register (dbrn) spezifiziert, und in Reaktion auf den Decodierungsschritt Speichern eines neuen Dirty-Bits in dem ausgewählten Dirty-Bit-Register (dbrn), wobei das neue Dirty-Bit angibt, dass jeder von dem einen oder den mehreren entsprechenden Arbeitsregistern (wrn) gespeicherter Operand inaktiv ist und für die nächste Kontextumschaltung des Mikroprozessors (100) nicht mehr im Speicher (102) gesichert werden muss.
  11. Verfahren nach Anspruch 10, dadurch gekennzeichnet, dass in den Arbeitsregistern (wrn) nur ein entsprechendes Arbeitsregister (wrn) für jedes der Dirty-Bit-Register (dbrn) enthalten ist.
DE60009496T 1999-04-14 2000-04-14 Mikroprozessor mit reduziertem kontextumschaltungsaufwand und verfahren Expired - Fee Related DE60009496T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/291,811 US6314510B1 (en) 1999-04-14 1999-04-14 Microprocessor with reduced context switching overhead and corresponding method
US291811 1999-04-14
PCT/US2000/010128 WO2000062165A2 (en) 1999-04-14 2000-04-14 Microprocessor with reduced context switching overhead and corresponding method

Publications (2)

Publication Number Publication Date
DE60009496D1 DE60009496D1 (de) 2004-05-06
DE60009496T2 true DE60009496T2 (de) 2005-03-24

Family

ID=23121949

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60009496T Expired - Fee Related DE60009496T2 (de) 1999-04-14 2000-04-14 Mikroprozessor mit reduziertem kontextumschaltungsaufwand und verfahren

Country Status (6)

Country Link
US (1) US6314510B1 (de)
EP (1) EP1192538B1 (de)
AT (1) ATE263393T1 (de)
AU (1) AU4244600A (de)
DE (1) DE60009496T2 (de)
WO (1) WO2000062165A2 (de)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7546444B1 (en) 1999-09-01 2009-06-09 Intel Corporation Register set used in multithreaded parallel processor architecture
US7257806B1 (en) * 1999-10-21 2007-08-14 Hewlett-Packard Development Company, L.P. System and method for efficiently passing information between compiler and post-compile-time software
EP1785862A3 (de) * 2000-02-29 2007-08-15 Fujitsu Limited Verfahren und Vorrichtung zur Pipeline-Verarbeitung
US7681018B2 (en) 2000-08-31 2010-03-16 Intel Corporation Method and apparatus for providing large register address space while maximizing cycletime performance for a multi-threaded register file set
US7089557B2 (en) * 2001-04-10 2006-08-08 Rusty Shawn Lee Data processing system and method for high-efficiency multitasking
US20030177342A1 (en) * 2002-03-15 2003-09-18 Hitachi Semiconductor (America) Inc. Processor with register dirty bits and special save multiple/return instructions
DE10245367A1 (de) * 2002-09-27 2004-04-15 Infineon Technologies Ag Prozessor mit expliziter Angabe über zu sichernde Informationen bei Unterprogrammsprüngen
US7343480B2 (en) * 2003-10-09 2008-03-11 International Business Machines Corporation Single cycle context switching by swapping a primary latch value and a selected secondary latch value in a register file
US7571284B1 (en) 2004-06-30 2009-08-04 Sun Microsystems, Inc. Out-of-order memory transactions in a fine-grain multithreaded/multi-core processor
US7606363B1 (en) 2005-07-26 2009-10-20 Rockwell Collins, Inc. System and method for context switching of a cryptographic engine
JP5028774B2 (ja) * 2005-09-22 2012-09-19 富士通株式会社 演算処理装置,情報処理装置,及びレジスタファイルの制御方法
US7634642B2 (en) * 2006-07-06 2009-12-15 International Business Machines Corporation Mechanism to save and restore cache and translation trace for fast context switch
US8261028B2 (en) * 2007-12-31 2012-09-04 Intel Corporation Cached dirty bits for context switch consistency checks
KR101996641B1 (ko) * 2012-02-06 2019-07-04 삼성전자주식회사 메모리 오버레이 장치 및 방법
DE102018128045A1 (de) * 2018-11-09 2020-05-14 Infineon Technologies Ag Behandlung von Ausnahmen in einem Programm
US10901878B2 (en) 2018-12-19 2021-01-26 International Business Machines Corporation Reduction of pseudo-random test case generation overhead

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2545789B2 (ja) 1986-04-14 1996-10-23 株式会社日立製作所 情報処理装置
US5745375A (en) 1995-09-29 1998-04-28 Intel Corporation Apparatus and method for controlling power usage
US5838962A (en) * 1997-04-09 1998-11-17 Hewlett-Packard Company Interrupt driven dynamic adjustment of branch predictions
US6145049A (en) * 1997-12-29 2000-11-07 Stmicroelectronics, Inc. Method and apparatus for providing fast switching between floating point and multimedia instructions using any combination of a first register file set and a second register file set
US6205543B1 (en) 1998-12-03 2001-03-20 Sun Microsystems, Inc. Efficient handling of a large register file for context switching

Also Published As

Publication number Publication date
ATE263393T1 (de) 2004-04-15
EP1192538A2 (de) 2002-04-03
US6314510B1 (en) 2001-11-06
EP1192538B1 (de) 2004-03-31
WO2000062165A3 (en) 2001-04-26
AU4244600A (en) 2000-11-14
DE60009496D1 (de) 2004-05-06
WO2000062165A2 (en) 2000-10-19

Similar Documents

Publication Publication Date Title
DE60009496T2 (de) Mikroprozessor mit reduziertem kontextumschaltungsaufwand und verfahren
DE69820027T2 (de) Vorrichtung zur ausführung virtueller maschinenbefehle
DE69433339T2 (de) Lade-/Speicherfunktionseinheiten und Datencachespeicher für Mikroprozessoren
DE69838966T2 (de) Prozessor zur Ausführung von hochwirksamen VLIW-Befehlen
DE69723286T2 (de) Echtzeitprogramm-sprachbeschleuniger
DE69636861T2 (de) Mikroprozessor mit Lade-/Speicheroperation zu/von mehreren Registern
DE69833008T2 (de) Prozessor mit instruktionskodierung mittels eines schablonenfeldes
DE4035405C2 (de)
DE68929483T2 (de) Datenprozessor mit einer Befehlseinheit, die einen Cachespeicher und einen ROM aufweist.
DE69431998T2 (de) Superskalare Rechnerarchitektur mit Softwarescheduling
DE2542740C2 (de) Datenverarbeitungsanlage mit einer Mikroprogrammsteuerung
DE2755273C2 (de)
DE19506435C2 (de) Verfahren und Einrichtung zum Vermeiden von Rückschreibkonflikten zwischen einen gemeinsamen Rückschreibpfad verwendenden Ausführungseinheiten
DE60115976T2 (de) Rechnersystem und Interruptvorgang
DE19506990A1 (de) Einrichtung zur Datenumleitung in einem Prozessor mit mehreren Ausführungseinheiten
DE69835425T2 (de) Verbesserter befehlszuteilungsmechanismus für eine geschützte vliw-architektur
DE2714805A1 (de) Datenverarbeitungssystem
DE4342250A1 (de) Rechnerarchitektur und Verfahren zum Betreiben eines Parallelrechners
EP0010185B1 (de) Virtuell-Adressiervorrichtung für einen Computer
DE2411963A1 (de) Datenverarbeitungsanlage
DE2725503A1 (de) Konsole und datenverarbeitungssystem
DE4238099C2 (de) Mikroprozessor mit mehreren Betriebsmoden
DE10303053A1 (de) Registerumbenennung zum Reduzieren einer Umgehung und Erhöhen einer scheinbaren physischen Registergröße
DE19929051A1 (de) Registerumbenennungsverfahren für 32- und 64-Bit-Befehle in einem Programm
DE60005830T2 (de) Verfahren und vorrichtung zum steuern eines sprungverzögerungsschlitzes in einem pipelineprozessor

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee