DE112011105590T5 - Energieeffiziente Prozessorarchitektur - Google Patents

Energieeffiziente Prozessorarchitektur Download PDF

Info

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
Application number
DE112011105590.0T
Other languages
English (en)
Inventor
Andrew J. Herdrich
Rameshkumar G. Illikkal
Ravishankar Iyer
Sadagopan Srinivasan
Jaideep Moses
Srihari Makineni
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE112011105590T5 publication Critical patent/DE112011105590T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3293Power saving characterised by the action undertaken by switching to a less power-consuming processor, e.g. sub-CPU
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3206Monitoring of events, devices or parameters that trigger a change in power modality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3287Power saving characterised by the action undertaken by switching off individual functional units in the computer system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4418Suspend and resume; Hibernate and awake
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5094Allocation of resources, e.g. of the central processing unit [CPU] where the allocation takes into account power or heat criteria
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W52/00Power management, e.g. TPC [Transmission Power Control], power saving or power classes
    • H04W52/02Power saving arrangements
    • H04W52/0209Power saving arrangements in terminal devices
    • H04W52/0261Power saving arrangements in terminal devices managing power supply demand, e.g. depending on battery level
    • H04W52/0274Power 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/028Power 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W88/00Devices specially adapted for wireless communication networks, e.g. terminals, base stations or access point devices
    • H04W88/02Terminal devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1028Power efficiency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02BCLIMATE CHANGE MITIGATION TECHNOLOGIES RELATED TO BUILDINGS, e.g. HOUSING, HOUSE APPLIANCES OR RELATED END-USER APPLICATIONS
    • Y02B70/00Technologies for an efficient end-user side electric power management and consumption
    • Y02B70/30Systems 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
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Reducing energy consumption in communication networks
    • Y02D30/70Reducing energy consumption in communication networks in wireless communication networks

Abstract

