Processing

Please wait...

Settings

Settings

Goto Application

1. DE112007001215 - Vorhersage der Leistungsnutzung von Rechenplattformspeicher

Note: Text based on automatic Optical Character Recognition processes. Please use the PDF version for legal matters

[ DE ]
Beschreibung  

HINTERGRUND 

[0001]  Stromverbrauch und Kühlungsbedingungen sind typische Herausforderungen, denen in einer Rechenplattformbetriebsumgebung begegnet wird. Diese Herausforderungen steigern sich in einem typischen Telekommunikationsnetzwerk oder Datencenter, wo eine Vielzahl von Rechenplattformen (bspw. in einem Rack, Schrank, etc.) eingesetzt werden. Es wird konstanter Druck auf Serviceprovider und Datencenteradministratoren ausgeübt, um die Gesamtkosten (total cost of ownership) für diese Anwendungen zu reduzieren und gleichwohl die Leistung zu steigern. Dies kann zu einer höheren Dichte von Bearbeitungselementen auf einer Rechenplattform und/oder auf Rackebene führen, um Leistung zu steigern. Das Minimieren von Leistungsverbrauch ist ein wichtiges Ziel für Serviceprovider und Datencenteradministratoren, um die Kosten von Energierechnungen und Gesamtkosten gering zu halten.

[0002]  In US 2003/0204758 A1 ist das Messen einer eine Systemlast offenbart, um den Nutzungsgrad bestimmter Systemkomponenten zu bestimmen. Der Betrieb des Systems wird über den Prozessortakt angepasst.

[0003]  Die der vorliegenden Erfindung zugrundeliegenden Aufgabe besteht darin, Strom zu sparen.

[0004]  Fig. 1 ist eine Darstellung von Elementen einer beispielhaften Rechenplattform;

[0005]  Fig. 2 zeigt ein Blockdiagramm einer beispielhaften Speicherleistungsnutzungs-(Memory Power Utilization(MPU))-Steuerungsarchitektur;

[0006]  Fig. 3 ist eine Darstellung von Elementen des MPU-Managers, um ein beispielhaftes statistisches Vorhersagemodul zu implementieren;

[0007]  Fig. 4 zeigt eine Tabelle, um beispielhafte Betriebsparameter darzustellen, die überwacht werden sollen;

[0008]  Fig. 5 ist eine Darstellung von beispielhaften Speicherleistungszuständen; und

[0009]  Fig. 6 ist ein Flussdiagramm eines Beispielverfahrens zum Vorhersagen von Speicherleistungsnutzung und Übergang eines Speichermoduls in einen anderen Leistungszustand anhand der Vorhersage.

AUSFÜHRLICHE BESCHREIBUNG 

[0010]  Wie zum Hintergrund bemerkt, ist das Minimieren von Leistungsverbrauch ein wichtiges Ziel, um die Gesamtkosten gering zu halten. Während es einen besonderen Focus auf dem Reduzieren von Leistung gegeben hat, die durch Bearbeitungselemente (bspw. zentrale Recheneinheiten (CPUs)) verbraucht wird, werden gegenwärtige und künftige Speichertechnologien zu signifikanten Quellen des Leistungsverbrauchs. Dies stellt eine Herausforderung an den Entwurf einer Hochleistungsrechenplattform und das Geringhalten der Gesamtkosten dar.

[0011]  In einem Beispiel werden ein oder mehrere statistische Vorhersagemodelle implementiert, um Speicherleistungsnutzung vorherzusagen und Leistungsverbrauch für eine Rechenplattform zu reduzieren. Diese Implementation schließt das Bestimmen eines Konfigurationsparameters für die Rechenplattform, Überwachen eines Betriebsparameters für die Rechenplattform und Vorhersagen von Speicherleistungsnutzung für die Rechenplattform ein. Die Vorhersage muss auf dem bestimmten Konfigurationsparameter und dem überwachten Betriebsparameter basieren. Ein oder mehrere Speichermodule, die sich auf der Rechenplattform befinden, werden in einen aus einer Vielzahl von Leistungszuständen überführt, die wenigstens teilweise auf der Speicherleistungsnutzung basieren, die mittels der Implementation des einen oder der mehreren statistischen Vorhersagemodelle vorhergesagt wird.

[0012]  Fig. 1 ist eine Darstellung von Elementen einer Beispielrechenplattform 100. In einem Beispiel, dargestellt in Fig. 1, schließt die Rechenplattform 100 Speicherleistungsnutzungs(MPU)-Manager 110, Netzwerkschnittstelle 120, Bearbeitungselemente 130, Speichercontroller 140, Speicherleistungsebenen 150 und Speichermodule 160 ein. Obwohl nicht in Fig. 1 gezeigt, kann Rechenplattform 100 auch andere Hardware, Software, Firmware oder eine Kombination dieser Elemente einschließen und Teil einer Recheneinrichtung sein. Diese Recheneinrichtung kann ein einzelner Computer (single blade computer) in einem Gehäuse und/oder Rack, ein Server, ein Desktopcomputer, ein Laptopcomputer, ein Notebookcomputer, eine digitale Breitbandtelefonieeinrichtung, eine digitale Heimnetzwerkeinrichtung (bspw. Kabel/Satellit/Settop-Box, etc.), ein Personal Digital Assistant (PDA), ein System-on-Chip (SOC) und dergleichen sein.

[0013]  In einem Beispiel bestimmt, wie weiter unten beschrieben, MPU-Manager 110 Konfigurationsparameter für Rechenplattform 100 und überwacht Betriebsparameter, um Speicherleistungsnutzung vorherzusagen. Elemente auf Rechenplattform 100 (bspw. MPU-Manager 110, Speichercontroller 140) können Speicherleistungsebenen 150 veranlassen, einen oder mehrere Speichermodule von einem Leistungszustand in einen anderen Leistungszustand zu überführen (s. Fig. 5).

[0014]  In einem Beispiel ist MPU-Manager 110 an andere Elemente der Rechenplattform 100 über einen oder mehrere Kommunikationsverbindungen gekoppelt. Diese Kommunikationsverbindungen sind bspw. in Fig. 1 als Kommunikationsverbindungen 112, 114, 116 und 118 gezeigt. Wie weiter unten beschrieben, schließt MPU-Manager 110 bspw. eine passende Schnittstelle zu diesen anderen Elementen ein, um Konfigurationsparameter zu bestimmen, Betriebsparameter zu überwachen und Speichermodule zu veranlassen, in einen anderen Leistungszustand zu wechseln.

