DE10393969T5 - Mechanismus zur Verteilung von Unterbrechungen niedrigster Priorität unter Berücksichtigung des Prozessorleistungszustands - Google Patents

Mechanismus zur Verteilung von Unterbrechungen niedrigster Priorität unter Berücksichtigung des Prozessorleistungszustands Download PDF

Info

Publication number
DE10393969T5
DE10393969T5 DE10393969T DE10393969T DE10393969T5 DE 10393969 T5 DE10393969 T5 DE 10393969T5 DE 10393969 T DE10393969 T DE 10393969T DE 10393969 T DE10393969 T DE 10393969T DE 10393969 T5 DE10393969 T5 DE 10393969T5
Authority
DE
Germany
Prior art keywords
component
processor
task priority
information
interrupt
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.)
Ceased
Application number
DE10393969T
Other languages
English (en)
Inventor
Shivnandan Portland Kaushik
John Mountain View Horigan
Alon Ramat Hasharon Naveh
James Banks Crossland
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 DE10393969T5 publication Critical patent/DE10393969T5/de
Ceased legal-status Critical Current

Links

Classifications

    • 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
    • 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
    • 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/3243Power saving in microcontroller unit
    • 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/329Power saving characterised by the action undertaken by task scheduling
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Power Sources (AREA)
  • Exchange Systems With Centralized Control (AREA)
  • Pinball Game Machines (AREA)
  • Pharmaceuticals Containing Other Organic And Inorganic Compounds (AREA)

Abstract

Verfahren, Folgendes umfassend:
Empfangen erster Leistungszustandsinformationen von einer ersten Komponente und zweiter Leistungszustandsinformationen von einer zweiten Komponente;
Empfangen erster Aufgabenprioritätsinformationen von der ersten Komponente und zweiter Aufgabenprioritätsinformationen von der zweiten Komponente;
Empfangen einer Unterbrechungsanforderung von einer ersten Vorrichtung zum Bedienen;
Beurteilen von Informationen über Leistungszustand und Aufgabenpriorität für die erste und zweite Komponente, um zu bestimmen, welche Komponente die Unterbrechungsanforderung bedienen soll;
Auswählen auf der Grundlage der Informationen über den Leistungszustand und der Aufgabenpriorität entweder der ersten Komponente oder der zweiten Komponente, eine Zielkomponente zum Bedienen der Unterbrechungsanforderung zu bilden; und
Übermitteln der Unterbrechungsanforderung an die Zielkomponente.