Bei einer Ausführungsform schließt die vorliegende Erfindung ein Verfahren ein, um einen Interrupt von einem Beschleuniger zu empfangen, ein Wiederaufnahmesignal direkt an einen kleinen Kern zu senden, der auf den Interrupt anspricht, und einen Teilsatz eines Ausführungsstandes des großen Kerns an den ersten kleinen Kern bereitzustellen und zu bestimmen, ob der kleine Kern eine Anforderung behandeln kann, die mit dem Interrupt verbunden ist, und eine Operation entsprechend der Anforderung im kleinen Kern auszuführen, wenn die Bestimmung bejaht wird, und andernfalls den Ausführungsstand des großen Kerns und das Wiederaufnahmesignal an den großen Kern bereitzustellen. Weitere Ausführungsformen sind beschrieben und werden beansprucht.

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 in 1, kann Prozessor 100 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 von 1 schließt Prozessor 100 eine Vielzahl von großen Kernen ein. Bei der speziell gezeigten Ausführungsform sind zwei solche Kerne 110a und 110b (generell große Kerne 110) 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 Kernen 120a120n (generell kleine Kerne 120) ein. Obwohl 8 solcher Kerne in der Ausführungsform von 1 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 Kerne 120 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 Kerne 120 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 Kerne 120 zu einer Kopplungsstruktur 130 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 Beschleuniger 140a140c auch mit der Kopplungsstruktur 130 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 von 1 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 auf 2 ist ein Blockdiagramm eines Prozessors gemäß einer weiteren Ausführungsform der vorliegenden Erfindung gezeigt, bei der Prozessor 100' einen einzelnen großen Kern 110 und einen einzelnen kleinen Kern 120 einschließt zusammen mit der Kopplungsstruktur 130 und dem Beschleuniger 140a–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 in 3 ist eine Software-Domain 210 und eine Hardware-Domain 220 vorhanden. Im Allgemeinen entspricht die Software-Domain 210 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 von 3 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 von 4 abhängig von einer gegebenen Implementierung von verschiedenen Agenten ausgeführt werden kann. Beispielsweise kann bei einigen Ausführungsformen das Verfahren 300 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 Verfahren 300 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 Verfahren 300 damit beginnen, sowohl große als auch kleine Kerne in einen Schlafzustand zu versetzen (Block 310). 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 Block 320 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 Block 330 ü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 Block 330 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 Raute 340 ü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 von 4 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 Block 350 ü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 Block 360 ü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 Block 370 ü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 von 4 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 in 5 kann das Verfahren 380 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 Verfahren 380 bei Block 382 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 (Raute 384) 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 Block 386 ü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 (Block 388) 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 von 5 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 in 6 kann Prozessor 400 ein Mehrkernprozessor einschließlich einer ersten Vielzahl von Kernen 410 1410 n sein, die gegenüber einem OS offengelegt sein können, und einer zweiten Vielzahl von Kernen 410a–x, die dem OS gegenüber transparent sind.
  • Wie gesehen können die mehreren Kerne über eine Kopplungsstruktur 415 mit einem Systemagent oder Nichtkern 420 gekoppelt sein, der mehrere Komponenten umfasst. Wie gesehen kann der Nichtkern 420 einen gemeinsam benutzten Cache 430 umfassen, der ein Last Level Cache sein kann. Außerdem kann der Nichtkern einen integrierten Memory-Controller 440, verschiedene Schnittstellen 450a–n, Power Control Unit 455 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 PCU 450 die Wecklogik 452 einschließen, die Weckvorgänge wie oben beschrieben ausführen kann. Deshalb kann Logik 452 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übertragungslogik 454 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-Speicher 456 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 PCU 450 weiter eine Logik bezüglich nicht definierter Handhabung 458 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-Speicher 456 geschrieben werden kann. Obwohl diese bestimmte Logik in der Ausführungsform von 6 gezeigt ist, wird dadurch der Umfang der vorliegenden Erfindung in dieser Hinsicht in keiner Weise eingeschränkt. Beispielsweise können die verschiedenen Logiken der PCU 450 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 APIC 465 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 Prozessor 400 mit einem Systemspeicher 460 z. B. über einen Speicherbus kommunizieren. Des Weiteren kann durch die Schnittstellen 450 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 von 6 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 in 7 kann Prozessor 500 ein wahrer heterogener Prozessor einschließlich eines großen Kerns 510 und eines kleinen Kerns 520 sein. Wie gesehen kann jeder Prozessor mit seiner eigenen privaten Cache-Speicher-Hierarchie verbunden sein, das heißt, den Cache-Speichern 515 und 525, die sowohl Level 1- als auch Level 2-Cache-Speicher einschließen können. Wiederum können die Kerne zusammen über eine Ring-Kopplungsstruktur 530 gekoppelt sein. Die Vielfachbeschleuniger 540a und 540b und ein LLC, das heißt ein L3-Cache 550, 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-Kopplungsstruktur 530 übertragen werden. Wie oben beschrieben, kann der Ausführungsstand des großen Kerns 500 vor dem Eintritt in einen gegebenen Energiesparzustand im Cache 550 gespeichert werden. Dann kann bei einem Weckvorgang des kleinen Kerns 520 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 von 7 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 von 7 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 in 7).
  • Bezugnehmend auf 8 ist ein Blockdiagramm eines Prozessors gemäß noch einer weiteren Ausführungsform der vorliegenden Erfindung gezeigt. Wie gezeigt in 8 kann Prozessor 500' ein Hybrid heterogener Prozessor sein, bei dem es eine feste Kopplung oder Integration zwischen den großen und kleinen Kernen gibt. Wie speziell in 8 zu sehen, können der große Kern 510 und der kleine Kern 520 einen gemeinsamen Cache-Speicher 518 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-Kopplungsstruktur 530 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 und 8 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 von 8 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 Kern 710 und einem kleinen Kern 720 auftreten. Wie gesehen kann eine längere Schlafdauer für den großen Kern 710 ermöglicht werden, indem zugelassen wird, dass ein Geräte-Interrupt direkt an den kleinen Kern 720 bereitgestellt wird, und durch das Bestimmen im kleinen Kern, ob dieser den Interrupt behandeln kann. Wenn dies so ist, kann der große Kern 710 in einem Schlafzustand verbleiben und der Interrupt beim kleinen Kern 720 behandelt werden.
  • Bezugnehmend auf 10 ist eine grafische Darstellung von Energiesparmodi gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie gezeigt in 10 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 von 10.
  • 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 in 11 ist das Mehrprozessorsystem 600 ein System mit einer Punkt-zu-Punkt-Verbindung und umfasst einen ersten Prozessor 670 und einen zweiten Prozessor 680, die über eine Punkt-zu-Punkt-Verbindung 650 gekoppelt sind. Wie gezeigt in 11 kann jeder der Prozessoren 670 und 680 ein Mehrkernprozessor einschließlich eines ersten und zweiten Prozessorkerns sein (d. h., die Prozessorkerne 674a und 674b und Prozessorkerne 684a und 684b), 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 Prozessor 670 des Weiteren einen Memory Controller Hub (MCH) 672 und die Punkt-zu-Punkt-(P-P)-Schnittstellen 676 und 678. Auf ähnliche Weise umfasst der zweite Prozessor 680 eine MCH 682 und die P-P-Schnittstellen 686 und 688. Wie gezeigt in 11 koppeln die MCHs 672 und 682 die Prozessoren mit entsprechenden Speichern, das heißt, einem Speicher 632 und einem Speicher 634, die Teile des Systemspeichers sein können (z. B. DRAM), die lokal an den entsprechenden Prozessoren angebracht sind. Der erste Prozessor 670 und der zweite Prozessor 680 können über die P-P-Verbindungen 652 bzw. 654 an einen Chipsatz 690 gekoppelt sein. Wie gezeigt in 11, umfasst der Chipsatz 690 die P-P-Schnittstellen 694 und 698.
  • Des Weiteren umfasst der Chipsatz 690 eine Schnittstelle 692 für die Kopplung von Chipsatz 690 mit einer Hochleistungs-Grafikengine 638 über eine P-P-Kopplungsstruktur 639. Der Chipsatz 690 kann wiederum über die Schnittstelle 696 an einen ersten Bus 616 gekoppelt sein. Wie gezeigt in 11 können verschiedene Eingabe-/Ausgabe-(I/O)-Geräte 614 an den ersten Bus 616 gekoppelt werden, zusammen mit einer Busbrücke 618, die den ersten Bus 616 an einen zweiten Bus 620 koppelt. Verschiedene Geräte können an den zweiten Bus 620 gekoppelt werden, z. B. in einer Ausführungsform u. a. Tastatur/Maus 622, Kommunikationsgeräte 626 und eine Datenspeichereinheit 628, wie z. B. ein Festplattenlaufwerk oder ein Massenspeichergerät, das Code 630 umfassen kann. Des Weiteren kann ein Audio-I/O 624 an den zweiten Bus 620 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)

  1. 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.
  2. Vorrichtung nach Anspruch 1, wobei die Logik immer den zweiten Kern und nicht den ersten Kern veranlasst, ansprechend auf den Interrupt aufgeweckt zu werden.
  3. 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.
  4. 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.
  5. 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.
  6. 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.
  7. 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.
  8. Vorrichtung nach Anspruch 7, wobei der zweite Kern den Interrupt behandelt, wenn der Interrupt eine Anforderung für eine Datentransferoperation umfasst.
  9. 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.
  10. 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.
  11. 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.
  12. 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.
  13. 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.
  14. Verfahren nach Anspruch 13, weiter umfassend die Operation danach entsprechend der Anforderung im ersten großen Kern auszuführen.
  15. 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.
  16. 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.
  17. 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.
  18. System nach Anspruch 17, wobei die erste Vielzahl von Kernen aus einem heterogenen Design der zweiten Vielzahl von Kernen ist.
  19. System nach Anspruch 17, wobei die zweite Vielzahl von Kernen für ein Betriebssystem (OS) transparent ist.
  20. 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.