[0015]  In einem Beispiel schließt Netzwerkschnittstelle 120 die Schnittstelle ein, über welche Rechenplattform 100 an ein Netzwerk mittels Netzwerkverbindung 101, bspw. ein verdrahtetes oder drahtloses lokales Netzwerk (LAN/WLAN), ein weiträumiges Netzwerk (Wide Area Network, WAN/WWAN), ein Großstadtnetzwerk (metropolitan area network, MAN), ein personengebundenes Netzwerk (personal area network, PAN) und ein zellulares oder ein drahtloses Breitband-Telefonie-Netzwerk gekoppelt ist. Netzwerkschnittstelle 120 schließt bspw. Hardware, Software oder Firmware ein, um Daten an dieses Netzwerk zu übertragen und zu empfangen. Dies kann eine oder mehrere Netzwerkschnittstellenkarten, Gewebeschnittstellenkarten (fabric interface cards) oder andere Elemente zum Empfangen und Übermitteln von Daten über Netzwerkverbindung 101 umfassen. In einem Beispiel kann Kommunikationsverbindung 122 von Elementen der Netzwerkschnittstelle 120 benutzt werden, um Speicherlese-/Schreib-Anforderungen an den Speicher-Controller 140 herzustellen. Diese Anforderungen können Daten an/von Speichermodulen 160 senden/anfordern. Obwohl nicht in Fig. 1 gezeigt, kann MPU-Manger 110 bspw. auch an Kommunikationsverbindung 101 koppeln und Netzwerkbandbreite direkt überwachen.

[0016]  In einem Beispiel schließen Bearbeitungselemente 130 die Software, Hardware und/oder Firmware ein, um ein oder mehrere Bearbeitungsvorgänge auf Rechenplattform 100 zu unterstützen. Dies kann Software, wie etwa Betriebssysteme und/oder Anwendungen, Hardware, wie Mikroprozessoren, Netzwerkprozessoren, Serviceprozessoren, Mikrocontroller, Field-programmable Gate-Arrays (FPGAs), anwendungsspezifische integrierte Schaltkreise (ASICs) und Firmware einschließen, um ausführbaren Code zum Initiieren grundlegender Eingabe-/Ausgabe-Systeme (BIOS) und/oder Elemente der Rechenplattform 100 für Virtualisierungsvorgänge zu initiieren. In einem Beispiel kann Kommunikationsverbindung 132 von Bearbeitungselementen 130 benutzt werden, um Speicherlese-/Schreib-Anforderungen an Speicher-Controller 140 zu richten.

[0017]  In einem Beispiel handhabt/erfüllt Speicher-Controller 140 Anforderungen zum Speichern (Schreiben) und Anfordern (Lesen) von Daten in ein oder mehrere Speichermodule der Speichermodule 160. Beispielsweise können diese Anforderungen über Kommunikationsverbindungen 122 oder 132 empfangen werden. In einer Implementation kann Speicher-Controller 140 Speicherleistungsebenen 150 benutzen, um diese ein oder mehreren Speichermodule in verschiedene Leistungszustände anhand der vorhergesagten Speicherleistungsnutzung zu überführen, die bspw. von MPU-Manager 110 bestimmt wird.

[0018]  In einem Beispiel kann Speicher-Controller 140 in Bearbeitungselement 130 integriert sein. Bspw. kann Speicher-Controller 140 als integrierter Speichercontroller für einen Mikroprozessor dienen. In diesem Beispiel kann MPU-Manager 110 mit Speicher-Controller 140 durch eine Schnittstelle, die an Bearbeitungselemente 130 (bspw. über Kommunikationsverbindung 112) gekoppelt ist, oder durch eine Schnittstelle, die direkt an einen integrierten Speichercontroller 140 (bspw. über Kommunikationslink 132) gekoppelt ist, kommunizieren.

[0019]  In einer Implementation stellen Speicherleistungsebenen 150 Leistung für Speichermodule 160 über Leistungsversorgungen 152 zur Verfügung. Leistungsversorgungen 152 werden, wie bspw. in Fig. 1 gezeigt, an jedes Speichermodul der Speichermodule 160 geroutet. Leistungsversorgungen 152 können Leistung in verschiedenen Spannungs(v)-Ebenen liefern, bspw. 0,9v, 1,5v, 1,8v, 3,3v, 5v, etc.. Diese Spannungsebenen werden bspw. reguliert, um Leistung innerhalb eines Bereiches von Spannungen zur Verfügung zu stellen.

[0020]  In einem Beispiel weisen Speichermodule 160 eine Vielzahl von Speichermodulen auf. Diese Speichermodule sind in Fig. 1 als 160-1 bis 160-n + 1 gezeigt, wobei n eine beliebige positive natürliche Zahl darstellt. In einer Implementation koppeln Paare dieser Speichermodule mittels wenigstens eines Speicherkanals (bspw. einschließlich Datenübermittlungs- und Daten-Empfangs-Kommunikationslinks) an Speichercontroller 140. Ein Beispiel dieser Kopplung ist in Fig. 1 gezeigt und umfasst Speicherkanäle 162, 164 und 166. Diese Offenbarung soll sich nicht auf lediglich ein Paar von Modulen je Kanal beschränken, sondern kann jede Anzahl von Speichermodulen je Kanal aufweisen und kann außerdem jede Anzahl von Speicherkanälen aufweisen. An oder von jedem Paar von Speichermodulen zu schreibende oder lesende Daten werden durch diese Speicherkanäle bspw. über serielle Punkt-zu-Punkt-Kommunikationsverbindungen geroutet. Wie weiter unten beschrieben, können diese Speichermodule aus verschiedenen Typen von Speicher bestehen, die anhand von vorhergesagter Speicherleistungsnutzung für Rechenplattform 100 in verschiedene Leistungszustände oder -ebenen gebracht werden können.

