-
GEBIET DER
ERFINDUNG
-
Die
vorliegende Erfindung betrifft allgemein das Gebiet der Computersysteme
und im Besonderen Verfahren und Vorrichtungen zur Verwaltung des Leistungsverbrauchs
in derartigen Systemen.
-
STAND DER
TECHNIK
-
Es
ist keine Überraschung,
dass die neueren Hochleistungs-Computersysteme,
die größere Datenverarbeitungsfähigkeiten
bei höheren
Geschwindigkeiten aufweisen, auch mehr Betriebsleistung benötigen. Die
höheren
Leistungs- bzw. Stromanforderungen moderner Computersysteme können die
verfügbare
Leistung in Laptops, Notebooks und anderen tragbaren Computersystemen
leicht überbeanspruchen.
Als Folge dessen haben die Fachleute aus der Computerbranche verschiedene
Mechanismen zum effizienten Verwaltung der Leistungs- bzw. Stromressourcen
eines Computersystems entwickelt.
-
Während in
Bezug auf die Verwaltung des Stromverbrauchs durch die Zentraleinheit
(CPU) zahlreiche Fortschritte erzielt werden konnten, haben verhältnismäßig wenige
Systemstrukturen das Problem der Leistungsregelung auf der Ebene
des Speicherteilsystems eines Computers adressiert. Allerdings weisen
neuere dynamische Direktzugriffsspeicher (DRAMs) deutlich höhere Leistungsanforderungen
auf als herkömmliche
DRAM-Bausteine (wie etwa FPM, EDO und SDRAM). Aus diesem Grund ist es
für die
Bauweisen von Computer-Chipsätzen
erforderlich geworden, einen Mechanismus zur Verwaltung der Leistungszustände dieser
neueren DRAM-Bausteine vorzusehen.
-
ZUSAMMENFASSUNG
DER ERFINDUNG
-
Vorgesehen
ist gemäß einem
ersten Aspekt der vorliegenden Erfindung ein Computersystem gemäß dem gegenständlichen
Anspruch 1.
-
Vorgesehen
ist gemäß einem
zweiten Aspekt der vorliegenden Erfindung ein Verfahren gemäß dem gegenständlichen
Anspruch 6.
-
Bevorzugte
Ausführungsbeispiele
der Erfindung sind in den Unteransprüchen definiert.
-
KURZE BESCHREIBUNG
DER ZEICHNUNGEN
-
Die
vorliegende Erfindung wird durch Beispiele in den Abbildungen der
beigefügten
Zeichnungen veranschaulicht und ohne die Erfindung einzuschränken. In
den Zeichnungen zeigen:
-
1 verschiedene
Leistungsverwaltungszustände,
die bei der vorliegenden Erfindung zum Einsatz kommen;
-
die 2A bis 2H Beispiele
zur Veranschaulichung der Stapel- und Verschiebeoperationen, die
in einem Ausführungsbeispiel
der vorliegenden Erfindung zum Einsatz kommen;
-
3 ein
detailliertes schematisches Schaltungsdiagramm der allgemeinen Pool-Struktur
für ein Ausführungsbeispiel
der vorliegenden Erfindung; und
-
4 eine
Schaltungsimplementierung zur Auswahl des Bausteins, auf den am
weitesten zurückliegend
zugegriffen worden ist, gemäß der vorliegenden
Erfindung.
-
GENAUE BESCHREIBUNG
DER ERFINDUNG
-
In
der folgenden Beschreibung sind besondere Einzelheiten ausgeführt, um
ein umfassenderes Verständnis
der vorliegenden Erfindung zu vermitteln. Die Erfindung kann aber
auch ohne diese Besonderheiten ausgeführt werden. In anderen Fällen wurde
auf die Darstellung oder Beschreibung allgemein bekannter Einzelheiten
verzichtet, um die vorliegende Erfindung nicht unnötig zu verschleiern. Folglich
dienen die Beschreibung und die Zeichnungen Veranschaulichungszwecken
und haben keine einschränkende
Funktion.
-
Die
Abbildung aus 1 zeigt ein Zustandsdiagramm,
das verschiedene Leistungszustände
darstellt, die für
die DRAM-Bausteine
in dem Speicherteilsystem eines gemäß der vorliegenden Erfindung gestalteten
Computers zur Verfügung
stehen. DRAM-Bausteine sind verschiedenen Zuständen oder Pools zugeordnet,
abhängig
davon, wie kürzlich durch
den Speicheranforderer (z.B. die CPU) des Computersystems auf den
jeweiligen Baustein zugegriffen worden ist. (In der vorliegenden
Beschreibung werden die Begriffe „Pool" und „Zustand" austauschbar eingesetzt.) In der Abbildung
aus 1 sind drei Baustein-Pools abgebildet: ein aktiver
Pool 20, ein Bereitschafts-Pool 21 und ein Schlaf-Pool 22.
-
Wenn
das Computersystem zum ersten Mal hochgefahren wird oder beim Zurücksetzen
bzw. Neustart des Systems befindet sich keiner der DRAM-Bausteine
in dem aktiven Zustand. Vielmehr befinden sich alle DRAM-Bausteine
in dem Standard-Pool, bis die CPU (oder ein anderer Prozessor in
einem Mehrprozessorsystem) auf die Bausteine zugegriffen hat. Der
Standardzustand kann ein Bereitschaftszustand 21 oder ein
Ruhe- bzw. Schlafzustand 22 sein. In dem hierin beschriebenen Ausführungsbeispiel
handelt es sich bei dem Standardzustand um einen Ruhezustand 22.
Das heißt,
alle DRAM-Bausteine befinden sich im Ruhezustand, bis auf sie durch
einen Prozessor des Computersystems zugegriffen worden ist.
-
Wenn
der Prozessor auf einen Baustein zugreift, wird dieser aus den Schlaf-Pool 22 in
den aktiven Pool 20 verlagert. Dieses Ereignis ist in der
Abbildung aus 1 durch die Linie 25 dargestellt.
Bei einer aktuellen Implementierung stellt der Ruhezustand einen
ausgeschalteten Betriebszustand dar, in dem nur der interne Ringoszillator
des DRAM-Bausteins weiter funktionsfähig ist. Der Ringoszillator stellt
eine Zeitbasis während
einer selbständigen
Aktualisierung der Kernspeicherzellen bereit.
-
DRAM-Bausteine
in dem Bereitschafts-Pool 21 befinden sich in einem intermediären Zustand
mit reduziertem Leistungsverbrauch. In diesem Bereitschaftszustand
sind bestimmte Stifte bzw. Pins eines DRAM-Bausteins ausgeschaltet;
wobei der Baustein jedoch weiterhin die Schaltkreisanordnung mit
Strom versorgt, wobei diese auf das Systemtaktsignal anspricht;
ferner wird der interne Taktgenerator des Bausteins am Laufen gehalten.
Strom bzw. Leistung wird aber auch in dem Ein-Ausgabe-Abschnitt (E/A-Abschnitt)
der DRAM-Bausteine verbraucht. Der aktive Pool 20 stellt
den normalen oder Vollleistungszustand des DRAM-Bausteins dar, in
dem alle Schaltungsfunktionen vollständig einsatzfähig sind.
-
Wenn
der Anforderer gemäß der Abbildung aus 1 auf
einen DRAM-Baustein zugreift, kann sich dieser entweder in dem Bereitschafts-Pool 21 oder
in dem Schlaf-Pool 22 befinden. Wenn auf einen Baustein
zugegriffen wird, der sich in dem Bereitschafts-Pool 21 befindet,
wird der Baustein in den aktiven Pool 20 gebracht, wie
dies durch den Richtungspfeil 23 in 1 dargestellt
ist. Wie dies nachstehend im Text näher beschrieben ist, werden
Bausteine in dem Bereitschafts-Pool 21, die über einen bestimmten
Zeitraum hinweg ruhen (d.h. auf die nicht zugegriffen wird), letztlich
in den Schlaf-Pool 22 zurückgeführt. Dieses Ereignis ist durch
den Pfeil 24 dargestellt.
-
Gemäß der vorliegenden
Erfindung werden DRAM-Bausteine, die aus dem Schlaf-Pool 22 genommen
und in den aktiven Pool 20 platziert werden, gemäß der Anordnung,
in der sie in dem Pool angekommen sind, gestapelt und verschoben.
Die Abbildung aus 2A veranschaulicht ein Beispiel,
bei dem auf vier Bausteine zugegriffen wird. Auf die vier DRAM-Bausteine
(Device) wurde in der folgenden Reihenfolge zugegriffen: Device1, Device2, Device3, Device4.
-
In
einem Ausführungsbeispiel
weisen sowohl der aktive Pool 20 als auch der Bereitschafts-Pool 21 vorbestimmte
Größe auf.
In dem Beispiel aus 2A ist die Größe des aktiven
Pools zum Beispiel auf vier gesetzt. Dieser Größenwert kann auf verschiedene Art
und Weise in das Computersystem programmiert werden. Zum Beispiel
kann ein Register der CPU verwendet werden, um die maximale Größe des aktiven Pools 20 festzulegen.
Alternativ kann an einen nichtflüchtigen
Speicherplatz in dem BIOS (Basic Input/Output System) des Computers
ein Wert geschrieben werden, der die Größe des aktiven Pools festlegt.
In ähnlicher
Weise kann eine andere Register- oder Speicherposition eingesetzt
werden, um die Größe des Bereitschafts-Pools 21 festzulegen.
-
In
einem Programmierungsmodell werden zwei Registerfelder verwendet;
ein Feld, das die Größe des aktiven
Pools anzeigt, und ein anderes Feld, das die Pool-Kapazität insgesamt
anzeigt. Bei diesem Modell ist die Größe des Bereitschafts-Pools gleich der
Gesamtkapazität
des Pools abzüglich
der Größe des aktiven
Pools. In den Beispielen aus den Abbildungen der 2A bis 2H entspricht
die Gesamtkapazität
des Pools gleich acht und die Größe des aktiven
Pools ist gleich vier. Durch Subtraktion ist die Größe des Bereitschafts-Pools
ebenfalls gleich vier Bausteine. Hiermit wird festgestellt, dass die
Größe des Schlaf-Pools 22 nicht
gemäß dem hierin
beschriebenen Ausführungsbeispiel
festgelegt oder verfolgt wird. Vielmehr müssen sich die Bausteine, die
sich weder in dem aktiven Pool 20 noch in dem Bereitschafts-Pool 21 befinden,
standardmäßig in dem
Schlaf-Pool 22 befinden.
-
In
Fortführung
des Beispiels aus 2A handelt es sich bei dem Baustein
Device4 um den Baustein, auf den zuletzt
zugegriffen worden ist (MRA). Bei dem Baustein des Computersystems,
auf den am längsten
zurückliegend
zugegriffen worden ist (LRA), handelt es sich um den Baustein Device1. Wenn der Prozessor einen weiteren Zugriff
auf den Baustein Device4 ausgibt, so bleibt
der in der Abbildung aus 2A dargestellte
Stapel unverändert. Wenn
jedoch ein anderer Zugriff auf den Baustein2 erfolgt,
wird der Baustein Device2 zum oberen Ende des
Stapels verschoben und stellt den MRA des aktiven Pools dar. In
diesem Fall werden der Baustein Device4 und
der Baustein Device3 um eine Position in dem
Stapel nach unten verschoben, während
der Baustein Device1 der LRA-Baustein des
aktiven Pools bleibt.
-
Hiermit
wird festgestellt, dass der LRA-Baustein in dem aktiven Pool 20 einfach
durch die Größe des aktiven
Pools bestimmt wird. Andererseits befindet sich der MRA-Baustein
stets an der oberen Stapelposition. Hiermit wird festgestellt, dass
es sich bei dem unteren Ende des Stapels stets um den LRA-Baustein
handelt. Dies wird wiederum durch die Größe des aktiven Pools bestimmt.
In dem Beispiel aus 2A ist die Größe des aktiven
Pools gleich vier, so dass die Position #4 stets die LRA-Position ist.
Dies bedeutet, dass kein Baustein als LRA-Baustein für den aktiven
Pool bezeichnet ist, bis der aktive Pool voll ist. Hiermit wird
festgestellt, dass die Größe des aktiven Pools programmierbar ist, was bedeutet,
dass kein Zeiger benötigt
wird. Wenn die Größe des aktiven
Pools zum Beispiel auf 2 gesetzt wird, stellt der zweite Slot oder
die zweite Position in der Stapelstruktur den LRA-Baustein dar.
-
Der
Fachmann auf dem Gebiet erkennt, dass die Bestimmung der Größen des
aktiven Pools und des Bereitschafts-Pools für gewöhnlich auf der Basis von Systemaspekten
erfolgt. Zum Beispiel können verschiedene
Systeme so konfiguriert werden, dass größere oder kleinere Größen des
aktiven Pools erforderlich sind. Verschiedene Leistungs- oder thermische
Anforderungen können
die Größe des aktiven Pools
oder die Gesamtkapazität
des Pools vorgeben. Zum Beispiel weisen einige Systeme bessere Wärmeableitungseigenschaften
auf, wodurch es möglich ist,
dass mehr DRAM-Bausteine in dem aktiven Zustand verbleiben. Derartige
Systeme können
größere Größen des
aktiven Pools aufweisen als andere Systeme mit verhältnismäßig schlechten
Wärmeableitungsfähigkeiten.
Die Bestimmung der verschiedenen Pool-Größen basiert somit primär auf den
thermischen und Leistungshüllen
der jeweiligen Systemkonfiguration.
-
In
folgendem Bezug auf die Abbildung aus 2B ist
die Stapelstruktur aus 2 einem zusätzlichen
Zugriff auf den DRAM-Baustein Device5 folgend
dargestellt. Gemäß dem Betriebsprinzip
von Stapeln und Verschieben wird der Baustein Device5 an
der oberen Stapelposition platziert. Dadurch handelt es sich um
den MRA-Baustein in dem aktiven Pool. Jeder der verbleibenden Bausteine
wird als Folge der Einbringung von Baustein Device5 in
den aktiven Pool 20 um eine Position in dem Stapel nach
unten verschoben. Da der aktive Pool jedoch bereits vorher voll
gewesen ist, wird der Baustein Device1 aus
dem aktiven Pool 20 ausgestoßen und in dem Bereitschafts-Pool 21 platziert.
Dies ist der Fall, da der Baustein Device1 der
LRA-Baustein in dem aktiven Pool vor dem neuen Zugriff auf den Baustein Device5 gewesen ist. Sobald mit anderen Worten
die Kapazität
des aktiven Pools erreicht worden ist, werden LRA-Bausteine aus dem
aktiven Pool 20 entfernt und in den Bereitschafts-Pool 21 eingeführt. Diese DRAM-Bausteine
werden gemäß der Anordnung bzw.
Reihenfolge, in der sie den Bereitschafts-Pool 21 erreicht
haben, gestapelt und verschoben. Der Bereitschafts-Pool 21 arbeitet
mit der gleichen Stapelstruktur wie der aktive Pool 20,
mit der Ausnahme, dass der Bereitschafts-Pool 21 einen
Zeiger aufweist, der zu dem aktuellen LRA-Baustein verschiebt.
-
Das
Beispiel aus 2C stellt die Stapelstruktur
aus 2B nach zusätzlichen
Zugriffen auf die Bausteine Device6, Device7 und Device8 in
dieser Reihenfolge dar. Nach diesen drei zusätzlichen Zugriffen ist der
Baustein Device8 jetzt der MRA des aktiven
Pools, und der Baustein Device5 ist der
LRA des aktiven Pools. Die Bausteine Device1,
Device2, Device3 und
Device4 wurden in den Bereitschafts-Pool 21 verschoben.
Hiermit wird festgestellt, dass in dem Beispiel aus 2C der
aktuelle LRA-Zeiger auf den Baustein Device1 zeigt.
Somit veranschaulicht das Beispiel aus 2C, dass
sowohl der aktive Pool als auch der Bereitschafts-Pool voll belegt
sind. Wenn in diesem Fall erneut auf einen DRAM-Baustein zugegriffen wird,
der sich bereits in dem aktiven Pool befindet, wie etwa den Baustein Device6, so wird die Anordnung des aktiven Pools einfach
verschoben.
-
Dieser
Fall wird durch das Beispiel aus 2D veranschaulicht,
in welcher der Baustein Device6 gemäß der Abbildung
die MRA-Position belegt, während
der Baustein Device8 und der Baustein Device7 in dem aktiven Pool um eine Position nach unten
verschoben werden. Hiermit wird festgestellt, dass der Baustein
Device5 weiter der LRA-Baustein in dem aktiven
Pool bleibt. Die Anordnung des Bereitschafts-Pools bleibt in diesem
Fall unberührt.
Wenn jedoch auf einen vollständigen
neuen DRAM-Baustein zugegriffen wird und dieser in dem aktiven Pool platziert
wird, wie etwa der Baustein Device9, so
würde der
Baustein Device5 in den Bereitschafts-Pool ausgestoßen. Da
der Bereitschafts-Pool jedoch voll ist, bedeutet dies jedoch, dass
der Baustein in dem Bereitschafts-Pool auf den am längsten zurückliegend
zugegriffen worden ist, in den Schlaf-Pool ausgestoßen wird. In dem gerade beschriebenen
Beispiel würde
die Stapelstruktur des Bereitschafts-Pools wie folgt angeordnet
sein: Device5, Device4,
Device3 und Device2.
-
Die
bislang dargestellten Beispiele haben gezeigt, wie die aktiven und
Bereitschafts-Pools gefüllt
werden. Sobald auf einen Baustein zugegriffen worden ist, wird er
gemäß der Beschreibung
entweder aus dem Schlaf- oder dem Bereitschafts-Pool entfernt und in dem aktiven Pool
platziert. Wenn der aktive Pool voll ist und ein Zugriff auf einen
Baustein erfolgt, der sich noch nicht bereits in dem aktiven Pool
befindet, so wird der Baustein, auf den am längsten zurückliegend zugegriffen worden
ist, aus dem aktiven Pool in den Bereitschafts-Pool ausgestoßen.
-
Eine
normale Logikschaltkreisanordnung, welche der Stapelstruktur zugeordnet
ist, verfolgt sowohl den aktiven Pool als auch den Bereitschafts-Pool.
Für jeden
DRAM-Baustein, auf dem neu zugegriffen wird, wird dessen ID mit
den bereits in dem aktiven Pool und in dem Bereitschafts-Pool vorhandenen
Bausteinen verglichen. Der Grund dafür, dass dies vorgenommen wird,
ist es, dass ein neu zugegriffener Baustein bereits in dem aktiven
oder dem Bereitschafts-Pool existieren könnte. Wenn sich der Baustein
bereits in dem aktiven Pool befindet, wird die Stapelanordnung in
dem aktiven Pool einfach verschoben; die Stapelanordnung des Bereitschafts-Pools ändert sich
nicht. Wenn der neu zugegriffene Baustein hingegen bereits in dem
Bereitschafts-Pool vorhanden ist, wird er aus dem Bereitschafts-Pool
entfernt und in dem aktiven Pool platziert. Der LRA-Baustein in
dem aktiven Pool wird danach in den Bereitschafts-Pool ausgestoßen.
-
Bausteine
werden auf zweierlei Art und Weise aus dem Bereitschafts-Pool entfernt
und in dem Schlaf-Pool platziert. Wenn sowohl der aktive Pool als
auch der Bereitschafts-Pool voll sind und auf einen vollständig neuen
Baustein (einen Baustein, der sich noch nicht in dem aktiven Pool
oder dem Bereitschafts-Pool befindet) zugegriffen wird, wird erstens der
Baustein an LRA-Position des Bereitschafts-Pools in den Schlaf-Modus
ausgestoßen.
-
DRAM-Bausteine
können
auch auf der Basis des Auftretens eines Timeout-Zustands aus dem
Bereitschafts-Pool in den Schlaf-Pool ausgestoßen werden. Wie dies bereits
vorstehend im Text beschrieben worden ist, bewegt sich die LRA-Position
in dem Bereitschafts-Pool abhängig
von der Art der Ereignisse, die in dem Pool ablaufen in dem Stapel
nach oben und nach unten. Ein Zeiger wird dazu verwendet, einen
aktuellen LRA-Baustein in dem Bereitschaftsstapel auf der Basis
der Reihenfolge zu identifizieren, in der die Platzierung in dem
Bereitschafts-Pool
erfolgt ist. Nachdem der Zeiger einen Baustein als den aktuellen
LRA-Baustein in dem Bereitschafts-Pool identifiziert hat, beginnt
der Timer zu zählen.
Nach einem vorbestimmten Zeitraum der Inaktivität in dem Bereitschafts-Pool
wird der LRA-Baustein in dem Bereitschafts-Pool in den Schlaf-Pool
ausgestoßen.
Wenn dies erfolgt, bewegt sich der Zeiger in dem Stapel nach oben
und beginnt von neuem zu zählen.
-
Dieser
Ablauf ist in der Abbildung aus 2E dargestellt,
welche den Inhalt des Stapels aus 2D nach
einem Timeout-Ereignis
zeigt. In diesem Szenario wird der Baustein Device1 aus
dem Bereitschafts-Pool ausgestoßen
und in den Schlaf-Pool eingeführt.
Ferner bewegt sich der Zeiger nach oben, um den Baustein Device2 als den aktuellen LRA-Baustein zu identifizieren.
Bei dieser Implementierung bewegt sich der Zeiger kontinuierlich bei
jedem Timeout-Ereignis in dem Stapel nach oben. Der Zeiger ist ferner
Teil der Decodierungsformel, welche ein ungültiges Bit für DRAM-Bausteine erzeugt,
die aus dem Bereitschafts-Pool entfernt und in dem Schlaf-Pool platziert
werden. Der Zeiger bewegt sich nur entlang des Stapels nach unten,
wenn Bausteine aus dem aktiven Pool in dem Bereitschafts-Pool platziert
werden. Jedes Mal, wenn dies eintritt, wird der Timer zurückgesetzt.
Sobald der Zeiger seine maximale LRA-Position erreicht (abhängig von
der Größe des Bereitschafts-Pools),
bleibt er dort, bis ein Timeout-Ereignis
eintritt.
-
Hiermit
wird festgestellt, dass der Zeiger an einer bestimmten Position
verbleibt, die sich von der maximalen LRA-Position unterscheidet,
wenn ein Baustein in dem Bereitschafts-Pool in den aktiven Pool
erhoben wird. Dieses Ereignis setzt den Timer zurück. In einem
Ausführungsbeispiel
basiert das Timeout-Ereignis
auf einer Anzahl von Taktzyklen des zentralen Prozessors des Computersystems. Natürlich handelt
es sich bei der Länge
des Zeitraums des Timeout-Zustands, der maximalen LRA-Position,
den Größen des
aktiven Pools und des Bereitschafts-Pools, etc. allesamt um Details,
die von System zu System variieren können.
-
Die
Abbildung aus 2F veranschaulicht das Ausstoßen von
DRAM-Bausteinen aus dem Bereitschafts-Pool auf der Basis einer Mehrzahl
wiederholter Timeout-Ereignisse. Die Abbildung aus 2F stellt
die Stapelstruktur aus 2E nach zwei zusätzlichen
Timeout-Ereignissen dar, während
denen keine zusätzliche
Aktivität
in Bezug auf die Bausteine in dem Bereitschafts-Pool auftritt. Das
Beispiel aus 2F veranschaulicht somit, wie
der Zeiger den Stapel in dem Bereitschafts-Pool nach oben durchläuft, wobei
die Bezeichnung des LRA-Bausteins in dem Bereitschafts-Pool jedes
Mal um eine Position nach oben bewegt wird, wenn ein Baustein für ungültig erklärt und in
den Schlaf-Pool ausgestoßen
wird.
-
Hiermit
wird festgestellt, dass der Timer in dem vorliegenden beschriebenen
Ausführungsbeispiel
nur verwendet wird, um DRAM-Bausteine
aus dem Bereitschafts-Pool in den Schlaf-Pool auszustoßen, und
wobei er keinen Einfluss auf Bausteine in dem aktiven Pool aufweist.
In anderen Ausführungsbeispielen
kann der Timer dazu verwendet werden, den Zustand von Bausteinen
in dem Bereitschafts-Pool und in dem aktiven Pool zu beeinflussen.
Sobald der Bereitschafts-Pool zum Beispiel geleert ist, kann bewirkt
werden, dass der Zeiger sich weiter in dem Stapel nach oben in den
aktiven Pool bewegt und mit dem Ausstoßen von Bausteinen aus dem
aktiven Pool in den Bereitschafts-Pool auf der Basis des Auftretens
eines Timeout-Zustands beginnt. Nach der Platzierung in dem Bereitschafts-Pool
kann der Timer ferner auf die vorstehend beschriebene Art und Weise
verwendet werden, um Bausteine in den Schlaf-Pool auszustoßen.
-
In
einem weiteren alternativen Ausführungsbeispiel
läuft der
Timer in dem aktiven Pool aufwärts, wobei
die Bausteine letztlich direkt auf der Basis von Inaktivität oder Stillstand
aus dem aktiven Pool in den Schlaf-Pool gedrückt werden.
-
Der
Fachmann auf dem Gebiet erkennt, dass verschiedene Ausführungsbeispiele
letztlich einfach eine Frage der Kosten für die Gatter und der relativen Komplexität der Schaltungen
sind. Der Fachmann auf dem Gebiet erkennt ferner, dass die allgemein bekannte
Technik der Registerumbenennung eingesetzt werden kann, um die vorliegende
Erfindung zu implementieren. Diese Technik ermöglicht die einfache Umbenennung
der Register, welche Bausteine in dem aktiven Pool bezeichnen, in
Register des Bereitschafts-Pools; wobei ab diesem Punkt ein Timeout-Mechanismus
eingesetzt werden kann, um Bausteine aus dem Bereitschafts-Pool
in den Schlaf-Pool zu bewegen.
-
Die
Abbildung aus 2G veranschaulicht das Szenario
aus der Abbildung aus 2F nach zwei neuen Zugriffen
auf die Bausteine Device9 und Device10 in dieser Reihenfolge. Nach den neuen
Zugriffen durch den Prozessor ist der Baustein Device10 der
MRA-Baustein in dem aktiven Pool, und der Baustein Device8 ist der LRA-Baustein. Da der aktive Pool
voll gewesen ist, bewirkt jeder der neuen Zugriffe das Ausstoßen eines
DRAM-Bausteins aus
dem aktiven Pool in den Bereitschafts-Pool. In der in der Abbildung
aus 2G dargestellten Anordnung des Bereitschafts-Pools
belegen die Bausteine Device7 und Device5 die oberen beiden Positionen in dem Bereitschafts-Pool.
-
Wenn,
wie dies bereits vorstehend im Text beschrieben worden ist, ein
neuer Baustein in den Bereitschafts-Pool eintritt, so wird der Timer-Mechanismus
zurückgesetzt.
Dies bedeutet, dass der Zeiger in dem Bereitschafts-Pool weiter
den Baustein Device4 als den LRA-Baustein
identifiziert. Dieser als aktueller LRA-Baustein in dem Bereitschafts-Pool identifizierte
Baustein bleibt solange der LRA-Baustein, bis eine von drei Situationen
eintritt: (a) entweder tritt aufgrund von Inaktivität ein Timeout-Zustand ein
und der aktuelle LRA-Baustein wird in den Ruhe-Pool ausgestoßen; (2)
der Bereitschafts-Pool wird bis auf seine Kapazitätsgrenze
gefüllt
und es erfolgt ein neuer Zugriff auf einen Baustein, der sich weder in
dem aktiven Pool noch in dem Bereitschafts-Pool befindet; oder (3) es erfolgt ein
Zugriff auf den Baustein, der den aktuellen LRA des Bereitschafts-Pools darstellt
sowie eine Erhebung in den aktiven Pool.
-
Ein
letztes Beispiel, dass die Theorie der Funktionsweise der vorliegenden
Erfindung veranschaulicht, ist in der Abbildung aus 2H dargestellt.
Die Abbildung aus 2H stellt das Szenario aus 2G nach
mehreren neuen Ereignissen dar. In der Abbildung aus 2H hat
der Prozessor auf zwei neue DRAM-Bausteine zugegriffen, die Bausteine
Device11 und Device12,
wobei Device12 der Baustein in dem aktiven
Pool ist, auf den zuletzt zugegriffen worden ist. Da der aktive
Pool bereits vorher voll gewesen ist, werden die Bausteine Device8 und Device6 in
dem Stapel nach unten in den Bereitschafts-Pool verschoben. Da der
zusätzliche
Zugriff die Gesamtkapazität
der Pools überschreitet
(des aktiven Pools und des Bereitschafts-Pools), wird der Baustein Device4 aus dem Bereitschafts-Pool geschoben und
in den Ruhe-Pool ausgestoßen.
-
Nach
dem Ausstoßen
des Bausteins Device4 in den Schlaf-Pool
bleibt der Bereitschafts-Pool über einen
Zeitraum inaktiv, der zwei Timeout-Ereignisse überschreitet. Diese beiden
Timeout-Ereignisse
machen die Bausteine Device5 und Device7 ungültig,
wobei sie zurück
in den Schlaf-Pool ausgestoßen
werden. Das Beispiel zeigt, wie der Zeiger den Stapel entlang nach
oben verlaufen ist und aktuell auf den Baustein Device8 als
LRA-Baustein in
dem Bereitschafts-Pool zeigt.
-
Die
Abbildung aus 3 zeigt ein detailliertes Schaltungsdiagramm,
das die allgemeine Pool-Struktur 30 der vorliegenden Erfindung
veranschaulicht. Der Pool 30 umfasst Multiplexer 31,
die Baustein-IDs für
die Slots 1-N speichern. Jeder Slot stellt eine Position in der
Stapelstruktur dar. Jeder Multiplexer 31 isst mit einem
Daten-Signalspeicher bzw. Daten-Latch 33 gekoppelt, der
einen Ausgang aufweist, der zurück
zu einem der Eingänge
des Multiplexers 31 an der aktuellen Slot-Position gekoppelt ist.
Der Ausgang des Daten-Signalspeichers 33 ist ferner
mit einem der Eingänge
des Multiplexers 31 an der nächsten Slot-Position gekoppelt.
Ein gültiges Ladesignal
wird zur Auswahl zwischen zwei Eingängen bzw. Eingaben an die Multiplexer 31 Slot
für Slot verwendet.
Ein normales Taktsignal wird zur Verriegelung von Daten in jedem
der Datensignalspeicher 33 verwendet. Jedes der gültigen Ladesignale,
das mit ausgesuchten Eingängen
der Multiplexer 33 gekoppelt ist, kann durch eine normale
Zustandsmaschine erzeugt werden, welche die aktiven und Bereitschafts-Pools
verfolgt bzw. überwacht
und die in diesen Pools enthaltenen Baustein-IDs mit neu zugegriffenen
Bausteinen vergleicht.
-
Die
Abbildung aus 4 zeigt ein schematisches Schaltungsdiagramm
einer Implementierung des LRA-Bausteinzeigers, der in dem Bereitschafts-Pool
gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung verwendet wird. Ein Multiplexer 35 weist
ein ausgesuchtes Eingangssignal 36 auf, das mit der Zustandsmaschine
(nicht abgebildet) gekoppelt ist, die dazu verwendet wird, die aktiven und
Bereitschafts-Pools
zu verfolgen. Die verschiedenen Eingänge in den Multiplexer 35 stellen
die Dateninformationen dar, die an den verschiedenen Stapelpositionen
oder Slots verriegelt werden, welche in der Pool-Schaltkreisanordnung 30 aus 3 dargestellt
sind. Der aktuelle LRA-Baustein ist durch den Ausgang des Multiplexers 35 auf
der Basis des ausgesuchten Eingangssignals 36 dargestellt.