Description

  • GEBIET DER ERFINDUNG
  • Die vorliegende Erfindung betrifft im Allgemeinen das Gebiet der Mikroprozessoren und Computersysteme. Insbesondere betrifft die vorliegende Erfindung ein Verfahren und eine Vorrichtung für einen Mechanismus zur Verteilung von Unterbrechungen niedrigster Priorität unter Berücksichtigung des Prozessorleistungszustands.
  • ALLGEMEINER STAND DER TECHNIK
  • Computersysteme haben unsere Gesellschaft zunehmend durchdrungen. Die Verarbeitungsfähigkeiten von Computer haben die Effizienz und die Produktivität von Arbeitern in einem breiten Berufespektrum erhöht. Da die Kosten für Kauf und Betrieb eines Computers fortgesetzt fallen, ist es mehr und mehr Konsumenten möglich, neuere und schnellere Maschinen zu nutzen. Weiterhin genießen viele Menschen die Verwendung von Notebook-Computern wegen der Freiheit. Mobile Computer gestatten Benutzern, ihre Daten und ihre Arbeit leicht mitzunehmen, wenn sie das Büro verlassen oder reisen. Mit diesem Szenarium sind Vertriebsmitarbeiter, Geschäftsleute und sogar Studenten ziemlich vertraut.
  • Eine ähnliche Erscheinung ist bei Desktop- und Server-Maschinen aufgetreten. Mit der Entwicklung neuerer Entwürfe und Merkmale setzt sich das exponentielle Wachstum der Rechenfähigkeiten von Prozessoren fort. Computer-Entwürfe sowohl für den mobilen als auch den Desktop-Bereich bewegen sich allmählich in Richtung auf die Verwendung von Multi-Core- oder Multi-Threading-Prozessoren zu, welche gleichzeitig eine Anzahl von Anwendungen und Aufgaben durchführen können. Manche Systeme werden auch mit mehreren physikalischen Prozessoren gebaut. Die Kosten für eine erhöhte Rechenleistung umfassen jedoch auch die wirklichen Stromkosten. Mit anderen Worten, der Stromverbrauch in diesen Maschinen wird extrem hoch. Auch thermische Überlegungen können aufgrund der Beziehung zum Strom wichtig werden.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Die vorliegende Erfindung wird beispielhaft illustriert und wird durch die Figuren der begleitenden Zeichnungen nicht eingeschränkt, bei welchen gleiche Bezugszeichen gleiche Elemente bezeichnen und bei welchen:
  • 1 ein Blockdiagramm eines Parallelprozessor-Computersystems ist, welches mit einem Chipsatz und mit Prozessoren ausgebildet ist, welche einen Mechanismus zur Verteilung von Unterbrechungen niedrigster Priorität unter Berücksichtigung des Leistungszustands gemäß einer Ausführungsform der vorliegenden Erfindung umfassen;
  • 2 ein Blockdiagramm eines Multi-Core-Prozessormoduls und eines zugeordneten Chipsatzes ist, welche eine Ausführungsform eines Unterbrechungsmechanismus, welcher den Leistungszustand berücksichtigt, der vorliegenden Erfindung umfassen;
  • 3 ein Blockdiagramm eines Multi-Threading-Prozessors und eines zugeordneten Chipsatzes ist, welche eine andere Ausführungsform eines Unterbrechungsmechanismus, welcher den Leistungszustand berücksichtigt, gemäß der vorliegenden Erfindung umfassen;
  • 4 die Prozessorleistungszustände bei einer Ausführungsform der vorliegenden Erfindung illustriert;
  • 5 ein Diagramm eines Eintrags einer Prozessoraufgaben-Informationstabelle für einen Chipsatz einer Ausführungsform ist;
  • 6A bis D Ablaufdiagramme sind, welche eine Ausführungsform eines Verfahrens zum Verteilen von Unterbrechungen unter Berücksichtigung des Leistungszustands illustrieren; und
  • 7 ein Ablaufdiagramm ist, welches eine andere Ausführungsform eines Verfahrens zur Verteilung von Unterbrechungen unter Berücksichtigung des Prozessorleistungszustands illustriert.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Es werden ein Verfahren und eine Vorrichtung für einen Mechanismus für eine Verteilung von Unterbrechungen niedrigster Priorität unter Berücksichtigung des Prozessorleistungszustands offenbart. Die hier beschriebenen Ausführungsformen werden insbesondere im Kontext eines universellen Mikroprozessors und Chipsatzes beschrieben. Obwohl die folgenden Ausführungsformen unter Bezugnahme auf einen Prozessor und auf einen Chipsatz beschrieben werden, sind andere Ausführungsformen auf andere Typen integrierter Schaltkreise und Logikvorrichtungen anwendbar. Die gleichen Verfahren und Lehren der vorliegenden Erfindung können leicht auf andere Schaltungs- oder Halbleitervorrichtungen angewendet werden, welche von einer Leistungsüberwachung und verbesserten Unterbrechungsbehandlung profitieren können. Die Lehren der vorliegenden Erfindung sind auf jeden Prozessor oder jede Maschine anwendbar, welche Unterbrechungen durchführen. Die vorliegende Erfindung ist jedoch nicht auf ein Parallelprozessorsystem oder ein Mult-Core-Prozessormodul begrenzt und kann auf jeden Mikroprozessor und auf jeder Maschine angewendet werden, auf welchen Multi-Threading oder ein Multi-Tasking durchgeführt werden kann.
  • Bei der folgenden Beschreibung werden für Erklärungszwecke zahlreiche spezifische Einzelheiten dargelegt, um ein gründliches Verständnis der vorliegenden Erfindung bereitzustellen. Durchschnittsfachleute werden jedoch erkennen, daß diese spezifischen Einzelheiten nicht nötig sind, um die vorliegende Erfindung zu praktizieren. In anderen Fällen werden wohlbekannte elektrische Strukturen und Schaltungen nicht in besonderen Einzelheiten dargelegt, um die vorliegende Erfindung nicht unnötig zu verschleiern.
  • Technologische Fortschritte haben dazu geführt, daß sich Prozessor- und Anwendungsparallelität weiter verbreitet haben. Viele Server und Plattformen wenden sich zunehmend dem Threading als einem Weg zur Steigerung des Gesamtsystemleistungsvermögens zu. Viele Anwendungen sind threaded, in mehrere Befehlsströme aufgeteilt, um den Vorteil mehrerer Prozessoren zu nutzen. Betriebssysteme, welche parallelverarbeitungsfähig sind, können diese Threads zur parallelen Verarbeitung auf mehrere Prozessoren in dem System einplanen. Weiterhin kann Parallelität auf Thread-Ebene auch auf jedem Prozessor auftreten. Anwendungen mit Dual- oder Parallelverarbeitung in den Bereichen Web-Serving, Suchmaschinen, Sicherheit, Streaming-Medien und Datenbanken können beispielsweise den Vorteil der gesteigerten Verarbeitungsleistung von Multi-Threading und von Parallelprozessor-Computersystemen nutzen.
  • Ein Typ der Multi-Threading-Technik, wie beispielsweise die Hyper-Threading-Technik, ist eine Form der simultanen Multi-Threading-Technik (SMT), bei welcher mehrere Threads von Software-Anwendungen gleichzeitig auf einem Prozessor ablaufen können. Dies wird durch ein Duplizieren des Strukturzustands auf jedem Prozessor erreicht, während ein Satz Prozessorausführungsressourcen gemeinsam benutzt wird. Der Strukturzustand verfolgt den Fluß eines Programms oder Threads nach, und die Ausführungsressourcen sind die Einheiten auf dem Prozessor, welche die Arbeit ausführen (d. h. addieren, multiplizieren, laden usw.). Bei manchen Parallelprozessorsystemen weist jeder Prozessor seinen eigenen Satz Prozessorausführungsressourcen und seinen eigenen Strukturzustand auf. Bei Multi-Threading-fähigen Parallelprozessorsystemen kann der Strukturzustand für jeden Prozessor dupliziert werden, obwohl jeder Prozessor immer noch einen Satz Ausführungsressourcen aufweist. Beim Einplanen von Threads behandelt das Betriebssystem die separaten Strukturzustände auf jedem Prozessor als einen separaten, „logischen" Prozessor. Logische Prozessoren nutzen fast alle anderen Ressourcen auf dem physikalischen Prozessor gemeinsam, wie beispielsweise Cache-Speicher, Ausführungseinheiten, Sprungprädiktoren, Steuerungslogik und Busse. Wie physikalische Prozessoren, kann jeder logische Prozessor unabhängig auf Unterbrechungen reagieren. Ein logischer Prozessor kann einen ersten Software-Thread nachverfolgen, während ein anderer logischer Prozessor gleichzeitig einen zweiten Software-Thread nachverfolgen kann. Da mehrere Threads einen Satz Ausführungsressourcen gemeinsam benutzen, kann ein Thread Ressourcen verwenden, welche sich im Ruhezustand befänden, wenn der Prozessor andernfalls nur einen Thread ausführen würde. Im Ergebnis können das Gesamtleistungsvermögen und die Systemreaktion verbessert werden.
  • Es können verschiedene Wege zum Verbessern des Stromverbrauchs und des Leistungsvermögens einer Prozessorarchitektur wünschenswert sein. Ein interessanter Bereich bezieht das Behandeln und das Bedienen von Unterbrechungsanforderungen von unterschiedlichen Systemvorrichtungen durch Prozessoren ein. Bei manchen Systemen werden Unterbrechungsanforderungen durch die Chipsatzlogik verwaltet. Die Chipsatzlogik fängt diese Anforderungen ab und bestimmt, auf welchen Prozessor die Anforderung zur Bedienung verteilt wird. Bei Einprozessorsystemen ist dies einfach, da der Chipsatz ein einzelnes Ziel aufweist. Bei Systemen, welche mehrere physikalische und/oder logische Prozessoren umfassen, kann die Aufgabe der Verteilung einer Unterbrechungsanforderung schwieriger werden, da der Chipsatz versucht, den Einfluß von Unterbrechungen auf das Leistungsvermögen zu minimieren.
  • Die fortgeschrittene programmierbare Unterbrechungssteuergerät-(Advanced Programmable Interrupt Controller, APIC)-Architektur gestattet die Lieferung einer Geräteunterbrechung an einen Prozessor, welcher in einem Satz von Zielprozessoren mit der niedrigsten Priorität arbeitet. Diese Prozessorpriorität wird über die Inhalte des Aufgabenprioritätsregisters für diese Prozessoren festgestellt. Dieses Merkmal basiert auf der Idee, daß die Priorität, mit welcher ein Prozessor gegenwärtig läuft, die Kritikalität der Aufgabe repräsentiert, welche gerade durchgeführt wird. Je höher die Aufgabenpriorität desto weniger wünschenswert wäre es, diesen Prozessor zu unterbrechen, da ein unerwünschter Einfluß auf das Gesamtleistungsvermögen auftreten kann. Weiterhin würde durch Weiterleiten einer Unterbrechung an den Prozessor, welcher im System mit der niedrigsten Priorität arbeitet, eine bessere Chance bereitgestellt, daß die Unterbrechung mit einer minimalen Wartezeit bedient wird.
  • Gegenwärtige Mechanismen zur Unterbrechungslieferung beachten keine Prozessorleistungszustände und wissen folglich nicht, ob sich ein Zielprozessor in einem Stromsparmodus befindet. Diese Unterbrechungsmechanismen ignorieren, ob ein Prozessor sich in einem Arbeitszustand oder sich in irgendeinem Typ eines Schlafzustands (d. h. Haltezuteilung, Tiefschlaf usw.) befindet. Im Ergebnis können Anforderungen zu einer Unterbrechungsbedienung an einen schlafenden Prozessor gerichtet werden, welche bewirken, daß der Prozessor aufwacht und den Schlafmodus zu Gunsten eines Betriebsmodus verläßt, um die Unterbrechung zu behandeln. Da die Schlafzustände des Prozessors entworfen wurden, um Strom zu sparen, wird dieses Ziel durch das Aufwecken eines schlafenden Prozessors zum Durchführen einer Aufgabe durchkreuzt. Mit einer Weiterverbreitung von Parallelprozessor- und Multi-Thread-Konfigurationen sowohl bei mobilen als auch bei Arbeitsplatz-Computersystemen können Stromsparverfahren zum Vermeiden von Störungen der anderer Prozessorstromsparmodi beim Liefern von Unterbrechungen wichtiger werden.
  • Ausführungsformen der vorliegenden Erfindung erlauben Lieferungsschemata für Unterbrechungen niedriger Priorität, um beim Bestimmen, wohin Unterbrechungsanforderungen gesendet werden sollen, Prozessorstromsparzustände zu berücksichtigen. Durch Implementieren von Ausführungsformen der vorliegenden Erfindung wäre ein Prozessor in einem tieferen Schlafzustand als ein anderer Prozessor ein weniger bevorzugtes Ziel für eine Unterbrechung niedrigster Priorität. Im Ergebnis können Prozessoren in Schlafzuständen das Schlummern in ihren jeweiligen Schlafzuständen ohne Unterbrechung fortsetzen, was zu besseren Stromeinsparungen führt.
  • Bei manchen Ausführungsformen ist das Betriebssystem für ein Steuern der Stromsparzustände, welche auch als C-Zustände bezeichnet werden, verantwortlich, in welche Prozessoren gemäß den ACPI-Spezifikationen eintreten. Das Betriebssystem oder die Systemverwaltungs-Software kann einen passenden Leistungszustand in Abhängigkeit davon wählen, wie weit sich ein Prozessor im Ruhezustand befunden hat. Obwohl eine Anzahl von ACPI-fähigen Betriebssystemen verfügbar ist, können alternative Ausführungsformen der vorliegenden Erfindung auch so implementiert werden, daß sie auf so genannten „Vorläufer-" Betriebssystemen und Maschinen arbeiten, welche nicht ACPI-fähig sein müssen. Alternative Ausführungsformen der vorliegenden Erfindung gestatten eine Fähigkeit zum Durchführen einer Unterbrechungsverteilung niedrigster Priorität, welche den Prozessorleistungszustand beachtet, bei älteren Systemen ohne oder mit wenigen Software-Modifikationen. Dies kann insbesondere bei älteren ACPI-fähigen Betriebssystemen wünschenswert sein, welche nicht modifiziert werden können.
  • Unter Bezugnahme auf 1 wird jetzt ein beispielhaftes Computersystem 100 gezeigt. Das System 100 umfaßt eine Komponente, wie beispielsweise Prozessoren 101, 105 und den Chipsatz 116, 130, um einen Mechanismus zur Verteilung von Unterbrechungen unter Berücksichtigung des Leistungszustands gemäß der vorliegenden Erfindung einzusetzen, wie beispielsweise bei der hier beschriebenen Ausführungsform. Das System 100 ist repräsentativ für Verarbeitungssysteme auf der Grundlage der PENTIUM® III-, PENTIUM® 4-, TitanTM- und/oder XScaleTM-Mikroprozessoren, welche von Intel Corporation in Santa Clara, Kalifornien, erhältlich sind, obwohl auch andere Systeme (einschließlich PCs mit anderen Mikroprozessoren, technischer Arbeitsstationen, Set-Top-Boxen und dergleichen) verwendet werden können. Bei einer Ausführungsform kann das Beispielsystem 100 eine Version des WINDOWSTM-Betriebssystems ausführen, welche von Microsoft Corporation in Redmond, Washington, erhältlich ist, obwohl auch andere Betriebssysteme (UNIX und Linux beispielsweise), eingebettete Software und/oder graphische Benutzerschnittstellen verwendet werden können. Folglich ist die vorliegende Erfindung nicht auf eine spezifische Kombination von Hardware-Schaltkomplex und Software beschränkt.
  • Die vorliegende Verbesserung ist nicht auf Computersysteme beschränkt. Alternative Ausführungsformen der vorliegenden Erfindung können in anderen Geräten verwendet werden, wie beispielsweise in tragbaren Geräten und eingebetteten Anwendungen. Einige Beispiele tragbarer Geräte umfassen Mobiltelefone, Internetprotokoll-Vorrichtungen, digitale Kameras, PDA-Minicomputer (PDAs) und tragbare PCs. Eingebettete Anwendungen können einen Mikrokontroller, einen digitalen Signalprozessor (DSP), einen Systemchip, Netzwerk-Computer (NetPC), Set-Top-Boxen, Netzwerk-Hubs, Fernnetz-(WAN)-Schalter oder ein beliebiges anderes Parallelprozessor- oder Multi-Threading-System umfassen, welches Unterbrechungen verwendet. Weiterhin wurden einige Architekturen implementiert, um den Stromverbrauch über niedrige Leistungszustände oder Schlafmodi zu reduzieren. Mit der fortgesetzten Abnahme von Formfaktoren elektronischer Vorrichtungen und der fortgesetzten Zunahme der Leistungsanforderungen elektronischer Komponenten werden zusätzliche Anstrengungen gebraucht, um bei einem minimalen negativen Einfluß auf das Leistungsvermögen Strom zu sparen.
  • 1 ist ein Blockdiagramm eines Parallelprozessor-Computersystems 100, welches mit zwei Prozessoren, A 101 und B 105 ausgebildet ist, welcher jeder eine Unterbrechungsbehandlungslogik 103, 107 gemäß der vorliegenden Erfindung umfaßt. Die vorliegende Ausführungsform wird im Kontext eines Systems beschrieben, welches mehrere physikalische Prozessoren umfaßt, aber es können alternative Ausführungsformen mit einem Multi-Threading-Prozessor verwendet werden, bei dem auf einem einzelnen physikalischen Prozessor mehrere logische Prozessoren existieren. Genauso kann eine andere Ausführungsform der vorliegenden Erfindung mit einem mehrkernigen Modul implementiert werden, welches mehrere Prozessorkerne aufweist, welche zusammen in einem einzelnen Modul gepackt sind. Das System 100 ist ein Beispiel einer Hub-Architektur. Das Computersystem 100 umfaßt die Prozessoren 101, 105 zum Verarbeiten von Datensignalen. Die Prozessoren 101, 105 können Mikroprozessoren mit komplexem Befehlssatz (CISC), Mikroprozessoren mit reduziertem Befehlsatz (RISC), Mikroprozessoren mit sehr langem Befehlswort (VLIW), Prozessoren, welche eine Kombination aus Befehlssätzen implementieren, oder beliebige andere Prozessorvorrichtungen sein, wie beispielsweise digitale Signalprozessoren.
  • Die Prozessoren 101, 105 sind mit einem Prozessor-Bus 110 verbunden, welcher Datensignale zwischen den Prozessoren 101, 105 und anderen Komponenten im System 100 übertragen kann. Die Elemente des Systems 100 führen ihre herkömmlichen Funktionen durch, welche Durchschnittsfachleuten wohlbekannt sind. Bei einer Ausführungsform umfassen die Prozessoren 101, 105 jeweils einen internen Level-1-(L1)-Cache-Speicher 102, 106. Es befindet sich auch ein Unterbrechungsbehandlungsmechanismus 103, 107 in den Prozessoren 101, 105. Bei einer Ausführungsform stellt die Unterbrechungsbehandlung 103, 107 Informationen hinsichtlich der Prozessorpriorität und des Leistungsstatus bereit. Es können auch alternative Ausführungsformen einer Unterbrechungslogik 103, 107 in Mikrokontrollern, eingebetteten Prozessoren, Graphikvorrichtungen, DSPs und anderen Logikschaltungstypen verwendet werden. Das System 100 umfaßt einen Speicher 120.
  • Ein Systemlogikchip 116 ist mit dem Prozessor-Bus 110 und dem Speicher 120 verbunden. Der Systemlogikchip 116 in der illustrierten Ausführungsform ist ein Memory-Controller-Hub (MCH). Die Prozessoren 101, 105 können mit dem MCH 116 über einen Prozessor-Bus 110 kommunizieren. Der MCH 116 stellt einen Speicherweg 118 hoher Bandbreite zum Speicher 120 für eine Befehls- und Datenspeicherung und für eine Speicherung von Graphikbefehlen, -Daten und -Texturen bereit. Der MCH 116 dient der Lenkung von Datensignalen zwischen den Prozessoren 101, 105, dem Speicher 120 und anderen Komponenten im System 100 und der Überbrückung der Datensignale zwischen Prozessor-Bus 110, Speicher 120 und System-E/A 122. Bei manchen Ausführungsformen kann der Systemlogikchip 116 einen Graphik-Port zum Anschließen an ein Graphik-Steuergerät 112 bereitstellen. Der MCH 116 ist durch eine Speicherschnittstelle 118 mit Speicher 120 verbunden. Die Graphikkarte 112 ist durch eine Accelerated-Graphics-Port-(AGP)-Zwischenverbindung 114 mit dem MCH 116 verbunden. Bei einer Ausführungsform ist auch die Unterbrechungsbehandlungslogik 117 in dem MCH 116 angeordnet, da der Chipsatz Unterbrechungsanforderungen von verschiedenen Systemvorrichtungen empfängt und die Unterbrechungen zum Verarbeiten an passende Ziele verteilt. Bei manchen Systemen kann der Chipsatz periodisch Vorrichtungen nach Unterbrechungen (Interrupts) abfragen. Die Unterbrechungslogik 117 für den MCH 116 dieser Ausführungsform berücksichtigt beim Verteilen von Unterbrechungen, welche eine Prozessorbehandlung erfordern, die Prozessorpriorität und den Prozessorleistungszustand. Auch andere Faktoren können bei einer Unterbrechungsverteilung in Abhängigkeit von der bestimmten Implementierung betrachtet werden.
  • Das System 100 verwendet einen proprietären Hub-Schnittstellen-Bus 122, um den MCH 116 mit dem E/A-Steuergerät-Hub (ICH) 130 zu verbinden. Der ICH 130 stellt über einen lokalen E/A-Bus unmittelbare Verbindungen zu einigen E/A-Vorrichtungen bereit. Der lokale E/A-Bus ist ein Hochgeschwindigkeits-E/A-Bus zum Verbinden von Peripheriegeräten mit dem Speicher 120, dem Chipsatz und den Prozessoren 101, 105. Einige Beispiele sind der Datenspeicher 124, der drahtlose Sendeempfänger 126, der Firmware-Hub (Flash-BIOS) 128, das Legacy-E/A-Steuergerät, welches Schnittstellen für Benutzereingabe und Tastatur enthält, ein serieller Erweiterungs-Port, wie beispielsweise ein Universal Serial Bus (USB), das Audio-Steuergerät und ein Netzwerksteuergerät 134. Die Datenspeicherungsvorrichtung 124 kann ein Festplattenlaufwerk, ein Diskettenlaufwerk, ein CD-ROM-Gerät, ein Flash-Speichergerät oder ein anderes Massenspeichergerät umfassen. Die verschiedenen oben stehenden Vorrichtungen, welche sowohl mit dem MCH 116 als auch mit dem ICH 130 verbunden sind, können alle in die Lage kommen, daß sie einen Unterbrechungsdienst brauchen. Zusätzlich können die Prozessoren auch Unterbrechungen an andere Prozessoren ausgeben.
  • Ausführungsformen von Mechanismen gemäß der vorliegenden Erfindung gestatten die Übertragung von Prozessor-Schlafzustandsinformationen an die Chipsatzlogik oder an die Systemkomponente, welche für die Lieferung der Unterbrechungen niedrigster Priorität verantwortlich ist. Bei manchen Ausführungsformen ist die Chipsatzlogik erweitert, um diese Prozessor-Schlafzustandsinformationen beim Auswählen eines Zielprozessors aus einem Satz verfügbarer Zielprozessoren im System für die Lieferung der Unterbrechungen niedrigster Priorität zu verwenden. Die Mechanismen einer auf Hardware beruhenden Ausführungsform stellen eine Prioritätsbeziehung zwischen den Betriebs- und Schlafzuständen des Prozessors her. Der Mechanismus kommuniziert diesen Typ von Betriebs-/Schlafzustandsinformationen über einen oder mehrere Bus-Zyklen an den Chipsatz. Der Chipsatz bei dieser Ausführungsform ist entworfen, um die Betriebs-/Schlafzustandsinformationen zu empfangen und um die Informationen während des Unterbrechungsverteilungsalgorithmus zu berücksichtigen. Bei einer auf Software beruhenden Ausführungsform gestattet eine Erweiterung in dem Betriebssystem, daß Prozessor-Schlafzustandsinformationen indirekt an den Chipsatz oder die Systemkomponentenantwort für eine Unterbrechungslieferung an den Prozessor übertragen werden. Mit Ausführungsformen der vorliegenden Erfindung kann ein Betriebssystem gewährleisten, daß Prozessoren in tieferen Schlafzuständen weniger bevorzugte Ziele für ein Empfangen von Unterbrechungen niedriger Priorität sind, was bei Parallelprozessor- und Multi-Threading-Konfigurationen zu besseren Stromeinsparungen führt. Bei einer Ausführungsform kann dieser Mechanismus primär in Hardware implementiert werden. Alternative Ausführungsformen der vorliegenden Erfindung können ohne Hardware-Änderungen primär als Software implementiert werden. Weiterhin können einige Ausführungsformen eine Hybrid-Kombination sowohl von Hardware- als auch von Software-Komponenten verwenden. Bei wieder einer anderen Ausführungsform wird ein Schema, welches eine Kombination aus Hardware und Betriebssystems-Software umfaßt, konfiguriert, wobei das Betriebssystem individuellen Prozessoren Prozessoraufgabenprioritäts-TPR-Werte auf der Grundlage des Leistungszustands dieses Prozessors zuordnet. Beispielsweise entspricht ein niedriger Leistungszustand (d. h. ein höherwertiger C-Zustand wie C2 und mehr, wie in 4 unten) einem höheren TPR-Wert, und diesem Prozessor wird dementsprechend ein höherer TPR-Wert zugeordnet. Mit anderen Worten werden durch die TPR-Werte Unterbrechungen davon abgehalten, an einen Prozessor in einem niedrigen Leistungszustand gesendet zu werden.
  • 2 ist ein Blockdiagramm 200 eines Multi-Core-Prozessormoduls 201 und eines zugeordneten Chipsatzes 240, welche eine Ausführungsform eines Unterbrechungsmechanismus unter Berücksichtigung des Leistungszustands der vorliegenden Erfindung umfassen. Das Multi-Core-Prozessormodul 201 dieser Ausführungsform umfaßt zwei individuelle physikalische Prozessorkerne A 220 und B 230. Bei diesem Beispiel sind beide Kerne 220, 230 identisch. Jeder Kern 220, 230 umfaßt: eine Ausführungslogik 221, 231 zum Ausführen von Code und Befehlen; einen internen On-Die-Cache-Speicher 222, 232 zum Speichern von Daten und Befehlen und eine Unterbrechungslogik 223, 233 mit einem Aufgabenprioritätsregister (TPR) 224, 234. Bei manchen Ausführungsformen können die Unterbrechungslogik 223, 233 und zugeordnete TPRs 224, 234 in dem Prozessormodul 202 jedoch außerhalb der Kerne 220, 230 angeordnet sein. Eine Frontside-Bus-(FSB)-Einheit 235, welche die Kommunikation zwischen den Kernen 220, 230 und mit der Außenwelt (d. h. dem externen Bus und Cache-Speicher) überbrückt, ist auch innerhalb des Moduls 201 angeordnet. Eine einzelne, gemeinsam genutzte FSB-Einheit 235 ist angeschlossen, um bei dieser Ausführungsform sowohl den Prozessorkern A 220 als auch den Prozessorkern B 230 zu bedienen. Bei alternativen Ausführungsformen kann jeder Kern seine eigene FSB-Einheit aufweisen. Genauso kann bei einer anderen Ausführungsform eine einzelne Unterbrechungslogikeinheit von mehreren Prozessorkernen gemeinsam benutzt werden, wobei ein TPR-Register oder -Eintrag für jeden Kern in diesem Unterbrechungslogikblock unterhalten wird. Obwohl die Unterbrechungslogik 223, 233 im Beispiel der 2 als separate Blöcke dargestellt ist, kann die Unterbrechungslogik physikalisch auch als ein Logikblock existieren, aber logisch dupliziert werden.
  • Zusätzlich zu den beiden Prozessorkernen 220, 230 befindet sich ein Cache-Speicher 210 innerhalb des Prozessormoduls 201. Die Prozessorkerne 220, 230 und der Cache-Speicher 210 sind über einen Bus, welcher intern in Modul 201 ist, miteinander verbunden. Kommunikation zwischen den Komponenten 210, 220, 230 innerhalb des Moduls 201 und externen Vorrichtungen findet durch eine Bus-Schnittstelle 250 statt. Bei dieser Ausführungsform ist der Bus 250 mit der Chipsatzlogik 240 verbunden. Der Chipsatz 240 dieser Ausführungsform umfaßt die Unterbrechungslogik 241 mit einer TPR-Tabelle 242 und einer Zustandsinformationstabelle 243. Die TPR-Tabelle 242 und die Zustandsinformationstabelle 243 können generische Speicherungsorte sein, wie beispielsweise Register zum Abspeichern von Daten oder Informationen. Der Begriff „Register" wird hier verwendet, um die Prozessorspeicherungsorte auf der Platine zu bezeichnen, welche als Teil von Makro-Befehlen verwendet werden, um Operanden zu identifizieren. Mit anderen Worten sind die hier bezeichneten Register diejenigen, welche von außerhalb des Prozessors oder der Komponente sichtbar sind (aus der Perspektive eines Programmierers). Die hier beschriebenen Register können jedoch von einem Schaltkomplex innerhalb einer Komponente unter Verwendung einer beliebigen Anzahl von unterschiedlichen Verfahren implementiert werden, wie beispielsweise durch fest zugeordnete physikalische Register, dynamisch zugewiesene physikalische Register unter Verwendung verbleibender Register, Kombinationen fest zugeordneter und dynamisch zugewiesener physikalischer Register usw..
  • Während des Systembetriebs werden Daten unter den Prozessoren 220, 230, dem Cache-Speicher 210 und dem Chipsatz 240 kommuniziert. Weiterhin reproduziert der Chipsatz 240 Unterbrechungsanforderungen von verschiedenen Systemvorrichtungen zum bedarfsweisen Verarbeiten an die Prozessorkerne 220, 230. Bei dieser Ausführungsform berücksichtigt der Chipsatz beim Verteilen von Unterbrechungen zusätzlich zu der Prozessorpriorität den Prozessorleistungszustand. Jeder Prozessorkern 220, 230 dieses Moduls 201 speichert seine Prioritätsstufe und seinen Leistungszustand in seinem jeweiligen TPR 224, 234 ab. Der Prozessorprioritätswert bezeichnet die Priorität von Operationen eines spezifischen Prozessors und die Toleranz des Prozessors für Unterbrechungen. Weiterhin kann der Prozessorprioritätswert die Hierarchie der Wichtigkeit und der Steuerung relativ zu anderen verfügbaren Prozessoren im System bezeichnen. Beispielsweise kann ein Prozessor der Priorität '0' der Master-Prozessor im System sein. Unterbrechungen hoher Priorität, wie beispielsweise eine Taktunterbrechung oder eine nicht maskierbare Unterbrechung (NMI), werden zum Master-Prozessor geleitet. Unterbrechungen mit fester Lieferung können auch für einen spezifischen Prozessor gekennzeichnet werden. Ein Prozessor mit einem hohen Aufgabenprioritätswert kann eine Prozessoraufgabe bezeichnen, welche nicht unterbrochen werden darf. Wenn beispielsweise ein Prozessor eine systemkritische Funktion ausführt, kann der Prozessor seinen Aufgabenprioritätswert auf einen entsprechenden Wert setzen, um Unterbrechungen zu vermeiden. Andere Prozessoren mit niedrigerem Prioritätswert können weniger kritische Funktionen durchführen und auch zugänglicher für eine Unterbrechung sein, um Unterbrechungsanforderungen niedriger Priorität zu behandeln.
  • Genauso bezeichnet der Leistungszustandswert in welchem Leistungsbereich der bestimmte Prozessorkern arbeitet. Beispielsweise kann ein Prozessor ,eingeschaltet und belegt', ,eingeschaltet und im Ruhezustand', ,angehalten', ,haltezugeteilt', ,tief schlafend', ,tiefer schlafend' oder ,ausgeschaltet' sein. In Abhängigkeit davon, in welchem Leistungszustand sich ein Prozessor befindet, kann eine Anforderung zum Bedienen einer Unterbrechung unterschiedliche Leistungsimplikationen und Beendigungszeiten aufweisen. Die Kerne 220, 230 dieses Beispiels verfolgen den Prozessorprioritätswert und den Prozessorleistungszustand in den TPRs 224, 234 innerhalb der Unterbrechungslogik 223, 233 nach. Die Prioritätswerte und Leistungszustände werden aus den Kernen 220, 230 an die Unterbrechungslogik 241 des Chipsatzes 240 übermittelt. Die Chipsatz-Unterbrechungslogik 241 dieser Ausführungsform umfaßt eine TPR-Tabelle 242 und eine Leistungszustandsinformationstabelle 243, um die Prozessorprioritätswerte bzw. die Prozessorleistungszustandswerte für jeden Prozessor im System zu speichern. Wenn die Chipsatz-Unterbrechungslogik 241 folglich entscheidet, an welchen Prozessor eine Unterbrechung gesendet werden soll, werden die Aufgabenprioritäts- und Zustandsinformationen in den jeweiligen Tabellen 242, 243 beurteilt und berücksichtigt. In Abhängigkeit von dem Zuweisungsalgorithmus der bestimmten Ausführungsform wird eine Unterbrechung an einen spezifischen Prozessor gesendet. Bei einer Ausführungsform werden Unterbrechungen primär von Prozessoren mit einem Zustand ,eingeschaltet und im Ruhezustand' oder ,eingeschaltet und belegt' behandelt, da ,schlafende' oder ,abgeschaltete' Kerne unerwünschte Leistungs- und Latenzeinwirkungen aufweisen. Bei einer Ausführungsform wird jedes Informationsstück für jeden Prozessor in seinem eigenen eindeutigen Register gespeichert.
  • 3 ist ein Blockdiagramm 300 eines Multi-Threading-Prozessors 301 und eines zugeordneten Chipsatzes 360, welche eine andere Ausführungsform eines Unterbrechungsmechanismus, welcher den Leistungszustand beachtet, gemäß der vorliegenden Erfindung umfassen. Das Prozessormodul 301 dieser Ausführungsform umfaßt einen einzelnen Prozessorkern 320 und einen Cache-Speicher 310. Dieser Kern 320 umfaßt einen Cache-Speicher 321 auf dem Chip, eine Unterbrechungslogik 322, eine Multi-Thread-Logik 323, eine Frontside-Bus-Logik 325, eine Ganzzahlverarbeitungslogik 326 und eine Fließkommaverarbeitungslogik 327. Innerhalb der Unterbrechungslogik befindet sich ein TPR 324, wie oben stehend mit dem Beispiel der 2 beschrieben. Der Prozessorkern 320 und der Cache-Speicher 310 sind zusammen durch einen externen Bus 350 mit der Chipsatzlogik 360 verbunden. Der Chipsatz 360 umfaßt eine Unterbrechungslogik 361, welche eine TPR-Tabelle 362 und eine Leistungszustandsinformationstabelle 363 unterhält. Obwohl die TPR-Tabelle 362 und die Zustandsinformationstabelle 363 als separate Einheiten gezeigt werden, können bei einer anderen Ausführungsform die Prozessorprioritäts- und Leistungszustandsinformationen zusammen in einer konsolidierten Datenstruktur gespeichert werden. Weiterhin können die Prioritäts- und Leistungszustandsinformationen auch zu einem einzelnen repräsentativen Wert für jeden Prozessor kombiniert werden, um eine relative Wünschbarkeit und/oder eine Priorität bei der Verteilung von Unterbrechungen auf Prozessoren zur Behandlung zu bezeichnen.
  • Bei dieser Ausführungsform ist ein einzelner physikalischer Prozessorkern vorhanden. Die Multi-Threading-Logik 323 gestattet mehreren Befehls-Threads, auf einem einzelnen Satz von Architekturressourcen durch gemeinsame Benutzung von Ressourcen parallel verarbeitet zu werden. Beispielsweise ist das Prozessormodul 301 des Beispiels in der Lage, zwei Threads A und B gleichzeitig zu verarbeiten. Die Threads A und B unterhalten jeder ihre eigenen Strukturzustände A 330 und B 340, verwenden die physikalischen Prozessorkern-Ressourcen jedoch durch einen Algorithmus für eine gemeinsame Ressourcen-Benutzung. Zusätzlich zur physikalischen Multi-Threading-Logik 323 ist es dem Betriebssystem (wie beispielsweise Windows, UNIX oder Linux, wie zuvor beschrieben) auch erlaubt, mehrere Threads auszugeben oder simultane Programme auszufüren. Bei manchen Parallelprozessorsystemen verwendet das Betriebssystem eine Unterbrechungslieferung niedrigster Priorität als den voreingestellten Algorithmus für alle Geräteunterbrechungen. Aus einer Benutzer- und Betriebssystemsperspektive erscheint das System 300 so, daß es mehrere, zwei bei diesem Beispiel, Logikprozessoreinheiten aufweist. Die Strukturzustände A 330 und B 340 werden hier beispielhaft gezeigt und repräsentieren keine tatsächlichen physikalischen Logikblöcke auf dem Prozessormodul 301. Die Strukturzustände A 330 und B 340 dieses Beispiels umfassen die jeweiligen Prozessorregister jedes Threads. Bei einer Ausführungsform umfaßt der Strukturzustand Register, wie beispielsweise Universalregister, Steuerungsregister, fortgeschrittene programmierbare Unterbrechungssteuergerät-(Advanced Programmable Interrupt Controller, APIC)-Register und einige Maschinenzustandsregister. Die Daten, Einstellungen usw. jedes Strukturzustands können in einem Speicherbereich auf dem Prozessor 301 gespeichert werden.
  • Bei dieser Ausführungsform verfolgen die TPR-Tabelle 362 und die Leistungszustandsinformationstabelle 363 die relevanten Werte für die Logikprozessoren nach. Wie die physikalischen Prozessorkerne 220, 230 des oben stehenden, vorhergehenden Beispiels, weist beispielsweise jeder Strukturzustand 330, 340 logischer Prozessoren bei diesem Beispiel einen Aufgabenprioritätswert und einen Leistungszustandswert auf. Der Aufgabenprioritätswert in diesem Fall gibt auch die relative Wichtigkeit der Aufgabe dieses Threads und die Toleranz für Unterbrechungen weder. Während die Leistungszustandswerte des Beispiels der 2 physikalische Leistungseinstellungen übermittelten, zeigen die Leistungszustandswerte für einen Strukturzustand dieser Ausführungsform den Typ der Thread-Aktivität und entsprechend das Ausmaß des Stromverbrauchs an. Beispielsweise kann ein Thread einen ,Belegt'-Status aufweisen, um anzuzeigen, daß der Thread aktiv ist und ausgeführt wird. Oder ein Thread kann einen ,Im Ruhezustand'- oder ,Angehalten'-Status aufweisen, um anzuzeigen, daß der Thread gegenwärtig nicht abläuft oder gerade auf irgendetwas wartet. Genauso kann ein Thread einen ,Schlafend'-Status aufweisen, um anzuzeigen, daß der Thread gerade schläft und sein Strukturzustand gegenwärtig inaktiv gehalten wird. Durch Beurteilen des Prozessorleistungszustands beim Bestimmen, welchem logischen Prozessor eine Anforderung für eine Unterbrechungsbedienung gesendet werden soll, kann der Chipsatz vermeiden, einen schlafenden Thread aufzuwecken, was in Bezug auf die Zeitdauer und den Strom kostspielig sein kann, wenn der Leistungszustand eines anderen Threads ,im Ruhezustand' ist. Der Chipsatz kann zum Bedienen einer Unterbrechung auch einen Thread mit einem ,Belegt'-Zustand unterbrechen, anstatt einen kostspieligeren Thread zu aktiveren.
  • 4 illustriert die Prozessorleistungszustände (C-Zustände in den ACPI-Spezifikationen) bei einer Ausführungsform der vorliegenden Erfindung. Bei dieser Ausfüh rungsform reichen die Prozessorleistungszustände von C0-BELEGT 401 bis Cn 406, wobei je niedriger die an ,C' angehängte Zahl ist, desto niedriger ist das Ausmaß der zusätzlichen Gesamtleistung, welche gebraucht wird, um eine Unterbrechung zu bedienen. Die C0-Ebene umfaßt sowohl einen Belegt-Zustand als auch einen Im-Ruhezustand-Zustand, da der Prozessor in beiden Fällen eingeschaltet ist und entweder gerade Benutzer-/Kern-Code ausführt oder bereit ist, Code auszuführen. Genauso kann ein Thread entweder gerade laufen (belegt) oder sich im Ruhezustand befinden (in Warteschleife). Die Hierarchie der Leistungszustände bei dieser Implementierung von dem aktivsten, welcher die minimale Leistungsmenge erfordert, um aktiv zu werden, ist: C0-BELEGT 401, C0-IM RUHEZUSTAND 402, C1-ANGEHALTEN/WARTEND 403, C2-HALTEZUGETEILT 404, C3-TIEFSCHLAF 405 und Cn 406. Hier ist der Cn-Leistungszustand 406 ein beliebiger Leistungszustand an der Basis der Hierarchie und benötigt im Vergleich zu den anderen Leistungszuständen ein großes Ausmaß an Zeit und Leistung, bevor er in der Lage ist, eine Unterbrechung zu bedienen. Die Anzahl verfügbarer Leistungszustände kann in Abhängigkeit von der bestimmten Ausführungsform variieren. Die Begriffe Prozessor und Thread werden hier derartig austauschbar verwendet, daß ein Thread sich auch auf einen logischen Prozessor bezieht.
  • Bei einer Ausführungsform der vorliegenden Erfindung beurteilt die Chipsatz-Unterbrechungslogik die Prozessorleistungszustände, welche von den verschiedenen Prozessoren empfangen wurden, um eine relative Liste zu bestimmen. Bei dieser Ausführungsform ist der Zustand C0-IM RUHEZUSTAND 402 gegenüber dem Zustand C0-BELEGT 401 bevorzugt, da beide Zustände einen Prozessor oder einen Thread bezeichnen, welcher eine Unterbrechung ohne oder mit wenig zusätzlichem Aufwand behandeln kann. Ein Prozessor/Thread, welcher belegt ist, müßte jedoch die gegenwärtig laufende Aufgabe unterbrechen und möglicherweise den Strukturzustand sichern, bevor er die Unterbrechungsanforderung bedient, während ein Prozessor/Thread, welcher sich im Ruhezustand befindet, die Unterbrechungsanforderung sofort mit noch weniger zusätzlichem Aufwand übernehmen könnte. Bei einem Prozessor/Thread, welcher angehalten oder schlafend ist, wie bei C2 404 bzw. C3 405, müßte der Prozessor/Thread aufgeweckt und sein Strukturzustand wiederhergestellt werden, was variable Zeitmengen erfordern kann. Weiterhin kann ein Aufwecken eines schlafenden Prozessors/Threads auch ein bisschen Leistung erfordern, um die nötige Hardware-Logik erneut zu starten oder zu aktivieren. Je weniger aktiv der Prozessor deshalb ist, desto größer sind die Kosten in Bezug auf Zeit und Leistung, damit dieser Prozessor bereit wird, eine Unterbrechung zu bedienen. Folglich kann die Chipsatz-Unterbrechungslogik konfiguriert werden, um den optimalen Prozessor zum Behandeln einer Unterbrechungsanforderung auf der Grundlage einer Kombination aus Faktoren einschließlich des Prozessorleistungszustands und der Prozessoraufgabenpriorität auszuwählen.
  • 5 ist ein Diagramm eines Prozessoraufgabeninformations-Tabelleneintrags 500 für einen Chipsatz einer Ausführungsform. Die Einträge 500 können an verschiedenen Speicherorten einschließlich Register, Zwischenspeicher usw. gespeichert werden. Bei dieser Ausführungsform besteht jeder Eintrag aus fünf Feldern über drei Daten-Bytes und speichert Informationen, wie eine Prozessoraufgabenpriorität und einen Prozessorleistungszustand. Das erste Feld des Eintrags 500 ist bei diesem Beispiel eine physikalische fortgeschrittene programmierbare Unterbrechungssteuergerät-(Advance Programmable Interrupt Controller, xAPIC)-Kennung 501. Die physikalische xAPIC-ID 501 dieser Ausführungsform identifiziert den physikalischen Prozessor, welchem dieser Eintrag zugeordnet ist. Dieses erste Feld einer Ausführungsform wird eingesetzt, wo mehrere Prozessoren oder mehrere Prozessorkerne physikalisch im System vorhanden sind. Ein zweites Feld jedes Eintrags 500 ist eine logische xAPIC-ID 502. Die logische xAPIC-ID 502 dieser Ausführungsform identifiziert den logischen Prozessor oder Thread, welchem dieser Eintrag zugeordnet ist. Dieses logische ID-Feld 502 wird bei dieser Implementierung durch das Betriebssystem programmiert.
  • Das dritte Feld des TPR-Eintrags 500 enthält bei dieser Ausführungsform ein Aktiv-Kennzeichen, welches bezeichnet, ob dieser bestimmte Eintrag gültig ist oder nicht. Das Aktiv-Feld kann auch verwendet werden, um zu bezeichnen, ob der Prozessor/Thread in der Lage ist, Unterbrechungen zu behandeln. Wenn ein Prozessor-Eintrag nicht aktiv ist, kann der Prozessor nicht verfügbar oder nicht aktiv sein. Bei dieser Ausführungsform enthält ein viertes Feld den Leistungszustand 504 dieses Prozessors. Bei alternativen Ausführungsformen kann dieses Feld jedoch reserviert oder nicht vorhanden sein, da die Unterbrechungslogik die Leistungszustandswerte und die Prozessorprioritätswerte zu einem vereinigten Wert verschmelzen kann. Das fünfte Feld dieser Ausführungsform dient dem Speichern eines TPR-Werts 505 für diesen Prozessor. Der TPR-Wert dient zum Bezeichnen der Aufgabenpriorität an dem vorliegenden Prozessor. Der Algorithmus für die Unterbrechungslogik dieser Ausführungsform ist so konfiguriert, daß er keine Aufgabe mit einer höheren Priorität als der der Unterbrechungsanforderung unterbricht und nach einem anderen möglichen Prozessor sucht. Falls aber die Unterbrechungsanforderung eine Priorität aufweist, welche größer ist als die vorliegende Aufgabe, kann die Aufgabe unterbrochen werden, um die Unterbrechung zu bedienen. Bei einer Unterbrechung mit einer Prioritätsebene gleich der der vorliegenden Aufgabe kann die Logik die Aufgabe unterbrechen, falls kein anderer Prozessor mit einer Aufgabe niedrigerer Priorität verfügbar ist.
  • Bei einer alternativen Ausführungsform kann das TPR-Feld 505 so konfiguriert werden, daß es einen gesamten Leistungs- und Aufgabenprioritätswert enthält, aus welchem die Unterbrechungsverteilungslogik beurteilen kann, wann ein Prozessor gesucht werden soll. Obwohl die Felder dieses Beispiels in 5 mit beispielhaften Feldlängen und Feldorten illustriert werden, hängen die Einträge und die Struktur der Aufgabenprioritätstabelle von der bestimmten Implementierung der vorliegenden Erfindung ab. Die in 5 gezeigten Tabelleneinträge wurden in dem Umfeld der Chipsatzlogik beschrieben. Ähnliche Strukturtypen können sich jedoch bei jedem individuellen Prozessor und beim Betriebssystem befinden, um die Aufgabenprioritätswerte und Leistungszustandswerte jedes verfügbaren physikalischen und/oder logischen Prozessors nachzuverfolgen.
  • Die 6A bis D sind Ablaufdiagramme, welche eine Ausführungsform eines Verfahrens zum Verteilen von Unterbrechungen, welches den Leistungszustand beachtet, illustrieren. Das Ablaufdiagramm der 6A illustriert das Verfahren der hohen Ebene für eine Unterbrechungsverteilung, welche den Leistungszustand beachtet, einer Ausführungsform. Bei Block 602 wird das System gestartet oder zurückgesetzt. Die Systemkomponenten verlassen das Zurücksetzen und werden bei Block 610 initialisiert. Ein Beispiel derartiger Systemkomponenten (d. h. Prozessoren, Chipsatz, Speicher, E/A-Vorrichtungen) kann in oben stehender 1 gefunden werden. Das Betriebssystem wird auch initialisiert und geladen. Während des Prozesses des Hochfahrens kann das Betriebssystem die verschiedenen Systemvorrichtungen für einen reibungslosen Betrieb konfigurieren. Bei einer Ausführungsform ist das Betriebssystem zur Parallelverarbeitung und zum gleichzeitigen Ablaufen mehrerer Threads in der Lage. In Abhängigkeit von der bestimmten Implementierung kann das Betriebssystem die mehreren Threads auf einer Anzahl von logischen Prozessoren oder, falls vorhanden, von physikalischen Prozessoren/Kernen ablaufen lassen. Bei Block 615 tritt das System in den Normalbetrieb ein. Während des normalen Systembetriebs werden verschiedene Typen von Benutzeranwendungen und Systemaufgaben von dem System durchgeführt. Die Aufgabenpriorität und der Leistungszustand jedes Prozessors wird bei Block 620 nachverfolgt. Das Nachverfolgen kann ein Sammeln von Informationen über die Aufgabenpriorität, den Leistungszustand und/oder den Aktivitätszustand verschiedener physikalischer und/oder logischer Prozessoren umfassen. Bei Block 630 wird eine Prüfung durchgeführt, um zu bestimmen, ob Unterbrechungsanforderungen empfangen wurden. Falls bei Block 630 keine Unterbrechungsanforderungen erfaßt wurden, setzt das System bei 615 den Normalbetrieb fort.
  • Falls bei Block 630 eine Unterbrechungsanforderung erfaßt wird, behandelt die Chipsatz-Unterbrechungslogik die Anforderung und bestimmt, wohin die Anforderung für ein Bedienen gesendet wird. Auf der Grundlage einer Analyse von Faktoren, einschließlich insbesondere der Aufgabenprioritätswerte und der Leistungszustandswerte für die logischen/physikalischen Prozessoren, wählt die Unterbrechungslogik einen entsprechenden Prozessor aus und kommuniziert die Unterbrechungsanforderung. Der empfangende Prozessor bedient die Unterbrechungsanforderung und nimmt dann bei Block 660 seine vorherigen Aktivitäten wieder auf. Bei Block 615 wird ein normaler Systembetrieb fortgesetzt, bis eine andere Unterbrechungsanforderung erfaßt wird.
  • 6B ist ein Ablaufdiagramm, welches weiterhin die Operationen illustriert, welche während des Initialisierungsprozesses des Blocks 610 passieren. Bei Block 611 wird das Aufgabenprioritätsregister für jeden Prozessor initialisiert. Die Unterbrechungsbehandlungslogik des Chipsatzes wird auch bei Block 612 initialisiert. Jeder Prozessor kommuniziert bei Block 613 seine Aufgabenpriorität und seinen Leistungszustand an die Chipsatzlogik. Die Prozessoraufgabenprioritäts- und die Prozessorleistungszustandsinformationen werden mit der Chipsatzlogik bei Block 614 für eine spätere Bezugnahme gesichert, wenn Unterbrechungsanforderungen bedient werden müssen. Die Aufgabenprioritäts- und die Leistungszustandsinformationen werden dementsprechend aktualisiert, wann immer sich die Aufgabe oder die Leistungsebene an einem Prozessor verändert.
  • Das Ablaufdiagramm der 6C illustriert einige der Operationen während des Nachverfolgens der Prozessoraufgabe des Blocks 620 ausführlicher. Bei Block 621 wird das Aufgabenprioritätsregister in dem Prozessor mit einem Aufgabenprioritätswert und mit einem Leistungszustandswert aktualisiert. Bei einer Ausführungsform speichert das Aufgabenprioritätsregister beide Werte. Bei einer anderen Ausführungsform werden die Werte in unterschiedlichen Registern gespeichert. Bei wieder einer anderen Ausführungsform speichert das Aufgabenprioritätsregister einen vereinigten Wert auf der Grundlage beider Werte. Die neuen Aufgabenprioritäts- und Leistungszustandsinformationen werden bei Block 622 an den Chipsatz übermittelt. Bei Block 623 speichert die Chipsatzlogik die Aufgabenprioritätsinformationen in einem Eintrag für den Prozessor in einer Aufgabeninformationstabelle. Der Chipsatz dieser Ausführungsform kann Aufgabeninformationen für eine Anzahl von physikalischen/logischen Prozessoren im System nachverfolgen. Jeder Eintrag in der Tabelle ist auf einen spezifischen Prozessor abgebildet. Bei dieser Ausführungsform bildet die Chipsatzlogik bei Block 624 auch die Prozessoraufgabenpriorität auf einen entsprechenden Leistungszustand ab. Die Leistungszustandsinformationen, welche von dem Prozessor für diese Aufgabe empfangen wurden, sind in der Aufgabeninformationstabelle gesichert.
  • 6D ist ein Ablaufdiagramm, welches die Aktivitäten an der Chipsatzlogik und am Prozessor illustriert, wenn bei einer Ausführungsform der vorliegenden Erfindung bei Block 630 eine Unterbrechungsanforderung empfangen und bei Block 640 bedient wird. Bei dieser Ausführungsform treten die Blöcke 641 bis 645 und 651 bis 653 im Allgemeinen am Chipsatz auf, während der Block 646 bis 650 im Allgemeinen an einem Prozessor passiert. Bei Block 641 bestimmt die Chipsatz-Unterbrechungslogik die Unterbrechungspriorität. Die Logik prüft bei Block 642 die Aufgabenpriorität für jeden Prozessor. Bei Block 643 wird auch der Leistungszustand für jeden Prozessor geprüft. Auf der Grundlage eines Algorithmus, welcher die Aufgabenprioritätsebene und den Leistungszustand berücksichtigt, wählt die Chipsatz-Unterbrechungslogik einen Prozessor aus, um die Anforderung bei Block 644 zu bedienen, und sendet bei Block 645 die Unterbrechungsanforderung an den Prozessor. Die Chipsatzlogik dieser Ausführungsform aktualisiert auch den Prozessoraufgabeneintrag, um die Unterbrechungspriorität zu vermerken, und um zu vermerken, daß der Prozessor diese Unterbrechung gerade behandelt.
  • Die Unterbrechungsanforderung wird bei Block 646 an dem ausgewählten Prozessor empfangen. Bei Block 647 hält der Prozessor seine vorhandene Aufgabe an, wenn gegenwärtig eine Aufgabe verarbeitet wird. Bei Block 648 wird der Aufgabenprioritätseintrag für diesen Prozessor mit einem neuen Prioritätswert aktualisiert. Bei einer Ausführungsform wird der Aufgabenprioritätseintrag an einem physikalischen Registerort auf dem Prozessor und an dem Chipsatz aktualisiert. Bei einer anderen Ausführungsform wird der Aufgabenprioritätseintrag in einer Speicherstruktur aktualisiert, welche durch das Betriebssystem unterhalten wird. Bei Block 649 bedient der Prozessor die Unterbrechung. Der Prozessor benachrichtigt den Chipsatz bei Block 650 über die Beendigung der Unterbrechungsbedienungsanforderung und aktualisiert den Prozessoraufgabenprioritätswert auf den der unterbrochenen Aufgabe.
  • Der Chipsatz empfängt die Benachrichtigung über die Unterbrechungsbeendigung und den wiederhergestellten Aufgabenprioritätswert bei Block 651. Die Prozessorinformationstabelle wird mit der Aufgabenpriorität aktualisiert. Der Prozessor nimmt die Aufgabe wieder auf, welche vor der Unterbrechung in Arbeit war, und der Chipsatz setzt seinen Betrieb bei Block 652 fort. Der Chipsatz benachrichtigt bei Block 653 auch den Anforderer über die Beendigung der Unterbrechungsbedienungsanforderung.
  • 7 ist ein Ablaufdiagramm, welches eine andere Ausführungsform eines Verfahrens zur Verteilung von Unterbrechungen, welches den Prozessorleistungszustand beachtet, illustriert. Das Verfahren dieser Ausführungsform wird mit dem Betriebssystem implementiert und arbeitet über verschiedene Steuerungssignale und -befehle. Bei einer Implementierung wird Firmware verwendet, um die Steuerungssignale zwischen den Software- und den Hardware-Komponenten zu übersetzen oder zu kommunizieren. Bei Block 702 wird das Betriebssystem hochgefahren oder zurückgesetzt. Die Aufgabenprioritätseinträge in der Prozessorinformationstabelle, welche durch das Betriebssystem unterhalten wird, werden bei Block 704 initialisiert. Bei dieser Ausführungsform wird bei Block 706 eine Abbildung zwischen den Au Aufgabenprioritätszuständen und den Leistungszuständen eingeführt. Die Aufgabenprioritätseinträge dieser Ausführungsform beziehen den Prozessoraufgabenprioritätswert und den Prozessorleistungszustandswert in einen einzelnen Bezugswert ein.
  • Bei Block 708 beginnt der normale Systembetrieb. Das Betriebssystem verfolgt bei Block 710 die Aufgabenpriorität der aktiven Aufgabe für jeden physikalischen und logischen Prozessor im System nach. Bei Block 712 fragt das Betriebssystem ab, ob Unterbrechungsanforderungen empfangen wurden. Falls keine Unterbrechungsanforderungen unerledigt sind, wird bei Block 708 der normale Systembetrieb fortgesetzt. Benutzeranwendungen und Systemaufgaben laufen weiter. Falls aber eine Unterbrechungsanforderung anhängig ist, empfängt das Betriebssystem bei Block 714 die Anforderung zur Verteilung. Bei Block 716 analysiert das Betriebssystem die Aufgabenprioritäts- und die Leistungszustandswerte, welche in der Informationstabelle für jeden Prozessor gespeichert sind. Das Betriebssystem wählt bei Block 718 einen Prozessor mit dem entsprechenden Prioritäts- und Leistungszustand aus, um die Unterbrechungsanforderung zu bedienen. Bei einer Ausführungsform ist der entsprechende Prozessor einer mit der Aufgabe niedrigster Priorität und dem höchsten Prioritätszustand. Mit anderen Worten wird der Prozessor mit der minimalen Zeitlatenz und dem minimalen zusätzlichen Leistungsbedarf ausgewählt, bevor eine Anforderung bedient werden kann.
  • Bei einer Ausführungsform werden kritische Aufgaben oder Aufgaben hoher Priorität typischerweise nicht unterbrochen, um eine Unterbrechung niedriger Priorität zu bedienen. Genauso kann ein Prozessor, welcher sich in irgendeinem Schlafmodustyp befindet, ein unerwünschter Kandidat zum Bedienen einer Unterbrechungsanforderung sein, da ein Aufwecken des Prozessors in Bezug sowohl auf die Leistung als auch auf die Zeit kostspielig sein kann. Bei Block 720 wird die Unterbrechungsanforderung zum Bedienen an den ausgewählten Prozessor übermittelt. Der Aufgabenprioritätseintrag für diesen Prozessor wird bei Block 722 aktualisiert, um die Priorität der Unterbrechungsanforderung wiederzugeben. Der Zielprozessor empfängt und behandelt die Anforderung. Bei Block 724 wird das Betriebssystem über die Anforderungsbeendigung benachrichtigt. Der Aufgabenprioritätseintrag wird bei Block 726 für den Prozessor wiederhergestellt. Bei einer Ausführungsform nimmt der Prozessor bei Block 728 den Betrieb mit der Aufgabe wieder auf, welche vorlag, als die jüngste Unterbrechungsanforderung empfangen wurde.
  • Obwohl oben stehende Beispiele die Unterbrechungsbehandlung und -Verteilung im Kontext von Ausführungseinheiten und Logikschaltungen beschreiben, können andere Ausführungsformen der vorliegenden Erfindung auf dem Wege von Software erzielt werden. Derartige Software kann innerhalb eines Speichers im System gespeichert werden. Genauso kann der Code über ein Netzwerk oder auf dem Weg anderer Computer-lesbarer Medien verteilt werden. Beispielsweise kann ein Computer-Programm durch ein Computer-lesbares Medium, wie beispielsweise eine Diskette oder eine CD-ROM, oder sogar durch eine Übertragung über das Internet verteilt werden. Folglich kann ein maschinenlesbares Medium einen Mechanismus zum Speichern oder zum Übertragen von Informationen in einer Form umfassen, welche von einer Maschine (z. B. von einem Computer) lesbar ist. Beispielsweise kann ein maschinenlesbares Medium einen Nur-Lese-Speicher (ROM), einen Schreib-/Lesespeicher (RAM), Magnetscheiben-Speichermedien, optische Speichermedien, Flash-Speichervorrichtungen und elektrische, optische, akustische oder andere Formen sich fortpflanzender Signale (z. B. Trägerwellen, Infrarotsignale, digitale Signale usw.) umfassen.
  • Weiterhin können Ausführungsformen integrierter Schaltkreisentwürfe gemäß der vorliegenden Erfindungen in elektronischer Form kommuniziert oder übermittelt werden. Beispielsweise kann die elektronische Form eines integrierten Schaltkreisentwurfs eines Prozessors bei einer Ausführungsform in einer Chipfabrik verarbeitet oder hergestellt werden, um eine Computer-Komponente zu erhalten. Bei einem anderen Beispiel kann ein integrierter Schaltkreisentwurf in elektronischer Form von einer Maschine verarbeitet werden, um eine Computer-Komponente zu simulieren. Folglich können die Layout-Pläne der Schaltung und/oder Prozessorentwürfe bei manchen Ausführungsformen für eine Fabrikation zu einer Schaltung oder für eine Simulation eines integrierten Schaltkreises, welche einen Prozessor simuliert, wenn sie von einer Maschine verarbeitet wird, über maschinenlesbare Medien verteilt oder darauf ausgeführt werden. Ein maschinenlesbares Medium ist auch in der Lage, Daten zu speichern, welche vorbestimmte Funktionen gemäß anderen Ausführungsformen der vorlegenden Erfindung repräsentieren.
  • In der vorangehenden Beschreibung wurde die Erfindung unter Bezugnahme auf spezifische, beispielhafte Ausführungsformen davon beschrieben. Es ist jedoch offensichtlich, daß verschiedene Modifikationen und Veränderungen daran vorgenommen werden können, ohne den breiteren Gedanken und den Umfang der Erfindung zu verlassen, wie sie in den angefügten Ansprüchen dargelegt werden. Die Beschreibung und die Zeichnungen sind dementsprechend in einem beispielhaften statt in einem einschränkenden Sinn zu betrachten.
  • ZUSAMMENFASSUNG
  • Ein Verfahren für einen Mechanismus zur Verteilung von Unterbrechungen niedrigster Priorität unter Berücksichtigung des Prozessorleistungszustands. Das Verfahren einer Ausführungsform umfaßt ein Empfangen erster Leistungszustandsinformationen von einer ersten Komponente und zweite Leistungszustandsinformationen von einer zweiten Komponente. Erste Aufgabenprioritätsinformationen von der ersten Komponente und zweite Aufgabenprioritätsinformationen von der zweiten Komponente werden auch empfangen. Es wird eine Unterbrechungsanforderung von einer ersten Vorrichtung zum Bedienen empfangen. Informationen über Leistungszustand und Aufgabenpriorität für die erste und zweite Komponente werden beurteilt und bestimmen welche Komponente die Unterbrechungsanforderung bedienen soll. Auf der Grundlage der Informationen über Leistungszustand und Aufgabenpriorität wird entweder die erste Komponente oder die zweite Komponente als eine Zielkomponente ausgewählt, die Unterbrechungsanforderung zu bedienen. Die Unterbrechungsanforderung wird an die Zielkomponente übermittelt.