[0021]  Fig. 2 zeigt ein Blockdiagramm einer beispielhaften MPU-Manager-110-Architektur. In Fig. 2 weist die Beispielarchitektur des MPU-Managers 110 Leistungsoptimierlogik 210, Steuerlogik 220, Speicher 230, Eingabe-/Ausgabe-(I/O)-Schnittstellen 240 und optional eine oder mehrere Anwendungen 250 auf.

[0022]  In einem Beispiel sind die in dem Blockdiagramm von Fig. 2 gezeigten Elemente diejenigen Elemente, die den MPU-Manager 110, wie in dieser Offenbarung beschrieben, unterstützen oder in Betrieb setzen, auch wenn ein bestimmter MPU-Manager einige, alle oder mehr Elemente als die in Fig. 2 gezeigten aufweisen kann. Bspw. können Leistungsoptimierlogik 210 und Steuerlogik 220 jeweils oder gemeinsam eine breite Auswahl von Logikeinrichtungen oder ausführbarem Inhalt darstellen, um die Merkmale (features) des MPU-Managers 110 zu implementieren. Diese Logikeinrichtungen können einen Mikroprozessor, Netzwerkprozessor, Serviceprozessor, Mikrocontroller, FPGA, ASIC, alleinstehenden (sequestered) Thread oder Kern eines Multikern/Multi-threaded Mikroprozessors, einen speziellen Betriebsmodus eines Prozessors (bspw. Systemverwaltungsmodus) oder einer Kombination daraus aufweisen.

[0023]  In Fig. 2 weist Leistungsoptimierlogik 210 Konfigurationseinrichtung 212, Überwachungseinrichtung 214, Vorhersageeinrichtung 216 und Überleitungseinrichtung 218 auf. In einer Implementation benutzt die Leistungsoptimierlogik 210 diese Einrichtungen, um verschiedene Vorgänge auszuführen. Diese Vorgänge umfassen bspw. das Bestimmen eines Konfigurationsparameters, Überwachen eines Betriebsparameters und Vorhersagen von Speicherleistungsnutzung für Rechenplattform 100 anhand des bestimmten Konfigurationsparameters und des überwachten Betriebsparameters. Diese Vorgänge können auch einschließen, ein oder mehrere Speichermodule wenigstens teilweise anhand der vorhergesagten Speicherleistungsnutzung für Rechenplattform 100 zu veranlassen, in andere Leistungszustände überzugehen.

[0024]  Steuerlogik 220 kann den Gesamtbetrieb von MPU-Manager 110 kontrollieren und, wie oben erwähnt, jede aus einer großen Auswahl von Logikeinrichtungen oder auch ausführbaren Inhalt darstellen, um die Kontrolle von MPU-Manager 110 zu implementieren. In anderen Beispielen sind die Merkmale und Funktionalität von Kontrolllogik 220 innerhalb Leistungsoptimierlogik 210 implementiert.

[0025]  Gemäß einem Beispiel speichert Speicher 230 ausführbaren Inhalt. Der ausführbare Inhalt kann von Steuerlogik 220 und oder Leistungsoptimierlogik 210 benutzt werden, um Einrichtungen oder Elemente von MPU-Manager 110 zu implementieren oder aktivieren. Speicher 230 kann außerdem Konfigurations- und Betriebsparameter vorübergehend unterhalten, die von Einrichtungen der Leistungsoptimierlogik 220 aufgenommen wurden, um Speicherleistungsnutzung für Rechenplattform 100 vorherzusagen.

[0026]  I/O-Schnittstellen 240 können eine Schnittstelle über ein Kommunikationsmedium oder eine Verbindung zwischen MPU-Manager 110 und Elementen, die auf Rechenplattform 100 liegen, zur Verfügung stellen. Wie oben zu Fig. 1 angemerkt, kann MPU-Manager 110 an diese Elemente über Kommunikationsverbindungen 112, 114, 116 und 118 koppeln. I/O-Schnittstellen 240 weisen bspw. Schnittstellen auf, die gemäß verschiedener Kommunikationsprotokolle arbeiten, um über diese Kommunikationsverbindungen zu kommunizieren. Beispielsweise arbeiten I/O-Schnittstellen 240 gemäß einem Kommunikationsprotokoll, das in einer Spezifikation wie etwa der Systemverwaltungsbus(SM-Bus)-Spezifikation, Fassung 2.0, veröffentlicht im August 2000, und/oder späteren Fassungen beschrieben ist. Wie weiter unten ausführlicher beschrieben, können Elemente der Rechenplattform 100 Informationen in Speicherregistern oder Speichertabellen zur Verfügung stellen, auf die in dieser Offenbarung als „Haken” (Hooks) Bezug genommen wird. Einrichtungen von Leistungsoptimierlogik 210 können I/O-Schnittstelle 240 benutzen, um auf diese Hooks über Kommunikationslinks 112, 114, 116 und 118 zuzugreifen.

[0027]  I/O-Schnittstellen 240 können auch eine Schnittstelle zu Elementen zur Verfügung stellen, die sich von der Rechenplattform 100 entfernt befinden. Als Ergebnis können I/O-Schnittstellen 240 Leistungsoptimierlogik 210 oder Kontrolllogik 220 in Betrieb setzen, um eine Reihe von Befehlen von diesen Elementen zu erhalten. Die Reihe von Befehlen kann Leistungsoptimierlogik 210 und/oder Kontrolllogik 220 in Betrieb setzen, um ein oder mehrere Einrichtungen des MPU-Managers 110 zu implementieren.

[0028]  In einem Beispiel weist MPU-Manager 110 eine oder mehrere Anwendungen 250 auf, um interne Befehle für Kontrolllogik 220 und/oder Leistungsoptimierlogik 210 zur Verfügung zu stellen.

[0029]  Fig. 3 zeigt eine Darstellung von Elementen des MPU-Managers 110 zum Implementieren eines beispielhaften statistischen Vorhersagemoduls 300. In einem Beispiel sind die Elemente des MPU-Managers 110 Einrichtungen von Leistungsoptimierlogik 210. Wie in Fig. 3 gezeigt, schließen diese Einrichtungen Konfigurationseinrichtung 212, Überwachungseinrichtung 214 und Vorhersageeinrichtung 216 ein.

