-
Hintergrund der Erfindung
-
Technisches Gebiet
-
Diese Erfindung betrifft das Gebiet der Prozessoren und Computersysteme und betrifft insbesondere die Energieverwaltung in Prozessoren und anderen Geräten.
-
Hintergrund
-
Obwohl die Leistungsfähigkeit in Rechnereinrichtungen oder anderen Geräten viel Aufmerksamkeit erlangt hat, ist das Thema des Leistungsverbrauchs weiterhin von großer Wichtigkeit. Allgemein gesagt, erwartet die Allgemeinheit, dass die Rechnereinrichtungen kleiner und mobiler werden. Unabhängig davon, ob das Gerät ein tragbarer Computer, ein Mobiltelefon, ein persönlicher digitaler Assistent (PDA) oder ein sonstiges Gerät ist, sind tragbare Leistungs- bzw. Energiequellen, etwa Batterien, eine übliche Einrichtung. Auf Grund der Tatsache, dass derartige Leistungsquellen von ihrer Art her begrenzt sind, ist es äußerst wichtig, die verfügbare Leistung in effizienter Weise auszunutzen. Folglich sind Energieverwaltungstechniken in derartigen Bauelementen häufig anzufinden. Mit der zunehmenden Reduzierung der Gategrößen in Prozessoren und anderen Computereinrichtungen wird erwartet, dass die statische Leistungsaufnahme in naher Zukunft gleich der dynamischen Leistungsaufnahme ist. Somit wird der statische Leistungsverbrauch zunehmend ein wichtiges Entwurfskriterium in Prozessoren und Bauteilarchitekturen.
-
Die
US 6 976 182 B1 offenbart eine Verbrauchssteuerung, die auf der Grundlage einer Vorhersage gemacht wird, ob eine Funktionseinheit in einem Zeitintervall benötigt wird.
-
Die
WO 2005/069123 A2 offenbart ein Betriebsverfahren für einen Mikroprozessor, wobei die Funktionseinheiten, die zum Bearbeiten von Befehlen erforderlich sind, vorab identifiziert werden.
-
Angesichts der Bedeutung der Energieverwaltung in diesen Geräten, ist es die Aufgabe der vorliegenden Erfindung effektivere Leistungsverwaltungsverfahren und -mechanismen bereitzustellen.
-
Überblick über die Erfindung
-
Es werden hierin Verfahren und Mechanismen zur Energieverwaltung in Computereinrichtungen bereitgestellt.
-
Es werden ein Verfahren und ein Mechanismus bereitgestellt, wobei relevante Logikblöcke eines Bauelements aktiv sind. Blöcke, die nicht erforderlich sind, werden abgeschaltet und die Zuführung des Taktsignals zu den nicht erforderlichen Blöcken wird unterbrochen. Das Verfahren und der Mechanismus bestimmen dynamisch, wie und wann diverse Logikeinheiten arbeiten oder abgeschaltet werden können.
-
Es wird ein Bauelement bereitgestellt, das eine oder mehrere energiesteuerbare Gruppen aufweist. Eine Energieverwaltungseinheit, die mit dem Bauelement verknüpft ist, ist ausgebildet, Befehle zu erkennen, die für die Ausführung disponiert sind, eine spezielle Leistungsgruppe zu erkennen, die zum Ausführen eines Befehls erforderlich ist, und eine Angabe zu übermitteln, die verhindert, dass die spezielle Leistungsgruppe einen abgeschalteten Zustand annimmt, in Reaktion auf das Erkennen des Befehls. Wenn die Energieverwaltungseinheit keinen eintreffenden oder anhängigen Befehl für eine vorbestimmte Zeitdauer erkennt, der die spezielle Leistungsgruppe zum Ausführen benötigt, kann die Energieverwaltungseinheit eine Angabe übermitteln, die veranlasst oder zulässt, dass die entsprechende Leistungsgruppe den ausgeschalteten Zustand annimmt. Des weiteren kann zum Abschalten der Energie für eine gegebene Leistungsgruppe auch das Taktsignal deaktiviert werden.
-
Ferner wird ein Gerät betrachtet, in welchem energiesteuerbare Gruppen in Bereiche unterteilt werden, die abgeschaltet werden können und in Bereiche, die nicht abgeschaltet werden können. In einer derartigen Ausführungsform wird, wenn bestimmt wird, dass eine gegebene Leistungsgruppe abschaltbar ist, lediglich der Bereich der Leistungsgruppe, der abschaltbar ist, abgeschaltet. Der bzw. die verbleibenden Bereiche bleiben eingeschaltet. In einer alternativen Ausführungsform werden Bereiche einer Leistungsgruppe, die nicht abschaltbar sind, in einen Zustand mit geringer Leistung übergeführt, der es dem Bereich ermöglicht, einen Systemzustand des Bereichs beizubehalten.
-
Des weiteren wird eine Energieverwaltungseinheit bereitgestellt, die ausgebildet ist, eine Zählerzahl für jede leistungssteuerbare Gruppen zu bewahren. Bei jedem Zyklus eines empfangenen Taktsignals wird die Zählerzahl herabgesetzt. Wenn ein Zähler die Null erreicht, dann wird ein Signal übermittelt, das angibt, dass die entsprechende Leistungsgruppe in einen abgeschalteten Zustand versetzt werden kann. Wenn ein Befehl erkannt wird, der eine spezielle Leistungsgruppe für die Ausführung erfordert, dann wird die Zählerzahl für diese Leistungsgruppe auf einen Wert ungleich Null zurückgesetzt. In einer Ausführungsform können die Zähler in natürlicher Weise bei Fehlen eines Rücksetzsignals „zerfallen”. Folglich können Leistungsgruppen automatisch in einen abgeschalteten Zustand oder einen Zustand mit geringerer Leistung „zerfallen”. In diversen Ausführungsformen sind die Leistungsgruppen ausgebildet, eine Statusangabe zu übermitteln, die verhindert, dass die erste Gruppe einen abgeschalteten Zustand annimmt.
-
In einer Ausführungsform sind Befehle mit Leistungscodierungen verknüpft, die angeben, welche Leistungsgruppen für die Ausführung erforderlich sind. Befehlscodierungen können codiert werden, um eine oder mehrere Leistungsgruppen zu kennzeichnen, die für die Ausführung erforderlich sind. Alternativ können Befehle in Leistungscodierungen über einen Zuordnungsmechanismus zugeordnet werden.
-
Insbesondere wird die Aufgabe der vorliegenden Erfindung durch eine Vorrichtung nach Anspruch 1 oder ein Verfahren nach Anspruch 11 gelöst.
-
Kurze Beschreibung der Zeichnungen
-
Die folgende detaillierte Beschreibung nimmt Bezug auf die begleitenden Zeichnungen, die nachfolgend kurz beschrieben werden.
-
1 ist eine Blockansicht einer Ausführungsform eines Prozessors.
-
2 ist eine Blockansicht einer Ausführungsform eines Bereichs des in 1 gezeigten Prozessors.
-
3 zeigt einen Teil eines Energieverwaltungsmechanismus.
-
4 zeigt einen Teil eines Energieverwaltungsmechanismus.
-
5 zeigt eine Ausführungsform eines dynamischen Energiesteuermechanismus und von Leistungsgruppen.
-
6 zeigt eine Ausführungsform von Bauteilbefehlen und Leistungscodierungen.
-
7 ist eine Blockansicht einer zweiten Ausführungsform eines Computersystems, das den in 1 gezeigten Prozessor enthält.
-
Obwohl die Erfindung diversen Modifizierungen und alternativen Formen unterliegen kann, sind dennoch spezielle Ausführungsformen hier beispielhaft in den Zeichnungen gezeigt und im Weiteren detailliert beschrieben. Es sollte jedoch beachtet werden, dass die Zeichnungen und die detaillierte Beschreibung nicht beabsichtigen, die Erfindung auf die spezielle offenbarte Form einzuschränken, sondern die Erfindung soll vielmehr alle Modifizierungen, Äquivalente und Alternativen abdecken, die innerhalb des Grundgedankens und Schutzbereichs der vorliegenden Erfindung, wie sie durch die angefügten Patentansprüche definiert ist, liegen.
-
Art bzw. Arten zum Ausführen der Erfindung
-
Überblick über den Prozessor
-
1 zeigt eine Blockansicht einer Ausführungsform eines Prozessors 10. Andere Ausführungsformen sind möglich und hierin berücksichtigt. Wie in 1 gezeigt ist, umfasst der Prozessor 10 eine Vorabhol/Vordecodiereinheit 12, eine Verzweigungsvorhersageeinheit 14, einen Befehlscache-Speicher 16, eine Befehlsausrichteinheit 18, mehrere Decodiereinheiten 20a bis 20c, mehrere Reservierstationen 22a bis 22c, mehrere Funktionseinheiten 24a bis 24c, eine Lade/Schreibeinheit 26, einen Datencache-Speicher 28, eine Registerdatei 30, einen Umordnungspuffer 32, eine MROM-Einheit 34 und eine Busschnittstelleneinheit 37. Elemente, die hierin mit einer speziellen Bezugszahl mit anschließendem Buchstaben bezeichnet sind, werden gemeinsam auch nur durch die Bezugszahl alleine bezeichnet. Beispielsweise werden die Decodiereinheiten 20a bis 20c gemeinsam auch als Decodiereinheiten 20 bezeichnet.
-
Die Vorabhol/Vordecodiereinheit 12 ist ausgebildet, Befehle aus der Busschnittstelleneinheit 37 zu empfangen und ist ferner mit dem Befehlscachespeicher 16 und der Verzweigungsvorhersageeinheit 14 verbunden. In ähnlicher Weise ist die Verzweigungsvorhersageeinheit 14 mit dem Befehlscachespeicher 16 verbunden. Des weiteren ist die Verzweigungsvorhersageeinheit 14 mit den Decodiereinheiten 20 und den Funktionseinheiten 24 verbunden. Der Befehlscachespeicher 16 ist mit der MROM-Einheit 34 und der Befehlsausrichteinheit 18 verbunden. Die Befehlsausrichteinheit 18 ist wiederum mit den Decodiereinheiten 20 verbunden. Jede Decodiereinheit 20a bis 20c ist mit der Lade/Schreibeinheit 26 und den entsprechenden Reservierstationen 22a bis 22c verbunden. Die Reservierstationen 22a bis 22c sind ferner mit entsprechenden Funktionseinheiten 24a bis 24c verbunden. Des weiteren sind die Decodiereinheiten 20 und die Reservierstationen 22 mit der Registerdatei 30 und dem Umordnungspuffer 32 verbunden. Die Funktionseinheiten 24 sind mit der Lade/Schreibeinheit 26, der Registerdatei 30 und dem Umordnungspuffer 32 verbunden. Der Datencachespeicher 28 ist mit der Lade/Schreibeinheit 26 und der Busschnittstelleneinheit 37 verbunden. Die Busschnittstelleneinheit 37 ist ferner über eine L2-Schnittstelle mit einem L2-Cache-Speicher und einem Bus verbunden. Schließlich ist die MROM-Einheit 34 mit den Decodiereinheiten 20 verbunden.
-
Der Befehlscache-Speicher 16 ist ein Hochgeschwindigkeitscache-Speicher, der zum Speichern von Befehlen vorgesehen ist. Die Befehle werden aus dem Befehlscache-Speicher 16 abgeholt und an die Decodiereinheiten 20 ausgegeben. In einer Ausführungsform ist der Befehlscache-Speicher 16 ausgebildet, bis zu 64 Kilobytes an Befehlen in einer Zweiwege teilassoziativen Struktur mit 64 Zeilen (ein Byte umfasst 8 binäre Bits) zu speichern. Alternativ können andere gewünschte Konfigurationen und Größen eingesetzt werden. Beispielsweise ist zu beachten, dass der Befehlscache-Speicher 16 als eine vollständig assoziative, teilassoziative und direkt zugeordnete Konfiguration eingerichtet sein kann.
-
Befehle werden in dem Befehlscache-Speicher 16 mittels der Vorabhol/Vordecodiereinheit 12 gespeichert. Befehle werden vor deren Anforderung aus dem Befehlscache-Speicher 16 gemäß einem Vorabholschema abgeholt. Eine Vielzahl von Vorabholschemata kann in der Vorabhol/Vordecodiereinheit 12 eingerichtet sein. Wenn die Vorabhol/Vordecodiereinheit 12 Befehle an den Befehlscache-Speicher 16 überträgt, kann die Vorabhol/Vordecodiereinheit 12 Vordecodierdaten, die den Befehlen entsprechen, erzeugen. Beispielsweise erzeugt in einer Ausführungsform die Vorabhol/Vordecodiereinheit 12 drei Vordecodierbits für jedes Byte der Befehle: d. h. ein Startbit, ein Endbit und ein Funktionsbit. Die Vordecodierbits bilden Marken, die die Grenzen jedes Befehls angeben. Die Vordecodiermarken können auch eine zusätzliche Information beinhalten, etwa, ob ein gegebener Befehl direkt durch die Decodiereinheiten 20 decodiert werden kann, oder ob der Befehl durch Aufrufen einer Microcodierungsprozedur, die von der MROM-Einheit 34 gesteuert wird, ausgeführt wird. Des weiteren ist die Vorabhol/Nordecodier-Einheit 12 ausgebildet, Verzweigungsbefehle zu erkennen und Verzweigungsvorhersageinformationen, die den Verzweigungsbefehlen entsprechen, in der Verzweigungsvorhersageeinheit 14 zu speichern. In anderen Ausführungsformen werden andere geeignete Vordecodierschemata oder es wird keine Vordecodierung, je nach Bedarf, verwendet.
-
Eine Codierung der Vordecodiermarken für eine Ausführungsform des Prozesses 10, in der ein Befehlssatz mit variabler Bytelänge verwendet wird, wird als nächstes beschrieben. Ein Befehlssatz mit variabler Bytelänge ist ein Befehlssatz, in welchem unterschiedliche Befehle eine unterschiedliche Anzahl an Bytes einnehmen. Ein Beispiel eines Befehlssatzes mit variabler Bytelänge, der in einer Ausführungsform des Prozessors 10 eingesetzt wird, ist der x86-Befehlssatz.
-
In der beispielhaften Decodierung wird, wenn ein gegebenes Byte das erste Byte eines Befehls ist, das Startbit für dieses Byte gesetzt. Wenn das Byte das letzte Byte eines Befehls ist, wird das Endbit für dieses Byte gesetzt. Befehle, die direkt von den Decodiereinheiten
20 decodiert werden können, werden als Befehle des „schnellen Pfads” bezeichnet. Die verbleibenden x-86-Befehle werden als MROM-Befehle gemäß einer Ausführungsform bezeichnet. Für Befehle des schnellen Pfades wird das Funktionsbit für jedes Präfixbyte, das in dem Befehl enthalten ist, gesetzt und wird für andere Bytes zurückgesetzt. Alternativ wird für MROM-Befehle das Funktionsbit zurückgesetzt für jedes Präfix-Byte und für alle anderen Bytes gesetzt. Die Art des Befehls kann bestimmt werden, indem das Funktionsbit, das dem Endbyte entspricht, untersucht wird. Wenn dieses Funktionsbit zurückgesetzt ist, ist der Befehl ein Befehl des schnellen Pfades. Wenn andererseits das Funktionsbit gesetzt ist, ist der Befehl ein MROM-Befehl. Die Operationscodierung bzw. der Op-Code eines Befehls kann dadurch innerhalb eines Befehls, der direkt von den Decodiereinheiten
20 codiert werden kann, als das Byte erkannt werden, das mit dem ersten zurückgesetzten Funktionsbit in dem Befehl verknüpft ist. Beispielsweise besitzt ein Befehl des schnellen Pfads mit zwei Präfix-Bytes, einem Mod R/M-Byte und einem unmittelbarem Byte ein Startbit, ein Endbit und ein Funktionsbit wie folgt:
Startbits | 10000 |
Endbit | 00001 |
Funktionsbits | 11000 |
-
MROM-Befehle sind Befehle, die als zu komplex für die Decodierung durch die Decodiereinheiten 20 erkannt werden. MROM-Befehle werden durch Aufrufen der MROM-Einheit 34 ausgeführt. Insbesondere wenn ein MROM-Befehl angetroffen wird, analysiert die MROM-Einheit 34 den Befehl und gibt diesen als eine Teilmenge definierter Befehle des schnellen Pfads aus, um die gewünschte Operation auszuführen. Die MROM-Einheit 34 gibt die Teilmenge der Befehle des schnellen Pfads an die Decodiereinheiten 20 aus.
-
Der Prozessor 10 verwendet eine Verzweigungsvorhersage, um in spekulativer Weise Befehle abzuholen, die auf bedingte Verzweigungsbefehle folgen. Die Verzweigungsvorhersageeinheit 14 ist vorgesehen, um Verzweigungsvorhersageoperationen auszuführen. In einer Ausführungsform verwendet die Verzweigungsvorhersageeinheit 14 einen Verzweigungszielpuffer, der bis zu zwei Verzweigungszieladressen zwischenspeichert und entsprechende Vorhersagen „genommen/nicht genommen” pro 16 Bytebereiche in der Cache-Zeile in dem Befehlscache-Speicher 16 speichert. Der Verzweigungszielpuffer kann beispielsweise 2048 Einträge oder eine andere geeignete Anzahl an Einträgen enthalten. Die Vorabhol/Vordecodiereinheit 12 bestimmt anfängliche Verzweigungsziele, wenn eine spezielle Zeile vorläufig decodiert wird. Nachfolgende Aktualisierungen der Verzweigungsziele, die der Cache-Zeile entsprechen, können auf Grund des Ausführens der Befehle innerhalb der Cache-Zeile auftreten. Der Befehls-Cache-Speicher 16 liefern eine Angabe für die Befehlsadresse, die zu holen ist, so dass die Verzweigungsvorhersageeinheit 14 bestimmen kann, welche Verzweigungszieladressen auszuwählen sind, um eine Verzweigungsvorhersage zu erzeugen. Die Decodiereinheiten 20 und die Funktionseinheiten 24 liefert Aktualisierungsinformation an die Verzweigungsvorhersageeinheit 14. Die Decodiereinheiten 20 erkennen Verzweigungsbefehle, die nicht durch die Verzweigungsvorhersageeinheit 14 vorhersagt wurden. Die Funktionseinheiten 24 führen die Verzweigungsbefehle aus und bestimmen, ob die vorhergesagte Verzweigungsrichtung korrekt ist. Die Verzweigungsrichtung wird „genommen”, wobei nachfolgende Befehle von der Zieladresse des Verzweigungsbefehls abgeholt werden. Andererseits wird die Verzweigungsrichtung „nicht genommen”, woraufhin nachfolgende Befehle von Speicherstellen abgeholt werden, die auf den Verzweigungsbefehl folgen. Wenn ein vorhergesagter Verzweigungsbefehl erkannt wird, werden Befehle, die auf die falsch vorhergesagte Verzweigung folgen, von den diversen Einheiten des Prozesses 10 verworfen. In einer alternativen Konfiguration ist die Verzweigungsvorhersageeinheit 14 mit einem Umordnungspuffer 32 anstelle der Decodiereinheiten 20 und den Funktionseinheiten 24 verbunden, und empfängt eine Verzweigungsfehlvorhersageinformation von dem Anordnungspuffer 32. Es kann eine Vielzahl geeigneter Verzweigungsvorhersagealgorithmen in der Verzweigungsvorhersageeinheit 14 eingerichtet sein.
-
Befehle, die aus dem Befehlscache-Speicher 16 abgeholt werden, werden der Befehlsausrichteinheit 18 zugeführt. Wenn Befehle von dem Befehlscache-Speicher 16 abgeholt werden, werden die entsprechenden Vordecodierdaten überprüft, um Information an die Befehlsausrichteinheit 18 (und die MROM-Einheit 34) im Hinblick auf die gerade abgeholten Befehle zu liefern. Die Befehlsausrichteinheit 18 verwendet die Prüfdaten, um einen Befehl wieder den Decodiereinheiten 20 zuzuordnen. In einer Ausführungsform ordnet die Befehlsausrichteinheit 18 Befehle aus drei Sätzen aus 8 Befehlsbytes den Decodiereinheiten 20 zu. Die Decodiereinheit 20a empfängt einen Befehl, der vor den Befehlen liegt, die gleichzeitig von den Decodiereinheiten 20b und 20c (in der Programmreihenfolge) empfangen werden. In ähnlicher Weise erhält die Decodiereinheit 20b einen Befehl, der vor dem Befehl liegt, der gleichzeitig von der Decodiereinheit 20c gemäß der Programmreihenfolge empfangen wird. In einigen Ausführungsformen (beispielsweise in Ausführungsformen, in denen ein Befehlssatz mit fester Länge verwendet ist) ist die Befehlsausrichteinheit 18 nicht vorhanden. Die Decodiereinheiten 20 sind ausgebildet, Befehle, die von der Befehlsausrichteinheit 18 empfangen werden, zu decodieren. Eine Registeroperandeninformation wird erkannt und an die Registerdatei 30 und den Umordnungspuffer 32 weitergeleitet. Wenn ferner die Befehle das Ausführen einer oder mehrerer Speicheroperationen erfordern, geben die Decodiereinheiten 20 die Speicheroperation an die Lade/Schreibeinheit 26 aus. Jeder Befehl wird zu einem Satz aus Steuerwerten für die Funktionseinheit 24 decodiert und diese Steuerwerte werden an die Reservierstationen 22 zusammen mit den Operandenadresseninformationen und den Verschiebedaten oder den unmittelbaren Daten ausgegeben, die in dem Befehl enthalten sind. In einer speziellen Ausführungsform wird jeder Befehl in bis zu zwei Operationen decodiert, die separat von den Funktionseinheiten 24a bis 24c ausgeführt werden.
-
Der Prozessor 10 unterstützt eine Abarbeitung außerhalb der Reihenfolge und verwendet damit den Umordnungspuffer 32, um die ursprüngliche Programmreihenfolge für Registerlese- und Schreiboperationen zu überwachen, um damit eine Registerumbenennung einzurichten, so dass eine spekulative Befehlsausführung und Verzweigungsfehlvorhersagewiederherstellung möglich ist und so dass eine präzise Ausnahmebehandlung ermöglicht wird. Eine temporäre Speicherstelle innerhalb des Umordnungspuffers 32 wird beim Decodieren eines Befehls reserviert, der die Aktualisierung eines Registers beinhaltet, um damit spekulative Registerzustände zu speichern. Wenn eine Verzweigungsvorhersage nicht korrekt ist, werden die Ergebnisse der spekulativ ausgeführten Befehle zusammen mit dem falsch vorhergesagten Pfad in dem Puffer als ungültig erklärt, bevor diese in die Registerdatei 30 geschrieben werden. Wenn in ähnlicher Weise ein spezieller Befehl eine Ausnahme hervorruft, werden Befehle, die auf diesen speziellen Befehl folgen, verworfen. In dieser Weise sind Ausnahmebehandlungen „präzise” (d. h. Befehle nachfolgend zu dem speziellen Befehl, der die Ausnahmebehandlung hervorruft, werden nicht vor der Ausnahmebehandlung abgeschlossen). Zu beachten ist, dass ein spezieller Befehl spekulativ ausgeführt wird, wenn dieser vor den Befehlen ausgeführt wird, die dem speziellen Befehl in der Programmreihenfolge vorausgehen. Vorausgehende Befehle können ein Verzweigungsbefehl oder eine Ausnahmebehandlung hervorrufender Befehl sein, in welchem Falle die spekulativen Ergebnisse durch den Umordnungspuffer 32 verworfen werden.
-
Die decodierten Befehle, die an den Ausgängen der Decodiereinheiten 20 bereitgestellt werden, werden direkt zu den jeweiligen Reservierstationen 22 geleitet. In einer Ausführungsform ist jede Reservierstation 22 ausgebildet, Befehlsinformation (beispielsweise decodierte Befehle sowie Operandenwerte, Operandenmarken und/oder unmittelbare Daten) für bis zu 6 anhängige Befehle, die auf die Ausgabe zu der entsprechenden Funktionseinheit warten, zu halten. Zu beachten ist, dass für die Ausführungsform der 1 jede Reservierstation 22 mit einer zugeordneten Funktionseinheit 24 verknüpft ist. Folglich werden drei spezielle „Ausgabepositionen” durch die Reservierstationen 22 und die Funktionseinheiten 24 gebildet. Anders ausgedrückt, die Ausgabeposition Null wird durch die Reservierstation 22a und die Funktionseinheit 24a gebildet. Befehle, die der Reservierstation 22a zugeordnet und an diese ausgegeben werden, werden von der Funktionseinheit 24a ausgeführt. In ähnlicher Weise wird die Ausgabeposition 1 durch die Reservierstation 22b und die Funktionseinheit 24b gebildet; und die Ausgabeposition 2 wird durch die Reservierstation 22c und die Funktionseinheit 24c gebildet.
-
Beim Decodieren eines speziellen Befehls wird, wenn ein erforderlicher Operand eine Registerstelle ist, eine Registeradresseninformation dem Umordnungspuffer 32 und gleichzeitig der Registerdatei 30 zugeführt. Die Registerdatei 30 umfasst Speicherplätze für jedes der vorgesehenen Register in der Architektur, die in dem Befehl enthalten sind, der in dem Prozessor 10 eingerichtet ist. Weitere Speicherplätze können innerhalb der Registerdatei 30 zur Verwendung durch die MROM-Einheit 34 vorgesehen sein. Der Umordnungspuffer 32 enthält temporäre Speicherplätze für Ergebnisse, die den Inhalt dieser Register ändern, um eine Abarbeitung außerhalb der Reihenfolge zu ermöglichen. Ein temporärer Speicherplatz des Umordnungspuffers 32 wird für jeden Befehl reserviert, der beim Decodieren als ein Befehl erkannt wird, der den Inhalt eines der realen Register modifiziert. Daher wird an den diversen Punkten des Ausführens eines speziellen Programms der Umordnungspuffer 32 eine oder mehrere Speicherstellen besitzen, die die spekulativ ausgeführten Inhalte eines gegebenen Registers enthalten. Wenn nach dem Decodieren eines gegebenen Befehls bestimmt wird, dass der Umordnungspuffer 32 eine vorhergehende Stelle oder Stellen besitzt, die einem Register, das als ein Operand in dem vorgegebenen Befehl verwendet wurde, angeordnet ist, leitet der Umordnungspuffer 32 an die entsprechende Reservierstation weiter: 1) den Wert in der jüngst zugewiesenen Speicherstelle, oder 2) eine Marke für die jüngst zugeordnete Speicherstelle, wenn der Wert durch die Funktionseinheit noch nicht erzeugt ist, die schließlich den vorhergehenden Befehl ausführt. Wenn der Umordnungspuffer 32 eine Stelle besitzt, die für ein gegebenes Register reserviert ist, wird der Operandenwert (oder die Umordnungspuffermarkierung) von dem Umordnungspuffer 32 anstatt von der Registerdatei 30 bereitgestellt. Wenn es keine für ein erforderliches Register in dem Umordnungspuffer 32 reservierte Speicherstelle gibt, wird der Wert direkt von der Registerdatei 30 genommen. Wenn der Operand einer Speicherstelle entspricht, wird der Operandenwert der Reservierstation durch die Lade/Schreibeinheit 26 zugeführt.
-
In einer speziellen Ausführungsform ist der Umordnungspuffer 32 ausgebildet, gleichzeitig decodierte Befehle als eine Einheit zu speichern und zu bearbeiten. Diese Konfiguration wird im Weiteren als „zeilenorientiert” bezeichnet. Durch Bearbeiten mehrerer Befehle gleichzeitig wird die in dem Umordnungspuffer 32 verwendete Hardware vereinfacht. Beispielsweise reserviert ein zeilenorientierter Umordnungspuffer, der in der vorliegenden Ausführungsform eingerichtet ist, ausreichend Speicher für Befehlsinformation, die drei Befehle (einen für jede Decodiereinheit 20 betrifft), immer wenn ein oder mehrere Befehle von den Decodiereinheiten 20 ausgegeben werden. Im Gegensatz dazu wird eine variable Menge an Speicherplatz in konventionellen Umordnungspuffern reserviert, abhängig von der Anzahl der tatsächlich ausgegebenen Befehle. Es ist eine relativ große Anzahl an Logikgattern erforderlich, um die variable Menge an Speicherplatz zu reservieren. Wenn jeder der gleichzeitig decodierten Befehle ausgeführt ist, werden die Befehlsergebnisse gleichzeitig in der Registerdatei 30 gespeichert. Der Speicherplatz ist dann für die Reservierung für einen weiteren Satz an gleichzeitig decodierten Befehlen verfügbar. Des weiteren wird der Anteil an Steuerlogikschaltung, der erforderlich ist, reduziert, da die Steuerlogik über mehrere gleichzeitig decodierte Befehle anteilsmäßig aufgeteilt ist. Eine Umordnungspuffermarkierung, die einen speziellen Befehl kennzeichnet, kann in zwei Felder aufgeteilt werden: eine Zeilenmarkierung und eine Offsetmarkierung. Die Zeilenmarkierung gibt den Satz der gleichzeitig decodierten Befehle einschließlich des speziellen Befehls an, und die Offsetmarkierung gibt an, welcher Befehl innerhalb des Satzes dem speziellen Befehl entspricht. Zu beachten ist, dass das Speichern von Befehlsergebnissen in der Registerdatei 30 und das Freigeben des entsprechenden Speicherplatzes als „Abschließen” der Befehle bezeichnet wird. Des weiteren ist dazu zu beachten, dass eine beliebige Umordnungspufferkonfiguration in den diversen Ausführungsformen des Prozessors 10 eingesetzt werden kann.
-
Wie zuvor dargestellt ist, speichern die Reservierstationen 22 Befehle, bis die Befehle von der entsprechenden Funktionseinheit 24 ausgeführt werden. Ein Befehl wird für die Ausführung ausgewählt, wenn: (i) die Operanden des Befehls bereit sind; und (ii) die Operanden noch nicht für Befehle bereitgestellt sind, die innerhalb der gleichen Reservierstation 22a bis 22c vorhanden sind und die vor dem Befehl in der Programmreihenfolge liegen. Zu beachten ist, dass, wenn ein Befehl von einer der Funktionseinheiten 24 ausgeführt wird, das Ergebnis dieses Befehls direkt einer der Reservierstationen 22 zugeleitet wird, die auf dieses Ergebnis warten, wobei gleichzeitig das Ergebnis zum Aktualisieren des Umordnungspuffers 32 weitergeleitet wird (diese Technik wird häufig als „Ergebnisweiterleitung” bezeichnet). Ein Befehl wird für das Ausführen ausgewählt und einer Funktionseinheit 24a bis 24c während des Taktzyklus zugeleitet, in dem das entsprechende Ergebnis weitergeleitet wird. Die Reservierstationen 22 leiten das weitergeleitete Ergebnis an die Funktionseinheit 24 in diesem Falle weiter. In Ausführungsformen, in denen Befehle in mehrere Operationen decodiert werden, die von den Funktionseinheiten 24 ausgeführt werden, können die Operationen unabhängig voneinander disponiert werden.
-
In einer Ausführungsform ist jede der Funktionseinheiten 24 ausgebildet, Ganzzahlarithmetikoperationen der Addition und Subtraktion sowie Verschiebungen, Rotationen, logische Operationen und Verzeigungsoperationen auszuführen. Die Operationen werden in Reaktion auf die Steuerwerte ausgeführt, die für einen speziellen Befehl durch die Decodiereinheiten 20 decodiert werden. Zu beachten ist, dass eine Gleitkommaeinheit (nicht gezeigt) ebenfalls verwendet werden kann, um Gleitkommaoperationen auszuführen. Die Gleitkommaeinheit kann als ein Coprozessor arbeiten, der Befehle von der MROM-Einheit 34 oder dem Umordnungspuffer 32 empfängt und nachfolgend mit dem Umordnungspuffer 32 kommuniziert, um die Befehle abzuschließen. Des weiteren sind die Funktionseinheiten 24 ausgebildet, eine Adressenerzeugung für Lade- und Schreibspeicheroperationen, die von der Lade/Schreibeinheit 26 ausgeführt werden, auszuführen. In einer speziellen Ausführungsform umfasst jede Funktionseinheit 24 eine Adressenerzeugungseinheit zum Erzeugen von Adressen und eine Ausführungseinheit zum Durchführen der verbleibenden Funktionen. Die beiden Einheiten können unabhängig bei unterschiedlichen Befehlen oder Operationen während eines Taktzyklus arbeiten.
-
Jede der Funktionseinheiten 24 liefert auch Information im Hinblick auf das Ausführen bedingter Verzweigungsbefehle an die Verzweigungsvorhersageeinheit 14. Wenn eine Verzweigungsvorhersage nicht korrekt war, verwirft die Verzweigungsvorhersageeinheit 14 Befehle, die auf die falsch vorhergesagte Verzweigung folgen und die die Befehlsausführungsvektorverarbeitung bereits begonnen haben, und holt die erforderlichen Befehle von dem Befehlscachespeicher 16 oder dem Hauptspeicher ab. Zu beachten ist, dass in derartigen Situationen Ergebnisse von Befehlen in der ursprünglichen Programmabfolge, die nach dem falsch vorhergesagten Verzweigungsbefehl auftreten, verworfen werden, wozu jene gehören, die spekulativ ausgeführt und temporär in der Lade/Schreibeinheit 26 und dem Umordnungspuffer 32 gespeichert sind. Des weiteren ist zu beachten, dass die Ergebnisse der Ausführung der Verzweigung durch die Funktionseinheiten 24 an den Umordnungspuffer 32 geliefert werden können, der den Funktionseinheiten 24 falsche Verzweigungsvorhersagen bekannt gibt.
-
Die durch die Funktionseinheiten 24 erzeugten Ergebnisse werden dem Umordnungspuffer 32 zugesendet, wenn ein Registerwert aktualisiert wird, und werden auch der Lade/Schreibeinheit 26 zugeführt, wenn der Inhalt einer Speicherstelle geändert wird. Wenn das Ergebnis in einem Register zu speichern ist, speichert der Umordnungspuffer 32 das Ergebnis in der für den Wert des Registers reservierten Speicherstelle, wenn der Befehl decodiert wurde. Es sind eine Vielzahl von Ergebnisbussen 38 zur Weiterleitung von Ergebnissen von den Funktionseinheiten 24 und der Lade/Schreibeinheit 26 vorgesehen. Die Ergebnisbusse 38 transportieren das erzeugte Ergebnis sowie die Umordnungspuffermarkierung, die den gerade auszuführenden Befehl kennzeichnet.
-
Die Lade/Schreibeinheit 26 stellt eine Schnittstelle zwischen den Funktionseinheiten 24 und dem Datencache-Speicher 28 bereit. In einer Ausführungsform ist die Lade/Schreibeinheit 26 mit einem ersten Lade/Schreibpuffer versehen, der Speicherplätze für Daten und Adresseninformationen für anhängige Ladeoperationen oder Schreiboperationen aufweist, die nicht auf den Datencache-Speicher 28 zugreifen, und die Einheit 26 besitzt ferner einen zweiten Lade/Schreibpuffer mit Speicherplätzen für Daten und Adresseninformationen für Lade- und Schreiboperationen, die auf den Datencache-Speicher 28 zugegriffen haben. Beispielsweise weisen der erste Puffer 12 und der zweite Puffer 32 Speicherplätze auf. Die Decodiereinheiten 20 sind für die Zugriffsverteilung auf die Lade/Schreibeinheit 26 verantwortlich. Wenn der erste Puffer voll ist, muss eine Decodiereinheit warten, bis die Lade/Schreibeinheit 26 Platz hat für die anhängige Lade- und Schreibanforderungsinformation. Die Lade/Schreibeinheit 26 führt ferner eine Abhängigkeitsprüfung für Ladespeicheroperationen im Hinblick auf anhängige Schreibspeicheroperationen durch, um damit sicherzustellen, dass die Datenkohärenz bewahrt bleibt. Eine Speicheroperation ist ein Transfer von Daten zwischen dem Prozessor 10 und dem Hauptspeichersubsystem, obwohl der Transfer in dem Datencache-Speicher 28 erreicht werden kann. Speicheroperationen können das Ergebnis eines Befehls sein, der einen in dem Speicher abgelegten Operanden verwendet, oder können das Ergebnis eines Lade/Schreibbefehls sein, der den Datentransfer hervorruft, aber keine weitere Operation bewirkt.
-
Der Datencache-Speicher 28 ist ein Hochgeschwindigkeitscache-Speicher, der zum Zwischenspeichern von Daten vorgesehen ist, die zwischen der Lade/Schreibeinheit 26 und dem Hauptspeichersubsystem ausgetauscht werden. In einer Ausführungsform besitzt der Datencache-Speicher 28 eine Kapazität zur Speicherung bis zu 64 Kilobytes an Daten in einer Zweiwege teilassoziativen Struktur. Zu beachten ist, dass der Datencache-Speicher 28 als eine Vielzahl spezieller Speicherkonfigurationen eingerichtet sein kann, wozu eine teilassoziative Konfiguration, eine vollständig assoziative Konfiguration, eine direkt zugeordnete Konfiguration und eine beliebige Größe einer anderen Konfiguration gehören.
-
Die Busschnittstelleneinheit 37 ist ausgebildet, eine Kommunikation zwischen dem Prozessor 10 und anderen Komponenten in einem Computersystem über einem Bus zu ermöglichen. Beispielsweise ist der Bus kompatibel mit dem EV-6 Bus, der von Digital Equipment Corporation entwickelt wurde. Alternativ kann eine beliebige geeignete Verbindungsstruktur verwendet werden, wozu paketbasierte, unidirektionale oder bidirektionale Verbindungen, etc. gehören. Eine optionale L2-Cache-Schnittstelle kann ebenfalls zur Kommunikation mit einem Cache-Speicher der Ebene 2 verwendet werden.
-
Zu beachten ist, dass obwohl die Ausführungsform aus 1 eine superskalare Implementierung ist, in anderen Ausführungsformen skalare Implementierungen eingesetzt werden. Ferner ist die Anzahl der Funktionseinheiten ggf. von Ausführungsform zu Ausführungsform verschieden. Eine Ausführungsschaltung zum Ausführen von Befehlen des schnellen Pfades und Mikrocodierungsbefehlen kann ebenfalls verwendet werden. In anderen Ausführungsformen wird eine zentrale Reservierstation anstelle der individuellen in 1 gezeigten Reservierstationen verwendet. Ferner kann in anderen Ausführungsformen eine zentrale Disponiereinheit anstelle der Servierstationen und des in 1 gezeigten Umordnungspuffers eingesetzt werden.
-
In 2 ist in einer Ausführungsform ein Energieverwaltungsmechanismus gezeigt, der in einem Gerät, etwa dem zuvor beschriebenen Prozessor, eingesetzt werden kann. Im Folgenden werden zum Zwecke der Erläuterung ein Verfahren auf Basis von Mikrobefehlen und ein entsprechender Mechanismus verwendet. Jedoch können die beschriebenen Verfahren und Mechanismen auch in nicht-mikrobefehlbasierten Systemen eingesetzt werden.
-
In dem gezeigten Beispiel sind eine Mikrocodierungseinheit 200 und eine Mikrobefehlsteuereinheit 202 gezeigt. Zu beachten ist, dass die Mikrocodierungseinheit 200 und die Mikrobefehlssteuereinheit 202 im Allgemeinen der zuvor beschriebenen MROM-Einheit 34 entsprechen können. In anderen Ausführungsformen umfassen die Einheiten (200, 202) eine Schaltung, die unabhängig von der MROM-Einheit 34 ist. Die Mikrocodierungseinheit 200 enthält einen Speicher 210 mit mehreren Einträgen, wovon jeder gestaltet ist, einen Mikrobefehl zu speichern. Der Speicher 210 umfasst beispielsweise einen Nur-Lese-Speicher (ROM) oder eine andere geeignete Speichereinrichtung. Die Steuereinheit 202 ist so gezeigt, dass sie einen Umordnungspuffer 220 und eine dynamische Leistungssteuereinheit 240 aufweist. Ferner sind zusätzlich zu der Mikrocodierungseinheit 200 und der Steuereinheit 202 Leistungsgruppen 260a bis 260n gezeigt. In einer Ausführungsform entspricht eine Leistungsgruppe einer Ansammlung an energiesteuerbaren Blöcken aus einer bzw. mehreren Logikeinheiten oder Schaltungen. Energiesteuerbar heißt typischerweise, dass die VDD-Versorung und/oder der Takt dynamisch eingeschaltet oder ausgeschaltet werden können. Beispielsweise entspricht die Leistungsgruppe 260a einer Adressenerzeugungseinheit und/oder einer Lade/Schreibeinheit, die Leistungsgruppe 260b entspricht einer arithmetischen Logikeinheit, die Leistungsgruppe 260c entspricht einem Schieber, die Leistungsgruppe 260n entspricht einem Teil einer Gleitkommaeinheit, usw.
-
In einer Ausführungsform sind Mikrobefehle so codiert, dass diese angeben, welche von einer oder mehreren Leistungsgruppen 260 für das Ausführen erforderlich sind. Wenn erkannt wird, dass ein Mikrobefehl, der eine spezielle Leistungsgruppe erfordert, in der Vektorverarbeitung ist oder in anderer Weise die Verwendung einer speziellen Leistungsgruppe erfordert, dann veranlasst die Steuereinheit 202, dass die entsprechende Leistungsgruppe(n) aktiv bleibt oder eingeschaltet wird. Wenn kein derartiger Mikrobefehl erkannt wird, wird einer entsprechenden Leistungsgruppe ermöglicht, dass sie einen Zustand mit geringer bzw. geringerer Leistung bzw. Energie einnimmt. Im hierin verwendeten Sinne beinhaltet ein Zustand mit geringer Leistung einen ausgeschalteten oder energielosen Zustand, sofern dies nicht anders angegeben ist.
-
In einer Ausführungsform gehen spezielle Leistungsgruppen 260 automatisch in einen Zustand mit geringerer Energie über, wenn eine derartige Angabe fehlt, die ein Annehmen des Zustands mit geringerer Leistung verhindert. In einer derartigen Ausführungsform kann gesagt werden, dass Leistungsgruppen automatisch im Laufe der Zeit im Hinblick auf die Leistungsaufnahme „zerfallen”. Wenn bestimmt oder angenommen wird, dass eine gegebene Leistungsgruppe erforderlich ist, wird eine Angabe an die Leistungsgruppe übermittelt, die diese „auffrischt”, so dass sie einen weniger zerfallenen Zustand einnimmt. Beispielsweise ist eine Leistungsgruppe 260 ausgebildet, in automatischer Weise einen Zustand mit geringerer Energie einzunehmen, wenn diese nicht in Verwendung ist, und auch kein Auffrischungssignal innerhalb einer vordefinierten Zeitdauer empfangen wurde. Wenn das Auffrischungssignal erkannt wird, kann die vorbestimmte Zeitdauer erneut „gestartet” werden.
-
In der gezeigten Ausführungsform umfasst der Speicher 210 eine Tabelle mit mehreren Zeilen, wobei eine vorgegebene Zeile Daten speichert, die einer (oder möglicherweise mehreren) Mikrobefehlen entspricht. Im hierin verwendeten Sinne werden die Begriffe „Mikrobefehl” und „Befehl” synonym verwendet. Wie gesagt, können Daten, die einem gegebenen Befehl entsprechen, ein oder mehrere Felder aufweisen, die eine spezielle Operation, ein Register, eine Speicherstelle oder sonstiges kennzeichnen. Des weiteren können die Daten für einen gegebenen Befehl ein Leistungscodierungsfeld 212 aufweisen, das verwendet wird, um eine oder mehrere Leistungsgruppen anzugeben, die zum Ausführen des entsprechenden Befehls erforderlich sind. In alternativen Ausführungsformen werden Daten innerhalb eines Leistungscodierungsfeldes 212 während der Befehlsdecodierung oder sonst wo innerhalb eines Verarbeitungsmechanismus erzeugt. In einer Ausführungsform, in der der Speicher 200 und/oder die Steuereinheit 202 Teil der MROM-Einheit 34 sind, ist der Speicher 200 ausgebildet, einen oder mehrere Befehle aus dem Speicher 200 zu der Steuereinheit 202 in Reaktion auf eine Angabe aus dem Befehlscache-Speicher 16 zu übertragen. Wie zuvor beschrieben ist, werden gewisse Befehle (beispielsweise MROM-Befehle) in einem Prozessor als zu komplex zur Decodierung durch die Decodiereinheiten 20 erachtet. MROM-Befehle werden daher durch Aufrufen der MROM-Einheit 34 ausgeführt, die dann zwei oder mehr andere Befehle ausgibt, um die gewünschte Operation zu bewerkstelligen.
-
In einer Ausführungsform enthält der Umordnungspuffer 220 mehrere Einträge, wovon jeder ausgebildet ist, Daten für einen Befehl zu speichern, der von dem Speicher 200 empfangen wird. In dem gezeigten Beispiel werden ein Befehl oder andere Daten an dem Umordnungspuffer 220 über einen Bus 230 übertragen, während eine entsprechende Leistungscodierung sowohl zu dem Umordnungspuffer 220 und zu der dynamischen Leistungssteuereinheit 240 über einen Bus 232 übertragen wird. Die dynamische Leistungssteuereinheit 240 enthält eine Einheit 280, die ausgebildet ist, eine Angabe für jede von einer oder mehreren Leistungsgruppen 260 zu speichern. Jede Angabe in der Einheit 280 ist so gestaltet, dass diese angibt, ob eine entsprechende Leistungsgruppe einen Zustand mit geringer Energie annehmen kann oder nicht. Beispielsweise umfasst die Einheit 280 Einträge 0 bis N, wovon jeder einer Leistungsgruppe 260 entspricht. Ferner kann jede Leistungsgruppe 260 eine entsprechende Angabe DPC[0]-DPC-[N] empfangen, die eine Leistungszustand für die Leistungsgruppe angibt. Auch ist in der dynamischen Leistungs- bzw. Energiesteuereinheit 240 eine Schaltung (290, 292 und 270) enthalten, die zur Aktualisierung eines Inhalts der Einheit 280 verwendet wird. In einer Ausführungsform empfängt die Schaltung 200 eine Angabe über den Bus 232, die einem „eintreffenden” Befehl entspricht, während der Bus 250 verwendet wird, um eine Angabe an die Schaltung 292 zu übermitteln, die einem „anhängigen” Befehl entspricht. Des weiteren sind die Leistungsgruppen 260 ferner angeschlossen, um eine Statusangabe an die dynamische Leistungssteuereinheit 240 über den Bus 252 zu übermitteln. Im hierin verwendeten Sinne wird ein Befehl als für die Ausführung als disponiert erachtet, wenn dieser als eintreffend und/oder anhängig erkannt ist.
-
Allgemein gesagt, kann eine über den Bus 232 oder 250 empfangene Angabe eine oder mehrere Leistungsgruppen 260 angeben, die zum Ausführen eines entsprechenden Befehls erforderlich sind. Wenn eine Angabe, die einer speziellen Leistungsgruppe 260a bis 260n entspricht, empfangen wird, dann wir die Einheit 280 aktualisiert, um die entsprechende Leistungsgruppe 260 anzugeben, die eingeschaltet bleiben soll und/oder getaktet werden soll (oder alternativ, die nicht in einem Zustand niedriger Energie übergehen darf). Beispielsweise umfasst in einer Ausführungsform die Einheit 280 einen globalen Zähler, wobei jeder Eintrag der Einheit 280 mindestens einer der Leistungsgruppen 260 entspricht und umfasst einen Zähler, dessen Wert bei jedem Taktzyklus verringert wird. In Reaktion auf das Erkennen einer eintreffenden Angabe 232 und/oder einer anhängigen Angabe 250, die einer Leistungsgruppe entspricht, bewirkt die Steuereinheit 270, dass der Zählerwert für die entsprechende Leistungsgruppe auf einen Wert ungleich Null zurückgesetzt wird. Des weiteren verhindert die Steuereinheit 270, dass der Zählerwert verringert wird, während ein Befehl, der einer gegebenen Leistungsgruppe entspricht, anhängig ist (beispielsweise in dem Umordnungspuffer 220). Eine Leistungsgruppe 260, deren Zählerwert Null erreicht, kann einen Zustand mit geringer bzw. geringerer Leistung annehmen (oder darf diesen annehmen). Ein Zählerwert innerhalb der Einheit 280, der den Wert Null erreicht, zeigt allgemein an, dass keine Leistungscodierung, die einem eintreffenden oder anhängigen Befehl entspricht, für eine gewisse Zeitdauer erkannt wurde. Wenn beispielsweise jeder Zählerwert in der Einheit 280 zwei Bits umfasst, und das Erkennen eines eintreffenden oder anhängigen Befehls bzw. der Leistungscodierung bewirkt, dass beide Bits auf den binären Wert „1” gesetzt werden (d. h. der Zählerwert ist 3), dann bewirkt ein dreimaliges Verringern des Zählerwertes, dass die Zählerzahl gleich Null ist, was verwendet werden kann, um zu veranlassen (oder anderweitig zuzulassen), dass die entsprechende Leistungsgruppe in einen Zustand mit geringer Leistung übergeht. Selbstverständlich können das Verfahren und der Mechanismus zum Erhöhen im Gegensatz zum Herabsetzen eines Zählers führen, und können einen Zustand mit geringerer Leistung hervorrufen oder zulassen in Reaktion auf das Erkennen eines entsprechenden Zählerwerts, der gleich oder größer ist als ein vorbestimmter maximaler Wert. In einer derartigen Ausführungsform wird der Zähler durch die Steuereinheit 270 auf Null zurückgesetzt.
-
3 zeigt eine Ausführungsform einer Leistungsgruppe 320 und einer entsprechenden Leistungszustandsangabe 310. Die Leistungsgruppe 320 entspricht im Allgemeinen einer der Leistungsgruppen 260, die in 2 gezeigt sind, und die Leistungszustandsangabe 310 entspricht im Wesentlichen einer Angabe, die von der dynamischen Leistungssteuereinheit 240, die in 2 gezeigt ist, bereitgestellt wird. In einer Ausführungsform werden die Leistungsgruppen logisch in zwei oder mehr Gruppen unterteilt, die unterschiedliche Energieverwaltungserfordernisse besitzen. In dem gezeigten Beispiel wird die Leistungsgruppe 320 in eine erste Gruppe 330, die energieverwaltet ist, und eine zweite Gruppe 332, die nicht energieverwaltet ist, unterteilt. In einer Ausführungsform umfasst die erste Gruppe 330 Register, eine kombinatorische Logik und/oder sequenzielle Logiken, die energieverwaltet sind, während die andere Gruppe 332 Register und/oder Logiken aufweist, die nicht energieverwaltet sind. Die Logik, die nicht abgeschaltet werden kann, kann im Allgemeinen nur Bereiche aufweisen, die zum Bewahren einer gewissen Art von Zustand erforderlich ist.
-
Wie in dem Beispiel aus 3 gezeigt ist, ist eine Spannungsversorgung 302 verfügbar, und eine Masseversorgung 306 ist ebenfalls verfügbar. Ferner wird eine CLK-Quelle (gclk) 304 bereitgestellt. Die Taktquelle glck 304 weist beispielsweise einen synchronen globalen Takt auf. In einer Ausführungsform ist die Spannungsversorgung mit der ersten Gruppe über ein erstes Gatter bzw. Tor 312 gekoppelt, und ist ebenfalls mit der zweiten Gruppe 332 verbunden. In ähnlicher Weise ist die gclk 304 mit der ersten Gruppe über ein Gatter bzw. Tor 314 verbunden und ist auch mit der zweiten Gruppe 332 verbunden. Die Masseversorgung 306 ist ebenfalls so gezeigt, dass sie mit beiden Gruppen (330, 332) gekoppelt ist. Die Leistungszustandsangabe (DPC[i]) 310 ist mit jedem der Gatter 312 und 314 gekoppelt. Die Gatter 312 und 314 besitzen Gatter mit dreifachem Zustand oder andere Schaltungen, die verwendet werden können, um zu steuern, ob die Spannungsversorgung 302 und/oder gclk 304 der ersten Gruppe 330 zuzuführen ist oder nicht. Beispielsweise besitzt die Leistungszustandsangabe 310 ein Freigabesignal, das verwendet wird, um eine Ausgabe aus jedem der Gatter 312 und 314 zu aktivieren oder zu deaktivieren. Das Aktivieren des Ausgangs des Gatters 312 bewirkt, dass die erste Gruppe 330 mit Energie versorgt wird, und das Aktivieren des Ausgangs des Gatters 314 bewirkt, dass die erste Gruppe 330 getaktet wird. In einer Ausführungsform umfasst das Leistungszustandssignal 310 einfach den Zählerwert für die entsprechende Leistungsgruppe, wie dies zuvor in 2 beschrieben ist. Wenn ein Bit des Zählers nicht Null ist, wird das entsprechende Gatter (312, 314) aktiviert. Ansonsten wird der Ausgang von dem entsprechenden Gatter (312, 314) deaktiviert. Natürlich gibt es zahlreiche Modifikationen, die das Signal 310 die Steuerschaltungen 312 und 314 steuern kann und diese Möglichkeiten sind hierin mit eingeschlossen.
-
Zusätzlich zu dem genannten ist eine Leistungsgruppe 320 gezeigt, um eine Statusangabe 340 zu übermitteln. Die Statusangabe wird im Wesentlichen der dynamischen Leistungssteuereinheit 240 der 2 zugeleitet. Die Statusangabe 340 kann verwendet werden, um anzugeben, wann die Leistungsgruppe 320 auszuschalten ist. Beispielsweise kann, während eine Leistungsgruppe 320 Operationen ausführt, das Statussignal 340 angeben, das Leistung und/oder Taktsignale erforderlich sind.
-
Wie zuvor beschrieben ist, kann ein Teil einer Leistungsgruppe energieverwaltet sein, während ein anderer Bereich dies nicht ist. In dem Beispiel aus 3 ist eine zweite Gruppe 332 in der Leistungsgruppe 340 ausgebildet, zu jeder Zeit mit Energie versorgt zu werden, und/oder getaktet zu werden. Dies kann erforderlich sein, da es notwendig ist für die Gruppe 332, in einem aktiven Zustand zu bleiben. In einer alternativen Ausführungsform kann ein Bereich einer Leistungsgruppe, der nicht abgeschaltet ist und/oder der das Taktsignal weiterhin erhält, einen geringeren Leistungszustand einnehmen. Auf diese Weise ist die Schaltung ausgebildet, die Leistungsaufnahme und/oder Leistungsverbrauch zu reduzieren, wobei dennoch der Systemzustand beibehalten wird.
-
4 zeigt eine Ausführungsform einer Schaltung ähnlich zu jener aus 3. Ähnliche Komponenten in 4 sind mit den gleichen Bezugszeichen wie in 3 belegt. In der Ausführungsform aus 4 ist zusätzlich eine Schaltung 400 zwischen der Versorgungsspannung 302, glck 304 und der Gruppe 332 der Leistungsgruppe 320 vorgesehen. Allgemein gesagt, ist die Schaltung 400 ausgebildet, zwei oder mehr Leistungspegel der Gruppe 332 zuzuführen, wobei ein minimaler Leistungspegel beibehalten wird, der zur Aufrechterhaltung eines Zustands der Schaltung innerhalb der Gruppe 332 erforderlich ist. In einer Ausführungsform ist die Schaltung 400 so angeschlossen, dass mehr als eine Leistungsversorgung empfangen werden kann. Beispielsweise ist die Schaltung 400 so angeschlossen, dass diese die Leistungsversorgung VDD 302 erhält und überträgt, die eine höhere Versorgungsspannung (beispielsweise 1 Volt) repräsentiert, und auch eine Leistungsversorgung VDD2 410 empfängt, die eine geringere Versorgungsspannung (beispielsweise 250 Millivolt) repräsentiert. Auf diese Weise kann die Schaltung 400 eine Versorgungsspannung von 2 oder mehr Energieversorgungen auswählen und kann die ausgewählte Versorgungsspannung der Gruppe 332 zuführen. Alternativ sind Techniken bekannt, die verwendet werden können, um mehr als einen Leistungspegel von einer einzelnen Versorgungseinheit zu beziehen. In einer derartigen Ausführungsform ist die Schaltung 400 ausgebildet, eine einzelne Leistungsversorgung (beispielsweise VDD 302) zu empfangen und zwei oder mehr Versorgungsspannungen der Gruppe 332 zuzuführen.
-
5 zeigt eine Ausführungsform eines Energieverwaltungsmechanismus. In der gezeigten Ausführungsform sind mehrerer Leistungsgruppen 560a bis 560n gezeigt, die ausgebildet sind, eine Leistungsversorgung (VDD) und ein Taktsignal (glck) zu empfangen. Die dargestellten Leistungsversorgungen VDD und die Taktsignale glck können eine gemeinsame Versorgungsspannung VDD und/oder ein Taktsignal glck repräsentieren oder auch nicht. Die Schaltung, die im Allgemeinen einer dynamischen Leistungssteuereinheit (etwa der Einheit 240 in 2) entspricht, ist in dem Block 500 gezeigt. In anderen Ausführungsformen werden die diversen Bereiche der Logik und der Schaltung, die in 5 gezeigt sind, innerhalb unterschiedlicher Plätze in dem Bauelement oder einem System vorgesehen. In dem gezeigten Beispiel ist eine Speichereinrichtung (beispielsweise ein Register) 522 gezeigt, die ausgebildet ist, eine Leistungsstatusangabe für jede Leistungsgruppe 560 zu speichern. Beispielsweise entsprechen die Einträge 520a bis 520n jeweils den Leistungsgruppen 560a bis 560n. Die Speichereinrichtung 522 kann, ohne dass dies erforderlich ist, im Allgemeinen dem Speicherelement 280 aus 2 entsprechen. In einer Ausführungsform, in der die Speichereinrichtung 522 mehrere Zähler aufweist, wird ein Aktualisierungssignal 521 erzeugt, das ausgebildet ist, die Zählerwerte zu verringern, wie dies zuvor beschrieben ist. Ferner sind für jede der Leistungsgruppen 560a bis 560n eine Torlogik 521a bis 532n und Angaben 530a bis 530n gezeigt.
-
In der gezeigten Ausführungsform ist die Einheit 500 angeschlossen, sowohl eine eintreffende Angabe 502a als auch eine anhängige Angabe 504a entsprechend mindestens einer Leistungsgruppen 560a zu empfangen. Die eintreffende Angabe 502a wird mittels einer Einrichtung, etwa der Mikrocodierungseinheit 200 aus 2 übermittelt, während die anhängige Angabe 504a von einer Einrichtung übertragen wird, etwa dem Umordnungspuffer 220 aus 2. Alternativ werden in einem Bauelement, das nicht auf Basis einer Mikrocodierung funktioniert, derartige Angaben (502, 504a) von einem beliebigen geeigneten Befehlsdisponiermechanismus oder Mechanismen oder sonst wie empfangen. Die Einheit 500 ist im Allgemeinen ausgebildet, eintreffende und/oder anhängige Angaben für die Leistungsgruppen 560b bis 560n ebenfalls zu empfangen. Jede der Gatterschaltung 532a bis 532n ist ausgebildet zu steuern, ob eine entsprechende Leistungsgruppe 560a bis 560n beaufschlagt und/oder getaktet ist, etwa die Gatter mit Dreifachzustand (312 und 314), die in 4 beschrieben sind. In einer derartigen Ausführungsform empfängt jede Schaltung 532 ein Aktivierungs/Deaktivierungssignal, das die Torfunktion steuert. Beispielsweise repräsentiert das Signal 524 ein Aktivierungs/Deaktivierungssignal für die Leistungsgruppe 560a. In einer Ausführungsform entspricht das Signal 524 dem Signal 314 der 4.
-
Generell wird, wenn ein Befehl erkannt wird (beispielsweise früh in der Vektorverarbeitung, etwa während der Decodierung), der die Leistungsgruppe 560a für die Abarbeitung erfordert, die eintreffende Angabe 520a gesetzt. Die anhängige Angabe 540a wird gesetzt, während ein die Leistungsgruppe 560a erforderlicher Befehl anhängig ist (beispielsweise innerhalb des Umordnungspuffers 220 aus 2). In Reaktion auf die Signale 502 und 504a überträgt die Schaltung 506 eine Angabe 510a, die angibt, ob die Leistungsgruppe 560a in einem Zustand geringerer Leistung übergeht oder nicht. Beispielsweise führt in einer Ausführungsform die Schaltung 506 eine logische Oder-Funktion mit den empfangenen Werten der Signale 502a und 504a aus. Wenn das Signal 502a oder das Signal 504a gesetzt ist, ist auch das Signal 510a gesetzt, das dann angibt, dass die Leistungsgruppe 560a keinen Zustand mit geringerer Leistung annimmt. Ähnliche Angaben 510b und 510m werden für jede der Leistungsgruppen 520b bis 520n erzeugt.
-
In einer Ausführungsform gibt das Signal 510a direkt an, ob eine entsprechende Leistungsgruppe 560a einen Zustand mit reduzierter Leistung einnimmt. In einer derartigen Ausführungsform wird, wenn das Signal 510a nicht gesetzt ist (weder ein eintreffender Befehl noch ein anhängiger Befehl werden für die Leistungsgruppe 560a erkannt), das Signal 524a zurückgesetzt, wodurch die Ausgabe von VDD und/oder von glck aus der Torlogik 532a deaktiviert werden. Der Eintrag kann dann einen Aktivierungs-/Deaktivierungszustand für die entsprechende Leistungsgruppe 560a speichern. In einer alternativen Ausführungsform können die Leistungs- bzw. Energiezustände auch im Laufe der Zeit der oben beschriebenen Weise „zerfallen”. In einer Ausführungsform enthält jeder Eintrag 520a bis 520n eine Zählerzahl für eine entsprechende Leistungsgruppe 560a bis 560n. Jede Zählerzahl 520 wird bei jedem Zyklus eines Taktsignals (beispielsweise gclk oder ein anderes geeignetes Taktsignal) in Reaktion auf ein Aktualisierungssignal 521 oder ein anderes geeignetes Signal verringert. Wenn ein entsprechender Zähler einen vorbestimmten Wert, etwa Null, erreicht, kann die entsprechende Leistungsgruppe einen Zustand mit geringer(er) Leistung einnehmen. Wenn beispielsweise ein Zähler im Eintrag 520a gleich Null ist, dann gibt das Aktivierungs/Deaktivierungssignal 524a, dass die entsprechende Leistungsgruppe 560a einen Zustand mit geringer(er) Leistung annehmen kann.
-
In einer Ausführungsform wird eine separate Zustandsangabe für jede der Leistungsgruppen 560 bewahrt. Wie beispielsweise in 5 gezeigt ist, werden sowohl eine Zählerzahl 520 als auch eine Zustandsangabe 530 (wie dies in dem Block 532 gezeigt ist) für jede Leistungsgruppe bewahrt. In einer derartigen Ausführungsform wird ein entsprechender Zustand 530 abhängig von einem entsprechenden Zählerwert 520 gesetzt. Wenn daher ein Zählerwert nicht Null ist, dann gibt der Zustand 530 an, dass die Leistungsgruppe 560a mit Energie zu versorgen ist. Wenn andererseits der Zählerwert 520a den Wert Null erreicht, wird der Zustand 530a gesetzt, um anzugeben, dass die Leistungsgruppe einen Zustand mit geringer(er) Energie einnehmen kann. In Reaktion auf das Empfangen einer Angabe, die einen eintreffenden oder anhängigen Befehl kennzeichnet, kann der Zählerwert für eine entsprechende Leistungsgruppe bzw. Gruppen zurückgesetzt werden.
-
Wie ebenfalls in 5 gezeigt ist, wird eine Statusangabe 570a bis 570n von jeder der Leistungsgruppen 560a bis 560n übermittelt. Die Statusangaben 570 geben an, dass eine entsprechende Leistungsgruppe 560 einen Zustand mit reduzierter Leistung einnehmen kann und/oder dass ihre Taktansteuerung deaktiviert werden kann. Wenn beispielsweise die Statusangabe 570a angibt, dass die Leistungsgruppe 560a einen Zustand mit reduzierter Leistung nicht annimmt, dann wird verhindert, dass das Signal 524a einen Zustand mit geringer(er) Leistung angibt, unabhängig von dem Wert 520a oder 530a. Alternativ kann die Angabe 570 direkt der Torlogik 532 oder anderen Einheiten eingespeist werden. Es sind diverse Alternativen möglich und hierin mit eingeschlossen.
-
Wie zuvor erläutert ist, können Befehle eine Angabe im Hinblick auf eine oder mehrere Leistungsgruppen enthalten, die für die Ausführung erforderlich sind. Eine derartige Angabe kann direkt als ein Teil der Befehlscodierung codiert sein, oder die Leistungscodierungsangabe kann mittels einer Zuordnung zu den Befehlsoperationscodierungen oder sonst wie bestimmt sein. Es ist eine Vielzahl von Techniken zum Zuordnen von Leistungscodierungsangaben zu Befehlen oder Operationen möglich und hierin mit eingeschlossen. 6 zeigt eine Ausführungsform von Leistungscodierungen und ihren Zuordnungen zu diversen Befehlen. Es ist eine erste Tabelle 600 gezeigt, die eine Spalte mit Leistungsgruppen 602 und eine entsprechende Kennung für die jeweiligen Leistungscodierungen 604 zeigt. Jede Zeile der Tabelle 600 enthält dann eine oder mehrere energiesteuerbare Gruppen an Logik/Schaltungen und eine entsprechende Kennung für die Leistungscodierung. In dem gezeigten Beispiel enthält eine Kennung für die Leistungscodierung 8 Bit. Der Fachmann erkennt jedoch, dass andere Codierungen möglich sind. Alle derartigen Alternativen sind hierin berücksichtigt. Ein erster Eintrag gibt an, dass die Kennung der Leistungscodierung für eine Adressenerzeugungseinheit (AGU) und eine Lade/Schreibeinheit „00000001” beträgt. Ein zweiter Eintrag gibt an, dass die Kennung für die Leistungscodierung für eine arithmetische logische Einheit (ALU) „000000010) beträgt. Ähnliche Einträge sind für einen Schieber, einen Ganzzahlmultiplizierer, eine Gleitkommazahl-(FP)Disponiereinheit, einen FP-Addierer, einen FP-Multiplizierer und eine FP-Teilungs/Quadratwurzeleinheit enthalten. Zu beachten ist, dass die speziellen Leistungsgruppen innerhalb eines gegebenen Bauelements von der Art und der Natur des Bauelements, den Entwurfsentscheidungen usw. abhängen. Folglich können unterschiedliche Leistungsgruppen für einen speziellen Prozessor für allgemeine Zwecke und für anwendungsspezifische Bauelemente existieren.
-
Eine zweite Tabelle 601 in 6 zeigt beispielhafte Befehle 612 mit entsprechenden beispielhaften Codierungen, die eine Leistungscodierung 614 und andere Bits 616 enthalten. Der erste Eintrag zeigt eine Additionsoperationscodierung, die beispielsweise so gestaltet ist, dass zwei Operanden addiert werden. In dem gezeigten Beispiel besitzt die Additionsoperationscodierung ein Register und einen Speicheroperanden. Die Leistungscodierung für den Befehl beträgt „00000011”. Auf der Grundlage der durch die Tabelle 600 gezeigten Zuordnungen gibt die Leistungscodierung „00000011” an, dass sowohl die AGU, die Lade/Schreib-Leistungsgruppe und die ALU-Leistungsgruppe erforderlich sind. Ein zweiter Eintrag gibt einen „move” Befehl an, der gestaltet ist, Daten von einer Speicherstelle in eine andere zu schreiben. In dem gezeigten Beispiel enthält der „move”-Befehl zwei Registeroperanden. Die Leistungscodierung für den „move”-Befehl beträgt „00000010”, was der ALU-Leistungsgruppe entspricht. Schließlich ist ein FP-Additions-Befehl in Tabelle 601 gezeigt. Ein derartiger Befehl entspricht einer Additionsoperation in einer Gleitkommaeinheit. In dem gezeigten Beispiel enthält der FP-Additions-Befehl einen Gleitkommaregisteroperanden (FP-Register) und einen Speicheroperanden. Die Leistungscodierung für den FP-Additionsbefehl beträgt „00110001”, was Leistungsgruppen für einen Schieber und einen Ganzzahlmultiplizierer entspricht. Die anderen Bits 616, die jedem der dargestellten Befehle entsprechen, können andere geeignete Codierungsbits für den Befehl liefern.
-
Als Beispiel für eine Kennung von Leistungsgruppen, die für anhängige Befehle erforderlich sind, kann man zum Zwecke der Erläuterung annehmen, dass die Tabelle 601 einen Teil in dem Umordnungspuffer 220 aus 2 gespeicherten Daten repräsentiert. Daher repräsentieren Befehle in der Tabelle 601 im Wesentlichen anhängige Befehle. Bei Betrachtung der drei dargestellten Befehle (im Allgemeinen können mehr als drei Befehle vorhanden sein), wird eine logische Oder-Operation an den Leistungscodierungen der anhängigen Befehle ausgeführt. Folglich wird die folgende Operation mit dem Ergebnis durchgeführt, wie es im Block 603 gezeigt ist.
00000011
00000010
00110001
00110011
-
Daher wird eine Leistungscodierung von „00110011” für die anhängigen Befehle angegeben. Diese Leistungscodierung entspricht den Leistungsgruppen für die AGU, die Lade/Schreibeinheit, die ALU, den Schieber und den Ganzzahlmultiplizierer. Folglich ist jede dieser Leistungsgruppen erforderlich und kann nicht abgeschaltet werden oder mit geringerer Energie versorgt werden.
-
7 ist eine Blockansicht einer Ausführungsform eines Computersystems 700 mit einem Prozessor 10, der mit einer Reihe von Systemkomponenten über eine Busbrücke 702 verbunden ist. Andere Ausführungsformen sind möglich und hierin mit berücksichtigt. In dem dargestellten System ist ein Hauptspeicher 704 mit der Busbrücke 702 über einen Speicherbus 706 verbunden, und eine Graphiksteuerung 708 ist mit der Busbrücke 702 über einen AGP-Bus 710 verbunden. Schließlich sind mehrere PCI-Gerät 712 bis 712b mit der Busbrücke 702 über einen PCI-Bus 714 verbunden. Eine sekundäre Busbrücke 716 ist ferner vorgesehen, um eine elektrische Schnittstelle mit einem oder mehreren EISA oder ISA-Geräten 718 über einen EISA/ISA-Bus 720 bereitzustellen. Der Prozessor 10 ist mit der Busbrücke 702 über einen CPU-Bus 724 und einem optionalen L2-Cache-Speicher 728 verbunden. Der CPU-Bus 724 und die Schnittstelle für den L2-Cache-Speicher 728 bilden zusammen eine externe Schnittstelle, mit der eine externe Schnittstelleneinheit 18 in Verbindung treten kann.
-
Die Busbrücke 702 stellt eine Schnittstelle zwischen dem Prozessor 10, dem Hauptspeicher 704, der Graphiksteuerung 708 und den an dem PCI-Bus 714 angeschlossenen Geräten bereit. Wenn eine Operation von einem der mit der Busbrücke 702 verbundenen Geräte empfangen wird, erkennt die Busbrücke 702 das Ziel der Operation (beispielsweise ein spezielles Gerät oder im Falle des PCI-Busses 714, dass das Ziel auf dem PCI-Bus 714 liegt). Die Busbrücke 702 gibt die Operation an das Zielgerät weiter. Die Busbrücke 702 übersetzt im Allgemeinen eine Operation von dem von dem ausgehenden Gerät verwendeten Protokoll oder Bus in das von dem Zielgerät oder Zielbus verwendete Protokoll. Zusätzlich zur Bereitstellung einer Schnittstelle zu einem EISA/ISA-Bus für den PCI-Bus 714 kann die sekundäre Busbrücke 716 weitere Funktionen enthalten, wenn dies gewünscht ist. Eine Eingabe/Ausgabe-Steuerung (nicht gezeigt), die entweder außerhalb der sekundären Busbrücke 716 oder in dieser integriert ist, kann ebenfalls innerhalb des Computersystems 700 enthalten sein, um eine zusätzlich Unterstützung für eine Tastatur und eine Maus 722 und für diverse serielle und parallele Anschlüsse nach Bedarf bereitzustellen. Eine externe Cache-Einheit (nicht gezeigt) kann ferner mit dem CPU-Bus 724 zwischen dem Prozessor 10 und der Busbrücke 702 in weiteren Ausführungsformen angeschlossen sein. Alternativ kann der externe Cache-Speicher mit der Busbrücke 702 verbunden sein, und die Cache-Steuerlogik für den externen Cache-Speicher kann in der Busbrücke 802 integriert sein. L2-Cache-Speicher 728 ist ferner in einer Rückseitenkonfiguration zum Prozessor 10 dargestellt. Zu beachten ist, dass der L2-Cache-Speicher 728 separat zu dem Prozessor 10 vorgesehen sein kann oder in einem Einschub (Schlitz 1 oder Schlitz A) für den Prozessor 10 integriert sein kann, oder auf dem Halbleitersubstrat zusammen mit dem Prozessor 10 integriert sein kann. Der L2-Cache-Speicher 728 kann durch ECC-Daten geschützt sein, und ECC-Fehler in dem L2-Cache-Speicher 728 können unter Anwendung einer Mikrocodierungsroutine (wie dies zuvor beschrieben ist) oder bei Bedarf in Hardware korrigiert werden.
-
Der Hauptspeicher 704 ist ein Speicher, in welchem Anwenderprogramme gespeichert sind und aus dem heraus der Prozessor 10 hauptsächlich arbeitet. Ein geeigneter Hauptspeicher 704 umfasst einen DRAM (dynamischen Speicher mit wahlfreiem Zugriff). Beispielsweise sind mehrere Bänke aus SDRAM (synchroner DRAM) oder RAMBUS DRAM (RDRAM) geeignet.
-
Die PCI-Geräte 712a bis 712b sind für eine Vielzahl peripherer Geräte stellvertretend. Die peripheren Geräte können Geräte enthalten, um mit einem weiteren Computersystem in Verbindung zu treten, mit dem die Geräte verbunden sind (beispielsweise Netzwerkschnittstellenkarten, Modems, etc.). Des weiteren können die peripheren Geräte andere Geräte mit einschließen, etwa beispielsweise Videobeschleuniger, Audiokarten, Festplatten oder Diskettenlaufwerke oder Laufwerkssteuerungen, SCSI(Kleincomputersystemschnittstelle-)Adapter und Telefonkarten. In ähnlicher Weise ist das ISA-Gerät 718 für diverse Arten von peripheren Geräten stellvertretend gezeigt, etwa ein Modem, eine Klangkarte und eine Vielzahl von Datenentnahmekarten GPIB- oder Feldbusschnittstellenkarten.
-
Die Graphiksteuerung 708 ist vorgesehen, um das Erzeugen von Text und Bildern auf einer Anzeige 726 zu steuern. Die Graphiksteuerung 708 repräsentiert einen typischen Graphikbeschleuniger, der allgemein im Stand der Technik bekannt ist, um dreidimensionale Datenstrukturen zu erzeugen, die effizient in den Hauptspeicher 704 hineingelesen und aus diesen abgerufen werden können. Die Graphiksteuerung 708 kann daher ein übergeordnetes Gerät für den AGP-Bus 710 sein, indem es Zugriff auf eine Zielschnittstelle innerhalb der Busbrücke 702 anfordern kann und den Zugriff erhält, um damit auf den Hauptspeicher 704 zuzugreifen. Ein spezieller Graphikbus nimmt das rasche Abrufen von Daten aus dem Hauptspeicher 704. Für gewisse Operationen ist die Graphiksteuerung 708 ferner ausgebildet, PCI-Protokolltransaktionen auf dem AGP-Bus 710 zu erzeugen. Die AGP-Schnittstelle der Busbrücke 702 kann damit Funktionen enthalten, um sowohl AGP-Protokolltransaktionen als auch PCI-Protokollziel- und Initiatortransaktionen zu unterstützen. Die Anzeige 726 kann eine beliebige elektronische Anzeige sein, auf der Bild oder Text dargestellt werden kann. Zu geeigneten Anzeigen 726 gehören eine Kathodenstahlröhre („CRT”), eine Flüssigkristallanzeige („LCD”), etc.
-
Zu beachten ist, dass obwohl die AGP, PCI- und ISA- oder EISA-Busse als Beispiele in der obigen Beschreibung dargelegt sind, auch andere Busarchitekturen nach Bedarf eingesetzt werden können. Des weiteren ist zu beachten, dass das Computersystem 700 ein Mehrprozessorcomputersystem mit weiteren Prozessoren sein kann (beispielsweise ist ein Prozessor 10a als optionale Komponente des Computersystems 700 gezeigt. Der Prozessor 10a kann ähnlich zum Prozessor 10 sein. Insbesondere kann der Prozessor 10a eine identische Kopie des Prozessors 10 sein. Der Prozessor 10a kann mit der Busbrücke 702 über einen unabhängigen Bus (wie in 7 gezeigt) verbunden sein oder kann den CPU-Bus 724 gemeinsam mit dem Prozessor 10 benutzen. Ferner kann der Prozessor 10a mit einem optionalen L2-Cache-Speicher 728a, der ähnlich zu dem L2-Cache-Speicher 728 ist, verbunden sein. Diverse Ausführungsformen enthalten ferner das Empfangen, Senden oder Speichern von Befehlen und/oder Daten, die entsprechend der vorhergehenden Beschreibung auf einem computerlesbaren Medium eingerichtet sind. Ein computerlesbares Medium enthält ein Aufzeichnungsmedium oder Speichermedium, etwa magnetische oder optische Medien, beispielsweise Disketten, DVD oder CD-ROM, flüchtige oder nicht-flüchtige Medien, etwa RAM (beispielsweise SDRAM, RDRAM, SRAM, etc.), ROM, etc. Des weiteren ist zu beachten, dass diverse vorhergehende Ausführungsformen separat zu anderen Ausführungsformen angewendet werden können, oder in Kombination mit einer oder mehreren anderen Ausführungsformen nach Bedarf verwendet werden können. Ferner ist auch eine Ausführungsform, die die Funktion aller zuvor genannten Ausführungsformen kombiniert, hierin berücksichtigt.
-
Diverse Variationen und Modifizierungen werden für den Fachmann angesichts des vollständigen Studiums der obigen Offenbarung offenkundig. Obwohl die vorhergehende Beschreibung im Allgemeinen die Verfahren und Mechanismen im Zusammenhang mit einem Mikroprozessor für Allgemeinzwecke beschreibt, sind die Verfahren und Mechanismen auch auf ein beliebiges Gerät anwendbar, in welchem eine Energieverwaltung gewünscht ist – etwa Router, Netzwerkschalteinheiten, Graphikeinheiten, Brückenchips, tragbare Geräte usw. Es ist beabsichtigt, dass die folgenden Ansprüche so interpretiert werden, dass sie alle derartigen Variationen und Modifizierungen umfassen.
-
Industrielle Anwendbarkeit
-
Diese Erfindung ist auf Computersysteme anwendbar.