-
PRIORITÄTSANSPRUCH
-
Diese Anmeldung beansprucht den Vorteil des Anmeldedatums der vorläufigen US-Patentanmeldung Serien-Nr. 62/620,699, eingereicht am 23. Januar 2018, für „MEMORY DEVICE, MEMORY ADDRESS DECODER, SYSTEM AND RELATED METHOD FOR MEMORY ATTACK DETECTION“ und beansprucht den Vorteil des Anmeldedatums der anhängigen US-Patentanmeldung Serien-Nr. 15/956,526, eingereicht am 18. April 2018, für „MEMORY DEVICE, MEMORY ADDRESS DECODER, SYSTEM, AND RELATED METHOD FOR MEMORY ATTACK DETECTION“, welche ebenso die Priorität der vorläufigen US-Patentanmeldung Serien-Nr. 62/620,699 beansprucht, deren Inhalte und Offenbarung jeweils hierin in ihrer Gesamtheit durch diese Bezugnahme aufgenommen sind.
-
TECHNISCHES GEBIET
-
Die hierin beschriebenen Ausführungsformen beziehen sich allgemein auf Speichersysteme und Fehlererfassung innerhalb von Speichersystemen.
-
STAND DER TECHNIK
-
Die Fehlereinstreuung ist ein Angriffsverfahren auf Chips mit einer sicheren integrierten Schaltung (IC-Chips). Es gibt viele Formen von Fehlereinstreuung, einschließlich Stromversorgungsauslenkung, Temperaturspitzen, IR-Laserlicht, logischer Angriff, fokussierter Ionenstrahl und Mikrosondierung. Diese Verfahren können vorgesehen sein, um den normalen Betrieb des sicheren Chips zu unterbrechen, mit der Absicht, ein inkorrektes Ausführen des Chips zu verursachen (z. B. verursachen, dass der Speicher falsch adressiert wird) und Zugang zu geschützten Inhalten zu ermöglichen oder einen inkorrekten Code zu validieren. Ein Beispiel einer bestehenden Technik zum Erfassen eines solchen Angriffs ist es, einen Nur-LeseSpeicher (ROM) zu koppeln, der die Wortleitungen an dem Ende des Speicherarrays teilt, so wie es in dem US-Patent
9,824,732 , erteilt am 21. November 2017, mit dem Titel „Memory System with Encoding“ beschrieben ist. Solch ein System kann Nachteile haben, wie beispielsweise den Bedarf, Latches hinzuzufügen, die Ergebnisse speichern, wenn der Lesevorgang endet, die Komplexität der Taktsignale, Vorladephase, und das Erfassen eines Schreibangriffs. Zusätzliche herkömmliche Verfahren können ein Exportieren einer Adresse außerhalb des Speicherarrays einschließen, um eine Integritätsprüfung durchzuführen. Diese und andere Verfahren zum Erfassen und Abmildern der Fehlereinstreuung können andere Nachteile haben.
-
OFFENBARUNG
-
In einer Ausführungsform umfasst eine Einrichtung einen Speicherdecoder, einschließlich mehrerer Stufen in einem Decodierpfad, der konfiguriert ist, um ein Auswahlsignal von einem Eingangsadresssignal zu erzeugen, und Fehlererfassungslogik, die wirksam mit dem Speicherdecoder gekoppelt ist und konfiguriert ist, um Rückkopplungssignale, die von den mehreren Stufen verteilt sind, die auf einen Fehler entlang des Decodierpfades hinweisend sind, zu empfangen.
-
In einer anderen Ausführungsform ist ein Verfahren zum Erfassen eines Fehlers innerhalb einer Speichervorrichtung offenbart. Das Verfahren umfasst ein Decodieren eines Eingangssignals über einen Speicherdecoder, einschließlich mehrerer Stufen in einem Decodierpfad, um ein Auswahlsignal von einem Eingangsadresssignal zu erzeugen, ein Erzeugen von Rückkopplungssignalen, die innerhalb der mehreren Stufen verteilt sind, und ein Übermitteln der Rückkopplungssignale an eine Fehlererfassungslogik, die auf einen Fehler entlang des Decodierpfades hinweisend sind.
-
In einer anderen Ausführungsform ist ein Verfahren zum Erfassen eines Fehlers innerhalb einer Speichervorrichtung offenbart. Das Verfahren umfasst ein Erfassen, über Fehlererfassungslogik für die Speichervorrichtung, eines Fehlers entlang eines Decodierpfades als Reaktion auf Rückkopplungssignale, die von mehreren Stufen eines Speicherdecoders der Speichervorrichtung verteilt sind, und ein Erzeugen eines Fehleralarmsignals als Reaktion auf das Erfassen des Fehlers.
-
Figurenliste
-
Während diese Offenbarung mit Ansprüchen endet, die bestimmte Ausführungsformen besonders hervorheben und deutlich beanspruchen, können verschiedene Merkmale und Vorteile von Ausführungsformen innerhalb des Schutzumfangs dieser Offenbarung leichter aus der folgenden Beschreibung bei Lesen in Verbindung mit den beigefügten Zeichnungen ermittelt werden, in denen:
- 1 ein vereinfachtes schematisches Blockdiagramm eines Speichersystems mit Fehlererfassung gemäß Ausführungsformen der Offenbarung ist;
- 2 ein vereinfachtes schematisches Blockdiagramm eines Fehlererfassers und Decoders gemäß einer Ausführungsform der Offenbarung ist;
- 3 ein schematisches Schaltungsdiagramm der Decoderschaltungsanordnung und der integrierten Fehlererfassungsschaltungsanordnung ist;
- 4 ein schematisches Schaltungsdiagramm der Decoderschaltungsanordnung und der integrierten Fehlererfassungsschaltungsanordnung ist;
- 5 ein Flussdiagramm ist, das ein Verfahren zur Fehlererfassung innerhalb eines Adressdecoders einer Speichervorrichtung veranschaulicht;
- 6 ein vereinfachtes schematisches Blockdiagramm eines elektronischen Beispielsystems ist, das ein Speichersystem mit Fehlererfassung gemäß Ausführungsformen der Offenbarung einschließt.
-
ART(EN) ZUM AUSFÜHREN DER ERFINDUNG
-
In der folgenden detaillierten Beschreibung wird auf die beigefügten Zeichnungen Bezug genommen, die einen Teil hiervon bilden und in denen zur Veranschaulichung spezifische Ausführungsformen gezeigt sind, in denen die Offenbarung ausgeführt werden kann. Diese Ausführungsformen werden ausreichend detailliert beschrieben, um es dem Durchschnittsfachmann zu ermöglichen, die Offenbarung auszuführen. Es versteht sich jedoch, dass die detaillierte Beschreibung und die spezifischen Beispiele, während sie Beispiele von Ausführungsformen der Offenbarung angeben, nur zur Veranschaulichung und nicht zur Einschränkung gegeben sind. Aus dieser Offenbarung können verschiedene Ersetzungen, Modifikationen, Ergänzungen Umgestaltungen oder Kombinationen davon innerhalb des Schutzumfangs der Offenbarung vorgenommen werden und für den Durchschnittsfachmann deutlich werden.
-
Gemäß der üblichen Praxis sind verschiedene Merkmale, die in den Zeichnungen veranschaulicht sind, möglicherweise nicht maßstabsgetreu gezeichnet. Die hierin dargestellten Veranschaulichungen sollen keine tatsächlichen Ansichten einer bestimmten Einrichtung (z. B. Vorrichtung, System, usw.) oder eines bestimmten Verfahrens sein, sondern sind lediglich Darstellungen, die zum Beschreiben verschiedener Ausführungsformen der Offenbarung verwendet werden. Dementsprechend können die Abmessungen der verschiedenen Merkmale zur Verdeutlichung beliebig erweitert oder reduziert sein. Zusätzlich können manche der Zeichnungen zur Verdeutlichung vereinfacht sein. Somit können die Zeichnungen möglicherweise nicht alle Komponenten von einer gegebenen Einrichtung oder alle Vorgänge eines bestimmten Verfahrens darstellen.
-
Hierin beschriebene Informationen und Signale können unter Verwendung beliebiger von einer Vielfalt von Technologien und Techniken dargestellt werden. Zum Beispiel können Daten, Anweisungen, Befehle, Informationen, Signale, Bits, Symbole und Chips, auf die in der Beschreibung Bezug genommen werden kann, durch Spannungen, Ströme, elektromagnetische Wellen, Magnetfelder oder -partikel, optische Felder oder Partikel oder eine beliebige Kombination davon dargestellt sein. Manche Zeichnungen können Signale zur Verdeutlichung der Darstellung und Beschreibung als ein einzelnes Signal veranschaulichen. Es sollte für den Durchschnittsfachmann ersichtlich sein, dass das Signal einen Bus von Signalen darstellen kann, wobei der Bus eine Vielfalt von Bitbreiten aufweisen kann und die Offenbarung auf einer beliebigen Anzahl von Datensignalen, einschließlich eines einzelnen Datensignals, implementiert werden kann.
-
Es versteht sich, dass jede Bezugnahme auf ein Element hierin unter Verwendung einer Bezeichnung wie beispielsweise „erste/r/s“, „zweite/r/s“ usw. die Menge oder Reihenfolge dieser Elemente nicht einschränkt, es sei denn, eine solche Einschränkung wird ausdrücklich angegeben. Vielmehr werden diese Bezeichnungen hierin als ein zweckmäßiges Verfahren zum Unterscheiden zwischen zwei oder mehr Elementen oder Instanzen eines Elements verwendet. Eine Bezugnahme auf ein erstes und zweites Element bedeutet also nicht, dass nur zwei Elemente eingesetzt werden dürfen oder dass das erste Element dem zweiten Element in irgendeiner Weise vorhergehen muss. Ebenso kann ein Satz von Elementen, sofern nicht anders angegeben, ein oder mehrere Elemente umfassen. Ebenso können manchmal Elemente, auf die in der Singularform Bezug genommen wird, auch eine oder mehrere Instanzen des Elements einschließen.
-
Ausführungsformen beziehen sich allgemein auf Techniken zur Fehlererfassung eines sicheren Systems oder einer Speichervorrichtung, die konfiguriert ist, um sichere Informationen zu speichern. Ein Angreifer könnte möglicherweise versuchen, Fehler in die Speichervorrichtung einzustreuen (z. B. über IR-Licht), in der Absicht, dass die aus einem Block gelesenen Daten zu einem kritischen Zeitpunkt der Ausführung geändert werden. Ausführungsformen der Offenbarung können in Verbindung mit einem Speicherarray, Zeilendecoder, Spaltendecoder, Spalten-Eingabe/Ausgabe-Modul (E/A-Modul), Logik, und/oder Encoder implementiert werden. Das Speicherarray kann mehrere Speicherzellen einschließen, die mit Wortleitungen und Bitleitungen gekoppelt sind. Ein Fehlererfasser kann innerhalb des Zeilendecoders und/oder des Spaltendecoders implementiert sein. Das Speicherarray kann als RAM, ROM, Flash-Speicher oder als andere Speicherkonfigurationen konfiguriert sein. Ausführungsformen der Offenbarung können auch ein Mikrocontrollersystem, einschließlich einer daran gekoppelten Speichervorrichtung, einschließen. Die Speichervorrichtung kann eine interne Fehlererfassungs- und Adressintegritätsverwaltungs-Funktionalität, wie hierin beschrieben, einschließen. Solch ein Mikrocontrollersystem kann einen oder mehrere von einem Prozessor, Direktspeicherzugriff (DMA), Peripherievorrichtungen, Speichercontroller, der an den Systembus zusammen mit der Speichervorrichtung gekoppelt ist, einschließlich der Fehlererfassung einschließen. Ein Systembus kann einen Datenbus, einen Adressbus und einen Steuerbus einschließen. Adresssignale werden auf dem Adressbus durch einen Speichercontroller und/oder einen DMA zum Lesen oder Schreiben von einer Speichervorrichtung platziert. Die Speichervorrichtung schließt ein Speicherarray und andere Schaltungsanordnungen und/oder Logik ein, um die hierin beschriebenen Prozesse und die hierin beschriebene Fehlererfassung durchzuführen. Ausführungsformen der vorliegenden Offenbarung schließen auch eingebettete Systeme mit Speicher ein, wie beispielsweise in Controllern, die für verschlüsselte Kommunikation, ATMs oder andere Systeme verwendet werden. Zusätzliche Ausführungsformen schließen sichere Systeme ein, einschließlich solcher, in denen Vor-Codierpfade und/oder Decoderpfade sichere Pfade sind.
-
1 ist ein vereinfachtes schematisches Blockdiagramm eines Speichersystems 100 mit Fehlererfassung gemäß Ausführungsformen der Offenbarung. Das Speichersystem 100 kann ein Speicherarray 110, einen Zeilendecoder 120, einen Spaltendecoder 130, ein Spalten-Eingabe-/Ausgabe-Modul (E/A-Modul) 140, eine Logik 150 und eine Fehlererfassungslogik 160 einschließen. Das Speicherarray 110 schließt Wortleitungen 112 und Bitleitungen 114 ein, die wirksam mit Speicherzellen 116 gekoppelt sind. Das Speicherarray 110 kann als RAM, ROM, EEPROM, Flash-Speicher oder als andere Speicherkonfigurationen konfiguriert sein.
-
Im Betrieb werden Eingangsadresssignale durch den Zeilendecoder 120 und den Spaltendecoder 130 empfangen. Der Zeilendecoder 120 und der Spaltendecoder 130 sind konfiguriert, um die Anzahl der Eingangsadresssignale auf eine kleinere Anzahl von Auswahlsignalen zum Auswählen von Speicherzellen 116 aus dem Speicherarray 110 zu reduzieren. Die Decoder 120, 130 decodieren die Eingangsadresssignale und wählen unter Verwendung der Wortleitungen 112 und Bitleitungen 114 ein Speicherelement in dem Speicherarray 110 aus (z. B. eine oder mehrere Speicherzellen 116 wie beispielsweise ein Byte). Der Zeilendecoder 120 und der Spaltendecoder 130 können jeweils Logikgatter zum Auswählen von Wortleitungen 112 und Bitleitungen 114 einschließen. Das Spalten-E/A-Modul 140 kann eine Schaltungsanordnung (z. B. Multiplexer, Puffer, Leseverstärker) zum Lesen von Daten von und zum Schreiben von Daten in die ausgewählten Speicherzellen 116 einschließen. Das Lesen und Schreiben von Daten von und in die ausgewählten Speicherzellen 116 kann durch Steuersignale gesteuert werden, die durch die Logik 150 erzeugt werden.
-
Die Fehlererfassungslogik 160 kann konfiguriert sein, um Rückkopplungssignale 102 von Fehlererfassungselementen zu empfangen, die in den verschiedenen Stufen zum Erfassen möglicher Angriffe verteilt sind. Jede Stufe kann an die Fehlererfassungslogik 160 zurückberichten, die konfiguriert ist, um die Rückkopplungssignale von jeder Stufe zu analysieren und zu bestimmen, ob ein Fehler vorliegt, wie unten detaillierter erörtert wird. Die Fehlererfassungslogik 160 kann einen Fehleralarmsignal erzeugen, als Reaktion auf ein Bestimmen des Vorhandenseins des Fehlers entlang des Decoderpfades.
-
Obwohl die Fehlererfassungslogik 160 in 1 mit dem Zeilendecoder 120 implementiert gezeigt ist, schließen Ausführungsformen der Offenbarung auch eine Implementierung der Fehlererfassungslogik 160 mit dem Spaltendecoder 130 ein. Ausführungsformen können auch jeden des Zeilendecoders 120 und des Spaltendecoders 130, die mit der Fehlererfassungslogik 160 gekoppelt sind, oder eine getrennte Fehlererfassungslogik, dediziert für jeden des Zeilendecoders 120 und des Spaltendecoders 130, einschließen. Die Fehlererfassungslogik 160 kann innerhalb der Speichervorrichtung und/oder außerhalb der Speichervorrichtung (z. B. innerhalb des Mikrocontrollers oder einer anderen Vorrichtung) eines elektronischen Systems (6) angeordnet sein. In manchen Ausführungsformen können Abschnitte der Fehlererfassungslogik 160 über verschiedene Vorrichtungen des Systems verteilt sein. Zum Beispiel können manche Rückkopplungssignale durch die Speichervorrichtung empfangen und analysiert werden, und andere Rückkopplungssignale können durch den Mikrocontroller oder jede andere Kombination von Vorrichtungen innerhalb des Systems empfangen und analysiert werden.
-
Ausführungsformen der Offenbarung schließen eine Einrichtung, umfassend einen Speicherdecoder, einschließlich mehrerer Stufen in einem Decodierpfad, der konfiguriert ist, um ein Ausgangssignal von einem Eingangsadresssignal zu erzeugen, und Fehlererfassungslogik ein, die wirksam mit dem Speicherdecoder gekoppelt ist und konfiguriert ist, um Rückkopplungssignale, die von den mehreren Stufen verteilt sind, die auf einen Fehler entlang des Decodierpfades hinweisend sind, zu empfangen.
-
2 ist ein vereinfachtes schematisches Blockdiagramm eines Fehlererfassers und Decoders 200 gemäß einer Ausführungsform der Offenbarung. Der Fehlererfasser und Decoder 200 schließt die Fehlererfassungslogik 160, einen globalen Decoder 220, einen lokalen Decoder 230 und einen Zeilendecoder 240 ein, die wirksam in Reihe geschaltet sind, um eine Eingangsadresse (z. B. add<4:0>), die von dem Speichercontroller kommend empfangen wurde, zu einem Auswahlsignal (z. B. w1<31:0>) zu decodieren, zum Zugreifen auf die ausgewählte Wortleitung oder Bitleitung des Speicherarrays ( 1). Die Eingangsadresse kann eine binäre Zahl mit Werten 0 bis zur höchsten nummerierten Zeile sein. Das resultierende Auswahlsignal wird für die Zeile selbst erzeugt, die ausgewählt (d. h. aktiviert) wird. Wie oben erörtert, kann die Fehlererfassungslogik 160 mit einem Zeilendecoder und/oder einem Spaltendecoder implementiert sein. Als solche können die Decoderstufen 220, 230, 240 entweder Teil des Zeilendecoders oder des Spaltendecoders von 1 sein.
-
Das Decodieren der Eingangsadresse zum Auswahlsignal erfolgt stufenweise, wie beispielsweise der globale Decoder 220, der die Eingangsadresse zu einer ersten Zwischenadresse decodiert (z. B. xpg/xpi/xpw<7:0>), die dann zu einer zweiten Zwischenadresse (z. B. inwl<31:0>) und weiter zu dem Auswahlsignal decodiert wird. Das in 2 gezeigte Auswahlsignal ist eine Wortleitungs-Auswahladresse. Während Fehlererfassungselemente innerhalb eines Zeilendecoders oder eines Spaltendecoders implementiert und verteilt sein können, kann das Auswahlsignal eine Wortleitungsadresse oder eine Bitleitungsadresse abhängig von der Art des Decoders sein. In manchen Ausführungsformen kann jeder des Zeilendecoders oder des Spaltendecoders seinen eigenen Fehlererfasser einschließen. Zusätzlich decodiert das in 2 gezeigte Beispiel (und stellt eine Fehlererfassung bereit für) ein 5-Bit-Eingangsadresssignal von dem Speichercontroller in ein 32-Bit-Auswahlsignalsignal an das Speicherarray. Unterschiedliche Größen von Speicherarrays werden in Betracht gezogen. Der Decoder kann skaliert werden, wie von dem Durchschnittsfachmann verstanden wird, um die Größe des Speicherarrays und der benötigten Adressen aufzunehmen. Zum Beispiel können zusätzliche Stufen zu dem Decodierpfad hinzugefügt werden.
-
Der globale Decoder 220 ist eine Vorcodierstufe, die konfiguriert ist, um die erste Zwischenadresse von der Eingangsadresse zu erzeugen. Bezugnehmend auf 2 kann der globale Decoder 220 add<2:0> verwenden, um xpw<7:0> zu erzeugen, add<3>, um xpwi<2:0> zu erzeugen, und add<4>, um xpg<1:0> zu erzeugen. Der lokale Decoder 230 ist eine Decodierstufe, die konfiguriert ist, um die zweite Zwischenadresse von der ersten Zwischenadresse zu erzeugen. Zum Beispiel können die ersten Zwischenadressen xpw<7:0> + xpwi<1:0> + xpg<1:0> verwendet werden, um inw1<31:0> zu erzeugen. Der Zeilendecoder 240 kann eine Enddecodierstufe sein, die konfiguriert ist, um das Auswahlsignal von der zweiten Zwischenadresse (oder vorherigen Zwischenadresse, falls mehr Stufen vorhanden sind) zu erzeugen. Zum Beispiel kann die zweite Zwischenadresse inwl<31:0> verwendet werden, um das Auswahlsignal w1<31:0> zu erzeugen.
-
Wie oben erörtert können Ausführungsformen der Offenbarung die Fehlererfassungselemente, die über den verschiedenen Stufen verteilt sind, zum Regenerieren der ursprünglichen Adressen und zum Erfassen möglicher Angriffe einschließen. Jede Stufe kann an die Fehlererfassungslogik 160 zurückberichten, die konfiguriert ist, um die Rückkopplungssignale von jeder Stufe zu analysieren und zu bestimmen, ob ein Fehler vorliegt.
-
Der Fehlererfasser und Decoder 200 schließt auch einen globalen Encoder 250 ein, der wirksam mit dem Ausgang des globalen Decoders 220 gekoppelt ist. Der globale Encoder 250 empfängt die ersten Zwischenausgabe von dem globalen Decoder 220 und ist konfiguriert, um einen Codierungsvorgang durchzuführen, der das Gegenteil des globalen Decoders 220 ist. Als ein Ergebnis ist der globale Encoder 250 konfiguriert, um eine Replikatadresse (z. B. add rep<4:0>) zu erzeugen, die an die Fehlererfassungslogik 160 übermittelt wird. Die Fehlererfassungslogik 160 kann die Replikatadresse mit der ursprünglichen Eingangsadresse von dem Speichercontroller vergleichen, um zu bestimmen, ob sie gleich sind. Falls nicht, wird ein Fehler erfasst und es ist bekannt, dass mindestens der globale Decoder 220 kompromittiert wurde. Der lokale Decoder 230 schließt eine Decoderschaltungsanordnung und integrierte Fehlererfassungsschaltungsanordnung ein, die konfiguriert sind, um einen möglichen Angriff auf Zwischen-Decodiersignale zu erfassen.
-
3 ist ein schematisches Schaltungsdiagramm 300 eines Abschnitts einer Decoderschaltungsanordnung 302 bis 308 und der integrierten Fehlererfassungsschaltungsanordnung 312 bis 318 für den lokalen Decoder 230 ( 2). Der in 3 gezeigte Abschnitt der Decoderschaltungsanordnung 302 bis 308 erzeugt einen Abschnitt (z. B. inwl<3:0>) aus den zweiten Zwischenadressen (z. B. inwl<31:0>) von den ersten Zwischenadressen xpw<7:0> + xpwi<1:0> + xpg<1:0>, die durch den globalen Decoder 220 empfangen wurden (2). Es versteht sich, dass zusätzliche Abschnitte der Decoderschaltungsanordnung und der integrierten Fehlererfassungsschaltungsanordnung hinzugefügt werden können, um den lokalen Decoder abhängig von der Größe des Speicherarrays zu skalieren.
-
Die integrierte Fehlererfassungsschaltungsanordnung 312 bis 318 ist konfiguriert, um basierend auf einem Analysieren eines Bits zusammen mit einem anderen Bit innerhalb seines jeweiligen Decoderpfades zu bestimmen, ob jedes Ausgangsbit seines Decoderpfades das korrekte Bit ist. In manchen Ausführungsformen können das Ausgangsbit und das andere Bit innerhalb des Decoderpfades mit einem AND-Vorgang verglichen werden. Zum Beispiel kann jeder Abschnitt der Decoderschaltungsanordnung 302 bis 308 mit einer jeweiligen integrierten Fehlererfassungsschaltung 312 bis 318 gekoppelt sein, die das erste Ausgangsbit inwl<0> der zweiten Zwischenadressen und mindestens ein zusätzliches Bit aus dem Decoderpfad empfängt (z. B. das Steuerbit, das in einen Inverter eingegeben wird, um das erste Ausgangsbit inwl<0> zu erzeugen). Zum Beispiel kann die integrierte Fehlererfassungsschaltung 312 mindestens zwei Transistoren einschließen, die in Reihe geschaltet sind, die durch inwl<0> und sein vorheriges Steuerbit gesteuert werden. Die in Reihe geschalteten Transistoren sind ferner zwischen GND und einem resistiven Pull-Up-Transistor gekoppelt. Jeder resistive Pull-Up-Transistor kann einen P-Kanal-Transistor einschließen, der mit der VDD-Stromquelle gekoppelt ist, und sein Gate ist mit GND verbunden, um jedes Rückkopplungsausgangsbit inwl<0> bis inwl<4> auszugeben.
-
Die Steuerbits sollten entgegengesetzt sein, wenn kein Fehler vorliegt. Somit können eine durch die integrierten Fehlererfassungsschaltung 312 empfangene 0 und 1 eine 0 erzeugen, die bewirkt, dass ihr jeweiliger Pull-Up-Transistor aktiviert wird, damit das Zwischenrückkopplungssignal inwl ok<0> auf VDD hochgezogen werden kann, was anzeigt, dass kein Fehler vorhanden ist. Wenn eine 1 und eine 1 durch die integrierte Fehlererfassungsschaltung 312 empfangen werden, kann eine 1 erzeugt werden, die den jeweiligen Pull-Up-Transistor überschreibt, damit das Zwischenrückkopplungssignal inw1_ok<0> nicht hochgezogen wird - was somit anzeigt, dass ein Fehler vorhanden ist. In dieser Ausführungsform können eine 0 und eine 0 eine 0 ergeben, die ihren jeweiligen Pull-Up-Transistor aktiviert. Selbst wenn das Empfangen einer 0 und einer 0 technisch durch einen Fehler verursacht werden kann, kann die Fehlererfassungslogik immer noch ein Bit ausgeben, das anzeigt, dass kein Fehler vorhanden ist, um Platz zu sparen. In manchen Ausführungsformen können verschiedene Schaltungskonfigurationen und/oder logische Funktionen implementiert werden. Zum Beispiel kann ein XOR-Gatter verwendet werden, das die Genauigkeit auf Kosten einer zusätzlichen Schaltungsanordnung verbessern kann. Andere Konfigurationen werden ebenfalls in Betracht gezogen, wie beispielsweise Transistoren, die als ein AND-Gatter in Reihe zwischen VDD und inlw_ok<0> geschaltet sind. Zusätzlich können verschiedene Konfigurationen und logischen Funktionen zu verschiedenen Konfigurationen (oder Abwesenheit) der Pull-Up-Transistoren führen.
-
Andere Bits können verwendet werden, um das Vorhandensein eines Fehlers zu bestimmen. Zum Beispiel können das Steuerbit und das invertierte Ausgangsbit inwln<0> verglichen werden, die eher gleich als gegensätzlich sein sollten. In diesem Fall kann ein NAND-Gatter verwendet werden, so dass eine durch die integrierte Fehlererfassungsschaltung 312 empfangene 1 und eine 1 eine 0 erzeugen können, damit ein Zwischenrückkopplungssignal inwl_ok<0> anzeigen kann, dass ein Fehler nicht vorhanden ist, während eine 0 und eine 1, eine 1 und eine 0 oder eine 0 und eine 0, die durch die integrierte Fehlererfassungsschaltung 312 empfangen wurden, eine 1 erzeugen können, damit ein Zwischenrückkopplungssignal inwl_ok<0> anzeigen kann, dass ein Fehler vorhanden ist. Andere Gatter, wie beispielsweise OR oder NOR, können ebenfalls implementiert werden, abhängig davon, welche Kombinationen von Bits zum Bestimmen des Vorhandenseins eines Fehlers analysiert werden sollen.
-
Das Ergebnis dieser Analyse kann zurück an die Fehlererfassungslogik 160 als inwl_ok<7:0> übermittelt werden. Die Fehlererfassungslogik 160 kann jedes Bit des Zwischenrückkopplungssignals inwl_ok<7:0> analysieren, um zu bestimmen, ob irgendwelche Werte anzeigen, dass ein Fehler erfasst wurde. In manchen Ausführungsformen übermittelt der lokale Decoder 230 ein einziges Zwischenrückkopplungssignal inwl_ok im Gegensatz zu einem Bus von Rückkopplungssignalen (z. B. inwl<7:0>). In einer solchen Ausführungsform kann das einzelne Zwischenrückkopplungssignal inwl_ok innerhalb des lokalen Decoders 230 erzeugt werden, indem jedes Bit der inwl_ok<7:0>-Signale (z. B. über einen AND-Vorgang) vor dem Übermitteln des singulären Zwischenrückkopplungssignals inwl_ok zu der Fehlererfassungslogik 160 verglichen wird. Somit kann das singuläre Zwischenrückkopplungssignal inwl_ok das Vorhandensein eines Fehlers anzeigen, wenn eines der Bits der inwl_ok<7:0>-Signale einen Fehler anzeigt, und das singuläre Zwischenrückkopplungssignal inwl_ok kann die Abwesenheit eines Fehlers anzeigen, wenn alle Bits des inwl_ok<7:0>-Signals die Abwesenheit eines Fehlers anzeigen. Als ein Ergebnis kann ein Bit für diese Stufe durch die Fehlererfassungslogik 160 übermittelt und empfangen werden anstatt acht Bits.
-
Der Zeilendecoder 240 (oder Spaltendecoder) kann die Endstufe sein, die eine Decoderschaltungsanordnung und eine integrierte Fehlererfassungsschaltungsanordnung einschließt, die konfiguriert sind, um einen möglichen Angriff auf die Endstufe von Decodiersignalen zu erfassen.
-
4 ist ein schematisches Schaltungsdiagramm 400 einer Decoderschaltungsanordnung 402 und einer integrierten Fehlererfassungsschaltungsanordnung 412 für den Zeilendecoder 240 (2). Die integrierte Fehlererfassungsschaltungsanordnung 412 ist konfiguriert, um zu bestimmen (z. B. über einen AND-Vorgang oder einen anderen Vorgang wie gewünscht), wie jedes Ausgangsbit ihres Decoderpfades verglichen mit einem anderen Bit innerhalb des Decoderpfades, um zu bestimmen, ob das Bit sein korrekter Wert ist. Das Ergebnis dieses Vergleichs kann zurück an die Fehlererfassungslogik 160 als wl_ok<31:0> übermittelt werden. Die Fehlererkennungsschaltungsanordnung 412 kann seriell gekoppelte Transistoren einschließen, welche die Steuerungseingaben empfangen und die ebenfalls mit einem resistiven Pull-Up-Transistor gekoppelt sind, um das Rückkopplungssignal wl ok zu erzeugen.
-
Die Fehlererfassungslogik 160 kann jedes Bit des Endrückkopplungssignals wl_ok<31:0> analysieren, um zu bestimmen, ob irgendwelche Werte anzeigen, dass ein Fehler erfasst wurde. In mancher Ausführungsform übermittelt der lokale Decoder 230 ein einziges Rückkopplungssignal wl ok im Gegensatz zu einem Bus von Rückkopplungssignalen. In einer solchen Ausführungsform kann das einzelne Rückkopplungssignal wl ok innerhalb des Zeilendecoders 240 erzeugt werden, indem jedes Bit (z. B. über einen AND-Vorgang oder anderen Vorgang wie gewünscht) der wl_ok<31:0>-Signale vor dem Übermitteln des singulären wl_ok-Rückkopplungssignals zu der Fehlererfassungslogik 160 verglichen wird. Als ein Ergebnis kann ein Bit für diese Stufe durch die Fehlererfassungslogik 160 übermittelt und empfangen werden anstatt zweiunddreißig Bits.
-
Als ein Ergebnis einer oder mehrerer Ausführungsformen der Offenbarung kann ein Erfassen eines Angriffs auf eine Speichervorrichtung erzielt werden, ebenso wie ein Identifizieren, welche Stufe des Decodierens durch den Angriff kompromittiert wurde. Zusätzlich kann die Verwendung einer ROM-Vorrichtung am Ende des Zeilendecoders beseitigt werden, was die Komplexität des Fehlererfassers durch Vermeiden eines Erzeugens von ROM-Taktsignalen sowie eine weniger komplizierte Verdrahtungsphase reduzieren kann.
-
Zusätzliche Ausführungsformen schließen ein Verfahren zum Erfassen eines Fehlers innerhalb einer Speichervorrichtung ein. Das Verfahren umfasst ein Decodieren eines Eingangssignals über einen Speicherdecoder, einschließlich mehrerer Stufen in einem Decodierpfad, um ein Auswahlsignal von einem Eingangsadresssignal zu erzeugen, und ein Erzeugen von Rückkopplungssignalen, die innerhalb der mehreren Stufen verteilt sind, und ein Übermitteln der Rückkopplungssignale an eine Fehlererfassungslogik, die auf einen Fehler entlang des Decodierpfades hinweisend ist.
-
Eine andere Ausführungsform schließt ein Verfahren zum Erfassen eines Fehlers innerhalb einer Speichervorrichtung ein. Das Verfahren umfasst ein Erfassen über Fehlererfassungslogik für die Speichervorrichtung eines Fehlers entlang eines Decodierpfades als Reaktion auf Rückkopplungssignale, die von mehreren Stufen eines Speicherdecoders der Speichervorrichtung verteilt sind, und ein Erzeugen eines Fehleralarmsignals als Reaktion auf das Erfassen des Fehlers.
-
5 ist ein Flussdiagramm 500, das ein Verfahren zur Fehlererfassung innerhalb eines Adressdecoders einer Speichervorrichtung veranschaulicht. Bei Vorgang 510 schließt das Verfahren ein Erzeugen eines Replikat-Eingangsadresssignals ein. Das Replikat-Eingangsadresssignal kann mit einem globalen Encoder erzeugt werden, der ein Rückwärtscodieren des globalen Decoders durchführt, der das ursprüngliche Eingangssignal von dem Speichercontroller empfangen hat.
-
Bei Vorgang 520 schließt das Verfahren ein Durchführen einer internen Überprüfung der Genauigkeit von einem oder mehreren lokalen Zwischendecodern ein. Die interne Überprüfung kann ein Vergleichen von Ausgangsbits einschließen, die durch den lokalen Zwischendecoder mit einem internen Referenzbit erzeugt wurden, um zu bestimmen, dass die Bits nicht durch einen Angriff geändert wurden.
-
Bei Vorgang 530 schließt das Verfahren ein Durchführen einer internen Überprüfung der Genauigkeit der Enddecodierstufe (z. B. Zeilendecoder oder Spaltendecoder) ein, die die decodierte Endadresse für das Speicherarray erzeugt. Die interne Überprüfung kann ein Vergleichen von Ausgangsbits einschließen, die durch den Endstufendecoder mit einem internen Referenzbit erzeugt wurden, um zu bestimmen, dass die Bits nicht durch einen Angriff geändert wurden.
-
Bei Vorgang 540 schließt das Verfahren ein Analysieren der Rückkopplungssignale durch die Fehlererfassungslogik ein, um zu bestimmen, ob ein Angriff stattgefunden hat. Die Rückkopplungssignale können Signale einschließen, die durch jeden der Vorgänge 510, 520 und 530 erzeugt wurden, die auf die Ergebnisse der durchgeführten Konsistenzprüfungen hinweisend sind. Zum Beispiel kann das Replikat-Eingangsadresssignal ein Rückkopplungssignal sein, das mit dem ursprünglichen Eingangsadresssignal verglichen wird. Wenn die zwei Signale nicht übereinstimmen, kann die Fehlersteuerlogik bestimmen, dass ein Angriff stattgefunden hat. Ein Zwischen-Rückkopplungssignal (z. B. ein einzelnes Bit oder ein Bus von Signalen) kann von den lokalen Zwischendecodern gesendet werden als Reaktion auf die internen Überprüfungen, die während dem Vorgang 520 durchgeführt werden, die anzeigen, ob ein Angriff auf dem lokalen Zwischendecoder stattgefunden hat. Ein End-Ausgangs-Rückkopplungssignal (z. B. ein einzelnes Bit oder ein Bus von Signalen) kann von dem Endstufendecoder gesendet werden als Reaktion auf die internen Überprüfungen, die während dem Vorgang 530 durchgeführt werden, die anzeigen, ob ein Angriff auf dem Endstufendecoder stattgefunden hat.
-
Bei Vorgang 550 kann die Fehlererfassungslogik ein Fehleralarmsignal als Reaktion auf das Bestimmen des Vorhandenseins des Fehlers entlang des Decoderpfades erzeugen. Zum Beispiel kann die Fehlererfassungslogik aus irgendeinem der Rückkopplungssignale bestimmen, dass ein Fehler aufgetreten ist, und das Fehleralarmsignal entsprechend erzeugen.
-
6 ist ein vereinfachtes schematisches Blockdiagramm eines elektronischen Beispielsystems 600, das ein Speichersystem 610 mit Fehlererfassung gemäß Ausführungsformen der Offenbarung einschließt. Das elektronische System 600 kann eine zentrale Verarbeitungseinheit (CPU) 602, Direktspeicherzugriff (DMA) 604, eine oder mehrere Peripherievorrichtungen 606, einen Speichercontroller 608 und ein Speichersystem 610, gekoppelt mit dem Systembus 612, einschließen. Der Systembus 612 kann einen Datenbus, Adressbus und Steuerbus einschließen. Adresssignale werden auf dem Adressbus durch den Speichercontroller 608 und/oder den DMA 604 zum Lesen oder Schreiben von dem Speichersystem 610 platziert. Das Speichersystem 610 schließt ein Speicherarray und andere Schaltungsanordnungen und/oder Logik ein, wie oben unter Bezugnahme auf 1 bis 5 erörtert.
-
Während bestimmte veranschaulichende Ausführungsformen in Verbindung mit den Figuren beschrieben wurden, wird der Durchschnittsfachmann erkennen und anerkennen, dass der Schutzumfang dieser Offenbarung nicht auf die Ausführungsformen beschränkt ist, die in dieser Offenbarung explizit gezeigt und beschrieben sind. Vielmehr können viele Ergänzungen, Streichungen und Modifikationen an den in dieser Offenbarung beschriebenen Ausführungsformen vorgenommen werden, um Ausführungsformen innerhalb des Schutzumfangs dieser Offenbarung zu erzeugen, wie beispielsweise diejenigen, die speziell beansprucht werden, einschließlich gesetzlicher Äquivalente. Zusätzlich können Merkmale einer offenbarten Ausführungsform mit Merkmalen einer anderen offenbarten Ausführungsform kombiniert werden, während sie immer noch innerhalb des Schutzumfangs dieser Offenbarung liegen, wie er von den Erfindern in Betracht gezogen wird.
-
ZITATE ENTHALTEN IN DER BESCHREIBUNG
-
Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
-
Zitierte Patentliteratur
-