Claims (44)

  1. Verfahren, Folgendes umfassend: Empfangen erster Leistungszustandsinformationen von einer ersten Komponente und zweiter Leistungszustandsinformationen von einer zweiten Komponente; Empfangen erster Aufgabenprioritätsinformationen von der ersten Komponente und zweiter Aufgabenprioritätsinformationen von der zweiten Komponente; Empfangen einer Unterbrechungsanforderung von einer ersten Vorrichtung zum Bedienen; Beurteilen von Informationen über Leistungszustand und Aufgabenpriorität für die erste und zweite Komponente, um zu bestimmen, welche Komponente die Unterbrechungsanforderung bedienen soll; Auswählen auf der Grundlage der Informationen über den Leistungszustand und der Aufgabenpriorität entweder der ersten Komponente oder der zweiten Komponente, eine Zielkomponente zum Bedienen der Unterbrechungsanforderung zu bilden; und Übermitteln der Unterbrechungsanforderung an die Zielkomponente.
  2. Verfahren nach Anspruch 1, weiterhin umfassend ein Speichern der ersten Leistungszustandsinformationen in einem ersten Speicherort und der zweiten Leistungszustandsinformationen in einem zweiten Speicherort.
  3. Verfahren nach Anspruch 2, weiterhin umfassend ein Speichern der ersten Aufgabenprioritätsinformationen in einem dritten Speicherort und der zweiten Aufgabenprioritätsinformationen in einem vierten Speicherort.
  4. Verfahren nach Anspruch 3, weiterhin umfassend Prüfvorrichtungen für Unterbrechungsanforderungen.
  5. Verfahren nach Anspruch 4, weiterhin umfassend ein Aktualisieren von Informationen über Leistungszustand und Aufgabenpriorität für die Zielkomponente, um eine Aufgabenpriorität der Unterbrechungsanforderung wiederzugeben.
  6. Verfahren nach Anspruch 5, weiterhin umfassend ein Empfangen einer Benachrichtigung über eine Unterbrechungsbeendigung von der Zielkomponente.
  7. Verfahren nach Anspruch 6, weiterhin umfassend ein Wiederherstellen der Informationen über Leistungszustand und Aufgabenpriorität für die Zielkomponente auf Werte, welche vor dem Bedienen der Unterbrechungsanforderung existierten.
  8. Verfahren nach Anspruch 7, weiterhin umfassend ein Informieren der Vorrichtung über die Unterbrechungsbeendigung.
  9. Verfahren nach Anspruch 8, wobei die erste und zweite Komponente Prozessoren sind.
  10. Verfahren nach Anspruch 9, wobei der erste, zweite, dritte und vierte Speicherort innerhalb einer Chipsatzlogik angeordnet sind.
  11. Vorrichtung, Folgendes umfassend: eine Unterbrechungsbehandlungslogik, welche mit einem ersten Satz von Signalleitungen verbunden ist, um eine Unterbrechungsanforderung zu empfangen, wobei der erste Satz von Signalleitungen mit einer oder mehrerer Vorrichtungen verbunden ist, welche Unterbrechungsanforderungen erzeugen können; eine Bus-Schnittstelle zum Wechselwirken mit einem Bus, welcher mit einer ersten Komponente und mit einer zweiten Komponente verbunden ist, wobei die Unterbrechungsbehandlungslogik mit dem ersten Bus durch die Bus-Schnittstelle verbunden ist, um Leistungszustandsinformationen und Aufgabenprioritätsinformationen für sowohl die erste als auch die zweite Komponente zu empfangen; eine Beurteilungslogik, welche mit der Unterbrechungsbehandlungslogik verbunden ist, wobei die Beurteilungslogik dazu dient, Informationen über Leistungszustand und Aufgabenpriorität für die erste und zweite Komponente zu beurteilen, wenn die Unterbrechungsbehandlungslogik die Unterbrechungsanforderung empfangt, um zu bestimmen, welche Komponente die Unterbrechungsanforderung bedienen soll; und eine Auswahllogik, welche mit der Beurteilungslogik verbunden ist, um auf der Grundlage der Informationen über Leistungszustand und Aufgabenpriorität entweder die erste Komponente oder die zweite Komponente auszuwählen, eine Zielkomponente zum Bedienen der Unterbrechungsanforderung zu bilden.
  12. Vorrichtung nach Anspruch 11, weiterhin umfassend einen Speicher zum Speichern der Leistungszustandsinformationen und der Aufgabenprioritätsinformationen für sowohl die erste als auch die zweite Komponente für eine Bezugnahme durch die Beurteilungslogik.
  13. Vorrichtung nach Anspruch 12, wobei die Auswahllogik weiterhin dazu dient, die Unterbrechungsanforderung an die Zielkomponente für ein Bedienen zu übermitteln.
  14. Vorrichtung nach Anspruch 13, wobei die Auswahllogik weiterhin dazu dient, Informationen über Leistungszustand und Aufgabenpriorität für die Zielkomponente zu aktualisieren, um eine Aufgabenpriorität der Unterbrechungsanforderung wiederzugeben.
  15. Vorrichtung nach Anspruch 14, wobei die Unterbrechungsbehandlungslogik weiterhin dazu dient, eine Benachrichtigung über eine Unterbrechungsbeendigung von der Zielkomponente zu empfangen.
  16. Vorrichtung nach Anspruch 15, wobei die Auswahllogik weiterhin dazu dient, die Informationen über Leistungszustand und Aufgabenpriorität für die Zielkomponente auf Werte wiederherzustellen, welche vor dem Bedienen der Unterbrechungsanforderung existierten.
  17. Vorrichtung nach Anspruch 16, wobei eine Unterbrechungsbehandlungslogik weiterhin dazu dient, die Vorrichtung über die Unterbrechungsbeendigung zu informieren.
  18. Vorrichtung nach Anspruch 17, wobei die erste und die zweite Komponente Prozessoren sind.
  19. Vorrichtung nach Anspruch 17, wobei die erste und die zweite Komponente Threads einer Multi-Threading-Umgebung sind.
  20. Vorrichtung nach Anspruch 19, wobei die Vorrichtung ein Chipsatz ist.
  21. System, Folgendes umfassend: einen Bus; einen ersten Prozessor und einen zweiten Prozessor, welche mit dem Bus verbunden sind; eine oder mehrere Systemvorrichtungen, welche Unterbrechungsanforderungen erzeugen können, wobei die Unterbrechungsanforderungen eine Bedienung von entweder dem ersten oder dem zweiten Prozessor erfordern; einen Chipsatz zum Behandeln der Unterbrechungsanforderungen, wobei der Chipsatz mit den Systemvorrichtungen und mit dem ersten und mit dem zweiten Prozessor verbunden ist, wobei der Chipsatz dazu dient, Leistungszustandsinformationen und Aufgabenprioritätsinformationen sowohl für den ersten als auch für den zweiten Prozessor zu empfangen, der Chipsatz dazu dient, die Informationen über Leistungszustand und Aufgabenpriorität zu beurteilen, wenn eine Unterbrechungsanforderung empfangen wird, und zu bestimmen, welcher Prozessor die Unterbrechungsanforderung bedienen soll, und wobei der Chipsatz auf der Grundlage der Informationen über den Leistungszustand und der Aufgabenpriorität entweder den ersten Prozessor oder den zweiten Prozessor auswählt, um die Anforderung zu bedienen.
  22. System nach Anspruch 21, wobei der Chipsatz weiterhin Speicherregister umfaßt, um die Leistungszustandsinformationen und die Aufgabenprioritätsinformationen für sowohl die erste als auch die zweite Komponente für eine Bezugnahme durch die Beurteilungslogik zu speichern.
  23. System nach Anspruch 22, wobei der Chipsatz weiterhin eine Logik zum Aktualisieren von Informationen über Leistungszustand und Aufgabenpriorität für die Zielkomponente umfaßt, um eine Aufgabenpriorität der Unterbrechungsanforderung wiederzugeben.
  24. System nach Anspruch 22, wobei der Chipsatz weiterhin eine Logik zum Nachverfolgen von Informationen über Leistungszustand und Aufgabenpriorität für sowohl den ersten als auch den zweiten Prozessor umfaßt.
  25. System nach Anspruch 22, wobei der Chipsatz eine Benachrichtigung über eine Beendigung der Unterbrechungsanforderung von einem Prozessor empfängt, welcher zum Bedienen der Unterbrechungsanforderung ausgewählt wurde.
  26. System nach Anspruch 25, wobei der Chipsatz weiterhin eine Logik zum Wiederherstellen der Informationen über Leistungszustand und Aufgabenpriorität für den Prozessor, welcher zum Bedienen der Unterbrechungsanforderung ausgewählt wurde, auf Werte umfaßt, welche vor dem Bedienen der Unterbrechungsanforderung existierten.
  27. System nach Anspruch 26, wobei der erste und der zweite Prozessor beide Multi-Threading-Prozessoren sind.
  28. System nach Anspruch 26, wobei der erste und der zweite Prozessor beide Verarbeitungskerne eines mehrkernigen Moduls sind.
  29. Maschinenlesbares Medium mit einem darauf verkörperten Computer-Programm, wobei das Computer-Programm von einer Maschine ausführbar ist, zum Durchführen eines Verfahrens, umfassend: Empfangen erster Leistungszustandsinformationen von einer ersten Komponente und zweiter Leistungszustandsinformationen von einer zweiten Komponente; Empfangen erster Aufgabenprioritätsinformationen von der ersten Komponente und zweiter Aufgabenprioritätsinformationen von der zweiten Komponente; Empfangen einer Unterbrechungsanforderung von einer ersten Vorrichtung zum Bedienen; Beurteilen der Informationen über Leistungszustand und Aufgabenpriorität für die erste und zweite Komponente, um zu bestimmen, welche Komponente die Unterbrechungsanforderung bedienen soll; Auswählen auf der Grundlage der Informationen über den Leistungszustand und der Aufgabenpriorität entweder der ersten Komponente oder der zweiten Komponente, eine Zielkomponente zum Bedienen der Unterbrechungsanforderung zu bilden; und Übermitteln der Unterbrechungsanforderung an die Zielkomponente.
  30. Maschinenlesbares Medium nach Anspruch 29, wobei das Verfahren weiterhin ein Speichern der ersten Leistungszustandsinformationen in einem ersten Speicherort und der zweiten Leistungszustandsinformationen in einem zweiten Speicherort umfaßt.
  31. Maschinenlesbares Medium nach Anspruch 30, wobei das Verfahren weiterhin ein Speichern der ersten Aufgabenprioritätsinformationen in einem dritten Speicherort und der zweiten Aufgabenprioritätsinformationen in einem vierten Speicherort umfaßt.
  32. Maschinenlesbares Medium nach Anspruch 29, wobei das Verfahren weiterhin Prüfvorrichtungen für Unterbrechungsanforderungen umfaßt.
  33. Maschinenlesbares Medium nach Anspruch 29, wobei das Verfahren weiterhin ein Aktualisieren von Informationen über Leistungszustand und Aufgabenpriorität für die Zielkomponente umfaßt, um eine Aufgabenpriorität der Unterbrechungsanforderung wiederzugeben.
  34. Maschinenlesbares Medium nach Anspruch 33, wobei das Verfahren weiterhin ein Empfangen einer Benachrichtigung über eine Unterbrechungsbeendigung von der Zielkomponente umfaßt.
  35. Maschinenlesbares Medium nach Anspruch 34, wobei das Verfahren weiterhin ein Wiederherstellen der Informationen über Leistungszustand und Aufgabenpriorität für die Zielkomponente auf Werte umfaßt, welche vor dem Bedienen der Unterbrechungsanforderung existierten.
  36. Maschinenlesbares Medium nach Anspruch 35, wobei die erste und die zweite Komponente Prozessoren sind.
  37. Verfahren, Folgendes umfassend: Empfangen erster Leistungszustandsinformationen von einer ersten Komponente und zweiter Leistungszustandsinformationen von einer zweiten Komponente; Zuordnen eines ersten Aufgabenprioritätswerts zu der ersten Komponente auf der Grundlage der ersten Leistungszustandsinformationen; Zuordnen eines zweiten Aufgabenprioritätswerts zu der zweiten Komponente auf der Grundlage der zweiten Leistungszustandsinformationen; Empfangen einer Unterbrechungsanforderung von einer ersten Vorrichtung zum Bedienen; Beurteilen von Aufgabenprioritätswerten für die erste und die zweite Komponente zum Bestimmen, welche Komponente die Unterbrechungsanforderung bedienen soll; Auswählen auf der Grundlage der Aufgabenprioritätswerte entweder der ersten Komponente oder der zweiten Komponente, eine Zielkomponente zum Bedienen der Unterbrechungsanforderung zu bilden; und Übermitteln der Unterbrechungsanforderung an die Zielkomponente.
  38. Verfahren nach Anspruch 37, weiterhin umfassend ein Speichern des ersten und des zweiten Aufgabenprioritätswerts in einem ersten und einem zweiten Register.
  39. Verfahren nach Anspruch 38, wobei alle Leistungszustandsinformationen einen Leistungszustandswert umfassen.
  40. Verfahren nach Anspruch 39, wobei jeder Leistungszustandswert einem Aufgabenprioritätswert entspricht.
  41. Verfahren nach Anspruch 40, wobei ein höherer Leistungszustandswert einem niedrigeren Aufgabenprioritätswert entspricht und ein niedrigerer Leistungszustandswert einem höheren Aufgabenprioritätswert entspricht.
  42. Verfahren nach Anspruch 41, wobei eine Komponente mit einem niedrigeren Aufgabenprioritätswert bevorzugter ausgewählt wird, die Zielkomponente zum Bedienen der Unterbrechungsanforderung zu bilden, als eine andere Komponente mit einem höheren Aufgabenprioritätswert.
  43. Verfahren nach Anspruch 42, wobei die erste und die zweite Komponente ein erster Prozessor bzw. ein zweiter Prozessor sind.
  44. Verfahren nach Anspruch 43, wobei jeder der Aufgabenprioritätswerte in einem eindeutigen Register gespeichert wird.
