HILDNER, Christian (Propsteistr. 205, Nürnberg, 90455, DE)
| Patentansprüche 1. Verfahren zum Prüfen eines Hauptspeichers (3) eines Pro¬ zessors (1), umfassend einen Cache-Speicher (2) und mehrere Register (6) und/oder Registerspeicher (R) , d a d u r c h g e k e n n z e i c h n e t, dass vor dem Ausführen eines Speichertests (T) eine gegebenenfalls momen¬ tan ablaufende Hochlaufsequenz unterbrochen wird, temporäre für den Speichertest (T) erforderliche Daten in mindestens ein Register (6) geschrieben oder dort gehalten werden und der Zugriff vom Cache-Speicher (2) auf den Hauptspeicher (3) aktiviert wird, wobei der Zugriff auf den Hauptspeicher (3) über den Cache-Speicher (2) derart ausgeführt wird, dass Bit¬ muster (BM) in den Cache-Speichers (2) und über diesen in den Hauptspeicher (3) geschrieben und aus dem Hauptspeicher (3) über den Cache-Speicher (2) wieder ausgelesen und verglichen werden, wobei der zu testende Bereich des Hauptspeichers (3) größer ist als die Größe des Cache-Speichers (2) und die ge¬ gebenenfalls vor dem Ausführen des Speichertests (T) unter- brochene Hochlaufsequenz nach Ablauf des Speichertests (T) erneut gestartet oder fortgesetzt wird. 2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass nach Ablauf des Speichertest (T) der Zugriff des Cache-Speichers (2) auf den Hauptspeicher (3) getrennt wird. 3. Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass im Fall eines vor dem Speicher- test (T) optional durchgeführten Tests von Adressleitungen und/oder Datenleitungen der Speichertest erst nach fehlerfreiem Test der Adressleitungen bzw. Datenleitungen gestartet wird . 4. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass als Bitmuster (BM) ein Muster mit Nullen und/oder Einsen verwendet wird. 5. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass mittels des Speichertests (T) ein oder mehrere Speicherzellen (3.1 bis 3.z) des Hauptspei¬ chers (3) vor einem Start des Betriebssystems getestet wer- den . 6. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass temporäre, für die Hochlaufse¬ quenz erforderliche Daten vor dem Speichertest (T) in einem Register (6) zwischengespeichert und während oder nach dem Speichertest (T) wieder verwendet/ausgelesen werden. 7. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass ein aus dem Vergleich der Bit- muster (BM) resultierendes Ergebnis in ein Register (6) des Prozessors (1) geschrieben werden. 8. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass mehrere Cache-Speicher (2, 5) verwendet werden, wobei einer der Cache-Speicher (2) zum Speichern von temporären Daten, wie Programmvariablen, und ein anderer Cache-Speicher (5) zum Speichern vom Programmcode verwendet wird. 9. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass der Programmcode in einem Lese¬ speicher (7) hinterlegt wird. 10. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass der den Speichertest (T) ausfüh¬ rende Programmcode im Hauptprogramm oder in einem Unterpro¬ gramm ohne Rücksprungoption implementiert wird. 11. Vorrichtung zum Prüfen eines Hauptspeichers (3) eines Prozessors (1), umfassend einen Cache-Speicher (2) und mehre¬ re Register ( 6) , dadurch gekennzeichnet, dass zwischen dem Hauptspeicher (3) und dem Prozessor (1) zumindest ein Cache-Speicher (2, 5) derart angeordnet ist, dass während der Ausführung eines Speichertests (T) ein Zugriff auf den Hauptspeicher (3) über den Cache-Speicher (2, 5) derart ausführbar ist, dass vorgebbare Bitmuster (BM) in den Cache-Speicher (2, 5) und über diesen in den Hauptspeicher (3) schreibbar und aus dem Hauptspeicher (3) wieder auslesbar sind, wobei der Prozessor (1) die aus dem Hauptspeicher (3) wieder ausgelesenen Bitmuster (BM) mit Soll-Bitmustern vergleicht, anderenfalls der Ca¬ che-Speicher (2) vom Hauptspeicher (3) getrennt ist, wobei der die Größe des Cache-Speichers (2) kleiner ist als der zu testende Bereich des Hauptspeichers (3) . |
Verfahren und Vorrichtung zum Prüfen eines Hauptspeichers eines Prozessors
Die Erfindung betrifft ein Verfahren zum Prüfen eines Hauptspeichers eines Prozessors. Des Weiteren betrifft die Erfin ¬ dung eine Vorrichtung zum Prüfen eines Hauptspeichers eines Prozessors .
In modernen Computersystemen ist es üblich, dass der Prozessor einen möglichst großen und kostengünstigen Hauptspeicher aufweist. Für die Abarbeitung von Programmen durch den Prozessor sind dabei verschiedene Speicherzugriffe, wie Laden/ Lesen, Speichern und/oder Schreiben von Daten, Operanten und/oder Befehlen erforderlich.
Aufgrund von Sicherheits- und/oder Betriebsanforderungen ist es üblich, Teile des Hauptspeichers von Zeit zu Zeit zu prü- fen. Bedingt durch die Größe des Hauptspeichers und relativ langen Zugriffszeiten des Prozessors auf den Hauptspeicher benötigt ein Speichertest viel Zeit und widerspricht bei ¬ spielsweise der Forderung nach kurzen Hochlaufzeiten des Prozessors .
Der Erfindung liegt daher die Aufgabe zugrunde, ein Verfahren zum Prüfen eines Hauptspeichers eines Prozessors zu beschleu ¬ nigen. Des Weiteren ist es Aufgabe der Erfindung eine Vorrichtung zum Prüfen des Hauptspeichers zu vereinfachen.
Die Aufgabe hinsichtlich des Verfahrens wird erfindungsgemäß durch die im Anspruch 1 angegebenen Merkmale gelöst. Hinsichtlich der Vorrichtung wird die Aufgabe durch die im Anspruch 11 angegebenen Merkmale gelöst.
Vorteilhafte Ausgestaltungen der Erfindung sind Gegenstand der Unteransprüche. Beim Verfahren zum Prüfen eines Hauptspeichers eines Prozes ¬ sors, wobei der Hauptspeicher eine Mehrzahl von Speicherzellen aufweist, wird vor dem Ausführen eines Speichertests eine gegebenenfalls momentan ablaufende Hochlaufsequenz unterbro- chen und temporäre für den Speichertest erforderliche Daten, wie z. B. Programmvariablen, in mindestens ein Register geschrieben oder dort gehalten. Darüber hinaus wird der Zugriff vom Cache-Speicher auf den Hauptspeicher aktiviert, wobei der Zugriff auf die Speicherzellen des Hauptspeichers über einen Cache-Speicher während des Speichertests derart erfindungsge ¬ mäß ausgeführt wird, dass Bitmuster in den Cache-Speicher und über diesen in den Hauptspeicher geschrieben und aus dem Hauptspeicher über den Cache-Speicher wieder ausgelesen und verglichen werden, wobei der zu testende Bereich des Haupt- Speichers größer ist als die Größe des Cache-Speichers. An ¬ schließend wird die gegebenenfalls vor dem Ausführen des Speichertests unterbrochene Hochlaufsequenz erneut gestartet oder fortgesetzt. Nach Ablauf des Speichertests wird dann der Cache-Speicher wieder vom Hauptspeicher getrennt und die vor dem Ausführen des Speichertests unterbrochene Hochlaufsequenz erneut ge ¬ startet oder fortgesetzt. Darüber hinaus werden die aus dem Hauptspeicher wieder ausgelesenen Bitmuster mit erzeugten Soll-Bitmustern verglichen. Insbesondere wird der Speichertest vor einem Start des Betriebssystems ausgeführt, wobei die momentan laufende Hochlaufsequenz ein Vor- oder das Initialisierungsprogramm eines Computerprogramms des Prozessors ist .
Ein derartiges Verfahren unter Verwendung von mindestens einem schnellen Cache-Speicher mit wesentlich kürzeren Zugriffszeiten ermöglicht ein sicheres und gegenüber dem Stand der Technik deutlich schnelleres Testverfahren für den Haupt- Speicher. Dabei kann der Test des Hauptspeichers stufenweise und/oder blockweise ausgeführt werden. Der Prozessor ist vorzugsweise als ein Mikroprozessor ausgebildet. Mikroprozessoren sind Prozessoren, bei denen alle Komponenten auf einem Mikrochip angeordnet sind. Zweckmäßigerweise wird zum insbesondere wortweisen, zellen ¬ weisen und/oder blockweisen Prüfen des Hauptspeichers als Bitmuster ein Muster mit Nullen und/oder Einsen verwendet. Dabei wird beispielsweise der Hauptspeicher in gleichgroße, voneinander unabhängige Bereiche, z. B. Worte, Blöcke, und somit wortweise bzw. blockweise, unterteilt, die zeitlich verschieden gelesen oder beschrieben werden können. Beispielsweise werden aufeinander folgende Speicherworte zyk ¬ lisch in aufeinander folgende Speicherbänke oder -blocke ge ¬ schrieben oder aus diesen gelesen. Durch Testen von aufeinan- der folgenden Speicherbänken bzw. -blocken kann die Zugriffszeit verkürzt werden, da die Breite des Datenbusses zum
Hauptspeicher größer als die Wortbreite des Prozessors ist.
Für einen dauerhaft sicheren Betrieb des Hauptspeichers wer- den bei einer zellenweisen Prüfung ein oder mehrere Speicherzellen des Hauptspeichers mehrfach getestet. Analog dazu wer ¬ den bei einem blockweisen Test ein oder mehrere Speicherblö ¬ cke mehrfach getestet. Jede Speicherzelle wird mit einem be ¬ kannten Wert und dem Komplement (Invertierung) des Wertes be- schrieben, so dass jedes Bit einmal auf den Wert „1" und ein ¬ mal den Wert „0" halten muss.
In einer einfachen Ausführungsform werden ein oder mehrere Speicherzellen und/oder -blocks des Hauptspeichers zyklisch getestet. Alternativ oder zusätzlich kann der Test ereignisgesteuert ausgeführt werden. Beispielsweise wird der Spei ¬ chertest vom Bootlader vor dem Start des Betriebssystems aus ¬ geführt. Darüber hinaus kann nach einem fehlerhaften Programmablauf der Hauptspeichertest vom Prozessor automatisch aktiviert und zumindest einmal oder mehrmals ausgeführt wer ¬ den . Zweckmäßigerweise wird vor einem Durchführen eines Speichertests des Hauptspeichers ein Test von Adress- und/oder Daten ¬ leitungen ausgeführt. Dabei werden die Tests von Adress- und/oder Datenleitungen über den Direktzugriff des Prozessors auf den Hauptspeicher und nicht über den Cache-Speicher ausgeführt. Der Test der Adress- und/oder Datenleitungen wird somit in herkömmlicher Art und Weise durch den Direktzugriff vor dem Speichertest ausgeführt werden. Mittels der Ausfüh ¬ rung des Tests der Adress- und/oder Datenleitungen vor einem Speichertest werden insbesondere mögliche Fertigungsfehler, z. B. Leitungsunterbrechungen, Leitungskurzschlüsse, identi ¬ fiziert. Der Speichertest zur Identifizierung eines Speicherchipfehlers wird insbesondere erst dann ausgeführt, wenn bei ¬ de vorherigen Tests, d.h. der Test der Adressleitungen und der Test der Datenleitungen, ordnungsgemäß, d.h. fehlerfrei, durchlaufen sind.
Zur Vermeidung von Datenverlusten werden temporäre Programmdaten oder -variablen während eines Speichertests, insbeson- dere nach dem Test der Adress- und/oder Datenleitungen und vor dem Speichertest in einem Register zwischengespeichert. Nach Ablauf des Speichertests können diese Programmdaten oder -variablen wieder ausgelesen und in den Cache-Speicher und/ oder Hauptspeicher geschrieben werden. Insbesondere wird, wenn die Anzahl von Registern zur Zwischenspeicherung der temporären Daten nicht ausreicht, die Hochlaufsequenz neu ge ¬ startet und somit wiederholt, um die temporären Daten wieder ¬ herzustellen. Für den Fall, dass während des Speichertests verworfene temporäre Daten nicht mehr gebraucht werden, wird die Hochlaufsequenz fortgesetzt.
Zur Analyse des ausgeführten Speichertests wird das aus dem Vergleich der Bitmuster resultierende Ergebnis in ein Regis ¬ ter des Prozessors geschrieben.
In einer Weiterbildung der Erfindung werden mehrere Cache- Speicher verwendet, wobei einer der Cache-Speicher zum Speichern von Programmcode (auch Programm- oder Instructions- Cache genannt) und ein weiterer Cache-Speicher zum Speichern von aktuellen, d.h. momentan verwendeten, Daten und/oder Variablen, wie Programmvariablen und Adressdaten, (auch Daten- Cache genannt) verwendet wird. Dabei dient der den Programm- Code speichernde Cache-Speicher der Beschleunigung der Zugriffe auf den Programm-Code. Der Daten-Cache, d.h. der die temporären Daten speichernde Cache-Speicher, dient insbesondere der Speicherung und Beschleunigung der Zugriffe auf den Hauptspeicher .
Vorzugsweise wird der Programmcode und insbesondere der den Speichertest enthaltende Programmcode in einem Lesespeicher (ROM = read-only-memory-Speicher) hinterlegt.
In einer Weiterbildung der Erfindung wird der den Speichertest enthaltende Programmcode im Hauptprogramm implementiert. Dadurch wird ein Unterprogramm-Aufruf verhindert, der einen funktionsfähigen Stack-Speicher bedingen würde. Alternativ kann der Speichertest als ein Unterprogramm implementiert werden. In diesem Fall erfolgt die Fortsetzung des Programms in Unterprogrammaufrufen; ein Rücksprung in das Hauptprogramm wird aufgrund möglicherweise verlorengegangener Programmvariablen aus dem Cache-Speicher verhindert. Hinsichtlich der Vorrichtung zum Prüfen des Hauptspeichers ist erfindungsgemäß zwischen dem Hauptspeicher und dem Prozessor ein Cache-Speicher derart angeordnet, dass während ei ¬ nes Speichertests ein Zugriff auf die Speicherzellen des Hauptspeichers über den Cache-Speicher derart ausführbar ist, dass vorgebbare Bitmuster in den Cache-Speicher, insbesondere in dessen Speicherzellen und über diesen in den Hauptspeicher, insbesondere in dessen Speicherzellen schreibbar und aus diesen über den Cache-Speicher wieder auslesbar sind, wobei der Prozessor die aus dem Hauptspeicher wieder ausgelese- nen Bitmuster mit Soll-Bitmustern vergleicht, anderenfalls der Cache-Speicher vom Hauptspeicher getrennt ist und für die Aufnahme von temporären Daten, insbesondere Programmdaten, zur Verfügung steht, wobei die Größe des Cache-Speichers kleiner ist als der zu testende Bereich des Hauptspeichers.
Die Verwendung eines Cache-Speichers als Zwischenspeicher mit schnellen Zugriffszeiten ermöglicht eine Beschleunigung von Speichertests des Hauptspeichers. Vorzugsweise kann dabei der Cache-Speicher auf dem Prozessorchip selbst integriert sein.
Weitere Vorteile, Merkmale und Einzelheiten der Erfindung werden im Folgenden anhand von Ausführungsbeispielen unter Bezugnahme auf Zeichnungen näher beschrieben. Dabei zeigen
FIG 1 schematisch ein Blockschaltbild einer Ausführungs ¬ form einer Vorrichtung zum Prüfen eines Hauptspei- chers, und
FIG 2 schematisch ein Ablaufdiagramm eines Speichertests für den Hauptspeicher.
Einander entsprechende Teile sind in allen Figuren mit den gleichen Bezugszeichen versehen.
Figur 1 zeigt schematisch ein Blockschaltbild einer Ausführungsform einer Vorrichtung zum Prüfen eines Hauptspeichers 3 eines Prozessors 1. Bei dem Prozessor 1 kann es sich um einen Mikroprozessor handeln, dessen Komponenten auf einem Mikro- chip angeordnet sind (nicht näher dargestellt) .
Zwischen dem Prozessor 1 und dem Hauptspeicher 3 ist ein Cache-Speicher 2 als Zwischenspeicher oder Pufferspeicher ange ordnet. Der Prozessor 1 ist in herkömmlicher Art und Weise über Daten-, Adress-, Fehler- und Steuerleitungen 4 mit dem Cache-Speicher 2 und dieser mit dem Hauptspeicher 3 verbunden .
Dabei greift der Prozessor 1 zum Prüfen des Hauptspeichers 3 unter Zwischenschaltung des Cache-Speichers 2 auf den Haupt ¬ Speicher 3 zu. Der Zugriff auf den Hauptspeicher 3 über den Cache-Speicher 2 erfolgt nur während des Speichertests, ande- renfalls ist der Cache-Speicher 2 vom Hauptspeicher 3 getrennt (angedeutet durch die gestrichelte Linie 4) .
Der Hauptspeicher 3 ist ein herkömmlicher großer Arbeitsspei- eher des Prozessors 1. Der Zugriff auf den Hauptspeicher 3 erfolgt beispielsweise über 8-Bit- und/oder 16-Bit- Adresskanäle oder -leitungen. Der Hauptspeicher 3 umfasst dabei Gruppen von Speicherelementen, die zu einer Speicherzelle 3.1 bis 3.z (= kleinste adressierbare Einheit) zusammenge- fasst sind. Jede Speicherzelle 3.1 bis 3.z umfasst 8 Bit (= 1 Byte) . Mehrere Speicherzellen 3.1 bis 3.z, z. B. 4 oder 8 Speicherzellen 3.1 bis 3.z können zu einem 32-Bit- bzw. 64- Bit-Speicherwort , einem Speicherblock, einer Speicherseite und/oder einer Speicherbank zusammengefasst werden. Hierdurch ist eine einfache Adressierung von insbesondere aufeinander folgenden, gleichgroßen und voneinander unabhängigen Bereichen des Hauptspeichers 3 möglich.
Der Cache-Speicher 2 ist ein schneller Zwischen- oder Puffer- Speicher, der zwischen Registerspeichern R des Prozessors 1 und dem Hauptspeicher 3 angeordnet ist. Im dargestellten Ausführungsbeispiel ist der Cache-Speicher 2 außerhalb des Pro ¬ zessors 1 und somit nicht auf dem Prozessorchip angeordnet. Alternativ kann der Cache-Speicher 2 auch auf dem Prozessor- chip angeordnet sein (nicht dargestellt) .
Der Cache-Speicher 2 weist eine gegenüber dem Hauptspeicher 3 kleinere Speicherkapazität beispielsweise im Kilo- oder Mega ¬ byte-Bereich, z. B. 1 MByte, mit kürzesten Zugriffszeiten im Nanosekundenbereich auf, wohingegen die Speicherkapazität des Hauptspeichers 3 im Mega-, Giga- oder Tetrabyte-Bereich, z. B. 512 MByte, mit niedrigen Zugriffszeiten im Millisekundenbereich liegt. Der Cache-Speicher 2 weist analog zum Hauptspeicher 3 mehrere Speicherzellen 2.1 bis 2.n auf, die nach Vorgaben entsprechend in Worten, Gruppen und/oder Blöcken zusammengefasst oder segmentiert werden, die voneinander unabhängige Adress- bereiche darstellen. Der Cache-Speicher 2 dient der Speiche rung von aktuell verwendeten Daten und/oder Variablen, insb sondere von dynamischen Programmvariablen, wie Adressdaten. Darüber hinaus weist die Vorrichtung mindestens einen weite ¬ ren Cache-Speicher 5 mit einer Anzahl von Speicherzellen 5.1 bis 5.m auf. Der weitere Cache-Speicher 5 dient der Speiche ¬ rung des Programmcodes. Dabei ist dem Cache-Speicher 5 ein Lesespeicher 7, z. B. ein ROM-Speicher (ROM = read-only- memory) , nachgeschaltet, in welchem der Programmcode gespei ¬ chert ist.
Figur 2 zeigt schematisch ein Ablaufdiagramm eines Speichertests T für den Hauptspeicher 3.
Im Allgemeinen wird der Hauptspeicher 3 regelmäßig geprüft. Vorzugsweise wird ein Speichertest T vor dem Start des Be ¬ triebssystems ausgeführt. Gegenüber herkömmlichen Testverfahren wird beim erfindungsgemäßen Verfahren vom Prozessor 1 nicht direkt auf den Hauptspeicher 3 zugegriffen, sondern über den Cache-Speicher 2. Dabei wird der Zugriff vom Prozessor 1 derart ausgeführt, dass zumindest ein Bitmuster BM in den Cache-Speicher 2 und über diesen in den Hauptspeicher 3 geschrieben und aus diesem wieder ausgelesen wird. Anschließend wird das aus dem Haupt ¬ speicher 3 wieder ausgelesene Bitmuster BM mit erzeugten Soll-Bitmuster verglichen. Bei Ungleichheit der beiden Bitmuster wird auf einen Fehler des Hauptspeichers 3 oder einen Übertragungsfehler geschlossen.
Zweckmäßigerweise wird als Bitmuster BM ein Muster mit Nullen und/oder Einsen in einer vorgegebenen Länge, z. B. 8-Bit-, 16-Bit-, 32-Bit-Länge, erzeugt. Beispielsweise werden als Bitmuster BM Adressdaten verwendet. Beim Prüf erfahren werden ein oder mehrere der Speicherzellen 3.1 bis 3.z des Hauptspeichers 3 mehrfach, insbesondere zyklisch getestet. Im Detail kann bei Aktivieren des Speichertests T und vor Durchführung des Speichertests T in einem ersten Schritt Sl optional ein Test von Adressleitungen und/oder Datenleitungen in herkömmlicher Art und Weise über einen Direktzugriff und somit ohne Zwischenspeicher durchgeführt werden (gestrichelt dargestellt) . Beim optionalen Test der Adress- und/oder Da ¬ tenleitungen werden bestimmte Adressen anhand von erzeugten Bitmustern getestet, um Fertigungsfehler, insbesondere Leitungsunterbrechungen und/oder -kurzschlüsse, zu identifizie ¬ ren. Erst wenn der zuvor ausgeführte Test der Adress- und/oder Datenleitungen fehlerfrei ausgeführt worden ist, wird der eigentliche Speichertest T gestartet und ausgeführt.
Im Schritt S2 wird der Programmcode für den Speichertest T, beispielsweise ein Programmtest mit Prüfen von Schreib- und/oder Leseoperationen, aufgerufen. Der Aufruf des Programmcodes erfolgt bevorzugt im Hauptprogramm.
Vor dem Zugriff des Prozessors 1 auf den Cache-Speicher 2 zum Testen des Hauptspeichers 3 wird eine momentan ablaufende Hochlaufsequenz unterbrochen.
Optional oder zusätzlich werden in einem Schritt S2.1 temporäre und nicht zutestende, aber für den Speichertest T erfor ¬ derliche Daten, wie z. B. temporäre Programmvariablen, - daten, in einem der Register 6 und/oder Registerspeichern R zwischengespeichert. Die Registerspeicher R sind beispiels ¬ weise momentan unbenutzte Register des Prozessors 1. Alterna ¬ tiv können die Registerspeicher R und/oder weitere Register 6 auch außerhalb des Prozessors 1 angeordnet sein.
In einem dritten Schritt S3 wird dann der Zugriff auf den Cache-Speicher 2 zum Testen des Hauptspeichers 3 aktiviert. Da- bei kann es zu ungültigen Daten, insbesondere von temporären Programmdaten, kommen.
Im Detail wird die im Prozessor 1 implementierte Testroutine aktiviert, mittels welcher zu testende Schreib- und/oder Le ¬ seoperationen, wie Befehle, Abfragen, nicht direkt auf den Hauptspeicher 3, sondern auf den Cache-Speicher 2 ausgeführt werden. Dabei ist die Testroutine beispielsweise in einer Ma ¬ schinensprache (assembly language) oder einer höheren Pro- grammiersprache unter Verwendung eines optimierenden Compilers geschrieben, um temporäre Daten in Registern anstelle des Stacks im Cache-Speicher 2 oder im Hauptspeicher 3 zu halten und zu speichern.
Im Schritt S4 wird dann der Speichertest T entsprechend der implementierten Testroutine ausgeführt. Mittels des Speicher ¬ tests T werden Zugriffe auf die Speicherzellen 2.1 bis 2.n des betreffenden Cache-Speichers 2 hinsichtlich Art, Häufig- keit und/oder Umfang definiert und gesteuert. Als Art des
Zugriffs werden beispielsweise Lese- oder Schreiboperationen definiert und gesteuert. Als Umfang wird beispielsweise die Anzahl von zu testenden Speicherzellen 3.1 bis 3.m und/oder Speicherblöcken des Hauptspeichers 3 vorgegeben.
Im Detail werden in einer ersten Schleife eine der Größe des zu testenden Bereichs des Hauptspeichers 3 entsprechende An ¬ zahl von Bitmuster BM in den Cache-Speicher 2 geschrieben. Dabei ist der Cache-Speicher 2 kleiner als der zu testende Bereich des Hauptspeichers 3, so dass der Cache-Speicher 2 beim Ausführen des Speichertests T mit Bitmustern BM überschrieben und Bitmuster BM in den zu testenden Bereich des Hauptspeichers 3 geschrieben werden. In einer zweiten Schleife werden dann die Bitmuster BM des zu testenden Bereichs des Hauptspeichers 3 über den Cache-Speicher 2 wieder ausgelesen und mit Soll-Bitmustern verglichen. Beispielsweise werden block-, wort- und/oder zellenweise Bit ¬ muster BM in vorgegebene Speicherzellen 2.1 bis 2.n des Cache-Speichers 2 und von diesen in korrespondierende Speicher ¬ zellen 3.1 bis 3.z des Hauptspeichers 3 geschrieben und aus diesem über den Cache-Speicher 2 wieder ausgelesen und mit Soll-Bitmustern verglichen. Das Ergebnis des Vergleichs wird zwischengespeichert, beispielsweise in einem vorgegebenen weiteren Register 6 und/oder Registerspeichern R des Prozessors 1.
Im Schritt S5 wird nach Beendigung der Testroutine für den Speichertest T dann optional der Zugriff auf den Hauptspei ¬ cher 3 über den Cache-Speicher 2 deaktiviert. Im Schritt S6 wird das gespeicherte Ergebnis des Vergleichs der aus dem Hauptspeicher 3 ausgelesenen Bitmuster BM mit den Soll-Bitmustern geprüft. Das Ergebnis des Vergleichs ist dazu in das Register 6 und/oder einen der Registerspeicher R des Prozessors 1 geschrieben worden, so dass dieses von einer im Prozessor 1 implementieren Analyseroutine ausgewertet werden können .
Im Schritt S7 werden dann die im Schritt S3 und optional im Schritt S2.1 zwischengespeicherten temporären Daten wieder ausgelesen und die ursprüngliche Hochlaufsequenz des Prozes ¬ sors 1 wieder gestartet bzw. initialisiert, d.h. die vor dem Ausführen des Speichertests T unterbrochene Hochlaufsequenz wird erneut gestartet oder optional fortgesetzt. Der Speichertest T kann mehrfach, beispielsweise zyklisch wiederholt oder ereignisgesteuert gestartet werden. Insbeson ¬ dere wird der Speichertest T vor dem Start des Betriebssys ¬ tems ausgeführt. Auch können weitere Schritte implementiert werden .
Der Speichertest T ist insbesondere als Programmcode oder Testroutine im Hauptprogramm des Prozessors 1 implementiert. Alternativ kann der Programmcode des Speichertests T als Un- terprogramm implementiert sein. In diesem Fall werden nachfolgende Programme ausschließlich als Unterprogramm aufgeru ¬ fen, da infolge des Speichertests T mittels des Cache-Spei ¬ chers 2 temporäre Daten, insbesondere Adressdaten im Cache- Speicher 2 verlorengegangen sein können. Um einen sicheren Programmablauf zu ermöglichen, werden daher alle weiteren Programme als Unterprogramm aufgerufen.
Mittels des erfindungsgemäßen Verfahrens zum Prüfen des
Hauptspeichers 3 über den Zugriff auf den Cache-Speicher 2 können alle Speicherzellen 3.1 bis 3.z des Hauptspeichers in ¬ dividuell getestet werden. Durch die Verwendung von Cache- Speichern 2 ist der Speichertest T signifikant beschleunigt.
