-
TECHNISCHES GEBIET
-
Die vorliegende Offenbarung bezieht sich im Allgemeinen auf das Gebiet von Speichern und Speichercontrollern, und spezifischer auf das Gebiet von dynamischem Power-Gating und dynamischer Frequenzänderung eines Speichercontrollers.
-
HINTERGRUND
-
Computersysteme werden andauernd weiterentwickelt, mit immer schnelleren Verarbeitungsgeschwindigkeiten, immer größeren Datenbehandlungsfähigkeiten und immer steigender Speicherkapazität. Computer werden ebenfalls immer kleiner. Diese Verringerung der Größe ist besonders auf dem Markt für Laptops, Notebooks, Tablets und Taschencomputer zu verzeichnen. Bei der Bestrebung, die Größe und das Gewicht von Laptops, Notebooks und Taschencomputern zu reduzieren, haben die Hersteller gleichzeitig die Größe und das Gewicht von eingebauten Akkus verringert. Da die Lebensdauer von Akkus in Laptops, Notebooks und Taschencomputern ein so wichtiger Aspekt ist, werden Energiemanagementverfahren angewendet, um die Lebensdauer von Akkus zu verlängern.
-
Herkömmliche Computersysteme können eine Vielzahl von energiesparenden Funktionen anwenden, um den Energieverbrauch des Systems zu verringern, wie z. B. Energiesparverfahren für graphische Benutzeroberflächen, Prozessoren und Speichercontroller, die z. B. Frequenzverringung, Takt-Gating, Power-Gating, DRAM-Zustände bei niedriger Leistung, I/O-Modi bei niedriger Leistung und Abschalten von Analog-Schaltkreisen, wie z. B. PLL (Phasenregelschleifen) und DLL (Verzögerungsregelschleifen) umfassen können. Koordiniertes Ein- und Ausschalten dieser Funktionen bei niedriger Leistung können es ermöglichen, dass Systemzustände bei niedriger Leistung verwendet werden, um Energie zu sparen.
-
Jedes Niveau von Power-Gating und Frequenzverringerung eines Systemkomponenten (z. B. Mikroprozessoren und Speichercontroller) ist jedoch zeitbeschränkt aufgrund von Verzögerungen im Eintreten in und Austreten aus einem Energiemodus. Das heißt, dass zwar große Energieersparnisse mittels Power-Gating und/oder Frequenzverringerungen erreicht werden können, solches Power-Gating und solche Frequenzverringerungen möglicherweise aber nicht erlaubt sind, wenn die Zeiten für Eintreten in und oder Austreten aus dem Power-Gating oder der Frequenzverrringerung die Zeitvorgaben übersteigen. Wenn Speichercontrollerzustände geändert werden, kann der Speichercontrollerzustand gespeichert und der Speichercontroller abgeschaltet werden, und später der Speichercontroller wieder eingeschaltet und dessen Zustand wiederhergestellt werden, und die sich daraus ergebende Latenz muss für jeden Aktor, der Speicherzugang anfordert, transparent sein. D. h. es ist möglich, dass die tiefsten Power-Gating- und Energiesparzustände nicht erreichbar sind, weil die sich daraus ergebende Zeitvorgabelatenz zu groß ist.
-
Aus
US 8,055,871 B1 ist ein System und ein Verfahren zum Konfigurieren eines synchronen Speichergeräts zum Schalten in und aus unterschiedlichen Geschwindigkeits-Betriebsmodi ohne die Frequenz eines Taktgeber-Eingangs in einem Taktgeber-Schaltkreis signifikant zu stören bekannt. Dies ermöglicht es, Betriebszustände mit niedriger Geschwindigkeit häufig und für kürzere Zeitspannen zu verwenden, um die Energie zu reduzieren, die von dem synchronen Speichergerät verbraucht wird. Um die Geschwindigkeit zu ändern, wird eine Abfolge von Anpassungen durchgeführt, um durch Vorbereiten von Schaltkreisen das Taktgebersignal zu ändern, wobei nach einer Zeit das Speichergerät den Betrieb bei einer geringeren Taktgebergeschwindigkeit aufnimmt. Obwohl Eintritts- und Austrittssequenzen für unterschiedliche Speichergerätehersteller variieren können, beinhaltet jede Sequenz Zeitverzögerungen, die auf einen PLL/DLL Einschwingvorgang bezogen sind, wenn der Eingangstakt des Speichergeräts die Frequenz ändert.
-
Aus
DE 10 2011 102 238 A1 sind unterschiedliche Speicher-Betriebskonditionen bekannt, die mit verschiedenen Speicherlatenzen bzw. Geschwindigkeiten assoziiert sind.
-
Aus
GB 2 481 492 A ist ein Leistungsparameter eines Speichers und das Überwachen des Leistungsparameters bekannt. Der Parameter wird mit einem oder mehreren Schwellenwerten verglichen und die Betriebsfrequenz des Speichersystems wird basierend auf den Ergebnissen des Vergleichs beeinflusst.
-
Deshalb besteht ein Bedarf für verbesserte Techniken der dynamischen Frequenzänderung eines Speichercontrollers. Insbesondere besteht ein Bedarf für solche Techniken, die eine besonders geringe Latenz in Bezug auf die dynamische Frequenzänderung des Speichercontrollers bereitstellen.
-
Diese Aufgabe wird von den Merkmalen des unabhängigen Patentanspruchs 1 gelöst. Die Merkmale der abhängigen Patentansprüche definieren Ausführungsformen.
-
Ausführungsformen der vorliegenden Erfindung bieten eine Lösung für die Herausforderungen, die der Verwaltung von Computersystem-Energiesparzuständen mit deren erforderlichen Eintritts- und Austrittslatenzen zugrunde liegen. In verschiedenen Beispielen wird ein Verfahren für effiziente Zustandsübergänge offenbart. Effiziente Zustandsübergänge können erreicht werden durch Gebrauch eines zentralisierten Sequenzermechanismus, dem die Echtzeit-Systemlatenztoleranzen bekannt sind, der mehrere in einem Chip verteilte Mechanismen steuern kann und der begleitet ist von örtlicher Speicherung von im Voraus berechneten und kalibrierten Energiezustands-”Kontexten”, die auf jeden auswählbaren Energiezustand Anwendung finden (Zustände mit niedriger Leistung und aktive Zustände).
-
KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
Die vorliegende Erfindung ist aufgrund der folgenden näheren Beschreibung in Zusammenhang mit den beiliegenden Zeichnungen, in denen die gleichen Bezugsziffern gleiche Elemente bezeichnen, besser zu verstehen.
-
1 stellt ein vereinfachtes Schaltbildbeispiel einer Energieversorgungsvorrichtung gemäß einer Ausführungsform der vorliegenden Erfindung dar;
-
2 stellt ein Anordnungsbeispiel von Kontexten für eine Vielzahl von Leistungszuständen und Frequenzkombinationen gemäß einer Ausführungsform der vorliegenden Erfindung dar;
-
3 stellt ein Zustandsdiagrammbeispiel zum Eintreten in und Austreten aus Leistungszuständen eines Speichercontrollers gemäß einer Ausführungsform der vorliegenden Erfindung dar;
-
4 stellt ein Zeitvorgabediagrammbeispiel dar, in dem Zeitvorgabeschwellen für gewisse Leistungszustandsübergänge gemäß einer Ausführungsform der vorliegenden Erfindung dargestellt sind;
-
5 stellt ein Ablaufdiagrammbeispiel dar, in dem Schritte zu einem Verfahren gemäß einer Ausführungsform der vorliegenden Erfindung dargestellt sind; und
-
6 stellt ein Ablaufdiagrammbeispiel dar, in dem Schritte zu einem Verfahren gemäß einer Ausführungsform der vorliegenden Erfindung dargestellt sind.
-
DETAILLIERTE BESCHREIBUNG
-
Ausführungsformen der vorliegenden Erfindung bieten eine Lösung für die steigenden Herausforderungen, die dem Gebrauch von Energiesparzuständen mit deren erforderlichen Eintritts- und Austrittslatenzen innewohnen. Verschiedene Ausführungsformen der vorliegenden Offenbarung können ein Verfahren zur effizienten Verwaltung eines Übergangs in und/oder aus einem aktiven Zustand und einem Zustand mit niedriger Leistung sowie für das Übergehen zwischen mehreren verschiedenen Frequenzen zur Verfügung stellen. Wie nachstehend ausführlich besprochen wird, können effiziente Zustandsübergänge durch Gebrauch eines zentralisierten Sequenzermechanismus, dem die Echtzeit-Systemlatenztoleranzen bekannt sind, der mehrere in einem Chip verteilte Mechanismen steuern kann und der begleitet ist von örtlicher Speicherung von im Voraus berechneten und kalibrierten Energiezustands-”Kontexten”, die auf jeden auswählbaren Energiezustand (Zustände mit niedriger Leistung und aktive Zustände) und jede Frequenzkombination Anwendung finden, erreicht werden.
-
Sequentialisieren von Übergängen des Speichercontrollers in einen Zustand niedriger Leistung und von Frequenzänderungen:
-
In einer Ausführungsform, die in Tabelle 1 dargestellt ist, können Speichercontroller(MC)-Zustände die folgenden Optionen abstrahieren, um während inaktiver Zeiten Energie zu sparen. Wie in Tabelle 1 dargestellt ist, kann ein als Beispiel angegebener MC0-Zustand ein aktiver Zustand sein, in dem ein Computersystem freien Zugriff auf Geräte mit dynamischem Arbeitsspeicher (DRAM) hat. Wie hierin besprochen wird, kann ein Speichercontroller je nach Leistungsanforderungen des Systems bei verschiedenen Frequenzen laufen. Betrieb bei geringerer Frequenz ist oft leistungseffizienter. Die hierin beschriebenen Mechanismen können schnelle und sichere Speicherfrequenzübergänge erleichtern.
-
Ein Speichercontroller kann auch während Zeiten von Inaktivität in einen Energiesparzustand versetzt werden. Der DRAM ist in nicht-MC0-Zuständen (z. B. einem aktiven Zustand) nicht verfügbar, so dass die Zeit, während der ein Speicher-Untersystem in einem nicht-MC0-Zustand verbleiben kann, beschränkt ist. Die Zeit, die dafür erforderlich ist, in den MC0-Zustand zurückzukehren, kann begrenzt sein und innerhalb einer Grenzfall-Latenztoleranz des Systems liegen. In einem Ausführungsbeispiel wird eine Tabelle ausgearbeitet, um die Grenzfall-Latenztoleranz für jeden Leistungszustand festzustellen, wobei die Leistungszustände, die die Latenzschwellen übersteigen, nicht ausgewählt werden. Die Optionen und Kombinationen von Optionen mit größeren Leistungseinsparungen gehen möglicherweise auf Kosten von längeren Austrittslatenzen. Die hierin beschriebenen Mechanismen minimieren die Latenz, die erforderlich ist, um in Zustände mit niedriger Leistung (z. B. MC1, MC2, MC3 und MC4) einzutreten, und aus diesen auszutreten, um in einen MC0-Zustand überzugehen. Durch Minimieren dieser Latenz maximiert dieses Schema die Möglichkeit des Speicher-Untersystems, sich in nicht-MC0-Zuständen zu befinden (z. B. kann eine längere Zeit in Leistungssparzuständen verbracht werden).
Speicher-Untersystem-Zustand | Beschreibung |
MC0 | MC aktiv |
MC1 | MC Takt-Gating und DRAM Selbst-Aktualisierung |
MC2 | MC Power-Gating und DRAM Selbst-Aktualisierung |
MC3 | MC Power-Gating; DRAM Selbst-Aktualisierung; und MC-PLL Abschalten |
MC4 | Speichercontroller-Power-Gating; DRAM Selbst-Aktualisierung, MC-PLL Abschalten; und MC-I/O Herunterfahren |
Tabelle 1
-
1 stellt ein als Beispiel angegebenes Computersystem 100 dar (z. B. ein System auf einem Chip (SOC)), das eine Systemenergiemanagementeinheit (SPMU) 102, mindestens einen Speichercontroller 112, einen Speichercontroller PLL 114, einen Speichercontroller-Eingang/Ausgang 116 und mindestens ein DRAM-Modul 118 umfasst. Wie in 1 dargestellt ist, umfasst eine Systemenergiemanagementeinheit 102 in einer Ausführungsform einen Mikrocontroller 104, eine mikrocodierte Funktionseinheit 106, einen On-Die-Speicher 108 (z. B. einen On-Die-SRAM) und eine Kontext-Speicherungs-/Umspeicherungs-Funktionseinheit 110. In einer Ausführungsform umfasst der SOC 100 eine Vielzahl von Speichercontrollern 112, eine Vielzahl von Speichercontroller-Eingängen/Ausgängen 116 und eine Vielzahl von DRAM-Modulen 118. Wie ferner in 1 dargestellt ist, kann das DRAM-Modul 118 in einer Ausführungsform extern vom Chip liegen und mit dem Speichercontroller-Eingang/Ausgang 116 mittels eines Schnittstellenbus 120 verschaltet sein. In einem Ausführungsbeispiel ist der Bus 120 ein Registerbus, der die Fähigkeit besitzt, Daten in Lese-/Schreibabläufen zu streamen.
-
In einem Ausführungsbeispiel können die mikrokodierte Funktionseinheit 106 und die Kontext-Speicherungs-/Umspeicherungs-Funktionseinheit 110 mittels direkten Speicherzugriffs (DMA) programmierbare Logik laufen lassen. In einer Ausführungsform werden die mikrokodierte Funktionseinheit 106 und die Kontext-Speicherungs-/Umspeicherungs-Funktionseinheit 110 bei einem Boot-Start mittels Firmware konfiguriert.
-
Um Power-Ungating-Latenz und Frequenzänderungslatenz zu verringern (wodurch die Ausblendzeit von DRAM-Modulen 118 verringert werden kann), kann ein Speicher-Schnittstellenbus 120 beim Boot auf verschiedene Frequenzwerte trainiert werden. Beispielsweise kann die Speicherschnittstelle 120 auf eine anfängliche als Beispiel angegebene Frequenz MF0 trainiert werden, und am Ende des Trainings kann der Kontext des Speichercontrollers 112 im On-Die-Speicher 108 gespeichert werden. Auf ähnliche Weise kann die Speicherschnittstelle 120 auch auf eine andere als Beispiel angegebene Frequenz MF1 trainiert werden, und der entsprechende Kontext kann ebenfalls im On-Die-Speicher 108 gespeichert werden. Daraus können sich N Sätze von Kontexten für N verschiedene Frequenzen für den Speichercontroller 112 ergeben. D. h. jeder Leistungszustand (z. B. MC0–MCn) besitzt einen entsprechenden Satz Kontexte für jede mögliche Frequenz, also kann es insgesamt n·N Sätze von Kontexten geben. Wie hierin besprochen, kann die Kontext-Speicherungs-/Umspeicherungs-Funktionseinheit 110 einen zuvor gespeicherten Kontext (welcher der gewünschten Frequenz entspricht) wiederherstellen und auf die neue Frequenz umschalten, wenn ein Leistungsmanagementorgan wie z. B. der Mikrocontroller 104 entscheidet, die MC-Frequenz zu ändern. Auf ähnliche Weise, wie hierin besprochen, wenn der Speichercontroller 112 nicht mehr leistungsbeschränkt ist (aus einem Zustand mit niedriger Leistung zurückgebracht wird), kann die Kontext-Speicherungs-/Umspeicherungs-Funktionseinheit 110 den Speichercontroller-Kontext (vom On-Die-Speicher 108), der vor dem Power-Gating aus einem vorigen Kontext gespeichert wurde, wiederherstellen, und ebenfalls die gleiche Taktfrequenz wiederherstellen.
-
In einer Ausführungsform kann die aktuelle Konfiguration und Kalibrierung eines Speichercontrollers 112 als Kontext gespeichert werden, wenn der Speichercontroller 112 leistungsbeschränkt wird, und dann vom gespeicherten Kontext wiederhergestellt werden, wenn der Strom zum Speichercontroller wieder eingeschaltet wird (z. B. Power-Gating aufgehoben). Eine Vielzahl von Kontexten kann im On-Die-Speicher 108 organisiert und gespeichert sein und/oder mittels der Kontext-Speicherungs-/Umspeicherungs-Funktionseinheit 110 wiederhergestellt werden. In einer Ausführungsform können Kontexte so gestapelt werden, dass die Kontext-Speicherungs-/Umspeicherungs-Funktionseinheit 110 auf eine Start-Stelle der Kontexte hinweisen kann und bei Kenntnis eines gewünschten neuen Zustands (z. B. MC0, MC1 etc.) die gewünschten Kontexte als Funktion der Kontext-Speicherung/Umspeicherung streamen kann. Bei einem Reboot können alle Kontexte gestreamt werden. Wie hierin besprochen, kann ein gestapelter Teil für jede gewünschte Frequenzänderung gespeichert werden, wobei die dynamischen Teile während der Laufzeit aktualisiert werden. In einem Ausführungsbeispiel kann jeder der Kontexte im On-Die-Speicher 108 gespeichert werden. In einer Ausführungsform wird mindestens ein Kontext im On-Die-Speicher 108 gespeichert und alle restlichen Kontexte werden im DRAM-Modul 118 gespeichert.
-
In einer Ausführungsform, die in 2 dargestellt ist, kann ein Kontext zur Verringerung von Speichercontroller-Speicherungs-/Umspeicherungslatenzen in drei Gruppen von Kontextdaten gruppiert werden: statische Kontextdaten, die mittels Training im Voraus berechnet werden, pseudo-statische Kontextdaten, die beim Boot konfiguriert werden und dynamischer Kontext, der dynamisch vom Speichercontroller 112 erzeugt wird. Beim Boot können ein Speichercontroller I/O 116 und Schnittstellenbus 120 auf alle DRAM-Frequenzen von Interesse und alle gewünschten Zustände (z. B. MC0–MC4) trainiert werden, wobei der statische Kontext im On-Die-Speicher 108 gespeichert wird. In einer Ausführungsform kann der pseudo-statische Kontext Arbeitsleistungskontrollzähler umfassen. Obwohl solche Zähler sich ändern, sind in einer Ausführungsform keine aktualisierten Zähler erforderlich, um in einem Einschaltzyklus erhalten zu bleiben. In einer Ausführungsform besitzt der On-Die-Speicher 108 ausreichende Speicherkapazität für mindestens einen Satz Kontextdaten (z. B. statische, pseudo-statische und dynamische Kontextdaten), die nötig wären, um das Speicher-Untersystem wiederherzustellen. In einer Ausführungsform können andere Sätze von Kontexten im DRAM 118 und/oder im On-Die-Speicher 108 gespeichert werden.
-
Wie in 2 dargestellt, kann ein Kontext so organisiert sein, dass nur der dynamische Inhalt (z. B. Kontextdaten, die dynamisch mittels Hardware wie z. B. Arbeitsleistungskontrollzähler geändert werden) während einer Kontextspeicherfunktion durch die Kontext-Speicherungs-/Umspeicherungs-Funktionseinheit 110 gespeichert wird. In einem Ausführungsbeispiel können Kontextdaten aufgeteilt werden in gemeinschaftlichen Kontext (für alle Speichercontroller) und individuellen Kontext (per Speichercontroller). Während einer Umspeicherungsfunktion stellt die Kontext-Speicherungs-/Umspeicherungs-Funktionseinheit 110 die gemeinschaftlichen Kontextdaten wieder her, indem die gemeinschaftlichen Kontextdaten an alle Speichercontroller 112 gestreamt werden, und individuelle Kontextdaten an jeden einzelnen Speichercontroller 112 gestreamt werden.
-
In einem Ausführungsbeispiel können Betriebssysteme Konfigurationen haben, die den Speichercontroller beeinflussen. Der Speichercontroller hat keinen Einfluss darauf, was das Betriebssystem bei Laufzeit für den Speichercontroller ändern oder ablegen will, und diese Änderungen müssen (in dynamischem Kontext) während Einschaltzyklen aufrecht erhalten bleiben. Beispielsweise kann das Betriebssystem den Speichercontroller 112 in einen gewissen Zustand gebracht haben, der gespeichert werden muss (z. B. Fehlerzustände, Anfragen etc.). Diese Änderungsbeispiele können erst durchgeführt werden, wenn das Betriebssystem sie durchführen will.
-
Wie in 1 und 3 dargestellt ist, kann das Sequentialisieren zwischen Speichercontroller-Zuständen durch eine Hardware-Zustandsmaschine und den Sequenzer der mikrocodierten Funktionseinheit 106, der sich im Systemleistungsmanagementeinheit-Komplex (SPMU) 102 befindet, durchgeführt werden. In einer Ausführungsform wird das als Beispiel angegebene Sequentialisieren nicht durch Firmware oder eine Systemkernsoftware durchgeführt, die auf einem Mehrzweck-Prozessor läuft, weil die Zustandumschaltfunktion latenzempfindlich ist. Bevor der Mikrocontroller 104 Speichercontroller-Zustände ermöglicht, kann der Mikrocontroller 104 einige Handlungen vornehmen, um einen Zustand für die mikrocodierte Funktionseinheit 106 vorzubereiten und alle erforderlichen Zähler und Steuerungen zu programmieren.
-
In einem Ausführungsbeispiel kann eine Reihe von Handlungen vom Mikrocontroller 104 durchgeführt werden. Der Mikrocontroller 104 kann mit dem System verhandeln, um eine Maximallatenz festzulegen, die für alle Einrichtungen erträglich ist. Der Mikrocontroller kann ebenfalls einen Ziel-MC-Zustand bei niedriger Leistung und dementsprechende Parameter auswählen, sowie Zustandsequenzdatenfelder, wenn das für diesen Zielzustand erforderlich ist. Der Mikrocontroller 104 kann ebenfalls sicherstellen, dass jegliche statischen Zustandsdaten (z. B. SRAM Nachreparatur oder statische Steuerregister) im On-Die-Speicher 108 vorgespeichert werden. Solche Schritte können sicherstellen, dass ein Kontextspeicherungsvorgang kurz ist. Solche Schritte stellen ebenfalls sicher, dass alle erforderlichen Zustandskontexte für die Kontextumspeicherung vorliegen. Sobald der Mikrocontroller 104 die MC-Zustände ermöglicht hat, ist die Hardwarezustandsmaschine in der SPMU 102 fähig, die mikrokodierte Funktionseinheit 106 zu initialisieren, so dass sie immer in einen Zustand mit niedriger Leistung eintritt, wenn das Speicher-Untersystem nicht läuft und alle Systemclients angeben, dass sie gegenwärtig gesättigt sind.
-
In einer Ausführungsform kann ein Registerbus 112 verwendet werden, um die Kontextspeicherungs- und -umspeicherungsübertragungszeiten zu verringern, der die Fähigkeit besitzt, ”Register-Schreibbefehle” oder ”Register-Lesebefehle” an jeden der Speichercontroller 112 zu streamen, anstatt einzeln auf jeden Teil der Daten zuzugreifen. Der Registerbus kann ebenfalls dazu verwendet werden, um Daten als Register-Schreibbefehle an alle Speichercontroller 112 zu streamen und damit gemeinschaftliche Kontextdaten bei allen Speichercontrollern 112 wiederherzustellen. In einem Ausführungsbeispiel kann der Registerbus ebenfalls Lesedaten von den Registern streamen, um die Kontextdaten der Speichercontroller 112 zu speichern. D. h. die Kontextdaten werden durch Streamen aus den Registern gelesen, um schnelle Kontextdatenspeicherung zu ermöglichen.
-
In einem Ausführungsbeispiel empfängt der Bus N verschiedene Datensätze und die N Datensätze werden in den ersten N Registern gespeichert, z. B. werden die Daten eingestreamt. Ein herkömmliches Register wäre für das Datenstreamen nicht geeignet, da ein herkömmlicher Bus angeben müsste, in welchem Register die Daten unterzubringen sind. Es trifft also zu, dass ein als Beispiel angegebener Bus nicht von einem einzigen Register liest oder darauf schreibt, sondern von mehreren Registern liest und darauf schreibt.
-
Wie hierin besprochen ist die mikrocodierte Funktionseinheit 106 in einer Ausführungsform eine Hardware-Funktionseinheit, die die Frequenzänderungen spezifisch in Sequenz bringt, sowie das Eintreten in und Austreten aus Zuständen mit niedriger Leistung (z. B. MC1–MC4) in Sequenz bringt. Wie in 3 dargestellt, gibt es eine Reihe von Schritten, die zwischen Speicherungs- und Umspeicherungsschritten ausgeführt und von der mikrocodierten Funktionseinheit 106 durchgeführt werden.
-
Sequentialisieren von Umschalten des Speichercontrollers auf niedrige Leistung:
-
Das Zustandsdiagramm von 3 stellt ein Verfahrensbeispiel dar für das Sequentialisieren zwischen den MC-Zuständen, wie es von der Hardwarezustandsmaschine in der SPMU 102 und der mikrocodierten Funktionseinheit 106 implementiert wird. In 3 deuten die Pfeile an, dass der Speichercontroller 112 entscheidet, von MC0 auf MCn umzuschalten, aber nicht direkt in diesen Zustand übergeht. Wie in 3 dargestellt, werden die Übergänge während eines intermediären Zustands durchgeführt, und wenn ein Weckereignis stattfindet, kann das Übergehen in den MCn-Zustand abgebrochen werden. Wie im Einzelnen hierin besprochen wird, werden erst nichtstörende Schritte vorgenommen (Kontextdaten speichern im Gegensatz zu Abschalten etc.). In einem Ausführungsbeispiel sind die frühen Stadien der Übergänge für das Betriebssystem transparent und stören nicht. Wenn beispielsweise ein Weckereignis vom Speichercontroller 112 empfangen wird, während ein Übergang zu einem Zustand mit niedriger Leistung läuft, wird der Übergang abgebrochen, solange noch kein Störschritt stattgefunden hat. Mit anderen Worten, wenn ein Punkt, ab dem es keine Rückkehr gibt, schon erreicht ist, wenn ein Weckereignis stattfindet, würde das System immer noch den ganzen Einschaltzyklus durchführen müssen, vom Speichern der Kontextdaten zum Abschalten und Wiederherstellen des aktiven Zustands (z. B. MC0) nach dem Wiedereinschalten. Unter solchen Bedingungen wird das System sowohl eine Eintrittslatenz als auch eine Austrittslatenz durchmachen müssen.
-
Das Zustandsdiagrammbeispiel in 3 umfasst: einen MC0-Zustand 302, einen MCn-Eintrittszustand 304, einen MCn-Zustand 306 und einen MCn-Austrittszustand 308, wobei n den ausgewählten Zustand mit niedriger Leistung zum Eintreten (z. B. MC1–MC4) bedeutet. Wie ebenfalls in 3 dargestellt, werden die folgenden Zustandsübergangsbeispiele dargestellt: Übergang 320, Übergang 322, Übergang 324, Übergang 326, Übergang 328 und Übergang 330. Übergang 320 wird ausgelöst, wenn der Mikrocontroller 104 einen MC-Zustand mit niedriger Leistung zum Eintreten (z. B. MC1–MC4) auswählt und die Zustandsmaschine in den MCn-Eintrittszustand 304 übergeht. Übergang 322 wird ausgelöst, wenn ein Weckereignis empfangen wird, bevor der Speichercontroller 112 im aktuellen Übergang zu einem gewählten Zustand mit niedriger Leistung einen Punkt erreicht hat, von dem keine Rückkehr möglich ist. Wie in 3 dargestellt ist, wird die Zustandsmaschine mit lediglich minimaler Austrittslatenz in den MC0-Zustand 302 zurückgehen, je nach dem Fortschritt des Eintretens, bevor das Weckereignis empfangen wurde.
-
Wie in 3, in Übergang 324, dargestellt ist, ist ein Weckereignis empfangen worden, nachdem der Speichercontroller 112 einen Punkt im aktuellen Übergang in den ausgewählten Zustand mit niedriger Leistung erreicht hat, von dem keine Rückkehr möglich ist. Also wird der Speichercontroller 112 im Übergang 324 das Eintreten in den ausgewählten Zustand mit niedriger Leistung vollbringen und dann sofort in den MCn-Austrittszustand 308 übergehen, um aus dem aktuellen MCn-Zustand mit niedriger Leistung auszutreten und wieder in den MC0- oder aktiven Zustand 302 einzutreten. Wie hierin besprochen, wenn das Weckereignis während des MCn-Eintrittszustands 304 geltend gemacht wird, springt die Sequenz zum entsprechenden Punkt im der Austrittssequenz und kehrt den Prozess um, oder die Austrittssequenz durchgeht schnell alle unnötigen Austrittsschritte, je nachdem, inwiefern der Übergang zum Zustand mit niedriger Leistung schon erfolgt ist.
-
Im Übergang 326 ist der MC-Zustandseintrittübergang schon abgeschlossen und die Zustandmaschine geht zum MCn-Zustand 306 über. Im MCn-Zustand 306 arbeitet der Speichercontroller 112 im ausgewählten Zustand mit niedriger Leistung (z. B. MC1–MC4). Im Übergang 328 ist ein Weckereignis empfangen worden und die mikrocodierte Funktionseinheit 106 führt einen Übergang in einen dazwischenliegenden Zustand, MCn-Austritt 308 durch. Im Übergang 330 ist das MC-Zustandsaustreten bei MCn-Austrittszustand 308 abgeschlossen und die Zustandsmaschine geht in den MC0-Zustand 302 zurück.
-
In einem Ausführungsbeispiel kann die Sequenz zur Rückkehr aus dem MCn-Zustand 306 zum MC0-Zustand 302 eingeleitet werden, sooft ein Hardware-”Weckereignis”-Signal geltend gemacht wird. In einer Ausführungsform wird das Weckereignissignal geltend gemacht, sooft einer der folgenden Fälle zutrifft: ein Systemclient hat angegeben, dass er Zugriff auf das DRAM-Modul 118 benötigt, ein CPU Weckruf von einer Zeituhrquelle wird empfangen (z. B. entweder eine Unterbrechung oder eine Voranmeldung), und wenn der Mikrocontroller 104 aus irgendeinem Grund entscheidet, die MC-Zustände (MC1–MC4, wie in Tabelle 1 dargestellt) zu sperren.
-
In einer Ausführungsform, wenn ein Weckereignis während einer Eintrittssequenz geltend gemacht wird, springt die Sequenz zum entsprechenden Punkt in einer Austrittssequenz und kehrt den laufenden Prozess um, oder die Austrittssequenz kann schnell die unnötigen Austrittsschritte durchlaufen. Wie in 4 dargestellt ist, können solche Schritte es vermeiden, unnötige Austrittslatenzzeit der Austrittslatenz hinzuzufügen. Das Zeitvorgabediagramm 402 von 4 stellt ein Beispiel eines Worst-Case-Szenarios dar, wobei eine maximale Eintrittslatenz für den Übergang in einen und eine maximale Austrittslatenz für den Übergang aus einem Zustand mit niedriger Leistung erforderlich sind. Mit anderen Worten stellt das Zeitvorgabediagramm 404 die maximale Zeit dar, die für das Eintreten in einen Zustand mit niedriger Leistung (Eintrittslatenz) erforderlich ist, sowie die maximale Zeit, die für das Austreten aus dem aktuellen Zustand mit niedriger Leistung (Austrittslatenz) erforderlich ist, woraus sich eine Worst-Case-Latenz von T1 bis T2 ergibt. Wie hierin besprochen worden ist, sollte ein solches Worst-Case-Szenario normalerweise nicht eintreten, da ein Weckereignis, das bei Beginnen des Eintretens empfangen wurde, zu Abbruch des Eintrittsübergangs und einem schnellen Austrittsübergang führen sollte.
-
Zeitvorgabediagramm 404 von 4 stellt ein Szenariobeispiel mit verringerter Eintrittslatenz und verringerter Austrittslatenz dar (T3 bis T4). Wie im Zeitvorgabediagramm 404 von 4 dargestellt ist, durchkreuzt die Linie 406 das Zeitvorgabediagramm 404 und stellt einen Punkt bzw. eine Schwelle dar, von dem/der keine Rückkehr möglich ist. Linie 408, die das Zeitvorgabediagramm 404 durchkreuzt, stellt einen Punkt im aktuellen Eintrittsübergang dar, wenn ein Weckereignis empfangen wird. Da die Linie 408 im Zeitvorgabediagramm 404 vor der Linie 406 liegt, kann der Rest der Eintrittssequenz abgebrochen und der Austrittsübergang in einen aktiven Zustand (MC0-Zustand) sofort gestartet werden. Wie im Zeitvorgabediagramm 404 von 4 dargestellt, kann die erforderliche Austrittslatenz geringer sein als die in 4 dargestellte Worst-Case-Austrittslatenz, je nach Umfang der Eintrittssequenzen, die abgeschlossen wurden und jetzt umgekehrt werden müssen, um zu einem aktiven Zustand zurückzukehren. Wie ebenfalls in 5 dargestellt, wenn das Weckereignis stattfindet, bevor ein Punkt erreicht wird, von dem keine Rückkehr möglich ist, kann der Rest der Eintrittssequenz abgebrochen und die sich ergebende Austrittslatenz verringert werden, je nachdem, welche Austrittssequenzen nicht mehr durchgeführt werden müssen. D. h. T3–T4 ist eine als Beispiel angegebene Latenz, die unvermeidbar ist, wenn ein Weckereignis bei T3 empfangen wird, bevor der Speichercontroller 118 in einen aktiven Zustand zurückkehrt und das DRAM-module 118 Zugriff erlaubt. In einer Ausführungsform ist T3–T4 lediglich Austrittslatenz, da das Eintreten abgebrochen wurde.
-
In einem Ausführungsbeispiel, wenn Teil einer Mehrzahl von Schritten für einen Übergang abgeschlossen ist, kann die Austrittslatenz das Bearbeiten von den Schritten, die durchgeführt wurden, umfassen (z. B. diese so einzustellen oder zu ändern, wie es für einen aktiven Zustand erforderlich ist). Einige Schritte benötigen mehr Zeit zur Wiederherstellung als andere. Wenn z. B. eine PLL abgeschaltet wird, wird es einige Zeit dauern, bis sie wieder läuft. In einem Ausführungsbeispiel kann eine Vielzahl von Weckereignissen und eine Vielzahl von Entscheidungsereignissen bestehen, wobei das kritischste Ereignis Power-Gating ist, wobei Kontexte von Registern verlorengehen und dieses das kritischste unbehebbare Ereignis ist. In einer anderen Ausführungsform können auch andere Arten von Ereignissen unbehebbar sein, wie z. B. Abschalten des MCIO 116.
-
Zeitvorgabediagramm 410 von 4 stellt eine Szenariobeispiel dar mit Teilen von Eintrittslatenz und Austrittslatenz, die bei Empfang eines Weckereignisses bei T5, bevor der Speichercontroller 118 in einen aktiven Zustand zurückkehrt und das DRAM-Modul 118 Zugriff erlaubt, unvermeidbar sind. Wie in 4 dargestellt ist, durchkreuzt die Linie 406 ebenfalls das Zeitvorgabediagramm 410 und stellt den Punkt bzw. die Schwelle dar, von dem/der keine Rückkehr möglich ist. Linie 412, die das Zeitvorgabediagramm 410 durchkreuzt, stellt einen Punkt im aktuellen Eintrittsübergang dar (z. B. Zeit T5), wenn ein Weckereignis empfangen wird. Da die Zeit T5, Linie 412, nach der Schwelle liegt, Linie 406, ist ein Teil der Eintrittlatenz und der Austrittslatenz unvermeidbar (T5 bis T6).
-
Tabelle 2 stellt ein Beispiel von Sequenzschritten dar, um einen Speicher-Untersystem-Zustand MC0 (z. B. einen aktiven Zustand) in MCn (z. B. einem der Zuständen mit niedriger Leistung, MC1–MC4) zu ändern. In einem Ausführungsbeispiel wird der erste Schritt von Tabelle 2 von der SPMU
102 durchgeführt, während die restlichen Schritte von der mikrocodierten Funktionseinheit
106 durchgeführt werden können. In einem Ausführungsbeispiel kann das Abschalten der Speichercontroller PLLs und/oder DLLs in Schritt 9 als unbehebbares Ereignis betrachtet werden und einen aktuellen Eintrittsübergang über einen Punkt bzw. eine Schwelle hinausbringen, nach dem/der keine Rückkehr möglich ist. In einem Ausführungsbeispiel wird ein einzelner Speichercontroller
112 in einen Zustand mit niedriger Leistung gebracht. In einer Ausführungsform werden eine Vielzahl von Speichercontrollern
112 in einen Zustand mit niedriger Leistung gebracht.
Schritt 1: Wenn (Schlaf_Ereignis), MCn-Eintritts-MCE-Sequenz aufrufen. |
Schritt 2: Alle Anforderungsquellen sperren und alle nötigen Ressourcen anschaffen. |
Schritt 3: Kurze Zeit warten, bis Sperrsignale sich ausgebreitet haben. |
Schritt 4: MC befehlen, in den Selbst-Aktualisierungszustand einzutreten, sobald alle restlichen Anforderungen verarbeitet worden sind. |
Schritt 5: Warten, bis MC bestätigt, dass er in den Selbst-Aktualisierungszustand eingetreten ist. |
Schritt 6: MEMIO-Schiene-Abschalten aktivieren. |
Schritt 7: MC-Zustandskontext speichern. |
Schritt 8: MC-Zeituhr auf Bypass-Zeituhrquelle umschalten. |
Schritt 9: MC PLL/DLL abschalten. |
Schritt 10: Signale zur Vorbereitung auf Power-Gating klemmen. |
Schritt 11: Rücksetzen bei allen MC geltend machen. |
Schritt 12: MC-Zeituhren klemmen. |
Schritt 13: Power-Gating für MC einleiten. |
Schritt 14: Alle für diese Sequenz benötigten Ressourcen freigeben. |
Tabelle 2
-
Tabelle 3 stellt ein Beispiel einer Sequenz von Schritten dar, um einen Speicher-Untersystem-Zustand MCn (z. B. einen Zustand mit niedriger Leistung MC2–MC4) auf MC0, einen aktiven Zustand umzuschalten. In einem Ausführungsbeispiel wird der erste Schritt von Tabelle 3 von der SPMU
102 durchgeführt, während die restlichen Schritte von der mikrocodierten Funktionseinheit
106 durchgeführt werden können. In einem Ausführungsbeispiel kehrt ein einzelner Speichercontroller
112 von einem Zustand mit niedriger Leistung in einen aktiven Zustand zurück. In einer anderen Ausführungsform kehrt eine Vielzahl von Speichercontrollern
112 aus einem Zustand mit niedriger Leistung in einen aktiven Zustand zurück.
Schritt 1: Wenn (Weck_Ereignis) MCx-Austritts-MCE-Sequenz aufrufen. |
Schritt 2: Alle nötigen Ressourcen für die Austrittssequenz anschaffen, die sonst die Eintrittssequenz zum Stillstand bringen oder verlangsamen könnten. |
Schritt 3: Schritt eins (von zwei) der MEMIO-Schienen-Einschaltsequenz. |
Schritt 4: Zeitgeber starten, um die Zeit für Stabilisierung der VDD_MEM-Schiene zählen zu lassen. |
Schritt 5: Um Leistung zu optimieren, Start des nächsten Schrittes so lange wie möglich verzögern, so dass die MEMIO-Schiene geraden eben eingeschaltet wird, bevor der Speicher aus Selbst-Aktualisierung herausgenommen wird. |
Schritt 6: Wiederverriegeln von MC PLL/DLL und anderen PLLs starten; diese sind nötig, damit Geräte auf DRAM Zugriff haben. |
Schritt 7: Power-Ungating für MCx einleiten. |
Schritt 8: Warten, bis Power-Ungating abgeschlossen ist. |
Schritt 9: MC-Zeituhr entklemmen und warten, bis Rücksetzen sich ausgebreitet hat. |
Schritt 10: Geltendmachung von Rücksetzen an alle MCx zurücknehmen. |
Schritt 11: Geltendmachung von Klemmbefähigung an all MC zurücknehmen. |
Schritt 12: Zeituhrkreuzungen aktivieren. |
Schritt 13: SRAM-Nachreparatur vornehmen. |
Schritt 14: Kontext wiederherstellen. |
Schritt 15: Warten, bis MC PLL/DLL verriegelt ist. |
Schritt 16: Befehl an Block der MC-Zeituhren, auf VCO umzuschalten. |
Schritt 17: Warten, bis MEMIO-Schienen-Einschaltzeitgeber abgelaufen ist. |
Schritt 18: Anforderungen entsperren. |
Schritt 19: MC0 und MC1 befehlen, aus dem Selbst-Aktualisierungszustand auszutreten. |
Schritt 20: Alle für diese Sequenz benötigten Ressourcen freigeben. |
Tabelle 3
-
Sequentialisieren von Speichercontroller-Frequenzänderungen:
-
Wie hierin besprochen wurde, kann während Zeiten ohne Aktivität zusätzlich zur Auswahl aus einer Vielzahl von Zuständen mit niedriger Leistung eine Frequenz, die geringer ist als die aktuelle Frequenz, ausgewählt werden. In einem Ausführungsbeispiel kann der Mikrocontroller 104 feststellen, dass eine Frequenzänderung (beispielsweise auf eine niedrigere Frequenz) angemessen ist und wird alle Spannungsänderungen vornehmen, die zur Vorbereitung auf eine Frequenzänderung erforderlich sind. Wie hierin besprochen, kann das Sequentialisieren der Speichercontroller-Frequenzänderungen von einer Hardware-Zustandsmaschine und der mikrocodierten Funktionseinheit 106 der SPMU 102 implementiert werden. Wie bei der Sequentialisierung von Zustandsänderungen kann die Sequentialisierung von Frequenzänderungen mittels Hardware anstatt Firmware vorgenommen werden, da diese Funktion (Frequenzänderungen) latenzempfindlich ist.
-
In einem Ausführungsbeispiel, bei Gebrauch der mikrocodierten Funktionseinheit
106, kann eine Speicherfrequenz-(MF)-Zustandsmaschine, die einer MC-Zustandsänderungs-Zustandsmaschine, wie sie in
3 dargestellt ist, ähnlich ist, gebraucht werden, um Speicherfrequenzen zu ändern. In einer Ausführungsform wird ein Speichercontrollerkontext (welcher der Ziel-Speicherfrequenz entspricht) im Laufe einer Sequenz von Schritten zum Umschalten von einer ursprünglichen Frequenz auf eine neue Zielfrequenz von der Kontext-Speicherungs-/Umspeicherungs-Funktionseinheit
110 wiederhergestellt. In einer Ausführungsform stellt Tabelle 4 ein Beispiel einer Sequenz von Schritten zur Änderung einer Speicher-Untersystemfrequenz von MF0 auf MF1 dar (wobei MF1 > MF0 Frequenz). In einer Ausführungsform wird eine einzelne Speicher-Untersystemfrequenz geändert. In einer Ausführungsform wird eine Vielzahl von Speicher-Untersystemfrequenzen geändert.
Schritt 1: Spannung entsprechend programmieren. |
Schritt 2: MC-Zustandsübergänge deaktivieren. |
Schritt 3: Allen Systemspeicherclients befehlen, ihre Zwischenspeicher aufzufüllen. |
Schritt 4: MC-Frequenzänderungs-MCE-Sequenz aufrufen. |
Schritt 5: Warten, bis Clients angeben, dass sie für lange MC-Latenz bereit sind. |
Schritt 6: MC befehlen, in den Selbst-Aktualisierungszustand einzutreten. |
Schritt 7: Warten, bis MC angibt, dass er in den Selbst-Aktualisierungszustand eingetreten ist. |
Schritt 8: Zeituhrkreuzung sperren. |
Schritt 9: Auf Bypass-Zeituhr umschalten. |
Schritt 10: Zeituhrkreuzung aktivieren. |
Schritt 11: PLL/DLL anhalte und neu programmieren, Wiederverriegelung einleiten. |
Schritt 12: Neue MCx-Registereinstellungen über M-Registerbus laden. |
Schritt 13: Neue DRAM-MRS-Einstellungen über den Registerbus in die MC-Register laden. |
Schritt 14: Zeituhrkreuzung sperren. |
Schritt 15: Warten, bis MC PLL/DLL verriegelt ist. |
Schritt 16: MC-Zeituhrblock befehlen, auf PLL umzuschalten. |
Schritt 17: Zeituhrkreuzung aktivieren. |
Schritt 18: MC befehlen, aus Selbst-Aktualisierungszustand auszutreten. |
Schritt 19: MC-Zustandsübergänge wieder aktivieren, falls angemessen. |
Tabelle 4
-
In einem Ausführungsbeispiel können Frequenzübergänge ohne hinderliche Latenz abgeschlossen werden, wenn ein Weckereignis während des Frequenzübergangs stattfindet. In einem Ausführungsbeispiel liegt die Latenz, die erforderlich ist, um auf eine schnellere Frequenz umzuschalten, unter einer Schwelle, so dass eine niedrigere Frequenz während Zeiten verringerter Nachfrage verwendet werden kann und dann während Zeiten gesteigerter Nachfrage auf eine schnellere Frequenz geändert werden kann. D. h. die Latenz, die erforderlich ist, um von einer ersten Frequenz auf eine zweite Frequenz umzuschalten, ist gering genug, dass eine Zeit, die abgewartet werden muss, um die Frequenz zu ändern, von den Untersystemen, die auf Zugriff auf das DRAM-Modul 118 warten, geduldet werden kann. In einer Ausführungsform können die Schritte 1–4 von SPMU-Firmware ausgeführt werden, während die restlichen Schritte 5–19 von der mikrocodierten Funktionseinheit 106 durchgeführt werden.
-
In einem Ausführungsbeispiel kann ein Speicher bei einer ersten ausgewählten Frequenz oder einer zweiten ausgewählten Frequenz laufen. Die erste ausgewählte Frequenz würde in ihrem entsprechenden Kontext Parameter gespeichert haben, die für die erste ausgewählte Frequenz spezifisch sind, während die zweite ausgewählte Frequenz in ihrem entsprechenden Kontext andere Parameter gespeichert haben würde, die für die zweite ausgewählte Frequenz spezifisch sind. In einer weiteren Ausführungsform kann eine Vielzahl von verschiedenen Frequenzen zur Verfügung stehen. Wie hierin besprochen, obwohl Parameter im entsprechenden statischen Kontext gespeichert werden, werden alle periodischen Nachkalibrierungen oder andere Statistiken, die gespeichert werden, mit dem dynamischen Teil des entsprechenden Kontexts gespeichert, während der Speichercontroller bei einer bestimmten Frequenz läuft, so dass die statischen Ergebnisse und die Ergebnisse der Nachkalibrierung während einer nächsten Umspeicherung verwendet werden können.
-
In einem Ausführungsbeispiel kann eine Frequenzänderung dynamischer sein als Übergänge auf einen Zustand mit niedriger Leistung. In Übergängen auf Zustände mit niedriger Leistung muss das System abgeschaltet werden, aber bei Frequenzänderungen braucht das System sich nicht in einem tiefen Ruhezustand zu befinden. In einem Ausführungsbeispiel kann eine Frequenzänderung innerhalb von 10tel von Mikrosekunden durchgeführt werden. Die Latenz, die aufgrund von Frequenzübergängen entsteht, ergibt immer noch eine Blackout-Zeit für den Speichercontroller 112 und das DRAM-Modul 118. Wie aber hierin beschrieben ist, kann die Latenz, die aufgrund eines Frequenzübergangs entsteht, bis zu einer gewissen Schwelle ertragen werden.
-
In einem Ausführungsbeispiel, wie hierin beschrieben, wenn die Frequenzübergangslatenz kurz genug ist, kann das System bei einer niedrigeren Frequenz anlaufen und dann schnell nach Bedarf auf eine höhere Frequenz hochfahren. Bei kurzer Frequenzübergangslatenz und einer Vielzahl von möglichen Frequenzwahlen ist feine Detailgenauigkeit in der Frequenzauswahl möglich. In einer Ausführungsform wird eine Tabelle ausgearbeitet, um für jeden Frequenzübergang eine Worst-Case-Latenz festzustellen, und die Frequenzübergänge, die die Latenzschwellen übersteigen, werden nicht ausgewählt.
-
In einem anderen Ausführungsbeispiel kann ein Frequenzübergang mit einer MCn-Zustandsänderung kombiniert werden. In einer Ausführungsform kann eine Tabelle ausgearbeitet werden, um eine Worst-Case-Latenz für jeden Leistungszustand festzustellen, und solche Leistungszustände, die die Latenzschwellen übersteigen, werden nicht ausgewählt. In einem Ausführungsbeispiel kann eine Tabelle ausgearbeitet werden, um eine Worst-Case-Latenz für jeden Leistungszustand und für jeden Frequenzübergang festzustellen, und solche Zustände und Frequenzübergänge, die die Latenzschwellen übersteigen, werden nicht ausgewählt.
-
5 stellt Schritte für ein Verfahrensbeispiel für Übergänge zwischen Leistungszuständen eines Speichercontrollers dar. In Schritt 502 von 5 wird ein Speichercontrollerzustand mit niedriger Leistung (z. B. MC1–MC4) gewählt. Wie hierin besprochen, kann einer aus einer Vielzahl von Zuständen mit niedriger Leistung ausgewählt werden. Wie ebenfalls in Tabelle 1 dargestellt ist, kann jeder Zustand mit niedriger Leistung den Speichercontroller 112 in einen tieferen Energiesparzustand bringen. In Schritt 504 von 5 hat der Übergang zum Speichercontrollerzustand mit niedriger Leistung begonnen. In Schritt 506 von 5, wenn ein Weckereignis empfangen worden ist, fährt das Verfahren mit Schritt 512 von 5 weiter. Wenn ein Weckereignis nicht empfangen worden ist, fährt das Verfahren mit Schritt 508 von 5 weiter, und der Übergang zum gewählten Zustand mit niedriger Leistung fährt fort, bis er abgeschlossen ist. In einem Ausführungsbeispiel kann die Überwachung von Weckereignissen in Schritt 506 während des Übergangs zum ausgewählten Zustand mit niedriger Leistung kontinuierlich sein.
-
Wie in 5 dargestellt, in Schritt 508, nach Abschluss der Übergangsphase, befindet sich der Speichercontroller 112 jetzt im ausgewählten Zustand mit niedriger Leistung. Wie hierin besprochen ist der Speichercontroller 112 während jedes Zustands mit niedriger Leistung unfähig, mit dem Speicher (z. B. DRAM-Speicher) zu kommunizieren.
-
In Schritt 510 von 5 wird ein Weckereignis empfangen. In einem Ausführungsbeispiel kann das Weckereignis von der Systemleistungsmanagementeinheit 102 empfangen werden. Wie hierin besprochen, kann das Weckereignis Kommunikationsanforderungen an das DRAM-Speichermodul 118 umfassen, sowie Anforderungen von anderen Komponenten für Zugriff auf das DRAM-Speichermodul 118.
-
In Schritt 512 von 5 beginnt ein Übergang zu einem Austritt aus dem aktuellen Zustand mit niedriger Leistung. Wie hierin beschrieben, bringt ein solcher Austritt den Speichercontroller 112 in einen aktiven Zustand zurück und stellt die Kommunikation zwischen dem Speichercontroller 112 und dem DRAM-Speichermodul 118 wieder her. In Schritt 514 von 5 ist der Übergang vom Zustand mit niedriger Leistung abgeschlossen und ein aktiver Zustand (z. B. MC0) für den Speichercontroller 112 wird wiederhergestellt.
-
6 stellt Schritte eines Verfahrensbeispiels für Übergänge zwischen Leistungszuständen eines Speichercontrollers 112 dar, wenn die Systemleistungsmanagementeinheit 102 zurzeit von einem vorigen Zustand auf einen Zustand mit niedriger Leistung umschaltet, wenn ein Weckereignis empfangen wurde. In Schritt 602 von 6 wurde ein Weckereignis empfangen, während ein Übergang auf einen Zustand mit niedriger Leistung noch läuft.
-
In Schritt 604 von 6 wird der Umfang des aktuellen Übergangs auf den Zustand mit niedriger Leistung festgestellt. Wenn der Umfang des aktuellen Übergangs unter einer Schwelle liegt, fährt das Verfahren mit Schritt 606 fort, und der aktuelle Übergang wird abgebrochen und es wird daraus ausgetreten, um einen Übergang zu einem aktiven Zustand zu erlauben. Wenn der Umfang des aktuellen Übergangs über der Schwelle liegt, fährt das Verfahren mit Schritt 610 fort, und der Übergang zum Zustand mit niedriger Leistung wird abgeschlossen, um Abschalten herbeizuführen.
-
Wenn der Umfang des aktuellen Übergangs unter der Schwelle liegt, wie in Schritt 604 festgestellt wird, fährt das Verfahren mit Schritt 606 fort. In Schritt 606 von 6 wird der aktuelle Übergang (auf einen Zustand mit niedriger Leistung) abgebrochen (z. B. nicht weitergeführt). In einem Ausführungsbeispiel, wie hierin besprochen, führt das Abbrechen des Übergangs zum Anhalten der Schritte des aktuellen Übergangs in einen Zustand mit niedriger Leistung. Nach dem Austreten aus dem aktuellen Übergang in den Zustand mit niedriger Leistung fährt das Verfahren mit Schritt 608 fort. In Schritt 608 von 6 wird ein Übergang in einen aktiven Zustand begonnen. In einer Ausführungsform, beim Übergehen in den aktiven Zustand, umfasst der Übergang Rücksetzen von allen Parametern und Hardware-Einstellungen, die während des Übergangs in den Zustand mit niedriger Leistung geändert, abgeschaltet etc. wurden. D. h. je weiter der Übergang in den Zustand mit niedriger Leistung schon durchgeführt wurde, desto länger wird es dauern, bis der Übergang in den aktiven Zustand abgeschlossen ist.
-
Wenn der Umfang des aktuellen Übergangs über der Schwelle liegt, wie in Schritt 604 festgestellt wird, fährt das Verfahren mit Schritt 610 weiter. In Schritt 610 von 6 ist der aktuelle Übergang (auf einen Zustand mit niedriger Leistung) abgeschlossen. Sobald der Übergang in den Zustand mit niedriger Leistung abgeschlossen ist, fährt das Verfahren mit Schritt 612 fort. In Schritt 612 von 6 schaltet das Verfahren den Speichercontroller 112 vom aktuellen Zustand mit niedriger Leistung in einen aktiven Zustand um.