DE10393969T 2002-12-26 2003-12-05 Mechanismus zur Verteilung von Unterbrechungen niedrigster Priorität unter Berücksichtigung des Prozessorleistungszustands Ceased DE10393969T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/330,622 2002-12-26
US10/330,622 US7191349B2 (en) 2002-12-26 2002-12-26 Mechanism for processor power state aware distribution of lowest priority interrupt
PCT/US2003/038612 WO2004061686A2 (en) 2002-12-26 2003-12-05 Mechanism for processor power state aware distribution of lowest priority interrupts

Publications (1)

Publication Number Publication Date
DE10393969T5 true DE10393969T5 (de) 2008-06-26

Family

ID=32654547

Family Applications (1)

Application Number Title Priority Date Filing Date
DE10393969T Ceased DE10393969T5 (de) 2002-12-26 2003-12-05 Mechanismus zur Verteilung von Unterbrechungen niedrigster Priorität unter Berücksichtigung des Prozessorleistungszustands

Country Status (8)

Country Link
US (2) US7191349B2 (de)
CN (1) CN100349147C (de)
AU (1) AU2003298903A1 (de)
DE (1) DE10393969T5 (de)
GB (1) GB2412457B (de)
HK (1) HK1075314A1 (de)
TW (1) TWI233545B (de)
WO (1) WO2004061686A2 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102011013833A1 (de) * 2011-03-14 2012-09-20 Continental Automotive Gmbh Anzeigevorrichtung