[0030]  In einer Implementation sind Konfigurationseinrichtung 212, Überwachungseinrichtung 214 und Vorhersageeinrichtung 216 Teil eines statistischen Vorhersage- oder Heuristikmoduls, das von Leistungsoptimierlogik 210 aktiviert wird. In einem Beispiel nimmt Konfigurationseinrichtung 212 Konfigurationsparameter auf, die mit Elementen, die auf Rechenplattform 100 liegen, verbunden sind. Diese Konfigurationsparameter schließen bspw. die Ressourcen ein, die auf Rechenplattform 100 (bspw. Bearbeitungselemente, Netzwerkschnittstellen, Speicher, Software, Firmware etc.) und der Konfiguration solcher Ressourcen vorliegen. Beispielsweise werden Speichermodule 160 in verschiedenen Konfigurationen benutzt, die Speicherleistungsnutzung in verschiedener Weise beeinflussen kann. Diese Benutzungskonfigurationen werden bspw. von Speichercontroller 140 aufgenommen und schließen, ohne sich darauf zu beschränken, Speicher-Interleaving, Speicherspiegelung, Speichersparen und Rangordnungsallokation ein. Konfigurationsparameter können außerdem Informationen für Überwachungeinrichtung 214 aufweisen, um zu bestimmen, was für Betriebsparameter überwacht werden sollen, und wie diese erhalten werden.

[0031]  In einem Beispiel erhält Konfigurationseinrichtung 212 Informationen, die Überwachungseinrichtung 214 benutzt, um Betriebsparameter zu erhalten, die sich in Hooks befinden, die mit Elementen auf Rechenplattform 100 verbunden oder durch diese unterhalten werden. In einem Beispiel werden diese Hooks in Speichertabellen oder Speicherregistern unterhalten und sind in Fig. 3 jeweils als Hooks 320, 330, 340 und 360 für Netzwerkschnittstelle 120, Bearbeitungselemente 130, Speichercontroller 140 und Speicherleistungsebenen 150 gezeigt.

[0032]  Wie in Fig. 4 gezeigt, enthält Tabelle 400 Beispiele von Kategorien und Betriebsparametern, die mit Hooks 320, 330, 340 und 350 verbunden sind. In einem Beispiel wird wenigstens ein Teil des Inhalts von Tabelle 400 von Konfigurationseinrichtung 212 aufgenommen (bspw. während des Anlaufens von Rechenplattform 100) und der Überwachungseinrichtung 214 zugänglich gemacht (bspw. vorübergehend in Speicher 230 gespeichert). Überwachungseinrichtung 214 kann dann Betriebsparameter für Rechenplattform 100 überwachen, indem es auf Speicherregister oder Speichertabellen zugreift, die mit den Hooks (bspw. über Kommunikationsverbindungen 112, 114, 116 oder 118) verbunden sind. In einem Beispiel stellen Konfigurationseinrichtung 212 und Überwachungseinrichtung 214 Konfigurations- und Betriebsparameter für Vorhersageeinrichtung 216 zur Verfügung. Vorhersageeinrichtung 216 implementiert bspw. verschiedene statistische Vorhersagemodelle einschließlich der Benutzung von statistischen Parameter in Vorhersagealgorithmen, die auf den Konfigurations- und Betriebsparametern der Rechenplattform 100 basieren, um Speicherleistungsnutzung für Rechenplattform 100 vorherzusagen.

[0033]  In einem Beispiel kann Überleitungseinrichtung 218 Vorhersagen der Speicherleistungsnutzung für Rechenplattform 100 von Vorhersagemerkmal 216 empfangen. Überleitungsmerkmal 218 kann bspw. Überleitung von einem oder mehreren Speichermodulen der Speichermodule 160 in andere Leistungszustände anhand der Vorhersagen, die von Vorhersageeinrichtung 216 empfangen wurden, auslösen oder veranlassen.

[0034]  In einem Beispiel weist Hook 320, wie in Fig. 4 gezeigt, eine Netzwerkverkehrskategorie auf. Hook 320 weist bspw. Informationen auf, die mit der Menge und/oder Rate von Daten verbunden sind, die empfangen und durch Netzwerkschnittstelle 120 weitergeleitet werden. Dies kann auch Netzwerkverkehrsstatistiken (bspw. Benutzungsmuster, Durchsatz, Verstopfung, Typen von Datenverkehr etc.) für Daten (bspw. Paket-basierte) umfassen, die von einem Netzwerk empfangen und dorthin weitergeleitet werden, das durch Netzwerkschnittstelle 120 mit Rechenplattform 100 verbunden ist.

[0035]  Hook 330 enthält bspw. verschiedene Kategorien von Informationen, die mit Bearbeitungselementnutzung, Leistung, Leistungszuständen und Speicherallokation verbunden sind. Bspw. kann das Bearbeitungselement einen Mikroprozessor aufweisen, und seine Nutzung kann auf Wartezeiten, Eingabe-/Ausgabezeiten, Systemzeiten, Benutzerzeiten oder Anzahl von Prozessen basieren, die auf dem Mikroprozessor laufen. Die Leistung des Mikroprozessors kann auf Cache-Fehlzugriffen, Speicherbelegungen und Speicheranforderungen basieren, und der Leistungszustand des Mikroprozessors kann ferner ein überwachter Betriebsparameter sein, der in Hook 330 unterhalten wird. In einem Beispiel weist der Leistungszustand des Mikroprozessors suspend, standby und Tiefschlaf (deep sleep) (bspw. wird der Mikroprozessor angehalten, und keine Befehle werden ausgeführt) auf.

[0036]  Das Bearbeitungselement kann auch ein Betriebssystem und die Speicherverwaltung des Betriebssystems aufweisen. In einem Beispiel kann dies physikalische Seitenallokationen einschließen, die in Hook 330 unterhalten werden. Deallokationen können bspw. ein weiterer Betriebsparameter sein, der in Hook 330 unterhalten wird.

[0037]  Hook 340 enthält bspw. Speicherzugriffsmusterinformation. Dies kann die Anzahl von Lese- und Schreibvorgängen einschließen, die Speichercontroller 140 bedient oder für Rechenplattform 100 während einer bestimmten Zeitperiode erfüllt. Dies kann auch die Anzahl von ausstehenden Befehlen und die Anzahl von Zugriffen (Scrubs), die Speichercontroller 140 in der bestimmten Zeitperiode ausführt, einschließen. Das Ausmaß des Spiegelns (bspw. redundante Speicherlese-/Schreib-Anforderungen), die Speichercontroller 140 handhabt/erfüllt, kann ebenfalls als ein Betriebsparameter, der in Hook 340 unterhalten wird, eingeschlossen sein.

