-
GEBIET DER ERFINDUNG
-
Die vorliegende Erfindung betrifft eine Datenverarbeitungsvorrichtung und ein Verfahren zum Schalten einer Arbeitslast zwischen ersten und zweiten Verarbeitungsschaltkreisen und insbesondere eine Technik zum Ausführen eines solchen Schaltens, um eine Energieeffizienz der Datenverarbeitungsvorrichtung zu verbessern.
-
HINTERGRUND DER ERFINDUNG
-
In modernen Datenverarbeitungssystemen kann der Unterschied in einer Leistungsanforderung zwischen Aufgaben mit hoher Intensität, wie zum Beispiel einer Spieloperation, und Aufgaben mit geringer Intensität, wie zum Beispiel MP3-Abspielen, ein Verhältnis von 100:1 zu übersteigen. Damit ein einziger Prozessor für alle Aufgaben verwendet werden könnte, müsste dieser Prozessor eine hohe Leistungsfähigkeit aufweisen, jedoch ist es ein Axiom der Prozessormikroarchitektur, dass Hochleistungsprozessoren weniger energieeffizient sind als Prozessoren mit geringer Leistungsfähigkeit. Es ist bekannt, die Energieeffizienz bei dem Prozessorniveau zu verbessern, wobei Techniken, wie zum Beispiel dynamische Spannungs- und Frequenzskalierung (Englisch: Dynamic Voltage and Frequency Scaling; DVFS) oder ein Leistungsgaten verwendet werden, um den Prozessor mit einer Auswahl an Leistungsniveaus und entsprechenden Energieverbrauchseigenschaften zu versehen. Jedoch sind solche Techniken im Allgemeinen nicht ausreichend, um es einem einzigen Prozessor zu ermöglichen, Aufgaben mit solch auseinanderfallenden Leistungsanforderungen zu übernehmen.
-
Entsprechend wurden Überlegungen angestellt, Mehrkernarchitekturen zu verwenden, um ein energieeffizientes System zum Ausführen solcher auseinanderfallenden Aufgaben bereitzustellen. Während Systeme mit mehreren Prozessorkernen über eine gewisse Zeit verwendet wurden, um die Leistungsfähigkeit dadurch zu erhöhen, dass sie es den verschiedenen Kernen ermöglichen, parallel an verschiedenen Aufgaben zu arbeiten, um den Durchsatz zu erhöhen, ist eine Analyse, wie solche Systeme verwendet werden könnte, um eine Energieeffizienz zu verbessern, eine relativ neue Entwicklung.
-
Der Artikel „Towards Better Performance Per Watt in Virtual Environments on Asymmetric Single-ISA Multi-Core Systems" von V. Kumar et al., ACM SIGOPS Operating Systems Review, Band 43, Ausgabe 3 (Juli 2009) diskutiert Mehrkernsysteme mit asymmetrischer Einbefehlssatzarchitektur (Englisch: Asymmetric Single Instruction Set Architecture, ASIA), welche aus einer Mehrzahl von Kernen bestehen, welche der gleichen Befehlssatzarchitektur (Englisch: Instruction Set Architecture, ISA) ausgesetzt sind, die sich jedoch in Merkmalen, Komplexität, Leistungsverbrauch und Leistungsfähigkeit unterscheiden. In dem Aufsatz werden Eigenschaften virtualisierter Arbeitslasten studiert, um einen Einblick dahinein zu geben, wie diese Arbeitslasten auf ASIA-Systemen eingeteilt werden müssen, um Leistungsfähigkeit und Energieverbrauch zu verbessern. Der Aufsatz identifiziert, dass bestimmte Aufgaben auf Hochfrequenz-/Leistungsfähigkeitsmikro-Architekturen (typische verarbeitungsintensive Aufgaben) anwendbarer sind, während andere für Mikroarchitekturen mit geringer Frequenz/Leistungsfähigkeit geeigneter sind und als ein Nebeneffekt weniger Energie verbrauchen werden (typische Eingabe-/Ausgabe-intensive Aufgaben). Während solche Studien zeigen, wie ASISA-Systeme verwendet werden könnten, um verschiedene Aufgaben in einer energieeffizienten Weise ablaufen zu lassen, ist es noch notwendig, einen Mechanismus bereitzustellen zum Einteilen individueller Aufgaben auf die passendsten Prozessoren und solch eine Einteilungsverwaltung wird typischerweise dem Betriebssystem eine signifikante Last aufbürden.
-
Der Artikel „Single-ISA Heterogeneous Multi-Core Architectures: The Potential for Processor Power Reduction" von R. Kumar et al., Proceedings of the 36th International Symposium of Microarchitecture (MICRO-36'03) diskutiert eine Mehrkernarchitektur, bei der alle Kerne den gleichen Befehlssatz ausführen, jedoch unterschiedliche Fähigkeiten und Leistungsfähigkeitsniveaus aufweisen. Während der Laufzeit bewertet Systemsoftware die Ressourcenanforderungen einer Anwendung und wählt den Kern, der am besten diese Anforderungen erfüllt, während ein Energieverbrauch minimiert wird. Wie in Abschnitt 2 dieses Aufsatzes diskutiert, versucht während der Ausführung der Anwendung das Betriebssystem, die Anwendung an verschiedene Kerne anzupassen, wobei versucht wird, eine definierte objektive Funktion zu erfüllen, zum Beispiel eine bestimmte Leistungsfähigkeitsanforderung. In Abschnitt 2.3 wird bemerkt, dass es eine Notwendigkeit gibt, Kerne zu schalten, was eine Beschränkung der Granularität des Schaltens erforderlich macht. Ein bestimmtes Beispiel wird dann diskutiert, indem wenn das Betriebssystem entscheidet, dass ein Schalten erforderlich ist, es den neuen Kern hochfährt, eine Cacheflutung anstößt, um alle schmutzigen Cachedaten in eine gemeinsam genutzte Speicherstruktur zu speichern und dann dem neuen Kern signalisiert an einem vordefinierten Betriebssystemeinstiegspunkt zu starten. Der alte Kern kann dann heruntergefahren werden, während der neue Kern benötigte Daten aus dem Speicher aufruft. Solch ein Ansatz wird in Abschnitt 2.3 so beschrieben, als dass er es einer Anwendung ermöglicht, von dem Betriebssystem zwischen Kernen geschaltet zu werden. Der Rest des Aufsatzes diskutiert dann wie solch ein Schalten dynamisch innerhalb einer Mehrkernumgebung ausgeführt werden kann mit dem Ziel, einen Energieverbrauch zu reduzieren.
-
Während der oben genannte Aufsatz das Potential für heterogene Einzel-ISA-Mehrkernarchitekturen Energieverbrauchsreduktionen bereitzustellen diskutiert, erfordert er noch, dass das Betriebssystem mit ausreichender Funktionalität bereitgestellt wird, um Einteilungsentscheidungen für individuelle Anwendungen auszuführen. Die Rolle des Betriebssystems in dieser Beziehung wird komplexer, wenn zwischen Prozessorinstanzen mit verschiedenen Architekturmerkmalen geschaltet wird. In dieser Hinsicht ist zu bemerken, dass die Alphakerne EV4 bis EV8, die in dem Aufsatz betrachtet werden, nicht vollständig ISA-kompatibel sind, wie dies zum Beispiel in dem fünften Absatz des Kapitels 2.2 diskutiert wird.
-
Darüber hinaus spricht der Aufsatz nicht das Problem an, dass es einen signifikanten Overhead gibt, der mit dem Schalten von Anwendungen zwischen Kernen verbunden ist und der signifikant die Vorteile, die mit solch einem Schalten erreicht werden können, reduziert.
-
ZUSAMMENFASSUNG DER ERFINDUNG
-
Unter einem ersten Aspekt betrachtet, stellt die vorliegende Erfindung eine Datenverarbeitungsvorrichtung bereit mit: einem ersten Verarbeitungsschaltkreis zum Ausführen von Datenverarbeitungsoperationen, einem zweiten Verarbeitungsschaltkreis zum Ausführen von Datenverarbeitungsoperationen, wobei der erste Verarbeitungsschaltkreis architektonisch mit dem zweiten Verarbeitungsschaltkreis kompatibel ist, sodass eine von der Datenverarbeitungsvorrichtung auszuführende Arbeitslast entweder auf dem ersten Verarbeitungsschaltkreis oder auf dem zweiten Verarbeitungsschaltkreis ausgeführt werden kann, wobei die Arbeitslast mindestens eine Anwendung und mindestens ein Betriebssystem zum Betreiben der mindestens einen Anwendung umfasst, wobei der erste Verarbeitungsschaltkreis mikroarchitektonisch von dem zweiten Verarbeitungsschaltkreis verschieden ist, sodass eine Leistungsfähigkeit des ersten Verarbeitungsschaltkreises von einer Leistungsfähigkeit des zweiten Verarbeitungsschaltkreises verschieden ist, wobei der erste und der zweite Verarbeitungsschaltkreis so eingerichtet sind, dass die Arbeitslast zu jedem Zeitpunkt entweder von dem ersten Verarbeitungsschaltkreis oder von dem zweiten Verarbeitungsschaltkreis ausgeführt wird, einer Schaltsteuerung, die auf einen Transferauslöseimpuls so reagiert, dass sie eine Übergabeoperation ausführt, um eine Ausführung der Arbeitslast von einem Quellverarbeitungsschaltkreis auf einen Zielverarbeitungsschaltkreis zu übertragen, wobei der Quellverarbeitungsschaltkreis entweder der erste Verarbeitungsschaltkreis oder der zweite Verarbeitungsschaltkreis ist und wobei der Zielverarbeitungsschaltkreis der andere des ersten Verarbeitungsschaltkreises und des zweiten Verarbeitungsschaltkreises ist, wobei die Schaltsteuerung so angeordnet ist, dass sie während der Übergabeoperation: (i) bewirkt, dass der Quellverarbeitungsschaltkreis seinen derzeitigen Architekturzustand dem Zielverarbeitungsschaltkreis verfügbar macht, wobei der derzeitige Architekturzustand der Zustand ist, der nicht aus einem gemeinsam verwendeten Speicher, der von dem ersten und dem zweiten Verarbeitungsschaltkreis zu dem Zeitpunkt, zu dem die Übergabeoperation begonnen wird, gemeinsam genutzt wird, verfügbar ist und der notwendig ist, damit der Zielverarbeitungsschaltkreis eine Ausführung der Arbeitslast erfolgreich von dem Quellverarbeitungsschaltkreis übernehmen kann, und (ii) eine vorbestimmte prozessorspezifische Konfigurationsinformation gegenüber dem mindestens einen Betriebssystem maskiert, sodass die Übertragung der Arbeitslast für das mindestens eine Betriebssystem transparent ist.
-
Gemäß der vorliegenden Erfindung wird eine Datenverarbeitungsvorrichtung mit ersten und zweiten Verarbeitungsschaltkreisen versehen, die bezüglich ihrer Architektur miteinander kompatibel sind, jedoch bezüglich ihrer Mikroarchitektur voneinander verschieden sind. Aufgrund der architektonischen Kompatibilität der ersten und zweiten Verarbeitungsschaltkreise kann eine Arbeitslast, die nicht nur aus einer oder mehreren Anwendungen besteht, sondern die auch mindestens ein Betriebssystem zum Betreiben dieser einen oder mehreren Anwendungen umfasst, zwischen den ersten und zweiten Verarbeitungsschaltkreisen bewegt werden. Darüber hinaus unterscheiden sich, da die ersten und zweiten Verarbeitungsschaltkreise mikroarchitektonisch voneinander verschieden sind, die Leistungsfähigkeitseigenschaften (und dadurch die Energieverbrauchseigenschaften) der ersten und zweiten Verarbeitungsschaltkreise.
-
Gemäß der vorliegenden Erfindung wird zu jedem Zeitpunkt die Arbeitslast entweder von dem ersten oder von dem zweiten Verarbeitungsschaltkreis ausgeführt und eine Schaltsteuerung reagiert auf einen Übertragungsauslöseimpuls, sodass eine Übergabeoperation ausgeführt wird, um eine Ausführung der Arbeitslast zwischen den Verarbeitungsschaltkreisen zu übertragen. Bei Empfang eines Übertragungsauslöseimpuls wird derjenige der beiden Verarbeitungsschaltkreise, der derzeitig die Arbeitslast ausführt, als der Quellverarbeitungsschaltkreis betrachtet, und der andere wird als der Zielverarbeitungsschaltkreis betrachtet. Die zum Ausführen der Übergabeoperation verantwortliche Schaltsteuerung bewirkt, dass der derzeitige Architekturzustand des Quellverarbeitungsschaltkreises dem Zielverarbeitungsschaltkreis verfügbar gemacht wird und dass zudem vorbestimme prozessorspezifische Konfigurationsinformation gegenüber dem mindestens einen Betriebssystem, das einen Teil der Arbeitslast bildet, maskiert werden, sodass die Übertragung der Arbeitslast für das Betriebssystem transparent ist.
-
Durch die Verwendung der vorliegenden Erfindung ist es möglich, eine gesamte Arbeitslast von einem Verarbeitungsschaltkreis auf den anderen umzuziehen, während diese Übertragung gegenüber dem Betriebssystem maskiert wird und während sichergestellt wird, dass der notwendige Architekturzustand, der im gemeinsam verwendeten Speicher zu dem Zeitpunkt, zu dem die Übergabeoperation angestoßen wird, nicht verfügbar ist, dem Zielverarbeitungsschaltkreis verfügbar gemacht wird, sodass er erfolgreich eine Ausführung der Arbeitslast übernehmen kann.
-
Durch Behandeln der gesamten Arbeitslast als eine makroskopische Einheit, die zu irgendeinem Zeitpunkt nur auf einer der ersten und zweiten Verarbeitungsschaltkreise ausgeführt wird, ermöglicht es, die Technik der vorliegenden Erfindung, dass Arbeitslast einfach zwischen den ersten und zweiten Verarbeitungsschaltkreisen geschaltet werden kann, auf eine Weise, die für das Betriebssystem transparent ist, während sichergestellt wird, dass der Zielverarbeitungsschaltkreis die gesamte Information hat, die notwendig ist, um es ihm zu ermöglichen, eine Ausführung der Arbeitslast erfolgreich zu übernehmen. Solch ein Ansatz befasst sicht mit den zuvor erwähnten Aufgaben, die daraus resultieren, dass das Betriebssystem verwendet wird, um eine Einteilung von Anwendungen auf bestimmte Verarbeitungsschaltkreise zu verwalten und es wurde beobachtet, dass sie es ermöglicht, signifikante Energieverbrauchseinsparungen zu erzielen.
-
In einer Ausführungsform weist die Datenverarbeitungsvorrichtung darüber hinaus auf: einen Energiesteuerschaltkreis zum unabhängigen Steuern von Leistung, die dem ersten Verarbeitungsschaltkreis und dem zweiten Verarbeitungsschaltkreis zur Verfügung gestellt wird, wobei vor dem Auftreten des Übertragungsauslöseimpuls der Zielverarbeitungsschaltkreis in einem Energiesparzustand ist, und der Energiesteuerschaltkreis bewirkt, dass der Zielverarbeitungsschaltkreis den Energiesparzustand verlässt bevor der Zielverarbeitungsschaltkreis eine Ausführung der Arbeitslast übernimmt. Durch Verwendung eines solchen Energiesteuerschaltkreises ist es möglich, die durch irgendeinen Verarbeitungsschaltkreis, der derzeitig nicht die Arbeitslast ausführt, verbrauchte Energie zu reduzieren.
-
In einer Ausführungsform bewirkt der Energiesteuerschaltkreis, dass der Quellverarbeitungsschaltkreis nach der Übergabeoperation in den Energiesparzustand eintritt. Dies kann unmittelbar nach der Übergabeoperation erfolgen oder in alternativen Ausführungsformen kann der Quellverarbeitungsschaltkreis so eingerichtet sein, dass er nur nachdem eine vorbestimmte Zeitdauer abgelaufen ist, in den Energiesparzustand eintritt, was es Daten, die noch von dem Quellverarbeitungsschaltkreis gehalten werden, ermöglichen kann, dem Zielverarbeitungsschaltkreis auf eine energieeffizientere und leistungsfähigere Weise verfügbar gemacht zu werden.
-
Ein weiteres Problem, das im Stand der Technik existiert unabhängig von der Art und Weise, in der ein Schalten zwischen verschiedenen Verarbeitungsschaltkreisen erfolgt, ist, wie auf eine schnelle und energieeffiziente Weise die Information, die benötigt wird, damit das Schalten erfolgreich ist, übertragen werden kann. Insbesondere muss der zuvor erwähnte derzeitige Architekturzustand dem Zielverarbeitungsschaltkreis verfügbar gemacht werden. Eine Weise, auf die dies erreicht werden könnte, wäre den gesamten derzeitigen Architekturzustand als einen Teil der Übergabeoperation auf einen gemeinsam genutzten Speicher zu schreiben, sodass er dann von dem Zielverarbeitungsschaltkreis aus dem gemeinsam genutzten Speicher ausgelesen werden könnte. So wie er hierin verwendet wird, bezeichnet der Ausdruck „gemeinsam genutzter Speicher” einen Speicher, auf den direkt sowohl von dem ersten Verarbeitungsschaltkreis als auch von dem zweiten Verarbeitungsschaltkreis zugegriffen werden kann, zum Beispiel ein sowohl mit dem ersten als auch mit dem zweiten Verarbeitungsschaltkreis über eine Schnittstelle verbundener Hauptspeicher.
-
Jedoch ist ein Problem, das auftritt, wenn der gesamte derzeitige Architekturzustand in einen gemeinsam genutzten Speicher geschrieben wird, dass solch ein Prozess nicht nur eine signifikante Zeitdauer benötigt, sondern auch signifikant Energie verbraucht, die dramatisch die potentiellen Vorteile, die durch Ausführen des Schaltens erreicht werden können, verschiebt.
-
Gemäß einer Ausführungsform bewirkt die Schaltsteuerung während der Übertragungsoperation, dass der Quellverarbeitungsschaltkreis einen beschleunigten Mechanismus verwendet, um seinen derzeitigen Architekturzustand dem Zielverarbeitungsschaltkreis zur Verfügung zu stellen ohne Bezugnahme des Zielverarbeitungsschaltkreises auf den gemeinsam genutzten Speicher, um den derzeitigen Architekturzustand zu erhalten. Daher wird gemäß solchen Ausführungsformen ein Mechanismus bereitgestellt, der das Erfordernis den Architekturzustand über den gemeinsam genutzten Speicher zu routen, um ihn dem Zielverarbeitungsschaltkreis zur Verfügung zu stellen, vermeidet. Dies führt nicht nur zu einer Verbesserung der Leistungsfähigkeit während der Übertragungsoperation, sondern auch zu einer Reduzierung des der Übertragungsoperation zugeordneten Energieverbrauchs.
-
In einer Ausführungsform hat der mindestens eine Quellschaltkreis einen zugeordneten Cache, die Datenverarbeitungsvorrichtung weist darüber hinaus einen Beobachtungssteuerschaltkreis auf und der beschleunigte Mechanismus umfasst eine Übertragung des derzeitigen Architekturzustandes an den Zielverarbeitungsschaltkreis durch Verwendung des dem Quellschaltkreis zugeordneten Cache und des Beobachtungssteuerschaltkreises.
-
Gemäß dieser Technik wird der lokale Cache des Quellverarbeitungsschaltkreises verwendet, um den derzeitigen Architekturzustand, der dem Zielprozessor verfügbar gemacht werden muss, zu speichern. Dieser Zustand wird dann als gemeinsam nutzbar markiert, was es ermöglicht, den Zustand durch den Zielverarbeitungsschaltkreis zu beobachten, wobei der Beobachtungssteuerschaltkreis verwendet wird. Daher werden in solchen Ausführungsformen die ersten und zweiten Verarbeitungsschaltkreise cachekohärent miteinander gemacht, wobei dies die Zeitdauer, Energie und Hardwarekomplexität, die mit einem Schalten von dem Quellverarbeitungsschaltkreis zu dem Zielverarbeitungsschaltkreis verbunden sind, reduziert.
-
In einer bestimmten Ausführungsform ist der Beschleunigungsmechanismus ein Speicher- und Wiederherstellungsmechanismus, der bewirkt, dass der Quellverarbeitungsschaltkreis seinen derzeitigen Architekturzustand in seinem zugeordneten Cache speichert und bewirkt, dass der Zielverarbeitungsschaltkreis eine Wiederherstellungsoperation ausführt, über die der Beobachtungssteuerschaltkreis den derzeitigen Architekturzustand aus dem dem Quellverarbeitungsschaltkreis zugeordneten Cache aufruft und diesen aufgerufenen derzeitigen Architekturzustand dem Zielverarbeitungsschaltkreis bereitstellt. Der Speichermechanismus stellt eine besonders effiziente Technik zum Speichern des Architekturzustands in dem lokalen Cache des Quellschaltkreises bereit und dann zum Aufrufen des Zustands durch den Zielverarbeitungsschaltkreis. Solch ein Ansatz kann unabhängig davon verwendet werden, ob der Zielverarbeitungsschalkreis seinen eigenen zugeordneten lokalen Cache aufweist oder nicht. Wann immer eine Anfrage nach einem Gegenstand des architektonischen Zustandes von dem Beobachtungssteuerschaltkreis empfangen wird, entweder direkt von dem Zielverarbeitungsschaltkreis oder von einem zugeordneten lokalen Cache des Zielverarbeitungsschaltkreises in dem Fall, dass ein Cache fehlt, wird er dann bestimmen, dass der benötigte Gegenstand des architektonischen Zustandes in dem dem Quellschaltkreis zugeordneten lokalen Cache gespeichert ist und diese Daten aus dem lokalen Cache des Quellschaltkreises aufrufen, um sie dem Zielverarbeitungsschaltkreis zurückzugeben (entweder direkt oder über den dem Zielverarbeitungsschaltkreis zugeordneten Cache, falls vorhanden).
-
In einer bestimmten Ausführungsform hat der Zielverarbeitungsschaltkreis keinen ihm zugeordneten Cache, in dem der von dem Beobachtungssteuerschaltkreis erhaltene übertragene Architekturzustand gespeichert ist zur Bezugnahme durch den Zielsteuerschaltkreis.
-
Jedoch ist der oben beschriebene Hardwarecachekohärenzansatz nicht die einzige Technik, die zum Bereitstellen des zuvor erwähnten Beschleunigungsmechanismus verwendet werden könnte. Zum Beispiel weist in einer alternativen Ausführungsform der beschleunigte Mechanismus einen dedizierten Bus zwischen dem Quellverarbeitungsschaltkreis und dem Zielverarbeitungsschaltkreis auf, über den der Quellverarbeitungsschaltkreis seinen derzeitigen architektonischen Zustand dem Zielverarbeitungsschaltkreis bereitstellt. Während ein solcher Ansatz typischerweise höhere Hardwarekosten aufweisen wird als ein Verwenden des Cachekohärenzansatzes, würde er eine noch schnellere Weise des Ausführens des Schaltens bereitstellen, was in bestimmten Implementierungen vorteilhaft sein könnte.
-
Die Schaltsteuerung kann eine Vielzahl von Formen annehmen. Jedoch weist in einer Ausführungsform die Schaltsteuerung mindestens eine Virtualisierungssoftware auf, die logisch das mindestens eine Betriebssystem von dem ersten Verarbeitungsschaltkreis und dem zweiten Verarbeitungsschaltkreis trennt. Es ist bekannt, virtuelle Maschinen zu verwenden, um es Anwendungen, die geschrieben wurden, wobei ein bestimmter Satz von nativen Befehlen verwendet wurde, zu ermöglichen, auf Hardware mit einem anderen nativen Befehlssatz ausgeführt zu werden. Die Anwendungen werden in einer virtuellen Maschinenumgebung ausgeführt, in der die Anwendungsbefehle für die Maschine nativ sind, jedoch ist die virtuelle Maschine durch Software implementiert, die auf der Hardware mit einem anderen nativen Befehlssatz ausgeführt wird. Die Virtualisierungssoftware, die von der Schaltsteuerung der oben genannten Ausführungsform bereitgestellt wird, kann betrachtet werden, als dass sie auf eine ähnliche Weise arbeitet wie ein Hypervisor in einer virtuellen Maschinenumgebung, da sie eine Trennung zwischen der Arbeitslast und der darunterliegenden Hardwareplattform bereitstellt. In dem Zusammenhang der vorliegenden Erfindung stellt die Virtualisierungssoftware einen effizienten Mechanismus zum Übertragen der Arbeitslast von einem Verarbeitungsschaltkreis auf einen anderen Verarbeitungsschaltkreis bereit, während prozessorspezifische Konfigurationsinformation gegenüber dem Betriebssystem, das die Arbeitslast bildet, maskiert wird.
-
Der Übertragungsauslöseimpuls kann aus einer Mehrzahl von Anlässen erzeugt werden. Jedoch wird in einer Ausführungsform der Zeitpunkt des Übertragungsauslöseimpuls so gewählt, dass er eine Energieeffizient der Datenverarbeitungsvorrichtung verbessert. Dies kann auf eine Mehrzahl von Weisen geschehen. Zum Beispiel können die Leistungszähler des Verarbeitungsschaltkreises so eingestellt sein, dass sie leistungssensitive Ereignisse (zum Beispiel die Anzahl von ausgeführten Befehlen oder die Anzahl von Lade-/Speicher-Operationen) zählen. Verbunden mit einem Zykluszähler oder einer Systemuhr, die eine Identifizierung ermöglicht, dass eine hochgradig rechtenintensive Anwendung ausgeführt wird, die besser bedient werden kann durch Schalten auf einen Verarbeitungsschaltkreis mit höherer Leistungsfähigkeit, Identifizieren einer großen Zahl von Lade-/Speicher-Operationen, die auf eine Eingabe-/Ausgabe-intensive Anwendung hinweisen, die besser von dem energieeffizienten Verarbeitungsschaltkreis bedient werden könnte, etc. Ein alternativer Ansatz ist es, Anwendungen als „groß”, „klein” oder „groß/klein” zu profilieren und zu markieren, wodurch das Betriebssystem mit der Schaltsteuerung wechselwirken kann, sodass die Arbeitslast entsprechend bewegt wird (hier bezeichnet der Ausdruck „groß” einen Verarbeitungsschaltkreis mit höherer Leistungsfähigkeit und der Ausdruck „klein” bezeichnet einen energieeffizienteren Verarbeitungsschaltkreis).
-
Der architektonische Zustand, der benötigt wird, damit der Zielverarbeitungsschaltkreis erfolgreich eine Ausführung der Arbeitslast von dem Quellverarbeitungsschaltkreis übernehmen kann, kann verschiedene Formen annehmen. Jedoch weist in einer Ausführungsform der architektonische Zustand mindestens einen derzeitigen Wert eines oder mehrerer Register für spezielle Anwendungen des Quellverarbeitungsschaltkreises auf, einschließlich eines Programmzählerwerts. Zusätzlich zu dem Programmzählerwert kann verschiedene andere Information innerhalb der Spezialanwendungsregister gespeichert werden. Zum Beispiel umfassen andere Spezialanwendungsregister Prozessorzustandsregister (zum Beispiel den CPSR und SPSR in der ARM-Architektur), die Steuerungsbits für eine Prozessorbetriebsart, die Interruptmaskierung, Ausführungszustand und Flags enthalten. Andere Spezialanwendungsregister umfassen eine Architektursteuerung (das CP15-Systemsteuerregister in der ARM-Architektur), die Bits enthält, um Datenbyte-Reihenfolgen zu ändern, den MMU ein- oder auszuschalten, Daten-/Befehlscaches ein- oder auszuschalten, etc. Andere Spezialanwendungsregister in CP15 speichern Ausnahmeadressen und Statusinformationen.
-
In einer Ausführungsform weist der architektonische Zustand darüber hinaus die derzeitigen Werte, die in einer Architekturregisterdatei des Quellverarbeitungsschaltkreises gespeichert sind, auf. Wie für den Fachmann offensichtlich ist, enthält die Architekturregisterdatei Register, auf die von den während Anwendungen ablaufen ausgeführten Befehlen Bezug genommen wird, wobei diese Register Quelloperanden für Berechnungen enthalten und Orte, an welchen Ergebnisse dieser Berechnungen gespeichert werden, bereitstellen.
-
In einer Ausführungsform weist mindestens einer des ersten Verarbeitungsschaltkreises und des zweiten Verarbeitungsschaltkreises eine einzige Verarbeitungseinheit auf. Darüber hinaus weist in einer Ausführungsform mindestens einer des ersten Verarbeitungsschaltkreises und des zweiten Verarbeitungsschaltkreises ein Cluster aus Verarbeitungseinheiten mit der gleichen Mikroarchitektur auf. In einer bestimmten Ausführungsform kann der erste Verarbeitungsschaltkreis einen Cluster von Verarbeitungseinheiten mit der gleichen Mikroarchitektur aufweisen, während der zweite Verarbeitungsschaltkreis eine einzige Verarbeitungseinheit (mit einer anderen Mikroarchitektur verglichen mit der Mikroarchitektur der Verarbeitungseinheiten innerhalb des Clusters, welches den ersten Verarbeitungsschaltkreis bildet) auf.
-
Der Energiesparzustand, in den der Energiesteuerschaltkreis die ersten und zweiten Verarbeitungsschaltkreise selektiv bringen kann, kann eine Vielzahl von Formen annehmen. In einer Ausführungsform ist der Energiesparzustand einer der folgenden: eine ausgeschalteter Zustand, ein teilweise/vollständig datenerhaltender Zustand, ein Schlafzustand oder ein Leerlaufzustand. Solche Zustände sind für einen Fachmann wohl bekannt und werden entsprechend hier nicht mehr im Detail diskutiert.
-
Es gibt eine Anzahl von Weisen, auf die die ersten und zweiten Verarbeitungsschaltkreise angeordnet sein können, sodass sie mikroarchitektonisch verschieden sind. In einer Ausführungsform sind der erste Verarbeitungsschaltkreis und der zweite Verarbeitungsschaltkreis mikroarchitektonisch voneinander verschieden, dadurch dass sie mindestens eines der Folgenden aufweisen: verschiedene Ausführungspipelinelängen oder verschiedene Ausführungsressourcen. Unterschiede bei der Pipelinelänge werden typischerweise zu Unterschieden bei der Betriebsfrequenz führen, was wiederum einen Einfluss auf die Leistungsfähigkeit haben wird. Ähnlich werden Unterschiede bei den Ausführungsressourcen einen Einfluss auf einen Durchsatz und damit auf die Leistungsfähigkeit haben. Zum Beispiel wird es ein Verarbeitungsschaltkreis mit breiteren Ausführungsressourcen ermöglichen, mehr Information zu irgendeinem Zeitpunkt zu verarbeiten, wodurch der Durchsatz verbessert wird. Zusätzlich oder alternativ kann ein Verarbeitungsschaltkreis mehr Ausführungsressourcen aufweisen als der andere, zum Beispiel mehr arithmetische Logikeinheiten (ALUs), die wiederum einen Durchsatz verbessern. Als ein weiteres Beispiel unterschiedlicher Ausführungsressourcen kann ein energieeffizienter Verarbeitungsschaltkreis mit einer einfachen geordneten Pipeline versehen sein, während ein Verarbeitungsschaltkreis mit höherer Leistungsfähigkeit mit einer ungeordneten superskalaren Pipeline versehen sein kann.
-
Ein weiteres Problem, das auftreten kann, wenn Hochleistungsverarbeitungsschaltkreise, die zum Beispiel bei GHz-Frequenzen laufen, verwendet werden, ist, dass solche Prozessoren die thermischen Grenzen erreichen oder manchmal übersteigen, für die sie konstruiert werden, damit sie darin arbeiten. Bekannte Techniken um zu versuchen, diese Probleme zu adressieren, können umfassen, dass der Verarbeitungsschaltkreis in einen Zustand mit geringer Energie gebracht wird, um einen Wärmeausgang zu reduzieren, was eine Taktdrosselung und/oder Spannungsreduzierung umfassen kann und potentiell sogar ein vollständiges Abschalten des Verarbeitungsschaltkreises über eine Zeitdauer hinweg. Jedoch ist es möglich, wenn die Technik von Ausführungsformen der vorliegenden Erfindung übernommen wird, einen alternativen Ansatz zu implementieren, sodass verhindert wird, dass die thermischen Grenzen überschritten werden. Insbesondere hat in einer Ausführungsform der Quellverarbeitungsschaltkreis eine höhere Leistungsfähigkeit als der Zielverarbeitungsschaltkreis und die Datenverarbeitungsvorrichtung weist darüber hinaus einen thermischen Überwachungsschaltkreis auf zum Überwachen eines thermischen Ausgangs des Quellverarbeitungsschaltkreises und zum Anstoßen des Übertragungsauslöseimpuls, wenn der thermische Ausgang ein vorbestimmtes Niveau erreicht. Gemäß solchen Techniken kann die gesamte Arbeitslast von dem Verarbeitungsschaltkreis mit höherer Leistungsfähigkeit auf den Verarbeitungsschaltkreis mit niedrigerer Leistungsfähigkeit umgezogen werden, wonach weniger Wärme erzeugt werden wird und es dem Quellverarbeitungsschaltkreis ermöglicht wird, abzukühlen. Daher kann die Verpackung, die die beiden Verarbeitungsschaltkreise enthält, abkühlen, während eine fortgesetzte Programmausführung stattfinden kann, jedoch mit geringerem Durchsatz.
-
Die Datenverarbeitungsvorrichtung kann auf eine Mehrzahl von Weisen angeordnet sein. Jedoch sitzen in einer Ausführungsform der erste Verarbeitungsschaltkreis und der zweite Verarbeitungsschaltkreis innerhalb eines einzigen integrierten Schaltkreises.
-
Unter einem zweiten Aspekt betrachtet stellt die vorliegende Erfindung auch eine Datenverarbeitungsvorrichtung bereit mit: einem ersten Verarbeitungsmittel zum Ausführen von Datenverarbeitungsoperationen, einem zweiten Verarbeitungsmittel zum Ausführen von Datenverarbeitungsoperationen, wobei das erste Verarbeitungsmittel mit dem zweiten Verarbeitungsmittel architektonisch kompatibel ist, sodass eine von der Datenverarbeitungsvorrichtung auszuführende Arbeitslast entweder von dem ersten Verarbeitungsmittel oder von dem zweiten Verarbeitungsmittel ausgeführt werden kann, wobei die Arbeitslast mindestens eine Anwendung und mindestens ein Betriebssystem zum Betreiben der mindestens einen Anwendung aufweist, wobei das erste Verarbeitungsmittel mikroarchitektonisch verschieden von dem zweiten Verarbeitungsmittel ist, sodass eine Leistungsfähigkeit des ersten Verarbeitungsmittels von einer Leistungsfähigkeit des zweiten Verarbeitungsmittels verschieden ist, wobei die ersten und die zweiten Verarbeitungsmittel so eingerichtet sind, dass die Arbeitslast zu irgendeinem Zeitpunkt entweder von dem ersten Verarbeitungsmittel oder von dem zweiten Verarbeitungsmittel ausgeführt wird, einem Übertragungssteuermittel, das auf einen Übertragungsauslöseimpuls reagiert durch Ausführen einer Übergabeoperation zum Übertragen einer Ausführung der Arbeitslast von einem Quellverarbeitungsmittel zu einem Zielverarbeitungsmittel, wobei das Quellverarbeitungsmittel eines des ersten Verarbeitungsmittels und des zweiten Verarbeitungsmittels ist und das Zielverarbeitungsmittel das andere des ersten Verarbeitungsmittels und des zweiten Verarbeitungsmittels ist, wobei das Übertragungssteuermittel während der Übertragungsoperation: (i) bewirkt, dass das Quellverarbeitungsmittel seinen derzeitigen architektonischen Zustand dem Zielverarbeitungsmittel verfügbar macht, wobei der derzeitige architektonische Zustand derjenige Zustand ist, der nicht aus dem gemeinsam genutzten Speichermittel, das von dem ersten und dem zweiten Verarbeitungsmittel zu einem Zeitpunkt, zu dem die Übergabeoperation angestoßen wird, gemeinsam genutzt wird, verfügbar ist und der notwendig ist, damit das Zielverarbeitungsmittel eine Ausführung der Arbeitslast erfolgreich von dem Quellverarbeitungsmittel übernehmen kann und (ii) vorbestimmte prozessorspezifische Konfigurationsinformation gegenüber dem mindestens einen Betriebssystem maskiert, sodass die Übertragung der Arbeitslast für das mindestens eine Betriebssystem transparent ist.
-
Unter einem dritten Aspekt betrachtet stellt die vorliegende Erfindung ein Verfahren bereit zum Betreiben einer Datenverarbeitungsvorrichtung mit einem ersten Verarbeitungsschaltkreis zum Ausführen von Datenverarbeitungsoperationen und einem zweiten Verarbeitungsschaltkreis zum Ausführen von Datenverarbeitungsoperationen, wobei der erste Verarbeitungsschaltkreis architektonisch kompatibel zu dem zweiten Verarbeitungsschaltkreis ist, sodass eine von der Datenverarbeitungsvorrichtung auszuführende Arbeitslast entweder auf dem ersten Verarbeitungsschaltkreis oder auf dem zweiten Verarbeitungsschaltkreis ausgeführt werden kann, wobei eine Arbeitslast mindestens eine Anwendung und mindestens ein Betriebssystem zum Betreiben der mindestens einen Anwendung aufweist und wobei der erste Verarbeitungsschaltkreis mikroarchitektonisch von dem zweiten Verarbeitungsschaltkreis verschieden ist, sodass eine Leistungsfähigkeit des ersten Verarbeitungsschaltkreises von einer Leistungsfähigkeit des zweiten Verarbeitungsschaltkreises verschieden ist, wobei das Verfahren die Schritte aufweist: Ausführen der Arbeitslast zu jedem Zeitpunkt entweder von dem ersten Verarbeitungsschaltkreis oder auf dem zweiten Verarbeitungsschaltkreis, Ausführen einer Übergabeoperation als Reaktion auf einen Übertragungsauslöseimpuls, um eine Ausführung der Arbeitslast von einem Quellverarbeitungsschaltkreis auf einen Zielverarbeitungsschaltkreis zu übertragen, wobei der Quellverarbeitungsschaltkreis entweder der erste Verarbeitungsschaltkreis oder der zweite Verarbeitungsschaltkreis ist und der Zielverarbeitungsschaltkreis der andere des ersten Verarbeitungsschaltkreises und des zweiten Verarbeitungsschaltkreises ist, während der Übergabeoperation: (i) Bewirken, dass der Quellverarbeitungsschaltkreis seinen derzeitigen architektonischen Zustand dem Zielverarbeitungsschaltkreis verfügbar macht, wobei der derzeitige architektonische Zustand der Zustand ist, der nicht aus einem gemeinsam verwendeten Speicher, der von dem ersten und dem zweiten Verarbeitungsschaltkreis zu einem Zeitpunkt, zu dem die Übergabeoperation angestoßen wird, gemeinsam verwendet wird, verfügbar ist und der notwendig ist, damit der Zielverarbeitungsschaltkreis eine Ausführung der Arbeitslast erfolgreich von dem Quellverarbeitungsschaltkreis übernehmen kann und (ii) Maskieren vorbestimmter prozessorspezifischer Konfigurationsinformation gegenüber dem mindestens einen Betriebssystem, sodass die Übertragung der Arbeitslast für das mindestens eine Betriebssystem transparent ist.
-
KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
Die vorliegende Erfindung wird weiter nur in Form eines Beispiels unter Bezug auf Ausführungsformen davon, so wie sie in den beigefügten Zeichnungen dargestellt sind, beschrieben, wobei in den Zeichnungen:
-
1 ein Blockdiagramm eines Datenverarbeitungssystems gemäß einer Ausführungsform ist,
-
2 schematisch das Vorsehen einer Schaltsteuerung (hierin auch als eine Arbeitslastübertragungssteuerung bezeichnet) gemäß einer Ausführungsform darstellt, sodass die Arbeitslast, die von der Datenverarbeitungsvorrichtung ausgeführt wird, logisch von der bestimmten Hardwareplatteform getrennt wird, auf der die verwendete Datenverarbeitungsvorrichtung diese Arbeitslast ausführt,
-
3 ein Diagramm ist, welches schematisch die Schritte darstellt, die sowohl von einem Quellprozessor als auch von einem Zielprozessor als Reaktion auf einen Schaltauslöseimpuls ausgeführt werden, um die Arbeitslast gemäß einer Ausführungsform von dem Quellprozessor auf den Zielprozessor zu übertragen,
-
4A schematisch das Speichern des derzeitigen architektonischen Zustands des Quellverarbeitungsschaltkreises in seinen zugeordneten Cache während der Speicheroperation aus 3 darstellt,
-
4B schematisch die Verwendung des Beobachtungssteuerschaltkreises, um die Übertragung des derzeitigen architektonischen Zustands des Quellverarbeitungsschaltkreises an den Zielverarbeitungsschaltkreis während der Wiederherstellungsoperation aus 3 zu steuern, darstellt,
-
5 eine alternative Struktur zum Bereitstellen eines beschleunigten Mechanismus zum Übertragen des derzeitigen architektonischen Zustands des Quellverarbeitungsschaltkreises an den Zielverarbeitungsschaltkreis während der Übertragungsoperation gemäß einer Ausführungsform darstellt,
-
6A bis 6I schematisch die Schritte darstellen, die ausgeführt werden, um eine Arbeitslast von einer Quellverarbeitungseinheit zu einer Zielverarbeitungseinheit gemäß einer Ausführungsform zu übertragen,
-
7 ein Graph ist, der eine Energieeffizienzänderung gegenüber der Leistungsfähigkeit zeigt und darstellt, wie die verschiedenen in 1 dargestellten Prozessorkerne an verschiedenen Punkten entlang dieser Kurve gemäß einer Ausführungsform verwendet werden,
-
8A und 8B schematisch eine Prozessorpipeline mit niedriger Leistungsfähigkeit bzw. eine Prozessorpipeline mit hoher Leistungsfähigkeit darstellen, so wie sie in einer Ausführungsform verwendet werden, und
-
9 ein Graph ist, der die Änderung der von dem Datenverarbeitungssystem verbrauchten Leistung zeigt, wenn die Leistungsfähigkeit einer verarbeiteten Arbeitslast zwischen einem Verarbeitungsschaltkreis mit niedriger Leistungsfähigkeit und hoher Energieeffizienz und einem Verarbeitungsschaltkreis mit hoher Leistungsfähigkeit und geringer Energieeffizienz geschaltet wird.
-
BESCHREIBUNG VON AUSFÜHRUNGSFORMEN
-
1 ist ein Blockdiagramm, welches schematisch ein Datenverarbeitungssystem gemäß einer Ausführungsform darstellt. Wie in 1 gezeigt, enthält das System zwei architektonisch kompatible Verarbeitungsschaltkreisinstanzen (den Verarbeitungsschaltkreis 0 10 und den Verarbeitungsschaltkreis 1 50), wobei jedoch diese verschiedenen Verarbeitungsschaltkreisinstanzen verschiedene Mikroarchitekturen aufweisen. Insbesondere ist der Verarbeitungsschaltkreis 10 so angeordnet, dass er mit einer höheren Leistungsfähigkeit arbeitet als der Verarbeitungsschaltkreis 50, jedoch mit der Abwägung, dass der Verarbeitungsschaltkreis 10 weniger energieeffizient sein wird als der Verarbeitungsschaltkreis 50. Beispiele mikroarchitektonischer Unterschiede werden nachfolgend detaillierter unter Bezug auf 8A und 8B beschrieben.
-
Jeder Verarbeitungsschaltkreis kann eine einzige Verarbeitungseinheit (hierin auch als ein Prozessorkern bezeichnet) aufweisen oder alternativ kann mindestens eine der Verarbeitungsschaltkreisinstanzen selbst einen Cluster von Verarbeitungseinheiten mit der gleichen Mikroarchitektur aufweisen.
-
In dem in 1 dargestellten Beispiel weist die Verarbeitungseinheit 10 zwei Prozessorkerne 15, 20 auf, die beide architektonisch und mikroarchitektonisch identisch sind. Im Gegensatz dazu enthält der Verarbeitungsschaltkreis 50 nur einen einzigen Prozessorkern 55. In der folgenden Beschreibung werden die Prozessorkerne 15, 20 als „große” Kerne bezeichnet, während der Prozessorkern 55 als ein „kleiner” Kern bezeichnet wird, da die Prozessorkerne 15, 20 typischerweise komplexer sind als der Prozessorkern 55 aufgrund dessen, dass diese Kerne im Hinblick auf Leistungsfähigkeit konstruiert sind, wohingegen im Gegensatz dazu der Prozessorkern 55 typischerweise signifikant weniger komplex ist aufgrund dessen, dass er im Hinblick auf Energieeffizienz konstruiert ist.
-
In 1 wird angenommen, dass jeder der Kerne 15, 20, 55 seinen eigenen zugeordneten lokalen Niveau 1-Cache 25, 30 bzw. 60 aufweist, der als ein vereinheitlichter Cache zum Speichern sowohl von Befehlen als auch von Daten zur Bezugnahme durch den zugeordneten Kern eingerichtet sein kann oder der mit einer Harvard-Architektur eingerichtet sein kann, wobei ausgezeichnete Niveau 1-Daten- und Niveau 1-Befehls-Caches bereitgestellt werden. Während jeder der Kerne dargestellt ist, sodass er seinen eigenen zugeordneten Niveau 1-Cache aufweist, ist dies nicht ein Erfordernis und in alternativen Ausführungsformen könnte einer oder mehrere der Kerne keinen lokalen Cache aufweisen.
-
In der in 1 gezeigten Ausführungsform weist der Verarbeitungsschaltkreis 10 auch einen Niveau 2-Cache 35 auf, der von dem Kern 15 und dem Kern 20 gemeinsam verwendet wird, wobei ein Beobachtungssteuerschaltkreis 40 verwendet wird, um Cachekohärenz zwischen den beiden Niveau 1-Caches 25, 30 und dem Niveau 2-Cache 35 herzustellen. In einer Ausführungsform ist der Niveau 2-Cache als ein Inklusivcache eingerichtet und daher können irgendwelche in irgendeinem der Niveau 1-Caches 25, 30 gespeicherten Daten auch in dem Niveau 2-Cache 35 residieren. So wie es für den Fachmann offensichtlich ist, ist es der Zweck der Beobachtungssteuereinheit 40 Cachekohärenz zwischen den verschiedenen Caches bereitzustellen, sodass sichergestellt werden kann, dass irgendeiner der Kerne 15, 20 immer Zugriff auf die aktuellste Version von irgendwelchen Daten hat, wenn er eine Zugriffsanfrage ausgibt. Daher intercepted, lediglich in Form eines Beispiels, wenn der Kern 15 eine Zugriffsanfrage für Daten ausgibt, die nicht in dem zugeordneten Niveau 1-Cache 25 residieren, dann der Beobachtungssteuerschaltkreis 40 die Anfrage, so wie sie an den Niveau 1-Cache 25 weitergeleitet wird und bestimmt unter Bezug auf den Niveau 1-Cache 30 und/oder den Niveau 2-Cache 35, ob diese Zugriffsanfrage aus den Inhalten eines dieser anderen Caches bedient werden kann. Nur wenn die Daten nicht in irgendeinem der Caches vorhanden sind, wird die Zugriffsanfrage dann über die Schnittstelle 70 an den Hauptspeicher 80 weitergeleitet, wobei der Hauptspeicher 80 ein Speicher ist, der sowohl von dem Verarbeitungsschaltkreis 10 als auch von dem Verarbeitungsschaltkreis 50 gemeinsam verwendet wird.
-
Der in der Schnittstelle 70 vorgesehene Beobachtungssteuerschaltkreis 75 arbeitet auf eine ähnliche Weise mit dem Beobachtungssteuerschaltkreis 40, jedoch versucht er in diesem Fall Kohärenz zwischen der Cachestruktur, die innerhalb des Verarbeitungsschaltkreises 10 vorgesehen ist, und der Cachestruktur, die innerhalb des Verarbeitungsschaltkreises 50 vorgesehen ist, beizubehalten. In Beispielen, in denen der Niveau 2-Cache 35 ein Inklusivcache ist, erhält dann der Beobachtungssteuerschaltkreis Hardwarecachekohärenz zwischen dem Niveau 2-Cache 35 des Verarbeitungsschaltkreises 10 und dem Niveau 1-Cache 60 des Verarbeitungsschaltkreises 50. Jedoch wenn der Niveau 2-Cache 35 als ein Inklusiv-Niveau 2-Cache eingerichtet ist, dann wird der Beobachtungssteuerschaltkreis 75 auch die in den Niveau 1-Caches 25, 30 gehaltenen Daten beobachten, um eine Cachekohärenz zwischen den Caches des Verarbeitungsschaltkreises 10 und dem Cache 60 des Verarbeitungsschaltkreises 50 sicherzustellen.
-
Gemäß einer Ausführungsform wird zu jedem Zeitpunkt nur entweder der Verarbeitungsschaltkreis 10 oder der Verarbeitungsschaltkreis 50 aktiv eine Arbeitslast verarbeiten. Für den Zweck der vorliegenden Anmeldung kann die Arbeitslast betrachtet werden als dass sie mindestens eine Anwendung und mindestens ein Betriebssystem zum Betreiben dieser mindestens einen Anwendung aufweist, so wie es schematisch durch das Bezugszeichen 100 in 2 dargestellt ist. In diesem Beispiel werden zwei Anwendungen 105, 110 unter Steuerung des Betriebssystems 115 betrieben, und zusammen bilden die Anwendungen 105, 110 und das Betriebssystem 115 die Arbeitslast 100. Die Anwendungen können so betrachtet werden, dass sie auf einem Benutzerniveau existieren, während das Betriebssystem in einem privilegierten Niveau existiert und die Arbeitslast, die gemeinsam von den Anwendungen und dem Betriebssystem gebildet wird, läuft auf einer Hardwareplattform 125 (welche die Hardwareniveauansicht darstellt). Zu jedem Zeitpunkt wird die Hardwareplattform entweder von dem Verarbeitungsschaltkreis 10 oder von dem Verarbeitungsschaltkreis 50 bereitgestellt.
-
Wie in 1 gezeigt, ist der Leistungssteuerschaltkreis 65 vorgesehen, um selektiv und unabhängig Energie an den Verarbeitungsschaltkreis 10 und den Verarbeitungsschaltkreis 50 bereitzustellen. Vor einer Übertragung der Arbeitslast von einem Verarbeitungsschaltkreis zu dem anderen wird typischerweise nur einer der Verarbeitungsschaltkreise voll betrieben, d. h. der Verarbeitungsschaltkreis, der derzeitig die Arbeitslast ausführt (der Quellverarbeitungsschaltkreis) und der andere Verarbeitungsschaltkreis (der Zielverarbeitungsschaltkreis), wird typischerweise in einem Energiesparzustand sein. Wenn bestimmt wird, dass die Arbeitslast von einem Verarbeitungsschaltkreis auf den anderen übertragen werden sollte, dann wird es einen Zeitraum währender Übertragungsoperation geben, zu dem beide Verarbeitungsschaltkreise in dem eingeschalteten Zustand sind, jedoch wird zu irgendeinem Zeitpunkt, welcher der Übertragungsoperation folgt, der Quellverarbeitungsschaltkreis, von dem die Arbeitslast übertragen wurde, dann in den Energiesparzustand gebracht.
-
Der Energiesparzustand kann verschiedene Formen annehmen in Abhängigkeit von der Implementierung und kann daher zum Beispiel einer der folgenden sein: ein ausgeschalteter Zustand, ein teilweise/vollständig datenerhaltender Zustand, ein Schlafzustand oder ein Leerlaufzustand. Solche Zustände sind für einen Fachmann offensichtlich und werden entsprechend hierin nicht detaillierter diskutiert.
-
Das Ziel der beschriebenen Ausführungsformen ist es, ein Schalten der Arbeitslast zwischen den Verarbeitungsschaltkreisen in Abhängigkeit von der erforderlichen Leistungsfähigkeit/Energieniveau der Arbeitslast auszuführen. Entsprechend kann, wenn die Arbeitslast das Ausführen einer oder mehrerer leistungsintensiven Aufgaben umfasst, wie zum Beispiel ein Ausführen von Spielanwendungen, dann die Arbeitslast von dem Hochleistungsverarbeitungsschaltkreis 10, wobei einer oder beide der großen Kerne 15, 20 verwendet werden, ausgeführt werden. Jedoch kann im Gegensatz dazu, wenn die Arbeitslast nur Aufgaben mit geringer Leistungsfähigkeitsintensität ausführt, wie zum Beispiel MP3-Abspielen, dann die gesamte Arbeitslast an den Verarbeitungsschaltkreis 50 übertragen werden, sodass sie von den Energieeffizienzen profitieren, die realisiert werden können durch Verwenden des Verarbeitungsschaltkreises 50.
-
Um das beste aus solchen Schaltfähigkeiten zu machen, ist es notwendig, einen Mechanismus bereitzustellen, der es ermöglicht, dass das Schalten auf eine einfache und effiziente Weise stattfindet, sodass die Handlung der Übertragung der Arbeitslast nicht Energie in einem Maß verbraucht, die die Vorteile des Schaltens negiert, und auch um sicherzustellen, dass der Schaltprozess schnell genug ist, dass er nicht selbst die Leistungsfähigkeit um irgendein signifikantes Maß verringert.
-
In einer Ausführungsform werden solche Vorteile zumindest teilweise erreicht durch Einrichten des Verarbeitungsschaltkreises 10, sodass er architektonisch kompatibel mit dem Verarbeitungsschaltkreis 50 ist. Dies stellt sicher, dass die Arbeitslast von einem Verarbeitungsschaltkreis auf den anderen umgezogen werden kann, während ein korrekter Betrieb sichergestellt ist. Als ein nacktes Minimum erfordert eine solche architektonische Kompatibilität, dass beide Verarbeitungsschaltkreise 10 und 50 die gleiche Befehlssatzarchitektur teilen. Jedoch bedingt in einer Ausführungsform eine solche architektonische Kompatibilität auch eine höhere Kompatibilitätsanforderung, sodass zum Beispiel sichergestellt wird, dass die zwei Verarbeitungsschaltkreisinstanzen aus Sicht eines Programmierers als identisch angesehen werden. In einer Ausführungsform umfasst dies eine Verwendung der gleichen architektonischen Register und eines oder mehrerer Spezialanwendungsregister, welche Daten speichern, die von dem Betriebssystem verwendet werden, wenn es Anwendungen ausführt. Mit solch einem Niveau an architektonischer Kompatibilität ist es dann möglich, die Übertragung der Arbeitslast zwischen Verarbeitungsschaltkreisen gegenüber dem Betriebssystem 115 abzuschirmen, sodass das Betriebssystem vollständig nicht mitbekommt, ob die Arbeitslast auf dem Verarbeitungsschaltkreis 10 oder auf dem Verarbeitungsschaltkreis 50 ausgeführt wird.
-
In einer Ausführungsform wird die Handhabung der Übertragung von einem Verarbeitungsschaltkreis zu dem anderen von der in 2 gezeigten Schaltsteuerung 120 verwaltet (auch hierin als ein Virtualisierer oder an anderer Stelle hierin als eine Arbeitslastübertragungssteuerung bezeichnet). Die Schaltsteuerung kann durch eine Mischung aus Hardware-, Firmware- und/oder Softwaremerkmalen verkörpert sein, umfasst aber in einer Ausführungsform Software, die ihrer Art nach ähnlich einer Hypervisor-Software ist, die in virtuellen Maschinen vorhanden ist, um es Anwendungen, die in einem nativen Befehlssatz geschrieben sind, zu ermöglichen, auf einer Hardwareplattform ausgeführt zu werden, wobei ein anderer nativer Befehlssatz übernommen wird. Aufgrund der architektonischen Kompatibilität zwischen den beiden Verarbeitungsschaltkreisen 10, 50 kann die Schaltsteuerung 120 die Übertragung gegenüber dem Betriebssystem abschirmen bzw. maskieren lediglich durch Abschirmen eines oder mehrere Gegenstände von vorbestimmter prozessorspezifischer Konfigurationsinformation gegenüber dem Betriebssystem. Zum Beispiel kann die prozessorspezifische Konfigurationsinformation den Inhalt eines CP15-Prozessor ID-Register und eines Registers vom Typ CP15 Cache umfassen.
-
In solch einer Ausführungsform muss die Schaltsteuerung dann lediglich sicherstellen, dass irgendein derzeitiger von dem Quellverarbeitungsschaltkreis zu dem Zeitpunkt der Übertragung gehaltener architektonischer Zustand, und der zu dem Zeitpunkt, zu dem die Übertragung angestoßen wird, nicht bereits aus dem gemeinsam genutzten Speicher 80 verfügbar ist, dem Zielverarbeitungsschaltkreis verfügbar gemacht wird, um es dem Zielverarbeitungsschaltkreis zu ermöglichen, in einer Position zu sein, erfolgreich eine Bearbeitung der Arbeitslast zu übernehmen. Das zuvor beschriebene Beispiel verwendend, wird ein solcher architektonischer Zustand typischerweise die derzeitig in der Architekturregisterdatei des Quellverarbeitungsschaltkreises gespeicherten derzeitigen Werte aufweisen zusammen mit den derzeitigen Werten von einem oder mehreren Spezialanwendungsregistern des Quellverarbeitungsschaltkreises. Aufgrund der architektonischen Kompatibilität zwischen den Verarbeitungsschaltkreisen 10, 50 wird dann, wenn dieser derzeitige architektonische Zustand von dem Quellverarbeitungsschaltkreis an den Zielverarbeitungsschaltkreis übertragen werden kann, der Zielverarbeitungsschaltkreis in einer Position sein, erfolgreich die Bearbeitung der Arbeitslast von dem Quellverarbeitungsschaltkreis zu übernehmen.
-
Während eine architektonische Kompatibilität zwischen den Verarbeitungsschaltkreisen 10, 50 eine Übertragung der gesamten Arbeitlast zwischen den beiden Verarbeitungsschaltkreisen erleichtert, sind in einer Ausführungsform die Verarbeitungsschaltkreise 10, 50 mikroarchitektonisch verschieden voneinander, sodass es verschiedene Leistungsfähigkeitseigenschaften gibt und daher Energieverbrauchseigenschaften, die den beiden Verarbeitungsschaltkreisen zugeordnet sind. Wie zuvor diskutiert, ist in einer Ausführungsform der Verarbeitungsschaltkreis 10 ein Hochleistungshochenergieverbrauchsverarbeitungsschaltkreis, während der Verarbeitungsschaltkreis 50 ein Niedrigleistungsfähigkeitsniedrigenergieverbrauchsverarbeitungsschaltkreis ist. Die zwei Verarbeitungsschaltkreise können auf eine Anzahl von Weisen mikroarchitektonisch verschieden voneinander sein, jedoch werden sie typischerweise mindestens verschiedene Ausführungspipelinelängen und/oder verschiedene Ausführungsressourcen aufweisen. Unterschiede bei einer Pipelinelänge werden typischerweise zu Unterschieden bei einer Betriebsfrequenz führen, was wiederum einen Einfluss auf die Leistungsfähigkeit haben wird. Ähnlich können Unterschiede bei Ausführungsressourcen einen Effekt auf einen Durchsatz und daher eine Leistungsfähigkeit haben. Daher kann in Form eines Beispiels der Verarbeitungsschaltkreis 10 breitere Ausführungsressourcen und/oder mehr Ausführungsressourcen aufweisen, um einen Durchsatz zu verbessern. Jedoch können die Pipelines innerhalb der Prozessorkerne 15, 20 so eingerichtet sein, dass sie eine ungeordnete superskalare Verarbeitung ausführen, während der einfachere Kern 55 innerhalb des energieeffizienten Verarbeitungsschaltkreises 50 als eine geordnete Pipeline eingerichtet sein kann. Eine weitere Diskussion mikroarchitektonischer Unterschiede wird später unter Bezug auf 8A und 8B bereitgestellt.
-
Die Erzeugung eines Übertragungsauslöseimpuls, um zu bewirken, dass die Schaltsteuerung 120 eine Übergabeoperation initiiert, sodass die Arbeitslast von einer Verarbeitungseinheit auf eine andere überfragen wird, kann aus einer Mehrzahl von Gründen angestoßen werden. Zum Beispiel können in einer Ausführungsform Anwendungen profiliert und markiert werden als „groß”, „klein” oder „groß/klein”, wodurch das Betriebssystem mit der Schaltsteuerung kommunizieren kann, sodass die Arbeitslast entsprechend bewegt wird. Daher kann durch einen solchen Ansatz die Erzeugung des Übertragungsauslöseimpuls darauf abgebildet werden, dass bestimmte Kombinationen von Anwendungen ausgeführt werden, sodass sichergestellt wird, dass wenn eine hohe Leistungsfähigkeit benötigt wird, die Arbeitslast auf dem Verarbeitungsschaltkreis 10 mit hoher Leistungsfähigkeit ausgeführt wird, wohingegen wenn diese Leistungsfähigkeit nicht benötigt wird, stattdessen der energieeffiziente Verarbeitungsschaltkreis 50 verwendet wird. In anderen Ausführungsformen könnten Algorithmen ausgeführt werden, um dynamisch zu bestimmen, wann eine Übertragung von Arbeitslast von einem Verarbeitungsschaltkreis zu dem anderen basierend auf einer oder mehreren Eingaben angestoßen werden soll. Zum Beispiel können die Leistungsfähigkeitszähler des Verarbeitungsschaltkreises so eingestellt sein, dass sie leistungssensitive Ereignisse zählen (zum Beispiel die Anzahl von ausgeführten Befehlen oder die Anzahl von Lade-/Speicher-Operationen). Gekoppelt mit einem Zykluszähler oder einer Systemuhr erlaubt dies eine Identifizierung, dass eine hochgradig berechnungsintensive Anwendung ausgeführt wird, die besser bedient werden könnte durch Schalten auf den Hochleistungsverarbeitungsschaltkreis, oder Identifizieren einer großen Anzahl von Lade-/Speicher-Operationen, welche eine Eingabe-/Ausgabe-intensive Anwendung bezeichnen, die besser auf dem energieeffizienten Verarbeitungsschaltkreis bedient werden könnte, etc.
-
Als noch ein weiteres Beispiel, wann ein Übertragungsauslöseimpuls erzeugt werden kann, kann das Datenverarbeitungssystem einen oder mehrere thermische Sensoren 90 zum Überwachen der Temperatur des Datenverarbeitungssystems während eines Betriebs aufweisen. Es kann der Fall sein, dass moderne Hochleistungsverarbeitungsschaltkreise, zum Beispiel diejenigen, die bei GHz-Frequenzen arbeiten, manchmal die thermischen Grenzen, innerhalb deren sie arbeiten sollen, erreichen oder überschreiten. Durch Verwenden solcher thermischer Sensoren 90 kann erfasst werden, wann solche thermischen Grenzen erreicht werden und unter diesen Bedingungen kann ein Übertragungsauslöseimpuls erzeugt werden, sodass eine Übertragung der Arbeitslast auf einen energieeffizienteren Verarbeitungsschaltkreis angestoßen wird, um eine Gesamtabkühlung des Datenverarbeitungssystems zu bewirken. Daher wird, wenn man das Beispiel aus 1 betrachtet, bei dem der Verarbeitungsschaltkreis 10 ein Hochleistungsverarbeitungsschaltkreis ist und der Verarbeitungsschaltkreis 50 ein Verarbeitungsschaltkreis mit geringer Leistungsfähigkeit ist, der weniger Energie verbraucht, ein Umziehen der Arbeitslast von dem Verarbeitungsschaltkreis 10 zu dem Verarbeitungsschaltkreis 50, wenn die thermischen Grenzen der Vorrichtung erreicht werden, eine nachfolgende Abkühlung der Vorrichtung nach sich ziehen, während sie es ermöglicht, dass eine fortgesetzte Programmausführung erfolgt, jedoch mit geringerem Durchsatz.
-
Während in 1 zwei Verarbeitungsschaltkreise 10, 50 gezeigt sind, ist es offensichtlich, dass die Techniken der oben beschriebenen Ausführungsformen auch auf Systeme angewendet werden können, die mehr als zwei verschiedene Verarbeitungsschaltkreise verwenden, wodurch es dem Datenverarbeitungssystem ermöglicht wird, einen größeren Bereich an Leistungs-/Energieniveaus zu überbrücken. In solchen Ausführungsformen wird jeder der verschiedenen Verarbeitungsschaltkreise so eingerichtet sein, dass sie architektonisch kompatibel miteinander sind, um ein einfaches Umziehen der gesamten Arbeitslast zwischen den Verarbeitungsschaltkreisen zu ermöglichen, aber sie werden auch mikroarchitektonisch verschieden voneinander sein, um es zu ermöglichen, Auswahlen durchzuführen zwischen der Verwendung dieser Verarbeitungsschaltkreise in Abhängigkeit von erforderlichen Leistungs-/Energieniveaus.
-
3 ist ein Flussdiagramm, welches die Sequenz von Schritten darstellt, die sowohl auf dem Quellprozessor als auch auf dem Zielprozessor ausgeführt werden, wenn die Arbeitslast von dem Quellprozessor zu dem Zielprozessor nach dem Empfang eines Übertragungsauslöseimpuls übertragen wird. Solch ein Übertragungsauslöseimpuls kann von dem Betriebssystem 115 oder dem Virtualisierer 120 über eine Systemfirmwareschnittstelle erzeugt werden, was zu der Erfassung des Schaltauslöseimpuls durch den Quellprozessor bei Schritt 200 führt (auf dem nicht nur die Arbeitslast läuft, sondern auch die Virtualisierersoftware, welche mindestens einen Teil der Schaltsteuerung 120 bildet). Ein Empfang des Übertragungsauslöseimpuls (hierin auch als der Schaltauslöseimpuls bezeichnet) bei Schritt 200 wird veranlassen, dass die Leistungssteuerung 65 eine Einschalt- und Zurücksetzoperation 205 für den Zielprozessor anstößt. Einem solchen Einschalten und Zurücksetzen folgend, wird der Zielprozessor seinen lokalen Cache bei Schritt 210 löschen und dann ein Beobachten bei Schritt 215 ermöglichen. Zu diesem Punkt wird der Zielprozessor dann dem Quellprozessor signalisieren, dass er bereit ist dafür, dass die Übertragung der Arbeitslast stattfindet, wobei dieses Signal bewirkt, dass der Quellprozessor bei Schritt 225 eine Zustandssicherungsoperation ausführt. Diese Zustandssicherungsoperation wird detaillierter später unter Bezug auf 4A diskutiert, aber sie umfasst in einer Ausführungsform, dass der Quellverarbeitungsschaltkreis irgendeinen seines derzeitigen architektonischen Zustands, der zu dem Zeitpunkt, zu dem die Übergabeoperation angestoßen wird, nicht aus einem gemeinsam genutzten Speicher verfügbar ist, und der dafür notwendig ist, dass der Zielprozessor eine Bearbeitung der Arbeitslast erfolgreich übernimmt, in seinen lokalen Cache speichert.
-
Der Zustandsspeicheroperation 225 folgend, wird eine Schaltzustandssignal an den Zielprozessor 230 ausgegeben, welches dem Zielprozessor anzeigt, dass er nun beginnen soll, den Quellprozessor zu beobachten, um den erforderlichen architektonischen Zustand aufzurufen. Dieser Prozess erfolgt über eine Zustandswiederherstelloperation 230, die detaillierter unter Bezug auf 4B beschrieben wird, die jedoch in einer Ausführungsform umfasst, dass der Zielverarbeitungsschaltkreis eine Sequenz von Zugriffen anstößt, die von dem Beobachtungssteuerschaltkreis 25 innerhalb der Schnittstelle 70 intercepted werden und die bewirkt, dass die gecachete Kopie des architektonischen Zustands in dem lokalen Cache des Quellprozessors aufgerufen und an den Zielprozessor zurückgegeben wird.
-
Schritt 230 folgend, ist der Zielprozessor dann in einer Position, eine Verarbeitung der Arbeitslast zu übernehmen und entsprechend beginnt ein normaler Betrieb bei Schritt 235.
-
In einer Ausführungsform könnte, nachdem ein normaler Betrieb auf dem Zielprozessor beginnt, der Cache des Quellprozessors wie bei Schritt 250 angezeigt gesäubert werden, um irgendwelche schmutzigen Daten zu dem gemeinsam genutzten Speicher 80 zu spülen und dann könnte der Quellprozessor bei Schritt 255 abgeschaltet werden. Jedoch ist in einer Ausführungsform, um die Effizienz des Zielprozessors weiter zu verbessern, der Quellprozessor so eingerichtet, dass er über eine in 3 als der Beobachtungszeitraum bezeichnete Zeitdauer eingeschaltet bleibt. Während dieser Zeit bleibt mindestens einer der Caches des Quellschaltkreises eingeschaltet, sodass sein Inhalt von dem Beobachtungssteuerschaltkreis 75 als Reaktion auf Zugriffsanfragen, die von dem Zielprozessor ausgegeben werden, beobachtet werden kann. Nach der Übertragung der gesamten Arbeitslast, wobei der in 3 beschriebene Prozess verwendet wird, ist zu erwarten, dass für mindestens einen anfänglichen Zeitraum, nach dem der Zielprozessor einen Betrieb der Arbeitslast beginnt, einige der während der Ausführung der Arbeitslast benötigten Daten in dem Cache des Quellprozessors verbleiben werden. Wenn der Quellprozessor seinen Inhalt in den Speicher gespült hat und abgeschaltet wurde, dann würde der Zielprozessor während diesem frühen Stadium relativ ineffizient arbeiten, da es viele Cacheverluste in seinem lokalen Cache gäbe und eine Menge von Abrufen von Daten aus gemeinsam genutzten Speichern, was zu einem signifikanten Leistungseinfluss führt, während der Cache des Zielprozessors „aufgewärmt” wird, d. h. mit Datenwerten gefüllt wird, die von dem Zielprozessor benötigt werden, um die von der Arbeitslast spezifizierten Operationen auszuführen. Jedoch wird durch Eingeschaltetlassen des Cache des Quellprozessors während des Beobachtungszeitraums der Beobachtungssteuerschaltkreis 75 in der Lage sein, viele dieser Cacheverlustanfragen unter Bezug auf den Cache des Quellprozessors zu bedienen, was zu signifikanten Leistungsvorteilen führt, verglichen mit dem Aufrufen dieser Daten aus dem gemeinsam verwendeten Speicher 80.
-
Jedoch wird erwartet, dass dieser Leistungsvorteil nur für eine bestimmte Zeitdauer nach dem Schalten anhält, nach der der Inhalt des Cache des Quellprozessors alt wird. Entsprechend wird zu einem Zeitpunkt ein Beobachtungsstoppereignis erzeugt, sodass eine Beobachtung bei Schritt 245 ausgeschaltet wird, wonach der Cache des Quellprozessors bei Schritt 250 gesäubert wird und dann der Quellprozessor bei Schritt 255 ausgeschaltet wird. Eine Diskussion der verschiedenen Szenarien, unter denen das Beobachtungsstoppereignis erzeugt werden kann, wir detaillierter später unter Bezug auf 6G diskutiert.
-
4A stellt schematisch die in Schritt 225 in 3 gemäß einer Ausführungsform ausgeführte Speicheroperation dar. Insbesondere besteht in einer Ausführungsform der architektonische Zustand, der von dem Quellverarbeitungsschaltkreis 300 in den lokalen Cache 330 gespeichert werden muss, aus den Inhalten einer Registerdatei 310, die von einer arithmetischen Logikeinheit (Englisch arithmetic logic unit, ALU) 305 während dem Ausführen von Datenverarbeitungsoperationen referenziert wird, zusammen mit den Inhalten verschiedener Spezialanwendungsregister 320, die eine Mehrzahl von Informationsteilen identifizieren, welche von der Arbeitslast benötigt werden, um es zu ermöglichen, dass Arbeitslast erfolgreich von dem Zielverarbeitungsschaltkreis übernommen wird. Die Inhalte der Spezialanwendungsregister 320 werden zum Beispiel einen Programmzählerwert umfassen, welcher identifiziert, dass ein derzeitiger Befehl ausgeführt wird, zusammen mit verschiedener anderer Information. Zum Beispiel können andere Spezialanwendungsregister Prozessorzustandsregister (zum Beispiel den CPSR und den SPSR in der ARM-Architektur) umfassen, die Steuerbits für die Prozessorbetriebsart, Interrupt-Maskierung, Ausführungszustand und Flags halten. Andere Spezialanwendungsregister umfassen eine architektonische Steuerung (das CP15-Systemsteuerregister in der ARM-Architektur), die Bits hält, um Datenbyte-Reihenfolgen zu ändern, die MMU ein- oder auszuschalten, Daten-/Befehls-Caches ein- oder auszuschalten, etc. Andere Spezialanwendungsregister in CP15 speichern Ausnahmeadressen und Statusinformationen.
-
Wie schematisch in 4A dargstellt wird der Quellverarbeitungsschaltkreis 300 auch einige prozessorspezifische Konfigurationsinformation 315 halten, jedoch muss diese Information nicht in dem Cache 330 gespeichert werden, da sie nicht auf den Zielverarbeitungsschaltkreis anwendbar ist. Die prozessorspezifische Konfigurationsinformation 315 ist typischerweise in dem Quellverarbeitungsschaltkreis 300 hartcodiert, wobei Logikkonstanten verwendet werden, und kann zum Beispiel die Inhalte des CP15-Prozessor-Idee-Registers (die für jeden Verarbeitungsschaltkreis anders sein werden) oder die Inhalte des Registers vom CP15-Cachetyp (die zum Beispiel in Abhängigkeit von der Konfiguration der Caches 25, 30, 60 anzeigen, dass die Caches verschiedene Leitungslängen aufweisen) umfassen. Wenn das Betriebssystem 115 ein Teil einer prozessorspezifischen Konfigurationsinformation 315 erfordert, kann dann, es sei denn der Prozessor ist bereits in einer Hypervisor-Betriebsart, eine Ausführungsfalle zur Hypervisor-Betriebsart auftreten. Als Reaktion kann der Virtualisierer 120 in einer Ausführungsform den Wert der angefragten Information anzeigen, jedoch wird er in einer anderen Ausführungsform einen „virtuellen” Wert zurückgeben. In dem Fall des Prozessor-ID-Werts kann dieser virtuelle Wert so ausgewählt sein, dass er der gleiche sowohl für „große” als auch für „kleine” Prozessoren ist, wodurch bewirkt wird, dass die tatsächliche Hardwarekonfiguration durch den Virtualisierer 120 vor dem Betriebssystem 115 versteckt wird.
-
Wie schematisch in 4A dargestellt werden während der Speicheroperation die Inhalte der Registerdatei 310 und der Spezialanwendungsregister 320 von dem Quellverarbeitungsschaltkreis in den Cache 330 gespeichert, sodass eine gecachete Kopie 335 gebildet wird. Diese gecachete Kopie wird dann als gemeinsam verwendbar markiert, was es dem Zielprozessor ermöglicht, diesen Zustand über die Beobachtungssteuereinheit 75 zu beobachten.
-
Die nachfolgend auf dem Zielprozessor ausgeführte Wiederherstellungsoperation ist dann schematisch in 4B dargestellt. Insbesondere wird der Zielverarbeitungsschaltkreis 350 (der seinen eigenen lokalen Cache haben kann oder nicht) eine Anfrage für einen bestimmten Gegenstand des architektonischen Zustands ausgeben, wobei diese Anfrage von dem Beobachtungssteuerschaltkreis 25 intercepted wird. Der Beobachtungssteuerschaltkreis wird dann eine Beobachtungsanfrage an den lokalen Cache 330 des Quellverarbeitungsschaltkreises ausgeben, um zu bestimmen, ob dieser Gegenstand des architektonischen Zustands in dem Cache der Quelle vorhanden ist. Aufgrund der während der in 4A diskutierten Speicheroperation ausgeführten Schritte wird ein Treffer in dem Cache 330 der Quelle erfasst, was dazu führt, dass der gecachete architektonische Zustand über den Beobachtungssteuerschaltkreis 75 an den Zielverarbeitungsschaltkreis 350 zurückgegeben wird. Dieser Prozess kann iterativ wiederholt werden bis alle Gegenstände des architektonische Zustands über eine Beobachtung des Cache des Quellprozessorschaltkreises aufgerufen wurden. Irgendeine prozessorspezifische Konfigurationsinformation, die für den Zielverarbeitungsschaltkreis 350 relevant ist, ist typischerweise in dem Zielverarbeitungsschaltkreis 350 wie zuvor diskutiert hartcodiert. Daher hat sobald die Wiederherstellungsoperation abgeschlossen ist, dann der Zielverarbeitungsschaltkreis die gesamte Information, die benötigt wird, um es ihm zu ermöglichen, eine Bearbeitung der Arbeitslast erfolgreich zu übernehmen.
-
Darüber hinaus stellt in einer Ausführungsform unabhängig davon, ob die Arbeitslast 100 von dem „großen” Verarbeitungsschaltkreis 10 oder von dem „kleinen” Verarbeitungsschaltkreis 50 ausgeführt wird, der Virtualisierer 120 dem Betriebssystem 115 virtueller Konfigurationsinformation zur Verfügung, die die gleichen Werten aufweist, und so werden die Hardwareunterschiede zwischen den „großen” und „kleinen” Verarbeitungsschaltkreisen 10, 50 gegenüber dem Betriebssystem 115 durch den Virtualisierer 120 maskiert. Dies bedeutet, dass das Betriebssystem 115 nicht weiß, dass die Bearbeitung der Arbeitslast 100 zu einer anderen Hardwareplattform übertragen wurde.
-
Gemäß den unter Bezug auf 4A und 4B beschriebenen Speicher- und Wiederherstellungsoperationen sind die verschiedenen Prozessorinstanzen 10, 50 so eingerichtet, dass sie hardwarecachekohärent zueinander sind, um die Zeitdauer, Energie und Hardwarekomplexität, die mit einem Übertragen des architektonischen Zustands von dem Quellprozessor zu dem Zielprozessor verbunden ist, zu reduzieren. Die Technik verwendet den lokalen Cache des Quellprozessors, um den gesamten Zustand, der von dem Quellprozessor zu dem Zielprozessor übertragen werden muss und der zu dem Zeitpunkt, zu dem die Übertragungsoperation stattfindet, nicht aus dem gemeinsam verwendeten Speicher verfügbar ist, zu speichern. Da der Zustand innerhalb des Cache des Quellprozessors als gemeinsam verwendbar markiert ist, ermöglicht es dies dem hardwarecachekohärenten Zielprozessor, diesen Zustand während der Übertragungsoperation zu beobachten. Durch Verwenden solch einer Technik ist es möglich, den Zustand zwischen den Prozessorinstanzen zu übertragen ohne die Notwendigkeit diesen Zustand entweder in einem Hauptspeicher oder einem durch einen lokalen Speicher abgebildeten Speicherelement zu speichern. Dies erhöht daher signifikant die Leistungsfähigkeits- und Energieverbrauchsvorteile, was die Auswahl an Situationen erhöht, in denen es passend wäre, die Arbeitslast zu schalten, um zu versuchen, Energieverbrauchsvorteile zu realisieren.
-
Während jedoch die Technik des Verwendens von Cachekohärenz wie oben beschrieben einen beschleunigten Mechanismus zum Verfügbarmachen des derzeitigen architektonischen Zustands für den Zielprozessor ohne ein Routen des derzeitigen architektonischen Zustands über den gemeinsam verwendeten Speicher bereitstellt, ist dies nicht der einzige Weg, auf dem solch ein beschleunigter Mechanismus implementiert werden könnte. Zum Beispiel stellt 5 einen alternativen Mechanismus dar, wobei ein dedizierter Bus 350 zwischen dem Quellverarbeitungsschaltkreis 300 und dem Zielverarbeitungsschaltkreis 350 bereitgestellt wird, um es zu ermöglichen, den architektonischen Zustand während der Übergabeoperation zu übertragen. Daher werden in solchen Ausführungsformen die Speicher- und Wiederherstellungsoperationen 225, 230 aus 3 durch einen alternativen Übertragungsmechanismus, wobei der dedizierte Bus 380 verwendet wird, ersetzt. Während solch ein Ansatz typischerweise höhere Hardwarekosten hat als ein Verwenden des Cachekohärenzansatzes (der Cachekohärenzansatz verwendet typischerweise Hardware, die bereits innerhalb des Datenverarbeitungssystems vorhanden ist), würde er sogar eine noch schnellere Weise des Ausführens des Schaltens bereitstellen, was bei bestimmten Implementierungen vorteilhaft sein könnte.
-
6A bis 6E stellen schematisch eine Reihe von Schritten dar, die ausgeführt werden, um eine Ausführung einer Arbeitslast von dem Quellverarbeitungsschaltkreis 300 zu dem Zielverarbeitungsschaltkreis 350 zu übertragen. Der Quellverarbeitungsschaltkreis 300 ist derjenige der Verarbeitungsschaltkreise 10, 50, der die Arbeitslast vor der Übertragung ausführt, wobei der Zielverarbeitungsschaltkreis der andere der Verarbeitungsschaltkreise 10, 50 ist.
-
6A zeigt das System in einem anfänglichen Zustand, in dem der Quellverarbeitungsschaltkreis 300 von der Energiesteuerung 65 eingeschaltet ist und führt die Bearbeitung der Arbeitslast 100 aus, während der Zielverarbeitungsschaltkreis 350 in dem Energiesparzustand ist. In dieser Ausführungsform ist der Energiesparzustand ein ausgeschalteter Zustand, jedoch könnten wie oben erwähnt andere Typen von Energiesparzuständen ebenfalls verwendet werden. Die Arbeitslast 100 einschließlich Anwendungen 105, 110 und eines Betriebssystems 115 zum Betreiben der Anwendungen 105, 110 ist von der Hardwareplattform des Quellverarbeitungsschaltkreises 300 durch den Virtualisierer 120 abstrahiert. Während die Arbeitslast 100 ausgeführt wird, erhält der Quellverarbeitungsschaltkreis 300 den architektonischen Zustand 400, der zum Beispiel wie in 4A gezeigt die Inhalte der Registerdatei 310 und der Spezialanwendungsregister 320 umfassen kann.
-
In 6B wird ein Übertragungsauslöseimpuls 430 von dem Virtualisierer 120 erfasst. Während der Übertragungsauslöseimpuls 430 in 6B als ein externes Ereignis gezeigt ist (zum Beispiel eine Erfassung des thermischen Weglaufens durch den thermischen Sensor 90), könnte der Übertragungsauslöseimpuls 430 auch ein Ereignis sein, das durch den Virtualisierer 120 selbst ausgelöst wird oder durch das Betriebssystem 115 (zum Beispiel könnte das Betriebssystem 115 so eingerichtet sein, dass es den Virtualisierer 120 informiert, wenn ein bestimmter Typ von Anwendung ausgeführt werden soll). Der Virtualisierer 120 reagiert auf den Übertragungsauslöseimpuls 430 durch Steuern der Leistungssteuerung 65, sodass Energie an den Zielverarbeitungsschaltkreis 350 bereitgestellt wird, um den Zielverarbeitungsschaltkreis 350 in einen eingeschalteten Zustand zu versetzen.
-
In 6C beginnt der Zielverarbeitungsschaltkreis 350 ein Ausführen des Virtualisierers 120. Der Virtualisierer 120 steuert den Zielverarbeitungsschaltkreis 350, sodass er seinen Cache 420 löscht, um Verarbeitungsfehler zu verhindern, die durch fehlerhafte Datenwerte verursacht werden, die in dem Cache 420 beim Einschalten des Zielverarbeitungsschaltkreises 350 vorhanden sein können. Während der Zielcache 420 gelöscht wird, fährt der Quellverarbeitungsschaltkreis 350 fort, die Arbeitslast 100 auszuführen. Wenn ein Löschen des Zielcaches 420 abgeschlossen ist, steuert der Virtualisierer 120 den Zielverarbeitungsschaltkreis 350 so, dass er dem Quellverarbeitungsschaltkreis 300 signalisiert, dass er für die Übergabe der Arbeitslast 100 bereit ist. Durch Fortsetzen einer Verarbeitung der Arbeitlast 100 auf dem Quellverarbeitungsschaltkreis 300 bis der Zielverarbeitungsschaltkreis 350 für die Übergabeoperation bereit ist, kann der Einfluss der Übergabe auf die Leistungsfähigkeit reduziert werden.
-
Im nächsten Schritt beendet wie in 6D gezeigt der Quellverarbeitungsschaltkreis 300 eine Ausführung der Arbeitslast 100. Während dieser Stufe führt weder der Quellverarbeitungsschaltkreis 300 noch der Zielverarbeitungsschaltkreis 350 die Arbeitslast 100 aus. Eine Kopie des architektonischen Zustands 400 wird von dem Quellverarbeitungsschaltkreis 300 zu dem Zielverarbeitungsschaltkreis 350 übertragen. Zum Beispiel kann der architektonische Zustand 400 in den Quellcache 410 gespeichert und von dem Zielverarbeitungsschaltkreis 350 wie in 4A und 4B gezeigt wiederhergestellt werden oder er kann über einen dedizierten Bus wie in 5 gezeigt übertragen werden. Der architektonische Zustand 400 enthält all die Zustandsinformationen, die für den Zielverarbeitungsschaltkreis 350 nötig ist, um die Arbeitslast 100 auszuführen, außer der Information, die bereits in dem gemeinsam verwendeten Speicher 80 vorhanden ist.
-
Nach Übertragen des architektonischen Zustands 400 an den Zielverarbeitungsschaltkreis 350 wird der Quellverarbeitungsschaltkreis 300 von dem Energiesteuerschaltkreis 65 (siehe 6E) in den Energiesparzustand versetzt, mit der Ausnahme, dass der Quellcache 410 eingeschaltet bleibt. Währenddessen beginnt der Zielverarbeitungsschaltkreis 350 mit dem Ausführen der Arbeitslast 100, wobei der übertragene architektonische Zustand 400 verwendet wird.
-
Wenn der Zielverarbeitungsschaltkreis 350 eine Verarbeitung der Arbeitslast 100 beginnt, beginnt der Beobachtungszeitraum (siehe 6F). Während des Beobachtungszeitraums kann der Beobachtungssteuerschaltkreis 75 die in dem Quellcache 410 gespeicherten Daten beobachten und die Daten im Namen des Zielverarbeitungsschaltkreises 350 aufrufen. Wenn der Zielverarbeitungsschaltkreis 350 Daten anfragt, die nicht in dem Zielcache 420 vorhanden sind, fragt der Zielverarbeitungsschaltkreis 350 Daten aus dem Beobachtungssteuerschaltkreis 75 an. Der Beobachtungssteuerschaltkreis 75 beobachtet dann den Quellcache 410 und wenn die Beobachtung in einem Cachetreffer resultiert, dann ruft der Beobachtungssteuerschaltkreis 75 die beobachteten Daten aus dem Quellcache 410 auf und gibt sie an den Zielverarbeitungsschaltkreis 350 zurück, wo die beobachteten Daten in dem Zielcache 420 gespeichert werden können. Auf der anderen Seite werden, wenn die Beobachtung zu einem Cachefehler in dem Quellcache 410 führt, dann die angefragten Daten aus dem gemeinsam verwendeten Speicher 80 geholt und an den Zielverarbeitungsschaltkreis 350 zurückgegeben. Da Zugriffe auf Daten in dem Quellcache 410 schneller sind und weniger Energie erfordern als Zugriffe auf den gemeinsam verwendeten Speicher 80, verbessert ein Beobachten des Quellcache 410 über einen Zeitraum die Verarbeitungsleistungsfähigkeit und reduziert einen Energieverbrauch während einer anfänglichen Zeitdauer, die der Übergabe der Arbeitslast 100 an den Zielverarbeitungsschaltkreis 350 folgt.
-
Bei dem in 6G gezeigten Schritt erfasst der Beobachtungssteuerschaltkreis 75 ein Beobachtungsstoppereignis, welches anzeigt, dass es nicht mehr effizient ist, den Quellcache 410 in dem eingeschalteten Zustand zu halten. Das Beobachtungsstoppereignis stößt dann das Ende des Beobachtungszeitraums an. Das Beobachtungsstoppereignis kann irgendeines aus einem Satz von durch den Beobachtungssteuerschaltkreis 75 überwachten Beobachtungsstoppereignissen sein. Zum Beispiel kann der Satz von Beobachtungsstoppereignissen irgendeines oder mehrere der folgenden Ereignisse umfassen:
- a) wenn der Prozentsatz oder Bruchteil von Beobachtungstreffern, die zu einem Cachetreffer in dem Quellcache 410 führen (d. h. eine Größe, die proportional zu den Beobachtungstreffern/Anzahl von Gesamtbeobachtungen ist) unter ein vorbestimmtes Schwellenwertniveau fällt, nachdem der Zielverarbeitungsschaltkreis 350 begonnen hat, die Arbeitslast 100 auszuführen,
- b) wenn die Anzahl von Transaktionen oder die Anzahl von Transaktionen eines vorbestimmten Typs (zum Beispiel cachebare Transaktionen), die ausgeführt wurden seit der Zielverarbeitungsschaltkreis 350 begonnen hat, die Arbeitslast 100 auszuführen, einen vorbestimmten Schwellenwert übersteigt,
- c) wenn die Anzahl von Verarbeitungszyklen, die abgelaufen sind seit der Zielverarbeitungsschaltkreis 350 begonnen hat, die Arbeitslast 100 auszuführen, einen vorbestimmten Schwellenwert übersteigt,
- d) wenn auf einen bestimmten Bereich des gemeinsam verwendeten Speichers 80 zum ersten Mal zugegriffen wird seit der Zielverarbeitungsprozessor 350 begonnen hat, die Arbeitslast 100 auszuführen,
- e) wenn auf einen bestimmten Bereich des gemeinsam verwendeten Speichers 80, auf den über eine anfängliche Zeitdauer nachdem der Zielverarbeitungsschaltkreis 350 begonnen hat, die Arbeitslast 100 auszuführen, zugegriffen wurde, über eine vorbestimmte Anzahl von Zyklen oder eine vorbestimmte Zeitdauer nicht mehr zugegriffen wird,
- f) wenn der Zielverarbeitungsschaltkreis 350 einen vorbestimmten Speicherort zum ersten Mal nachdem er begonnen hat, die übertragene Arbeitslast 100 zu bearbeiten, beschreibt.
-
Diese Beobachtungsstoppereignisse können erfasst werden, wobei programmierbare Zähler in der kohärenten Schnittstelle 70, welche den Beobachtungssteuerschaltkreis 75 umfasst, verwendet werden. Andere Typen von Beobachtungsstoppereignissen können ebenfalls in dem Satz von Beobachtungsstoppereignissen enthalten sein.
-
Beim Erfassen eines Beobachtungsstoppereignisses sendet der Beobachtungssteuerschaltkreis 75 ein Beobachtungsstoppsignal 440 an den Quellprozessor 300. Der Beobachtungssteuerschaltkreis 75 beendet eine Beobachtung des Quellcaches 410 und reagiert von nun an auf Datenzugriffanfragen von dem Zielverarbeitungsschaltkreis 350 durch Abrufen der angefragten Daten aus dem gemeinsam verwendeten Speicher 80 und Zurückgeben der abgerufenen Daten an den Zielverarbeitungsschaltkreis 350, wo die abgerufenen Daten gecachet werden können.
-
In 6H reagiert der Steuerschaltkreis des Quellcaches auf das Beobachtungsstoppsignal 440, sodass der Cache 440 gesäubert wird, um alle gültigen und schmutzigen Datenwerte (d. h. deren gecacheter Wert aktueller ist als der entsprechende Wert in den gemeinsam verwendeten Speicher 80) in den gemeinsam verwendeten Speicher 80 zu speichern.
-
In 6I wird dann der Quellcache 410 von der Energiesteuerung 65 ausgeschaltet, sodass der Quellverarbeitungsschaltkreis 300 vollständig in dem Energiesparzustand ist. Der Zielverarbeitungsschaltkreis 350 fährt fort, die Arbeitslast 100 auszuführen. Aus Sicht des Betriebssystems 115 ist die Situation nun die gleiche wie in 6A. Das Betriebssystem 115 weiß nicht, dass eine Ausführung der Arbeitslast von einem Verarbeitungsschaltkreis auf einen anderen Verarbeitungsschaltkreis übertragen wurde. Wenn ein weiterer Übertragungsauslöseimpuls auftritt, können dann die gleichen Schritte aus 6A bis 6I verwendet werden, um die Bearbeitung der Arbeitslast zurück zu dem ersten Prozessor zu schalten (in diesem Fall wird umgedreht, welche der Verarbeitungsschaltkreise 10, 50 der „Quellverarbeitungsschaltkreis” und der „Zielverarbeitungsschaltkreis” sind).
-
In der Ausführungsform aus 6A bis 6I ist eine unabhängige Energiesteuerung für den Cache 410 und den Quellverarbeitungsschaltkreis 300 verfügbar, sodass der Quellverarbeitungsschaltkreis 300, anders als der Quellcache 410, ausgeschaltet werden kann, nachdem der Zielverarbeitungsschaltkreis 350 begonnen hat, die Arbeitslast auszuführen (siehe 6E), während nur der Cache 410 des Quellverarbeitungsschaltkreises 350 in dem eingeschalteten Zustand verbleibt (siehe 6F bis 6H). Der Quellcache 410 wird dann in 6I ausgeschaltet. Dieser Ansatz kann nützlich sein, um Energie zu sparen, insbesondere wenn der Quellverarbeitungsschaltkreis 300 der „große” Verarbeitungsschaltkreis 10 ist.
-
Jedoch ist es auch möglich, es fortzusetzen, den gesamten Quellverarbeitungsschaltkreis 300 während des Beobachtungszeitraums zu betreiben und dann den Quellverarbeitungsschaltkreis 300 als Ganzes in 6I nach dem Ende des Beobachtungszeitraums und dem Säubern des Quellcache 410 in den Energiesparzustand zu versetzen. Dies kann nützlicher sein in dem Fall, in dem der Quellcache 410 zu tief in den Quellprozessorkern eingebettet ist, um in der Lage zu sein, unabhängig von dem Quellprozessorkern betrieben zu werden. Dieser Ansatz kann auch praktischer sein, wenn der Quellprozessor der „kleine” Verarbeitungsschaltkreis 50 ist, dessen Energieverbrauch unbedeutend verglichen mit dem „großen” Verarbeitungsschaltkreis 10 ist, da sobald der „große” Verarbeitungsschaltkreis 10 eine Bearbeitung der übertragenen Arbeitslast 100 begonnen hat, dann der „kleine” Verarbeitungsschaltkreis 50, außer dem Cache 60, während des Beobachtungszeitraums in den Energiesparzustand geschaltet wird, einen geringen Einfluss auf den Gesamtenergieverbrauch des Systems haben kann. Dies kann bedeuten, dass die zusätzliche Hardwarekomplexität des Bereitstellens einer individuellen Energiesteuerung für den „kleinen” Verarbeitungsschaltkreis 50 und den Cache 60 des „kleinen” Kerns nicht gerechtfertigt sein kann.
-
In einigen Situationen kann es vor der Arbeitslastübertragung bekannt sein, dass die in dem Quellcache 410 gespeicherten Daten nicht von dem Zielverarbeitungsschaltkreis 350 benötigt werden, wenn er beginnt, die Arbeitslast 100 auszuführen. Zum Beispiel kann der Quellverarbeitungsschaltkreis 300 gerade eine Anwendung abgeschlossen haben, wenn die Übertragung auftritt und dadurch betreffen die Daten in dem Quellcache 410 zum Zeitpunkt der Übertragung die abgeschlossene Anwendung und nicht die von dem Zielverarbeitungsschaltkreis 350 nach der Übertragung auszuführende Anwendung. In solch einem Fall kann eine Beobachtungsübersteuersteuerung den Virtualisierer 120 und den Beobachtungssteuerschaltkreis 75 anstoßen, sodass sie die Beobachtung des Quellcaches 410 übersteuern und den Quellverarbeitungsschaltkreis 300 so steuern, dass er den Quellcache 410 säubert und ausschaltet, ohne auf ein Beobachtungsstoppereignis zu warten, um das Ende des Beobachtungszeitraums zu signalisieren. In diesem Fall würde die Technik aus 6A bis 6I von dem Schritt aus 6E gerade zu dem Schritt aus 6D springen, ohne den Schritt aus 6F, in dem Daten aus dem Quellcache 410 beobachtet werden. Daher kann, wenn im Vorhinein bekannt ist, dass die Daten in dem Quellcache 410 nicht für den Verarbeitungsschaltkreis 350 nützlich sein werden, Energie gespart werden durch Versetzen des Quellcaches 410 und des Quellverarbeitungsschaltkreises 300 in den Energiesparzustand ohne auf ein Beobachtungsstoppereignis zu warten. Die Beobachtungsübersteuersteuerung kann Teil des Virtualisierers 120 sein oder sie kann als Firmware implementiert sein, die auf dem Quellverarbeitungsschaltkreis 300 ausgeführt wird. Die Beobachtungsübersteuersteuerung könnte auch als eine Kombination aus Elementen realisiert sein, zum Beispiel könnte das Betriebssystem 115 den Virtualisierer 120 informieren, wenn eine Anwendung beendet wurde und der Virtualisierer 120 könnte dann eine Beobachtung des Quellcaches 410 übersteuern, falls eine Übertragung auftritt wenn eine Anwendung beendet wurde.
-
7 ist ein Graph, auf dem die Linie 600 darstellt, wie ein Energieverbrauch mit der Leistungsfähigkeit variiert. Für verschiedene Abschnitte dieses Graphen kann das Datenverarbeitungssystem so eingerichtet sein, dass verschiedene Kombinationen der in 1 dargstellten Prozessorkerne 15, 20, 55 verwendet werden, um zu versuchen, die passende Abwägung zwischen Leistungsfähigkeit und Energieverbrauch zu erhalten. Daher ist es beispielsweise, wenn eine Anzahl von sehr Hochleistungsaufgaben ausgeführt werden müssen, möglich beide großen Kerne 15, 20 des Verarbeitungsschaltkreises 10 zu betreiben, um die gewünschte Leistungsfähigkeit zu erreichen. Optionale Versorgungsspannungsänderungstechniken können verwendet werden, um eine gewisse Änderung in der Leistungsfähigkeit und im Energieverbrauch zu ermöglichen, wenn diese beiden Kerne verwendet werden.
-
Wenn die Leistungsanforderungen unter ein Niveau fallen, bei dem die geforderte Leistungsfähigkeit erreicht werden kann, wobei nur einer der großen Kerne verwendet wird, dann können die Aufgaben auf nur einen der großen Kerne 15, 20 umgezogen werden, wobei der andere Kern ausgeschaltet oder in irgendeinen anderen Energiesparzustand versetzt wird. Wieder können Versorgungsspannungsänderungen verwendet werden, um eine gewisse Umverteilung zwischen Leistungsfähigkeit und Energieverbrauch zu ermöglichen, wenn solch ein einziger großer Kern verwendet wird. Es ist zu beachten, dass der Übergang von zwei großen Kernen zu einem großen Kern weder eine Erzeugung eines Übertragungsauslöseimpuls erfordert noch die Verwendung der oben beschriebenen Techniken zum Übertragen von Arbeitslast, da es in allen Instanzen der Verarbeitungsschaltkreis 10 ist, der verwendet wird, und der Verarbeitungsschaltkreis 50 in einem Energiesparzustand sein wird. Jedoch kann wie durch die gepunktete Linie 610 in 7 dargestellt, wenn die Leistung unter ein Niveau fällt, bei dem der kleine Kern in der Lage ist, die geforderte Leistung zu erbringen, dann ein Übertragungsauslöseimpuls erzeugt werden, um den zuvor beschriebenen Mechanismus zum Übertragen der gesamten Arbeitslast von dem Verarbeitungsschaltkreis 10 an den Verarbeitungsschaltkreis 50 anzustoßen, sodass die gesamte Arbeitslast dann auf dem kleinen Kern 55 abläuft, wobei der Verarbeitungsschaltkreis 10 in einen Energiesparzustand versetzt wird. Wieder kann eine Versorgungsspannungsänderung verwendet werden, um eine gewisse Änderung in der Leistungsfähigkeit und im Energieverbrauch des kleinen Kerns 55 zu ermöglichen.
-
8A bzw. 8B stellen mikroarchitektonische Unterschiede zwischen einer Prozessorpipeline 800 mit geringer Leistungsfähigkeit und einer Prozessorpipeline 850 mit hoher Leistungsfähigkeit gemäß einer Ausführungsform dar. Die Prozessorpipeline 800 mit geringer Leistungsfähigkeit aus 8A wäre für den kleinen Verarbeitungskern 55 aus 1 geeignet, wohingegen die Prozessorpipeline 850 mit hoher Leistungsfähigkeit aus 8B für die großen Kerne 15, 20 geeignet wäre.
-
Die Prozessorpipeline 800 mit geringer Leistungsfähigkeit aus 8A weist eine Abrufstufe 810 zum Abrufen von Befehlen aus dem Speicher 80, eine Decodierstufe 820 zum Decodieren der abgerufenen Befehle, eine Ausgabestufe 830 zum Ausgeben von Befehlen zur Ausführung und mehrere Ausführpipelines einschließlich einer Ganzzahlpipeline 840 zum Ausführen von Ganzzahloperationen, einer MAC-Pipeline 842 zum Ausführen von Multiplizier-/Akkumulieroperationen und einer SIMD-/FPU-Pipeline 844 zum Ausführen von SIMD-(Single Instruction, Multiple Data)Operationen oder Floatpunktoperationen auf. In der Prozessorpipeline 800 mit geringer Leistungsfähigkeit gibt die Ausgabestufe 830 einen einzigen Befehl zu einer Zeit aus und sie gibt die Befehle in der Reihenfolge aus, in der die Befehle abgerufen werden.
-
Die Prozessorpipeline 850 mit hoher Leistungsfähigkeit aus 8B weist eine Abrufstufe 860 zum Abrufen von Befehlen aus dem Speicher 80, eine Decodierstufe 870 zum Decodieren der abgerufenen Befehle, eine Umbenennungsstufe 875 zum Umbenennen von in den decodierten Befehlen spezifizierten Registern, eine Absendestufe 880 zum Absenden von Befehlen zur Ausführung und mehrere Ausführpipelines einschließlich zweier Ganzzahlpipelines 890, 892, einer MAC-Pipeline 894 und zweier SIMD-/FPU-Pipelines 896, 898, auf. In der Prozessorpipeline 850 mit hoher Leistungsfähigkeit ist die Absendestufe 880 eine parallele Ausgabestufe, die mehrere Befehle an verschiedene der Pipelines 890, 892, 894, 896, 898 gleichzeitig ausgeben kann. Die Absendestufe 880 kann auch die Befehle ungeordnet ausgeben. Anders als in der Prozessorpipeline 800 mit geringer Leistungsfähigkeit haben die SIMD-/FPU-Pipelines 896, 898 eine einstellbare Länge, was bedeutet, dass Operationen, die durch die SIMD-/FPU-Pipelines 896, 898 laufen, so gesteuert werden können, dass sie bestimmte Stufen auslassen. Ein Vorteil solch eines Ansatzes ist, dass wenn mehrere Ausführungspipelines jeweils verschiedene Ressourcen aufweisen, es nicht notwendig ist, die kürzeste Pipeline künstlich zu verlängern, um sie gleich lang zu machen wie die längste Pipeline, sondern stattdessen ist eine Logik erforderlich, um mit der ungeordneten Art der Ergebnisse, die durch die verschiedenen Pipelines erzeugt werden, umzugehen (zum Beispiel um alles zurück in eine Reihenfolge zu versetzen, wenn eine Verarbeitungsunterbrechung auftritt).
-
Die Umbenennungsstufe
875 ist vorgesehen, um Registerspezifizierer, die in Programmbefehlen enthalten sind, und bestimmte architektonische Register identifizieren, betrachtet vom Standpunkt eines Modells eines Programmierers aus, auf physikalische Register, die die tatsächlichen Register der Hardwareplattform sind, abzubilden. Die Umbenennungsstufe
875 ermöglicht es, einen größeren Pool von physikalischen Registern von dem Mikroprozessor vorzusehen als innerhalb des Modells des Programmierers des Mikroprozessors vorhanden sind. Dieser größere Pool von physikalischen Registern ist nützlich während einer ungeordneten Ausführung, da er es ermöglicht, Gefahren, wie zum Beispiel Schreiben-nach-Schreiben-(Write-alter-Write, WAW)Gefahren zu vermeiden durch Abbilden der gleichen architektonischen Register, die in zwei oder mehr verschiedenen Befehlen spezifiziert sind, auf zwei oder mehr verschiedene physikalische Register, sodass die verschiedenen Befehle gleichzeitig ausgeführt werden können. Für mehr Details über Registerumbenennungstechniken wird der Leser auf die US-Patentanmeldung US 2008/114966 und das
US-Patent 7,590,826 der gleichen Inhaberin verwiesen.
-
Die Pipeline 100 mit geringer Leistungsfähigkeit und die Pipeline 850 mit hoher Leistungsfähigkeit sind auf eine Vielzahl von Weisen mikroarchitektonisch verschieden voneinander. Die mikroarchitektonischen Unterschiede können umfassen:
- a) Die Pipelines haben unterschiedliche Stufen. Zum Beispiel hat die Pipeline 850 mit hoher Leistungsfähigkeit eine Umbenennungsstufe 875, die in der Pipeline 800 mit geringer Leistungsfähigkeit nicht vorhanden ist.
- b) Die Pipelinestufen haben unterschiedliche Fähigkeiten. Zum Beispiel ist die Ausgabestufe 830 der Pipeline 100 mit geringer Leistungsfähigkeit nur in der Lage, eine einzige Ausgabe von Befehlen auszuführen, wohingegen die Sendestufe 880 der Pipeline 850 mit hoher Leistungsfähigkeit Befehle parallel ausgeben kann. Eine Parallelausgabe verbessert den Verarbeitungsdurchsatz der Pipeline und verbessert so die Leistungsfähigkeit.
- c) Die Pipelinestufen haben unterschiedliche Längen. Zum Beispiel kann die Decoderstufe 870 der Pipeleine 850 mit hoher Leistungsfähigkeit drei Unterstufen umfassen, wohingegen die Decoderstufe 820 der Pipeline 800 mit geringer Leistungsfähigkeit nur eine einzige Unterstufe umfassen kann. Je länger eine Pipelinestufe (desto größer die Anzahl von Unterstufen), desto größer ist die Anzahl von Befehlen, die gleichzeitig verarbeitet werden können und desto größer ist die Betriebsfrequenz, bei der die Pipeline arbeiten kann, was zu einem höheren Niveau an Leistungsfähigkeit führt.
- d) Eine verschiedene Anzahl von Ausführungspipelines (zum Beispiel hat die Pipeline 850 mit hoher Leistungsfähigkeit mehr Ausführungspipelines als die Pipeline 800 mit geringer Leistungsfähigkeit). Durch Bereitstellen von mehr Ausführungspipelines können mehr Befehle parallel verarbeitet werden und so wird die Leistungsfähigkeit erhöht.
- e) Bereitstellen von geordneter Ausführung (wie in Pipeline 800) oder ungeordneter Ausführung (wie in Pipeline 850). Wenn Befehle ungeordnet ausgeführt werden können, dann wird die Leistungsfähigkeit verbessert, da die Ausführung von Befehlen dynamisch eingeteilt werden kann, um eine Leistungsfähigkeit zu optimieren. Zum Beispiel müsste in der geordneten Pipeline 800 mit geringer Leistungsfähigkeit eine Reihe von MAC-Befehlen einer nach dem anderen von der MAC-Pipeline 842 ausgeführt werden, bevor ein späterer Befehl durch die Ganzzahlpipeline 840 oder die SIMD-/Floatpunkt-Pipeline 840 ausgeführt werden kann. Im Gegensatz dazu könnten in der Pipeline 850 mit hoher Leistungsfähigkeit dann die MAC-Befehle von der MAC-Pipeline 894 ausgeführt werden, während (abhängig von irgendwelchen Datengefahren, die nicht durch Umbenennen aufgelöst werden können) ein späterer Befehl, der eine andere Ausführungspipeline 890, 892, 896, 898 verwendet, parallel zu den MAC-Befehlen ausgeführt werden kann. Dies bedeutet, dass eine ungeordnete Ausführung eine Verarbeitungsleistungsfähigkeit verbessern kann.
-
Diese und andere Beispiele von mikroarchitektonischen Unterschieden führt dazu, dass die Pipeline 850 eine Verarbeitung mit höherer Leistungsfähigkeit bereitstellt als die Pipeline 800. Auf der anderen Seite führen die mikroarchitektonischen Unterschiede auch dazu, dass die Pipeline 850 mehr Energie verbraucht als die Pipeline 800. Daher ermöglicht das Vorsehen mikroarchitektonisch unterschiedlicher Pipelines 800, 850, dass die Verarbeitung der Arbeitslast entweder für eine hohe Leistungsfähigkeit (durch Verwenden eines „großen” Verarbeitungsschaltkreises 10 mit der Pipeline 850 mit hoher Leistungsfähigkeit) oder für Energieeffizienz (durch Verwenden eines „kleinen” Verarbeitungsschaltkreises 50 mit der Pipeline 800 mit geringer Leistungsfähigkeit) optimiert werden kann.
-
9 zeigt einen Graphen, der die Änderung in dem Energieverbrauch des Datenverarbeitungssystems darstellt, wenn die Bearbeitung der Arbeitslast 100 zwischen dem großen Verarbeitungsschaltkreis 10 und dem kleinen Verarbeitungsschaltkreis 50 geschaltet wird.
-
An Punkt A aus 9 wird die Arbeitslast 100 auf dem kleinen Verarbeitungsschaltkreis 50 bearbeitet und so ist der Energieverbrauch gering. An Punkt B tritt ein Übertragungsauslöseimpuls auf, der anzeigt, dass eine Verarbeitung mit hoher Intensität ausgeführt werden soll und so wird die Ausführung der Arbeitslast an den großen Verarbeitungsschaltkreis 10 übergeben. Der Energieverbrauch steigt dann und verbleibt hoch bei Punkt C, während der große Verarbeitungsschaltkreis 10 die Arbeitslast bearbeitet. An Schritt D wird angenommen, dass beide großen Kerne in Kombination arbeiten, um die Arbeitslast zu bearbeiten. Wenn jedoch die Leistungsanforderungen unter ein Niveau fallen, bei dem die Arbeitslast von nur einem der großen Kerne gehandhabt werden kann, dann wird die Arbeitslast auf nur einen der großen Kerne umgezogen und der andere wird ausgeschaltet, wie durch den Abfall der Energie auf das Niveau neben Punkt E gezeigt. Jedoch tritt bei Punkt E ein weiterer Übertragungsauslöseimpuls auf (der anzeigt, dass eine Rückkehr zu einer Verarbeitung mit geringer Intensität gewünscht ist), um eine Übertragung der Ausführung der Arbeitslast zurück zu dem kleinen Verarbeitungsschaltkreis 50 anzustoßen.
-
Wenn der kleine Verarbeitungsschaltkreis 50 die Ausführung der zu bearbeitenden Arbeitslast beginnt, ist der meiste Teil des großen Verarbeitungsschaltkreises in dem Energiesparzustand, jedoch verbleibt der Cache des großen Verarbeitungsschaltkreises 10 während des Überwachungszeitraums (Punkt F in 9) eingeschaltet, um es zu ermöglichen, die Daten in dem Cache für den kleinen Verarbeitungsschaltkreis 50 aufzurufen. Daher verursacht der Cache des großen Verarbeitungsschaltkreises 10, dass der Energieverbrauch an Punkt F höher ist als an Punkt A, zu dem nur der kleine Verarbeitungsschaltkreis 50 betrieben wurde. Am Ende des Beobachtungszeitraums wird der Cache des großen Verarbeitungsschaltkreises 10 ausgeschaltet und an Punkt G kehrt der Energieverbrauch auf das niedrige Niveau zurück, wenn nur der kleine Verarbeitungsschaltkreis 50 aktiv ist.
-
Wie oben erwähnt ist in 9 während des Beobachtungszeitraums an Punkt F der Energieverbrauch höher als an Punkt G aufgrund dessen, dass der Cache des großen Verarbeitungsschaltkreises 10 während des Beobachtungszeitraums eingeschaltet ist. Obwohl dieser Anstieg in dem Energieverbrauch nur gezeigt ist nach Übertragen von Groß zu Klein, könnte auch ein Beobachtungszeitraum nach der Klein-zu-Groß-Übertragung vorhanden sein, während der die Daten in dem Cache des kleinen Verarbeitungsschaltkreises 50 im Namen des großen Verarbeitungsschaltkreises 10 von der Beobachtungssteuereinheit 75 beobachtet werden können. Der Beobachtungszeitraum für die Klein-zu-Groß-Übertragung ist in 9 nicht bezeichnet, da die von dem Anlassen des Cache des kleinen Verarbeitungsschaltkreises 50 verbrauchte Energie während des Beobachtungszeitraums unbedeutend ist im Vergleich mit der Energie, die von dem großen Verarbeitungsschaltkreis 10 verbrauch wird, wenn er die zu bearbeitende Arbeitslast ausführt, und so ist der sehr kleine Anstieg im Energieverbrauch aufgrund dessen, dass der Cache des kleinen Verarbeitungsschaltkreises 50 eingeschaltet ist, in dem Graph aus 9 nicht sichtbar.
-
Die oben beschriebenen Ausführungsformen beschreiben ein System, das zwei oder mehr architektonisch kompatible Prozessorinstanzen enthält, deren Mikroarchitekturen für Energieeffizienz oder Leistungsfähigkeit optimiert sind. Der architektonische Zustand, der von dem Betriebssystem und Anwendungen benötigt wird, kann zwischen den Prozessorinstanzen in Abhängigkeit von der erforderlichen Leistungsfähigkeit/dem erforderlichen Energieniveau geschaltet werden, um es zu ermöglichen, die gesamte Arbeitslast zwischen den Prozessorinstanzen zu schalten. In einer Ausführungsform läuft zu irgendeiner gegebenen Zeit auf nur einer der Prozessorinstanzen die Arbeitslast, wobei die andere Verarbeitungsinstanz in einem Energiesparzustand ist oder in dem Prozess des Eintretens/Verlassens des Energiesparzustands.
-
In einer Ausführungsform können die Prozessorinstanzen so eingerichtet sein, dass sie hardwarecachekohärent miteinander sind, sodass die mit einem Schalten des architektonischen Zustands von dem Quellprozessor zu dem Zielprozessor verbundene Zeitdauer, Energie und Hardwarekomplexität reduziert wird. Dies reduziert die Zeit, um den Schaltvorgang auszuführen, was die Gelegenheiten vermehrt, in denen die Techniken von Ausführungsformen verwendet werden können.
-
Solche Systeme können in einer Mehrzahl von Situationen verwendet werden, in denen Energieeffizienz wichtig ist entweder für eine Batterielebensdauer oder ein thermisches Management und die Spreizung der Leistungsfähigkeit so ist, dass ein energieeffizienterer Prozessor für Arbeitslasten mit geringer Verarbeitung verwendet werden kann, während ein Prozessor mit hoher Leistungsfähigkeit für Arbeitslasten mit hoher Verarbeitung verwendet werden kann.
-
Da die zwei oder mehr Verarbeitungsinstanzen architektonisch kompatibel sind, ist aus einer Anwendungsperspektive der einzige Unterschied zwischen den zwei Prozessoren die verfügbare Leistung. Durch Techniken aus einer Ausführungsform kann der gesamte benötigte architektonische Zustand zwischen den Prozessoren bewegt werden, ohne dass es erforderlich ist, das Betriebssystem einzubinden, sodass es dann für das Betriebssystem und für die auf dem Betriebssystem betriebenen Anwendungen transparent ist, auf welchem Prozessor das Betriebssystem und die Anwendungen laufen.
-
Wenn architektonisch kompatible Prozessorinstanzen wie in den oben beschriebenen Ausführungsformen verwendet werden, kann die Gesamtmenge an architektonischem Zustand, die übertragen werden muss, leicht in einen Datencache passen und da moderne Verarbeitungssysteme oft Cachekohärenz implementieren, kann dann der Zielprozessor durch Speichern des zu schaltenden architektonischen Zustands in dem Datencache schnell diesen Zustand auf eine energieeffiziente Weise beobachten, wobei er die existierenden Schaltkreisstrukturen nutzt.
-
In einer beschriebenen Ausführungsform wird der Schaltmechanismus verwendet, um sicherzustellen, dass thermische Grenzen für das Datenverarbeitungssystem nicht gebrochen werden. Insbesondere wenn die thermischen Grenzen dabei sind, erreicht zu werden, kann die gesamte Arbeitslast auf eine energieeffizientere Prozessorinstanz geschaltet werden, was es dem Gesamtsystem ermöglicht, abzukühlen, während eine fortgesetzte Programmausführung erfolgt, jedoch bei einem geringeren Durchsatz.
-
Obwohl eine bestimmte Ausführungsform hierin beschrieben wurde, ist es offensichtlich, dass die Erfindung nicht darauf beschränkt ist und dass viele Modifikationen und Hinzufügungen dazu innerhalb des Schutzbereichs der Erfindung ausgeführt werden können. Zum Beispiel könnten verschiedene Kombinationen von Merkmalen der folgenden abhängigen Ansprüche mit den Merkmalen der unabhängigen Ansprüche erfolgen, ohne von dem Schutzbereich der vorliegenden Erfindung abzuweichen.
-
ZITATE ENTHALTEN IN DER BESCHREIBUNG
-
Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
-
Zitierte Patentliteratur
-
-
Zitierte Nicht-Patentliteratur
-
- Artikel „Towards Better Performance Per Watt in Virtual Environments on Asymmetric Single-ISA Multi-Core Systems” von V. Kumar et al., ACM SIGOPS Operating Systems Review, Band 43, Ausgabe 3 (Juli 2009) [0004]
- Artikel „Single-ISA Heterogeneous Multi-Core Architectures: The Potential for Processor Power Reduction” von R. Kumar et al., Proceedings of the 36th International Symposium of Microarchitecture (MICRO-36'03) [0005]