Families Citing this family (174)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6760772B2 (en) 2000-12-15 2004-07-06 Qualcomm, Inc. Generating and implementing a communication protocol and interface for high data rate signal transfer
US8812706B1 (en) 2001-09-06 2014-08-19 Qualcomm Incorporated Method and apparatus for compensating for mismatched delays in signals of a mobile display interface (MDDI) system
US7334086B2 (en) 2002-10-08 2008-02-19 Rmi Corporation Advanced processor with system on a chip interconnect technology
US8176298B2 (en) * 2002-10-08 2012-05-08 Netlogic Microsystems, Inc. Multi-core multi-threaded processing systems with instruction reordering in an in-order pipeline
US8015567B2 (en) 2002-10-08 2011-09-06 Netlogic Microsystems, Inc. Advanced processor with mechanism for packet distribution at high line rate
US20050044324A1 (en) * 2002-10-08 2005-02-24 Abbas Rashid Advanced processor with mechanism for maximizing resource usage in an in-order pipeline with multiple threads
US7984268B2 (en) 2002-10-08 2011-07-19 Netlogic Microsystems, Inc. Advanced processor scheduling in a multithreaded system
US7961723B2 (en) 2002-10-08 2011-06-14 Netlogic Microsystems, Inc. Advanced processor with mechanism for enforcing ordering between information sent on two independent networks
US8478811B2 (en) 2002-10-08 2013-07-02 Netlogic Microsystems, Inc. Advanced processor with credit based scheme for optimal packet flow in a multi-processor system on a chip
US7461215B2 (en) * 2002-10-08 2008-12-02 Rmi Corporation Advanced processor with implementation of memory ordering on a ring based data movement network
US7627721B2 (en) 2002-10-08 2009-12-01 Rmi Corporation Advanced processor with cache coherency
US8037224B2 (en) 2002-10-08 2011-10-11 Netlogic Microsystems, Inc. Delegating network processor operations to star topology serial bus interfaces
US7924828B2 (en) 2002-10-08 2011-04-12 Netlogic Microsystems, Inc. Advanced processor with mechanism for fast packet queuing operations
US7346757B2 (en) * 2002-10-08 2008-03-18 Rmi Corporation Advanced processor translation lookaside buffer management in a multithreaded system
US20050033831A1 (en) * 2002-10-08 2005-02-10 Abbas Rashid Advanced processor with a thread aware return address stack optimally used across active threads
US9088474B2 (en) 2002-10-08 2015-07-21 Broadcom Corporation Advanced processor with interfacing messaging network to a CPU
BRPI0410885B1 (pt) 2003-06-02 2018-01-30 Qualcomm Incorporated Gerar e implementar um protocolo de sinal e interface para taxas de dados mais altas
KR101070209B1 (ko) 2003-08-13 2011-10-06 퀄컴 인코포레이티드 더 높은 데이터 레이트를 위한 신호 인터페이스
KR100973103B1 (ko) 2003-09-10 2010-08-02 콸콤 인코포레이티드 고속 데이터 인터페이스
JP2005092780A (ja) * 2003-09-19 2005-04-07 Matsushita Electric Ind Co Ltd リアルタイムプロセッサシステム及び制御方法
JP2007509533A (ja) 2003-10-15 2007-04-12 クゥアルコム・インコーポレイテッド 高速データレートインタフェース
RU2331160C2 (ru) 2003-10-29 2008-08-10 Квэлкомм Инкорпорейтед Интерфейс с высокой скоростью передачи данных
RU2341906C2 (ru) 2003-11-12 2008-12-20 Квэлкомм Инкорпорейтед Интерфейс высокоскоростной передачи данных с улучшенным управлением соединением
US20050108713A1 (en) * 2003-11-18 2005-05-19 Geye Scott A. Affinity mask assignment system and method for multiprocessor systems
RU2006122542A (ru) 2003-11-25 2008-01-10 Квэлкомм Инкорпорейтед (US) Интерфейс с высокой скоростью передачи данных с улучшенной синхронизацией линии связи
MXPA06006452A (es) * 2003-12-08 2006-08-31 Qualcomm Inc Interfase de tasa alta de datos con sincronizacion de enlace mejorada.
US7093036B2 (en) * 2003-12-11 2006-08-15 International Business Machines Corporation Processor state aware interrupts from peripherals
JP2007528681A (ja) 2004-03-10 2007-10-11 クゥアルコム・インコーポレイテッド 高データレートインタフェース装置及び方法
AU2005223960B2 (en) * 2004-03-17 2009-04-09 Qualcomm Incorporated High data rate interface apparatus and method
US7784064B2 (en) * 2004-04-14 2010-08-24 Barclays Capital Inc. Method for collecting monitor information
US7512774B2 (en) * 2004-04-14 2009-03-31 Barclays Capital Inc. Method and system for collecting processor information
EP2020790B1 (de) 2004-06-04 2013-02-27 Qualcomm Incorporated Schnittstellenvorrichtung mit hoher Datenrate und Verfahren
US8650304B2 (en) 2004-06-04 2014-02-11 Qualcomm Incorporated Determining a pre skew and post skew calibration data rate in a mobile display digital interface (MDDI) communication system
US8538997B2 (en) 2004-06-25 2013-09-17 Apple Inc. Methods and systems for managing data
US8131674B2 (en) 2004-06-25 2012-03-06 Apple Inc. Methods and systems for managing data
EP1615141B1 (de) * 2004-07-01 2018-03-07 Harman Becker Automotive Systems GmbH Rechnerarchitektur für in einem fahrzeug verwendbares mobiles multimediasystem
WO2006013857A1 (ja) * 2004-08-05 2006-02-09 Matsushita Electric Industrial Co., Ltd. 情報処理装置
US20060112208A1 (en) * 2004-11-22 2006-05-25 International Business Machines Corporation Interrupt thresholding for SMT and multi processor systems
US8692838B2 (en) 2004-11-24 2014-04-08 Qualcomm Incorporated Methods and systems for updating a buffer
US8723705B2 (en) 2004-11-24 2014-05-13 Qualcomm Incorporated Low output skew double data rate serial encoder
US8699330B2 (en) 2004-11-24 2014-04-15 Qualcomm Incorporated Systems and methods for digital data transmission rate control
US8539119B2 (en) 2004-11-24 2013-09-17 Qualcomm Incorporated Methods and apparatus for exchanging messages having a digital data interface device message format
US8667363B2 (en) 2004-11-24 2014-03-04 Qualcomm Incorporated Systems and methods for implementing cyclic redundancy checks
US8873584B2 (en) 2004-11-24 2014-10-28 Qualcomm Incorporated Digital data interface device
JP2006195867A (ja) * 2005-01-17 2006-07-27 Matsushita Electric Ind Co Ltd バス調停方法及び半導体装置
US20060294401A1 (en) * 2005-06-24 2006-12-28 Dell Products L.P. Power management of multiple processors
US7849466B2 (en) * 2005-07-12 2010-12-07 Qualcomm Incorporated Controlling execution mode of program threads by applying a mask to a control register in a multi-threaded processor
US7552236B2 (en) * 2005-07-14 2009-06-23 International Business Machines Corporation Routing interrupts in a multi-node system
US7412353B2 (en) 2005-09-28 2008-08-12 Intel Corporation Reliable computing with a many-core processor
GB0519981D0 (en) * 2005-09-30 2005-11-09 Ignios Ltd Scheduling in a multicore architecture
US8730069B2 (en) 2005-11-23 2014-05-20 Qualcomm Incorporated Double data rate serial encoder
US8692839B2 (en) 2005-11-23 2014-04-08 Qualcomm Incorporated Methods and systems for updating a buffer
US7689838B2 (en) * 2005-12-22 2010-03-30 Intel Corporation Method and apparatus for providing for detecting processor state transitions
US8799687B2 (en) * 2005-12-30 2014-08-05 Intel Corporation Method, apparatus, and system for energy efficiency and energy conservation including optimizing C-state selection under variable wakeup rates
WO2007143278A2 (en) 2006-04-12 2007-12-13 Soft Machines, Inc. Apparatus and method for processing an instruction matrix specifying parallel and dependent operations
US7797555B2 (en) * 2006-05-12 2010-09-14 Intel Corporation Method and apparatus for managing power from a sequestered partition of a processing system
US7647509B2 (en) * 2006-05-12 2010-01-12 Intel Corporation Method and apparatus for managing power in a processing system with multiple partitions
CN107368285B (zh) 2006-11-14 2020-10-09 英特尔公司 多线程架构
US8799902B2 (en) * 2007-04-09 2014-08-05 Intel Corporation Priority based throttling for power/performance quality of service
JP4353990B2 (ja) * 2007-05-18 2009-10-28 株式会社半導体理工学研究センター マルチプロセッサ制御装置
US8032681B2 (en) 2007-09-06 2011-10-04 Intel Corporation Processor selection for an interrupt based on willingness to accept the interrupt and on priority
US7769938B2 (en) * 2007-09-06 2010-08-03 Intel Corporation Processor selection for an interrupt identifying a processor cluster
US7627706B2 (en) 2007-09-06 2009-12-01 Intel Corporation Creation of logical APIC ID with cluster ID and intra-cluster ID
US7962679B2 (en) * 2007-09-28 2011-06-14 Intel Corporation Interrupt balancing for multi-core and power
US9779235B2 (en) * 2007-10-17 2017-10-03 Sukamo Mertoguno Cognizant engines: systems and methods for enabling program observability and controlability at instruction level granularity
US8190864B1 (en) * 2007-10-25 2012-05-29 Oracle America, Inc. APIC implementation for a highly-threaded x86 processor
US8386684B2 (en) * 2007-12-12 2013-02-26 Nxp B.V. Data processing system and method of interrupt handling
US7730248B2 (en) * 2007-12-13 2010-06-01 Texas Instruments Incorporated Interrupt morphing and configuration, circuits, systems and processes
GB2455744B (en) * 2007-12-19 2012-03-14 Advanced Risc Mach Ltd Hardware driven processor state storage prior to entering a low power mode
US7962771B2 (en) * 2007-12-31 2011-06-14 Intel Corporation Method, system, and apparatus for rerouting interrupts in a multi-core processor
US9596324B2 (en) 2008-02-08 2017-03-14 Broadcom Corporation System and method for parsing and allocating a plurality of packets to processor core threads
JP5397739B2 (ja) * 2008-03-18 2014-01-22 株式会社リコー 画像処理装置、画像処理方法および画像処理プログラム
US7793025B2 (en) * 2008-03-28 2010-09-07 Freescale Semiconductor, Inc. Hardware managed context sensitive interrupt priority level control
US8141084B2 (en) * 2008-04-07 2012-03-20 International Business Machines Corporation Managing preemption in a parallel computing system
US8024504B2 (en) * 2008-06-26 2011-09-20 Microsoft Corporation Processor interrupt determination
US8555292B2 (en) 2008-06-27 2013-10-08 Microsoft Corporation Synchronizing communication over shared memory
US7779191B2 (en) * 2008-07-29 2010-08-17 Nvidia Corporation Platform-based idle-time processing
WO2010039246A1 (en) * 2008-09-30 2010-04-08 Searete, Llc Beam power for local receivers
CN101403982B (zh) * 2008-11-03 2011-07-20 华为技术有限公司 一种多核处理器的任务分配方法和系统
US7996595B2 (en) * 2009-04-14 2011-08-09 Lstar Technologies Llc Interrupt arbitration for multiprocessors
US8171319B2 (en) * 2009-04-16 2012-05-01 International Business Machines Corporation Managing processor power-performance states
US8321614B2 (en) * 2009-04-24 2012-11-27 Empire Technology Development Llc Dynamic scheduling interrupt controller for multiprocessors
US8260996B2 (en) * 2009-04-24 2012-09-04 Empire Technology Development Llc Interrupt optimization for multiprocessors
US8064197B2 (en) * 2009-05-22 2011-11-22 Advanced Micro Devices, Inc. Heat management using power management information
US20100332877A1 (en) * 2009-06-30 2010-12-30 Yarch Mark A Method and apparatus for reducing power consumption
US8234431B2 (en) 2009-10-13 2012-07-31 Empire Technology Development Llc Interrupt masking for multi-core processors
US8578384B2 (en) * 2009-10-28 2013-11-05 Freescale Semiconductor, Inc. Method and apparatus for activating system components
US8365131B2 (en) * 2010-01-11 2013-01-29 Empire Technology Development Llc Hardware synthesis using thermally aware scheduling and binding
US20110307716A1 (en) * 2010-06-10 2011-12-15 Broadcom Corporation Global control policy manager
US9009499B2 (en) 2010-06-10 2015-04-14 Broadcom Corporation Power manager for a network having a virtual machine
US8352685B2 (en) 2010-08-20 2013-01-08 Apple Inc. Combining write buffer with dynamically adjustable flush metrics
CN103081396B (zh) * 2010-08-24 2016-08-10 三菱电机株式会社 通信终端、通信系统以及通信方法
JP5516744B2 (ja) * 2010-08-27 2014-06-11 富士通株式会社 スケジューラ、マルチコアプロセッサシステムおよびスケジューリング方法
WO2012037491A2 (en) 2010-09-17 2012-03-22 Soft Machines, Inc. Single cycle multi-branch prediction including shadow cache for early far branch prediction
US9678755B2 (en) 2010-10-12 2017-06-13 Intel Corporation Instruction sequence buffer to enhance branch prediction efficiency
WO2012051281A2 (en) 2010-10-12 2012-04-19 Soft Machines, Inc. An instruction sequence buffer to store branches having reliably predictable instruction sequences
US8959270B2 (en) * 2010-12-07 2015-02-17 Apple Inc. Interrupt distribution scheme
US8458386B2 (en) 2010-12-07 2013-06-04 Apple Inc. Atomic interrupt masking in an interrupt controller to prevent delivery of same interrupt vector for consecutive interrupt acknowledgements
TWI432953B (zh) 2010-12-09 2014-04-01 Ind Tech Res Inst 具電源管理之超長指令處理器以及其電源管理裝置與方法
US8930676B2 (en) 2010-12-22 2015-01-06 Via Technologies, Inc. Master core discovering enabled cores in microprocessor comprising plural multi-core dies
US8635476B2 (en) 2010-12-22 2014-01-21 Via Technologies, Inc. Decentralized power management distributed among multiple processor cores
US8631256B2 (en) 2010-12-22 2014-01-14 Via Technologies, Inc. Distributed management of a shared power source to a multi-core microprocessor
US9460038B2 (en) 2010-12-22 2016-10-04 Via Technologies, Inc. Multi-core microprocessor internal bypass bus
US8637212B2 (en) 2010-12-22 2014-01-28 Via Technologies, Inc. Reticle set modification to produce multi-core dies
US8782451B2 (en) 2010-12-22 2014-07-15 Via Technologies, Inc. Power state synchronization in a multi-core processor
US8972707B2 (en) 2010-12-22 2015-03-03 Via Technologies, Inc. Multi-core processor with core selectively disabled by kill instruction of system software and resettable only via external pin
US9766893B2 (en) 2011-03-25 2017-09-19 Intel Corporation Executing instruction sequence code blocks by using virtual cores instantiated by partitionable engines
KR101636602B1 (ko) 2011-03-25 2016-07-05 소프트 머신즈, 인크. 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 코드 블록의 실행을 지원하는 메모리 프래그먼트
CN103562866B (zh) 2011-03-25 2018-03-30 英特尔公司 用于通过使用由可分割引擎实例化的虚拟核来支持代码块执行的寄存器文件段
EP2710480B1 (de) 2011-05-20 2018-06-20 Intel Corporation Verbindungsstruktur zur unterstützung der ausführung von instruktionssequenzen durch mehrere maschinen
CN103649932B (zh) 2011-05-20 2017-09-26 英特尔公司 资源的分散分配以及用于支持由多个引擎执行指令序列的互连结构
KR20130021637A (ko) * 2011-08-23 2013-03-06 삼성전자주식회사 멀티 코어 시스템의 인터럽트 할당 방법 및 장치
US8688883B2 (en) 2011-09-08 2014-04-01 Intel Corporation Increasing turbo mode residency of a processor
TWI556092B (zh) 2011-09-30 2016-11-01 英特爾公司 用以減少電力消耗之基於優先順序的應用程式事件控制技術
US9811338B2 (en) * 2011-11-14 2017-11-07 Intel Corporation Flag non-modification extension for ISA instructions using prefixes
EP2783280B1 (de) 2011-11-22 2019-09-11 Intel Corporation Beschleunigter codeoptimierer für einen mehrmotor-mikroprozessor
CN104040491B (zh) 2011-11-22 2018-06-12 英特尔公司 微处理器加速的代码优化器
US9400545B2 (en) 2011-12-22 2016-07-26 Intel Corporation Method, apparatus, and system for energy efficiency and energy conservation including autonomous hardware-based deep power down in devices
US8819461B2 (en) * 2011-12-22 2014-08-26 Intel Corporation Method, apparatus, and system for energy efficiency and energy conservation including improved processor core deep power down exit latency by using register secondary uninterrupted power supply
WO2013095618A1 (en) 2011-12-23 2013-06-27 Intel Corporation Instruction execution that broadcasts and masks data values at different levels of granularity
CA2799974C (en) * 2011-12-29 2018-05-22 The University Of Western Ontario Method and apparatus for wireless security enhancement using multiple attributes monitoring, continuous and interleaved authentication, and system adaption
US8930674B2 (en) 2012-03-07 2015-01-06 Soft Machines, Inc. Systems and methods for accessing a unified translation lookaside buffer
US10146545B2 (en) 2012-03-13 2018-12-04 Nvidia Corporation Translation address cache for a microprocessor
GB2500434A (en) * 2012-03-23 2013-09-25 Cognovo Ltd Scheduling actions based on the state of the resources needed to execute the actions
US9880846B2 (en) 2012-04-11 2018-01-30 Nvidia Corporation Improving hit rate of code translation redirection table with replacement strategy based on usage history table of evicted entries
US10241810B2 (en) 2012-05-18 2019-03-26 Nvidia Corporation Instruction-optimizing processor with branch-count table in hardware
US9740612B2 (en) 2012-07-30 2017-08-22 Intel Corporation Systems and methods for maintaining the coherency of a store coalescing cache and a load cache
US9916253B2 (en) 2012-07-30 2018-03-13 Intel Corporation Method and apparatus for supporting a plurality of load accesses of a cache in a single cycle to maintain throughput
US9229873B2 (en) 2012-07-30 2016-01-05 Soft Machines, Inc. Systems and methods for supporting a plurality of load and store accesses of a cache
US9710399B2 (en) 2012-07-30 2017-07-18 Intel Corporation Systems and methods for flushing a cache with modified data
US9342122B2 (en) 2012-09-17 2016-05-17 Intel Corporation Distributing power to heterogeneous compute elements of a processor
US9678882B2 (en) 2012-10-11 2017-06-13 Intel Corporation Systems and methods for non-blocking implementation of cache flush instructions
US9678564B2 (en) * 2012-12-21 2017-06-13 Nxp B.V. Multiprocessor system with interrupt distributor
US20140189310A1 (en) 2012-12-27 2014-07-03 Nvidia Corporation Fault detection in instruction translations
US9563579B2 (en) 2013-02-28 2017-02-07 Intel Corporation Method, apparatus, system for representing, specifying and using deadlines
US9571329B2 (en) * 2013-03-11 2017-02-14 International Business Machines Corporation Collective operation management in a parallel computer
US10108424B2 (en) 2013-03-14 2018-10-23 Nvidia Corporation Profiling code portions to generate translations
US9904625B2 (en) 2013-03-15 2018-02-27 Intel Corporation Methods, systems and apparatus for predicting the way of a set associative cache
US10140138B2 (en) 2013-03-15 2018-11-27 Intel Corporation Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation
US10275255B2 (en) 2013-03-15 2019-04-30 Intel Corporation Method for dependency broadcasting through a source organized source view data structure
US9891924B2 (en) 2013-03-15 2018-02-13 Intel Corporation Method for implementing a reduced size register view data structure in a microprocessor
US9886279B2 (en) 2013-03-15 2018-02-06 Intel Corporation Method for populating and instruction view data structure by using register template snapshots
WO2014150991A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for implementing a reduced size register view data structure in a microprocessor
US9569216B2 (en) 2013-03-15 2017-02-14 Soft Machines, Inc. Method for populating a source view data structure by using register template snapshots
WO2014150806A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for populating register view data structure by using register template snapshots
US9811342B2 (en) 2013-03-15 2017-11-07 Intel Corporation Method for performing dual dispatch of blocks and half blocks
WO2014150971A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for dependency broadcasting through a block organized source view data structure
CN105247484B (zh) 2013-03-15 2021-02-23 英特尔公司 利用本地分布式标志体系架构来仿真访客集中式标志体系架构的方法
EP2972845B1 (de) 2013-03-15 2021-07-07 Intel Corporation Verfahren zur ausführung von in blöcken gruppierten befehlen aus mehreren threads
GB2514126A (en) * 2013-05-14 2014-11-19 Ibm Interruption of chip component managing tasks
US20140344947A1 (en) * 2013-05-20 2014-11-20 Advanced Micro Devices, Inc. Method and apparatus for handling storage of context information
US9336068B2 (en) 2013-06-07 2016-05-10 Apple Inc. Throttling of application access to resources
US9424212B2 (en) * 2013-06-13 2016-08-23 Microsoft Technology Licensing, Llc Operating system-managed interrupt steering in multiprocessor systems
CN103336571B (zh) * 2013-06-13 2016-02-03 中国科学院计算技术研究所 一种降低多线程程序功耗的方法及系统
US9535488B2 (en) 2013-08-28 2017-01-03 Via Technologies, Inc. Multi-core microprocessor that dynamically designates one of its processing cores as the bootstrap processor
US9792112B2 (en) 2013-08-28 2017-10-17 Via Technologies, Inc. Propagation of microcode patches to multiple cores in multicore microprocessor
CN104360727B (zh) * 2013-08-28 2019-02-01 威盛电子股份有限公司 微处理器及使用其省电的方法
US9465432B2 (en) * 2013-08-28 2016-10-11 Via Technologies, Inc. Multi-core synchronization mechanism
US9183155B2 (en) * 2013-09-26 2015-11-10 Andes Technology Corporation Microprocessor and method for using an instruction loop cache thereof
US9471132B2 (en) * 2013-09-27 2016-10-18 Intel Corporation Techniques for putting platform subsystems into a lower power state in parallel
EP3060996A4 (de) * 2013-10-25 2017-05-10 Advanced Micro Devices, Inc. Verfahren und vorrichtung zur durchführung einer busblockierung und ausserkraftsetzung eines adressübersetzungspufferspeichers
CN103577328B (zh) * 2013-11-20 2016-08-17 北京奇虎科技有限公司 一种应用的性能分析方法及装置
CN104571466A (zh) * 2015-01-22 2015-04-29 宇龙计算机通信科技(深圳)有限公司 一种多系统终端的省电方法及装置
US10028225B2 (en) * 2015-08-26 2018-07-17 International Business Machines Corporation Efficient usage of internet services on mobile devices
CN105183123B (zh) * 2015-09-21 2018-01-09 北京元心科技有限公司 一种在基于容器的多系统中进行电源管理的方法和装置
US9848515B1 (en) 2016-05-27 2017-12-19 Advanced Micro Devices, Inc. Multi-compartment computing device with shared cooling device
CN106250235A (zh) * 2016-07-26 2016-12-21 张升泽 基于多内核芯片的多任务调度方法及系统
US10802831B2 (en) * 2017-06-30 2020-10-13 Sap Se Managing parallel processing
CN108306965B (zh) * 2018-01-31 2021-02-02 上海小蚁科技有限公司 摄像头的数据处理方法及装置、存储介质、摄像头
CN110202953A (zh) * 2019-07-02 2019-09-06 深圳劲鑫科技有限公司 一种单工作台喷墨机
US11630789B2 (en) * 2020-09-11 2023-04-18 Apple Inc. Scalable interrupts
US11675718B2 (en) * 2021-03-26 2023-06-13 Advanced Micro Devices, Inc. Enhanced low-priority arbitration
US11934313B2 (en) 2021-08-23 2024-03-19 Apple Inc. Scalable system on a chip
CN117369987A (zh) * 2023-08-22 2024-01-09 华为技术有限公司 一种计算装置及相关任务执行调度方法

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4253146A (en) * 1978-12-21 1981-02-24 Burroughs Corporation Module for coupling computer-processors
US5613128A (en) * 1990-12-21 1997-03-18 Intel Corporation Programmable multi-processor interrupt controller system with a processor integrated local interrupt controller
EP0683451B1 (de) 1994-05-09 2004-02-25 Canon Kabushiki Kaisha Verfahren zur Steuerung der Stromversorgung in einer Mehrprozessbetriebsumgebung
US5918057A (en) 1997-03-20 1999-06-29 Industrial Technology Research Institute Method and apparatus for dispatching multiple interrupt requests simultaneously
DE69818702T2 (de) * 1997-11-14 2004-07-22 Gen-Probe Inc., San Diego Arbeitsgerät zur analyse
US6418496B2 (en) * 1997-12-10 2002-07-09 Intel Corporation System and apparatus including lowest priority logic to select a processor to receive an interrupt message
US6904595B2 (en) * 2000-05-08 2005-06-07 Microtune (San Diego), Inc. Priority in a portable thread environment
US6986066B2 (en) * 2001-01-05 2006-01-10 International Business Machines Corporation Computer system having low energy consumption
US6845456B1 (en) * 2001-05-01 2005-01-18 Advanced Micro Devices, Inc. CPU utilization measurement techniques for use in power management
US6823413B2 (en) * 2001-06-08 2004-11-23 Oki Electronic Industry Co., Ltd. Interrupt signal processing apparatus
US6990593B2 (en) * 2001-07-31 2006-01-24 Hewlett-Packard Development Company, L.P. Method for diverting power reserves and shifting activities according to activity priorities in a server cluster in the event of a power interruption
US7213065B2 (en) * 2001-11-08 2007-05-01 Racemi, Inc. System and method for dynamic server allocation and provisioning
US6990320B2 (en) * 2002-02-26 2006-01-24 Motorola, Inc. Dynamic reallocation of processing resources for redundant functionality
US7065766B2 (en) * 2002-07-11 2006-06-20 International Business Machines Corporation Apparatus and method for load balancing of fixed priority threads in a multiple run queue environment
US7152169B2 (en) * 2002-11-29 2006-12-19 Intel Corporation Method for providing power management on multi-threaded processor by using SMM mode to place a physical processor into lower power state
US7546475B2 (en) * 2003-05-13 2009-06-09 Hewlett-Packard Development Company, L.P. Power-aware adaptation in a data center

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102011013833A1 (de) * 2011-03-14 2012-09-20 Continental Automotive Gmbh Anzeigevorrichtung
DE102011013833B4 (de) * 2011-03-14 2014-05-15 Continental Automotive Gmbh Anzeigevorrichtung
US9146140B2 (en) 2011-03-14 2015-09-29 Continental Automotive Gmbh Display device having a stepper motor and a watchdog timer