[0038]  Hook 350 enthält bspw. Speichermodulleistungszustandsinformationen. Dies kann die Leistungspegel umfassen, die den Speichermodulen 160 durch Speicherleistungsebenen 150 zur Verfügung gestellt werden.

[0039]  Zusätzliche Hooks können auch durch verschiedene andere Elemente der Rechenplattform 100 unterhalten werden. Daher ist diese Offenbarung nicht lediglich auf die mit den Hooks 320, 330, 340 und 350 verbundenen Betriebsparameter beschränkt, wie oben beschrieben wurde.

[0040]  In einem Beispiel benutzt Vorhersagemerkmal 216, wie oben erwähnt, statistische Parameter in einem oder mehreren Vorhersagealgorithmen. Diese statistischen Parameter können in einer Implementation gelernt oder bestimmt werden, startend oder beginnend mit dem Zeitpunkt, zu dem Rechenplattform 100 anfangs eingeschaltet wird. Gelernte oder bestimmte statistische Parameter können auch automatisch oder periodisch während der Laufzeit der Rechenplattform bestimmt werden. In einem Beispiel können die statistischen Parameter auch für eine bestimmte Zeitperiode (bspw. eine Trainingsperiode) gelernt werden oder für einen oder mehrere Typen von Ressourcen der Rechenplattform 100 und/oder Nutzungsparametern konfiguriert werden.

[0041]  In einer Implementation erlauben es statistische Parameter dem Vorhersagemerkmal 216, die Notwendigkeit zur Überleitung bzw. Überführung der Speichermodule 160 in andere Leistungszustände zu antizipieren, um Speichernutzungsbedarf zu begegnen. Dieses Antizipieren kann bspw. mögliche Speicherlatenzen oder die Reduktion der Datendurchsätze für Rechenplattform 100 reduzieren, wenn ein oder mehrere Speichermodule 160 in diese verschiedenen Leistungszustände überführt werden. Leistungsbudgetbeschränkungen, die auf einem Leistungsbudgetprofil für Rechenplattform 100 basieren, können bspw. auch Speichernutzungsbedarf beeinflussen. Im Ergebnis kann Vorhersageeinrichtung 216 Überleitungsbedarf antizipieren, um ein bestimmtes Leistungsbudgetprofil für Rechenplattform 100 zu erfüllen. Diese statistischen Parameter, die von Vorhersageeinrichtung 216 benutzt werden, können, ohne sich auf diese zu beschränken, Speicheranforderungen, die an einen Speichercontroller gestellt werden, Bearbeitungselementnutzungen, Netzwerkbandbreite und Leistungsbudgetprofil einschließen.

[0042]  In einem Beispiel kann die Netzwerkverkehrsinformation, die von Hook 320 erhalten wird, in einen statistischen Parameter münden, um Netzwerkbandbreite zu antizipieren. Speichernutzung ändert sich bspw. aufgrund von Netzwerkbandbreite, indem Rechenplattform 100 Speichermodule 160 benutzen kann, um wenigstens vorübergehend Information, die von einem Netzwerk empfangen oder an dieses gesendet werden soll, zu speichern. Daher kann ein statistischer Parameter, der zur Vorhersage von Speichernutzung benutzt wird, anhand von Netzwerkverkehrsinformationen, die von Hook 320 beim Anlaufen erhalten werden, periodisch oder über eine bestimmte Zeitspanne angepasst werden.

[0043]  In einer Implementation werden Speicherzugriffsmuster für Rechenplattform 100 von Hook 340 während einer initialen Trainingsperiode oder während des Laufens von Anwendungen erhalten. Dies kann zu erlernten statistischen Parametern führen, die auf Spitzenverkehrszeiten oder Nicht-Spitzen- oder schwachen Speicherverkehrszeiten für Rechenplattformen 100 hinweisen. Diese starken oder schwachen Verkehrszeiten können auf Tageszeit, Tag im Jahr und Urlaub basieren, wobei verschiedene Verkehrsmodelle, die mit den Anwendungen verbunden sind, berücksichtigt werden. Die starken oder schwachen Verkehrszeiten können auch auf einem gleitenden Zeitfenster oder einer Standardwahrscheinlichkeitsverteilungsfunktion mit mittleren und Varianzparametern basieren. Das passende Muster für starken oder schwachen Verkehr wird während der Trainingsperiode bestimmt und kann auch in das statistische Modell über bestimmte Konfigurationsparameter importiert werden. Diese starken oder schwachen Zeiten können in einem Vorhersagealgorithmus (für einzelne oder mehrere Speichermodule 160), wie im folgenden in Tabelle 1 gezeigt, benutzt werden:

Tabelle 1

[0044]  In einer anderen Implementierung resultiert Netzwerkverkehrsinformation, die von Hook 320 erhalten wird, und Speicherzugriffsmuster, die von Hook 340 erhalten werden, darin, dass erlernte statistische Parameter, die auf ausgelastete oder schwache Verkehrszeiten hinweisen, gemeinsam mit erlernten statistischen Parametern, die aus Information, welche von Hook 330 erhalten wird, benutzt werden können. Diese statistischen Parameter, die aus von Hook 330 erhaltener Information resultieren, können auf Spitzen der Speichernutzung für Bearbeitungselemente 130 (beispielsweise CPU-Speichernutzung) hinweisen. In einem Beispiel weisen die Konfigurationsparameter der Rechenplattform 100 die Speicherkapazität der Speichermodule 160 auf, und diese Speicherkapazität kann mit Spitzen der Speichernutzung und starken oder schwachen Verkehrszeiten in einem beispielhaften Vorhersagealgorithmus, wie in Tabelle 2 unten gezeigt, verglichen werden. Die starken oder schwachen Verkehrszeiten können auf den oben beschriebenen Regeln basieren (beispielsweise Tageszeit, Tag im Jahr, Urlaub, Gleitzeitfenster, Wahrscheinlichkeitsverteilungsfunktion).

