DE112011105590T5 - Energieeffiziente Prozessorarchitektur - Google Patents
Energieeffiziente Prozessorarchitektur Download PDFInfo
- Publication number
- DE112011105590T5 DE112011105590T5 DE112011105590.0T DE112011105590T DE112011105590T5 DE 112011105590 T5 DE112011105590 T5 DE 112011105590T5 DE 112011105590 T DE112011105590 T DE 112011105590T DE 112011105590 T5 DE112011105590 T5 DE 112011105590T5
- Authority
- DE
- Germany
- Prior art keywords
- core
- cores
- interrupt
- small
- logic
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/3293—Power saving characterised by the action undertaken by switching to a less power-consuming processor, e.g. sub-CPU
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3206—Monitoring of events, devices or parameters that trigger a change in power modality
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/3287—Power saving characterised by the action undertaken by switching off individual functional units in the computer system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/084—Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/24—Handling requests for interconnection or transfer for access to input/output bus using interrupt
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4418—Suspend and resume; Hibernate and awake
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5094—Allocation of resources, e.g. of the central processing unit [CPU] where the allocation takes into account power or heat criteria
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W52/00—Power management, e.g. TPC [Transmission Power Control], power saving or power classes
- H04W52/02—Power saving arrangements
- H04W52/0209—Power saving arrangements in terminal devices
- H04W52/0261—Power saving arrangements in terminal devices managing power supply demand, e.g. depending on battery level
- H04W52/0274—Power saving arrangements in terminal devices managing power supply demand, e.g. depending on battery level by switching on or off the equipment or parts thereof
- H04W52/028—Power saving arrangements in terminal devices managing power supply demand, e.g. depending on battery level by switching on or off the equipment or parts thereof switching on or off only a part of the equipment circuit blocks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W88/00—Devices specially adapted for wireless communication networks, e.g. terminals, base stations or access point devices
- H04W88/02—Terminal devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1028—Power efficiency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/62—Details of cache specific to multiprocessor cache arrangements
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02B—CLIMATE CHANGE MITIGATION TECHNOLOGIES RELATED TO BUILDINGS, e.g. HOUSING, HOUSE APPLIANCES OR RELATED END-USER APPLICATIONS
- Y02B70/00—Technologies for an efficient end-user side electric power management and consumption
- Y02B70/30—Systems integrating technologies related to power network operation and communication or information technologies for improving the carbon footprint of the management of residential or tertiary loads, i.e. smart grids as climate change mitigation technology in the buildings sector, including also the last stages of power distribution and the control, monitoring or operating management systems at local level
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/70—Reducing energy consumption in communication networks in wireless communication networks
Abstract
Description
- Hintergrund
- Gewöhnlich verwendet ein Prozessor wenn möglich einen energiesparenden Ruhemodus wie beispielsweise nach einem Advanced Configuration and Power Interface-(ACPI)-Standard (z. B. Rev. 3.0b, veröffentlicht am 10. Oktober 2006). Diese sogenannten C-Zustands-Kern-Energiesparzustände (ACPI-C-Zustände) können zusätzlich zu Spannungs- und Frequenzskalierung (DVFS- oder ACPI-Leistungszustand (P-Zustände)) Energie sparen, wenn ein Kern untätig oder nicht ausgelastet ist. Jedoch selbst im Zusammenhang mit einem Mehrkernprozessor wird ein Kern häufig aus einem effizienten Schlafzustand aufgeweckt, um eine relativ einfache Operation auszuführen, und er wird dann wieder in den Schlafzustand versetzt. Diese Operation kann die Energieeffizienz nachteilig beeinflussen, da es einen Aufwand an Latenzzeit als auch beim Energieverbrauch gibt, um Energiesparzustände zu verlassen und in diese zurückzukehren. Während des Zustandsübergangs kann Energie in einigen Arten von Prozessoren verbraucht werden, ohne dass nutzvolle Arbeit verrichtet wurde und zum Nachteil der Energieeffizienz.
- Beispiele von Operationen, die nach dem Verlassen eines Energiesparzustandes zu behandeln sind, schließen Tastatureingaben, Zeitgeber-Interrupts, Netzwerk-Interrupts und so weiter ein. Um diese Operationen in einer energiesensitiven Weise zu behandeln, ändern gegenwärtige Betriebssysteme (OSS) das Programmverhalten, indem sie größere Datenmengen auf einmal verarbeiten oder zu einem Tickless-OS übergehen, bei dem es keine periodischen Zeitgeber-Interrupts und nur sporadisch programmierte gibt. Eine andere Strategie ist, eine Zeitgebervereinigung zu verwenden, bei der vielfache Interrupts gruppiert und zur gleichen Zeit behandelt werden. Aber zusätzlich zum Ändern eines Verhaltens eines Programms erhöhen alle diese Möglichkeiten die Komplexität und können immer noch zu einem energieineffizienten Betrieb führen. Weiter können einige Arten von Software (z. B. Medienwiedergabe) Versuche unternehmen, die Hardwareenergieeffizienz-Mechanismen zunichte zu machen, indem sie unabhängig davon, wie viel Arbeit verrichtet werden muss, häufige periodische Weckvorgänge anfordern. Deshalb können die Tickless-/Zeitgebervereinigungsstrategien durch das Reduzieren unnötiger Weckvorgänge aus tiefen C-Zuständen etwas Energie sparen, aber sie erfordern invasive Änderungen am OS und können eine signifikante Zeitdauer in Anspruch nehmen, um durch ein Computerökosystem zu propagieren, da diese Änderungen nicht implementiert werden, bis eine neue Version eines Betriebssystems herausgegeben wird.
- Kurze Beschreibung der Zeichnungen
-
1 ist ein Blockdiagramm eines Prozessors gemäß einer Ausführungsform der vorliegenden Erfindung. -
2 ist ein Blockdiagramm eines Prozessors gemäß einer weiteren Ausführungsform der vorliegenden Erfindung. -
3 ist ein Ablaufdiagramm von Wiedaufnahme-Fluss-Optionen zwischen Kernen gemäß einer Ausführungsform der vorliegenden Erfindung. -
4 ist ein Ablaufdiagramm eines Verfahrens gemäß einer Ausführungsform der vorliegenden Erfindung. -
5 ist ein Ablaufdiagramm eines Verfahrens zur Übertragung des Ausführungsstandes gemäß einer Ausführungsform der vorliegenden Erfindung. -
6 ist ein Blockdiagramm eines Prozessors gemäß noch einer weiteren Ausführungsform der vorliegenden Erfindung. -
7 ist ein Blockdiagramm eines Prozessors gemäß noch einer weiteren Ausführungsform der vorliegenden Erfindung. -
8 ist ein Blockdiagramm eines Prozessors gemäß noch einer weiteren Ausführungsform der vorliegenden Erfindung. -
9 ist ein Zeitdiagramm gemäß einer Ausführungsform der vorliegenden Erfindung. -
10 ist eine grafische Darstellung von Energiesparmodi gemäß einer Ausführungsform der vorliegenden Erfindung. -
11 ist ein Blockdiagramm eines Systems gemäß einer Ausführungsform der vorliegenden Erfindung. - Ausführliche Beschreibung
- Bei verschiedenen Ausführungsformen kann der durchschnittliche Energieverbrauch in einer heterogenen Prozessor-Umgebung reduziert sein. Diese heterogene Umgebung kann große schnelle Kerne und kleinere energieeffizientere Kerne einschließen, die aus System- und Energieeffizienzgründen kombiniert werden. Weiter können Ausführungsformen diese Energiesteuerung auf eine Weise bereitstellen, die für ein OS transparent ist, das auf dem Prozessor ausführt. Der Umfang der vorliegenden Erfindung ist jedoch nicht auf heterogene Umgebungen beschränkt und kann auch in homogenen Umgebungen (von einer OS-transparenten, aber nicht zwangsläufig hardwareheterogenen Perspektive aus) verwendet werden, um die durchschnittliche Energie zu reduzieren (z. B. so viele Kerne in einer Mehrprozessor-Umgebung schlafend zu halten wie möglich). Ausführungsformen können speziell bei hardwarebeschleunigten Umgebungen wie auf Tablet-Computer basierenden und System-On-Chip-(SoC)-Architekturen geeignet sein, bei denen die Kerne häufig schlafen.
- Im Allgemeinen können Ausführungsformen eine Energiesteuerung durch das Lenken aller Wecksignale zu einem kleineren Kern anstatt eines größeren Kerns bereitstellen. Auf diese Weise ist es möglich, die durchschnittliche Energie mehr als zweimal zu reduzieren, wenn das System 95% untätig ist. Wie es in vielen Ausführungsformen beschrieben wird, kann dieser kleinere Kern vom OS abgesondert werden. D. h., das Vorhandensein dieses kleineren Kerns ist dem OS unbekannt, und dieser Kern ist daher für das OS unsichtbar. Als solches können Ausführungsformen für einen energieeffizienten Prozessor-Betrieb über Rechner-Hardware auf eine Weise sorgen, die für das OS und die Anwendungen, die auf dem Prozessor ausführen, transparent ist.
- Mit Bezug auf
1 wird ein Blockdiagramm eines Prozessors gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie ersichtlich in1 , kann Prozessor100 ein heterogener Prozessor sein, der eine Anzahl von großen Kernen, kleinen Kernen und Beschleunigern aufweist. Obwohl Ausführungsformen hier im Zusammenhang eines Mehrkernprozessors beschrieben sind, sei klargestellt, dass diese in dieser Hinsicht nicht eingeschränkt sind und in Implementierungen innerhalb eines SoC oder anderen Halbleiter basierten Verarbeitungsgeräten vorhanden sein können. Zu beachten ist, dass die Beschleuniger basierend auf einer Warteschlange an zugeführter Arbeit, ungeachtet dessen, ob die Prozessorkerne hochgefahren sind oder nicht, Arbeit verrichten können. Bei der Ausführungsform von1 schließt Prozessor100 eine Vielzahl von großen Kernen ein. Bei der speziell gezeigten Ausführungsform sind zwei solche Kerne110a und110b (generell große Kerne110 ) gezeigt, obwohl es selbstverständlich ist, dass mehr als zwei solche großen Kerne bereitgestellt sein können. Bei verschiedenen Implementierungen können diese großen Kerne Out-of-Order-Prozessoren sein, die eine relativ komplexe Pipeline-Architektur aufweisen und gemäß einer Complex Instruction Set Computing-(Computer mit komplexem Befehlssatz; CISC)-Architektur arbeiten. - Außerdem schließt Prozessor
100 weiter eine Vielzahl von kleinen Kernen120a –120n (generell kleine Kerne120 ) ein. Obwohl 8 solcher Kerne in der Ausführungsform von1 gezeigt sind, ist es selbstverständlich, dass der Umfang der vorliegenden Erfindung in dieser Hinsicht nicht eingeschränkt ist. Bei verschiedenen Ausführungsformen können die kleinen Kerne120 energieeffiziente In-Order-Prozessoren sein, um beispielsweise Befehle gemäß einer CISC- oder Reduced Instruction Set Computing-(RISC)-Architektur auszuführen. Bei einigen Implementierungen können zwei oder mehr dieser Kerne in Reihe zusammengekoppelt sein, um eine damit verbundene Verarbeitung auszuführen, z. B. können dann ein oder mehrere kleinere Kerne aktiv sein, um Arbeit auszuführen, die andernfalls die großen Kerne aufwecken würde, wenn mehrere große Kerne sich in Energiesparmoduszuständen befinden. Bei vielen Ausführungsformen können die kleinen Kerne120 für ein OS transparent sein, obwohl bei anderen Ausführungsformen die kleinen und großen Kerne dem OS gegenüber offengelegt sein können, wobei Konfigurationsoptionen verfügbar sind. Im Allgemeinen kann in unterschiedlichen Ausführungsformen jeder Kernmix zwischen großen und kleinen Kernen verwendet werden. Beispielsweise kann ein einzelner kleiner Kern pro großem Kern bereitgestellt werden, oder bei anderen Ausführungsformen kann ein einzelner kleiner Kern mit mehreren großen Kernen verbunden sein. - Wie hierin verwendet kann der Begriff „großer Kern” ein Prozessorkern sein, der ein relativ komplexes Design aufweist und verglichen mit einem „kleinen Kern”, der ein weniger komplexes Design aufweist und einen entsprechend kleineren Betrag an nutzbarer Chipfläche verbraucht, eine relativ große Menge an nutzbarer Chipfläche verbraucht. Außerdem sind die kleineren Kerne energieeffizienter als die größeren Kerne, da sie eine kleinere Thermal Design Power (thermische Auslegungsleistung; TDP) aufweisen können als die größeren Kerne. Es sei jedoch klargestellt, dass die kleineren Kerne verglichen mit den großen Kernen in ihren Verarbeitungsfähigkeiten begrenzt sein können. Beispielsweise können diese kleineren Kerne nicht alle Operationen behandeln, die in den großen Kernen möglich sind. Zudem ist es möglich, dass die kleineren Kerne bei der Befehlsverarbeitung weniger effizient sein können. D. h., Befehle können schneller in den großen Kernen ausgeführt werden als in den kleinen Kernen.
- Wie weiter gezeigt können sowohl große Kerne
110 als auch kleine Kerne120 zu einer Kopplungsstruktur130 gekoppelt sein. Unterschiedliche Implementierungen dieser Kopplungsstruktur können in unterschiedlichen Ausführungsformen realisiert sein. Beispielsweise kann bei einigen Ausführungsformen die Kopplungsstruktur gemäß einer Frontside-Bus-(FSB)-Architektur oder eines Intel® Quick Path Interconnect-(QPI)-Protokolls vorgesehen sein. Bei anderen Ausführungsformen kann die Kopplungsstruktur gemäß einer gegebenen Systemstruktur vorgesehen sein. - Weiter bezugnehmend auf
1 können die vielfachen Beschleuniger140a –140c auch mit der Kopplungsstruktur130 gekoppelt sein. Obwohl der Umfang der vorliegenden Erfindung in dieser Hinsicht in keiner Weise eingeschränkt ist, können die Beschleuniger Medienprozessoren wie beispielsweise Audio- und/oder Video-Prozessoren, kryptografische Prozessoren, feste Funktionseinheiten und so weiter einschließen. Diese Beschleuniger können von den gleichen Entwicklern konzipiert sein, die die Kerne konzipierten oder sie können Blöcke von unabhängigem geistigen Eigentum (IP) sein, die in den Prozessor eingebunden sind. Im Allgemeinen können zugehörige Verarbeitungsaufgaben, ob in Hinsicht auf Leistungs- oder Energieverbrauch, in diesen Beschleunigern wirksamer ausgeführt werden, als sie auf den großen Kernen oder auf den kleinen Kernen ausgeführt werden können. Obwohl diese bestimmte Implementierung in der Ausführungsform von1 gezeigt wird, ist der Umfang der vorliegenden Erfindung jedoch in dieser Hinsicht in keiner Weise einzuschränken. Anstatt nur zwei Arten von Kernen, das heißt einen großen Kern und einen kleinen Kern, aufzuweisen, können andere Ausführungsformen beispielsweise vielfache Hierarchien von Kernen, einschließlich wenigstens eines großen Kernes, eines mittleren Kerns und eines kleinen Kerns aufweisen, wobei der mittlere Kern eine größere nutzbare Chipfläche aufweist als der kleine Kern, aber eine kleinere nutzbare Chipfläche als der große Kern und einen entsprechenden Energieverbrauch zwischen dem des großen Kerns und dem des kleinen Kerns. Bei noch weiteren Ausführungsformen kann der kleine Kern innerhalb eines größeren Kernes eingebettet sein, wie z. B. als ein Teilsatz der Logik und Strukturen des größeren Kerns. - Während die Ausführungsform von
1 einschließlich vielfacher großer Kerne und vielfacher kleiner Kerne gezeigt ist, ist es möglich, dass bei bestimmten Implementierungen, wie beispielsweise einem mobilen Prozessor oder SoC, nur ein einzelner großer Kern und ein einzelner kleiner Kern bereitgestellt sein können. Speziell unter Bezugnahme auf2 ist ein Blockdiagramm eines Prozessors gemäß einer weiteren Ausführungsform der vorliegenden Erfindung gezeigt, bei der Prozessor100' einen einzelnen großen Kern110 und einen einzelnen kleinen Kern120 einschließt zusammen mit der Kopplungsstruktur130 und dem Beschleuniger140a –c. Wie angegeben kann diese Implementierung für mobile Anwendungen geeignet sein. - Hier einige Energiezahlen als Beispiel. Bei einem typischen großen Kern kann der Energieverbrauch etwa 6000 Milliwatt (mW) betragen, während bei einem mittleren Kern der Energieverbrauch etwa 500 mW betragen kann und bei einem sehr kleinen Kern kann der Energieverbrauch etwa 15 mW betragen. Bei einer Implementierung, die das Aufwecken des großen Kerns vermeidet, können signifikante Energievorteile erreicht werden.
- Ausführungsformen ermöglichen den größeren, weniger energieeffizienten Kernen, länger in Niedrigenergie-Schlafzuständen zu verbleiben, als sie es sonst könnten. Durch das Lenken von Interrupts und anderen Kern-Weckereignissen zu den kleineren Kernen anstatt zu den größeren Kernen können die kleineren Kerne länger laufen und öfter geweckt werden, aber um eine alltägliche Task, wie beispielsweise eine Datenbewegung auszuführen, ist dies immer noch energieeffizienter als das Aufwecken eines großen Kerns. Es ist zu beachten, dass bei einigen Operationen wie nachfolgend beschrieben der große Kern für die Ausführung eingeschaltet sein kann, während beispielsweise kleinere Kerne Vektoroperationen (z. B. AVX-Operationen), komplexe Adressierungsarten oder Fließkomma-(FP)-Operationen nicht unterstützen könnten. In diesen Fällen könnte ein Wecksignal vom kleinen Kern zum großen Kern umgeleitet werden.
- Zum Beispiel treten während des Ausführens einer hardwarebeschleunigten 1080p-Videowiedergabe bei einem Prozessor mehr als 1000 Übergänge in und aus dem C6-Kernzustand und nahezu 1200 Interrupts je Sekunde auf. Wenn auch nur ein Teil dieser Weckereignisse unter Verwendung einer Ausführungsform der vorliegenden Erfindung zu einem kleineren Kern umgelenkt wird, können signifikante Energieeinsparungen erzielt werden.
-
3 fasst Wiederaufnahme-Flussoptionen zwischen Kernen gemäß einer Ausführungsform der vorliegenden Erfindung zusammen. Wie ersichtlich in3 ist eine Software-Domain210 und eine Hardware-Domain220 vorhanden. Im Allgemeinen entspricht die Software-Domain210 OS-Operationen in Bezug auf das Power-Management, wie z. B. gemäß einer ACPI-Implementierung. Im Allgemeinen kann das OS basierend auf seiner Kenntnis von aufkommenden Tasks gemäß seinem Planungsmechanismus einen von mehreren C-Zuständen auswählen, um den Prozessor anzufordern, in einen Energiesparmodus einzutreten. Beispielsweise kann ein OS einen MWAIT-Aufruf ausgeben, welcher einen speziellen Niedrigenergiezustand einschließt, der angefordert wird. - Im Allgemeinen entspricht C0 einem normalen Betriebszustand, bei dem Befehle ausgeführt werden, während die Zustände C1–C3 niedrige OS-Energiezustände sind, wobei jeder ein unterschiedliches Niveau an Energiesparmodi und ein entsprechend unterschiedliches Niveau an Latenzzeit aufweist, um zum C0-Zustand zurückzukehren. Wie gesehen kann abhängig von einer erwarteten Arbeitslast des Prozessors das OS einen Nicht-Ruhezustand auswählen, wie z. B. OS C0 oder einen von vielfachen Ruhezuständen, wie z. B. die OS-C-Zustände C1–C3. Jeder dieser Ruhezustände kann einem entsprechenden Hardware-Energiesparzustand zugeordnet sein, der unter der Kontrolle der Prozessor-Hardware steht. Deshalb kann die Prozessor-Hardware einen gegebenen OS-C-Zustand einem entsprechenden Hardware-C-Zustand zuordnen, der für größere Energieeinsparungen sorgen kann als die durch das OS diktierten. Im Allgemeinen sparen leichtere C-Zustände (z. B. C1) weniger Energie, weisen aber niedrigere Wiederaufnahmezeiten als tiefere C-Zustände (z. B. C3) auf. Bei verschiedenen Ausführungsformen kann die Hardware-Domain
220 und die Zuordnung von OS-C-Zuständen zu Prozessor-C-Zuständen durch eine Power Control Unit (PCU) des Prozessors ausgeführt werden, obwohl der Umfang der vorliegenden Erfindung in dieser Hinsicht in keiner Weise eingeschränkt ist. Diese Zuordnung kann auf einer vorausgehenden Historie von OS-basierten Power-Management-Anforderungen basieren. Außerdem kann die Entscheidung auf einem Status des Gesamtsystems, auf Konfigurationsinformationen und so weiter basieren. - Außerdem kann die PCU oder eine andere Prozessor-Logik konfiguriert sein, alle Weckereignisse zu einem kleinsten verfügbaren Kern zu leiten (der bei verschiedenen Ausführungsformen ein für das OS unsichtbarer Kern sein kann). Wie ersichtlich in
3 nimmt beim Ausstieg aus einem gegebenen hardwarebasierten Ruhezustand die Steuerung direkt beim kleinsten verfügbaren Kern wieder auf, sodass der Zustand zu diesem kleinsten Kern übertragen wird. Im Gegensatz dazu kehrt bei einer konventionellen Hardware-/Software-Wiederaufnahme die Steuerung nur zum großen Kern zurück. Generell wählt ein OS einen C-Zustand basierend auf der erwarteten Leerlaufzeit und den Wiederaufnahme-Latenzzeitanforderungen aus, die die Architektur zu einem Hardware-C-Zustand zuordnet. Deshalb werden wie gesehen in der Ausführungsform von3 alle Wiederaufnahmesignale (wie beispielsweise Interrupts) zum kleinsten verfügbaren Kern geroutet, der bestimmt, ob er die Wiederaufnahmeoperation behandeln kann oder ob er stattdessen ein Wecksignal an einen größeren Kern senden muss, um fortzufahren. Zu beachten ist, dass Ausführungsformen keine automatischen Herabstufungen von vorhandenen P-Zuständen oder C-Zuständen beeinflussen, bei denen die Hardware einen Hardware-C-Zustand mit niedriger Wiederaufnahme-Latenzzeit automatisch basierend auf der gemessenen experimentellen Effizienz auswählt. Zu beachten ist, dass es auch möglich ist, dass die PCU oder eine andere programmierbare Entität eingehende Weckereignisse prüfen kann, um zu bestimmen, zu welchem Kern (groß oder klein) sie geroutet werden sollen. - Wie oben beschrieben kann bei einigen Implementierungen der kleine Kern selbst vor dem OS und der Anwendungssoftware verborgen sein. Beispielsweise kann ein Kernpaar aus kleinem und großem Kern abstrahiert und vor Anwendungssoftware verborgen sein. In einem Energiesparzustand können alle Kerne schlafen, während ein Beschleuniger (wie beispielsweise ein Videodecodierungsbeschleuniger) eine gegebene Task wie beispielsweise eine Decodierungstask ausführt. Wenn der Beschleuniger keine Daten mehr hat, weist er ein Wecksignal an, um zusätzliche Daten anzufordern, die vom kleinen Kern stammen können, der aufwacht und bestimmt, dass diese einfache Daten-Transferoperation erzielt werden kann, ohne den großen Kern aufzuwecken, wodurch Energie eingespart wird. Wenn ein Zeitgeber-Interrupt eintrifft und der kleine Kern aufwacht und stattdessen erkennt, dass eine komplexe Vektoroperation (wie ein 256-Bit-AVX-Befehl) im Befehlsstrom existiert, kann der große Kern aufgeweckt werden, um den komplexen Befehl (und andere Befehle in diesem Strom) zu behandeln und eine reduzierte Latenzzeit zu ermöglichen. Bei einer alternativen Implementierung kann ein globaler Hardwarebeobachtungsmechanismus, der sich in der PCU oder an einer anderen Stelle des Nichtkerns in der Nähe der PCU befinden oder als ein separater Abschnitt der Hardware-Logik auf der globalen Kopplungsstruktur oder als eine Hinzufügung zur internen Steuerlogik des kleinen Kerns vorhanden sein kann, erkennen, dass der kleine Kern auf den AVX-Befehl stößt und einen Fehler bezüglich eines nicht definierten Befehls generieren könnte, welcher eine Abschaltung des kleinen Kerns bewirken könnte, und den Befehlsstrom zum größeren Kern nach dessen Aufwecken weiterleiten. Zu beachten ist, dass dieses Verhalten sich über Befehle hinaus auf eine Konfiguration oder Merkmale erstrecken kann. Wenn der kleine Kern auf einen Schreibvorgang in einen Konfigurationsraum stößt, der nur auf dem großen Kern existiert, kann er beispielsweise ein Wecken des großen Kerns anfordern.
- Bezugnehmend auf
4 ist ein Ablaufdiagramm eines Verfahrens gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Zu beachten ist, dass das Verfahren von4 abhängig von einer gegebenen Implementierung von verschiedenen Agenten ausgeführt werden kann. Beispielsweise kann bei einigen Ausführungsformen das Verfahren300 teilweise durch die Systemagentschaltung innerhalb eines Prozessors wie einer Power Control Unit implementiert sein, die in einem Systemagenten oder Teil eines Nichtkerns eines Prozessors vorhanden sein kann. Bei anderen Ausführungsformen kann Verfahren300 teilweise durch die Kopplungsstrukturlogik, wie beispielsweise die Energiesteuerungslogik innerhalb einer Kopplungsstruktur, implementiert sein, die Interrupts beispielsweise von Beschleunigern, die mit der Kopplungsstruktur gekoppelt sind, empfängt und die Interrupts an eine ausgewählte Stelle weiterleitet. - Wie ersichtlich in
4 kann das Verfahren300 damit beginnen, sowohl große als auch kleine Kerne in einen Schlafzustand zu versetzen (Block310 ). D. h., es wird angenommen, dass keine aktiven Operationen in den Kernen ausgeführt werden. Als solches können sie in einen ausgewählten Energiesparzustand versetzt werden, um den Energieverbrauch zu reduzieren. Obwohl die Kerne nicht aktiv sein könnten, können andere Agenten innerhalb eines Prozessors oder SoC wie ein oder mehrere Beschleuniger Tasks ausführen. Bei Block320 kann ein Interrupt von solch einem Beschleuniger empfangen werden. Dieser Interrupt kann gesendet werden, wenn der Beschleuniger eine Task abgeschlossen hat, auf einen Fehler gestoßen ist, oder wenn der Beschleuniger zusätzliche Daten benötigt oder eine weitere Verarbeitung durch eine andere Komponente, wie beispielsweise einen gegebenen Kern, auszuführen ist. Die Steuerung geht als nächstes zu Block330 über, wo die Logik ein Wiederaufnahmesignal direkt an den kleinen Kern senden kann. D. h., die Logik kann programmiert werden, immer ein Wiederaufnahmesignal an den kleinen Kern zu senden (oder einen ausgewählten Kern von mehreren solcher kleiner Kerne, abhängig von der Systemimplementierung), wenn sich sowohl große als auch kleine Kerne in einem Energiesparzustand befinden. Indem Interrupts direkt und immer an den kleinen Kern gesendet werden, kann ein größerer Energieverbrauch durch den großen Kern für die vielen Instanzen von Interrupts vermieden werden, für die der kleine Kern die angeforderte Operation behandeln kann. Zu beachten ist, dass bestimmte Arten von Filterungs- oder Zwischenspeicherungsmechanismen zum Block330 hinzugefügt werden können, sodass bestimmte Interruptquellen immer wie gewünscht zu dem einen oder anderen Kern geroutet werden, um die Leistung und Energie auszubalancieren. - Unter anhaltender Bezugnahme auf
4 geht die Steuerung als Nächstes zu Raute340 über, wo bestimmt werden kann, ob der kleine Kern eine mit dem Interrupt verbundene Anforderung behandeln kann. Obwohl der Umfang der vorliegenden Erfindung in dieser Hinsicht in keiner Weise eingeschränkt ist, kann bei einigen Ausführungsformen diese Bestimmung im kleinen Kern selbst erfolgen, nachdem er aufgewacht ist. Oder die Logik, die das Verfahren von4 ausführt, kann die Bestimmung durchführen (und in diesem Fall ist es möglich, dass diese Analyse vor dem Senden des Wiederaufnahmesignals zum kleinen Kern erfolgen kann). - Als Beispiel kann der kleine Kern bestimmen, ob er die angeforderte Operation basierend auf Energieanforderungen und/oder Befehlssatzarchitektur-(ISA)-Fähigkeiten des kleinen Kerns behandeln kann. Wenn der kleine Kern eine angeforderte Operation nicht behandeln kann, weil er keine ISA-Unterstützung aufweist, kann die Frontend-Logik des kleinen Kerns eine empfangene Befehlsfolge parsen und bestimmen, dass wenigstens ein Befehl im Strom vom kleinen Kern nicht unterstützt wird. Demgemäß kann der kleine Kern einen Fehler bezüglich eines nicht definierten Befehls ausgeben. Dieser Fehler kann an die PCU gesendet werden (oder eine andere Entität), die den Fehler und den Zustand des kleinen Kerns analysieren kann, um zu bestimmen, ob der Fehler ein Resultat davon ist, dass der kleine Kern keine Hardware-Unterstützung für die Behandlung des Befehls aufweist, oder ob stattdessen ein wahrer nicht definierter Fehler vorliegt. Im letzteren Fall kann der nicht definierte Fehler an ein OS zur weiteren Handhabung weitergesandt werden. Wenn der Fehler darauf basiert, dass der kleine Kern die geeignete Hardware-Unterstützung nicht aufweist, um den Befehl zu behandeln, kann die PCU veranlassen, dass der Ausführungsstand, der zu diesem kleinen Kern übertragen wird, zu einem entsprechenden großen Kern übertragen wird, um die angeforderten Befehle zu behandeln.
- Bei anderen Ausführungsformen kann eine Übertragung des Ausführungsstandes zwischen dem kleinen und dem großen Kern auftreten, wenn bestimmt wurde, dass der kleine Kern für eine zu lange Zeit oder mit einem zu niedrigen Energieniveau ausgeführt hat. D. h., es wird angenommen, dass der kleine Kern für viele Tausende oder Millionen von Prozessorzyklen ausgeführt hat, um die angeforderten Tasks auszuführen. Aufgrund der passenderen Ausführung, die im großen Kern verfügbar ist, ist es möglich, dass größere Energiereduzierungen durch das Übertragen des Zustandes zum großen Kern auftreten können, um den großen Kern in die Lage zu versetzen, die Task schneller abzuschließen.
- Weiter bezugnehmend auf
4 , wenn bestimmt ist, dass die angeforderte Operation im kleinen Kern behandelt werden kann, geht die Steuerung zu Block350 über, wo die Operation daher im kleinen Kern ausgeführt wird. Wenn angeforderte Operation beispielsweise eine Datentransferoperation ist, kann der kleine Kern die angeforderte Verarbeitung ausführen, und wenn keine anderen Tasks für den kleinen Kern anhängig sind, kann er wieder in einen Energiesparzustand versetzt werden. - Wenn stattdessen bei Raute
340 bestimmt wurde, dass der kleine Kern die angeforderte Operation nicht behandeln kann, wenn z. B. die Operation eine relativ komplexe Operation ist, für die der kleine Kern nicht konfiguriert ist, geht die Steuerung stattdessen zu Block360 über. Dort kann ein Wecksignal z. B. direkt vom kleinen Kern an den großen Kern gesendet werden, um zu bewirken, dass der große Kern hochgefahren wird. Demgemäß geht die Steuerung zu Block370 über, wo die angeforderte Operation deshalb im großen Kern ausgeführt werden kann. Zu beachten ist, dass, obwohl die Beschreibung mit diesem speziellen Satz an Operationen in der Ausführungsform von4 erfolgt, der Umfang der vorliegenden Erfindung jedoch in dieser Hinsicht in keiner Weise einzuschränken ist. - Deshalb kann bei verschiedenen Ausführungsformen ein Mechanismus bereitgestellt werden, sodass Hardware-Interupts und andere Wecksignale direkt zum kleinen Kern geroutet werden können, ohne den großen Kern aufzuwecken. Zu beachten ist, dass in unterschiedlichen Implementierungen der kleine Kern selbst oder ein Überwachungsagent bestimmen kann, ob das Wecksignal und die Verarbeitung abgeschlossen werden können, ohne den großen Kern aufzuwecken. In repräsentativen Fällen kann der kleinere Kern viel energieeffizienter sein als die größeren Kerne und er kann als Resultat nur einen Teilsatz der Befehle unterstützen, die der große Kern unterstützt. Und viele Operationen, die nach dem Aufwecken aus einem Energiesparzustand auszuführen sind, können zu einem einfacheren, energieeffizienteren Kern ausgelagert werden, um das Aufwecken eines größeren leistungsstärkeren Kerns in heterogenen Umgebungen zu vermeiden (bei denen aus Leistungs- oder Energieeffizienzgründen viele Kerne von verschiedenen Größen in einem System eingeschlossen sind).
- Bezugnehmend auf
5 ist ein Ablaufdiagramm eines Verfahrens für die Übertragung des Ausführungsstands gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie gezeigt in5 kann das Verfahren380 durch die Logik einer PCU bei einer Ausführungsform ausgeführt werden. Diese Logik kann ansprechend auf eine Anforderung, einen großen Kern in einen Energiesparzustand zu versetzen, ausgelöst werden. Ansprechend auf eine solche Anforderung kann Verfahren380 bei Block382 beginnen, wo der Ausführungsstand des großen Kerns in einem zeitweiligen Speicherbereich gespeichert werden kann. Zu beachten ist, dass dieser zeitweilige Speicherbereich ein zugehöriger Zustandsspeicherbereich sein kann, der mit dem Kern verbunden ist, oder er kann sich innerhalb eines geteilten Caches wie beispielsweise eines Last Level Cache (LLC) befinden. Obwohl der Umfang der vorliegenden Erfindung in dieser Hinsicht in keiner Weise eingeschränkt ist, kann der Ausführungsstand Allzweckregister, Status- und Konfigurationsregister, Ausführungsflags und so weiter einschließen. Außerdem können zu diesem Zeitpunkt zusätzliche Operationen, um den großen Kern in einen Energiesparzustand versetzen zu können, ausgeführt werden. Solche Operationen schließen das Räumen der internen Caches und anderer Zustände sowie das Signalisieren für das Abschalten des gegebenen Kerns ein. - Weiter bezugnehmend auf
5 kann dann bestimmt werden, ob der kleine Kern (Raute384 ) eine Wiederaufnahme durchgeführt hat. Diese Wiederaufnahme kann infolge eines Wiederaufnahmesignals auftreten, das ansprechend auf einen Interrupt, der z. B. von einem Beschleuniger des Prozessors stammt, empfangen wird. Als Teil der Wiederaufnahme des kleinen Kerns geht die Steuerung zu Block386 über, wo wenigstens ein Teil des Zustands des großen Kerns vom zeitweiligen Speicherbereich extrahiert werden kann. Insbesondere kann dieser extrahierte Teil der Teil des Ausführungsstandes des großen Kerns sein, der vom kleinen Kern verwendet werden soll. Beispielsweise kann dieser Zustandsteil die Hauptregisterinhalte, verschiedene Flags, wie bestimmte Ausführungsflags, Maschinenzustandsregister und so weiter einschließen. Jedoch kann ein bestimmter Zustand nicht extrahiert werden, wie beispielsweise ein Zustand, der mit einer oder mehreren Ausführungseinheiten verbunden ist, die im großen Kern vorhanden sind, und die keine entsprechenden Ausführungseinheiten im kleinen Kern aufweisen. Dieser extrahierte Teil des Zustandes kann dann zum kleinen Kern (Block388 ) gesendet werden und deshalb den kleinen Kern in die Lage versetzen, die Operationen die geeignet sind, ansprechend auf den gegebenen Interrupt auszuführen. Obwohl diese bestimmte Implementierung in der Ausführungsform von5 gezeigt wird, ist der Umfang der vorliegenden Erfindung jedoch in dieser Hinsicht in keiner Weise einzuschränken. - Bezugnehmend auf
6 wird ein Blockdiagramm eines Prozessors gemäß einer Ausführungsform der Erfindung gezeigt. Wie gezeigt in6 kann Prozessor400 ein Mehrkernprozessor einschließlich einer ersten Vielzahl von Kernen410 1–410 n sein, die gegenüber einem OS offengelegt sein können, und einer zweiten Vielzahl von Kernen410a –x, die dem OS gegenüber transparent sind. - Wie gesehen können die mehreren Kerne über eine Kopplungsstruktur
415 mit einem Systemagent oder Nichtkern420 gekoppelt sein, der mehrere Komponenten umfasst. Wie gesehen kann der Nichtkern420 einen gemeinsam benutzten Cache430 umfassen, der ein Last Level Cache sein kann. Außerdem kann der Nichtkern einen integrierten Memory-Controller440 , verschiedene Schnittstellen450a –n, Power Control Unit455 und einen Advanced Programmable Interrupt Controller (APIC)465 einschließen. - Die PCU
450 kann verschiedene Logik einschließen, um eine energieeffiziente Operation gemäß einer Ausführungsform der vorliegenden Erfindung zu ermöglichen. Wie gesehen kann PCU450 die Wecklogik452 einschließen, die Weckvorgänge wie oben beschrieben ausführen kann. Deshalb kann Logik452 konfiguriert sein, immer zuerst einen kleinen Kern aufzuwecken. - Jedoch kann diese Logik dynamisch konfiguriert sein, sodass sie diese direkten Weckvorgänge eines kleinen Kerns unter bestimmten Umständen nicht ausführt. Beispielsweise kann ein System für einen energiesparenden Betrieb dynamisch konfiguriert sein, wenn das System beispielsweise ein mit einer Batterie betriebenes mobiles System ist. In solchen Situationen kann die Logik konfiguriert sein, immer den kleinen Kern aufzuwecken. Wenn stattdessen das System ein Server-System, Desktop oder Laptop-System ist, das mit Strom aus der Steckdose versorgt wird, können Ausführungsformen eine Benutzer basierte Auswahl bereitstellen, um die Latenzzeit und Leistung über Energiesparmodi auszuwählen. Deshalb kann die Wecklogik
452 in solchen Instanzen konfiguriert sein, als Reaktion auf einen Interrupt anstatt eines kleinen Kerns einen großen Kern aufzuwecken. Ähnlich können Weckvorgänge des großen Kerns ausgeführt werden, wenn bestimmt wurde, dass eine große Anzahl an Weckvorgängen eines kleinen Kerns in einer Umleitung zu einem großen Kern resultiert. - Um weiter eine energieeffiziente Operation zu ermöglichen, kann PCU
450 weiter eine Zustandsübertragungslogik454 einschließen, die Übertragungen des Ausführungsstandes zwischen großen und kleinen Kernen ausführen kann. Wie oben beschrieben, kann diese Logik verwendet werden, um einen Ausführungsstand eines großen Kerns, der während eines Energiesparzustandes in einem zeitweiligen Speicher gespeichert wird, zu nehmen und wenigstens einen Teil dieses Zustandes zu extrahieren, um ihn einem kleinen Kern bei einem Weckvorgang eines kleinen Kerns bereitzustellen. - Weiter noch kann PCU
450 einen Interrupt-Historien-Speicher456 einschließen. Ein solcher Speicher kann eine Vielzahl von Einträgen einschließen, von denen jeder einen Interrupt identifiziert, der während des Systembetriebs aufgetreten ist, und ob der Interrupt erfolgreich von dem kleinen Kern behandelt wurde. Wenn ein gegebener Interrupt empfangen wird, kann dann basierend auf dieser Historie auf einen entsprechenden Eintrag dieses Speichers zugegriffen werden, um zu bestimmen, ob ein vorhergehender Interrupt der gleichen Art vom kleinen Kern erfolgreich behandelt wurde. Wenn dies so ist, kann die PCU den neuen eingehenden Interrupt zum gleichen kleinen Kern leiten. Wenn stattdessen basierend auf dieser Historie bestimmt wird, dass diese Art des Interrupts von dem kleinen Kern nicht erfolgreich behandelt wurde (oder mit unbefriedigend niedriger Leistung), kann der Interrupt stattdessen an einen großen Kern gesendet werden. - Weiter bezugnehmend auf
6 kann PCU450 weiter eine Logik bezüglich nicht definierter Handhabung458 einschließen. Eine solche Logik kann nicht definierte Fehler empfangen, die von einem kleinen Kern ausgegeben wurden. Basierend auf dieser Logik kann auf Informationen im kleinen Kern zugegriffen werden. Dann kann bestimmt werden, ob der nicht definierte Fehler das Resultat eines Mangels an Unterstützung für den Befehl im kleinen Kern ist oder ob ein anderer Grund vorliegt. Ansprechend auf diese Bestimmung kann die Logik entweder veranlassen, dass der Zustand des kleinen Kerns mit dem verbleibenden Teil des großen Kernausführungsstandes (der in einem zeitweiligen Speicherbereich gespeichert ist) zusammengeführt und danach an den großen Kern zur Behandlung des Interrupts gesendet wird, oder dass der nicht definierte Fehler zur weiteren Behandlung an ein OS gesendet wird. Wenn bestimmt ist, dass ein kleiner Kern den Interrupt nicht behandeln kann, wird der Teil des an den kleinen Kern bereitgestellten Ausführungsstandes deshalb vom kleinen Kern weggenommen und wieder im zeitweiligen Speicherbereich gespeichert, und demgemäß kann der kleine Kern heruntergefahren werden. Dieser zusammengeführte Zustand zusammen mit dem verbleibenden Ausführungsstand des großen Kerns kann dann wieder an den großen Kern bereitgestellt werden, um den großen Kern in die Lage zu versetzen, einen Interrupt zu behandeln, den der kleine Kern nicht behandeln konnte. Es ist auch zu beachten, dass ansprechend auf eine solche falsche Handhabung durch den kleinen Kern ein Eintrag in den Interrupt-Historien-Speicher456 geschrieben werden kann. Obwohl diese bestimmte Logik in der Ausführungsform von6 gezeigt ist, wird dadurch der Umfang der vorliegenden Erfindung in dieser Hinsicht in keiner Weise eingeschränkt. Beispielsweise können die verschiedenen Logiken der PCU450 bei anderen Ausführungsformen in einem einzelnen Logikblock implementiert sein. - APIC
465 kann verschiedene Interrupts empfangen, die z. B. von Beschleunigern ausgegeben wurden, und diese wie jeweils anwendbar zu einem oder mehreren gegebenen Kernen leiten. Bei einigen Ausführungsformen kann der APIC465 dynamisch eingehende Interrupts, von denen jeder einen damit verbundenen APIC-Identifikator einschließen kann, von einer mit einem großen Kern verbundenen APIC-ID zu einer mit einem kleinen Kern verbundenen APIC-ID neu zuordnen, um die kleinen Kerne weiterhin für das OS verborgen zu halten. - Unter weiterer Bezugnahme auf
6 kann Prozessor400 mit einem Systemspeicher460 z. B. über einen Speicherbus kommunizieren. Des Weiteren kann durch die Schnittstellen450 eine Verbindung mit verschiedenen Off-Chip-Komponenten wie beispielsweise Peripheriegeräten, Massenspeicher und so weiter hergestellt werden. Obwohl diese bestimmte Implementierung in der Ausführungsform von6 gezeigt ist, soll der Umfang der vorliegenden Erfindung in dieser Hinsicht in keiner Weise eingeschränkt werden. - Zu beachten ist, dass verschiedene Architekturen möglich sind, um eine unterschiedliche Kopplung oder Integration der großen und kleinen Kerne zu ermöglichen. Beispielsweise kann der Kopplungsfaktor zwischen diesen ungleichen Kernen von einer Vielzahl von Technikoptimierungsparametern abhängen, die mit dem Chiplagen-Bereich, mit Energie, Leistung und Reaktionsfähigkeit verbunden sind.
- Bezugnehmend auf
7 ist ein Blockdiagramm eines Prozessors gemäß einer anderen Ausführungsform der vorliegenden Erfindung gezeigt. Wie gezeigt in7 kann Prozessor500 ein wahrer heterogener Prozessor einschließlich eines großen Kerns510 und eines kleinen Kerns520 sein. Wie gesehen kann jeder Prozessor mit seiner eigenen privaten Cache-Speicher-Hierarchie verbunden sein, das heißt, den Cache-Speichern515 und525 , die sowohl Level 1- als auch Level 2-Cache-Speicher einschließen können. Wiederum können die Kerne zusammen über eine Ring-Kopplungsstruktur530 gekoppelt sein. Die Vielfachbeschleuniger540a und540b und ein LLC, das heißt ein L3-Cache550 , der ein geteilter Cache sein kann, sind auch mit der Ring-Kopplungsstruktur gekoppelt. Bei dieser Implementierung kann der Ausführungsstand zwischen den zwei Kernen über die Ring-Kopplungsstruktur530 übertragen werden. Wie oben beschrieben, kann der Ausführungsstand des großen Kerns500 vor dem Eintritt in einen gegebenen Energiesparzustand im Cache550 gespeichert werden. Dann kann bei einem Weckvorgang des kleinen Kerns520 wenigstens ein Teilsatz dieses Ausführungsstandes an den kleinen Kern bereitgestellt werden, um den Kern für die Ausführung einer Operation bereit zu machen, die seinen Weckvorgang auslöste. Deshalb sind in der Ausführungsform von7 die Kerne lose über diese Ring-Kopplungsstruktur gekoppelt. Obwohl aus Gründen einer vereinfachten Darstellung ein einzelner großer Kern und ein einzelner kleiner Kern gezeigt sind, sei klargestellt, dass der Umfang der vorliegenden Erfindung in dieser Hinsicht nicht eingeschränkt ist. Unter Verwendung einer Implementierung wie die von7 kann jeder Zustand oder jede Kommunikation, die auszutauschen ist, entweder über die Ringarchitektur behandelt werden (die auch eine Bus- oder Fabric-Architektur sein kann), oder diese Kommunikation kann bei anderen Ausführungsformen über einen zugehörigen Bus zwischen den zwei Kernen erfolgen (nicht dargestellt in7 ). - Bezugnehmend auf
8 ist ein Blockdiagramm eines Prozessors gemäß noch einer weiteren Ausführungsform der vorliegenden Erfindung gezeigt. Wie gezeigt in8 kann Prozessor500' ein Hybrid heterogener Prozessor sein, bei dem es eine feste Kopplung oder Integration zwischen den großen und kleinen Kernen gibt. Wie speziell in8 zu sehen, können der große Kern510 und der kleine Kern520 einen gemeinsamen Cache-Speicher518 teilen, der bei verschiedenen Ausführungsformen sowohl Level 1- als auch Level 2-Caches einschließen kann. Als solches kann der Ausführungsstand von einem der Kerne zum anderen über diesen Cache-Speicher übertragen werden, wodurch die Latenzzeit der Kommunikation über die Ring-Kopplungsstruktur530 vermieden wird. Zu beachten ist, dass diese Anordnung aufgrund reduzierter Datenverschiebungsoverheads und schnellerer Kommunikation zwischen den Kernen eine niedrige Energie ermöglicht, sie mag aber nicht so flexibel sein. - Es sollte beachtet werden, dass die
7 und8 nur zwei mögliche Implementierungen veranschaulichen (und nur eine begrenzte Anzahl an Kernen zeigen). Weitere Implementierungsvarianten sind möglich, einschließlich unterschiedlicher Anordnungen von Kernen, einer Kombination der zwei Schemen, mehr als zwei Arten von Kernen, usw. Es ist auch möglich, das bei einer Variante von8 die zwei Kerne einige Komponenten wie Ausführungseinheiten, einen Befehlszeiger oder einen Registersatz teilen können. - Wie beschrieben können Ausführungsformen vollständig transparent und für das Betriebssystem unsichtbar sein. Deshalb können keine Softwareänderungen und nur minimale Anstiege in der Wiederaufnahmezeit von C-Zuständen erreicht werden. Bei anderen Ausführungsformen kann das Vorhandensein und die Verfügbarkeit von kleinen Kernen dem OS gegenüber offengelegt sein, um daher dem OS zu ermöglichen, die Entscheidung zu treffen, ob ein Interrupt an einen kleinen Kern oder einen großen Kern bereitgestellt werden soll. Des Weiteren können Ausführungsformen Mechanismen in der Systemsoftware, wie beispielsweise ein Basic Input Output System (BIOS) bereitstellen, um die großen und kleinen Kerne dem OS gegenüber offenzulegen oder zu konfigurieren, ob die kleinen Kerne offengelegt sind oder nicht. Ausführungsformen können die offensichtlichen Wiederaufnahmezeiten von C-Zuständen erhöhen, aber das ist zulässig, da aktuelle Plattformen bei Wiederaufnahme-Latenzzeiten variieren, und momentan wird keine nützliche Arbeit während der Zeit verrichtet, zu der ein Zustand eines Kerns wiederhergestellt wird. Das Verhältnis, wie unterschiedlich kleine und große Kerne sind, kann von bedeutungslosen Differenzen bis zu hauptsächlichen mikroarchitektonisch strukturellen Differenzen variieren. Gemäß verschiedenen Ausführungsformen können die meisten primären Unterscheidungsmerkmale zwischen den heterogenen Kernen der Chiplage-Bereich und die von den Kernen verbrauchte Energie sein.
- Bei einigen Implementierungen kann ein Kontrollmechanismus bereitgestellt werden, sodass, wenn erkannt wird, dass der große Kern nach der Wiederaufnahme die meiste Zeit aufgeweckt ist, das Aufwecken des kleinen Kerns zuerst umgangen werden und der große Kern wenigstens für einen vorbestimmten Zeitraum direkt aufgeweckt werden kann, um Leistung zu bewahren. Zu beachten ist, dass bei einigen Ausführungsformen ein Mechanismus, um alle Interrupts und andere Wecksignale entweder zum kleinen oder zum großen Kern universell umzulenken, abhängig von der Energie und den Leistungsanforderungen der Anwendung und des Systems Software (sowohl System- als auch Benutzerebenen-Software) gegenüber offengelegt werden kann. Als ein solches Beispiel kann ein Benutzerebenen-Befehl bereitgestellt werden, um das Lenken von Weckoperationen zu einem bestimmten Kern auszuführen. Ein solcher Befehl kann eine Variante eines MWAIT-artigen Befehls sein.
- Bei einigen Ausführungsformen kann ein Beschleuniger an die PCU oder einen anderen Management-Agenten mit einem Interrupt einen Hinweis senden, um anzuzeigen, dass die angeforderte Operation eine relativ einfache Operation ist, sodass sie im kleinen Kern effektiv behandelt werden kann. Dieser vom Beschleuniger-bereitgestellte Hinweis kann von der PCU verwendet werden, um automatisch eingehende Interrupts zur Behandlung an den kleinen Kern zu leiten.
- Bezugnehmend auf
9 ist ein Zeitdiagramm gezeigt, das Operationen veranschaulicht, die gemäß einer Ausführungsform der vorliegenden Erfindung in einem großen Kern710 und einem kleinen Kern720 auftreten. Wie gesehen kann eine längere Schlafdauer für den großen Kern710 ermöglicht werden, indem zugelassen wird, dass ein Geräte-Interrupt direkt an den kleinen Kern720 bereitgestellt wird, und durch das Bestimmen im kleinen Kern, ob dieser den Interrupt behandeln kann. Wenn dies so ist, kann der große Kern710 in einem Schlafzustand verbleiben und der Interrupt beim kleinen Kern720 behandelt werden. - Bezugnehmend auf
10 ist eine grafische Darstellung von Energiesparmodi gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie gezeigt in10 kann bei einem konventionellen System, das Übergänge von einem aktiven C0-Zustand in einen tiefen Niedrigenergiezustand, wie z. B. einen C6-Zustand, aufweist, der Kern-Energieverbrauch eines großen Kerns zwischen einem relativ hohen Niveau, wie z. B. 500 mW, während jedes Eintritts in die C0-Zustände zu einem Null-Energieverbrauchsniveau im C6-Zustand (mittlere Ansicht) variieren. Stattdessen können bei einer Ausführungsform der vorliegenden Erfindung (untere Ansicht) Weckvorgänge in einen C0-Zustand vom großen Kern weggelenkt und zu einem kleinen Kern gelenkt werden, und daher können die kleinen Kerne C0-Zustände bei viel niedrigeren Energieniveaus als dem 500-mW-Energieverbrauch behandeln, wie z. B. bei 10 mW in der Ausführungsform von10 . - Ausführungsformen können in vielen verschiedenen Arten von Systemen implementiert sein. Mit Bezug auf
11 ist ein Blockdiagramm eines Systems gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie gezeigt in11 ist das Mehrprozessorsystem600 ein System mit einer Punkt-zu-Punkt-Verbindung und umfasst einen ersten Prozessor670 und einen zweiten Prozessor680 , die über eine Punkt-zu-Punkt-Verbindung650 gekoppelt sind. Wie gezeigt in11 kann jeder der Prozessoren670 und680 ein Mehrkernprozessor einschließlich eines ersten und zweiten Prozessorkerns sein (d. h., die Prozessorkerne674a und674b und Prozessorkerne684a und684b ), obwohl potenziell noch viel mehr Kerne in den Prozessoren vorhanden sein können. Insbesondere kann jeder der Prozessoren zusätzlich zur Logik, um Weckvorgänge zum kleinsten verfügbaren Kern zu leiten, einen Mix aus großen, kleinen (und möglicherweise mittleren) Kernen, Beschleunigern und so weiter einschließen, wenn wenigstens die großen Kerne sich wie hier beschrieben in einem Energiesparzustand befinden. - Weiter bezugnehmend auf
11 umfasst der erste Prozessor670 des Weiteren einen Memory Controller Hub (MCH)672 und die Punkt-zu-Punkt-(P-P)-Schnittstellen676 und678 . Auf ähnliche Weise umfasst der zweite Prozessor680 eine MCH682 und die P-P-Schnittstellen686 und688 . Wie gezeigt in11 koppeln die MCHs672 und682 die Prozessoren mit entsprechenden Speichern, das heißt, einem Speicher632 und einem Speicher634 , die Teile des Systemspeichers sein können (z. B. DRAM), die lokal an den entsprechenden Prozessoren angebracht sind. Der erste Prozessor670 und der zweite Prozessor680 können über die P-P-Verbindungen652 bzw.654 an einen Chipsatz690 gekoppelt sein. Wie gezeigt in11 , umfasst der Chipsatz690 die P-P-Schnittstellen694 und698 . - Des Weiteren umfasst der Chipsatz
690 eine Schnittstelle692 für die Kopplung von Chipsatz690 mit einer Hochleistungs-Grafikengine638 über eine P-P-Kopplungsstruktur639 . Der Chipsatz690 kann wiederum über die Schnittstelle696 an einen ersten Bus616 gekoppelt sein. Wie gezeigt in11 können verschiedene Eingabe-/Ausgabe-(I/O)-Geräte614 an den ersten Bus616 gekoppelt werden, zusammen mit einer Busbrücke618 , die den ersten Bus616 an einen zweiten Bus620 koppelt. Verschiedene Geräte können an den zweiten Bus620 gekoppelt werden, z. B. in einer Ausführungsform u. a. Tastatur/Maus622 , Kommunikationsgeräte626 und eine Datenspeichereinheit628 , wie z. B. ein Festplattenlaufwerk oder ein Massenspeichergerät, das Code630 umfassen kann. Des Weiteren kann ein Audio-I/O624 an den zweiten Bus620 gekoppelt werden. Ausführungsformen können in anderen Arten von Systemen einschließlich mobiler Geräte, wie beispielsweise einem intelligenten Mobiltelefon, Tablet-Computer, Netbook usw., integriert sein. - Ausführungsformen können in Code implementiert werden und auf einem nicht flüchtigen Speichermedium gespeichert werden, auf dem Befehle gespeichert sind, die verwendet werden können, um ein System zu programmieren, die Befehle auszuführen. Das Speichermedium kann einschließen, ist aber nicht beschränkt auf, jede Art Disks, u. a. Floppy Disks, optische Disks, Solid State-Laufwerke (SSDs), Compact Disk Read-Only Memories (CD-ROMs), Compact Disk Rewritables (CD-RWs) und magnetooptische Disks (MO), Halbleiter-Geräte, wie Read-Only Memories (ROMs), Random Access Memories (RAMs), wie Dynamic Random Access Memories (DRAMs), Static Random Access Memories (SRAMs), Erasable Programmable Read-Only Memories (EPROMs), Flash Memories, Electrically Erasable Programmable Read-Only Memories (EEPROMs), magnetische oder optische Karten oder jede andere Art Speichermedium, das sich für das Speichern von elektronischen Befehlen eignet.
- Obwohl die vorliegende Erfindung im Hinblick auf eine begrenzte Anzahl von Ausführungsformen beschrieben wurde, sind sich Fachleute bewusst, dass viele weitere Modifikationen und Varianten davon möglich sind. Die beigefügten Ansprüche sollen alle solchen Modifikationen und Varianten abdecken, die dem Sinn und Schutzbereich der vorliegenden Erfindung entsprechen.
Claims (20)
- Eine Vorrichtung, umfassend: ein erster Kern, um Befehle auszuführen; ein zweiter Kern, um Befehle auszuführen, wobei der zweite Kern heterogener und kleiner als der erste Kern ist; und eine Logik, um zu bewirken, dass der zweite Kern und nicht der erste Kern ansprechend auf einen Interrupt aufgeweckt wird, wenn sich der erste und der zweite Kern in einem Energiesparzustand befinden.
- Vorrichtung nach Anspruch 1, wobei die Logik immer den zweiten Kern und nicht den ersten Kern veranlasst, ansprechend auf den Interrupt aufgeweckt zu werden.
- Vorrichtung nach Anspruch 1, wobei die Logik einen Teilsatz eines Ausführungsstandes des ersten Kerns an den zweiten Kern bereitstellt, der auf den Interrupt anspricht.
- Vorrichtung nach Anspruch 3, wobei der zweite Kern bestimmt, ob der zweite Kern den Interrupt behandeln kann, und wenn dies nicht der Fall ist, zu bewirken, dass ein Wecksignal an den ersten Kern gesendet wird.
- Vorrichtung nach Anspruch 4, wobei ansprechend auf die Bestimmung, dass der zweite Kern den Interrupt nicht behandeln kann, die Logik den Teilsatz des Ausführungsstandes des ersten Kerns vom zweiten Kern erhält und den Ausführungsstand-Teilsatz mit einem Rest des Ausführungsstandes des in einem zeitweiligen Speicherbereich gespeicherten ersten Kerns zusammenführt.
- Vorrichtung nach Anspruch 1, wobei die Vorrichtung einen Mehrkernprozessor umfasst, der den ersten und zweiten Kern und eine Power Control Unit (PCU) einschließt und die PCU die Logik einschließt, wobei die Logik umfasst: eine Wecklogik; eine Zustandsübertragungslogik; eine Logik bezüglich nicht definierter Behandlung; und einen Interrupt-Historien-Speicher.
- Vorrichtung nach Anspruch 1, weiter umfassend ein mit der Logik gekoppelter Beschleuniger, wobei der Beschleuniger eine Task ausführt und den Interrupt nach dem Abschluss der Task an die Logik sendet.
- Vorrichtung nach Anspruch 7, wobei der zweite Kern den Interrupt behandelt, wenn der Interrupt eine Anforderung für eine Datentransferoperation umfasst.
- Vorrichtung nach Anspruch 7, wobei der zweite Kern ein Wecksignal veranlasst, das an den ersten Kern gesendet wird, um den ersten Kern in die Lage zu versetzen, den Interrupt zu behandeln, wenn der Interrupt eine Anforderung für eine Vektoroperation umfasst.
- Vorrichtung nach Anspruch 9, wobei die Logik einen Fehler bezüglich eines nicht definierten Befehlsfehlers vom zweiten Kern empfängt, bestimmt, dass der zweite Kern die Vektoroperation nicht behandeln kann, einen Ausführungsstand vom zweiten Kern erlangt, den Ausführungsstand mit wenigstens einem Teil eines Ausführungsstandes des ersten Kerns, der in einem zeitweiligen Speicherbereich gespeichert ist, zusammenführt, und bewirkt, dass der zusammengeführte Ausführungsstand zum ersten Kern gesendet wird.
- Vorrichtung nach Anspruch 1, wobei die Logik eine Vielzahl von Interrupts analysiert, und wenn eine Mehrheit der Vielzahl von Interrupts durch den ersten Kern behandelt werden soll, die Logik nicht den zweiten Kern ansprechend auf den Interrupt weckt, sondern stattdessen den ersten Kern.
- Ein Verfahren, umfassend: das Empfangen eines Interrupts von einem Beschleuniger in einer Logik eines Prozessors einschließlich eines ersten kleinen Kerns, eines ersten großen Kerns und des Beschleunigers, wenn sich der erste kleine Kern und der erste große Kern in einem Energiesparzustand befinden; das Senden eines Wiederaufnahmesignals direkt an den ersten kleinen Kern, der auf den Interrupt anspricht, und das Bereitstellen eines Teilsatzes eines Ausführungsstandes des ersten großen Kerns an den ersten kleinen Kern; und das Bestimmen, ob der erste kleine Kern eine Anforderung behandeln kann, die mit dem Interrupt verbunden ist, und wenn dies der Fall ist, eine Operation entsprechend der Anforderung im ersten kleinen Kern auszuführen.
- Verfahren nach Anspruch 12, weiter umfassend den Ausführungsstand-Teilsatz vom ersten kleinen Kern zu erhalten, den Ausführungsstand-Teilsatz mit einem gespeicherten Ausführungsstand des ersten großen Kerns zusammenzuführen und ein Wecksignal und den zusammengeführten Ausführungsstand an den großen Kern zu senden, wenn der erste kleine Kern die Anforderung nicht behandeln kann.
- Verfahren nach Anspruch 13, weiter umfassend die Operation danach entsprechend der Anforderung im ersten großen Kern auszuführen.
- Verfahren nach Anspruch 12, weiter umfassend den Interrupt mit einem Hinweis zu empfangen, um anzuzeigen, ob der Interrupt an den ersten kleinen Kern oder den ersten großen Kern geleitet werden sollte.
- Verfahren nach Anspruch 12, weiter umfassend auf einen Eintrag einer Tabelle zuzugreifen, die auf einer Art des Interrupts basiert, und zu bestimmen, ob das Wiederaufnahmesignal basierend auf dem Eintrag direkt an den ersten kleinen Kern oder den ersten großen Kern gesendet werden soll.
- System umfassend: ein Mehrkernprozessor einschließlich einer ersten Vielzahl von Kernen und einer zweiten Vielzahl von Kernen, wobei die zweite Vielzahl von Kernen eine niedrigere thermische Auslegungsleistung aufweist als die erste Vielzahl von Kernen, ein Beschleuniger und eine Power Control Unit (PCU), wobei die PCU einen Interrupt vom Beschleuniger empfängt, wenn sich die erste Vielzahl von Kernen und die zweite Vielzahl von Kernen in einem Energiesparzustand befinden, das Senden eines Wiederaufnahmesignals direkt an einen ersten der zweiten Vielzahl von Kernen ansprechend auf den Interrupt, und das Bereitstellen eines Teilsatzes eines Ausführungsstandes eines ersten Kerns der ersten Vielzahl von Kernen an den ersten Kern der zweiten Vielzahl von Kernen; und einen dynamischen Random Access Memory (DRAM), der an den Mehrkernprozessor gekoppelt ist.
- System nach Anspruch 17, wobei die erste Vielzahl von Kernen aus einem heterogenen Design der zweiten Vielzahl von Kernen ist.
- System nach Anspruch 17, wobei die zweite Vielzahl von Kernen für ein Betriebssystem (OS) transparent ist.
- System nach Anspruch 17, wobei die PCU auf einen Eintrag einer Tabelle unter Verwendung des Interrupts zugreift, um zu bestimmen, ob das Wiederaufnahmesignal zum ersten Kern der ersten oder zweiten Vielzahl von Kernen gesendet werden soll, wobei die PCU das Wiederaufnahmesignal zum ersten Kern der ersten Vielzahl von Kernen sendet, wenn der Eintrag anzeigt, dass einer der zweiten Vielzahl von Kernen ansprechend auf einen vorhergehenden Interrupt der gleichen Art wie der Interrupt auf einen nicht definierten Fehler gestoßen ist.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2011/050580 WO2013036222A1 (en) | 2011-09-06 | 2011-09-06 | Power efficient processor architecture |
Publications (1)
Publication Number | Publication Date |
---|---|
DE112011105590T5 true DE112011105590T5 (de) | 2014-07-03 |
Family
ID=47832464
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE112011105590.0T Pending DE112011105590T5 (de) | 2011-09-06 | 2011-09-06 | Energieeffiziente Prozessorarchitektur |
Country Status (9)
Country | Link |
---|---|
US (5) | US9360927B2 (de) |
JP (1) | JP6197196B2 (de) |
KR (6) | KR102082242B1 (de) |
CN (2) | CN106155265B (de) |
DE (1) | DE112011105590T5 (de) |
GB (1) | GB2507696B (de) |
IN (1) | IN2014CN01367A (de) |
TW (4) | TWI622874B (de) |
WO (1) | WO2013036222A1 (de) |
Families Citing this family (52)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8886917B1 (en) * | 2007-04-25 | 2014-11-11 | Hewlett-Packard Development Company, L.P. | Switching to core executing OS like codes upon system call reading greater than predetermined amount of data |
TWI454905B (zh) * | 2011-09-30 | 2014-10-01 | Intel Corp | 在多核心平台中之受限制的啓動技術 |
US8984200B2 (en) | 2012-08-21 | 2015-03-17 | Lenovo (Singapore) Pte. Ltd. | Task scheduling in big and little cores |
US9009508B2 (en) * | 2012-08-28 | 2015-04-14 | Advanced Micro Devices, Inc. | Mechanism for reducing interrupt latency and power consumption using heterogeneous cores |
KR102082859B1 (ko) * | 2013-01-07 | 2020-02-28 | 삼성전자주식회사 | 복수의 이종 코어들을 포함하는 시스템 온 칩 및 그 동작 방법 |
US9727345B2 (en) | 2013-03-15 | 2017-08-08 | Intel Corporation | Method for booting a heterogeneous system and presenting a symmetric core view |
JP6175980B2 (ja) * | 2013-08-23 | 2017-08-09 | 富士通株式会社 | Cpuの制御方法、制御プログラム、情報処理装置 |
US10218645B2 (en) * | 2014-04-08 | 2019-02-26 | Mellanox Technologies, Ltd. | Low-latency processing in a network node |
US9575537B2 (en) * | 2014-07-25 | 2017-02-21 | Intel Corporation | Adaptive algorithm for thermal throttling of multi-core processors with non-homogeneous performance states |
KR20160054850A (ko) * | 2014-11-07 | 2016-05-17 | 삼성전자주식회사 | 다수의 프로세서들을 운용하는 장치 및 방법 |
US9958932B2 (en) | 2014-11-20 | 2018-05-01 | Apple Inc. | Processor including multiple dissimilar processor cores that implement different portions of instruction set architecture |
US9898071B2 (en) | 2014-11-20 | 2018-02-20 | Apple Inc. | Processor including multiple dissimilar processor cores |
US10083038B2 (en) | 2014-12-14 | 2018-09-25 | Via Alliance Semiconductor Co., Ltd | Mechanism to preclude load replays dependent on page walks in an out-of-order processor |
JP6286065B2 (ja) | 2014-12-14 | 2018-02-28 | ヴィア アライアンス セミコンダクター カンパニー リミテッド | アウトオブオーダープロセッサの書き込み結合メモリ領域アクセスに依存するロードリプレイを除外する装置及び方法 |
WO2016097796A1 (en) | 2014-12-14 | 2016-06-23 | Via Alliance Semiconductor Co., Ltd. | Mechanism to preclude i/o-dependent load replays in out-of-order processor |
US10228944B2 (en) | 2014-12-14 | 2019-03-12 | Via Alliance Semiconductor Co., Ltd. | Apparatus and method for programmable load replay preclusion |
WO2016097802A1 (en) | 2014-12-14 | 2016-06-23 | Via Alliance Semiconductor Co., Ltd. | Mechanism to preclude load replays dependent on long load cycles in an out-order processor |
JP6286068B2 (ja) | 2014-12-14 | 2018-02-28 | ヴィア アライアンス セミコンダクター カンパニー リミテッド | アウトオブオーダープロセッサでのキャッシュ不可に依存するロードリプレイを除外するメカニズム |
WO2016097800A1 (en) | 2014-12-14 | 2016-06-23 | Via Alliance Semiconductor Co., Ltd. | Power saving mechanism to reduce load replays in out-of-order processor |
US10146547B2 (en) | 2014-12-14 | 2018-12-04 | Via Alliance Semiconductor Co., Ltd. | Apparatus and method to preclude non-core cache-dependent load replays in an out-of-order processor |
US10146540B2 (en) | 2014-12-14 | 2018-12-04 | Via Alliance Semiconductor Co., Ltd | Apparatus and method to preclude load replays dependent on write combining memory space access in an out-of-order processor |
US10133580B2 (en) | 2014-12-14 | 2018-11-20 | Via Alliance Semiconductor Co., Ltd | Apparatus and method to preclude load replays dependent on write combining memory space access in an out-of-order processor |
US10089112B2 (en) | 2014-12-14 | 2018-10-02 | Via Alliance Semiconductor Co., Ltd | Mechanism to preclude load replays dependent on fuse array access in an out-of-order processor |
US10108421B2 (en) | 2014-12-14 | 2018-10-23 | Via Alliance Semiconductor Co., Ltd | Mechanism to preclude shared ram-dependent load replays in an out-of-order processor |
US10146539B2 (en) | 2014-12-14 | 2018-12-04 | Via Alliance Semiconductor Co., Ltd. | Load replay precluding mechanism |
EP3055769B1 (de) | 2014-12-14 | 2018-10-31 | VIA Alliance Semiconductor Co., Ltd. | Mechanismus zur präklusion von lastwiederholung abhängig von pagewalks bei einem out-of-order-prozessor |
US10108420B2 (en) | 2014-12-14 | 2018-10-23 | Via Alliance Semiconductor Co., Ltd | Mechanism to preclude load replays dependent on long load cycles in an out-of-order processor |
US9804845B2 (en) | 2014-12-14 | 2017-10-31 | Via Alliance Semiconductor Co., Ltd. | Apparatus and method to preclude X86 special bus cycle load replays in an out-of-order processor |
WO2016097804A1 (en) | 2014-12-14 | 2016-06-23 | Via Alliance Semiconductor Co., Ltd. | Programmable load replay precluding mechanism |
US10108429B2 (en) | 2014-12-14 | 2018-10-23 | Via Alliance Semiconductor Co., Ltd | Mechanism to preclude shared RAM-dependent load replays in an out-of-order processor |
US10127046B2 (en) | 2014-12-14 | 2018-11-13 | Via Alliance Semiconductor Co., Ltd. | Mechanism to preclude uncacheable-dependent load replays in out-of-order processor |
US10114646B2 (en) | 2014-12-14 | 2018-10-30 | Via Alliance Semiconductor Co., Ltd | Programmable load replay precluding mechanism |
US10088881B2 (en) | 2014-12-14 | 2018-10-02 | Via Alliance Semiconductor Co., Ltd | Mechanism to preclude I/O-dependent load replays in an out-of-order processor |
US9740271B2 (en) | 2014-12-14 | 2017-08-22 | Via Alliance Semiconductor Co., Ltd. | Apparatus and method to preclude X86 special bus cycle load replays in an out-of-order processor |
US10108430B2 (en) | 2014-12-14 | 2018-10-23 | Via Alliance Semiconductor Co., Ltd | Mechanism to preclude load replays dependent on off-die control element access in an out-of-order processor |
US10120689B2 (en) | 2014-12-14 | 2018-11-06 | Via Alliance Semiconductor Co., Ltd | Mechanism to preclude load replays dependent on off-die control element access in an out-of-order processor |
US10175984B2 (en) | 2014-12-14 | 2019-01-08 | Via Alliance Semiconductor Co., Ltd | Apparatus and method to preclude non-core cache-dependent load replays in an out-of-order processor |
WO2016097797A1 (en) | 2014-12-14 | 2016-06-23 | Via Alliance Semiconductor Co., Ltd. | Load replay precluding mechanism |
US10108427B2 (en) * | 2014-12-14 | 2018-10-23 | Via Alliance Semiconductor Co., Ltd | Mechanism to preclude load replays dependent on fuse array access in an out-of-order processor |
KR102352756B1 (ko) | 2015-04-29 | 2022-01-17 | 삼성전자주식회사 | 애플리케이션 프로세서, 시스템 온 칩, 및 이를 포함하는 컴퓨팅 장치 |
US9928115B2 (en) | 2015-09-03 | 2018-03-27 | Apple Inc. | Hardware migration between dissimilar cores |
US10037227B2 (en) * | 2015-12-17 | 2018-07-31 | Intel Corporation | Systems, methods and devices for work placement on processor cores |
US10856220B2 (en) * | 2015-12-21 | 2020-12-01 | Apple Inc. | Energy-efficient signal processing |
US11061730B2 (en) * | 2016-11-18 | 2021-07-13 | Red Hat Israel, Ltd. | Efficient scheduling for hyper-threaded CPUs using memory monitoring |
KR102482896B1 (ko) | 2017-12-28 | 2022-12-30 | 삼성전자주식회사 | 이종 휘발성 메모리 칩들을 포함하는 메모리 장치 및 이를 포함하는 전자 장치 |
CN109996185B (zh) * | 2017-12-29 | 2022-02-15 | 腾讯科技(深圳)有限公司 | 终端的定位方法和装置、存储介质、电子装置 |
WO2019153187A1 (en) * | 2018-02-08 | 2019-08-15 | Alibaba Group Holding Limited | Hybrid system-on-chip for power and performance prediction and control |
KR102552666B1 (ko) | 2018-11-12 | 2023-07-10 | 삼성전자주식회사 | 전자 장치 및 그것의 동작 방법 |
CN113254070B (zh) | 2020-02-07 | 2024-01-02 | 阿里巴巴集团控股有限公司 | 加速单元、片上系统、服务器、数据中心和相关方法 |
WO2022126036A1 (en) * | 2020-12-31 | 2022-06-16 | Innopeak Technology, Inc. | Diagnosis and troubleshooting of devices using multiple layer architecture |
US20230205297A1 (en) * | 2021-12-27 | 2023-06-29 | Advanced Micro Devices, Inc. | Method and apparatus for managing power states |
CN114253694B (zh) * | 2022-02-25 | 2022-06-24 | 杭州雄迈集成电路技术股份有限公司 | 一种基于神经网络加速器的异步处理方法与装置 |
Family Cites Families (49)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5257375A (en) | 1991-08-23 | 1993-10-26 | International Business Machines Corp. | Method and apparatus for dispatching tasks requiring short-duration processor affinity |
JPH06348513A (ja) | 1993-06-11 | 1994-12-22 | Sony Corp | 割込制御装置 |
JPH08249018A (ja) | 1995-03-10 | 1996-09-27 | Omron Corp | マルチプロセッサ演算装置、および該装置を有するプログラマブルコントローラ |
US5768594A (en) | 1995-07-14 | 1998-06-16 | Lucent Technologies Inc. | Methods and means for scheduling parallel processors |
US6728892B1 (en) | 1999-09-15 | 2004-04-27 | Koninklijke Philips Electronics N.V. | Method for conserving power in a can microcontroller and a can microcontroller that implements this method |
US7093147B2 (en) | 2003-04-25 | 2006-08-15 | Hewlett-Packard Development Company, L.P. | Dynamically selecting processor cores for overall power efficiency |
US7376954B2 (en) | 2003-08-28 | 2008-05-20 | Mips Technologies, Inc. | Mechanisms for assuring quality of service for programs executing on a multithreaded processor |
US7516456B2 (en) | 2003-09-25 | 2009-04-07 | International Business Machines Corporation | Asymmetric heterogeneous multi-threaded operating system |
US20050132239A1 (en) * | 2003-12-16 | 2005-06-16 | Athas William C. | Almost-symmetric multiprocessor that supports high-performance and energy-efficient execution |
US7451146B2 (en) | 2004-06-30 | 2008-11-11 | Hewlett-Packard Development Company, L.P. | Almost non-blocking linked stack implementation |
US7664970B2 (en) | 2005-12-30 | 2010-02-16 | Intel Corporation | Method and apparatus for a zero voltage processor sleep state |
CN100474214C (zh) * | 2004-08-05 | 2009-04-01 | 松下电器产业株式会社 | 信息处理装置 |
US20060075404A1 (en) | 2004-10-06 | 2006-04-06 | Daniela Rosu | Method and system for scheduling user-level I/O threads |
US8607235B2 (en) | 2004-12-30 | 2013-12-10 | Intel Corporation | Mechanism to schedule threads on OS-sequestered sequencers without operating system intervention |
JP3866749B2 (ja) | 2005-03-07 | 2007-01-10 | 富士通株式会社 | マイクロプロセッサ |
US7461275B2 (en) | 2005-09-30 | 2008-12-02 | Intel Corporation | Dynamic core swapping |
GB0519981D0 (en) * | 2005-09-30 | 2005-11-09 | Ignios Ltd | Scheduling in a multicore architecture |
US8798571B2 (en) | 2005-10-11 | 2014-08-05 | Via Technologies Inc. | Method of managing power consumption of portable computer and portable computer using the same |
JP4621113B2 (ja) * | 2005-10-28 | 2011-01-26 | ルネサスエレクトロニクス株式会社 | 半導体集積回路装置 |
EP1785809A1 (de) | 2005-11-14 | 2007-05-16 | Texas Instruments Inc. | Bereitschaftsmodus für Stromverwaltung |
JP2007148952A (ja) | 2005-11-30 | 2007-06-14 | Renesas Technology Corp | 半導体集積回路 |
US7647509B2 (en) * | 2006-05-12 | 2010-01-12 | Intel Corporation | Method and apparatus for managing power in a processing system with multiple partitions |
JP2007328461A (ja) | 2006-06-06 | 2007-12-20 | Matsushita Electric Ind Co Ltd | 非対称マルチプロセッサ |
JP4837780B2 (ja) | 2006-07-28 | 2011-12-14 | アーム・リミテッド | マスタおよびスレーブを有するデータ処理デバイスにおける電力管理 |
US20080263324A1 (en) | 2006-08-10 | 2008-10-23 | Sehat Sutardja | Dynamic core switching |
US8028290B2 (en) | 2006-08-30 | 2011-09-27 | International Business Machines Corporation | Multiple-core processor supporting multiple instruction set architectures |
US20080126747A1 (en) * | 2006-11-28 | 2008-05-29 | Griffen Jeffrey L | Methods and apparatus to implement high-performance computing |
JP2007188523A (ja) | 2007-03-15 | 2007-07-26 | Toshiba Corp | タスク実行方法およびマルチプロセッサシステム |
US20080307240A1 (en) | 2007-06-08 | 2008-12-11 | Texas Instruments Incorporated | Power management electronic circuits, systems, and methods and processes of manufacture |
US8489862B2 (en) * | 2007-06-12 | 2013-07-16 | Panasonic Corporation | Multiprocessor control apparatus for controlling a plurality of processors sharing a memory and an internal bus and multiprocessor control method and multiprocessor control circuit for performing the same |
US7962679B2 (en) * | 2007-09-28 | 2011-06-14 | Intel Corporation | Interrupt balancing for multi-core and power |
US7603504B2 (en) * | 2007-12-18 | 2009-10-13 | Intel Corporation | Reducing core wake-up latency in a computer system |
US8615647B2 (en) * | 2008-02-29 | 2013-12-24 | Intel Corporation | Migrating execution of thread between cores of different instruction set architecture in multi-core processor and transitioning each core to respective on / off power state |
CN101546276B (zh) * | 2008-03-26 | 2012-12-19 | 国际商业机器公司 | 多核环境下实现中断调度的方法及多核处理器 |
US8010822B2 (en) | 2008-03-28 | 2011-08-30 | Microsoft Corporation | Power-aware thread scheduling and dynamic use of processors |
US20110213947A1 (en) * | 2008-06-11 | 2011-09-01 | John George Mathieson | System and Method for Power Optimization |
US20100030927A1 (en) * | 2008-07-29 | 2010-02-04 | Telefonaktiebolaget Lm Ericsson (Publ) | General purpose hardware acceleration via deirect memory access |
US8199917B2 (en) | 2008-10-29 | 2012-06-12 | International Business Machines Corporation | SID management for access to encrypted drives |
JP5109935B2 (ja) * | 2008-11-10 | 2012-12-26 | 富士通株式会社 | プロセッサシステムの動作方法およびプロセッサシステム |
US8135972B2 (en) | 2009-03-10 | 2012-03-13 | Cortina Systems, Inc. | Data interface power consumption control |
US8458676B2 (en) * | 2009-06-30 | 2013-06-04 | International Business Machines Corporation | Executing platform-independent code on multi-core heterogeneous processors |
US8364857B2 (en) * | 2009-08-31 | 2013-01-29 | Qualcomm Incorporated | Wireless modem with CPU and auxiliary processor that shifts control between processors when in low power state while maintaining communication link to wireless network |
US8234431B2 (en) | 2009-10-13 | 2012-07-31 | Empire Technology Development Llc | Interrupt masking for multi-core processors |
US8566836B2 (en) | 2009-11-13 | 2013-10-22 | Freescale Semiconductor, Inc. | Multi-core system on chip |
US9098274B2 (en) | 2009-12-03 | 2015-08-04 | Intel Corporation | Methods and apparatuses to improve turbo performance for events handling |
KR101697937B1 (ko) * | 2010-01-08 | 2017-02-01 | 삼성전자주식회사 | 멀티프로세서 시스템에서 동적 태스크 마이그레이션을 위한 방법 및 시스템 |
US20110213935A1 (en) * | 2010-03-01 | 2011-09-01 | Arm Limited | Data processing apparatus and method for switching a workload between first and second processing circuitry |
US8418187B2 (en) | 2010-03-01 | 2013-04-09 | Arm Limited | Virtualization software migrating workload between processing circuitries while making architectural states available transparent to operating system |
CN101923491A (zh) | 2010-08-11 | 2010-12-22 | 上海交通大学 | 多核环境下线程组地址空间调度和切换线程的方法 |
-
2011
- 2011-09-06 WO PCT/US2011/050580 patent/WO2013036222A1/en active Application Filing
- 2011-09-06 CN CN201610536651.1A patent/CN106155265B/zh active Active
- 2011-09-06 IN IN1367CHN2014 patent/IN2014CN01367A/en unknown
- 2011-09-06 JP JP2014528345A patent/JP6197196B2/ja active Active
- 2011-09-06 GB GB1402807.0A patent/GB2507696B/en active Active
- 2011-09-06 KR KR1020197012473A patent/KR102082242B1/ko active IP Right Grant
- 2011-09-06 DE DE112011105590.0T patent/DE112011105590T5/de active Pending
- 2011-09-06 KR KR1020167012946A patent/KR101889755B1/ko active IP Right Grant
- 2011-09-06 US US13/992,361 patent/US9360927B2/en not_active Expired - Fee Related
- 2011-09-06 KR KR1020187018280A patent/KR102082241B1/ko active IP Right Grant
- 2011-09-06 KR KR1020167018264A patent/KR101873935B1/ko active IP Right Grant
- 2011-09-06 KR KR1020167012948A patent/KR101889756B1/ko active IP Right Grant
- 2011-09-06 CN CN201180073263.XA patent/CN103765409A/zh active Pending
- 2011-09-06 KR KR1020147005804A patent/KR101624061B1/ko active IP Right Grant
-
2012
- 2012-09-05 TW TW105114441A patent/TWI622874B/zh active
- 2012-09-05 TW TW105118773A patent/TWI622875B/zh active
- 2012-09-05 TW TW101132336A patent/TWI564704B/zh not_active IP Right Cessation
- 2012-09-05 TW TW104137165A patent/TWI622872B/zh active
-
2016
- 2016-04-21 US US15/134,770 patent/US9864427B2/en active Active
- 2016-04-21 US US15/134,756 patent/US10048743B2/en active Active
- 2016-06-24 US US15/192,134 patent/US9870047B2/en active Active
-
2018
- 2018-07-24 US US16/043,738 patent/US10664039B2/en active Active
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE112011105590T5 (de) | Energieeffiziente Prozessorarchitektur | |
DE112011103193B4 (de) | Bereitstellung einer Pro-Kern-Spannungs-und Frequenzsteuerung | |
DE112007001987B4 (de) | Überführen einer Rechenplattform in einen Systemzustand niedriger Leistung | |
DE102014003704B4 (de) | Plattform-agnostisches Powermanagement | |
US9098274B2 (en) | Methods and apparatuses to improve turbo performance for events handling | |
DE10393969T5 (de) | Mechanismus zur Verteilung von Unterbrechungen niedrigster Priorität unter Berücksichtigung des Prozessorleistungszustands | |
DE102009015495A1 (de) | Energieverwaltung bei einer Plattform basierend auf der Lenkung über die Wartezeit | |
DE112012007115T5 (de) | Wahlweise Logikprozessor-Zählung und Typauswahl für eine gegebene Arbeitsbelastung basierend auf Wärme- und Leistungsbudget-Einschränkungen der Plattform | |
DE112017003080T5 (de) | Prozessor mit gleichzeitigem kern und gewebeausgang aus einem zustand mit geringer energie | |
DE102018129330A1 (de) | System, Vorrichtung und Verfahren zur prozessorexternen Überschreibung der Hardwareleistungszustandssteuerung eines Prozessors | |
DE102020134491A1 (de) | System, Vorrichtung und Verfahren zum dynamischen Justieren von Plattformenergie und -leistung basierend auf Aufgabeneigenschaften | |
DE112019001001T5 (de) | System, vorrichtung und verfahren für eine datengestützte niedrigenergiezustandssteuerung auf der grundlage von leistungsüberwachungsinformationen | |
DE102020130910A1 (de) | System, vorrichtung und verfahren für dynamische energiezustandsskalierung eines spannungsreglers für einen prozessor | |
DE102020127742A1 (de) | System, vorrichtung und verfahren für eine global bewusste reaktive lokale leistungssteuerung in einem prozessor | |
GB2537300A (en) | Power efficient processor architecture |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
R012 | Request for examination validly filed | ||
R130 | Divisional application to |
Ref document number: 112011106163 Country of ref document: DE Ref document number: 112011106104 Country of ref document: DE Ref document number: 112011106102 Country of ref document: DE Ref document number: 112011106105 Country of ref document: DE |
|
R130 | Divisional application to |
Ref document number: 112011106104 Country of ref document: DE Ref document number: 112011106105 Country of ref document: DE Ref document number: 112011106163 Country of ref document: DE Ref document number: 112011106102 Country of ref document: DE |
|
R016 | Response to examination communication |