DE112011105590.0T 2011-09-06 2011-09-06 Energieeffiziente Prozessorarchitektur Pending DE112011105590T5 (de)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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 上海交通大学 多核环境下线程组地址空间调度和切换线程的方法

Also Published As

Publication number Publication date
KR20140056322A (ko) 2014-05-09
KR20160060163A (ko) 2016-05-27
KR101889755B1 (ko) 2018-08-21
KR101624061B1 (ko) 2016-05-24
CN106155265A (zh) 2016-11-23
KR102082241B1 (ko) 2020-02-27
KR20160086421A (ko) 2016-07-19
US10048743B2 (en) 2018-08-14
US20130262902A1 (en) 2013-10-03
KR101889756B1 (ko) 2018-08-21
US10664039B2 (en) 2020-05-26
US20160299558A1 (en) 2016-10-13
JP2014528115A (ja) 2014-10-23
TW201631441A (zh) 2016-09-01
KR20160060162A (ko) 2016-05-27
JP6197196B2 (ja) 2017-09-20
TW201329693A (zh) 2013-07-16
KR20180077308A (ko) 2018-07-06
GB2507696A (en) 2014-05-07
US20180329478A1 (en) 2018-11-15
TW201640276A (zh) 2016-11-16
KR101873935B1 (ko) 2018-07-04
WO2013036222A1 (en) 2013-03-14
US9360927B2 (en) 2016-06-07
TW201629693A (zh) 2016-08-16
TWI622874B (zh) 2018-05-01
IN2014CN01367A (de) 2015-04-24
KR20190049927A (ko) 2019-05-09
US9864427B2 (en) 2018-01-09
US9870047B2 (en) 2018-01-16
CN106155265B (zh) 2020-03-31
GB2507696B (en) 2017-08-02
GB201402807D0 (en) 2014-04-02
KR102082242B1 (ko) 2020-02-27
US20160306415A1 (en) 2016-10-20
CN103765409A (zh) 2014-04-30
TWI622875B (zh) 2018-05-01
TWI622872B (zh) 2018-05-01
TWI564704B (zh) 2017-01-01
US20160299559A1 (en) 2016-10-13

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