Tabelle 2

[0045]  In einer anderen Implementierung wird ein Leistungsbudgetprofil für Rechenplattform 100 gemeinsam mit der Leistung, die von Rechenplattform 100 verbraucht wird, benutzt, um einen Bedarf zum Beschränken von Leistung, die von Rechenplattform 100 verbraucht wird, zu bestimmen, indem die Speichermodule 160 in Geringleistungszustände überführt werden. In dieser Implementierung wird Information in Hooks 330 und 340 erhalten, um Betriebsparameter für Leistung, die von Rechenplattform 100 verbraucht wird, zu sammeln oder zu überwachen. Beispielsweise kann sich CPU-Nutzung, die von Hook 330 erhalten wird, und Speicherbandbreite, die von Hook 340 erhalten wird, auf Leistung beziehen, die von Rechenplattform 100 verbraucht wird. Das Leistungsbudgetprofil kann mit diesem Leistungsverbrauch in einem beispielhaften Vorhersagealgorithmus, wie in der folgenden Tabelle 3 gezeigt, verglichen werden.

Tabelle 3

[0046]  Fig. 5 zeigt eine Darstellung von beispielhaften Speicherleistungszuständen 500, aus denen Überleitungseinrichtung 218 ein oder mehrere Speichermodule der Speichermodule 160 überleiten kann. Wie in Fig. 5 gezeigt, weisen Speicherleistungszustände 500 Offline-Zustand 510, Online-Zustand 520, Standby-Zustand 530 und Suspend-Zustand 540 auf.

[0047]  In einer Implementierung können Speichermodule der Speichermodule 160 duale Inline-Speichermodule (Dual Inline Memory Moduls (DIMMs)) sein. In dieser Implementierung umfasst ein DIMM einen Puffer (nicht gezeigt), um vorübergehend Daten zu schreiben, die in den DIMM geschrieben oder aus ihm gelesen werden. Der DIMM einschließlich des Puffers wird beispielsweise als ein vollständig gepufferter DIMM oder FB-DIMM (Full Buffered DIMM) bezeichnet. Ein FB-DIMM kann beispielsweise, wie beschrieben, nach einem vorgeschlagenen FB-DIMM-Standard der JEDEC Solid State Technical Association arbeiten. Gemäß dem vorgeschlagenen FB-DIMM-Standard wird der Pufferteil eines FB-DIMM als ein erweiterter Speicherpuffer (Advanced Memory Buffer (AMB)) bezeichnet.

[0048]  In einem Beispiel koppelt ein FB-DIMM-AMB über einen Speicherkanal an Speicher-Controller 140. In einer Konfiguration koppeln bspw. 2 FB-DIMMs an Speicher-Controller 140 über einen einzelnen Speicherkanal. Beispielsweise koppeln AMBs für Speichermodule 160-1 und 160-2 über Speicherkanal 162, AMBs für Speichermodule 160-3 und 160-4 über Speicherkanal 164 und AMBs für Speichermodule 160-n und 160-n + 1 über Kommunikationskanal 166 (siehe Fig. 1). In dieser Konfiguration werden beispielsweise Daten, die in einen DIMM geschrieben oder von dort gelesen werden, zunächst an den AMB geroutet und dann an ihr Ziel (beispielsweise Speicher-Controller 140 oder ein DIMM) weitergeleitet.

[0049]  Gemäß einem Beispiel für ein FB-DIMM stellt Offline-Zustand 510 einen Leistungszustand dar, in dem der AMB und der DIMM abgeschaltet sind. Online-Zustand 520 besteht beispielsweise, wenn der DIMM und der AMB unter voller Leistung stehen. Standby-Zustand 530 besteht beispielsweise, wenn der DIMM im Vergleich zu voller Leistung in einem Modus schwächerer Leistung (beispielsweise in einem abgeschalteten Modus) ist und die Schnittstelle auf dem AMB, der den DIMM an Speichermanager 140 koppelt, abgeschaltet ist (beispielsweise abgeschaltete Übermittlungs- und Empfangskommunikationsverbindungen, die für eine kurze, feste Zeitdauer oder für eine erweiterte, variable Zeitdauer abgeschaltet sind). Suspend-Zustand 540 kann einen Leistungszustand darstellen, in dem der AMB abgeschaltet ist und der DIMM in einem selbsterneuernden Modus ist.

[0050]  In einer Implementation kann ein FB-DIMM, wie in Fig. 5 dargestellt, aus Offline-Zustand 510 in Online-Zustand 520 überführt werden. In einem Online-Zustand 520 kann der FB-DIMM beispielsweise entweder in Suspend-Zustand 540 oder Standby-Zustand 530 überführt werden. Der FB-DIMM kann aus Standby-Zustand 530 oder Suspend-Zustand 540 in Online-Zustand 520 übergehen. Außerdem kann der FB-DIMM in den Suspend-Zustand 540 übergehen, wenn er im Standby-Zustand 530 ist. Schließlich kann der FB-DIMM in Offline-Zustand 510 oder in Standby-Zustand 530 übergehen, falls er in Suspend-Zustand 540 ist. Diese Offenbarung beschränkt sich nicht lediglich auf diese Typen von Speicherleistungszustandsüberleitungen und ist auch nicht nur auf FB-DIMM-Speichertypen beschränkt. Andere Speichertypen können, ohne sich auf diese zu beschränken, Generationen von statischem dynamischem Random-Access-Speicher mit doppelter Datenrate (DDR) wie etwa DDR (erste Generation), DDR2 (zweite Generation) oder DDR3 (dritte Generation) umfassen. Andere Speichertypen können außerdem zukünftige Generationen von FB-DIMM oder andere Speichertechnologien umfassen.

[0051]  Fig. 6 zeigt ein Flussdiagramm eines beispielhaften Verfahrens, um Speicherleistungsnutzung vorherzusagen und ein Speichermodul anhand der Vorhersage in einen anderen Leistungszustand zu überführen. In einem Beispiel wird Rechenplattform 100, wie in Fig. 1 gezeigt, benutzt, um dieses Verfahren zu beschreiben. In Block 610 wird Rechenplattform 100 beispielsweise eingeschaltet oder hochgefahren. Dieses Hochfahren kann einsetzen, wenn der Rechenplattform 100 anfangs Leistung zur Verfügung steht, oder kann Folge eines Resets der Rechenplattform 100 sein.

