-
Ausführungsformen der vorliegenden Erfindung betreffen ein Verfahren zum Testen eines Speichers durch Durchführen einer Fehlerkorrekturcodeprüfung. Weitere Ausführungsformen der vorliegenden Erfindung betreffen ein Speichersystem, das einen Controller umfasst, der dazu konfiguriert ist, einen Speicher des Speichersystems zu testen.
-
Technischer Hintergrund
-
SRAM-Speicher in komplizierten Mikrocontrollerprodukten müssen häufig in Sicherheitsanwendungen während der Anwendung getestet werden, um resultierende neue harte Fehler und weiche Fehler im Speicher zu erkennen, zu korrigieren und zu registrieren. Dies wird in kurzen regelmäßigen Zeitscheiben durchgeführt und nimmt eine beträchtliche Zeit der tatsächlichen Anwendung in Anspruch. Je kürzer die Zeit ist, die für das regelmäßige Testen des Speichers benötigt wird, desto mehr Zeit und Leistung steht für die tatsächliche Anwendung zur Verfügung.
-
In herkömmlichen Systemen werden SRAM-Module getestet, indem zunächst Module, deren SRAM getestet werden sollte, funktionell abgeschaltet werden und dann der Speicher über den Bus zugänglich gemacht wird und dann der tatsächliche Anwendungsinhalt in einen anderen Speicher, der noch leer ist, übertragen (kopiert) wird und dann der zu testende Speicher unter Verwendung eines vordefinierten Algorithmus/einer vordefinierten physischen Belegung getestet wird. Nach dem Test wird der tatsächliche Inhalt wieder zurückkopiert.
-
Das Verschieben der ursprünglichen Benutzerdaten über einen Bus ist sehr zeitaufwändig. Der häufig von dem CPU ausgeführte Test kann gleichfalls oftmals nicht kritische Bedingungen während des aktiven Betriebs simulieren, wenn der CPU über einen langsamen Bus mit Wartezyklen während des Tests auf den Speicher zugreift, während das Modul, das den Speicher verwendet, möglicherweise nacheinander auf jeden Zyklus zugreift.
-
Aus dem Stand der Technik ist die Druckschrift
AT 409 562 B bekannt, die einen transparenten Test eines Speichers ermöglicht, wobei Datenwörter, die an Speicherplätzen des Speichers gespeichert sind, die zugewiesene Prüfbits aufweisen, zyklisch aus dem Speicher ausgelesen werden und auf Fehler untersucht werden.
-
Ferner ist aus dem Stand der Technik die Druckschrift „Hsiao: Error-Correcting Codes for Semiconductor Memory Applications: A State-of-the-Art Review. In: IBM Journal of Research and Development, 28, March 1984, 2, 124–134. – ISSN 0018-8646” bekannt, die Fehlerkorrekturcodes für Halbleiter-Computerspeicher-Anwendungen des Stands der Technik beschreibt, wobei die Erzeugung von vier Klassen von Fehlerkorrekturcodes, die für Halbleiterspeicher-Designs geeignet sind, dargestellt wird.
-
Des Weiteren ist aus dem Stand der Technik die Druckschrift
US 2003/0 074 619 A1 bekannt, die ein Verfahren und eine Vorrichtung zur Durchführung eines eingebauten Selbsttests auf einer integrierten Schaltkreis-Einheit zeigt.
-
Kurzdarstellung der Erfindung
-
Es ist eine Aufgabe der vorliegenden Erfindung, ein verbessertes Verfahren zum Testen eines Speichers und ein verbessertes Speichersystem bereitzustellen.
-
Diese Aufgabe wird durch die Verfahren nach den Ansprüchen 1 und 2, durch die Speichersysteme nach den Ansprüchen 14, 15, 21 und 22 und durch die nicht vergänglichen Speichermedien nach den Ansprüchen 23 und 24 gelöst.
-
Weitere Gesichtspunkte der vorliegenden Erfindung sind von den abhängigen Ansprüchen ableitbar.
-
Ausführungsformen der vorliegenden Erfindung betreffen ein Verfahren zum Testen eines Speichers. Das Verfahren umfasst Folgendes:
Durchführen einer Fehlerkorrekturcodeprüfung (FKC-Prüfung) an im Speicher gespeicherten Benutzerdaten;
Invertieren der im Speicher gespeicherten Benutzerdaten;
Durchführen einer weiteren FKC-Prüfung an den im Speicher gespeicherten invertierten Benutzerdaten und
Invertieren der im Speicher gespeicherten invertierten Benutzerdaten zum Wiederherstellen der Benutzerdaten in dem Speicher.
-
Darüber hinaus betreffen weitere Ausführungsformen der vorliegenden Erfindung ein Speichersystem, das einen Speicher, der darauf gespeichert Benutzerdaten aufweist, und einen Controller umfasst. Der Controller ist dazu konfiguriert, einen Speicher durch Folgendes zu testen:
Durchführen einer Fehlerkorrekturcodeprüfung (FKC-Prüfung) an den im Speicher gespeicherten Benutzerdaten;
Invertieren der im Speicher gespeicherten Benutzerdaten;
Durchführen einer weiteren FKC-Prüfung an den im Speicher gespeicherten invertierten Benutzerdaten und
Invertieren der im Speicher gespeicherten invertierten Benutzerdaten zum Wiederherstellen der Benutzerdaten in dem Speicher.
-
Kurze Beschreibung der Figuren
-
Ausführungsformen der vorliegenden Erfindung werden ausführlich unter Bezugnahme auf die begleitenden Figuren beschrieben, in denen:
-
1 ein Ablaufdiagramm eines Verfahrens zum Testen eines Speichers gemäß einer Ausführungsform der vorliegenden Erfindung zeigt;
-
2 ein anderes Ablaufdiagramm eines weiteren Verfahrens zum Testen eines Speichers gemäß einer Ausführungsform der vorliegenden Erfindung zeigt, das eine mögliche Umsetzung des in 1 gezeigten Verfahrens ist;
-
3 ein Blockdiagramm eines Speichersystems gemäß einer Ausführungsform der vorliegenden Erfindung zeigt und
-
4 ein Blockdiagramm eines weiteren Speichersystems gemäß einer Ausführungsform der vorliegenden Erfindung zeigt, das eine mögliche Umsetzung des in 3 gezeigten Speichersystems ist.
-
Ausführliche Beschreibung von Ausführungsformen der vorliegenden Erfindung
-
Bevor Ausführungsformen der vorliegenden Erfindung ausführlicher beschrieben werden, sollte darauf hingewiesen werden, dass in den Figuren Elemente mit denselben oder gleichen Funktionalitäten mit denselben Bezugsziffern versehen sind. Folglich sind Beschreibungen, die für Elemente mit denselben Bezugsziffern bereitgestellt werden, untereinander austauschbar.
-
1 zeigt ein Ablaufdiagramm eines Verfahrens 100 zum Testen eines Speichers.
-
Das Verfahren 100 umfasst einen Schritt 101 zum Durchführen einer Fehlerkorrekturcodeprüfung (FKC-Prüfung) an im Speicher gespeicherten Benutzerdaten.
-
Darüber hinaus umfasst das Verfahren 100 einen Schritt 103 des Invertierens der im Speicher gespeicherten Benutzerdaten.
-
Darüber hinaus umfasst das Verfahren 100 einen Schritt 105 des Durchführens einer weiteren FKC-Prüfung an den im Speicher gespeicherten invertierten Benutzerdaten.
-
Darüber hinaus umfasst das Verfahren 100 einen Schritt des Invertierens der im Speicher gespeicherten invertierten Benutzerdaten zum Wiederherstellen der Benutzerdaten in dem Speicher.
-
Das Verfahren 100 kann ein zerstörungsfreier Test für SRAM in Anwendungen sein.
-
Die Erfinder haben festgestellt, dass ein sehr schneller Test eines Speichers umgesetzt werden kann, wenn eine erste FKC-Prüfung an in einem Speicher gespeicherten Benutzerdaten durchgeführt wird und eine zweite erste FKC-Prüfung an einer invertierten Version der in dem Speicher gespeicherten Benutzerdaten durchgeführt wird. Es ist ein Vorteil dieser Vorgehensweise, dass einerseits so genannte harte Haftfehler (Stuck-at-Fehler) aufgrund des Durchführens der ersten FKC-Prüfung an den Benutzerdaten, wie sie in dem Speicher gespeichert sind, und der weiteren FKC-Prüfung an den invertierten Benutzerdaten gefunden werden können. Darüber hinaus kann durch zweimaliges Invertieren der Benutzerdaten sichergestellt werden, dass kein Kopieren der Benutzerdaten in einen anderen Speicher erforderlich ist, da der Inhalt der Benutzerdaten bewahrt wird, obwohl die FKC-Prüfungen tatsächlich an den Benutzerdaten (die Teil eines Programmcodes einer Anwendung sein können) durchgeführt werden. Somit muss im Gegensatz zu herkömmlichen Systemen kein vorherbestimmtes Fehlermuster in den Speicher kopiert werden, an dem die FKC-Prüfungen durchgeführt werden, und es muss kein Kopieren der Benutzerdaten (wie Programmcodes oder andere benutzerabhängige Daten), die derzeit in dem Speicher gespeichert sind, in einen anderen Speicher (Sicherheitsspeicher) durchgeführt werden.
-
Während des Tests des Speichers kann jeweils eine Adresse des Speichers, da dies auch in Verbindung mit 2 gezeigt ist. Somit kann jeweils eine Adresse getestet werden (Lesen der Benutzerdaten aus der Adresse und FKC-Testen dieser während des Lesens, dann Invertieren dieser und unmittelbar wieder Zurückschreiben dieser, dann Lesen und FKC-Testen der invertierten Benutzerdaten, Invertieren der invertierten Benutzerdaten und Zurückschreiben dieser in die Adresse) und nur dann wird die nächste Adresse getestet, an der dieselben Schritte des Lesens und zweimaligen Invertierens mit den an dieser nächsten Adresse gespeicherten Benutzerdaten durchgeführt werden.
-
Gemäß anderen Ausführungsformen können jedoch alle Adressen (oder mindestens ein bestimmter Adressbereich des Speichers) gelesen werden und die FKC-Prüfung kann auf einmal für die kompletten gelesenen Adressen durchgeführt werden. Dann können alle an diesen Adressen gespeicherten Benutzerdaten auf einmal invertiert werden und der weitere FKC-Test kann an den an diesen (mehreren) Adressen gespeicherten invertierten Benutzerdaten durchgeführt werden. Danach werden die invertierten Benutzerdaten invertiert und zurück in diese Adressen des Speichers geschrieben.
-
Das Konzept des Testens aller Adressen (oder mindestens eines bestimmten Adressbereichs) des Speichers hat den Vorteil, dass der Test sich schneller über die Daten bewegt (was auf einige Arten noch besser ist) ohne Schreibvorgänge dazwischen. Ein anderer Vorteil besteht darin, dass das Verfahren 100 unter Verwendung eines (gewöhnlich bereits verfügbaren) eingebauten Speicher-Selbsttest-Controllers (memory built-in self-test controller, MBIST-Controller) in Verbindung mit einer/eines (gewöhnlich bereits verfügbaren) Fehlerkorrekturcode-Prüfungseinheit oder -Controllers (FKC-Controller) leicht umgesetzt werden kann.
-
3 zeigt ein derartiges Speichersystem 300, das einen Speicher 301 umfasst. Der Speicher 301 (der ein SRAM sein kann) weist darauf gespeichert Benutzerdaten 303 auf. Darüber hinaus umfasst das Speichersystem 300 einen Controller 305. Der Controller ist dazu konfiguriert, den Speicher 301 durch Durchführen einer (ersten) Fehlerkorrekturcodeprüfung (FKC-Prüfung) an den in dem Speicher 301 gespeicherten Benutzerdaten 303, Invertieren der in dem Speicher 301 gespeicherten Benutzerdaten 303 (nachdem die FKC-Prüfung durchgeführt wurde), Durchführen einer (zweiten oder) weiteren FKC-Prüfung an den (jetzt) in dem Speicher 301 gespeicherten invertierten Benutzerdaten und Invertieren der in dem Speicher 301 gespeicherten invertierten Benutzerdaten zum Wiederherstellen der Benutzerdaten 303 in dem Speicher 301 (nachdem die weitere FKC-Prüfung durchgeführt wurde) zu testen. Somit kann der Controller 305 den Speicher 301 ohne jegliches Erfordernis eines Kopierens der Benutzerdaten 303 in einen Sicherheitsspeicher testen, die Benutzerdaten 303 bewahren und sogar harte Haftfehler finden (aufgrund des Prinzips des zweimaligen Invertierens).
-
Mit anderen Worten, wenn Benutzerdaten zum Testen verwendet werden, können die Benutzerdaten nicht wie in einem normalen Test (in dem bestimmte Testmuster verwendet werden) beeinflusst werden, um beide Polaritäten zu haben. Somit würden sich Bitfehler hinter den Benutzerdaten verbergen, wenn der Haftfehler dieselbe Polarität wie die Benutzerdaten für jeden Bit aufweist. Somit ermöglicht das Prinzip des zweimaligen Invertierens, auf beide Polaritäten zu testen, ohne die Benutzerdaten zu zerstören.
-
Eine mögliche Umsetzung des Controllers 305 ist in 4 der vorliegenden Anmeldung gezeigt, die ein Speichersystem 400 als eine mögliche Umsetzung des in 3 gezeigten Speichersystems 300 zeigt. Wie zu sehen ist, umfasst der Controller 305 des Speichersystems 400 den erwähnten MBIST-Controller 401 und den FKC-Controller 403.
-
Der MBIST-Controller 401 ist dazu konfiguriert, die Benutzerdaten 303 und die invertierten Benutzerdaten von dem Speicher 301 zu lesen.
-
Darüber hinaus ist der MBIST-Controller 401 dazu konfiguriert, die invertierten Benutzerdaten in den Speicher 303 zu schreiben und die Benutzerdaten 303 (in der ursprünglichen und nicht invertierten Version) wieder zurück in den Speicher 301 zu schreiben (nachdem die weitere FKC-Prüfung durchgeführt wurde). Der FKC-Controller 403 ist dazu konfiguriert, die FKC-Prüfung an den Benutzerdaten 303 durchzuführen, die von dem MBIST-Controller 401 aus dem Speicher 301 gelesen wurden, und die weitere FKC-Prüfung an den invertierten Benutzerdaten durchzuführen, die von dem MBIST-Controller 401 aus dem Speicher 301 gelesen wurden.
-
Darüber hinaus, wie aus 4 zu ersehen, umfasst das Speichersystem 400 ein Fehlerverfolgungsregister 405. Dieses Fehlerverfolgungsregister 405 ist typischerweise Teil der umgebenden Logik des Speichersystems 400 oder kann auch Teil des MBIST-Controllers 401 sein. In einem derartigen Fehlerverfolgungsregister 405 werden fehlerhafte Adressen oder Benutzerdatenwörter markiert oder gespeichert.
-
Der FKC-Controller 403 ist dazu konfiguriert, während des Durchführens der FKC-Prüfung und der weiteren FKC-Prüfung in den Benutzerdaten 303 gefundene Fehler zu korrigieren oder zumindest als Fehler in dem Fehlerverfolgungsregister 405 zu markieren. Als ein Beispiel können harte Fehler, wie Haftfehler und andere nicht korrigierbare Fehler, in dem Fehlerverfolgungsregister 405 markiert werden, während (korrigierbare) weiche Fehler von dem FKC-Controller 403 vor der Invertierung der invertierten Benutzerdaten korrigiert werden können, indem der Fehler in den invertierten Benutzerdaten korrigiert wird (z. B. durch Durchführen eines einfachen Bit-Flips des betroffenen Bits). Somit werden die in dem Speicher wiederhergestellten Benutzerdaten frei von (korrigierbaren) weichen Fehlern sein.
-
Somit werden gemäß einer weiteren Ausführungsform weiche Fehler, die korrigierbare Fehler sind, entfernt, damit sie sich nicht weiter zu mehreren Fehlern ansammeln, wenn sie nicht behoben werden.
-
Nichtsdestotrotz kann diese Korrektur von weichen Fehlern auch weggelassen werden, da es ausreichend wäre, auch diese (korrigierbaren) weichen Fehler in dem Fehlerverfolgungsregister 405 zu markieren (was durch weitere Ausführungsformen der vorliegenden Erfindung durchgeführt werden kann), da Anwendungen, die auf den Speicher zugreifen, das Fehlerverfolgungsregister 405 sowieso auf Fehler im Speicher prüfen würden. Somit können die wiederhergestellten Benutzerdaten gemäß diesen Ausführungsformen noch immer die (korrigierbaren) weichen Fehler umfassen, die jedoch im Fehlerverfolgungsregister 405 markiert sind.
-
Ausführungsformen der vorliegenden Erfindung verwenden den MBIST-Controller 401, der sowieso nach der Herstellung zu Testzwecken vorliegen kann. Des Weiteren verwendet es zu Zuverlässigkeitszwecken den (typischerweise sowieso existierenden) FKC-Controller 403 (der auch als FKC-Erkennungs- und -Korrektureinheit bezeichnet wird). Der FKC-Controller 403 korrigiert oder zeigt Ein-Bit- und Zwei-Bit-Fehler im Betrieb. Der FKC-Controller 403 bildet zusammen mit dem MBIST-Controller 401 den Controller 305 und diese sind, wie von den Erfindern festgestellt wurde, kombiniert ideal für einen Online-Test während der Anwendung.
-
Zu normalen Testzwecken ermöglicht der MBIST-Controller 401 auf jeden Fall einen schnellen Schreib- und Lesezugriff auf den Speicher 301 und der FKC-Controller 403 ist ideal zum Erkennen möglicher Fehler für beliebige Datenwörter. Um ein zeitaufwändiges Kopieren des Benutzercodes oder der Benutzerdaten 303 zu verhindern, wie es in herkömmlichen Systemen durchgeführt wird, kann der MBIST-Controller 401 jetzt laufen, um den kompletten Speicherinhalt des Speichers 301 zu lesen, und verwendet den FKC-Controller 403, um Fehler zu finden, die möglicherweise darin enthalten sind, und dann fehlerhafte Wörter zu finden und zu registrieren, z. B. in einem Fehlerverfolgungsregister 405, in dem die Adressen fehlerhafter Wörter gespeichert werden. Dieses Fehlerverfolgungsregister 405 oder dieser Fehlerverfolgungsspeicher 405 kann beispielsweise während des Testens des Speichers 301 als eine Art Mini-Cache-Speicher verwendet werden, um mittels einer Softwareinstallation nach jedem Boot-Zyklus die fehlerhaften SRAM-Wörter in diesem Mini-Cache-Speicher zu maskieren.
-
Die Erfinder haben festgestellt, dass durch nur Prüfen der Benutzerdaten 303, wie sie auf dem Speicher 301 gespeichert sind, so genannte harte Haftfehler (Stuck-at-Fehler) möglicherweise nicht gefunden werden, da der Fehler dieselbe Polarität wie das Benutzerbit an dieser Position aufweisen kann. Dies ist der Grund, warum bei einem normalen MBIST-Test mehrere Tests mit unterschiedlichen Dateninhalten und -polaritäten an einem Speicher ausgeführt werden, um diese Fehler noch zu finden. Da die Benutzerdaten 303 nicht vorhersehbar sind oder nicht einem bestimmten Schema folgen und insbesondere im Speicher 301 bewahrt werden sollten, ist dieses Prinzip natürlich nicht mit den Benutzerdaten 303 möglich. Dies ist der Grund, warum Ausführungsformen der vorliegenden Erfindung von der Feststellung Gebrauch machen, dass das Problem von harten Haftfehlern gefunden werden kann, wenn eine erste FKC-Prüfung an den Benutzerdaten durchgeführt wird und eine weitere FKC-Prüfung an den invertierten Benutzerdaten durchgeführt wird. Somit invertieren Ausführungsformen der vorliegenden Erfindung das komplette Benutzerwort beim Lesen und schreiben es im nächsten Zyklus zurück in den Speicher 301. Dies kann für alle Wörter im Speicher 301 im ersten Durchlauf ausgeführt werden. Hier können alle Fehler mit einer bestimmten Polarität gleichzeitig von dem FKC-Controller 403 gefunden werden. Jetzt wird der Vorgang ein zweites Mal unter Verwendung des komplett invertierten Speicherinhalts (den invertierten Benutzerdaten) gestartet und wiederum werden alle nun invertierten Wörter unter Verwendung des MBIST-Controllers 401 ausgelesen und der FKC-Controller 403 wird wiederum zur Fehlererkennung verwendet und invertiert das Wort für jede Adresse und schreibt es zurück auf vollständig invertierte Weise. Nach dem zweiten Durchlauf wurde der ursprüngliche Inhalt des Speichers (die ursprünglichen Benutzerdaten 303, wie sie in dem Speicher 301 vor Durchführen der ersten FKC-Prüfung gespeichert sind) jetzt reproduziert und es wurden noch immer alle harten und weichen Ein- und Zwei-Bit-Fehler und je nach dem Algorithmus sogar alle Drei-Bit-Haftfehler gefunden (Fehler, die beide Polaritäten aufweisen) und der Speicherinhalt wurde folglich komplett erhalten. Somit wird nach Durchführen der zwei Fehlerkorrekturcodeprüfungen an den Benutzerdaten 303 und den invertierten Benutzerdaten der Inhalt des Speichers 301 noch immer bewahrt, da die Benutzerdaten nicht geändert wurden. Somit ist ein problematisches und zeitaufwändiges Kopieren des Inhalts des Speichers 301 nicht mehr notwendig, wie es von herkömmlichen Systemen durchgeführt wird. Jede Adresse wird folglich exakt zweimal gelesen und zweimal geschrieben. Mehr Zeit ist nicht erforderlich und ein sehr schnelles Testen ist möglich (z. B. sehr viel schneller als über einen langsamen Bus mittels eines CPU) und Hardware, Bereich und Leistung, die sowieso zu anderen Zwecken existieren, können zum Durchführen des Tests gemäß dem Verfahren 100 verwendet werden. Diese Vorgehensweise ist ideal für häufiges regelmäßiges Testen von Speichern während der Anwendung.
-
Aus 4 ist zu erkennen, dass die Benutzerdaten 303 Anwendungsdaten und FKC-Daten umfassen können. Die FKC-Daten werden typischerweise direkt von den Anwendungsdaten auf Basis eines bestimmten FKC-Codes abgeleitet. In Ausführungsformen der vorliegenden Erfindung kann sind die FKC-Daten auf einem symmetrischen FKC-Code, so dass im Fall eines fehlerfreien Speichers ein Ergebnis der FKC-Prüfung an den Benutzerdaten (die fehlerfrei sein sollten) und ein Ergebnis der weiteren Fehlerprüfung an den invertierten Benutzerdaten gleich sind.
-
Mit anderen Worten, Ausführungsformen der vorliegenden Erfindung verwenden eine FKC-Code, der für den beschriebenen zerstörungsfreien Test symmetrisch ist. Ein derartiger invertierbarer Code führt zu demselben Ergebnis (Einzelfehler, Doppelfehler) mit beiden Polaritäten. Der FKC-Code sollte die Eigenschaft aufweisen, dass jedes Codewort beim Invertieren Bit für Bit wieder ein Codewort wird. Dies ist durch eine geschickte Auswahl des Codes und eine mögliche Erweiterung um ein Bit, falls erforderlich, möglich.
-
Durch Invertieren aller Bits können Haftfehler mit einer beliebigen Art von Benutzercode/-daten (die wir im Vergleich zu einem normalen MBIST-Testmuster nicht beeinflussen können) gefunden werden. Somit bietet das Verwenden des symmetrischen FKC-Codes die Möglichkeit, die kompletten Benutzerdaten zu invertieren, was ermöglicht, auch diese Haftfehler zu finden, die da sind, jedoch aufgrund einer Maskierung von Benutzerdaten mit derselben Polarität als dem Fehler nicht erkennbar sind (ohne Invertierung).
-
Ein Beispiel eines derartigen symmetrischen FKC-Codes ist der symmetrische gekürzte Hsiao-FKC-Code. Somit verwenden mindestens einige Ausführungsformen der vorliegenden Erfindung den symmetrischen gekürzten Hsiao-FKC-Code auf Basis davon, welche der FKC-Prüfung und der weiteren FKC-Prüfung durchgeführt wird.
-
2 zeigt ein Ablaufdiagramm eines Verfahrens 200 zum Testen eines Speichers gemäß einer Ausführungsform der vorliegenden Erfindung. Das in 2 gezeigte Verfahren 200 ist ein ausführlicheres Beispiel des Verfahrens 100, das zusätzliche Schritte umfasst.
-
Das Verfahren 200 zeigt, wie während der normalen Ausführung einer Anwendung ein Test des Speichers, der Benutzerdaten 303 umfasst, die Teil eines Programmcodes der Anwendung sind, getestet werden können.
-
Das Verfahren 200 umfasst einen Schritt 201 des Ausführens einer Anwendung auf Basis der im Speicher 301 gespeicherten Benutzerdaten (z. B. der Benutzerdaten 303), wobei die Benutzerdaten 303 mindestens ein Teil des Programmcodes der Anwendung sind oder auf die Benutzerdaten 303 von (zumindest einem Teil) der Anwendung zugegriffen wird.
-
In einem weiteren Schritt 203 des Verfahrens 200 wird die Anwendung gestoppt oder zumindest der Teil der Anwendung wird gestoppt der auf den Teil (die Adresse oder den Adressbereich) des Speichers zugreift, der getestet werden soll, bevor die (erste) FKC-Prüfung an den Benutzerdaten 303 in Schritt 101 durchgeführt wird. Nachdem die Anwendung gestoppt oder zumindest zum Teil gestoppt wurde, werden die Schritte 101 bis 107 (des Verfahrens 100) an den Benutzerdaten 303 durchgeführt, um den Speicher 301 an der Adresse oder den Adressen zu testen, an der bzw. denen die Benutzerdaten 303 im Speicher 301 gespeichert sind. Mit anderen Worten: Es ist nicht erforderlich, die Anwendung komplett herunterzufahren, da es ausreicht, den Kern/das Peripheriegerät zu stoppen, der bzw. das von einer derartigen Adresse oder derartigen Adressen des zu testenden Speichers 301 oder SRAM ausgeführt wird, oder zu bewirken, dass der Kern eine andere Anwendung von einem anderen physischen SRAM oder einer anderen Adresse des Speichers 301, der nicht getestet werden soll, durchführt, und dann den Test einzurichten und ihn zu starten und auszuführen.
-
Wie bereits beschrieben, können werden die Benutzerdaten 303 während des Durchführens der ersten Fehlerkorrekturcodeprüfung in Schritt 101 an den Benutzerdaten 303 unter Verwendung des MBIST-Controllers 401 gelesen und durch den FKC-Controller 403 geprüft werden.
-
Darüber hinaus werden die invertierten Benutzerdaten während des Schritts 103 des Invertierens der im Speicher gespeicherten Benutzerdaten unter Verwendung des MBIST-Controllers 401 in den Speicher geschrieben. Es wurde von den Erfindern festgestellt, dass ein derartiger MBIST-Controller 401 einfach zum Lesen von Benutzerdaten 303 aus einem Speicher 301 und zum Schreiben der Benutzerdaten 303 in einer invertierten Version zurück in den Speicher 301 ohne Erfordernis eines zeitaufwändigen Kopierens der Benutzerdaten 303 in einen anderen (z. B. separaten) Speicher verwendet werden kann.
-
Darüber hinaus werden die invertierten Benutzerdaten während des Durchführens der weiteren (oder zweiten) FKC-Prüfung in Schritt 105 unter Verwendung desselben MBIST-Controllers 401 gelesen. Die invertierten Benutzerdaten werden dann (in Schritt 105) unter Verwendung des FKC-Controllers 403 auf Fehler geprüft.
-
Darüber hinaus werden die Benutzerdaten während des Invertierens der invertierten Benutzerdaten in Schritt 107 unter Verwendung des MBIST-Controllers 401 wieder in den Speicher geschrieben. Somit wird nach der ersten Fehlerkorrekturcodeprüfung und der zweiten Fehlerkorrekturcodeprüfung, wobei die oben erwähnten weichen Fehler und harten Fehler in den Benutzerdaten 303 gefunden und schließlich sogar korrigiert werden, der Speicherinhalt ohne Erfordernis jeglichen zeitaufwändigen Kopierens der Benutzerdaten beibehalten.
-
Von dem FKC-Controller 403 in Schritt 101 und 105 gefundene Fehler werden korrigiert oder mindestens in dem Fehlerverfolgungsregister 405 markiert (oder registriert). Typischerweise greift eine Software oder Anwendung auf das Fehlerverfolgungsregister 405 zu und befasst sich mit den markierten Fehlern und kann sogar entscheiden, ob derartige Fehler korrigierbar sind.
-
Gemäß weiteren Ausführungsformen kann auch ein Maskieren der gefundenen Fehler mithilfe des Fehlerverfolgungsregisters 405 stattfinden, so dass ein Zugriff auf die fehlerhaften Wörter in dem Speicher maskiert wird und verfügbare Redundanzdaten verwendet werden.
-
Darüber hinaus können die invertierten Benutzerdaten in Schritt 103 in dieselbe Adresse im Speicher 301 geschrieben werden, aus der die Benutzerdaten 303 gelesen wurden (in Schritt 101). Darüber hinaus können die Benutzerdaten 303 in Schritt 107 wieder in dieselbe Adresse im Speicher 301 geschrieben werden, aus der die Benutzerdaten 303 (und die invertierten Benutzerdaten) gelesen wurden.
-
Darüber hinaus werden die Benutzerdaten 303 typischerweise an einer vorherbestimmten Adresse oder einem vorherbestimmten Adressbereich des zu testenden Speichers 301 gespeichert.
-
Für einen Test des kompletten Speichers 301 (alle Adressen oder der komplette Adressbereich des Speichers 301) sind die Schritte 101, 103, 105 und 107 für mehrere weitere Adressen oder Adressbereiche des zu testenden Speichers 301 zu wiederholen.
-
Mit anderen Worten, die in einem Zyklus aufeinanderfolgender Schritte 101, 103, 105 und 107 getesteten Benutzerdaten 303 werden typischerweise mit einer bestimmten Adresse oder einem bestimmten Adressbereich des Speichers 301 in Verbindung gebracht. Nachdem diese Adresse oder dieser Adressbereich getestet wurde, kann die Adresse des zu testenden Speichers 301 nach dem Schritt 107 des Invertierens der invertierten Benutzerdaten erhöht werden (z. B. unter Verwendung eines Zustandsautomaten in dem MBIST-Controller 401).
-
Somit kann das Verfahren 200 einen fakultativen Schritt 205 des Erhöhens der Adresse des zu testenden Speichers unter Verwendung eines Zustandsautomaten umfassen. Zusammenfassend kann der Controller 305 dazu konfiguriert werden, anschließend unterschiedliche Adressen des (desselben) Speichers zu testen.
-
Der MBIST-Controller 401 kann weiterhin dazu konfiguriert werden, die Benutzerdaten 303 aus einer vorherbestimmten Adresse in dem Speicher 301 zu lesen, die invertierten Benutzerdaten in die vorherbestimmte Adresse zu schreiben, die invertierten Daten aus der vorherbestimmten Adresse zu lesen und die Benutzerdaten 303 wieder in die vorherbestimmte Adresse zu schreiben. Somit werden, wie bereits oben beschrieben, die anschließend durchgeführten Schritte 101 bis 107 an derselben Adresse des Speichers 301 durchgeführt. Nachdem diese Schritte 101 bis 107 durchgeführt wurden und der Speicher 301 an der vorherbestimmten Adresse getestet wurde, kann der MBIST-Controller 401 die Adresse des zu testenden Speichers 301 erhöhen. Dazu kann der MBIST-Controller 401 den oben erwähnten Zustandsautomat zum Erhöhen der Adresse umfassen, nachdem die Benutzerdaten 303 wieder in die vorherbestimmte Adresse geschrieben wurden. Nach dem Erhöhen der Adresse des zu testenden Speichers 301 kann der Controller 305 den Test des Speichers 301 für die erhöhte Adresse des Speichers 301 neu starten, so dass die Schritte 101, 103, 105 und 107 erneut an der erhöhten Adresse des Speichers 301 durchgeführt werden. Dieser Vorgang kann wiederholt werden, bis alle Adressen des Speichers 301 getestet wurden.
-
Nachdem alle Adressen des Speichers 301 getestet wurden oder zumindest nachdem alle Adressen getestet wurden, an denen Benutzerdaten 303 gespeichert werden, die Teil des Programmcodes der Anwendung sind oder auf die von der Anwendung oder dem gestoppten Teil der Anwendung zugegriffen wird, kann die Anwendung oder der gestoppte Teil der Anwendung fortgeführt werden. Somit müssen die Benutzerdaten nicht unbedingt Teil eines Programmcodes der Anwendung sein, sondern können auch komplexere Daten sein (da ein Programmcode gewöhnlich aus einem nichtflüchtigen Speicher neu geladen werden kann, während das bei derartigen Daten möglicherweise nicht möglich ist), auf die von der Anwendung zugegriffen werden kann.
-
Somit umfasst das Verfahren 200 einen Schritt 207 des Fortführens der Anwendung.
-
Während der Schritte 101 und 105 des Durchführens der FKC-Prüfung und der weiten FKC-Prüfung kann der FKC-Controller 403 dazu konfiguriert sein, Fehler zu korrigieren, die in den Benutzerdaten 303 (und in den invertierten Benutzerdaten) gefunden wurden, wie sie auf dem Speicher 301 gespeichert sind, oder zumindest (wenn die Fehler nicht korrigiert werden können, z. B. als Haftfehler) diese Fehler im Fehlerverfolgungsregister 405 zu markieren.
-
Darüber hinaus, wie bereits beschrieben, werden anstelle des Verwendens bestimmter Fehlermuster auf Basis davon, welche der FKC-Prüfung und der weiteren FKC-Prüfung durchgeführt wird, die Benutzerdaten 303, wie sie im Speicher 301 gespeichert sind, zum Durchführen der FKC-Prüfung und der weiteren FKC-Prüfung verwendet. Somit besteht kein Bedarf am Kopieren der Benutzerdaten in einen anderen Speicher oder eine andere Region des Speichers und am Schreiben eines bestimmten Fehlermusters in die Region, in der die Benutzerdaten 303 im Speicher 301 gespeichert sind. Somit wird im Gegensatz zu herkömmlichen Systemen, in denen ein derartiges spezielles Fehlermuster zum Durchführen der FKC-Prüfung verwendet wird, ein Inhalt des Speichers 301 bewahrt (und nicht durch ein bestimmtes Fehlermuster ersetzt), bevor die FKC-Prüfung an den im Speicher gespeicherten Benutzerdaten 303 durchgeführt wird. Somit können die FKC-Prüfung und die weitere FKC-Prüfung an Benutzerdaten 303 auf Basis davon, welche Anwendung ausgeführt wurde, bevor die FKC-Prüfungen durchgeführt wurden, und auf Basis davon, welche Anwendung fortgeführt wird, nachdem der Speicher getestet wurde, durchgeführt werden. Es muss darauf hingewiesen werden, dass für mehrere Tests des Speichers die Benutzerdaten 303 sich ändern können, da die Benutzerdaten 303 benutzerabhängig (oder anwendungsabhängig) und unabhängig von den FKC-Prüfungen sind.
-
Ausführungsformen der vorliegenden Erfindung setzen folglich ein zweimaliges Invertieren (der Benutzerdaten 303) beim Lesen und ein anschließendes sofortiges invertiertes Zurückschreiben. Darüber hinaus können Ausführungsformen der vorliegenden Erfindung von einem existierenden MBIST-Controller 401 und einem existierenden FKC-Controller 403 und Benutzercode/Benutzerdaten für den Online-Test während der Anwendung mit einer vollen Benutzerdatenerfassung und ohne Auslagern oder Einlagern der Benutzerdaten Gebrauch machen. Darüber hinaus ermöglichen Ausführungsformen der vorliegenden Erfindung das Finden von harten und weichen Ein-, Zwei- und Drei-Bit-Fehlern und können gegebenenfalls eine Korrektur weicher Fehler ermöglichen, beispielsweise durch zusätzliche Software und Fehlerverfolgungsregister, wie das Fehlerverfolgungsregister 405, das sowieso in Sicherheitsanwendungen existieren kann.
-
Im Gegensatz zum Konzept des Kopierens von Benutzerdaten und Benutzercode kann ein sehr schneller Test erzielt werden, da überhaupt kein Ein-/Auslagern oder Kopieren der Benutzerdaten erforderlich ist. Ausführungsformen der vorliegenden Erfindung sind folglich ideal für Sicherheitsanwendungen mit einem häufigen Testen des Speichers während der Anwendung zum Erfassen einer normalen CPU-Leistung. Darüber hinaus wird gemäß einigen Ausführungsformen der vorliegenden Erfindung ein invertierbarer symmetrischer FKC-Code verwendet, der beim Invertierten von Datenwort und Codewort zum selben Ergebnis im FKC-Controller oder FKC-Decoder 403 (für Einzelfehler und Doppelfehler) führt.
-
Die Funktionalität des Speichersystems 400 und der Verfahren 100 und 200 kann wie folgt zusammengefasst werden. Der MBIST-Controller 401 steuert den Speicher 301 unter Verwendung des Zustandsautomaten (als ein Beispiel wäre ein Zähler die einfachste Umsetzung zur Erzeugung fortlaufender Adressen am Speicher) und der FKC-Controller oder FKC-Decoder 403 erkennt Fehler während des Lesens des Speichers 301 (der Benutzerdaten 303 aus dem Speicher 301). Fehlerhafte Adressen werden in das Fehlerverfolgungsregister 405 geschrieben. Darüber hinaus werden die Benutzerdaten invertiert und zurück geschrieben. Dieser Vorgang des Lesens und invertierten Schreibens soll wiederholt werden, so dass letztlich die ursprünglichen Daten (die ursprünglichen Benutzerdaten 303) im Speicher 301 gespeichert werden. Als ein Beispiel ist symmetrischer gekürzter Hsiao-FKC-Code vorteilhaft, um beide Polaritäten von Fehlern und ohne jegliche gegebene Benutzerdaten zu erkennen. Somit können Ausführungsformen der vorliegenden Erfindung einen derartigen symmetrischen gekürzten Hsiao-FKC-Code umsetzen.
-
Darüber hinaus werden die Benutzerdaten (z. B. Programmcode oder benutzerspezifische gespeicherte Daten) ohne Erfordernis eines Ein-/Auslagerns der Benutzerdaten vor dem Testen des Speichers bewahrt. Somit ist der Test sehr schnell, da Benutzerdaten/-code nicht zuerst an einen anderen Ort bewegt und dann diese/dieser getestet werden muss. Somit ermöglichen Ausführungsformen einen Hardwaretest mit voller Geschwindigkeit ohne große Einrichtungsaufgaben vor und nach dem Test durch Hin- und Herbewegen von Benutzerdaten und durch kein Verlieren eines Tests mit voller Geschwindigkeit (was zum Finden von Fehlern wichtig ist, die sich nur bei voller Geschwindigkeit in der Anwendung zeigen) mit Verwendung nur eines Softwaretests in der Anwendung. Mit anderen Worten, in Ausführungsformen der vorliegenden Erfindung wird der Speicher so schnell wie in der normalen Anwendung gelesen, was ermöglicht, dass sogar die Fehler gefunden werden, die sich nur mit voller Geschwindigkeit zeigen, Back-to-Back so schnell wie die normale Anwendung darauf zugreift. Dies wäre nicht mittels des Busses von einem zentralen Controller möglich und wird durch Ausführungsformen der vorliegenden Erfindung unter Verwendung des MBIST-Controllers ermöglicht, der einen Zugriff mit voller Geschwindigkeit ermöglicht, der so schnell wie eine normale Anwendung oder umgebende Hardware ist.
-
Gemäß der weiteren Ausführungsformen können die Verfahren 100, 200 durch weitere FKC-Tests des Speichers erweitert werden, um eine noch höhere Testabdeckung zu erzielen. Als ein Beispiel können die Verfahren die folgenden weiteren Schritte umfassen:
Invertieren jedes geraden Bits der Benutzerdaten;
Durchführen einer dritten FKC-Prüfung an den Benutzerdaten mit invertierten geraden Bits;
Invertieren der Benutzerdaten mit invertierten geraden Bits zum Wiederherstellen der Benutzerdaten in dem Speicher;
Invertieren jedes ungeraden Bits der Benutzerdaten;
Durchführen einer vierten FKC-Prüfung an den Benutzerdaten mit invertierten ungeraden Bits;
Invertieren der Benutzerdaten mit invertierten ungeraden Bits zum Wiederherstellen der Benutzerdaten in dem Speicher.
-
Es ist hier nicht von Bedeutung, ob die ungeraden Bits oder die geraden Bits zuerst invertiert und getestet werden.
-
Somit sind auch weitere Testnachbarsbeziehungen (wie es ein normaler MBIST-Test mit verschiedenen Mustern tut) wie beschrieben möglich, z. B. durch Invertieren nur jedes zweiten Bits (gerade), Durchführen der FKC-Prüfung und dann Zurückinvertieren und dann Durchführen desselben an jedem anderen Bit (ungerade). Dies verbessert die Abdeckung noch weiter, um nicht nur einfache Haftfehler, sondern auch eine komplexere Nachbarsbeziehung (z. B. durch Nebensprechen beeinflusst oder mit Kapazitanz oder Fehlbeträgen zwischen Bits usw.) zu finden. Somit werden in diesem Fall 4 Durchläufe durchgeführt (komplette Inversion zweimal, dann nur Invertieren gerader Bits zweimal und dann nur Invertieren ungerader Bits zweimal).
-
Des Weiteren kann dieses Konzept auf Basis des Prinzips des Durchführens einer zweimaligen Inversion der Benutzerdaten oder von Teilen der Benutzerdaten erweitert werden.
-
Mit anderen Worten, dies kann gewiss mit mehr Durchläufen (noch viel schneller und zerstörungsfrei) weiter verfeinert werden, z. B. wie Invertieren nur jedes zweiten Worts komplett und Zurückinvertieren. Somit kann eine fast so gute Abdeckung wie bei sehr einfachen echten Testmustern erzielt werden. Darüber hinaus können mehr Fehler als mit einfachen SCAN-Tests gefunden werden.
-
Die Verfahren 100, 200 können durch ein beliebiges/eine beliebige der in Bezug auf die Vorrichtung hierin beschriebenen Merkmale und Funktionalitäten ergänzt werden und können unter Verwendung der Hardwarekomponenten der Vorrichtung umgesetzt werden.
-
Obwohl einige Gesichtspunkte im Zusammenhang einer Vorrichtung beschrieben wurden, ist klar, dass diese Gesichtspunkte auch eine Beschreibung des entsprechenden Verfahrens wiedergeben, wobei ein Block oder Gerät einem Verfahrensschritt oder einem Merkmal eines Verfahrensschritts entspricht. Analog dazu geben im Zusammenhang eines Verfahrensschritts beschriebene Gesichtspunkte auch eine Beschreibung eines entsprechenden Blocks oder Elements oder Merkmals einer entsprechenden Vorrichtung wieder. Einige oder alle der Verfahrensschritte können durch eine (oder unter Verwendung einer) Hardwarevorrichtung ausgeführt werden, wie beispielsweise einem Mikroprozessor, einem programmierbaren Computer oder einem elektronischen Schaltkreis. In einigen Beispielen können ein oder mehrere der wichtigsten Verfahrensschritte durch eine derartige Vorrichtung ausgeführt werden.
-
Je nach bestimmten Umsetzungsanforderungen können Beispiele in Hardware oder in Software umgesetzt werden. Die Umsetzung kann unter Verwendung eines digitalen Speichermediums durchgeführt werden, beispielsweise einer Diskette, einer DVD, einer Blue-Ray, einer CD, einem ROM, einem PROM, einem EPROM, einem EEPROM oder einem FLASH-Speicher, der darauf gespeichert elektronisch lesbare Steuersignale aufweist, die mit einem programmierbaren Computersystem zusammenarbeiten (oder zusammenarbeiten können), so dass das jeweilige Verfahren durchgeführt wird. Folglich kann das digitale Speichermedium computerlesbar sein.
-
Einige Beispiele umfassen einen Datenträger mit elektronisch lesbaren Steuersignalen, die mit einem programmierbaren Computersystem zusammenarbeiten können, so dass eines der hierin beschriebenen Verfahren durchgeführt wird.
-
Im Allgemeinen können Beispiele als ein Computerprogrammprodukt mit einem Programmcode umgesetzt werden, wobei der Programmcode zum Durchführen eines der Verfahren funktionsfähig ist, wenn das Computerprogrammprodukt auf einem Computer ausgeführt wird. Der Programmcode kann beispielsweise auf einem maschinenlesbaren Träger gespeichert sein.
-
Andere Beispiele umfassen das Computerprogramm zum Durchführen eines der hierin beschriebenen Verfahren, das auf einem maschinenlesbaren Träger gespeichert ist.
-
Mit anderen Worten, eine Umsetzung des beispielhaften Verfahrens ist folglich ein Computerprogramm mit einem Programmcode zum Durchführen eines der hierin beschriebenen Verfahren, wenn das Computerprogramm auf einem Computer ausgeführt wird.
-
Eine weitere Umsetzung des beispielhaften Verfahrens ist folglich ein Datenträger (oder ein digitales Speichermedium oder ein computerlesbares Medium), der darauf aufgezeichnet das Computerprogramm zum Durchführen eines der hierin beschriebenen Verfahren umfasst. Der Datenträger, das digitale Speichermedium oder das aufgezeichnete Medium sind typischerweise fassbar und nicht vorübergehend.
-
Eine weitere Umsetzung des beispielhaften Verfahrens ist folglich ein Datenstrom oder eine Sequenz von Signalen, der bzw. die das Computerprogramm zum Durchführen eines der hierin beschriebenen Verfahren wiedergibt. Der Datenstrom oder die Sequenz von Signalen kann beispielsweise dazu konfiguriert sein, über eine Datenkommunikationsverbindung, beispielsweise über das Internet, übertragen zu werden.
-
Ein weiteres Beispiel umfasst ein Verarbeitungsmittel, beispielsweise einen Computer oder eine programmierbare Logikanordnung, das dazu konfiguriert oder geeignet ist, eines der hierin beschriebenen Verfahren durchzuführen.
-
Ein weiteres Beispiel umfasst einen Computer, der darauf installiert das Computerprogramm zum Durchführen eines der hierin beschriebenen Verfahren aufweist.
-
Ein weiteres Beispiel umfasst eine Vorrichtung oder ein System, die bzw. das dazu konfiguriert ist, ein Computerprogramm zum Durchführen eines der hierin beschriebenen Verfahren an einen Empfänger zu übertragen (beispielsweise elektronisch oder optisch). Der Empfänger kann beispielsweise ein Computer, ein Mobilfunkgerät, ein Speichergerät oder dergleichen sein. Die Vorrichtung oder das System kann beispielsweise einen Dateiserver zum Übertragen des Computerprogramms an den Empfänger umfassen.
-
In einigen Beispielen kann eine programmierbare Logikanordnung (beispielsweise eine frei programmierbare logische Anordnung) verwendet werden, um einige oder alle der Funktionalitäten der hierin beschriebenen Verfahren durchzuführen. In einigen Beispielen kann eine frei programmierbare logische Anordnung mit einem Mikroprozessor zusammenarbeiten, um eines der hierin beschriebenen Verfahren durchzuführen. Im Allgemeinen werden die Verfahren vorzugsweise von einer beliebigen Hardwarevorrichtung durchgeführt.