-
HINTERGRUND
-
1. Technisches Gebiet
-
Hier diskutierte Ausführungsformen betreffen im Allgemeinen Computerspeichersysteme. Insbesondere betreffen bestimmte Ausführungsformen verschiedenartig eine Konfiguration einer Speichervorrichtung nach einem Leistungszustandsübergang.
-
2. Stand der Technik
-
Hochfahren einer Computerplattform oder die Plattform auf andere Weise aus einem Zustand für niedrigeren Stromverbrauch in einen Zustand für höheren Stromverbrauch überzuwechseln benötigt oft mehr Zeit als erwünscht. Da ferner technologische Verbesserungen fortgesetzt auf eine Implementierung kleinerer Plattformen drängen, – z. B. für Tablet-Computer und verschiedene andere Handgeräte – stehen sich die Nachfrage nach erhöhter Leistungseffizienz und die Nachfrage nach schnellerer Wiederherstellung aus Zuständen niedriger Leistung zunehmend unversöhnlich gegenüber.
-
Folglich können Verzögerungen im Zusammenhang mit Leistungsübergängen nicht tragbar sein, wenn eine Vorrichtung auf beschleunigter Basis aktiviert werden muss. Eine Einschränkung beim Bereitstellen eines ausreichend schnellen Hochfahrens (oder anderer Leistungsübergänge) ist die Notwendigkeit, flüchtige Speicher zum Betrieb nach einem Leistungszustand vorzubereiten, bei welchem es den Informationen, welche in einem derartigen flüchtigen Speicher gespeichert sind, möglich ist, zu degradieren. Nach einem derartigen Leistungszustand können sich ein oder mehrere Orte in dem Speicher in einem eventuell ungültigen Zustand befinden, wie beispielsweise wenn sich eine oder mehrere Speicherzellen in unbestimmten logischen Zuständen zwischen logisch „hoch” und logisch „niedrig” befinden.
-
Operationen, um sicherzustellen, dass eine Speichervorrichtung sich in einem bekannt gültigen Zustand befindet, verlangsamen Hochfahroperationen und andere Übergänge, und sind aus mindestens diesem Grund bei verschiedenen Anwendungen eine Einschränkung der Brauchbarkeit bestimmter Computerplattformen. Dementsprechend gibt es einen Bedarf für Mechanismen, welche beispielsweise ein schnelleres Hochfahren oder andere Operationen ermöglichen, welche einem Leistungszustandsübergang von Computersystemen zugeordnet sind.
-
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
Die verschiedenen Ausführungsformen der vorliegenden Erfindung werden beispielhaft und nicht einschränkend in den Figuren der begleitenden Zeichnungen illustriert, wobei:
-
1 ein Blockdiagramm ist, welches Elemente einer Computerplattform gemäß einer Ausführungsform zum Bereitstellen einer Speichervalidierung illustriert.
-
2A bis 2C Blockdiagramme sind, welche Elemente der verschiedenen Architekturen zum Bereitstellen einer Speichervalidierung gemäß jeweiligen Ausführungsformen illustrieren.
-
3 ein Blockdiagramm ist, welches Elemente eines Speichervalidierungsmittels zum Durchführen einer Speichervalidierung gemäß einer Ausführungsform illustriert.
-
4 ein Ablaufdiagramm ist, welches Elemente eines Algorithmus für ein Speichervalidierungsmittel zum Durchführen von Schreibvorgängen auf einen Speicher gemäß einer Ausführungsform illustriert.
-
5 ein Ablaufdiagramm ist, welches Elemente eines Algorithmus zum Laden von Software-Code in validierten Speicher gemäß einer Ausführungsform illustriert.
-
6 ein Ablaufdiagramm ist, welches Elemente eines Algorithmus zum Laden von Software-Code in validierten Speicher gemäß einer Ausführungsform illustriert.
-
AUSFÜHRLICHE BESCHREIBUNG
-
1 ist ein Blockdiagramm, welches ausgewählte Elemente einer Computerplattform 100 zum Bereitstellen einer Speichervalidierung gemäß einer Ausführungsform illustriert. Die Computerplattform 100 kann beispielsweise eine Plattform eines Arbeitsplatzcomputers, ein tragbarer Computer wie beispielsweise ein Laptop-Computer oder Handgerät – z. B. ein Tablet-Computer, ein PDA-Minicomputer (PDA, Personal Digital Assistant), ein Smartphone, ein Funkrufgerät, ein digitales Musikabspielgerät, eine digitale Kamera usw. – oder eine andere derartige Computerplattform zum Speichern, Verarbeiten, Senden, Empfangen von Daten und/oder dergleichen sein.
-
Bei einer Ausführungsform weist die Computerplattform 100 eine Verarbeitungseinheit 105 mit einem oder mehreren Prozessorkernen auf, um Software auszuführen – z. B. ein Betriebssystem zum Implementieren einer oder mehrerer Anwendungen darauf. Beispielsweise kann die Verarbeitungseinheit 105 eine Zentraleinheit (CPU, Central Processing Unit), einen Prozessor mit anwendungsspezifischem Befehlssatz-(ASIP, Application-Specific Instruction-set Processor) oder einen anderen Prozessor zum Ausführen eines oder mehrerer Betriebssystemsbefehle, Software-Hochfahrbefehle, ROM-Auswahlbefehle, Firmware-Schnittstellenbefehle und/oder dergleichen aufweisen. Zum Zweck der Darstellung und nicht einer Begrenzung kann ein Prozessor der Verarbeitungseinheit 105 Code des Basisdatenaustauschsystems (BIOS, Basic Input/Output System), Code der erweiterbaren Firmware-Schnittstelle (EFI, Extensible Firmware Interface), wie beispielsweise Code der vereinheitlichten erweiterbaren Firmware-Schnittstelle (UEFI, Unified Extensible Firmware Interface), und/oder andere Firmware-Schnittstellenbefehle ausführen. Jeder von verschiedenen Typen von Firmware-Schnittstellencode, Betriebssystemscode, Anwendungscode usw. – welcher mit den hier diskutierten Verfahren konsistent ist – kann von der Verarbeitungseinheit 105 ausgeführt werden.
-
Eine Computerplattform kann einen Speicher 120 aufweisen, welcher an eine Verarbeitungseinheit 105 angeschlossen ist, – z. B. über eine Speichersteuerung 110 – wobei der Speicher 120 Befehle oder andere Daten zur Unterstützung der Software-Ausführung durch die Verarbeitungseinheit 105 speichert. Der Speicher 120 kann beispielsweise jede von verschiedenen Kombinationen von einem oder mehreren flüchtigen Speichervorrichtungen aufweisen. Zum Zweck der Darstellung und nicht einer Begrenzung kann der Speicher 120 Direktzugriffsspeicher (RAM, Random Access Memory) aufweisen, wie beispielsweise einen oder mehrere Speicher aus dynamischem RAM (DRAM), statischem RAM (SRAM), wie beispielsweise SDRAM mit doppelter Datengeschwindigkeit (DDR, Double Data Rate) und/oder dergleichen. Der Speicher 120 kann beispielsweise eine oder mehrere Doppelreihen-Speichermodul-(DIMM, Dual In-line Memory Module)-Vorrichtungen aufweisen, obwohl bestimmte Ausführungsformen in dieser Hinsicht nicht eingeschränkt sind.
-
Bei einer Ausführungsform weist der Speicher 120 mehrere adressierbare Orte 122a, ..., 122n zum Speichern von Informationen – z. B. von Befehlen, Daten, Adressinformationen und/oder dergleichen – zum Zugriff durch die Verarbeitungseinheit 105 auf. Die adressierbaren Orte 122a, ..., 122n können beispielsweise konfiguriert sein, um Informationen zu speichern, welche einen Zustand eines oder mehrerer Software-Prozesse repräsentieren, welche durch die Verarbeitungseinheit 105 ausgeführt werden sollen.
-
Einige oder alle adressierbare Orte 122a, ..., 122n können jeweils jeweilige Fehlerkorrekturorte 124a, ..., 124n des Speichers 120 aufweisen oder ihnen auf andere Weise entsprechen, obwohl bestimmte Ausführungsformen in dieser Hinsicht nicht eingeschränkt sind. Die Fehlerkorrekturorte 124a, ..., 124n können jeweils verfügbar sein, um einen jeweiligen Fehlerkorrekturcode (ECC, Error Correction Code) oder einen anderen Fehlerkorrekturwert – z. B. ein Paritäts-Bit, eine Prüfsumme, einen Hash-Wert und/oder dergleichen – für Informationen zu speichern, welche an einem entsprechenden der adressierbaren Orte 122a, ..., 122n gespeichert sind. Es versteht sich, dass der Speicher 120 beliebige von verschiedenen zusätzlichen oder alternativen adressierbaren Orten (und/oder Fehlerkorrekturorten) aufweisen kann, welche in 1 nicht gezeigt sind.
-
Zu bestimmten Zeiten kann die Computerplattform 100 verschiedenartig in einem oder mehreren Leistungszuständen arbeiten, – z. B. in einem ausgeschalteten Zustand, in einem Tiefschlafzustand, in einem Schlafzustand usw. – bei welchen die Degradation einiger oder aller Daten möglich sind, welche in dem Speicher 120 gespeichert sind. In einem derartigen Leistungszustand können beispielsweise ein oder mehrere Speicherauffrischmechanismen, Fehlererkennungsmechanismen, Fehlerkorrekturmechanismen und/oder dergleichen, zum Zweck des Reduzierens des Stromverbrauchs der Computerplattform 100 deaktiviert sein. Wenn folglich eine Computerplattform 100 aus einem derartigen Leistungszustand – z. B. durch Einschalten oder Reaktivieren der Computerplattform 100 – in einen Leistungszustand gebracht wird, welcher einen Betrieb derartiger Mechanismen unterstützt, können Daten, welche in dem Speicher 120 gespeichert sind, einiges oder alles von ihrer Integrität verloren haben. Beispielsweise können Informationen in adressierbaren Orten 122a, ..., 122n und/oder in Fehlerkorrekturorten 124a, ..., 124n in einem unbestimmten Zustand sein, sie können Fehler aufweisen, durch welche die Computerplattform 100 sich nicht wieder herstellen kann, sie können Fehler aufweisen, welche einen großen zusätzlichen Fehlerkorrekturaufwand darstellen, und/oder dergleichen.
-
Bei einer Ausführungsform weist die Computerplattform 100 einen oder mehrere Mechanismen zum Überschreiben einiger oder aller Informationen an adressierbaren Orten 122a, ..., 122n auf, – z. B. als Teil eines Übergangs aus einem derartigen Leistungszustand – wobei das Schreiben eventuell degradierte Informationen im Speicher mit Informationen ersetzt, welche bekanntermaßen gültig sind (hier als „bekannt gültige Informationen” bezeichnet).
-
Zur Kürze wird Überschreiben eventuell ungültiger Informationen in einem Speicher mit bekannt gültigen Informationen hier als „Speichervalidierung” bezeichnet. Obwohl der Begriff „Speicherreinigung” ersatzweise ein derartiges Schreiben beschreibt, wurde dieser Begriff auch in der Vergangenheit verwendet, um Verfahren zu bezeichnen, welche Informationen lesen und Fehler korrigieren, welche in den gelesenen Informationen detektiert werden. Im Gegensatz dazu erfordern bestimmte hier diskutierte Ausführungsformen kein tatsächliches Lesen der Informationen, welche überschrieben werden sollen, oder die Bewertung oder Korrektur von Fehlern in derartig gelesenen Informationen.
-
Bei einer Ausführungsform weist die Computerplattform 100 ein Speichervalidierungsmittel 115 auf, welches Logik zum Durchführen einer Speichervalidierung für einige oder alle adressierbaren Orte 122a, ..., 122n aufweist. Das Speichervalidierungsmittel 115 kann sich außerhalb der Verarbeitungseinheit 105 befinden. Zum Zweck der Darstellung und nicht einer Begrenzung kann sich das Speichervalidierungsmittel 115 innerhalb der Speichersteuerung 110 befinden. Bei bestimmten Ausführungsformen können sich das Speichervalidierungsmittel 115 und/oder die Speichersteuerung 110 innerhalb eines integrierten Schaltkreis-(IC, Integrated Circuit)-Paketes oder einer anderen Komponentenvorrichtung der Computerplattform 100 befinden, – z. B. einer Systemchip-(SoC, System-on-Chip)-Vorrichtung – welche die Verarbeitungseinheit 105 aufweist. Bei einer derartigen Vorrichtung kann das Speichervalidierungsmittel 115 von einem oder mehreren Prozessorkernen der Verarbeitungseinheit 105 distinkt sein, – z. B. distinkt von allen Prozessorkernen einer derartigen Komponentenvorrichtung – welche einen Hochfahrprozess, einen Host-OS-Prozess oder einen anderen Initialisierungsprozess durchführen sollen, welcher die Computerplattform 100 beim Überwechseln aus einem niedrigen Leistungszustand unterstützt. Es versteht sich, dass beliebige von verschiedenen Architekturen das Speichervalidierungsmittel 115 gemäß verschiedenen Ausführungsformen mit der Verarbeitungseinheit 105 koppeln können.
-
Bei einer Ausführungsform weist das Speichervalidierungsmittel 115 beliebige von verschiedenen Kombinationen aus Hardware, Software und/oder Firmware auf, um mehrere Schreibvorgänge jeweils auf einen jeweiligen Ort von adressierbaren Orten 122a, ..., 122n durchzuführen. Beispielsweise kann die Speichervalidierung 115 eine Ablaufsteuereinheit oder eine andere Hardware-Engine aufweisen, um mehrere Schreibbefehle zum Schreiben auf jeweilige Orte des Speichers 120 zu erzeugen. Ersatzweise oder zusätzlich kann das Speichervalidierungsmittel 115 einen Co-Prozessor, eine Mikrosteuerung oder ein anderes Mittel aufweisen, um derartige Schreibbefehle zu erzeugen. Bei einer Ausführungsform weist das Speichervalidierungsmittel 115 ein DFX-(Design for X, wobei X ein integriertes Design, eine integrierte Prüfung, Validierung oder andere Funktionalität ist)-Modul auf, welches zum Implementieren einer Speichervalidierung festgeschaltet ist, welche vom Prozessorbetrieb entkoppelt ist.
-
Die Speichervalidierungsoperationen durch das Speichervalidierungsmittel 115 können als Reaktion auf ein Signal erfolgen, – z. B. eine Meldung aus der Verarbeitungseinheit 105 – welche einen Übergang der Computerplattform 100 aus einem Leistungszustand angibt, bei welchem die Degradation der Daten an adressierbaren Orten 122a, ..., 122n möglich ist. Eine Detektion des Signals kann erfolgen nach, während oder sogar vor Erfolgen des Übergangs. Bei einer Ausführungsform kann ein Leistungszustandsübergang zum Aktivieren eines oder mehrerer Mechanismen zum Unterhalten der Datenintegrität an adressierbaren Orten 122a, ..., 122n und (gegebenenfalls) an Fehlerkorrekturorten 124a, ..., 124n eine Komponente eines größeren Plattform-weiten Leistungszustandsübergangs sein.
-
Bei einer Ausführungsform können die Speichervalidierungsoperationen durch das Speichervalidierungsmittel 115 ein Durchführen eines frühesten Schreibvorgangs auf adressierbare Orte 122a, ..., 122n nach dem Übergang aus einem derartigen Leistungszustand aufweisen.
-
Das Erzeugen derartiger Schreibbefehle durch das Speichervalidierungsmittel 115 kann von der Verarbeitungseinheit 105 nach einem oder mehreren Gesichtspunkten unabhängig sein. Insbesondere können Operationen durch das Speichervalidierungsmittel 115 zum Implementieren einer Speichervalidierung von einer gleichzeitigen Operation der Verarbeitungseinheit 105 entkoppelt sein. Zum Zweck der Darstellung und nicht einer Begrenzung kann das Speichervalidierungsmittel 115 bestimmen, dass eine Speichervalidierung für adressierbare Orte 122a, ..., 122n durchgeführt werden muss, wobei das Bestimmen von der Verarbeitungseinheit 105 unabhängig ist, welche dem Speichervalidierungsmittel 115 jede – oder bei einer Ausführungsform alle – der bestimmten adressierbaren Orte spezifiziert, für welche eine Speichervalidierung durchgeführt werden muss. Beispielsweise kann das Speichervalidierungsmittel 115 mehrere Speicheradressen erzeugen oder auf andere Weise bestimmen, für welche eine Speichervalidierung durchgeführt werden muss, wobei ein derartiges Erzeugen/Bestimmen unabhängig ist von allen spezifischen Adressierungsinformationen, welche seit dem fraglichen Leistungszustandsübergang durch die Verarbeitungseinheit 105 kommuniziert wurden. Ersatzweise oder zusätzlich kann das Speichervalidierungsmittel 115 einen oder mehrere Werte erzeugen oder auf andere Weise bestimmen, welche auf adressierbare Orte 122a, ..., 122n geschrieben werden sollen, wobei das Erzeugen/Bestimmen eines oder mehrerer derartiger Werte von der Verarbeitungseinheit 105 unabhängig ist, welche dem Speichervalidierungsmittel 115 alle derartigen Werte spezifiziert – z. B. mindestens seit dem fraglichen Leistungszustandsübergang.
-
Bei bestimmten Ausführungsformen kann das Speichervalidierungsmittel 115 eine Speichervalidierung als Reaktion auf eine Kommunikation aus der Verarbeitungseinheit 105 nur dort durchführen, wo alle derartigen Kommunikationen generisch sind auf alle der adressierbaren Orte 122a, ..., 122n. Beispielsweise kann eine Speichervalidierung von allen derartigen Kommunikationen unabhängig sein, welche Informationen (Adressen, Daten, Befehle und/oder dergleichen) bereitstellen, welche spezifisch sind für einen bestimmten der adressierbaren Orte 122a, ..., 122n.
-
Eine Speichervalidierung kann bei einer Vorbereitung für ein Laden der Software-Befehle und/oder der Software-Zustandsinformationen auf adressierbare Orte 122a, ..., 122n erfolgen. Bei einer Ausführungsform schreibt ein Speichervalidierungsprozess Platzhalterinformationen auf adressierbare Orte 122a, ..., 122n – z. B. wo derartige Platzhalterinformationen nicht selber Code entsprechen, welcher durch die Verarbeitungseinheit 105 ausgeführt werden soll. Das Schreiben derartiger Platzhalterinformationen kann die Wahrscheinlichkeit reduzieren, dass Bits an adressierbaren Orten 122a, ..., 122n sich in einem logisch unbestimmten Zustand befinden. Beispielsweise kann Schreiben derartiger Platzhalterinformationen eine logische „1” oder eine logische „0” auf ein Bit setzen, welches zuvor einen Ladungspegel zwischen einem Schwellenpegel für einen logischen Wert von „1” und einem Schwellenpegel für einen logischen Wert von „0” aufwies. Ersatzweise oder zusätzlich kann das Schreiben derartiger Platzhalterinformationen ein Schreiben von Fehlerkorrekturinformationen aufweisen, welches anderen Platzhalterinformationen, welche durch die Speichervalidierung geschrieben werden, entsprechen und dafür korrekt sind. Dementsprechend kann von Informationen, welche in den Speicher 120 geschrieben werden, gesagt werden, dass sie bekannt gültig sind, zumindest insofern, als dass solche Informationen klare boolesche logische Zustände repräsentieren. Bei bestimmten Ausführungsformen weisen bekannt gültige Informationen solche Informationen auf, welche Fehlerkorrekturinformationen aufweisen oder entsprechen, welche für andere bekannt gültige Informationen akkurat sind.
-
Bei einer Ausführungsform wird eine Speichervalidierung in Vorbereitung für ein frühestes Laden von Software-Befehlen, Zuständen usw. auf adressierbare Orte 122a, ..., 122n seit dem Übergang aus dem Leistungszustand durchgeführt, bei welchem eine Datendegradation in dem Speicher 120 möglich ist. Beispielsweise kann Code für einen BIOS-Code 130 der Computerplattform 100 nach einer Speichervalidierung in den Speicher 120 geladen werden. Bei einer Ausführungsform ist das BIOS 130 in einem nicht flüchtigen Speicher der Computerplattform 100 gespeichert, wie beispielsweise in einem elektrisch löschbaren programmierbaren Nur-Lese-Speicher (EEPROM, Electrically Erasable Programmable Read-Only Memory) oder einem anderen Nur-Lese-Speicher, einem NAND-Flash oder einer anderen Flash-Vorrichtung und/oder dergleichen. Bei einer Ausführungsform kann eine beliebige von verschiedener zusätzlicher oder alternativer Software nach einer Speichervalidierung geladen werden, was insbesondere eine oder mehrere Software aus Hochfahr-Software, EFI oder anderer Firmware-Schnittstellen-Software, Betriebssystem usw. umfasst.
-
Zusätzlich zu den oben stehend diskutierten Merkmalen ist die Computerplattform 100 zusätzliche Elemente aufweisend gezeigt, welche nachfolgend diskutiert werden und welche Speichervalidierungsmechanismen und/oder Verfahren bestimmter Ausführungsformen nicht einschränken. Durchschnittsfachleute verstehen aus der Beschreibung hier, dass die Computerplattform 100 beliebige von verschiedenen derartigen zusätzlichen Elementen (nachfolgend diskutiert) gemäß verschiedenen Ausführungsformen aufweisen kann.
-
Die Computerplattform 100 kann beliebige von verschiedenen Vorrichtungen zum Austauschen von Informationen mit der Verarbeitungseinheit 105 und/oder dem Speicher 120 aufweisen. Zum Zweck der Darstellung und nicht einer Begrenzung kann die Computerplattform 100 eine E/A-Steuervorrichtung 125 aufweisen, welche an die Speichersteuerung 110 angeschlossen, wo das BIOS 130 (oder verschiedene andere derartige Software) in den Speicher 120 über die E/A-Steuervorrichtung 125 und die Speichersteuerung 110 geladen werden kann. Ersatzweise oder zusätzlich kann die E/A-Steuervorrichtung 125 mit einer oder mehreren anderen Komponenten der Computerplattform 100 mit der Verarbeitungseinheit 105 und/oder dem Speicher 120 gekoppelt sein. Zum Zweck der Darstellung und nicht einer Begrenzung kann die E/A-Steuervorrichtung 125 einen Eingang in und/oder einen Ausgang aus einem Datenspeicher 135 steuern – z. B. einem oder mehreren Datenspeichern aus einem Halbleiterlaufwerk (SSD, Solid State Drive), einem Festplattenlaufwerk (HDD, Hard Disk Drive) und/oder dergleichen. Der Datenspeicher 135 kann ein oder mehrere Speicher aus NAND-Flash-Speichermedien, NOR-Flash-Speichermedien, magnetoresistiver Direktzugriffsspeichermedien, Nanodraht-Speichermedien, Phasenwechsel-Speichermedien und/oder dergleichen aufweisen. Bei einer alternativen Ausführungsform kann das BIOS 130 (oder andere derartige Software) in dem Datenspeicher 135 gespeichert sein.
-
Die E/A-Steuervorrichtung 125 kann einen Eingang in und/oder einen Ausgang aus einer Netzwerkschnittstelle steuern, wie beispielsweise einer drahtlosen Schnittstelle 140. Die drahtlose Schnittstelle 140 kann beliebige von verschiedenen Kombinationen aus Schaltungslogik aufweisen, um einen oder mehrere drahtlose Kanäle zu betreiben – z. B. zur Kommunikation zwischen der Computerplattform 100 und einem Netzwerk (nicht gezeigt), welches daran angeschlossen ist. Zum Zweck der Darstellung und nicht einer Begrenzung kann die drahtlose Schnittstelle 140 eine Netzwerkkommunikation gemäß einer IEEE 802.11 WLAN-Norm des Institute of Electrical und Electronics Engineers (IEEE), einer IEEE 802.16 drahtlosen Breitbandnorm und/oder dergleichen aufweisen. Die drahtlose Schnittstelle 140 kann eine oder mehrere Antennen (nicht gezeigt) zum Implementieren einer derartigen drahtlosen Kommunikation aufweisen oder damit gekoppelt sein.
-
Ersatzweise oder zusätzlich kann die E/A-Steuervorrichtung 125 einen Eingang in und/oder einen Ausgang aus einer oder mehreren anderen Eingang/Ausgang-Vorrichtungen 145 steuern – z. B. für eine Interaktion durch einen lokalen Benutzer der Computerplattform 100. Zum Zweck der Darstellung und nicht einer Begrenzung können eine oder mehrere andere Eingang/Ausgang-Vorrichtungen 145 eine oder mehrere Vorrichtungen wie eine Maus, Tastatur, Lautsprecher, Monitor, Touch Pad, Tastbildschirm und/oder dergleichen aufweisen. Ersatzweise oder zusätzlich kann die E/A-Steuervorrichtung 125 einen Eingang in und/oder einen Ausgang aus einer Netzwerksteuervorrichtung 150 (wie beispielsweise einer Netzwerkschnittstellenkarte) zur Kommunikation über eine drahtgestützte Verbindung mit einem Netzwerk, einen seriellen Erweiterungsport 155, welcher eine Kommunikation mit einem universellen seriellen Bus (USB) unterstützt, oder eine andere periphere Vorrichtung und/oder dergleichen steuern.
-
2A und 2C illustrieren verschiedene jeweilige Architekturen 200a, 200b, 200c zum Bereitstellen einer Speichervalidierung gemäß verschiedenen Ausführungsformen. 2A zeigen eine Architektur 200a, bei welcher ein Prozessor 205 über eine Speichersteuerung 210, bei welcher ein Speichervalidierungsmittel 215 der Architektur 200a von der Speichersteuerung 210 extern ist, an einen Speicher 220 angeschlossen ist. Bei der Architektur 200a ist die Speichersteuerung 210 an den Prozessor 205, den Speicher 220 und das Speichervalidierungsmittel 215 jeweils über getrennte jeweilige Kommunikationswege angeschlossen. Bei einer Ausführungsform können die verschiedenen Funktionalitäten des Prozessors 205, des Speichers 220, der Speichersteuerung 210 und des Speichervalidierungsmittels 215 jeweils den verschiedenen Funktionalitäten des Prozessors 105, des Speichers 120, der Speichersteuerung 110 und des Speichervalidierungsmittels 115 entsprechen.
-
2B zeigt eine Architektur 200b, bei welcher ein Prozessor 235 über eine Speichersteuerung 240, bei welcher ein Speichervalidierungsmittel 245 der Architektur 200b von der Speichersteuerung 240 extern ist, an einen Speicher 250 angeschlossen ist. Bei der Architektur 200b ist das Speichervalidierungsmittel 245 zwischen der Speichersteuerung 240 und dem Prozessor 235 angeschlossen. Bei einer Ausführungsform können die verschiedenen Funktionalitäten des Prozessors 235, des Speichers 250, der Speichersteuerung 240 und des Speichervalidierungsmittels 245 jeweils den verschiedenen Funktionalitäten des Prozessors 105, des Speichers 120, der Speichersteuerung 110 und des Speichervalidierungsmittels 115 entsprechen.
-
2C zeigt eine Architektur 200c, bei welcher ein Prozessor 265 über eine Speichersteuerung 270, bei welcher ein Speichervalidierungsmittel 275 der Architektur 200c von der Speichersteuerung 270 extern ist, an einen Speicher 280 angeschlossen ist. Bei der Architektur 200c ist das Speichervalidierungsmittel 275 zwischen der Speichersteuerung 270 und dem Speicher 280 angeschlossen. Bei einer Ausführungsform können die verschiedenen Funktionalitäten des Prozessors 265, des Speichers 280, der Speichersteuerung 270 und des Speichervalidierungsmittels 275 jeweils den verschiedenen Funktionalitäten des Prozessors 105, des Speichers 120, der Speichersteuerung 110 und des Speichervalidierungsmittels 115 entsprechen.
-
Wie bei dem Speichervalidierungsmittel 115 kann jedes der Speichervalidierungsmittel 215, 245, 275 in eine Komponentenvorrichtung – z. B. SoC-Hardware oder ein anderes derartiges IC-Paket – zusammen mit einer der entsprechenden Speichersteuervorrichtungen 210, 245, 270 und/oder einem der entsprechenden Prozessoren 205, 235, 265 einbezogen sein. In einem derartigen Fall kann das Speichervalidierungsmittel von einigen oder allen Prozessorkernen der Komponentenvorrichtung distinkt sein – z. B. distinkt von einem Kern, welcher zum Durchführen eines Hochfahr- oder Host-OS-Prozesses zur Plattforminitialisierung zur Unterstützung eines Leistungszustandsübergangs dient.
-
3 illustriert bestimmte Elemente eines Speichervalidierungsmittels 300 gemäß einer Ausführungsform zum Überschreiben eventuell ungültiger Informationen in einem Speicher mit bekannt gültigen Informationen. Bei einer Ausführungsform weist das Speichervalidierungsmittel 300 einige oder alle Merkmale der Speichervalidierung 115 auf. Beispielsweise kann das Speichervalidierungsmittel 300 ein oder mehrere Speichervalidierungs-Schreibvorgänge in einem System durchführen, welches einige oder alle Merkmale der Computerplattform 100 aufweist.
-
Bestimmte Merkmale des beispielhaften Speichervalidierungsmittels 300 werden hier in Bezug auf ein Durchführen einer Speichervalidierung des Speichers 120 diskutiert – z. B. durch Schreiben bekannt gültiger Informationen auf einen oder mehrere der mehreren adressierbaren Orte 122a, ..., 122n (und bei bestimmten Ausführungsformen auf jeweilige Fehlerkorrekturorte 124a, ..., 124n). Durchschnittsfachleute erkennen aus der vorliegenden Offenbarung, dass eine derartige Diskussion ausgedehnt werden kann, damit sie auf beliebige von verschiedenen aus einer oder mehreren zusätzlichen oder alternativen Speichervorrichtungen einer Computerplattform gemäß verschiedenen Ausführungsformen zutrifft.
-
Das Speichervalidierungsmittel 300 kann eine Steuerungslogik 320 aufweisen, – z. B. eine Ablaufsteuereinheit oder andere Schaltungslogik – um festzustellen, ob und/oder wie Speichervalidierungs-Schreibvorgänge auf den Speicher 120 durchgeführt werden müssen. Zum Zweck der Darstellung und nicht einer Begrenzung kann die Steuerungslogik 320 eine Meldung detektieren. welche dem Speichervalidierungsmittel 300 bereitgestellt wird, wobei das Signal einen Übergang der Computerplattform aus einem Leistungszustand angibt, während welchem es Informationen in dem Speicher 120 möglich war, zu degradieren. Ein derartiges Signal kann beispielsweise über eine erste Schnittstelle 340 des Speichervalidierungsmittels 300 bereitgestellt werden – z. B. wo das Signal unmittelbar oder indirekt aus der Verarbeitungseinheit 105 gesendet wird.
-
Zusätzlich oder ersatzweise kann das Speichervalidierungsmittel 300 eine Speicherschreiblogik 330 aufweisen, welche an die Steuerungslogik 320 angeschlossen ist. Als Reaktion auf ein Detektieren einer Angabe des Leistungszustandsübergangs kann die Steuerungslogik 320 die Speicherschreiblogik 330 des Speichervalidierungsmittels 300 anweisen, verschiedene Schreibbefehle zu kommunizieren. Bei einer Ausführungsform weist die Speicherschreiblogik 330 eine Schaltungslogik auf, um Schreibbefehle zu erzeugen, – z. B. zum Senden über eine Schnittstelle 350 des Speichervalidierungsmittels – wobei die Schreibbefehle dem Speicher 120 das Speichern von bekannt gültigen Informationen auf jeweiligen der mehreren adressierbaren Orte 122a, ..., 122n verschiedenartig angeben. Das bestimmte Format derartiger Schreibbefehle kann gemäß beliebiger von verschiedenen herkömmlichen Formaten geschehen und ist nicht auf bestimmte Ausführungsformen begrenzt. Die Schnittstelle 340 und die Schnittstelle 350 können die gleiche Schnittstelle sein, obwohl bestimmte Ausführungsformen in dieser Hinsicht nicht eingeschränkt sind. Wie in 1 gezeigt, kann sich das Speichervalidierungsmittel 300 bei einer Ausführungsform innerhalb einer Speichersteuerungseinheit befinden, wodurch es eine Speicherschreiblogik und andere relevante Logik der Speichersteuerung einsetzen kann, um seine Validierungsaktivitäten ohne Notwendigkeit für eine Logikreplikation durchzuführen. Dementsprechend können einige der Merkmale des Speichervalidierungsmittels 300 – z. B. die Speicherschreiblogik 330, die erste Schnittstelle 340 und/oder die zweite Schnittstelle 350 – mit anderer Logik einer derartigen Speichersteuerung gemeinsam genutzt werden.
-
Bei einer Ausführungsform sind mehrere Schreibbefehle, welche durch die Speicherschreiblogik 330 getrennt gesendet werden, eine Reaktion auf das gleiche detektierte Signal, welches der Steuerungslogik 320 den Leistungszustandsübergang angibt. Derartige mehrere Schreibvorgänge können beispielsweise ein frühestes Schreiben auf die mehreren adressierbaren Orte 122a, ..., 122n aufweisen, welches nach dem angegebenen Übergang aus dem Leistungszustand erfolgt.
-
Das Speichervalidierungsmittel 300 kann Logik aufweisen und/oder damit gekoppelt sein, um Informationen zu erzeugen, welche in die Schreibbefehle aufgenommen werden sollen, welche durch die Speicherschreiblogik 330 gesendet werden. Zum Zweck der Darstellung und nicht einer Begrenzung kann das Speichervalidierungsmittel 300 eine Informationsbestimmungslogik 370 aufweisen oder damit gekoppelt sein, welche einen Zufallszahlengenerator oder andere Logik zum Erzeugen von Informationen umfasst, – z. B. einen voreingestellten Wert oder andere Platzhalterinformationen – wobei ein Schreiben von diesen einen oder mehrere der Vielzahl adressierbarer Orte 122a, ..., 122n und/oder einen der einen oder mehrere der Vielzahl Fehlerkorrekturorte 124a, ..., 124n auf einen bekannt gültigen Zustand bringen soll. Bei einer Ausführungsform kann das Speichervalidierungsmittel 300 weiterhin Logik aufweisen oder damit gekoppelt sein, – z. B. in der Informationsbestimmungslogik 370 – um Fehlerkorrekturwerte für Informationen zu erzeugen, welche auf die mehreren adressierbaren Orte 122a, ..., 122n geschrieben werden. Zum Zweck der Darstellung und nicht einer Begrenzung kann das Speichervalidierungsmittel 300 Logik aufweisen oder darauf Zugriff aufweisen, um Paritäts-, Hash- oder andere Operationen auf Informationen durchzuführen, welche mit der Informationsbestimmungslogik 370 erzeugt werden.
-
Schreibbefehle, welche durch die Speicherschreiblogik 330 gesendet werden, können einen Befehl zum Schreiben eines gegebenen Wertes aufweisen, um einen adressierbaren Ort im Speicher auf einen bekannt gültigen Zustand zu bringen, bei welchem bei einer Ausführungsform dieser Befehl (oder ein anderer Befehl, welcher durch die Speicherschreiblogik 330 gesendet wird) weiterhin Fehlerkorrekturinformationen, welche für diesen gegebenen Wert akkurat sind, auf den Speicher 120 schreibt.
-
Ersatzweise oder zusätzlich kann das Speichervalidierungsmittel 300 eine Adressbestimmungslogik 360 aufweisen oder damit gekoppelt sein, welche einen Schaltkomplex oder eine andere Logik umfasst, um der Speicherschreiblogik 330 jeweilige Adressen für verschiedene der mehreren adressierbaren Orte 122a, ..., 122n bereitzustellen. Die Speicherschreiblogik 330 kann Informationen, welche von einer Informationserzeugungslogik 370 bereitgestellt werden, mit jeweiligen der Adressen verschiedenartig kombinieren, welche durch die Adressbestimmungslogik 360 bereitgestellt werden, um mehrere Schreibbefehle zu erzeugen. Die Speicherschreiblogik 330 kann nachfolgend derartige Schreibbefehle an den Speicher 120 kommunizieren – z. B. um jeweilige der mehreren adressierbaren Orte 122a, ..., 122n jeweils auf einen bekannt gültigen Zustand zu bringen. Dementsprechend, obwohl Erzeugen der Schreibbefehlsinformationen – und der Schreibbefehle, welche derartige Schreibbefehlsinformationen aufweisen – als Reaktion auf die Steuerungslogik 320 erfolgen kann, welche den Leistungszustandsübergang detektiert, kann ein derartiges reagierendes Erzeugen selbst unabhängig von jeder Kommunikation derartiger Schreibbefehlsinformationen durch den Prozessor der Computerplattform implementiert werden. In zumindest diesem Sinne kann gesagt werden, dass eine Speichervalidierung von Prozessoroperationen entkoppelt ist.
-
Das Speichervalidierungsmittel 300 kann ein oder mehrere Register 310 aufweisen oder Zugriff darauf aufweisen, um ein Implementieren einiger oder aller oben stehend beschriebener Speichervalidierungsfunktionalität zu unterstützen. Zum Zweck der Darstellung und nicht einer Begrenzung können ein oder mehrere Register 310 ein Register aufweisen, welches festgeschaltet ist, um als ein Kennzeichen für den Leistungszustandsübergang zu arbeiten. Bei einer Ausführungsform kann der Prozessor, eine Leistungsverwaltungseinheit oder ein anderes Mittel der Computerplattform einen Wert auf ein derartiges Kennzeichenregister zu dem Zweck schreiben, den Übergang der Plattform von einem bestimmten niedrigen Leistungszustand anzugeben. Die Steuerungslogik 320 kann beispielsweise automatisch eine Speichervalidierungssequenz als Reaktion auf ein derartiges Schreiben auf das Kennzeichenregister auslösen, wobei die Speichervalidierungssequenz einige oder alle Speicher einer Speichervorrichtung aus einem eventuell ungültigen Zustand in einen bekannt gültigen Zustand bringt. Bei einer Ausführungsform kann ein derartiges Kennzeichenregister automatisch auf einen Standardwert zurückgesetzt werden, nachdem die Steuerungslogik 320 das Schreiben auf das Kennzeichenregister detektiert. Ein Zurücksetzen des Kennzeichenregisters kann das Speichervalidierungsmittel 300 zum Detektieren eines nachfolgenden Übergangs aus einem Leistungszustand vorbereiten, bei welchem es Informationen in dem Speicher möglich ist, zu degradieren.
-
Ersatzweise oder zusätzlich können ein oder mehrere Register 310 Referenzinformationen aufweisen, mit welchen die Adressbestimmungslogik 360 Adressen erzeugt, welche der Speicherschreiblogik 330 bereitgestellt werden sollen. Zum Zweck der Darstellung und nicht einer Begrenzung können das eine oder die mehreren Register 310 Informationen aufweisen, welche eine oder mehrere Speichervorrichtungen, einen oder mehrere Speicherblöcke (z. B. Speicherseiten usw.), eine Größe eines adressierbaren Ortes, eine erste Adresse und eine letzte Adresse eines Speicherblocks, eine erste Adresse und eine Größe eines Speicherblocks und/oder dergleichen identifizieren oder auf andere Weise beschreiben. Bei einer Ausführungsform können einige oder alle derartige Referenzinformationen einem oder mehreren Registern 310 vor dem Leistungszustandsübergang bereitgestellt werden, welcher durch die Steuerungslogik 320 detektiert wird. Bei einer alternativen Ausführungsform können derartige Referenzinformationen einem oder mehreren Registern 310 nach dem Leistungszustandsübergang bereitgestellt werden – z. B. nach dem Einschalten eines Systems oder wenn das System einen Tiefschlafzustand verlässt, bei welchem alle Register 310 zuvor aufgrund des Entfernens des Stroms von ihnen während des vorhergehenden niedrigen Leistungszustands gelöscht wurden. Der Prozessor kann fortfahren, ein oder mehrere Register 310 zu rekonfigurieren, bevor er einen Befehl erteilt, eine Speichervalidierung durchzuführen – z. B. durch Setzen eines „Prüfung beginnen”-Kennzeichens in einem oder mehreren Registern 310. Bei einer derartigen alternativen Ausführungsform erzeugt die Speichervalidierungseinheit 300 dennoch individuelle Schreibbefehle zum Implementieren einer Speichervalidierung ohne die Hilfe des Prozessors, nachdem das „Prüfung beginnen”-Kennzeichen gesetzt wurde.
-
Die Adressbestimmungslogik 360 kann derartige Informationen in einem oder mehreren Registern 310 parsen oder auf andere Weise verarbeiten, um beispielsweise mehrere Adressen in einem Adressbereich, jede Adresse für einen verschiedenen Ort in einer oder mehreren Speichervorrichtungen, abzuleiten. Zusätzlich können ein oder mehrere Register 310 Referenzinformationen aufweisen, mit welchen die Informationsbestimmungslogik 370 Datenwerte erzeugt, welche der Speicherschreiblogik 330 bereitgestellt werden sollen. Zum Zweck der Darstellung und nicht einer Begrenzung können das eine oder die mehreren Register 310 Informationen aufweisen, welche einen oder mehrere Datenwerte, eine oder mehrere Sequenzen von Datenwerten, eine oder mehrere Regeln oder Spezifikationen zum Erzeugen von Datenwerten und/oder dergleichen identifizieren oder auf andere Weise beschreiben. Beispielsweise können die Datenwerte, welche der Speicherschreiblogik 330 bereitgestellt werden, auf der Grundlage von Speicheradressen erzeugt werden – z. B. unter Verwendung eines funktionalen Abbildens oder Hashings einer Speicheradresse durch Aufwärtszählen ausgehend von einem Anfangswert und/oder dergleichen. Zusätzlich können ein oder mehrere Register 310 Kennzeichen und Referenzinformationen aufweisen, mit welchen die Verifizierungslogik 380 des Speichervalidierungsmittels 300 gegebenenfalls Datenwerte, welche durch die Speicherschreiblogik 330 in den Speicher geschrieben werden, zurücklesen und validieren kann. Zum Zweck der Darstellung und nicht einer Begrenzung kann ein Benutzer gegebenenfalls einen Kennzeichenwert in den Registern 310 setzen, um zu ermöglichen, dass die Verifizierungslogik 380 zurückliest und verifiziert, dass alle Datenwerte, welche durch die Speicherschreiblogik 330 in den Speicher 120 geschrieben werden, einschließlich ihrer entsprechenden Fehlerkorrekturwerte korrekt und konsistent sind. Bei bestimmten Ausführungsformen weist das Speichervalidierungsmittel 300 nicht die Funktionalität der Verifizierungslogik 380 auf.
-
Bei einer Ausführungsform kann das Speichervalidierungsmittel 300 gegebenenfalls durch einen Benutzer aktiviert oder deaktiviert werden, – z. B. durch ein Setzen eines Kennzeichens in einem oder mehreren Registern 310 – um zurückzulesen und zu verifizieren, dass die Daten durch einen Speichervalidierungs-Schreibvorgang korrekt zum Speicher geschrieben wurden. Eine derartige Speicherverifizierung kann beispielsweise verwendet werden, um eine Speicherintegrität nach einem Überwechseln aus einem niedrigen Leistungszustand zu prüfen – d. h. um sicherzustellen, dass ein Speicherort sich noch in einem guten Betriebszustand befindet. Beispielsweise kann eine Speichervalidierung ein Durchführen von Datenschreibvorgängen in einem deterministischen (nicht zufälligen) Modus aufweisen, – z. B. durch Zugreifen auf Informationen, welche einen deterministischen Prozess zum Bestimmen von Adress- und/oder Dateninformationen beschreiben – wobei derartige Daten unter Verwendung eines vordefinierten Algorithmus verifiziert werden können. Zum Zweck der Darstellung und nicht einer Begrenzung kann jeder von mehreren Adressorten mit einem jeweiligen Datenwert beschrieben werden, welcher einer funktionalen Abbildung dieser Speicheradresse entspricht – z. B. in einem einfachen Fall, bei welchem ein Wert 0x0 auf den Speicherort 0x0 geschrieben wird, ein Wert 0x4 auf den Speicherort 0x4 geschrieben wird, ..., ein Wert 0xN auf den Speicherort 0xN geschrieben wird usw. Während einer nachfolgenden Speicherverifizierungstufe können die erwarteten Datenwerte durch das Speichervalidierungsmittel 300 unter Verwendung des gleichen funktionalen Abbildungsalgorithmus für jede Adresse der mehreren Adressorte erneut berechnet werden und nachfolgend mit tatsächlichen Werten verglichen werden, welche aus dem Speicher gelesen werden.
-
Bei einer Ausführungsform weist das Speichervalidierungsmittel 300 eine Schaltungslogik auf, – z. B. in der Steuerungslogik 320 – um einen Prozessor, wie beispielsweise dem der Verarbeitungseinheit 105, zu unterbrechen oder ihm auf andere Weise zu signalisieren, dass die Speichervalidierung abgeschlossen ist. Vor einer derartigen Unterbrechung können Speichervalidierungsoperationen durch das Speichervalidierungsmittel 300 parallel mit entkoppelten Operationen des Prozessors stattfinden, welche keinen Zugriff auf den Speicher erfordern. Ein derartiges Unterbrechungssignal kann beispielsweise dem Prozessor ermöglichen, andere Verarbeitungsaufgaben parallel zu der Speichervalidierung durchzuführen, während er darauf wartet, dass die Speichervalidierung abgeschlossen wird – z. B. ohne dass der Prozessor ständig das Speichervalidierungsmittel 300 nach seinem Endstatus abfragen muss. Bei einer Ausführungsform kann ein Benutzer in der Lage sein, das Speichervalidierungsmittel 300 selektiv zu konfigurieren, um eine derartige Unterbrechung bereitzustellen, nachdem alle Speichervalidierungs-Schreibvorgänge (und gegebenenfalls alle Speicherverifizierungen) abgeschlossen sind.
-
4 ist ein Ablaufdiagramm, welches bestimmte Elemente eines Verfahrens 400 zum Bereitstellen einer Speichervalidierung gemäß einer Ausführungsform illustriert. Das Verfahren 400 kann beispielsweise an einem Mittel durchgeführt werden, welches einige oder alle der Merkmale des Speichervalidierungsmittels 300 aufweist – z. B. an einem Mittel einer Computerplattform, welches von einem Prozessor dieser Computerplattform getrennt ist. Bei einer Ausführungsform stellt das Verfahren 400 eine Speichervalidierung in einem System bereit, wie beispielsweise der Computerplattform 100.
-
Das Verfahren 400 kann bei 410 das Speichervalidierungsmittel aufweisen, welches ein Signal detektiert, welches einen Übergang der Computerplattform aus einem ersten Leistungszustand angibt, bei welchem es Daten in einer Speichervorrichtung der Computerplattform möglich ist, während des ersten Leistungszustands zu degradieren. Das detektierte Signal kann beispielsweise direkt oder indirekt durch eine externe Logik einer Speichersteuerung, durch den Prozessor, durch eine Leistungsverwaltungseinheit und/oder durch ein anderes Mittel der Computerplattform bereitgestellt werden.
-
Als Reaktion auf das detektierte Signal kann das Verfahren 400 bei 420 mehrere Schreibvorgänge auf mehrere adressierbare Orte der Speichervorrichtung durchführen. Die mehreren Schreibvorgänge bei 420 können beispielsweise jede und alle eventuell ungültigen Informationen an mehreren adressierbaren Orten einer oder mehrerer Speichervorrichtungen überschreiben. Beispielsweise können die mehreren Schreibvorgänge bei 420 Speicherzellen überschreiben, welche sich zuvor eventuell in einem unbestimmten logischen Zustand befanden. Bei bestimmten Ausführungsformen können die mehreren Schreibvorgänge bei 420 weiterhin einen Fehlerkorrekturwert schreiben, welcher anderen Informationen entspricht und für diese akkurat ist, welche auch von den mehreren Schreibvorgängen bei 420 in den Speicher geschrieben werden.
-
Jeder der mehreren Schreibvorgänge kann bei 420 beispielsweise als Reaktion auf das bei 410 detektierte Signal erfolgen. Beispielsweise kann das Signal, welches bei 410 detektiert wird, bewirken, dass das Mittel automatisch mehrere Schreibbefehle erzeugt, jeder Schreibbefehl für einen jeweiligen der mehreren Schreibvorgänge. Eine Erzeugung von derartigen mehreren Schreibbefehlen kann umfassen, dass das Mittel Schreibbefehlsinformationen erzeugt oder auf andere Weise bestimmt, welche verschiedenartig in jeweilige der mehreren Schreibbefehle aufgenommen werden sollen.
-
Bei einer Ausführungsform können ein Erzeugen oder auf andere Weise Bestimmen derartiger Schreibbefehlsinformationen in einer oder mehrfacher Hinsicht von zumindest bestimmten Kommunikationsarten aus dem Prozessor unabhängig sein. Zum Zweck der Darstellung und nicht einer Begrenzung kann das Mittel derartige Schreibbefehlsinformationen unabhängig von jeder Kommunikation aus dem Prozessor bestimmen, – z. B. zumindest von jeder Kommunikation, welche dem angegebenen Leistungszustandsübergang nachfolgt – welche bestimmte Informationen angeben, welche geschrieben werden sollen, um eine Speichervalidierung eines adressierbaren Ortes im Speicher sicherzustellen. Ersatzweise oder zusätzlich kann das Mittel derartige Schreibbefehlsinformationen unabhängig von jeder Kommunikation aus dem Prozessor bestimmen, – z. B. zumindest von jeder Kommunikation, welche dem angegebenen Leistungszustandsübergang nachfolgt – welche eine Adresse eines Ortes im Speicher angeben, an welchen Informationen zur Speichervalidierung geschrieben werden sollen. Bei einer Ausführungsform können Schreibbefehlsinformationen auf der Grundlage von Referenzinformationen bestimmt werden, welche in einer Ablage gespeichert sind, – wie beispielsweise das eine oder die mehreren Register 310 – auf welche Steuerungslogik des Mittels unabhängig von dem Prozessor der Computerplattform zugreifen kann. Bei einer Ausführungsform können einige oder alle derartige Referenzinformationen vor dem Leistungszustandsübergang, welcher bei 410 detektiert wird, der Ablage bereitgestellt werden.
-
Bei einer Ausführungsform können die mehreren Schreibvorgänge bei 420 einen frühesten Schreibvorgang an die mehreren adressierbaren Orte aufweisen. Zum Zweck der Darstellung und nicht einer Begrenzung können die mehreren Schreibvorgänge bei 420 durchgeführt werden, um den Speicher für ein nachfolgendes Laden eines Codes aus Firmware-Schnittstellencode, ROM-Auswahlcode, Hochfahrcode, Betriebssystemscode und/oder dergleichen zu initialisieren.
-
Für einen oder mehrere der mehreren Schreibvorgänge bei 420 kann das Speichervalidierungsmittel darauf verzichten, die dadurch geschriebenen Informationen zurückzulesen – z. B. wo derartige Zurückleseoperationen auf andere Weise durchgeführt werden, um den Erfolg derartiger Schreibvorgänge zu validieren. Beispielsweise kann das Speichervalidierungsmittel bei einem der mehreren Schreibvorgänge bei 420 eine Angabe aufweisen, dass der Speicher eine reziproke Kommunikation zum Implementieren eines derartigen Zurücklesens vermeiden soll. Ersatzweise oder zusätzlich kann das Speichervalidierungsmittel bestimmen, auf ein Senden einer Meldung zu verzichten, welche eine derartige reziproke Kommunikation zum Implementieren eines Zurücklesens explizit anfordert.
-
Durchschnittsfachleute erkennen aus der Beschreibung hier, dass bestimmte Ausführungsformen verschiedenartig ein reziprokes Verfahren für das des Verfahrens 400 aufweisen, bei welchem ein derartiges reziprokes Verfahren durch ein Mittel durchgeführt wird, – z. B. die Zentraleinheit – um das Signal, welches durch das Verfahren 400 bei 410 detektiert wird, an das Speicherverwaltungsmittel zu senden. Ein derartiges reziprokes Verfahren kann beispielsweise von Software-Befehlen durchgeführt werden, welche durch den Prozessor ausgeführt werden. Elemente der 5 und 6, welche nachfolgend diskutiert werden, illustrieren Merkmale von zwei derartigen reziproken Verfahren. Es versteht sich, dass beliebige von verschiedenen anderen Verfahren gemäß verschiedenen Ausführungsformen durchgeführt werden können – z. B. durch beliebige von verschiedenen anderen Plattformmitteln.
-
5 ist ein Ablaufdiagramm, welches ein Verfahren 500 zum Laden von Software-Befehlen in einen validierten Speicher gemäß einer Ausführungsform illustriert. Das Verfahren 500 kann beispielsweise von einem System mit einigen oder allen Merkmalen der Computerplattform 100 durchgeführt werden.
-
Bei einer Ausführungsform wird das Verfahren 500 als Teil eines Hochfahr-, Reaktivierungs- oder anderen Prozesses der Computerplattform durchgeführt, welcher ein Überwechseln eines Speichers aus einem bestimmten Leistungszustand aufweist. Während eines derartigen Leistungszustands kann es Informationen, welche in einem flüchtigen Speicher der Computerplattform gespeichert sind, möglich sein, zu degradieren. Zum Zweck der Darstellung und nicht einer Begrenzung kann ein derartiger Leistungszustand einen inaktiven Auffrischmechanismus aufweisen, welcher sonst die Ladungspegel in den Speicherzellen einer oder mehrerer Speichervorrichtungen unterhalten kann. Ersatzweise oder zusätzlich kann ein derartiger Leistungszustand inaktive Fehlerdetektions- und/oder Fehlerkorrekturmechanismen aufweisen, welche sonst sicherstellen, dass Paritätswerte, Hash-Werte und/oder andere Fehlerkorrekturwerte für entsprechende Informationen, welche im Speicher gespeichert sind, aktuell gehalten werden.
-
Das Verfahren 500 kann bei 510 einen Prozessor der Plattform aufweisen, – z. B. in der Verarbeitungseinheit 105 – welcher einen ersten Befehl nach einem Einschaltereignis abruft. Das Verfahren 500 kann zusätzliche Operationen (nicht gezeigt) vor dem Abrufen 510 aufweisen, wie beispielsweise eine oder mehrere Prozessorinitialisierungsoperationen, um den Prozessor aus dem Rücksetzzustand zu bringen, sicherzustellen, dass die Stromschienen stabil sind, einen oder mehrere Register des Prozessors zu konfigurieren und/oder dergleichen.
-
Das Abrufen bei 510 kann beispielsweise für die erste Codezeile sein, welche der Prozessor als Reaktion auf ein RÜCKSETZereignis abruft, wie beispielsweise einen Benutzer, welcher eine „Zurücksetzen”-Taste oder eine andere derartige Taste drückt, um einen Leistungsübergang auszulösen. Zum Zweck der Darstellung und nicht einer Begrenzung kann der erste Befehl bei 510 aus einer vordefinierten Adresse (z. B. 0xFFFF0) eines EEPROM, Flash-Laufwerks oder einer anderen nicht flüchtigen Speichervorrichtung der Computerplattform abgerufen werden. Beispielsweise kann der Prozessor fest verdrahtet oder auf andere Weise konfiguriert sein, um den ersten Befehl standardmäßig aus einem Speicherort mit der vordefinierten Adresse abzurufen. Bei einer Ausführungsform definiert der erste Prozessorbefehl bei 510 einen Sprung zu der Software, welche durch den Prozessor ausgeführt werden soll, oder bestimmt ihn auf andere Weise. Bestimmte Ausführungsformen sind nicht auf den bestimmten Software-Typ – z. B. Firmware-Schnittstellencode, OS-Code, entfernter Hochfahrcode oder andere Befehle – beschränkt, welcher durch den Prozessor ausgeführt werden soll.
-
Auf der Grundlage des ersten Prozessorbefehls kann das Verfahren 500 bei 520 einen Sprung auf eine Anfangsadresse der Software implementieren. Bestimmte Ausführungsformen sind jedoch in dieser Hinsicht nicht beschränkt. Beispielsweise kann die Anfangsadresse einer derartigen Software bei einer anderen Ausführungsform in dem Befehl gespeichert sein, welcher bei 510 abgerufen wird. Der Prozessor kann zumindest anfänglich Befehle für derartige Software aus einem nicht flüchtigen Speicher abrufen – z. B. bevor einige adressierbare Orte in einer Speichervorrichtung der Computerplattform in einen bekannt gültigen Zustand gebracht werden.
-
Dem Springen auf die Software-Anfangsadresse bei 520 nachfolgend, können eine oder mehrere Operationen 515 des Verfahrens 500 durchgeführt werden – z. B. als Reaktion auf das Ausführen von Befehlen derartiger Software durch den Prozessor. Die nachfolgenden Operationen 515 können ein Durchführen von Initialisierungsoperationen 530 für eine oder mehrere Chipsatzkomponenten – z. B. andere als eine Speichervorrichtung – der Computerplattform aufweisen. Zusätzlich oder ersatzweise können nachfolgende Operationen 515 bei 540 ein Durchführen einer oder mehrerer Software-Funktionen aufweisen, welche nicht den Speicher betreffen. Merkmale der Operationen 515 sind bloß beispielhaft und begrenzen bestimmte Ausführungsformen nicht.
-
Das Verfahren 500 kann weiterhin bei 550 ein Durchführen einer Speicherinitialisierung bei einer Vorbereitung des Überwechselns eines oder mehrerer adressierbarer Speicherorte aus einem eventuell ungültigen Zustand in einen bekannt gültigen Zustand aufweisen. Die Speicherinitialisierung 550 kann beispielsweise ein Bestimmen aufweisen, dass die Kommunikation zwischen einem Speichervalidierungsmittel und einer Speichervorrichtung aktiviert ist, dass eine Stromzufuhr an das Speichervalidierungsmittel und/oder die Speichervorrichtung stabil ist, und sicherstellen, dass alle andere Anforderungen zum Beginnen von Lese- und/oder Schreibvorgängen auf die Speichervorrichtung erfüllt sind.
-
Nach der Initialisierung bei 550 kann das Verfahren 500 bei 560 dem Speichervalidierungsmittel eine Angabe eines Übergangs auf einen Leistungszustand signalisieren, welcher die Integrität der Informationen erhält, welche in einer Speichervorrichtung gespeichert sind. Als Reaktion beginnt das Speichervalidierungsmittel Speichervalidierungsoperationen – z. B. gemäß einiger oder aller Merkmale des Verfahrens 400. Herkömmliche Systemeinschaltsequenzen verlassen sich darauf, dass ein Plattformprozessor Schreibbefehle erzeugt und kommuniziert, um eine Speichervalidierung durchzuführen. Jedoch nimmt ein derartiger Ansatz Prozessorzyklen in Anspruch, um eine derartige Speichervalidierung zu implementieren. Bevor Informationen aus dem Prozessor die Speichervorrichtung erreichen können, müssen sie ferner vielleicht durch den eigenen Cache-Speicher des Prozessors und/oder durch einen oder mehrere zwischengeschaltete Kommunikationsbusse gehen. Ferner muss eine Speichersteuerungseinheit oft zuerst die Schreibbefehle des Prozessors abfangen, bevor sie auf die Speichervorrichtung selbst schreibt. Im Gegensatz dazu kann ein Speichervalidierungsmodul einen vergleichsweise kürzeren Kommunikationsweg zu der Speichervorrichtung aufweisen und kann Prozessorzyklen für einen oder mehrere andere Initialisierungsprozesse freisetzen.
-
Nachdem eine Speichervalidierung begonnen wurde, kann das Verfahren 500 bei 570 eine Prüfung auf einen Abschluss derartiger Speichervalidierungsoperationen durchführen. Die Prüfung bei 570 kann als Reaktion auf ein Prüfungsergebnis, welches angibt, dass die Speichervalidierung bis jetzt nicht abgeschlossen ist, wiederholt werden. Bei einer alternativen Ausführungsform kann ein Signal oder eine Unterbrechung durch das Speichervalidierungsmittel bereitgestellt werden, ohne dass ein Software-Prozess einen Abschluss der Speichervalidierungsoperationen abfragen muss. Nach dem Detektieren einer Angabe, dass die Speichervalidierung abgeschlossen wurde, durch die Prüfung 570, kann das Verfahren 500 bei 580 einen oder mehrere Software-Befehle in den Speicher kopieren – z. B. an Orte, welche aus einem eventuell ungültigen Zustand auf einen bekannt gültigen Zustand übergewechselt sind.
-
Nachdem sie bei 580 in den Speicher kopiert wurden, sind die Software-Befehle – z. B. Firmware-Schnittstellencode, OS-Code, Hochfahrcode und/oder dergleichen – für einen viel schnelleren Zugriff durch den Prozessor verfügbar als im Vergleich zu dem Prozessor, welcher derartige Befehle aus einem nicht flüchtigen Speicher abruft.
-
6 ist ein Ablaufdiagramm, welches ein Verfahren 600 zum Laden von Software-Befehlen in einen validierten Speicher gemäß einer Ausführungsform illustriert. Das Verfahren 600 kann beispielsweise von einem System mit einigen oder allen Merkmalen der Computerplattform 100 durchgeführt werden.
-
Bei einer Ausführungsform wird das Verfahren 600 als Teil eines Hochfahr-, Reaktivierungs- oder anderen Prozesses durchgeführt, welcher ein Überwechseln eines Speichers aus einem bestimmten Leistungszustand aufweist. Während eines derartigen Leistungszustands kann es Informationen, welche in einem flüchtigen Speicher der Computerplattform gespeichert sind, möglich sein, zu degradieren.
-
Das Verfahren 600 kann bei 605 einen Prozessor der Plattform aufweisen, – z. B. in der Verarbeitungseinheit 105 – welcher einen ersten Befehl nach einem Einschaltereignis abruft. Das Verfahren 600 kann zusätzliche Operationen (nicht gezeigt) vor dem Abrufen 605 aufweisen, wie beispielsweise eine oder mehrere Prozessorinitialisierungsoperationen, um den Prozessor aus dem Rücksetzzustand zu bringen, sicherzustellen, dass die Stromschienen stabil sind, einen oder mehrere Register des Prozessors zu konfigurieren und/oder dergleichen.
-
Das Abrufen bei 605 kann beispielsweise für die erste Codezeile sein, welcher der Prozessor als Reaktion auf ein RÜCKSETZereignis abruft, wie beispielsweise ein Benutzer, welcher eine „Zurücksetzen”-Taste oder eine andere derartige Taste drückt, um einen Leistungsübergang auszulösen. Auf der Grundlage des ersten Prozessorbefehls kann das Verfahren 600 bei 610 einen Sprung auf eine Anfangsadresse der Software implementieren. Bestimmte Ausführungsformen sind jedoch in dieser Hinsicht nicht beschränkt. Beispielsweise kann die Anfangsadresse einer derartigen Software bei einer anderen Ausführungsform in dem Befehl gespeichert sein, welcher bei 605 abgerufen wird. Der Prozessor kann zumindest anfänglich einige Befehle für derartige Software aus einem nicht flüchtigen Speicher abrufen – z. B. bevor einige adressierbare Orte in einer Speichervorrichtung der Computerplattform in einen bekannt gültigen Zustand gebracht werden.
-
Dem Springen auf die Software-Anfangsadresse 610 nachfolgend, kann das Verfahren 600 bei 615 eine Speicherinitialisierung als Vorbereitung für ein Überwechseln eines oder mehrerer adressierbarer Speicherorte aus einem eventuell ungültigen Zustand in einem bekannt gültigen Zustand durchführen. Bei einer Ausführungsform wird eine Speicherinitialisierung 615 vor anderen Initialisierungsoperationen begonnen – z. B. vor einer Initialisierung von Chipsatz-Komponenten (beispielsweise von anderen Komponenten als die fragliche Speichervorrichtung). Die Speicherinitialisierung 615 kann beispielsweise ein Bestimmen aufweisen, dass die Kommunikation zwischen einem Speichervalidierungsmittel und einer Speichervorrichtung aktiviert ist, dass eine Stromzufuhr an das Speichervalidierungsmittel und/oder die Speichervorrichtung stabil ist, und sicherstellen, dass alle andere Bedingungen zum Beginnen von Schreibvorgängen auf die Speichervorrichtung erfüllt sind. Nach der Initialisierung bei 615 kann das Verfahren 600 bei 620 dem Speichervalidierungsmittel eine Angabe eines Übergangs auf einen Leistungszustand signalisieren, welcher die Integrität der Informationen erhält, welche in einer Speichervorrichtung gespeichert sind. Als Reaktion kann das Speichervalidierungsmittel (MVA) bei 650 Speichervalidierungsoperationen durchführen – z. B. gemäß einiger oder aller Merkmale des Verfahrens 400.
-
Das Leistungsvermögen der Speichervalidierungsoperationen bei 650 kann beispielsweise von Operationen des Prozessors entkoppelt sein, welche auf die Signalisierung des Speichervalidierungsmittels bei 620 nachfolgen. Zum Zweck der Darstellung und nicht einer Begrenzung kann das Verfahren 600 eine oder mehrere Operationen 625 aufweisen, welche von dem Prozessor durchgeführt werden – z. B. als Reaktion auf den Prozessor, welcher Anweisungen ausführt, welche er aus einem nicht flüchtigen Speicher abfragt. Die Operationen 625 können beispielsweise ein Durchführen von Initialisierungsoperationen 630 für eine oder mehrere Chipsatzkomponenten der Computerplattform aufweisen – z. B. andere Komponenten als die Speichervorrichtung, welche bei 650 validiert wird. Die Initialisierungsoperationen 630 können beispielsweise einen Host-Prozessor umfassen, welcher eine Konfiguration einer USB-Steuervorrichtung, einer PCI-(Peripheral Component Interconnect)- und/oder PCIe-Steuervorrichtung, einer SATA-(Serial Advanced Technology Attachment)-Steuervorrichtung, einer Netzwerksteuervorrichtung und/oder dergleichen einstellt oder auf andere Weise bestimmt. Zusätzlich oder ersatzweise können nachfolgende Operationen 625 bei 635 ein Durchführen einer oder mehrerer Software-Funktionen aufweisen, welche nicht den Speicher betreffen. Die Operationen 625 sind bloß beispielhaft und begrenzen bestimmte Ausführungsformen nicht.
-
Nachdem eine Speichervalidierung durch das Speichervalidierungsmittel begonnen ist, kann das Verfahren 600 bei 640 ein Ende für derartige Speichervalidierungsoperationen bestimmen. Das Bestimmen bei 640 kann beispielsweise ein wiederholtes Prüfen auf eine Angabe aufweisen, dass die Speichervalidierung abgeschlossen ist. Bei einer Ausführungsform basiert das Bestimmen bei 640 darauf, dass das Speichervalidierungsmittel bei 660 den Abschluss der Speichervalidierung an andere Logik der Speichersteuerung und/oder an einen Prozess signalisiert, welcher auf dem Prozessor ausgeführt wird.
-
Nach dem Bestimmen bei 640 kann das Verfahren 600 bei 645 eine oder mehrere Software-Anweisungen an Speicherorte kopieren – z. B. an Orte, welche durch die Speichervalidierung aus einem eventuell ungültigen Zustand in einen bekannt gültigen Zustand übergewechselt sind. Nachdem sie bei 645 in den Speicher kopiert wurden, sind die Software-Befehle – z. B. Firmware-Schnittstellencode, OS-Code, Hochfahrcode und/oder dergleichen – für einen viel schnelleren Zugriff durch den Prozessor verfügbar als im Vergleich zu dem Prozessor, welcher derartige Befehle aus einem nicht flüchtigen Speicher abruft.
-
Hier sind Verfahren und Architekturen für einen Zugriff auf Computerspeicher beschrieben. In der oben stehenden Beschreibung werden zum Zwecke der Erklärung zahlreiche spezifische Einzelheiten dargestellt, um ein gründliches Verständnis bestimmter Ausführungsformen bereitzustellen. Durchschnittsfachleuten ist jedoch offenkundig, dass bestimmte Ausführungsformen ohne diese spezifischen Einzelheiten in die Praxis umgesetzt werden können. Bei anderen Instanzen werden Strukturen und Vorrichtungen als Blockdiagramm gezeigt, um ein Verschleiern der Beschreibung zu vermeiden.
-
Der Verweis in der Beschreibung auf „eine Ausführungsform” bedeutet, dass mindestens eine Ausführungsform der Erfindung ein bestimmtes Merkmal, eine Struktur oder eine Eigenschaft aufweist, welche im Zusammenhang mit der Ausführungsform beschrieben wird. Das Auftreten der Phrase „bei einer Ausführungsform” an verschiedenen Stellen in der Beschreibung verweist nicht notwendigerweise immer auf die gleiche Ausführungsform.
-
Einige Abschnitte der ausführlichen Beschreibung hier werden in Bezug auf Algorithmen und symbolische Repräsentationen von Operationen auf Datenbits innerhalb eines Computerspeichers dargestellt. Diese algorithmischen Beschreibungen und Repräsentationen sind das Mittel, welches von Durchschnittsfachleuten der Computertechnik verwendet wird, um die Substanz ihrer Arbeiten anderen Durchschnittsfachleuten am wirksamsten zu vermitteln. Ein Algorithmus ist hier und im Allgemeinen als eine selbst konsistente Sequenz von Schritten gedacht, welche zu einem erwünschten Ergebnis führen. Die Schritte erfordern physikalische Manipulationen von physikalischen Quantitäten. Gewöhnlich, obwohl nicht notwendigerweise, weisen diese Quantitäten die Form elektrischer oder magnetischer Signale auf, welche gespeichert, übermittelt, kombiniert, verglichen und auf andere Weise manipuliert werden können. Es hat sich zuweilen, hauptsächlich aus Gründen der allgemeinen Verwendung, als zweckmäßig erwiesen, diese Signale als Bits, Werte, Elemente, Symbole, Zeichen, Terme, Zahlen oder dergleichen zu bezeichnen.
-
Es sollte jedoch bedacht werden, dass alle diese und ähnliche Begriffe den geeigneten physikalischen Quantitäten zugeordnet werden müssen und bloß zweckmäßige Etiketten sind, welche für diese Quantitäten verwendet werden. Außer es wird ausdrücklich anders lautend vermerkt, wie es aus der Beschreibung hier offenkundig ist, ist es anerkannt, dass überall in der Beschreibung der Einsatz von Begriffen, wie beispielsweise „Verarbeiten” oder „Errechnen” oder „Berechnen” oder „Bestimmen” oder „Anzeigen” oder dergleichen, die Aktion und Prozesse eines Computersystems oder einer ähnlichen elektronischen Rechenvorrichtung bezeichnet, welche Daten, welche innerhalb der Register und Speicher des Computersystems durch physikalische (elektronische) Quantitäten repräsentiert sind, zu anderen Daten manipuliert und transformiert, welche genauso als physikalische Quantitäten innerhalb der Speicher oder Register des Computersystems oder innerhalb anderer derartiger Informationsspeicher-, -Übertragungs- oder -Anzeigevorrichtungen repräsentiert werden.
-
Bestimmte Ausführungsformen betreffen auch eine Vorrichtung zum Durchführen der hier beschriebenen Operationen. Diese Vorrichtung kann für die erforderlichen Zwecke gesondert aufgebaut werden, oder sie kann einen Universalcomputer umfassen, welcher von einem Computerprogramm, welches in dem Computer gespeichert ist, selektiv aktiviert oder neu konfiguriert wird. Ein derartiges Computerprogramm kann auf einem computerlesbaren Speichermedium gespeichert sein, wie beispielsweise insbesondere auf allen Plattentypen einschließlich Disketten, optischen Festplatten, CD-ROMs und magneto-optischen Festplatten, Nur-Lesespeichern (ROMs), Direktzugriffsspeichern (RAMs), wie beispielsweise dynamischen Direktzugriffsspeichern (DRAM), EPROMs, EEPROMs, magnetischen oder optischen Karten oder auf allen Medientypen, welche zum Speichern elektronischer Anweisungen geeignet sind und an einen Computersystembus angeschlossen sind.
-
Die hier dargestellten Algorithmen und Anzeigen an sich betreffen keinen bestimmten Computer oder andere Vorrichtung. Verschiedene Universalsysteme können mit Programmen gemäß den hier beschriebenen Lehren verwendet werden, oder es kann sich als zweckmäßig erweisen, eine spezialisiertere Vorrichtung zu konstruieren, um die erforderlichen Verfahrensschritte durchzuführen. Die erforderliche Struktur für verschiedene dieser Systeme ist aus der Beschreibung hier ersichtlich. Zusätzlich sind bestimmte Ausführungsformen nicht unter Bezugnahme auf eine bestimmte Programmiersprache beschrieben. Es ist anerkannt, dass verschiedene Programmiersprachen verwendet werden können, um die Lehren derartiger Ausführungsformen, wie hier beschriebenen, zu implementieren.
-
Neben dem, was hier beschrieben ist, können verschiedene Modifikationen an den offenbarten Ausführungsformen und ihren Implementierungen ausgeführt werden, ohne ihren Schutzumfang zu verlassen. Deshalb müssen die Darstellungen und Beispiele hier in einem beispielhaften und nicht in einem einschränkenden Sinn verstanden werden. Der Schutzumfang der Erfindung muss allein unter Bezugnahme auf die nachfolgenden Ansprüche bemessen werden.