[0052]  In Block 620 aktiviert Leistungsoptimierlogik 210 in MPU-Manager 110 in einem Beispiel nach Hochfahren der Rechenplattform 100 die Konfigurationseinrichtung 212. Konfigurationseinrichtung 212 erhält in einem Beispiel einen oder mehrere Konfigurationsparameter, die mit Elementen verbunden sind, welche auf Rechenplattform 100 liegen. Diese Konfigurationsparameter können die Ressourcen und die Konfiguration dieser Ressourcen für Rechenplattform 100 aufweisen. Konfigurationseinrichtung 212 setzt in einem Beispiel wenigstens einen Teil dieser Konfigurationsparameter in einer Tabelle zusammen und speichert diese Tabelle vorübergehend in einem Speicher (beispielsweise Speicher 230). Konfigurationseinrichtung 212 kann außerdem eine Tabelle ähnlich der Tabelle 400 zusammensetzen, um auf die Hooks hinzuweisen, über welche die Betriebsparameter überwacht werden können. Diese Tabelle ist beispielsweise wenigstens vorübergehend in einem Speicher gespeichert (beispielsweise Speicher 230).

[0053]  In Block 630 aktiviert Leistungsoptimierlogik 210 in einem Beispiel Überwachungseinrichtung 214. Überwachungseinrichtung 214 erhält in einer Implementation die Tabellen, die vorübergehend durch Konfigurationseinrichtung 212 gespeichert sind, oder sie greift auf diese zu. Überwachungseinrichtung 214 benutzt beispielsweise die Hooks, die in der Tabelle, die der Tabelle 400 ähnlich ist, beschrieben sind, um das Überwachen der Betriebsparameter der Rechenplattform 100 zu ermöglichen. Beispielsweise benutzt Überwachungseinrichtung 214 die Hooks 320, 330, 340 und 360, um Betriebsparameter aufzunehmen, die jeweils mit Netzwerkschnittstelle 120, Bearbeitungselementen 130, Speicher-Kontroller 140 und Speichermodulen 160 verbunden sind.

[0054]  In Block 640 aktiviert Leistungsoptimierlogik 210 in einem Beispiel Vorhersageeinrichtung 216. Vorhersageeinrichtung 216 sammelt in einem Beispiel Konfigurationsparameter und Betriebsparameter, die durch Konfigurationsmerkmal 212 und Überwachungsmerkmal 214 erhalten werden. Wie oben erwähnt, implementiert Vorhersageeinrichtung 216 verschiedene statistische Vorhersagemodelle um die Konfigurations- und Betriebsparameter der Rechenplattform 100 herum, um Speicherleistungsnutzung für Rechenplattform 100 vorherzusagen.

[0055]  In einer Implementation erlaubt es die Implementation der Vorhersageeinrichtung 216 von verschiedenen statistischen Vorhersagemodellen, die die Konfigurations- und Betriebsparameter aufweisen, der Vorhersageeinrichtung 216, Änderungen in der Speichernutzung durch verschiedene Elemente der Rechenplattform 100 vorherzusagen. Beispielsweise ist Speicher in einem gegebenen Speichermodul des Speichermoduls 160 entweder stark oder überhaupt nicht durch einen oder mehrere Einheiten von Bearbeitungselementen 130 (beispielsweise Betriebssystemen und/oder Anwendungen) zugeordnet. Dies kann angezeigt sein, wenn Überwachungseinrichtung 214 periodisch Hook 330 von Bearbeitungselementen 130 erhält. Basierend auf wenigstens einem Teil der Information in Hook 330 und den Konfigurationsparametern der Rechenplattform 100 sowie erlernten oder trainierten statistischen Parametern kann Vorhersageeinrichtung 216 in der Lage sein, die Nutzung des gegebenen Speichermoduls vorherzusagen, und seine Leistung kann entsprechend geändert werden, um Speicherlatenzen zu reduzieren oder um einem bestimmten Leistungsbudgetprofil für Rechenplattform 100 zu begegnen.

[0056]  Zusätzlich zu Benutzungsmustern kann Vorhersageeinrichtung 216 auch für verschiedene Konfigurationsparameter für Speichermodule 160, wie etwa Speicher-Interleaving, Speicher-Spiegeln, Speichersparen und Rangordnungsallokation herangezogen werden. Dieses Heranziehen kann es Vorhersageeinrichtung 216 erlauben, die Vorhersage zu bestimmen, die die Leistung der Elemente der Rechenplattform 100 (beispielsweise Bearbeitungselement 130) beeinträchtigen, wenn ein gegebenes Speichermodul oder Module in einen anderen Leistungszustand überführt werden.

[0057]  In einer Implementation sind die Speichermodule 160-1 bis 160-n + 1 FB-DIMMs, wie oben zu Fig. 5 beschrieben. In einem Beispiel weisen Speichermodule 160-1 bis 160-n + 1 eine Konfiguration von 2 DIMMs je Kommunikationskanal pro Zweig auf, obwohl diese Offenbarung sich nicht auf diesen Typ von Speichermodulkonfiguration beschränkt. Falls beispielsweise das BIOS einer Verzweigungsfolgen- und Rang-Verschränkungs-4:1-Konfiguration einsetzt, partizipieren die Ränge in einem gegebenen Zweig in der Speicherregion des Zweiges, und sogar Zugriffe auf Speicheradressen niedrigerer Ordnung gehen an die DIMMs auf einem gegebenen Zweig. Daher kann Vorhersageeinrichtung 216 für diese Verschränkung (interleaving) verantwortlich sein und eine Gruppe von 4 DIMMs als eine einzelne Speicherressourcengruppe betrachten, die potentiell in den gleichen Leistungszustand (beispielsweise aus den Leistungszuständen 500) überführt werden kann. In ähnlicher Weise kann Vorhersageeinrichtung 216 für andere Typen von Speicher-Interleaving-Konfigurationen verantwortlich sein und auch für leistungs- und ausführungsfreundliche Speicherkonfigurationen für Endbenutzeranwendungen verantwortlich sein, die auf Rechenplattform 100 implementiert sind.