Also Published As

Publication number Publication date
GB0505391D0 (en) 2005-04-20
US7761720B2 (en) 2010-07-20
GB2412457A (en) 2005-09-28
HK1075314A1 (en) 2005-12-09
WO2004061686A2 (en) 2004-07-22
US20070143514A1 (en) 2007-06-21
CN100349147C (zh) 2007-11-14
TWI233545B (en) 2005-06-01
CN1732447A (zh) 2006-02-08
TW200413889A (en) 2004-08-01
GB2412457B (en) 2006-01-25
US7191349B2 (en) 2007-03-13
WO2004061686A3 (en) 2004-11-18
AU2003298903A1 (en) 2004-07-29
US20040128563A1 (en) 2004-07-01

Similar Documents

Publication Publication Date Title
DE10393969T5 (de) Mechanismus zur Verteilung von Unterbrechungen niedrigster Priorität unter Berücksichtigung des Prozessorleistungszustands
DE112006003444B4 (de) Verfahren und Vorrichtung zum Erfassen von Prozessorzustands-Übergängen
DE112007001987B4 (de) Überführen einer Rechenplattform in einen Systemzustand niedriger Leistung
DE102013104328B4 (de) Aufgabenzuteilung in großen und kleinen Kernen
DE69907512T2 (de) Gerät und verfahren zur automatischen frequenzregelung einer zentralen verarbeitungseinheit
US7783907B2 (en) Power management of multi-processor servers
DE102014003704B4 (de) Plattform-agnostisches Powermanagement
DE112012006377B4 (de) Energieverbrauch und Leistung von Computersystemen steuern
DE112011103193B4 (de) Bereitstellung einer Pro-Kern-Spannungs-und Frequenzsteuerung
DE112004001320B3 (de) Verfahren, System und Vorrichtung zur Verbesserung der Leistung von Mehrkernprozessoren
DE69727407T2 (de) Verteilte Ausführung von modusungeeigneten Befehlen in Multiprozessorsysteme
DE69517712T2 (de) Verfahren und Vorrichtung zur Reduzierung der Leistungsaufnahme in einem Rechnersystem
DE102010045743B4 (de) Verfahren und Vorrichtung, um Turboleistung für das Event-Handling zu verbessern
DE102013104329B4 (de) Aufgabenzuteilung in großen und kleinen Kernen
DE112017004110T5 (de) Verfahren, vorrichtung und system für eine rollenübertragungsfunktion für einen bus-master
DE112011105590T5 (de) Energieeffiziente Prozessorarchitektur
DE112004001887B4 (de) Optimierung der SMI-Behandlung und -Initialisierung
DE112011103194B4 (de) Koordinieren von Gerät- und Anwendungsunterbrechungsereignissen zum Plattformenergiesparen
DE202012011944U1 (de) Vorrichtung und System zur Energie-Effizienz und Energie-Einsparung mit einem Strom- und Leistungsabgleich zwischen mehreren Verarbeitungselementen
DE112011102822T5 (de) Leistungsoptimierte Interrupt-Abgabe
DE102009015495A1 (de) Energieverwaltung bei einer Plattform basierend auf der Lenkung über die Wartezeit
DE112012005209T5 (de) Brückenfunktion zwischen Virtual Machine Monitor und Bare-Metal-Bootvorgang
DE112019000662T5 (de) System, Vorrichtung und Verfahren für ein Handschlag-Protokoll für Niedrigleistungszustandsübergänge
DE112013006241T5 (de) Techniken für Plattform-Arbeitszyklus-Wechsel
DE112017003080T5 (de) Prozessor mit gleichzeitigem kern und gewebeausgang aus einem zustand mit geringer energie

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8131 Rejection
8172 Supplementary division/partition in:

Ref document number: 10394375

Country of ref document: DE

Kind code of ref document: P

Q171 Divided out to:

Ref document number: 10394375

Country of ref document: DE

Kind code of ref document: P