-
GEBIET
-
Diese
Erfindung betrifft das Gebiet der Prozessoren und insbesondere das
Bereitstellen von Dienstgüte
(Quality of Service, QoS) in einem Computersystem.
-
HINTERGRUND
-
Fortschritte
in der Halbleiter-Prozesstechnik und Logik-Entwicklung haben ein
Anwachsen in der Menge an Logik gestattet, die auf integrierten
Schaltungsanordnungen vorhanden sein kann. Als Folge davon haben
sich Computersystem-Konfigurationen von einer einzelnen integrierten
Schaltung oder mehreren integrierten Schaltungen in einem System
zu mehreren Kernen und mehreren logischen Prozessoren hin weiterentwickelt,
die auf individuellen integrierten Schaltungen vorhanden sind. Ein
Prozessor oder eine integrierte Schaltung umfasst typischerweise
einen einzelnen Prozessorchip, wobei der Prozessorchip jedwede Anzahl
von Verarbeitungsressourcen beinhalten kann, wie z. B. Kerne (cores), Threads
und/oder logische Prozessoren.
-
In
Prozessoren mit mehreren Threads beeinflusst auf Grund des gemeinsamen
Nutzens von Ressourcen, wie z. B. Cachespeichern, Speicher und Stromversorgung,
das Verhalten eines Threads möglicherweise
das Verhalten eines anderen Threads auf demselben Prozessorkern.
Oft erzeugt das Verhalten eines Threads ein Ungleichgewicht in der
Nutzung der gemeinsam genutzten Ressourcen und Pipelines. In der
Tat tritt, wenn die Verarbeitungsleistung eines Threads sich in
Relation zu anderen Threads auf demselben Kern erheblich ändert, oft
eine große und
nicht vorhersagbare Schwankung in der Verarbeitungsleistung aus
der unausgeglichenen Nutzung gemeinsam genutzter Ressourcen auf.
-
Als
Folge davon beeinflusst ein Thread oder Kern, der eine Anwendung
niedriger Priorität
ausführt,
möglicherweise
nachteilig die Verarbeitungsleistung eines Kerns oder Threads, der
eine Anwendung höherer
Priorität
ausführt.
Beispielsweise kann eine Hintergrundanwendung, wie z. B. ein Virenscanner,
auf einem ersten Kern unter Nutzung von gemeinsam genutzten Ressourcen
in einem solchen Umfang ausgeführt
werden, dass die Verarbeitungsleistung eines zweiten Kerns nachteilig
beeinflusst wird, der eine Vordergrundanwendung ausführt. Früher ist
das Drosseln von Spannung und Frequenz genutzt worden, um Strom
zu sparen. Jedoch gehen diese Bemühungen typischerweise mit dem
Drosseln von Threads oder Kernen ungeachtet der Priorität aktueller
Anwendungen, virtueller Maschinen oder Betriebssystemtasks einher.
Im Gegensatz dazu haben sich einige Bemühungen auf das Aufteilen von
Ressourcen konzentriert, um allen Anwendungen eine Dienstgüte bereitzustellen.
Doch noch immer verursacht das Aufteilen ungeachtet der Priorität oder des Stromverbrauchs
möglicherweise
nachteilige Verarbeitungsleistung und Leistungsaufnahme.
-
KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
Die
vorliegende Erfindung ist als Beispiel dargestellt, und es ist nicht
beabsichtigt, dass sie durch die Figuren der beiliegenden Zeichnungen
begrenzt ist.
-
1 stellt
eine Ausführungsform
eines Mehrfachverarbeitungselementes dar, das einen Prioritätsmanager
beinhaltet, um Arbeitspunkte von Verarbeitungselementen basierend
auf zugeordneter Anwendungspriorität zu setzen.
-
2a stellt
eine Ausführungsform
von Leistungsaufnahme-Verarbeitungsleistungs-Logik dar, die des
Modifizieren von Raten von Verarbeitungselementen und der Zuteilung
gemeinsam genutzter Ressourcen fähig
ist.
-
2b stellt
eine Ausführungsform
von Leistungsaufnahme-Verarbeitungsleistungs-Logik dar, die des
Modifizierens von Raten von Verarbeitungselementen und der Zuteilung
eines Cachespeichers fähig
ist.
-
3 stellt
eine Ausführungsform
von Leistungsaufnahme-Verarbeitungsleistungs-Logik dar, die des
Modifizierens von Raten von Verarbeitungselementen und der Zuteilung
von Speicherbandbreite fähig
ist.
-
AUSFÜHRLICHE BESCHREIBUNG
-
In
der folgenden Beschreibung sind zahlreiche spezifische Details dargelegt,
wie z. B. Beispiele spezifischer Ressourcen, spezifischer Logik,
um Nutzung von Ressourcen zu verfolgen, spezifischer Übermittlung
von Anwendungspriorität
usw., um ein gründliches
Verständnis
der vorliegenden Erfindung bereitzustellen. Für den Fachmann ist es jedoch
offensichtlich, daß diese
spezifischen Details nicht eingesetzt werden brauchen, um die vorliegende
Erfindung auszuführen.
In anderen Fällen
sind wohlbekannte Komponenten oder Verfahren, wie z. B. Mikroprozessorarchitektur,
Monitore/Maschinen virtueller Maschinen, Strom-/Takt-Austastung/-Modulation und spezifische
betriebsbezogene Details bekannter Logik nicht im Detail beschrieben
worden, um zu vermeiden, daß die
vorliegende Erfindung unnötigerweise
unanschaulich gemacht wird.
-
Das
Verfahren und die Vorrichtung, die hierin beschrieben sind, dienen
zum Drosseln von Leistungsaufnahme und/oder Verarbeitungsleistung
von Verarbeitungselementen basierend auf einer Priorität von Software-Entitäten, die
den Verarbeitungselementen zugeordnet sind. Insbesondere wird das
auf Priorität
basierende Drosseln in Bezug auf mehrere Kerne in einer Virtualisierungsumgebung
diskutiert. Jedoch sind die Verfahren und die Vorrichtung zum auf
Priorität
basierenden Drosseln nicht derartig begrenzt, da sie auf oder in
Verbindung mit jedweder integrierten Schaltungsanordnung oder jedwedem System,
wie z. B. Mobiltelefonen, Taschencomputern, Embedded-Controllern,
mobilen Plattformen, Desktop-Plattformen und Server-Plattformen
sowie in Verbindung mit jedwedem Typ von Verarbeitungselement implementiert
sein können,
wie z. B. einem Kern, einem Hardware-Thread, einem Software-Thread oder einem
logischen Prozessor oder einer anderen Verarbeitungsressource. Darüber hinaus
kann auf Priorität
basierendes Drosseln in jedweder Hardware-/Software-Umgebung stattfinden,
wie z. B. einem herkömmlichen
Betriebssystem oder einem Hypervisor, der auf Hardware ausgeführt wird.
-
Bezug
nehmend auf 1 ist eine Ausführungsform
eines Prozessors dargestellt, der des Drosselns von Verarbeitungselementen
basierend auf einer Priorität
von Software-Entitäten
fähig ist,
die den Verarbeitungselementen zugeordnet sind. Hardware 120 beinhaltet
Prozessor 125, Hub 150 und Speicher 160.
Hub 125 umfasst jedwede Vorrichtung zur Kommunikation zwischen
Prozessor 121 und Speicher 130, wie z. B. einen
Speichercontroller oder Chipsatz. Man beachte, dass Hub 125 in
Prozessor 121 oder Speicher 130 integriert sein
kann. Speicher 160 kann für Prozessor 125 zweckbestimmt
sein oder mit anderen Geräten
in einem System gemeinsam genutzt werden. Zu Beispielen für Speicher 160 zählen dynamische
Schreib-Lese-Speicher
(Dynamic Random Access Memory, DRAM), statischer RAM (SRAM), nichtflüchtiger
Speicher (Non-Volatile Memory, NV-Speicher) und Langzeitspeicher.
-
Typischerweise
umfasst Prozessor 125 Ein- und Ausgangspuffer (E/A-Puffer),
um Bussignale auf einer Verbindung (interconnect) zu senden und
zu empfangen. Zu Beispielen der Verbindung zählen ein GTL-Bus (Gunning Transceiver
Logic), ein GTL+-Bus, ein DDR-Bus (Double Data Rate), ein Pumped-Bus,
ein differentieller Bus, ein cachekohärenter Bus, ein Punkt-zu-Punkt-Bus, ein Multidrop-Bus
oder eine andere bekannte Verbindung (interconnect), die irgendein
bekanntes Busprotokoll implementiert.
-
Prozessor 125 umfasst
mehrere Verarbeitungselemente, wie z. B. Verarbeitungselemente 130–133.
Ein Verarbeitungselement bezieht sich auf einen Thread, einen Prozess,
einen Kontext, einen logischen Prozessor, einen Hardware-Thread,
einen Kern und/oder jedwedes Verarbeitungselement, das Zugriff auf
andere gemeinsam genutzte Ressourcen des Prozessors gemeinsam nutzt,
wie z. B. Reservierungseinheiten, Ausführungseinheiten und Cache-Speichern/Speicher
höherer
Ebene. Ein Verarbeitungselement kann auch als eine Threadeinheit bezeichnet
werden, d. h. ein Element, das fähig
ist, einen Befehl aufzuweisen, der zur Ausführung durch einen Software-Thread
unabhängig
geplant ist. Ein physikalischer Prozessor bezieht sich typischerweise auf
eine integrierte Schaltung, die möglicherweise irgendeine Anzahl
anderer Verarbeitungselemente beinhaltet, wie z. B. Kerne oder Hardware-Threads.
-
Ein
Kern bezieht sich oft auf Logik, die sich auf einer integrierten
Schaltung befindet, fähig
des Aufrechterhaltens eines unabhängigen architektonischen Zustands,
wobei jeder unabhängig
aufrechterhaltene architektonische Zustand mindestens einigen zweckbestimmten Ausführungsressourcen
zugeordnet ist. Im Gegensatz zu Kernen bezieht sich ein Hardware-Thread typischerweise
auf Logik, die sich auf einer integrierten Schaltung befindet, fähig des
Aufrechterhaltens eines unabhängigen
architektonischen Zustands, wobei die unabhängig aufrechterhaltenen architektonischen
Zustände
Zugriff auf Ausführungsressourcen
gemeinsam nutzen.
-
Wie
man sieht, überlappt
sich, wenn gewisse Verarbeitungsressourcen gemeinsam genutzt werden
und andere für
einen architektonische Zustand zweckbestimmt sind, die Linie zwischen
der Nomenklatur eines Hardware-Threads und eines Kerns. Dennoch
werden oft ein Kern und ein Hardware-Thread von einem Betriebssystem
oder einer Management-Software als individuelle logische Prozessoren
angesehen, wobei die Software in der Lage ist, Operationen auf jedem
logischen Prozessor individuell zu planen. Anders ausgedrückt, sieht
Software zwei Kerne oder Threads auf einem physikalischen Prozessor
als zwei unabhängige
Prozessoren an. Darüber
hinaus beinhaltet jeder Kern möglicherweise
mehrere Hardware-Threads zum Ausführen mehrerer Software-Threads.
Daher beinhaltet ein Verarbeitungselement jedwede der oben erwähnten Ressourcen,
die des Aufrechterhaltens eines Kontextes fähig sind, wie z. B. von Kernen,
Threads, Hardware-Threads oder anderen Elementen.
-
Hypervisor 110 dient
zum Bereitstellen einer Schnittstelle zwischen Software, wie z.
B. virtuellen Maschinen (VMs) 105–107, und Hardware,
wie z. B. Hardware 120. Oft abstrahiert ein Hypervisor
Hardware 120, um zu ermöglichen,
dass mehrere virtuelle Maschinen und/oder Gastanwendungen unabhängig auf
Hardware 120 laufen. Die virtuellen Maschinen 105–107 können ein
Betriebssystem, eine Anwendung, Gast-Software oder andere Software
sein, die auf Hardware 120 auszuführen ist. Obgleich eine Virtualisierungsumgebung
dargestellt ist, kann Hardware 120 in anderen Firmware-
und Software-Umgebungen vorhanden sein, wie z. B. einem herkömmlichen
Betriebssystem, das auf Hardware 120 ausgeführt wird.
Als Folge davon wird jedwede(r, s) Task, Softwareprogramm, Anwendung,
Anwendung auf Benutzerebene, Gast-Software, Betriebssystem, virtuelle
Maschine, Monitor virtueller Maschinen oder andere ausführbare Code,
der fähig
ist, dass ihm eine Priorität
zugewiesen wird, als Software-Entität bezeichnet.
-
In
einer Ausführungsform
sind Verarbeitungselemente (VEs) 130–133 Software-Entitäten zugeordnet.
Als ein erstes Beispiel sind Software-Entitäten, wie z. B. Hypervisor 110 und
die virtuellen Maschinen 105–108 direkt VEs 130–133 zugewiesen, oder
VEs 130–133 sind
für das
Ausführen
von Hypervisor 110 und den virtuellen Maschinen 105–108 zweckbestimmt.
Als ein anderes Beispiel sind Software-Entitäten VEs 130–133 einfach
durch Ausführung
von Code/Tasks für
die Software-Entitäten durch
die VEs 130–133 zugeordnet.
Zu Beispielen von Verarbeitungselementen 125 zählen, wie
oben erklärt,
ein Kern, ein Thread, ein Kontext, ein logischer Prozessor und eine
Kombination davon.
-
In
einer Ausführungsform
wird ein Arbeitspunkt eines Verarbeitungselementes, wie z. B. Verarbeitungselement 130,
basierend auf einer Prioritätshöhe einer
Software-Entität
gesetzt, die Verarbeitungselement 130 zugeordnet ist. Ein
Arbeitspunkt eines Verarbeitungselementes bezieht sich auf eine Raten-/Leistungsaufnahmehöhe des Verarbeitungselementes,
eine Zuteilungs-/Verarbeitungsleistungshöhe einer Ressource, die dem
Verarbeitungselement zur Verfügung
gestellt wird, oder eine Kombination davon. Als ein Beispiel wird
ein Arbeitspunkt eines Verarbeitungselementes durch Modifizieren
von Ressourcen geändert,
wie z. B. Takten (clocks), Frequenz, Spannung oder Leistungsaufnahme,
um die Rate eines Verarbeitungselementes zu ändern. Diese unterschiedlichen
Leistungsaufnahme- und Frequenzzustände werden oft als P-Zustände oder T-Zustände bezeichnet,
die veranschaulichende Beispiele von Arbeitspunkten sind. Darüber hinaus
können
für unterschiedliche
Arbeitspunkte andere Ratenmechanismen geändert werden, wie z. B. die
Rate der Befehlsausgabe und Speicherzugriffsausgabe.
-
Als
zusätzliches
Beispiel wird ein Arbeitspunkt eines Verarbeitungselementes durch
Modifizieren der Zuteilung gemeinsam genutzter Ressourcen geändert, wie
z. B. von Speicher, Speicherbandbreite, Cachespeicher, Fetch-Hardware,
Decodier-Hardware, Out-of-Order-Hardware,
Reservierungs-Hardware und jedwede andere Logik/Hardware, die durch das
Verarbeitungselement genutzt wird. Daher beinhaltet ein Arbeitspunkt
eines Verarbeitungselementes jedwede Kombination von einer Rate
des Verarbeitungselementes und Zuteilung gemeinsam genutzter Ressourcen,
die für
das Verarbeitungselement verfügbar
sind. Anders ausgedrückt,
kann ein Arbeitspunkt Zuteilung/Verarbeitungsleistung einer gemeinsam genutzten
Ressource, wie z. B. eines Cachespeichers, sowie eine Ratenhöhe, wie
z. B. eine Spannung und eine Frequenz, eines Verarbeitungselementes
beinhalten.
-
Zur
Veranschaulichung sei angenommen, dass ein erster Arbeitspunkt von
Verarbeitungselement 130 volle Leistungsaufnahme/Spannung,
vollen Takt/volle Frequenz, Zugriff auf alle Wege eines gemeinsam
genutzten Cachespeichers und unbegrenzte Tokens/Credits für Zugriff
auf Speicher beinhaltet, während
ein zweiter Arbeitspunkt von Verarbeitungselement 130 eine
reduzierte Leistungsaufnahme/Spannung, reduzierte Taktfrequenz,
Zugriff auf nur einen Teil des gemeinsam genutzten Cachespeichers
und begrenzte Tokens/Credits für
Zugriff auf Speicher beinhaltet. Obgleich dieses Beispiel rein veranschaulichend
ist, zeigt es, dass ein Arbeitspunkt jedwede Kombination von Ressourcen
bei einer spezifizierten Höhe
(level) beinhalten kann.
-
Der
prioritätsbewusste
Manager 140 dient zum Empfangen einer Prioritätshöhe einer
Software-Entität, die Verarbeitungselement 130 zugeordnet ist,
und dient zum Modifizieren eines Arbeitspunktes von Verarbeitungselement 130 basierend
auf der Prioritätshöhe. In einer
Ausführungsform
dient der prioritätsbewusste
Manager 140 zum Bestimmen eines Arbeitspunktes für Verarbeitungselement 130 basierend
auf der Prioritätshöhe. Beispielsweise
sei angenommen, dass die virtuelle Maschine (VM) 105 Virenscan-Software
ist, die im Hintergrund auszuführen
ist und der eine niedrige Priorität zugewiesen ist, und dass
VM 105 unter Nutzung von VE 130 auszuführen ist.
Hier wird die Priorität
von VM 105 in Prioritätsspeicherelement 135 gespeichert,
um die Prioritätshöhe von VM 105 anzugeben.
Alternativ kann die Prioritätshöhe von VE 130 in
Prioritätsspeicherelement 135 gehalten
werden, während
es mit dem Ausführen
von VM 105 beauftragt ist. Basierend auf der niedrigen
Priorität
von VM 105, die VE 130 zugeordnet ist, modifiziert
Manager 140 einen Arbeitspunkt von VE 130 auf
einen niedrigen Arbeitspunkt. Wie oben angegeben, kann der niedrigere
Arbeitspunkt eine Kombination einer niedrigeren Rate von VE 130, wie
z. B. einer niedrigeren Spannung, einer niedrigeren Frequenz oder
einer niedrigeren Leistungsaufnahme, sowie eines reduzierten Zugriffs
auf gemeinsam genutzte Ressourcen beinhalten, wie z. B. Zugriff
auf eine reduzierte Anzahl von Wegen eines Cachespeichers.
-
Um
das Beispiel weiterzuführen,
sei angenommen, dass Hypervisor 110 eine Anwendung hoher
Priorität
ist, die zur Ausführung
auf VE 133 geplant ist. Der Manager 140 setzt
basierend auf der hohen Priorität,
die in Prioritätselement 135 für Hypervisor 110 und
VE 133 gehalten ist, einen Arbeitspunkt von VE 133 auf
einen höheren
Arbeitspunkt, wie z. B. eine höhere
Spannung, eine höhere
Frequenz und/oder gesteigerten Zugriff auf gemeinsam genutzte Ressourcen,
verglichen mit dem Arbeitspunkt von VE 130. Andere Beispiele
von Arbeitspunkten, wie z. B. Zuteilung von Cachespeicher und Speicherbandbreiten-Höhen, werden
nachfolgend unter Bezug auf 2 und 3 diskutiert.
Ein Arbeitspunkt kann durch jedwedes bekannte Verfahren zum Ändern von
Ressourcen oder Modifizieren von Zugriff auf eine gemeinsam genutzte
Ressource gesetzt oder modifiziert werden. Beispielsweise kann Spannung
durch Schaltungen oder Austastung (gating) reduziert werden, während Takte
(clocks) moduliert, multipliziert, dividiert, ausgetastet oder unterdrückt werden
können.
-
Zu
beachten ist, dass oben Bezug auf hohe und niedrige Priorität genommen
wird. Jedoch können
jedwede Höhen
oder Anzahl von Höhen
der Priorität
verwendet werden. Beispielsweise kann es gerade einmal zwei Prioritätshöhen geben
oder so viele Prioritätshöhen, wie
es Software-Entitäten gibt.
Als veranschaulichendes Beispiel sei angenommen, dass es vier Prioritätshöhen für 1 gibt,
wobei Hypervisor 110 auf einer Prioritätshöhe von eins liegt, d. h. der
höchsten
Prioritätshöhe, VM 105 auf
der niedrigsten Priorität
von vier liegt, VM 106 auf einer Prioritätshöhe von zwei
liegt und VM 107 auf einer Prioritätshöhe von drei liegt. Die Übermittlung
von Software-Priorität
zur Hardware ist ausführlicher
in der ebenfalls anhängigen
Patentanmeldung mit der laufenden Nummer _______ und dem Aktenzeichen 42.P24869
des Bevollmächtigten
diskutiert.
-
In
einer anderen Ausführungsform
bestimmt eine Software-Entität
die Prioritätshöhe anderer
Software-Entitäten
und weist Verarbeitungselementen, die den anderen Software-Entitäten zugeordnet
sind, Arbeitspunkte zu. Beispielsweise plant Hypervisor 110,
der ein Monitor für
virtuelle Maschinen (Virtual Machine Monitor, VMM) sein kann, Befehle
für die VM 105 niedriger
Priorität
auf Verarbeitungselement 130 und bestimmt, dass Verarbeitungselement 130 zu
modifizieren/auf einen niedrigen Arbeitspunkt zu setzen ist. Hier
wird der ausgewählte
Arbeitspunkt für Verarbeitungselement 130 durch
VMM 110 in Prioritätselement 135 geschrieben,
das sich auch in Architekturzustandsregistern von VE 130 befinden
kann. Dann setzt der Manager 140 den Arbeitspunkt durch Modifizieren
der zweckentsprechenden Leistungsaufnahmehöhe, Frequenzhöhe oder
Ressourcenzuteilungshöhe
durch. Obgleich in diesem Beispiel ein VMM als Software-Entität zum Entscheiden über Priorität und Arbeitspunkte
diskutiert wird, kann jedwede Software-Entität, wie z. B. ein Betriebssystem oder
spezialisierter Code, Prioritätshöhen und/oder Arbeitspunkte
bestimmen.
-
Zusätzlich zum
Bestimmen eines Arbeitspunktes basierend auf der Prioritätshöhe bestimmt der
Manager 140 möglicherweise
auch einen Arbeitspunkt basierend auf Ressourcennutzung. Wie vorstehend
ist der Manager 140 in einer Ausführungsform des Steuerns der
Rate von Verarbeitungselementen sowie der Zuteilung von Hardware-Ressourcen
zu den Verarbeitungselementen fähig.
Daher können
die Richtlinien (policies) des Managers 140 nicht nur eine
Software-Entitäten-Prioritätshöhe, sondern
auch den Einfluss der Software-Entitäten auf Software-Entitäten anderer
Priorität
berücksichtigen.
Als Beispiel kann, wenn VM 105, d. h. eine Virenscan-Software,
Hypervisor 110 oder eine andere Anwendung hoher Priorität nicht
beeinflusst, d. h. zu viel von Ressource 145 nutzt, wie
z. B. von Leistungsaufnahme, Frequenz, Cachespeicher, Speicher oder
einer anderen Ressource, der Leistungsmanager 140 bestimmen,
den Arbeitspunkt von VE 130 nicht zu reduzieren. Im Gegensatz
dazu kann, wenn eine Prioritätshöhe, die
VM 105 beinhaltet, zu viel von Ressource 145 nutzt,
der Leistungsmanager 140 den Arbeitspunkt von VE 130 basierend
sowohl auf der Prioritätshöhe von VM 105 als
auch der Nutzung von Ressource 145 reduzieren.
-
Daher
kann der Leistungsaufnahme-Verarbeitungsleistungs-Manager 140 jedwede
Menge an zentralisierter oder verteilter Logik beinhalten, um die Priorität einer
Software-Entität/eines
Verarbeitungselementes zu bestimmen, eine Rate eines Verarbeitungselementes
zu bestimmen, die Verarbeitungsleistung einer Ressource zu bestimmen,
eine Rate eines Verarbeitungselementes zu setzen, eine Verarbeitungsleistungs-Zuteilung
einer Ressource zu setzen, eine Richtlinie für das Leistungsaufnahme-Verarbeitungsleistungs-Management
zu bestimmen oder eine Kombination davon.
-
In
einer Ausführungsform
beinhaltet Ressource 145 Prioritätsnutzungslogik, um die Nutzung von
Ressource 145 im Zusammenhang mit Prioritätshöhen anzugeben.
Daher dient, wenn eine niedrigere Prioritätshöhe zu viel von Ressource 145 nutzt,
d. h. mehr als eine vordefinierte Menge von Ressource 145,
die Nutzungslogik dann dazu, dem Manager 140 jene übermäßige Nutzung
anzuzeigen. Als ein erstes Beispiel zeigt Nutzungslogik dem Manager 140 an, wie
viel eines Leistungsaufnahme-Budgets für Prozessor 125 jene
VE 130 nutzt. Überschreitet
jener Betrag an Leistungsaufnahme eine Schwelle, wie z. B. 20%,
dann bestimmt die Leistungsmanagerlogik 140, ob ein Arbeitspunkt
von VE 130 zu modifizieren ist. Da VM 105 eine
Anwendung niedriger Priorität
ist, kann der Manager 140 den Arbeitspunkt von VE 130 durch
jedwede Anzahl der oben erwähnten
Ratensteuer- oder Verarbeitungsleistungssteuermechanismen reduzieren,
falls ermittelt wird, dass die Leistungsaufnahme von VE 130 andere
Software-Entitäten
höherer
Priorität
beeinflusst. Zu weiteren Beispielen für Ratensteuermechanismen zählen Frequenzskalierung,
Taktmodulation, Taktunterdrückung, Drosseln
der Befehlsausgabe, Drosseln der Speicherausgabe oder eine andere
quellenbasierte Ratenmodulationstechnik.
-
Ein
anderes Beispiel für
Nutzungslogik beinhaltet Speicherbandbreitenlogik 151.
Wie dargestellt, befindet sich Logik 151 in Hub 150,
um den Verkehr auf einer Speicherverbindung (memory interconnect) im
Zusammenhang mit Prioritätshöhen zu verfolgen. Hier
kann, wenn von einer niedrigen Prioritätshöhe zuviel Speicherbandbreite
genutzt wird, der Manager 140 dann die Bandbreitenzuteilung
an Verarbeitungselemente, wie z. B. Verarbeitungselement 130, reduzieren,
die jener niedrigen Prioritätshöhe zugeordnet
sind. Obgleich sie in Hub 150 abgebildet ist, kann Logik 151 irgendwo
in Hardware 120 vorhanden sein.
-
Wir
gehen zu 2a über, einer Ausführungsform
von Leistungsaufnahme-Verarbeitungsleistungs-Logik,
die des Steuerns von Verarbeitungselementraten und der Zuteilung
gemeinsam genutzter Ressourcen fähig
ist. Hier dient Ratensteuermodul 255 zum Modifizieren von
Raten von Verarbeitungselementen (VEs) 251–254.
Beispielsweise ist beim höchsten
Arbeitspunkt VE 251 auf eine höchste Spannung, Leistungsaufnahme,
Frequenz, Taktung, Befehlsausgabekapazität und Speicherzugriffskapazität gesetzt.
Jedoch kann, wenn der Arbeitspunkt auf einen niedrigeren Arbeitspunkt
modifiziert wird, einer oder mehrere der oben erwähnten ratenbasierten Mechanismen
reduziert werden. Beispielsweise können Zyklen eines Taktes für VE 251 unterdrückt werden.
Zu beachten ist, dass das Ändern
einer Ressource für
eine VE der VEs 251–254 die
anderen VEs beeinflussen kann. Herkömmlicherweise werden gemeinsame
Spannungsschienen für
VEs 251–254 genutzt;
jedoch können
individuelle Stromschienen zugeführt
werden, um unabhängige
Modulation der Spannung zum Steuern der Rate eines einzelnen VEs
zu ermöglichen,
ohne die anderen VEs zu beeinflussen.
-
Zusätzlich zu
ratenbasierten Mechanismen kann der Leistungsaufnahme-Verarbeitungsleistungs-Manager 275 auch
die Zuteilung gemeinsam genutzter Ressourcen 260 modifizieren,
um angemessene Ressourcenkapazität
für Software-Entitäten höherer Priorität sicherzustellen.
Hier dient der Monitor 265 zum Verfolgen der Nutzung der
gemeinsam genutzten Ressource 260 durch unterschiedliche
Prioritätshöhen. Wenn
eine niedrige Priorität
zu viel der gemeinsam genutzten Ressource 260 nutzt, d.
h. andere höhere
Prioritätshöhen beeinflusst,
dann kann der Manager 275 die Ratensteuerung 255 nutzen,
um die Nutzung der gemeinsam genutzten Ressource 260 von
der Quelle zu reduzieren, d. h. von einer VE, die der niedrigen
Prioritätshöhe zugeordnet ist.
Im Gegensatz dazu kann der Manager 275 Zuteilungslogik 270 nutzen,
um die Zuteilung der gemeinsam genutzten Ressource 260 zu
einer niedrigen Priorität
zu modifizieren.
-
Zur
Veranschaulichung sei angenommen, dass VE 251 einer Software-Entität niedriger
Priorität zugeordnet
ist und VE 252 einer Software-Entität höherer Priorität zugeordnet
ist. In einer Ausführungsform
ist VE 251 standardmäßig auf
einen niedrigeren Arbeitspunkt gesetzt, um Strom zu sparen. Beispielsweise
nutzt der Manager 275 die Ratensteuerung 255,
um die Spannung und die Frequenz für VE 251 zu reduzieren,
um Strom zu sparen. In einer anderen Ausführungsform ist es VE 251 erlaubt,
normal zu arbeiten, bis durch Monitor 265 detektiert wird,
dass die niedrigere Prioritätshöhe die Verarbeitungsleistung der
höheren
Prioritätshöhe beeinflusst.
Hier bestimmt der Monitor 265, dass die niedrigere Prioritätshöhe zuviel
der gemeinsam genutzten Ressource 260 nutzt. Als Folge
davon setzt der Manager 275 die VE 251, die der
Software-Entität
niedrigerer Priorität zugeordnet
ist, auf einen niedrigeren Arbeitspunkt.
-
Zu
beachten ist, dass nach dem Vorhergesagten der Manager 275 jedwede
Richtlinie zum Reduzieren eines Arbeitspunktes implementieren kann. Beispielsweise
kann der Manager 275 Ratensteuermechanismen, wie z. B.
Spannung und Frequenz, sowie Zuteilungsmechanismen verwenden, wie
z. B. Zuteilungslogik 270, um sicherzustellen, dass VE 251 nur
einen Teil der gemeinsam genutzten Ressource 260 nutzen
kann. Anders ausgedrückt,
dass für
die höhere
Prioritätshöhe die Nutzung
mindestens eines Teils der gemeinsam genutzten Ressource 260 sichergestellt
ist. Die gemeinsam genutzte Ressource 260 beinhaltet jedwede
Ressource, die durch mehr als ein Verarbeitungselement gemeinsam
genutzt wird, wie z. B. einen Cachespeicher, einen Speicher, einen
Speicherzugriffsmechanismus oder andere bekannte gemeinsam genutzte
Hardware, Firmware oder Software.
-
Übergehend
zu 2b, ist eine Ausführungsform von Leistungsaufnahme-Verarbeitungsleistungs-Logik
dargestellt, die des Modifizierens von Raten von Verarbeitungselementen
und der Zuteilung eines Cachespeichers fähig ist. Der Cachespeicher 200 kann
in jedweder Art und Weise organisiert sein, wie z. B. als direkt
abgebildeter Cachespeicher, vollassoziativer Cachespeicher oder
satzassoziativer Cachespeicher. Wie dargestellt, ist der Cachespeicher 200 ein
satzassoziativer Cachespeicher mit K Wegen, d. h. vier Wegen 205–208.
Sätze 201 beinhalten
denselben Offsetort innerhalb jedes der Wege. Hier sind zusätzliche
Felder 210–216 jedem
Satz von Cachespeicher 200 zugeordnet, um die Prioritätshöhe anzugeben,
die den Orten innerhalb eines entsprechenden Satzes zugeordnet sind.
Man beachte, dass zusätzliche
Felder genutzt werden können,
um Prioritätshöhen in jedweden
Einträgen
zu verfolgen, wie z. B. Orten, Wegen, Sätzen oder anderen Konfigurationen.
-
In
einer Ausführungsform
inkrementiert, wenn eine Cacheleitung, die einer ersten Prioritätshöhe zugeordnet
ist, zum Cachespeicher 200 gebracht wird, der Zähler 220 dann
einen Zählwert
für die
erste Prioritätshöhe, und
wenn eine Cacheleitung, die der ersten Prioritätshöhe zugeordnet ist, geräumt wird,
wird der Zählwert
dekrementiert. Daher wird eine erste Anzahl von Einträgen verfolgt,
die der ersten Prioritätshöhe zugeordnet
sind. In ähnlicher Weise
kann die Nutzung von Cachespeicher 200 für mehrere
Prioritätshöhen verfolgt
werden. Basierend auf den Nutzungsstärken unterschiedlicher Prioritäten, wie
sie durch Zähler 220 verfolgt
werden, bestimmt der Manager 230 einen Arbeitspunkt für die Prioritätshöhe, d. h.
für das
Verarbeitungselement, das einer Software-Entität bei der Prioritätshöhe zugeordnet
ist.
-
Wie
oben erwähnt,
kann eine Rate eines Quellelementes, wie z. B. eines Verarbeitungselementes,
das den Cacheleitungen niedrigerer Priorität zugeordnet ist, reduziert
werden, um die Rate zu verringern, mit der das Quellelement den
Cachespeicher 200 nutzt. Getrennt von oder zusätzlich zur
Ratensteuerung kann der Manager 230 eine Zuteilungsrichtlinie
für Cachespeicher 200 modifizieren.
Hier wird einer Prioritätshöhe, die
Maske 240 zugeordnet ist, Zugriff auf Teile des Cachespeichers 200 gewährt, d.
h. einer Anzahl von Wegen, wie durch Maske 240 angegeben.
Beispielsweise sei angenommen, dass eine niedrige Prioritätshöhe 75% von
Cachespeicher 200 nutzt, was eine Software-Entität mit hoher
Prioritätshöhe beeinflusst,
die 25% des Cachespeichers nutzt.
-
Der
Manager 230 setzt die Maske 240 auf eine binäre 1000,
die darstellt, daß ein
Verarbeitungselement, das der niedrigeren Prioritätshöhe zugeordnet
ist, nur auf Weg 205 von Cachespeicher 200 zugreifen
darf. Alternativ kann der Arbeitspunkt für die höhere Prioritätshöhe aufrechterhalten
oder erhöht
werden. Als Beispiel kann die Maske 240 auf eine 1111 gesetzt
werden, die darstellt, dass ein Verarbeitungselement, das einer
Software-Entität
höherer
Priorität
zugeordnet ist, auf alle Wege von Cachespeicher 200 zugreifen
darf. Als Folge davon wird einer niedrigeren Prioritätshöhe nur erlaubt,
auf einen Weg von Cachespeicher 200 zuzugreifen, womit
sichergestellt ist, dass die beeinflusste Prioritätshöhe mindestens
auf drei Wege von Cachespeicher 200 ohne Störung zugreifen
kann. In diesem Beispiel erfolgt die Zuteilung durch Verwendung
einer Maske für jede
Prioritätshöhe. Jedoch
kann jedwede Zuteilungsrichtlinie und -logik genutzt werden, um
einen Teil eines Cachespeichers basierend auf Priorität zu reservieren,
zu begrenzen oder zu beschränken.
Das Verfolgen von Prioritätsnutzung
eines Cachespeichers ist ausführlicher
in der ebenfalls anhängigen Patentanmeldung
mit der laufenden Nummer _______ und dem Aktenzeichen 42.P24235
des Bevollmächtigten
diskutiert.
-
Als
nächstes
Bezug nehmend auf 3 ist eine Ausführungsform
von Leistungsaufnahme-Verarbeitungsleistungs-Logik
dargestellt, die des Modifizieren von Raten von Verarbeitungselementen
und der Zuteilung von Zugriff auf ein Gerät fähig ist, wie z. B. auf einen
Speicher. Ähnlich
einem Cachespeicher kann getrennt von oder zusätzlich zur Ratensteuerung der
Manager 330 auch Zugriffsrichtlinien auf gemeinsam genutzte
Geräte
innerhalb unterschiedlicher Arbeitspunkte modifizieren. Hier nutzen
die Verarbeitungselemente 306–309 eine Ringpriorität, um auf
Speicher 340 zuzugreifen, und die Zuteilungslogik 315 ist
des Zuteilens unterschiedlicher Beträge an Bandbreite für Speicherzugriffe
fähig,
die unterschiedlichen Prioritätshöhen zugeordnet
sind. Obgleich ein Ringzugriffsformat dargestellt ist, kann bei einer
seriellen oder anderen Verbindung das Verfolgen und Zuteilen von
Zugriffen in einer ähnlichen
Art und Weise erfolgen.
-
In
einer Ausführungsform
wird für
Zugriffe auf Speicher 340 ein Credit- oder Steuerprioritätswartefeld
genutzt. Ein Verarbeitungselement, wie z. B. Element 306,
fordert einen Zugriff auf den Speicher an. Die Zugriffanforderung
wird eingereiht, und dementsprechend wird an das Verarbeitungselement 306 ein
Credit/Token für
einen Zugriff auf den Speicher ausgegeben. Als Beispiel beinhaltet
der Bandbreitenmonitor 325 dem Creditwartefeld zugeordnete Felder,
die verwendet werden können,
um Prioritätshöhen und/oder
Verarbeitungselemente zu verfolgen, die Speicherzugriffsanforderungen
zugeordnet sind. Daher kann, wie oben in 2,
die Anzahl der Fehlzugriffe (misses) auf einen Cachespeicher höherer Höhe und/oder
Zugriffe auf Speicher durch die Anzahl der angeforderten Credits
verfolgt werden, die einer Prioritätshöhe zugeordnet sind.
-
Als
ein anderes Beispiel beinhaltet der Bandbreitenmonitor 325 einen
Zähler,
der jeder Prioritätshöhe zuzuordnen
ist. Bei jedem Zugriff von einer spezifischen Prioritätshöhe wird
der zugeordnete Zähler inkrementiert. Über eine
vorgegebene Zeitspanne wird, wenn der Zähler einen Schwellwert für die zugeordnete
Prioritätshöhe erreicht,
der Manager 330 dann benachrichtigt. Jedwede andere bekannte
Logik zum Verfolgen von Speicherbandbreite, -nutzung oder -zugriff
kann in Bandbreitenmonitor 325 genutzt werden.
-
Wenn
der Manager 330 benachrichtigt wird, dass eine niedrigere
Prioritätshöhe zuviel
Speicherbandbreite nutzt, kann er die Rate der VEs 306–309 modifizieren
und/oder die Zuteilung von Bandbreite an die VEs 306–309 dementsprechend
modifizieren. Beispielsweise nehmen Verarbeitungsleistungsmanager 330 und
Zuteilungslogik 315 dahingehend eine Voreinstellung eines
Credit- oder Steuerprioritätswartefeldes
vor, dass weniger Credits/Tokens für ein Verarbeitungselement
erlaubt werden, wie z. B. Verarbeitungselement 306, das
der niedrigeren Prioritätshöhe zugeordnet
ist. Darüber
hinaus kann auch die Rate von VE 306 geändert werden, wie z. B. mit
Verringern der Menge an Speicherzugriffen, die an der Quelle angefordert
werden, durch Reduzieren der Anzahl der Befehle, die pro Zyklus
ausgegeben werden, oder Reduzieren der Frequenz der VE 306.
-
Die
oben dargelegten Ausführungsformen von
Verfahren, Software, Firmware oder Code können über Befehle oder Code implementiert
sein, die auf einem maschinenzugriffsfähigen oder maschinenlesbaren
Medium gespeichert sind und durch ein Verarbeitungselement ausführbar sind.
Ein maschinenzugriffsfahiges/-lesbares Medium beinhaltet jedweden
Mechanismus, der Informationen in einer Form bereitstellt (d. h.
speichert und/oder überträgt), die
durch eine Maschine lesbar ist, wie z. B. ein Computer- oder elektronisches
System. Beispielsweise beinhaltet ein maschinenzugriffsfähiges Medium Schreib-Lese-Speicher
(Random-Access Memory, RAM), wie z. B. statischen RAM (SRAM) oder
dynamischen RAM (DRAM); ROM; ein magnetisches oder optisches Speichermedium;
Flash-Speicher-Geräte; elektrische,
optische, akustische oder eine andere Form sich ausbreitender Signale
(z. B., Trägerwellen, Infrarotsignale,
Digitalsignale); usw.
-
In
dieser gesamten Spezifikation bedeutet ein Verweis auf „eine Ausführungsform" (engl. „one embodiment" oder „an embodiment"), dass ein(e) bestimmte(s)
Merkmal, Struktur oder Charakteristik, das/die in Verbindung mit
der Ausführungsform
beschrieben ist, in mindestens einer Ausführungsform der vorliegenden
Erfindung beinhaltet ist. Somit verweist das Auftreten der Redewendung „in einer
Ausführungsform" an verschiedenen
Stellen in dieser gesamten Beschreibung nicht notwendigerweise alle auf
dieselbe Ausführungsform.
Außerdem
können die
einzelnen Merkmale, Strukturen oder Charakteristika in jedweder
geeigneten Art und Weise in einer oder mehreren Ausführungsformen
kombiniert sein.
-
In
der vorangehenden Spezifikation ist eine ausführliche Beschreibung unter
Bezug auf spezifische Ausführungsbeispiele
gegeben worden. Es ist jedoch ersichtlich, dass verschiedene Modifikationen und Änderungen
daran erfolgen können,
ohne vom breiteren Geist und Umfang der Erfindung abzuweichen, wie
in den angehängten
Ansprüchen
dargelegt. Die Spezifikation und die Zeichnungen sind dementsprechend
in einem veranschaulichenden Sinne und nicht in einem beschränkenden
Sinne zu betrachten. Außerdem
bezieht sich die vorangehende Verwendung von Ausführungsform
und anderer exemplarischer Redeweisen nicht notwendigerweise auf
dieselbe Ausführungsform
oder dasselbe Beispiel, sondern kann sich auf unterschiedliche und verschiedene
Ausführungsformen
wie auch möglicherweise
dieselbe Ausführungsform
beziehen.