DE112005002672B4 - Dynamische Neukonfiguration eines Cache-Speichers - Google Patents
Dynamische Neukonfiguration eines Cache-Speichers Download PDFInfo
- Publication number
- DE112005002672B4 DE112005002672B4 DE112005002672T DE112005002672T DE112005002672B4 DE 112005002672 B4 DE112005002672 B4 DE 112005002672B4 DE 112005002672 T DE112005002672 T DE 112005002672T DE 112005002672 T DE112005002672 T DE 112005002672T DE 112005002672 B4 DE112005002672 B4 DE 112005002672B4
- Authority
- DE
- Germany
- Prior art keywords
- cache
- utilization
- cache memory
- memory
- predetermined
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/126—Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1028—Power efficiency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/27—Using a specific cache architecture
- G06F2212/271—Non-uniform cache access [NUCA] architecture
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
unabhängiges Überwachen einer entsprechenden aktuellen Auslastung jedes der Cache-Speicher;
Bestimmen, ob die entsprechende aktuelle Auslastung unterhalb eines vorbestimmten Auslastungswerts liegt; und
in Reaktion darauf, dass bestimmt wird, dass die aktuelle Auslastung unter dem vorbestimmten Auslastungswert liegt, selektives Deaktivieren eines oder mehrerer Bereiche des entsprechenden Cache-Speichers;
Bestimmen, ob die entsprechende aktuelle Auslastung oberhalb eines vorbestimmten Auslastungswerts liegt; und
in Reaktion darauf, dass bestimmt wird, dass die aktuelle Auslastung über dem vorbestimmten Auslastungswert liegt, Erlauben eines gemeinsamen Zugriffs auf einen oder mehrere Bereiche des entsprechenden Cache-Speichers eines anderen der Prozessorkerne (15A, 15B), die in Reaktion darauf, dass für diesen Cache-Speicher des anderen der Prozessorkerne (15A, 15B) bestimmt wird, dass die aktuelle Auslastung unter dem vorbestimmten Auslastungswert liegt, deaktiviert worden...
Description
- Diese Erfindung betrifft die Neukonfiguration bzw. Rekonfiguration eines Cache-Speichers eines Verarbeitungsknotens mit mehreren Prozessorkernen.
- Moderne Mikroprozessoren enthalten typischerweise einen Chip-internen Cache-Speicher bzw. einen schnellen Zwischenspeicher. In vielen Fällen enthalten Mikroprozessoren eine Chip-interne hierarchische Cache-Struktur, die eine Ebene Eins (L1), eine Ebene Zwei (L2) und in manchen Fällen eine Ebene Drei (L3) aus entsprechenden Zwischenspeichern bzw. Cache-Speichern aufweist. In typischen Cache-Hierarchien kann ein kleiner schneller L1-Cache-Speicher eingesetzt sein, der verwendet werden kann, um die am häufigsten verwendeten Cache-Zeilen zu speichern. Der L2-Speicher kann ein größerer und möglicherweise langsamerer Cache-Speicher sein, um Cache-Zeilen zu speichern, auf die zugegriffen wird, aber die nicht in den L1-Speicher passen. Der L3-Cache-Speicher kann verwendet werden, um Cache-Zeilen zu speichern, auf die zugegriffen wird, die aber nicht in den L2-Cache-Speicher passen. Mit einer Cache-Hierarchie, wie sie zuvor beschrieben ist, kann das Leistungsverhalten des Prozessors verbessert werden, indem die mit dem Speicherzugriff durch den Prozessor kernverknüpften Wartezeiten reduziert werden.
- Jedoch kann in gewissen Fällen eine derartige Verbesserung des Leistungsverhaltens mit gewissen Einbußen einhergehen. Es ist gut bekannt, dass moderne Mikroprozessoren eine höhere Leistung benötigen und damit ein hohes thermisches Budget aufweisen. Cache-Speicher können aufgrund der statischen Leckströme Leistung verbrauchen, selbst wenn sie nicht verwendet werden. Je größer somit der Cache-Speicher ist, desto mehr Leistung wird verbraucht.
- In dem Bestreben, die Effizienz eines Prozessors zu verbessern, wird zunehmend die Technik der Chip-Multiprozessoren (CMP) bedeutsam, die zudem wachsende Popularität gewinnen. Ein CMP besitzt zwei oder mehrere Prozessorkerne, die in dem gleichen integrierten Schaltungs-(IC)Bauelement eingerichtet sind. Die wachsende Popularität kann zumindest teilweise in der Tatsache begründet liegen, dass ein CMP eine effizientere Ausnutzung der Millionen an Transistoren ermöglicht, die in einer integrierten Schaltung enthalten sind, im Vergleich zu beispielsweise einem einzelnen Prozessor mit komplexerer Technik. Zum Beispiel kann durch das Aufteilen der Prozessaufgaben zwischen Prozessorkernen ein CMP einige Aufgaben mit geringerer Frequenz ausführen, als dies für gewisse Prozessoren mit Einzelkernen erforderlich ist. Geringere Frequenzen führen in einigen Fällen zu Einsparungen in der Leistung und zu einer Verringerung des thermischen Budgets.
- Die
US 5 761 715 A offenbart eine Informationsverarbeitungseinrichtung mit einem Cache-Speicher, in der eine Cache-Fehlerrate gemessen und ausgewertet wird, um den Energieverbrauch der Einrichtung zu steuern. - Die
GB 2 388 217 A - Die
US 2003/0135768 A1 - CMP-Bauelemente, die mehrere Prozessorkerne enthalten, weisen jedem dieser Kerne zugeordnete Schaltungen auf. Beispielsweise kann ein CMP einen L1- und einen L2-Cache-Speicher für jeden Prozessorkern enthalten. Somit ist aus den zuvor beschriebenen Gründen im Vergleich zu Mikroprozessoren mit einem einzelnen Kern die Leistungsaufnahme und das thermische Budget eines CMP hoch.
- Es besteht daher die Aufgabe, die Leistungsaufnahme eines Verarbeitungsknotens mit mehreren Prozessorkernen zu reduzieren ohne die Leistungsfähigkeit bzw. das Leistungsverhalten Prozessors zu verringern.
- Zur Lösung dieser Aufgabe wird ein Verfahren zum dynamischen Konfigurieren eines Cache-Speichers in einem Verarbeitungsknoten mit mehreren Prozessorkernen, wobei jeder Prozessorkern einen Cache-Speicher enthält, bereitgestellt, wobei das Verfahren umfasst:
unabhängiges Überwachen einer entsprechenden aktuellen Auslastung jedes der Cache-Speicher;
Bestimmen, ob die entsprechende aktuelle Auslastung unterhalb eines vorbestimmten Auslastungswerts liegt; und
in Reaktion darauf, dass bestimmt wird, dass die aktuelle Auslastung unter dem vorbestimmten Auslastungswert liegt, selektives Deaktivieren eines oder mehrerer Bereiche des entsprechenden Cache-Speichers;
Bestimmen, ob die entsprechende aktuelle Auslastung oberhalb eines vorbestimmten Auslastungswerts liegt; und
in Reaktion darauf, dass bestimmt wird, dass die aktuelle Auslastung über dem vorbestimmten Auslastungswert liegt, Erlauben eines gemeinsamen Zugriffs auf einen oder mehrere Bereiche des entsprechenden Cache-Speichers eines anderen der Prozessorkerne, die in Reaktion darauf, dass für diesen Cache-Speicher des anderen der Prozessorkerne bestimmt wird, dass die aktuelle Auslastung unter dem vorbestimmten Auslastungswert liegt, deaktiviert worden sind. -
1 ist eine Blockansicht einer Ausführungsform eines Computersystems mit einem Verarbeitungsknoten mit mehren Kernen und einem konfigurierbaren Cache-Speicher. -
2 ist eine Blockansicht einer weiteren Ausführungsform eines Computersystems mit einem Verarbeitungsknoten mit mehreren Kernen und einem konfigurierbaren Cache-Speicher. -
3 ist ein Flussdiagramm, das die Funktionsweise einer Ausführungsform eines Verarbeitungsknotens beschreibt. -
1 zeigt eine Blockansicht einer Ausführungsform eines Computersystems10 . In der dargestellten Ausführungsform umfasst das Computersystem10 einen Verarbeitungsknoten12 , der mit einem Speicher14 und mit Peripheriegeräten13A –13B verbunden ist. Der Knoten12 umfasst Prozessorkerne15A -15B , die mit einer Knotensteuerung20 verbunden sind, die ferner mit einer Speichersteuerung22 und mehreren HyperTransportTM(HT)-Schnittstellenschaltungen24A –24C verbunden ist. Die Prozessorkerne15A –15B sind ferner mit einem gemeinsamen Cache-Speicher bzw. schnellem Zwischenspeicher60 der Ebene Drei (L3) verbunden, der mit einer L3-Cache-Überwachungseinheit85 und einer Konfigurationseinheit50 verbunden ist. Die HT-Schaltung24C ist mit dem Peripheriegerät16A verbunden, das mit dem Peripheriegerät16B in einer Prioritätskettenkonfiguration (in dieser Ausführungsform unter Anwendung von HT-Schnittstellen) verbunden ist. Die restlichen HT-Schaltungen24A –24B sind mit anderen ähnlichen Verarbeitungsknoten (nicht gezeigt) über weitere HT-Schnittstellen (nicht gezeigt) verbunden. Die Speichersteuerung22 ist mit dem Speicher14 verbunden. In einer Ausführungsform ist der Knoten12 ein einzelner integrierter Schaltungs-Chip mit der Schaltung, die in1 gezeigt ist. Das heißt, der Knoten12 kann ein Chip-Multiprozessor (CMP) sein. Es kann ein beliebiges Niveau an Integration oder es können diskrete Komponenten verwendet werden. Zu beachten ist, dass der Verarbeitungsknoten12 diverse andere Schaltungen enthalten kann, die der Einfachheit halber hier weggelassen sind. - In einer Ausführungsform umfasst die Knotensteuerung
20 diverse Verbindungsschaltungen (nicht gezeigt), um die Prozessorkerne15A und15B miteinander, mit anderen Knoten und mit dem Speicher zu verbinden. Die Knotensteuerung20 umfasst ferner Sicherungen (nicht gezeigt), die selektiv während des Herstellungsprozesses unterbrochen werden können, um mehrere Werte darzustellen. In einigen Ausführungsformen können diverse Knoteneigenschaften durch die Sicherungen ausgewählt werden. Zu den Eigenschaften gehören die maximale und die minimale Arbeitsfrequenz für den Knoten und die maximale und minimale Versorgungsspannung für den Knoten. Des Weiteren können die Sicherungen Prozessorkern-spezifische Eigenschaften auswählen. - Die Knotensteuerung
20 kann im Allgemeinen so gestaltet sein, dass Kommunikationsaktivitäten zwischen den Prozessorkernen15A –15B , der Speichersteuerung22 und den HT-Schaltungen24A –24C in Abhängigkeit von der Kommunikationsart, der Adresse der Kom munikation etc., weitergeleitet werden. In einer Ausführungsform umfasst die Knotensteuerung20 eine Systemanforderungswarteschlange (SRQ), in die empfangene Kommunikationsaktivitäten von der Knotensteuerung20 geschrieben werden. Die Knotensteuerung20 kann Kommunikationsereignisse aus der SRQ für die Weiterleitung zum Ziel oder zu Zielen aus den Prozessorkernen15A –15B , den HT-Schaltungen24A –24C und der Speichersteuerung22 disponieren. Die Funktionsweise des Knotens12 und seiner Komponenten wird nachfolgend detaillierter erläutert. - Im Allgemeinen können die Prozessorkerne
15A –15B die Schnittstelle(n) zu der Knotensteuerung20 verwenden, um mit anderen Komponenten des Computersystems10 zu kommunizieren (beispielsweise mit dem Peripheriegerät16A –16B , anderen Prozessorkernen (nicht gezeigt), der Speichersteuerung22 , etc.). Die Schnittstelle kann in einer beliebigen gewünschten Art gestaltet sein. Es kann eine mit dem Cache-Speicher kohärente Kommunikation für die Schnittstelle in einigen Ausführungsformen definiert sein. In einer Ausführungsform erfolgt die Kommunikation auf den Schnittstellen zwischen der Knotensteuerung20 und den Prozessorkernen15A –15B in Form von Paketen, ähnlich zu jenen, wie sie in den HT-Schnittstellen verwendet werden. In anderen Ausführungsformen kann eine beliebige gewünschte Kommunikationsart verwendet werden (beispielsweise Transaktionen auf einer Busschnittstelle, Pakete mit anderer Form, etc.). In anderen Ausführungsformen benutzen die Prozessorkerne15A –15B eine gemeinsame Schnittstelle zur Verbindung mit der Knotensteuerung20 (beispielsweise eine gemeinsam genutzte Busschnittstelle). Im Allgemeinen können die Kommunikationsaktivitäten von den Prozessorkernen15A –15B Anforderungen enthalten, etwa Leseoperationen (um eine Speicherstelle oder ein Register außerhalb des Prozessorkerns auszulesen) und Schreiboperationen (um eine Speicherstelle oder ein externes Register zu beschreiben), Antworten auf Sondierungsanfragen (für Cache kohärente Ausführungsformen), Interrupt-Bestätigungen, und Systemverwaltungsnachrichten, etc. - Der Speicher
14 kann beliebige geeignete Speichereinrichtungen enthalten. Beispielsweise kann ein Speicher14 einen oder mehrere RAMBUS-DRAMs (RDRAMSs), synchrone DRAMs (SDRAMs), SDRAMs mit doppelter Datenrate (DDR), statische RAMs, etc. aufweisen. Die Speichersteuerung22 kann eine Steuerschaltung zur Verbindung mit den Speichern14 umfassen. Zusätzlich kann die Speichersteuerung22 Anforderungswarteschlangen zum Aneinanderreihen von Speicheranforderungen, etc. enthalten. - Die HT-Schaltungen
24A –24C können mehrere Puffer und Steuerschaltungen zum Empfangen von Paketen von einer HT-Verbindung und zum Senden von Paketen über eine HT-Verbindung aufweisen. Die HT-Schnittstelle umfasst unidirektionale Verbindungen für das Senden von Paketen. Jede HT-Schaltung24A –24C kann mit zwei derartigen Verbindungen gekoppelt sein (eine zum Senden und eine zum Empfangen). Eine gegebene HT-Schnittstelle kann in einer mit dem Cache-Speicher kohärenten Weise betrieben werden (beispielsweise zwischen den Verarbeitungsknoten) oder kann in einer nicht-kohärenten Weise betrieben werden (beispielsweise zu/von den Peripheriegeräten16A –16B ). In der dargestellten Ausführungsform sind die HT-Schaltungen24A –24B nicht in Verwendung, und die HT-Schaltung24C ist über nicht-kohärente Verbindungen mit den Peripheriegeräten16A –16B verbunden. - Die Peripheriegeräte
16A –16B können eine beliebige Art von peripheren Geräten bzw. Einrichtungen sein. Zum Beispiel können die Peripheriegeräte16A –16B Einrichtungen zum Kommunizieren mit einem weiteren Computersystem enthalten, mit dem die Einrichtungen verbunden sind (z. B. Netzwerkschnittstellenkarten, Schaltungen ähnlich zu einer Netzwerkschnittstellenkarte, die auf eine Hauptplatine eines Computersystems integriert ist, oder Modems). Ferner können die Peripheriegeräte16A –16B Videobeschleuniger, Audiokarten, Festplattenlaufwerke und Diskettenlaufwerke oder Laufwerkssteuerungen, SCSI-(Kleincomputersystem-Schnittstellen)Adapter und Telefonkarten, Klangkarten und eine Vielzahl von Datennahmekarten, etwa GPIB- oder Feldbus-Schnittstellenkarten enthalten. Zu beachten ist, dass der Begriff ”Peripheriegerät” auch Eingabe/Ausgabe-(I/O)Geräte bzw. Einrichtungen umfassen soll. - Im Allgemeinen kann ein Prozessorkern
15A –15B Schaltungen aufweisen, die ausgebildet sind, Befehle auszuführen, die in einer gegebenen Befehlssatzarchitektur definiert sind. Das heißt, die Prozessorkernschaltung ist ausgebildet, Befehle, die in der Befehlssatzarchitektur definiert sind, abzuholen, zu dekodieren, auszuführen und deren Ergebnisse zu speichern. Beispielsweise kann in einer Ausführungsform die x86-Architektur in den Prozessorkernen15A –15B eingerichtet sein. Die Prozessorkerne15A –15B können beliebige Konfigurationen aufweisen, zu denen Super-Pipeline-Verarbeitungen, superskalare Konfigurationen oder Kombinationen davon gehören. Zu anderen Konfigurationen gehören skalare Strukturen, Pipeline-Strukturen, Nicht-Pipeline-Strukturen, etc. In diversen Ausführungsformen kann eine spekulative Ausführung außerhalb der Reihenfolge oder entsprechend der Reihenfolge eingerichtet sein. Die Prozessorkerne können die Mikrokodierung für einen oder mehrere Befehle oder andere Funktionen in Verbindung mit beliebigen Konfiguratio nen der oben genannten Ausbildungen enthalten. In den diversen Ausführungsformen können eine Vielzahl anderer Gestaltungsmerkmale, etwa Cache-Speicher, Translations-Nebenordnungspuffer (TLB), etc. eingerichtet sein. - Es ist zu beachten, dass, obwohl die vorliegende Ausführungsform die HT-Schnittstelle für die Kommunikation zwischen den Knoten und zwischen einem Knoten und den Peripheriegeräten anwendet, in anderen Ausführungsformen eine beliebige gewünschte Schnittstelle oder Schnittstellen für die entsprechende Kommunikation verwendet werden können. Beispielsweise können andere Paket-basierte Schnittstellen angewendet werden, es können Busschnittstellen eingesetzt werden, und es können diverse standardmäßige periphere Schnittstellen (beispielsweise eine periphere Komponentenverbindungs-(PCI), PCI-Expressschnittstelle, etc.) und dergleichen verwendet werden.
- In der dargestellten Ausführungsform umfasst der Prozessorkern
15A einen L2-Cache-Speicher17A . In ähnlicher Weise enthält der Prozessorkern15B einen L2-Cache-Speicher17B . Die entsprechenden L2-Cache-Speicher sind repräsentativ für einen beliebigen L2-Cache-Speicher, wie er in einem Mikroprozessor anzutreffen ist. Jedoch sind in einer Ausführungsform die L2-Cache-Speicher17A –17B unter Anwendung einer Anzahl von unabhängig steuerbaren Speicherblöcken eingerichtet, wie dies durch die gestrichelten Linien angezeigt ist. In einer Ausführungsform umfasst jeder der Blöcke eine unabhängig steuerbare Leistungsversorgung. Somit kann die jedem der Speicherblöcke zugeführte Versorgungsleistung (VDD) unabhängig abgeschaltet werden oder in einigen Fällen kann die den Blöcken von den individuellen Leistungsversorgungen zugeführte Spannung unabhängig herabgesetzt werden. - Wie die zuvor beschriebenen L2-Cache-Speicher kann in der dargestellten Ausführungsform der L3-Cache-Speicher
60 auch unter Anwendung einer Anzahl aus unabhängig steuerbaren Speicherblöcken eingerichtet werden, wie dies durch die gestrichelte Linie dargestellt ist, wobei jeder der Blöcke eine unabhängig steuerbare Leistungszufuhr enthält. Die jedem der Speicherblöcke zugeführte Versorgungsleistung (VDD) kann unabhängig deaktiviert werden oder in einigen Fällen kann die Spannung VDD, die den Blöcken durch die einzelnen Leistungszufuhren zugeführt wird, unabhängig abgesenkt werden. - In der dargestellten Ausführungsform sind ähnlich zu dem L3-Cache-Speicher jeweils die entsprechenden L2-Cache-Speicher
17A –17B mit einer L2-Cache-Überwachungseinheit18A –18B und einer Konfigurationseinheit19A –19B verbunden. In einer Ausführungsform ist jede Cache-Überwachungseinheit (beispielsweise18A ,19A ,85 ) ausgebildet, die Auslastung des entsprechenden damit verbundenen Cache-Speichers zu überwachen. Beispielsweise kann die L2-Cache-Überwachungseinheit18A die Auslastung bzw. Nutzung des L2-Cache-Speichers17A überwachen. In der dargestellten Ausführungsform überwacht jede Cache-Überwachungseinheit Schaltungen (beispielsweise40A ,40B ,86 ), die die aktuelle Cache-Auslastung bestimmen und ermitteln, ob die aktuelle Auslastung innerhalb einer gegebenen Auslastungsgrenze liegt. Genauer gesagt, kann die Cache-Überwachungseinheit18A beispielsweise bestimmen, ob die aktuelle Auslastung des L2-Cache-Speichers17A unterhalb eines vorbestimmten Schwellwerts liegt. Wenn dies der Fall ist benachrichtigt die Cache-Überwachungseinheit18A die Konfigurationseinheit19A . - In einer Ausführungsform umfasst die Konfigurationseinheit
19A einen oder mehrere Speicher, die als42A bezeichnet sind, etwa programmierbare Register, die Werte speichern können, die den diversen bevorzugten Konfigurationen und Zuständen des L2-Cache-Speichers17A entsprechen. Abhängig von den in den Speichereinrichtungen42A gespeichert Werten kann die Konfigurationseinheit19A programmiert sein, um selektiv einen oder mehrere der unabhängig steuerbaren Speicherblöcke des L2-Cache-Speichers17A in Reaktion auf die Benachrichtigung aus der L2-Cache-Überwachungseinheit18A zu aktivieren oder zu deaktivieren. Des Weiteren können die in den Speichern42A gespeicherten Werte festlegen, ob die Leistungszufuhr für einen gegebenen Block ausgeschaltet wird oder die Spannung abgesenkt wird. In gewissen Fällen, etwa wenn ein Prozessorkern eine Kontextumschaltung ausführt, kann beispielsweise der L2-Cache-Speicher nicht für den neuen Ablaufpfad oder Kontext verwendet werden. Es kann jedoch im Hinblick auf die in dem L2-Cache-Speicher17A gespeicherten Daten wünschenswert sein, dass diese verfügbar sind, wenn wieder auf diesen Kontext bzw. Ablaufpfad zurückgeschaltet wird. In derartigen Fällen kann das einfache Absenken der Spannung für einen oder mehrere Blöcke es ermöglichen, die darin gespeicherten Daten zu bewahren, wobei jedoch ein weiterer Zugriff verhindert ist oder deaktiviert ist, bis die Blöcke wieder aktiviert sind und die Spannung auf den normalen Wert zurückgeführt ist. - Die Konfigurationseinheit
50 kann ferner ausgebildet sein, dass sie es möglich macht, dass der Prozessorkern15A den L2-Cache-Speicher17B des Prozessorkerns15B mitbenutzt und umgekehrt, abhängig von den darin gespeicherten Konfigurationswerten. Zum Beispiel kann in Reaktion darauf, dass die Cache-Überwachungseinheit40A bestimmt, dass die aktuelle Auslastung des L2-Cache-Speichers17A über einem oberen Schwellwert liegt, die Konfigurationseinheit19A Zugriff auf den L2-Cache-Speicher17B anfordern. In derartigen Fällen kann die Konfigurationseinheit42B den gemeinsamen Zugriff zulassen, wenn der L2-Cache-Speicher17B Blöcke aufweist, die deaktiviert und damit gemeinsam nutzbar sind. - In einer Ausführungsform können die Speichereinrichtungen
42A ,42B und51 der Konfigurationseinheiten19A ,19B und50 voreingestellte Präferenzwerte enthalten. Alternativ können die Präferenzwerte in die Speichereinrichtungen eingegeben werden. Diese Präferenzwerte können verwendet werden, um zu bestimmen, welche Aktion in Reaktion auf das Empfangen einer Benachrichtigung von der entsprechenden Cache-Überwachungseinheit auszuführen ist. Wie beispielsweise zuvor beschrieben ist, können die Konfigurationseinheiten diese Werte benutzen, um zu bestimmen, ob die Bereiche des L2-Cache-Speichers in dem entsprechenden Prozessorkern und der L3-Cache-Speicher durch Ausschalten der Leistungsversorgung oder durch Absenken der Spannung zu deaktivieren sind. Ferner können in einer Ausführungsform die Konfigurationseinheiten die Werte verwenden, um zu bestimmen, welche, wenn überhaupt, Bereiche der L2- oder L3-Cache-Speicher beim Hochfahren deaktiviert werden sollten. - In einer Ausführungsform können die Speichereinrichtungen
42A ,42B und51 unter Anwendung von Software programmiert werden. Zum Beispiel können spezielle Befehle verwendet werden, um auf die Speicher42A ,42B und51 zuzugreifen. In einer weiteren Ausführungsform können die Speicher42A ,42B und51 in einer permanenteren Weise unter Anwendung von verdrahteten Sicherungen programmiert werden, wie dies zuvor beschrieben ist. In einer derartigen Ausführungsform werden die Werte aus durchtrennten Sicherungen ausgelesen und in den Speichern abgelegt. In einer Ausführungsform können die verdrahteten Sicherungen durch die externe Programmierung überschrieben werden. In einer derartigen Ausführungsform können Speicher42A ,42B und51 mittels Konfigurationsanschlüssen44A ,44B und54 über einen externen Anschluss, etwa einen gemeinsamen Testaktionsgruppen-(JTAG)Anschluss, beispielsweise programmiert werden. Das Überschreiben der verdrahteten Sicherungen auf diese Weise wird manchmal als eine Programmierung mittels Software-Sicherungen bezeichnet. - In einer Ausführungsform können die Cache-Überwachungseinheiten
18A ,18B und85 die aktuelle Auslastung unter Anwendung von Parametern bestimmen, etwa wie viele Einträge ein entsprechender Cache-Speicher verwendet und wie häufig auf den entsprechenden Cache-Speicher zugegriffen wird. In einer Ausführungsform wird die Anzahl der Einträge in einem gerade verwendeten gegebenen Cache-Speicher ohne Verwendung von Sondierungsanfragen unter Anwendung eines Zählers bestimmt (der nicht explizit als Teil von40A ,40B und86 gezeigt ist), um Schreiboperationen in dem Cache-Speicher zu zählen und indem überwacht wird, ob ein Schreibbefehl ein Opfer bzw. Ziel erzeugt oder nicht. Wenn ein Ziel nicht erzeugt wird, dann muss der Schreibbefehl zu einer Zuweisung eines neuen Eintrags geführt haben. Ansonsten bleibt die Anzahl der Einträge gleich. Wenn daher ein Ziel erzeugt wird, wird der Schreibbefehl nicht gezählt. Des Weiteren kann in einer Ausführungsform die Häufigkeit, mit der auf einen Cache-Speicher zugegriffen wird, beispielsweise unter Anwendung eines Sättigungszählers (der nicht explizit als Teil der Schaltung40A gezeigt ist) bestimmt werden. In einer Ausführungsform wird der Sättigungszähler jedes Mal erhöht, wenn auf den Cache-Speicher zugegriffen wird. Der Zähler kann bei einem gewissen Taktintervall verringert werden, aber nicht auf Null gesetzt werden. Wenn der Zählerwert über einem vorbestimmten Wert bleibt, kann angenommen werden, dass die Zugriffshäufigkeit für den Cache-Speicher hoch ist, wodurch eine hohe Auslastung angezeigt wird. Aus diesen zwei Parametern kann ein unterer vorbestimmter Auslastungswert und ein oberer vorbestimmter Auslastungswert berechnet werden. Zu beachten ist, dass in anderen Ausführungsformen andere Mechanismen eingesetzt werden können, um die Cache-Speicherauslastung nach Bedarf zu bestimmen. - Zu beachten ist, dass, obwohl das in
1 gezeigte Computersystem10 einen einzelnen Verarbeitungsknoten12 aufweist, in anderen Ausführungsformen eine andere Anzahl an Verarbeitungsknoten eingerichtet sein kann. In ähnlicher Weise kann ein Verarbeitungsknoten, etwa der Knoten12 , eine beliebige Anzahl an Prozessorkernen in diversen anderen Ausführungsformen aufweisen. In weiteren Ausführungsformen des Computersystems10 können eine unterschiedliche Anzahl an HT-Schnittstellen pro Knoten12 und unterschiedliche Anzahlen an Peripheriegeräten16 , die mit dem Knoten verbunden sind, und dergleichen, enthalten sein. -
2 ist eine Blockansicht einer weiteren Ausführungsform eines Computersystems20 . Komponenten, die in1 gezeigt sind, sind der Klarheit und der Einfachheit halber mit gleichen Bezugszahlen belegt. Ähnlich zu dem Computersystem10 aus1 umfasst das Computersystem20 aus2 einen Verarbeitungsknoten22 , der mit einem Speicher14 und Peripheriegeräten13A –13B verbunden ist. Der Verarbeitungsknoten22 enthält ähnliche Funktionen wie der Knoten12 aus1 . Folglich werden nur die unterschiedlichen Funktionen beschrieben, während die Funktionen, die gleich sind zu dem Knoten12 , der Kürze halber weggelassen werden. Zu beachten ist, dass der Verarbeitungsknoten22 aus -
2 diverse andere Schaltungen enthalten kann, die der Einfachheit halber nicht gezeigt sind. - In der in
2 dargestellten Ausführungsform enthält ähnlich wie der Verarbeitungsknoten12 auch der Verarbeitungsknoten22 Prozessorkerne15A –15B , die mit einer Knotensteuerung20 verbunden sind, die wiederum mit einer Speichersteuerung22 und mehreren HyperTransportTM(HT)-Schnittstellenschaltungen24A –24C verbunden ist. Des Weiteren sind die Prozessorkerne15A –15B auch mit einem gemeinsamen Cache-Speicher der Ebene Drei (L3)60 verbunden. Jedoch ist der L3-Cache-Speicher60 mit einer Cache-Überwachungseinheit95 und einer Konfigurationseinheit65 verbunden. In einer Ausführungsform ist der Knoten22 ein einzelner integrierter Schaltungs-Chip, der die in2 gezeigte Schaltung enthält. Das heißt, der Knoten22 ist ein Chip-Multiprozessor (CMP). - In der dargestellten Ausführungsform ist im Gegensatz zu der Ausführungsform aus
1 jeder der L2-Cache-Speicher17A –17B auch mit der Cache-Überwachungseinheit95 und der Konfigurationseinheit65 verbunden. In einer Ausführungsform ist die Cache-Überwachungseinheit95 ausgebildet, die Auslastung aller Cache-Speicher, die mit ihr verbunden sind (beispielsweise L2-Cache-Speicher17A –17B und L3-Cache-Speicher60 ) zu überwachen, wobei eine Funktion eingesetzt wird, wie dies zuvor in Bezug mit der1 beschrieben ist. - In einer Ausführungsform enthält, ähnlich wie dies zuvor beschrieben ist, die Konfigurationseinheit
65 einen oder mehrere Speicher, die als61 bezeichnet sind, etwa programmierbare Register, die Werte enthalten, die den diversen bevorzugten Konfigurationen und Zuständen der L2-Cache-Speicher17A –17B und des L3-Cache-Speichers60 entsprechen. Abgesehen von den in den Speichern61 abgelegten Werten kann die Konfigurationseinheit65 programmiert sein, um einen oder mehrere der unabhängig steuerbaren Speicherblöcke der L2-Cache-Speicher17A –17B und des L3-Cache-Speichers60 in Reaktion auf die Benachrichtigung von der Cache-Überwachungseinheit95 zu aktivieren oder zu deaktivieren. In ähnlicher Weise können die in den Speichern61 abgelegten Werte bestimmen, ob die Leistungszufuhr für einen gegebenen Block abgeschaltet oder dessen Spannung abgesendet werden soll. Zu beachten ist, dass der Speicher61 in ähnlicher Weise wie die Speicher42A ,42B und51 , die zuvor beschrieben sind, programmiert werden kann. - Des Weiteren kann die Konfigurationseinheit
60 so ausgebildet sein, dass es dem Prozessorkern15A ermöglicht wird, den L2-Cache-Speicher17B des Prozessorkerns15B , abhängig von den darin gespeicherten Konfigurationswerten, zu benutzen und umgekehrt. - Beispielsweise kann in Reaktion darauf, dass die Cache-Überwachungseinheit
95 bestimmt, dass die aktuelle Auslastung des L2-Cache-Speichers17A über einem oberen Schwellwert liegt, die Konfigurationseinheit65 Zugriff auf den L2-Cache-Speicher17B durch den Prozessorkern15A ermöglichen. In derartigen Fällen kann die Konfigurationseinheit65 den gemeinsamen Zugriff erlauben, wenn der L2-Cache-Speicher17B Blöcke besitzt die deaktiviert und damit gemeinsam nutzbar sind. -
3 zeigt ein Flussdiagramm, in welchem die Funktionsweise einer Ausführungsform des Verarbeitungsknotens12 beschrieben ist. Es sei nun gemeinsam auf1 und3 verwiesen; in einer Ausführungsform werden, wenn der Knoten12 zunächst eingeschaltet wird oder aus dem Reset-Zustand anläuft, die in der Konfigurationseinheit42A gespeicherten Konfigurationswerte ausgelesen und verwendet, um den L2-Cache-Speicher17A zu konfigurieren. In ähnlicher Weise können die in der Konfigurationseinheit42B gespeicherten Konfigurationswerte ausgelesen und verwendet werden, um den L2-Cache-Speicher17B zu konfigurieren, und die in der Konfigurationseinheit50 gespeicherten Konfigurationswerte können ausgelesen und verwendet werden, um den L3-Cache-Speicher60 zu konfigurieren. Bei einem Betrieb des Knotens12 sind die Cache-Überwachungseinheiten18A ,18B und85 ausgebildet, die aktuelle Auslastung jedes jeweiligen Cache-Speichers zu überwachen (Block300 ). Wie beispielsweise zuvor beschrieben ist, können die Cache-Überwachungseinheiten18A ,18b und85 die Cache-Zugriffshäufigkeit und die Verwendung von Cache-Einträgen verfolgen, um die aktuelle Auslastung ihrer entsprechenden Cache-Speicher zu bestimmen. - Im Block
305 bestimmt auf der Grundlage der aktuellen Auslastung die Cache-Überwachungseinheit85 , ob die entsprechende aktuelle Auslastung innerhalb vorbestimmter Grenzen liegt. In einer Ausführungsform vergleicht die Cache-Überwachungseinheit85 die aktuelle Auslastung des L3-Cache-Speichers60 mit einem oberen Schwellwert und einem unteren Schwellwert. - Wenn die aktuelle Auslastung innerhalb der vorbestimmten Schwellwerte liegt, setzt die Cache-Überwachungseinheit
85 die Überwachung der Auslastung des L3-Cache-Speichers60 so fort, wie dies zuvor in Block300 beschrieben ist. Wenn jedoch die aktuelle Auslastung nicht innerhalb der vorbestimmten Schwellwerte liegt und unterhalb des unteren Schwellwerts liegt (Block305 ), gibt die Überwachungseinheit85 eine Nachricht an die Konfigurationseinheit50 aus (Block310 ). Die Konfigurationseinheit50 kann selektiv einen oder mehrere Blöcke des L3-Cache-Speichers60 deaktivieren (Block315 ). In einer Ausfüh rungsform deaktiviert die Konfigurationseinheit50 Blöcke entsprechend den bevorzugten Konfigurationen, die in den Speichern51 abgelegt sind, und in Reaktion auf die Nachricht. Wie beispielsweise zuvor beschrieben ist, kann die Leistung für die ausgewählten Blöcke abgeschaltet werden oder es kann eine geringere Spannung angelegt werden. In einer Ausführungsform können die zuerst ausgewählten Blöcke jene Blöcke sein, die am weitesten von den Prozessorkernen15A –15B entfernt sind, da diese Blöcke die längsten Verzögerungswege repräsentieren. Sobald die ausgewählten Blöcke deaktiviert sind, setzt die Cache-Überwachungseinheit85 die Überwachung der Auslastung fort, wie dies zuvor in Block300 beschrieben ist. - Es sei nun wieder auf den Block
305 verwiesen; wenn die aktuelle Auslastung nicht innerhalb der vorbestimmten Schwellwerte liegt und über dem oberen Schwellwert ist, gibt die Cache-Überwachungseinheit85 eine Nachricht an die Konfigurationseinheit50 aus (Block320 ). Die Konfigurationseinheit50 kann selektiv einen oder mehrere deaktivierte Blöcke des L3-Cache-Speichers60 aktivieren (Block315 ), wenn deaktivierte Blöcke vorhanden sind. In einer Ausführungsform aktiviert die Konfigurationseinheit50 Blöcke entsprechend bevorzugten Konfigurationen, die in den Speichern51 abgelegt sind. Sobald die ausgewählten Blöcke erneut aktiviert sind, setzt die Cache-Überwachungseinheit85 die Überwachung der Auslastung fort, wie dies zuvor in Block300 beschrieben ist. - Im Block
330 bestimmen die Cache-Überwachungseinheiten18A und18B auf der Grundlage der aktuellen Auslastung, ob die entsprechende aktuelle Auslastung innerhalb der vorbestimmten Grenzen liegt. Insbesondere können in einer Ausführungsform die Cache-Überwachungseinheiten18A –18B die aktuelle Auslastung der L2-Cache-Speicher17A –17B mit einem oberen Schwellwert und einem untere Schwellwert vergleichen. - Wenn die aktuelle Auslastung innerhalb der vorbestimmten Schwellwerte liegt, setzen die Cache-Überwachungseinheiten
18A –18B , die Überwachung der Auslastung der L2-Cache-Speicher17A –17B fort, wie dies in Block300 zuvor beschrieben ist. Wenn jedoch die aktuelle Auslastung eines Cache-Speichers nicht innerhalb der vorbestimmten Schwellwerte liegt und unter dem unteren Schwellwert liegt (Block330 ), liefert die entsprechende Cache-Überwachungseinheit18A –18B eine entsprechende Nachricht an die Konfigurationseinheit19A –19B (Block335 ). Die Konfigurationseinheiten19A –19B deaktivieren selektiv einen oder mehrere Blöcke der entsprechenden L2-Cache-Speicher17A –17B (Block340 ). In einer Ausführungsform deaktivieren die Konfigurationseinheiten19A –19B Blöcke entsprechend den bevorzugten Konfigurationen, die in den Speichern42A –42B abgelegt sind, und in Re aktion auf die gelieferte Nachricht. Wie beispielsweise zuvor beschrieben ist, kann die Leistung für die ausgewählten Blöcke abgeschaltet oder es kann eine reduzierte Spannung zugeführt werden. Ferner können in einer Ausführungsform die zuerst ausgewählten Blöcke jene Blöcke sein, die am weitesten von der CPU-Logik der Prozessorkerne15A –15B entfernt sind, da diese Blöcke die längsten Verzögerungsstrecken repräsentieren. Sobald die ausgewählten Blöcke deaktiviert sind, setzen die Cache-Überwachungseinheiten18A –18B die Überwachung der Auslastung in der in Block300 beschriebenen Weise fort. - Es sei wieder auf den Block
330 verwiesen; wenn die aktuelle Auslastung nicht innerhalb der vorbestimmten Schwellwerte ist und über dem oberen Schwellwert liegt, liefern die Cache-Überwachungseinheiten18A –18B eine Nachricht für die Konfigurationseinheiten19A –19B (Block345 ). Wenn einer der L2-Blöcke in dem betroffenen L2-Cache-Speicher deaktiviert ist (Block350 ), kann die Konfigurationseinheit19A –19B selektiv einen oder mehrere Blöcke der L2-Cache-Speicher17A –17B aktivieren (Block355 ). In einer Ausführungsform deaktivieren die Konfigurationseinheiten19A –19B Blöcke entsprechend den bevorzugten Konfigurationen, die in den Speichern42A –42B abgelegt sind, und in Reaktion auf die gelieferte Nachricht. Wie beispielsweise zuvor beschrieben ist, kann die Leistung für die ausgewählten Blöcke abgeschaltet werden oder es kann diesen eine geringere Versorgungsspannung zugeführt werden. Ferner sind in einer Ausführungsform die zuerst ausgewählten Blöcke jene Blöcke, die am weitesten von den Prozessorkörnern15A –15B entfernt sind, da diese Blöcke die längsten Verzögerungsstrecken repräsentieren. Sobald die ausgewählten Blöcke deaktiviert sind, setzen die Cache-Überwachungseinheiten18A –18B die Überwachung der Auslastung fort, wie dies zuvor in Block300 beschrieben ist. - Wenn jedoch keine deaktivierten Blöcke in dem betroffenen L2-Cache-Speicher vorhanden sind (Block
350 ), fordert die Konfigurationseinheit des betroffenen L2-Cache-Speichers (d. h. des L2-Cache-Speichers, der stark ausgelastet ist) von der Konfigurationseinheit des anderen Prozessorkerns eine Zugriffserlaubnis an, um den L2-Cache-Speicher des anderen Kerns zu benutzen. Wenn z. B. die Cache-Überwachungseinheit18B erkennt, dass die aktuelle Auslastung des L2-Cache-Speichers17B über dem oberen Schwellwert liegt, kann die Konfigurationseinheit19B Zugriff von der Konfigurationseinheit19A für den L2-Cache-Speicher17A anfordern. In Reaktion auf die Anforderung bestimmt die Konfigurationseinheit19A , ob der L2-Cache-Speicher17A deaktivierte Blöcke für eine gemeinsame Benutzung aufweist (Block360 ). Wenn dies der Fall ist, gewährt die Konfigurationseinheit19A Zugriff für den Prozessorkern15B , um die deaktivierten Blöcke des L2-Cache-Speichers17A gemeinsam zu nutzen (Block365 ). Die deaktivierten Blöcke können dann reaktiviert werden. Der Ablauf geht dann weiter, wie dies zuvor in Block300 beschrieben ist.
Claims (2)
- Verfahren zum dynamischen Konfigurieren eines Cache-Speichers in einem Verarbeitungsknoten (
12 ,22 ) mit mehreren Prozessorkernen (15A ,15B ), wobei jeder Prozessorkern einen Cache-Speicher enthält, und wobei das Verfahren umfasst: unabhängiges Überwachen einer entsprechenden aktuellen Auslastung jedes der Cache-Speicher; Bestimmen, ob die entsprechende aktuelle Auslastung unterhalb eines vorbestimmten Auslastungswerts liegt; und in Reaktion darauf, dass bestimmt wird, dass die aktuelle Auslastung unter dem vorbestimmten Auslastungswert liegt, selektives Deaktivieren eines oder mehrerer Bereiche des entsprechenden Cache-Speichers; Bestimmen, ob die entsprechende aktuelle Auslastung oberhalb eines vorbestimmten Auslastungswerts liegt; und in Reaktion darauf, dass bestimmt wird, dass die aktuelle Auslastung über dem vorbestimmten Auslastungswert liegt, Erlauben eines gemeinsamen Zugriffs auf einen oder mehrere Bereiche des entsprechenden Cache-Speichers eines anderen der Prozessorkerne (15A ,15B ), die in Reaktion darauf, dass für diesen Cache-Speicher des anderen der Prozessorkerne (15A ,15B ) bestimmt wird, dass die aktuelle Auslastung unter dem vorbestimmten Auslastungswert liegt, deaktiviert worden sind. - Verfahren nach Anspruch 1, das ferner das Speichern des vorbestimmten Auslastungswerts in einem konfigurierbaren Speicher (
442 ) umfasst.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/956,560 | 2004-10-01 | ||
US10/956,560 US7257678B2 (en) | 2004-10-01 | 2004-10-01 | Dynamic reconfiguration of cache memory |
PCT/US2005/033671 WO2006039153A1 (en) | 2004-10-01 | 2005-09-21 | Dynamic reconfiguration of cache memory |
Publications (2)
Publication Number | Publication Date |
---|---|
DE112005002672T5 DE112005002672T5 (de) | 2007-11-29 |
DE112005002672B4 true DE112005002672B4 (de) | 2010-12-02 |
Family
ID=35519765
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE112005002672T Active DE112005002672B4 (de) | 2004-10-01 | 2005-09-21 | Dynamische Neukonfiguration eines Cache-Speichers |
Country Status (8)
Country | Link |
---|---|
US (1) | US7257678B2 (de) |
JP (1) | JP4456154B2 (de) |
KR (1) | KR101136141B1 (de) |
CN (1) | CN101048763B (de) |
DE (1) | DE112005002672B4 (de) |
GB (1) | GB2432695B (de) |
TW (1) | TWI403899B (de) |
WO (1) | WO2006039153A1 (de) |
Families Citing this family (39)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2006106890A1 (en) * | 2005-03-31 | 2006-10-12 | Semiconductor Energy Laboratory Co., Ltd. | Arithmetic processing device and electronic appliance using arithmetic processing device |
US20080201528A1 (en) * | 2005-04-06 | 2008-08-21 | Mediatek Inc. | Memory access systems for configuring ways as cache or directly addressable memory |
US7467280B2 (en) * | 2006-07-05 | 2008-12-16 | International Business Machines Corporation | Method for reconfiguring cache memory based on at least analysis of heat generated during runtime, at least by associating an access bit with a cache line and associating a granularity bit with a cache line in level-2 cache |
US7809926B2 (en) * | 2006-11-03 | 2010-10-05 | Cornell Research Foundation, Inc. | Systems and methods for reconfiguring on-chip multiprocessors |
CN101689106B (zh) * | 2007-06-12 | 2013-10-09 | 松下电器产业株式会社 | 多处理器控制装置、多处理器控制方法以及多处理器控制电路 |
US20090006036A1 (en) * | 2007-06-27 | 2009-01-01 | International Business Machines Corporation | Shared, Low Cost and Featureable Performance Monitor Unit |
US7680978B1 (en) * | 2007-09-05 | 2010-03-16 | Juniper Networks, Inc. | Reducing content addressable memory (CAM) power consumption counters |
US9513695B2 (en) * | 2008-06-24 | 2016-12-06 | Virident Systems, Inc. | Methods of managing power in network computer systems |
US8327126B2 (en) | 2008-08-25 | 2012-12-04 | International Business Machines Corporation | Multicore processor and method of use that adapts core functions based on workload execution |
US8271728B2 (en) * | 2008-11-13 | 2012-09-18 | International Business Machines Corporation | Spiral cache power management, adaptive sizing and interface operations |
US8195887B2 (en) * | 2009-01-21 | 2012-06-05 | Globalfoundries Inc. | Processor power management and method |
US8103894B2 (en) * | 2009-04-24 | 2012-01-24 | International Business Machines Corporation | Power conservation in vertically-striped NUCA caches |
CN102792289B (zh) * | 2010-03-08 | 2015-11-25 | 惠普发展公司,有限责任合伙企业 | 数据存储装置 |
US8438410B2 (en) | 2010-06-23 | 2013-05-07 | Intel Corporation | Memory power management via dynamic memory operation states |
US20120096295A1 (en) * | 2010-10-18 | 2012-04-19 | Robert Krick | Method and apparatus for dynamic power control of cache memory |
US8516205B2 (en) * | 2010-10-29 | 2013-08-20 | Nokia Corporation | Method and apparatus for providing efficient context classification |
US8711633B2 (en) | 2011-05-12 | 2014-04-29 | Micron Technology, Inc. | Dynamic data caches, decoders and decoding methods |
JP5820335B2 (ja) | 2011-05-20 | 2015-11-24 | 株式会社半導体エネルギー研究所 | 半導体装置 |
JP5820336B2 (ja) | 2011-05-20 | 2015-11-24 | 株式会社半導体エネルギー研究所 | 半導体装置 |
JP6012263B2 (ja) | 2011-06-09 | 2016-10-25 | 株式会社半導体エネルギー研究所 | 半導体記憶装置 |
WO2012169142A1 (en) | 2011-06-09 | 2012-12-13 | Semiconductor Energy Laboratory Co., Ltd. | Cache memory and method for driving the same |
US8595464B2 (en) * | 2011-07-14 | 2013-11-26 | Oracle International Corporation | Dynamic sizing of translation lookaside buffer for power reduction |
US8868843B2 (en) | 2011-11-30 | 2014-10-21 | Advanced Micro Devices, Inc. | Hardware filter for tracking block presence in large caches |
US20130138884A1 (en) * | 2011-11-30 | 2013-05-30 | Hitachi, Ltd. | Load distribution system |
CN103246542B (zh) * | 2012-02-01 | 2017-11-14 | 中兴通讯股份有限公司 | 智能缓存及智能终端 |
US9135182B2 (en) | 2012-06-01 | 2015-09-15 | Semiconductor Energy Laboratory Co., Ltd. | Central processing unit and driving method thereof |
US20140136793A1 (en) * | 2012-11-13 | 2014-05-15 | Nvidia Corporation | System and method for reduced cache mode |
US9360924B2 (en) * | 2013-05-29 | 2016-06-07 | Intel Corporation | Reduced power mode of a cache unit |
US9568986B2 (en) | 2013-09-25 | 2017-02-14 | International Business Machines Corporation | System-wide power conservation using memory cache |
JP6474280B2 (ja) | 2014-03-05 | 2019-02-27 | 株式会社半導体エネルギー研究所 | 半導体装置 |
KR101820223B1 (ko) | 2014-12-14 | 2018-01-18 | 비아 얼라이언스 세미컨덕터 씨오., 엘티디. | 모드에 따라 선택적으로 하나 또는 복수의 셋트를 선택하도록 동적으로 구성가능한 멀티 모드 셋트 연관 캐시 메모리 |
WO2016097795A1 (en) | 2014-12-14 | 2016-06-23 | Via Alliance Semiconductor Co., Ltd. | Multi-mode set associative cache memory dynamically configurable to selectively allocate into all or subset or tis ways depending on mode |
JP6218971B2 (ja) | 2014-12-14 | 2017-10-25 | ヴィア アライアンス セミコンダクター カンパニー リミテッド | アドレス・タグ・ビットに基づく動的キャッシュ置換ウェイ選択 |
US10255190B2 (en) | 2015-12-17 | 2019-04-09 | Advanced Micro Devices, Inc. | Hybrid cache |
JP6405331B2 (ja) * | 2016-03-22 | 2018-10-17 | 日本電信電話株式会社 | キャッシュ管理システム、評価方法、管理サーバ、物理サーバ、および、測定サーバ |
JP6511023B2 (ja) * | 2016-08-22 | 2019-05-08 | 日本電信電話株式会社 | 仮想マシン管理装置およびデプロイ可否判断方法 |
US11163688B2 (en) * | 2019-09-24 | 2021-11-02 | Advanced Micro Devices, Inc. | System probe aware last level cache insertion bypassing |
US11264998B1 (en) | 2020-09-24 | 2022-03-01 | Advanced Micro Devices, Inc. | Reference free and temperature independent voltage-to-digital converter |
US11899520B2 (en) * | 2022-04-26 | 2024-02-13 | Advanced Micro Devices, Inc. | Dynamic cache bypass for power savings |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5761715A (en) * | 1995-08-09 | 1998-06-02 | Kabushiki Kaisha Toshiba | Information processing device and cache memory with adjustable number of ways to reduce power consumption based on cache miss ratio |
US20030135768A1 (en) * | 2002-01-16 | 2003-07-17 | Derek Knee | Method and apparatus for conserving power on a multiprocessor integrated circuit |
GB2388217A (en) * | 2002-01-31 | 2003-11-05 | Hewlett Packard Co | Dynamically adjusted cache power supply to optimize for access or power consumption |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5381539A (en) * | 1992-06-04 | 1995-01-10 | Emc Corporation | System and method for dynamically controlling cache management |
US5632038A (en) * | 1994-02-22 | 1997-05-20 | Dell Usa, L.P. | Secondary cache system for portable computer |
US5860106A (en) * | 1995-07-13 | 1999-01-12 | Intel Corporation | Method and apparatus for dynamically adjusting power/performance characteristics of a memory subsystem |
US5752045A (en) * | 1995-07-14 | 1998-05-12 | United Microelectronics Corporation | Power conservation in synchronous SRAM cache memory blocks of a computer system |
US5881311A (en) * | 1996-06-05 | 1999-03-09 | Fastor Technologies, Inc. | Data storage subsystem with block based data management |
DE69826539D1 (de) * | 1997-01-30 | 2004-11-04 | Sgs Thomson Microelectronics | Cachespeichersystem |
US6411156B1 (en) * | 1997-06-20 | 2002-06-25 | Intel Corporation | Employing transistor body bias in controlling chip parameters |
JP4017248B2 (ja) * | 1998-04-10 | 2007-12-05 | 株式会社日立製作所 | 半導体装置 |
US6281724B1 (en) * | 1998-11-17 | 2001-08-28 | Analog Devices, Inc. | Circuit for partial power-down on dual voltage supply integrated circuits |
US6349363B2 (en) * | 1998-12-08 | 2002-02-19 | Intel Corporation | Multi-section cache with different attributes for each section |
JP2001052476A (ja) * | 1999-08-05 | 2001-02-23 | Mitsubishi Electric Corp | 半導体装置 |
DE60143194D1 (de) * | 2000-04-12 | 2010-11-18 | Dsp Group Switzerland Ag | Datenverarbeitungsschaltung mit cachespeicher und vorrichtung mit solcher schaltung |
US7089391B2 (en) * | 2000-04-14 | 2006-08-08 | Quickshift, Inc. | Managing a codec engine for memory compression/decompression operations using a data movement engine |
EP1182559B1 (de) * | 2000-08-21 | 2009-01-21 | Texas Instruments Incorporated | Mikroprozessor |
EP1182567B1 (de) | 2000-08-21 | 2012-03-07 | Texas Instruments France | Softwaregesteuerte Cache-Speicherkonfiguration |
US6795896B1 (en) * | 2000-09-29 | 2004-09-21 | Intel Corporation | Methods and apparatuses for reducing leakage power consumption in a processor |
US6983388B2 (en) * | 2000-10-25 | 2006-01-03 | Agere Systems Inc. | Method and apparatus for reducing leakage power in a cache memory by using a timer control signal that removes power to associated cache lines |
US6944714B2 (en) * | 2002-07-30 | 2005-09-13 | Hewlett-Packard Development Company, L.P. | Method and apparatus for saving microprocessor power when sequentially accessing the microprocessor's instruction cache |
SG111087A1 (en) * | 2002-10-03 | 2005-05-30 | St Microelectronics Asia | Cache memory system |
US20040199723A1 (en) * | 2003-04-03 | 2004-10-07 | Shelor Charles F. | Low-power cache and method for operating same |
US7093081B2 (en) * | 2004-01-14 | 2006-08-15 | International Business Machines Corporation | Method and apparatus for identifying false cache line sharing |
-
2004
- 2004-10-01 US US10/956,560 patent/US7257678B2/en active Active
-
2005
- 2005-09-21 WO PCT/US2005/033671 patent/WO2006039153A1/en active Application Filing
- 2005-09-21 DE DE112005002672T patent/DE112005002672B4/de active Active
- 2005-09-21 GB GB0705275A patent/GB2432695B/en not_active Expired - Fee Related
- 2005-09-21 KR KR1020077007488A patent/KR101136141B1/ko active IP Right Grant
- 2005-09-21 CN CN2005800330956A patent/CN101048763B/zh active Active
- 2005-09-21 JP JP2007534653A patent/JP4456154B2/ja not_active Expired - Fee Related
- 2005-09-26 TW TW094133304A patent/TWI403899B/zh active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5761715A (en) * | 1995-08-09 | 1998-06-02 | Kabushiki Kaisha Toshiba | Information processing device and cache memory with adjustable number of ways to reduce power consumption based on cache miss ratio |
US20030135768A1 (en) * | 2002-01-16 | 2003-07-17 | Derek Knee | Method and apparatus for conserving power on a multiprocessor integrated circuit |
GB2388217A (en) * | 2002-01-31 | 2003-11-05 | Hewlett Packard Co | Dynamically adjusted cache power supply to optimize for access or power consumption |
Also Published As
Publication number | Publication date |
---|---|
JP2008515095A (ja) | 2008-05-08 |
US7257678B2 (en) | 2007-08-14 |
CN101048763B (zh) | 2012-05-23 |
CN101048763A (zh) | 2007-10-03 |
KR101136141B1 (ko) | 2012-04-17 |
KR20070054715A (ko) | 2007-05-29 |
GB2432695B (en) | 2008-07-09 |
TW200627148A (en) | 2006-08-01 |
US20060075192A1 (en) | 2006-04-06 |
WO2006039153A1 (en) | 2006-04-13 |
GB0705275D0 (en) | 2007-04-25 |
JP4456154B2 (ja) | 2010-04-28 |
DE112005002672T5 (de) | 2007-11-29 |
GB2432695A (en) | 2007-05-30 |
TWI403899B (zh) | 2013-08-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE112005002672B4 (de) | Dynamische Neukonfiguration eines Cache-Speichers | |
DE112011103193B4 (de) | Bereitstellung einer Pro-Kern-Spannungs-und Frequenzsteuerung | |
DE112008001679T5 (de) | Cache-Speicher mit konfigurierbarer Assoziativität | |
DE112006002056T5 (de) | Erhöhung der Arbeitsleistung eines oder mehrerer Kerne in Multikernprozessoren | |
DE112004001320B3 (de) | Verfahren, System und Vorrichtung zur Verbesserung der Leistung von Mehrkernprozessoren | |
DE102007006190B4 (de) | Techniken zur Verwendung von Speicher-Attributen | |
DE69826353T2 (de) | Integrierte Schaltung mit Bereitschaftmodussteuerschaltung für Speicher | |
DE102010045743B4 (de) | Verfahren und Vorrichtung, um Turboleistung für das Event-Handling zu verbessern | |
DE112007001215B4 (de) | Vorhersage der Leistungsnutzung von Rechenplattformspeicher | |
DE102005063122B4 (de) | System und Verfahren zum Power Management von mehreren Informationsverarbeitungssystemen unter Berücksichtigung von systeminternen und systemexternen Steuerungsgrößen | |
DE112008001895B4 (de) | Technik zum Bewahren zwischengespeicherter Information während eines Modus niedriger Leistung | |
DE69432514T2 (de) | Leistungssteuerung in einem Computersystem | |
DE112006002154T5 (de) | Dynamische Speichergrösseneinteilung zur Leistungsreduktion | |
DE112010005821T5 (de) | Kontextwechsel | |
DE112012005727T5 (de) | Kombinierte "Cache einfügen und sperren"-Operation | |
DE112011104489T5 (de) | Verfahren und Einrichtung zum Konfigurieren von Thermal Design Power in einem Mikroprozessor | |
DE112007001714T5 (de) | Virtualisieren von Leistungszählern | |
DE10297166T5 (de) | Mechanismus zur Interrupt-Abwicklung in Computersystemen, welche die gleichzeitige Ausführung mehrerer Threads unterstützen | |
DE112009004900T5 (de) | Vertagen von Speicheroperationen zum Reduzieren von Leselatenz in Speicherfeldern | |
DE112008001223T5 (de) | Datenverarbeitung mit einem Cache-Zugriffsmodus mit geringer Leistung | |
DE102008058209A1 (de) | Anordnung und Verfahren um zu verhindern, dass ein Anwenderbetriebssystem in einem VMM System eine Anordnung abschaltet, die von einem Servicebetriebssystem verwendet wird | |
DE112006000545T5 (de) | System und Verfahren zum kohärenten Datentransfer während Leerlaufzuständen von Prozessoren | |
DE112013000654T5 (de) | Verzweigungsvorhersagelogik | |
DE112006002908T5 (de) | Technik für die Kommunikation und Synchronisation von Threads | |
DE102007018033A1 (de) | Kohärenzverzeichnisaktualisierung |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OP8 | Request for examination as to paragraph 44 patent law | ||
8327 | Change in the person/name/address of the patent owner |
Owner name: GLOBALFOUNDRIES INC., GRAND CAYMAN, KY |
|
8328 | Change in the person/name/address of the agent |
Representative=s name: GRUENECKER, KINKELDEY, STOCKMAIR & SCHWANHAEUSSER, |
|
8364 | No opposition during term of opposition | ||
R020 | Patent grant now final |
Effective date: 20110302 |
|
R081 | Change of applicant/patentee |
Owner name: GLOBALFOUNDRIES U.S. INC., SANTA CLARA, US Free format text: FORMER OWNER: GLOBALFOUNDRIES INC., GRAND CAYMAN, KY Owner name: MEDIATEK INC., TW Free format text: FORMER OWNER: GLOBALFOUNDRIES INC., GRAND CAYMAN, KY |
|
R082 | Change of representative |
Representative=s name: GRUENECKER PATENT- UND RECHTSANWAELTE PARTG MB, DE Representative=s name: HOEFER & PARTNER PATENTANWAELTE MBB, DE |
|
R081 | Change of applicant/patentee |
Owner name: MEDIATEK INC., TW Free format text: FORMER OWNER: GLOBALFOUNDRIES U.S. INC., SANTA CLARA, CA, US |
|
R082 | Change of representative |
Representative=s name: HOEFER & PARTNER PATENTANWAELTE MBB, DE |