[0058]  In Block 650 aktiviert Leistungsoptimierlogik 210 beispielsweise Überleitungseinrichtung 218. Überleitungseinrichtung 218 empfängt in einem Beispiel eine Vorhersage von Vorhersageeinrichtung 216, dass ein gegebenes Speichermodul oder Module der Speichermodule 160 nicht benutzt werden, basierend auf seiner Implementation von wenigstens einem statistischen Vorhersagemodell. Zum Beispiel ist das gegebene Speichermodul Speichermodul 160-1. Dann veranlasst beispielsweise Überleitungseinrichtung 218 Speichermodul 160-1, in einen anderen Leistungszustand überzugehen, um Leistung für Rechenplattform 100 zu sparen. Dieser andere Leistungszustand kann einer der Leistungszustände 500, die in Fig. 5 dargestellt sind, sein. Zum Beispiel kann Überleitungseinrichtung 218, falls Modul 160-1 in Online-Zustand 520 war, Speichermodul 160-1 veranlassen, in Offline-Zustand 510, Standby-Zustand 530 oder Suspend-Zustand 540 überzugehen.

[0059]  In einem Beispiel können, nachdem Modul 160-1 in einen anderen Leistungszustand überführt wurde, aufeinander folgende Vorhersagen durch Vorhersageinrichtung 216 anhand von Konfiguration- und Betriebsparametern mögliche Reaktivierungs-/Latenzverluste absorbieren, die die Leistung von Rechenplattform 100 mindern könnten. Infolgedessen kann der Prozess zu Block 620 und/oder 630 zurückkehren, um die Benutzung von Speichermodul 160-1 vorherzusagen und dann zu veranlassen, dass Modul 160-1 anhand dieser vorhergesagten Benutzung oder dem Benutzungsmuster in einen anderen Leistungszustand überführt wird.

[0060]  Es wird erneut Bezug auf MPU-Manager 110 in Fig. 1. genommen. MPU-Manager 110 ist beispielsweise als ein Element der Rechenplattform 100 gezeigt, das getrennt von Netzwerkschnittstelle 120, Bearbeitungselementen 130 und Speicher-Kontroller 140 ist. In diesem Beispiel kann MPU-Manager 110 von einem eigenen Verwaltungs-Mikrokontroller, wie etwa einem Service-Prozessor, Teil sein oder darin untergebracht sein.

[0061]  In einem weiteren Beispiel liegt MPU-Manager 110 innerhalb einer Gruppe von Ressourcen der Rechenplattform 100, die einen Speicherkontroller 140 (beispielsweise einem Chipsatz) umfassen. MPU-Manager 110 kann in diesem anderen Beispiel Teil eines eigenen Verwaltungs-Mikrokontrollers innerhalb des Chipsatzes sein oder von Speicherkontroller 140 eingeschlossen oder darin untergebracht sein. MPU-Manager 110 nimmt beispielsweise Konfiguration- und Betriebsparameter durch die verschiedenen Kommunikationsverbindungen auf, die an Speicherkontroller 140 gekoppelt sind.

[0062]  In noch einem weiteren Beispiel ist MPU-Manager 110 Teil einer virtuellen Partition von Rechenplattform 100. Dies kann ein Service-Betriebssystem sein, das auf einem eigenen getrennten Kern oder Teil eines Kerns läuft, der unter Benutzung von Virtualisierungstechnologie/Virtuellem Maschinenmonitor (VT/VMM) in den Bearbeitungselementen 130 arbeitet. MPU-Manager 110 kann beispielsweise verschiedene Kommunikationsverbindungen benutzen, die an Bearbeitungselemente 130 und/oder an die virtuelle Partition gekoppelt sind, wo MPU-Manager 110 existiert, oder wird ausgeführt, um Konfigurations- und Betriebsparameter aufzunehmen.

[0063]  Es wird erneut Bezug auf Speicher 230 in Fig. 2. genommen. Speicher 230 kann eine breite Auswahl von Speichermedien umfassen, die, ohne sich darauf zu beschränken, flüchtigen Speicher, nichtflüchtigen Speicher, Flash, programmierbare Variablen oder Zustände, Random-Access-Memory (RAM), Read-Only-Speicher (ROM), Flash oder andere statische oder dynamische Speichermedien umfassen.

[0064]  In einem Beispiel können maschinenlesbare Befehle dem Speicher 230 von einer Form eines maschinenzugänglichen Mediums zur Verfügung gestellt werden. Ein maschinenzugängliches Medium kann jeden Mechanismus darstellen, der Information oder Inhalt, der in einer durch eine Maschine lesbaren Form (beispielsweise eine ASIC, ein spezieller Funktionskontroller oder Prozessor, FPGA oder andere Hardwareeinrichtungen) zur Verfügung stellt, (d. h. speichert und/oder überträgt). Beispielsweise kann ein maschinenzugängliches Medium umfassen: ROM; RAM; magnetische Diskspeichermedien; optische Speichermedien; Flash-Speicher-Einrichtungen; elektrische, optische, akustische, oder andere Formen propagierter Signale (beispielsweise Trägerwellen, Infrarotsignale, digitale Signale); und dergleichen.

[0065]  In den vorangehenden Beschreibungen wurden zum Zwecke der Erklärung eine Anzahl spezifischer Details angegeben, um ein Verständnis dieser Offenbarung zu liefern. Es ist offensichtlich, dass die Offenbarung auch ohne diese spezifischen Details praktiziert werden kann. In anderen Fällen wurden Strukturen und Einrichtungen in Blockdiagrammform gezeigt, um eine Unschärfe der Offenbarung zu vermeiden.

[0066]  In dieser Offenbarung vorgenommene Bezugnahmen auf den Begriff „In Antwort auf” beschränken sich nicht auf Responsivität auf lediglich eine bestimmte Einrichtung und/oder eine Struktur. Eine Einrichtung kann auch „In Antwort auf” eine andere Einrichtung und/oder eine Struktur sein und sich ferner innerhalb dieser Einrichtung und/oder dieser Struktur befinden. Zusätzlich kann der Begriff „In Antwort auf” auch synonym mit anderen Begriffen wie etwa „in Kommunikationsverbindung mit” oder „operativ gekoppelt mit” sein, auch wenn der Begriff sich nicht auf diese Hinsicht beschränkt.