-
Ausführungsbeispiele betreffen allgemein Speicheranordnungen.
-
Elektronische Geräte müssen in einer Vielzahl von Anwendungen gegen Angriffe geschützt sein. Ein typisches Beispiel sind Chipkarten, die geheime Daten (z.B. Schlüssel oder Passwörter) oder Daten, die vor Manipulation geschützt werden sollen (z.B. Guthaben auf einer Guthabenkarte), verarbeiten und speichern oder auch Steuergeräte, beispielsweise in einem Fahrzeug, deren korrekte Funktion wichtig für die Sicherheit eines Benutzers ist. Ein möglicher Angriffspunkt eines elektronischen Geräts ist sein Speicher, durch dessen Manipulation ein Angreifer geheime Daten in Erfahrung bringen oder die korrekte Funktion des elektronischen Geräts beeinträchtigen kann. Deshalb sind effiziente Mechanismen zum Schutz von elektronischen Speichern wünschenswert.
-
Die Druckschrift
US 7539588 B2 beschreibt einen Speicher (z.B. einen Flash-Speicher oder einen magnetischen RAM-Speicher), der mit einem Test-Speicherbereich zum Speichern von Testinformation versehen ist. Eine Veränderung der gespeicherten Testinformation durch einen Umgebungsparameter wird detektiert und ein Indikatorsignal wird ausgegeben, wodurch eine Datenverarbeitung angehalten wird.
-
In der Druckschrift
US 2012/0327699 A1 ist ein Speicher beschrieben, bei dem ermittelt wird, ob eine Bitleitung denselben logischen Zustand wie eine dazu komplementäre Bitleitung hat. Ist dies der Fall, wird ein Fehlerindikator ausgegeben, der anzeigt, dass mehrere Wortleitungen gleichzeitig aktiviert wurden.
-
Gemäß einer Ausführungsform wird eine Speicheranordnung bereitgestellt, die ein Speicherzellenfeld mit Spalten und Zeilen von Speicherzellen, Bitleitungen und Wortleitungen aufweist, wobei jede Spalte einer Bitleitung und jede Zeile einer Wortleitung zugeordnet ist, wobei die Spalten von Speicherzellen Spalten von Speicherzellen von einem ersten Spalten-Typ aufweisen, die eingerichtet sind, Nutzdaten zu speichern, und Spalten von Speicherzellen von einem zweiten Spalten-Typ aufweisen, die eingerichtet sind, vorgegebene Überprüfungsdaten zu speichern. Die Speicherzellen mindestens der Spalten von Speicherzellen vom zweiten Spalten-Typ sind derart eingerichtet und mit den Bitleitungen verbunden, dass die Speicherzellen einer Spalte von Speicherzellen bei einem Lesezugriff die der Spalte zugeordnete Bitleitung auf einen Wert setzen, der einer logischen Kombination der Werte entspricht, die von den Speicherzellen der Spalte gespeichert werden, die zu Zeilen von Speicherzellen gehören, die bei dem Lesezugriff adressiert werden. Die Speicheranordnung weist eine Detektionsschaltung auf, die eingerichtet ist, bei einem Lesezugriff zu detektieren, ob eine Bitleitung, die einer Spalte von Speicherzellen vom zweiten Spalten-Typ zugeordnet ist, auf einen Wert gesetzt wird, der der logischen Kombination von Werten entspricht, die von Speicherzellen der Spalte von Speicherzellen vom zweiten Spalten-Typ gespeichert werden und deren Werte zu unterschiedlichen Zeilen von Speicherzellen gehören. Die Detektionsschaltung ist eingerichtet, zu detektieren, ob ein Bitmuster, auf das die Bitleitungen, die den Spalten von Speicherzellen vom zweiten Spalten-Typ zugeordnet sind, auf ein resultierendes Bitmuster gesetzt werden, das der logischen Kombination von Bitmustern unterschiedlicher Zeilen von Speicherzellen entspricht, wobei die vorgegebenen Bitmuster jeweils ein vorgegebenes Hamming-Gewicht haben und die Detektionsschaltung eingerichtet ist, basierend auf dem Hamming-Gewicht des resultierenden Bitmusters zu überprüfen, ob zu das resultierende Bitmuster der logischen Kombination von Bitmustern unterschiedlicher Zeilen von Speicherzellen entspricht.
-
Die Figuren geben nicht die tatsächlichen Größenverhältnisse wieder sondern sollen dazu dienen, die Prinzipien der verschiedenen Ausführungsbeispiele zu illustrieren. Im Folgenden werden verschiedene Ausführungsbeispiele mit Bezug auf die folgenden Figuren beschrieben.
- 1 zeigt ein Speicherzellenfeld.
- 2 zeigt zwei Speicherzellen, die derselben Bitleitung zugeordnet sind und mit der Bitleitung mittels eines jeweiligen Pull-Down-Transistors verbunden sind.
- 3 zeigt eine Erweiterung eines Speicherzellenfelds mit Speicherzellen zum Speichern von Überprüfungsdaten, die auf einer gleichzeitigen Aktivierung von mehreren Wortleitungen basieren.
- 4 zeigt ein Beispiel für zwei Speicherzellenzeilen, die jeweils ein vorberechnetes Bitmuster speichern.
- 5 zeigt eine Speicheranordnung.
-
Die folgende detaillierte Beschreibung bezieht sich auf die beiliegenden Figuren, die Details und Ausführungsbeispiele zeigen. Diese Ausführungsbeispiele sind so detailliert beschrieben, dass der Fachmann die Erfindung ausführen kann. Andere Ausführungsformen sind auch möglich und die Ausführungsbeispiele können in struktureller, logischer und elektrischer Hinsicht geändert werden, ohne vom Gegenstand der Erfindung abzuweichen. Die verschiedenen Ausführungsbeispiele schließen sich nicht notwendig gegenseitig aus sondern es können verschiedene Ausführungsformen miteinander kombiniert werden, so dass neue Ausführungsformen entstehen. Im Rahmen dieser Beschreibung werden die Begriffe „verbunden“, „angeschlossen“ sowie „gekoppelt“ verwendet zum Beschreiben sowohl einer direkten als auch einer indirekten Verbindung, eines direkten oder indirekten Anschlusses sowie einer direkten oder indirekten Kopplung.
-
Elektronische Speicher weisen typischerweise ein Gitter (zweidimensionales Feld oder Array oder Matrix) von Speicherzellen auf, wobei die Zeilen durch Wortleitungen und die Spalten durch Bitleitungen adressiert werden.
-
1 zeigt ein Speicherzellenfeld 100.
-
Das Speicherzellenfeld weist eine Vielzahl von Speicherzellen 101 auf, die in Form einer Matrix mit Spalten 102 von Speicherzellen und Zeilen 103 von Speicherzellen angeordnet sind.
-
Jeder Spalte 102 von Speicherzellen ist eine Bitleitung 104 zugeordnet und jeder Zeile 103 von Speicherzellen ist eine Wortleitung 105 zugeordnet.
-
Durch Aktivierung einer Wortleitung 105 können alle (oder ein Teil der) Speicherzellen der über diese Wortleitung adressierten Zeile 103 (d.h. der dieser Wortleitung zugeordneten Zeile 103) mittels der Bitleitungen 104 gleichzeitig ausgelesen oder geschrieben werden.
-
Um eine möglichst platzsparende Bauweise eines Speichers zu ermöglichen, können alle durch eine gegebene Bitleitung adressierbaren Speicherzellen (d.h. alle Speicherzellen, die einer Bitleitung zugeordnet sind, d.h. mit der Bitleitung verbunden sind) durch eine spezielle Schaltungstechnik („open drain“ oder „wired-or“) mit der Bitleitung verbunden sein. Ein Beispiel für eine solche Schaltungstechnik ist in 2 gezeigt.
-
2 zeigt zwei Speicherzellen 201, 202, die derselben Bitleitung 203 zugeordnet sind und mit der Bitleitung 203 mittels eines jeweiligen Pull-Down-Transistors 204, 205 verbunden sind.
-
Jeder der Speicherzellen 201, 202 ist außerdem mit einer jeweiligen Wortleitung 206, 207 verbunden.
-
In diesem Beispiel wird beispielsweise bei einem Lesezugriff die Bitleitung 203 auf einen hohen Pegel vorgeladen (mit einem sogenannten „precharge“), eine der Wortleitungen 206, 207 aktiviert und die der aktivierten Wortleitung 206, 207 zugeordnete Speicherzelle 201, 202 zieht je nachdem, ob sie eine 1 oder eine 0 speichert, die Bitleitung 203 nach unten (auf einen niedrigen Pegel) oder nicht.
-
Entspricht eine gespeicherte 0 beispielsweise einer Aktivierung des jeweiligen Pull-Down-Transistors 204, 205, so zieht die Speicherzelle 201, 202 die Bitleitung 203 auf den niedrigen Pegel, wenn sie eine 0 speichert, was dann als Ausgabe einer 0 auf die Bitleitung 203 interpretiert wird.
-
Werden nun beide Wortleitungen 206, 207 aktiviert, so reicht es, wenn eine der beiden Speicherzellen 201, 202 eine 0 speichert, um die Bitleitung 203 nach unten zu ziehen. Umgekehrt bleibt die Bitleitung 203 nur dann auf dem hohen Pegel, wenn beide Speicherzellen 201, 202 eine 1 speichern. Somit wird bei gleichzeitiger Aktivierung mehrerer Wortleitungen die Bitleitung 203 auf eine logische Kombination, in diesem Beispiel eine UND-Kombination, der gespeicherten Werte gesetzt (denn die Bitleitung bleibt nur dann auf der 1, wenn beide Speicherzellen 201, 202 eine 1 speichern).
-
Je nachdem, welchen Spannungspegeln eine gespeicherte 1 und eine gespeicherte 0 zugeordnet sind und ob anstatt des Pull-down-Transistors 204, 205 ein Pull-up-Transistor verwendet wird oder nicht, kann sich auch eine ODER-Kombination der von den Speicherzellen 201, 202 gespeicherten Werte als Wert ergeben, auf den die Bitleitung 203 gesetzt und der von der Bitleitung 203 ausgegeben wird.
-
Eine Anbindung von Speicherzellen an eine Bitleitung mittels einer Schaltungstechnik, wie sie mit Bezug auf 2 beschrieben ist, erlaubt das Einsparen von Transistoren und stellt für den normalen Betrieb eines Speicher-Arrays keine funktionale Einschränkung dar. Für einen Angreifer ergeben sich aufgrund der Tatsache, dass bei der gleichzeitigen Adressierung von mehreren Wortleitungen eine logische Kombination von Speicherinhalten an eine Bitleitung ausgegeben wird, aber Möglichkeiten, um bestimmte Attacken auszuführen:
- • Wenn ein Angreifer während eines Lesezugriffs auf den Speicher durch einen invasiven Angriff mehrere Wortleitungen des Speicherzellenfelds gleichzeitig aktiviert (zum Beispiel durch einen Forcing-Angriff mittels Probing-Nadeln oder durch Laser), dann bewirkt diese Schaltungstechnik implizit, dass an einer Bitleitung eine logische Verknüpfung aller gleichzeitig aktivierten Speicherzellen, die dieser Bitleitung zugeordnet sind, ausgelesen wird. Wie oben erläutert ist je nach Schaltungstechnik und Aufbau des Speicherzellenfelds das Ergebnis dieser impliziten Berechnung die logische UND-Kombination oder die logische ODER-Kombination der gleichzeitig aktivierten (d.h. mittels der Wortleitungen adressierten) Speicherzellen, die dieser Bitleitung zugeordnet sind.
- • Ähnlich kann ein Angreifer, wenn er während eines Schreibzugriffs mehrere Wortleitungen des Speicherzellenfelds gleichzeitig aktiviert, unerwünschte Kopien der zu speichernden Daten an weiteren, ungenutzten Stellen im Speicherzellenfeld anlegen. Eine solche Kopie kann der Angreifer dann zu einem späteren Zeitpunkt bei einem Lesezugriff durch Aktivieren geeigneter Wortleitungen wieder einspielen und auf diese Weise einen falschen Systemzustand erzeugen (und damit sogenannte „Cloning“- und „Replay“-Angriffe durchführen). Auf diese Weise kann ein Angreifer verhindern, dass beispielsweise Zähler, welche einen Geldwert repräsentieren oder Brute-Force Angriffe auf PINs und Passwörter erkennen sollen, ablaufen und einen Sicherheitsalarm auslösen.
-
Für Sicherheits-Anwendungen können Speicherzellenfelder um Codierungen der Adressen von Wortleitungen erweitert werden, um sporadische transiente Fehladressierungen von Wortleitungen oder permanente Defekte im Zellenfeld erkennen zu können. Dazu werden beispielsweise vorberechnete Bitmuster permanent in das Zellen-Array eingefügt. Das kann beispielsweise durch Techniken wie bei ROM-Speicherzellen oder durch geeignete Veränderung der verwendeten Speicherzellen erfolgen (beispielsweise fehlende Kontakte oder fehlende Transistoren einzelner Speicherzellen). Diese Techniken ermöglichen zwar das Erkennen von Fehlfunktionen mit einer vorgegebenen Redundanz, sind aber typischerweise nicht geeignet, um Schutz vor aktiven Angreifern zu bieten. Außerdem sind die typischerweise aus Effizienzgründen verwendeten linearen Codes nicht mit den bitweisen logischen UND- oder logischen ODER-Verknüpfungen durch mehrere aktivierte Wortleitungen verträglich. Lineare Codes sind üblicherweise als Vektorräume über einem endlichen Körper definiert und behalten ihre Eigenschaften nur bezüglich der Verknüpfungsabbildungen in diesem Vektorraum. Ein invasiver Angreifer kann diese Unverträglichkeit der Verknüpfungsabbildungen in den Teilen des Zellenfeldes, welche die Adressen der Wortleitungen codieren, gezielt ausnutzen, um die fehlererkennenden Eigenschaften des verwendeten Codes durch gleichzeitiges Aktivieren mehrerer Wortleitungen zu umgehen. Wenn die ausgelesenen Daten keine weiteren redundanten Informationen zur Überprüfung ihrer Gültigkeit enthalten, ist ein solcher Angriff nicht erkennbar.
-
Weil Felder (auch als „Arrays“ bezeichnet) aus Speicherzellen einerseits durch ihre Größe sehr leicht im Layout einer integrierten Schaltung erkennbar und andererseits durch ihren regelmäßigen regulären Aufbau leicht analysierbar und manipulierbar sind, ist es für integrierte Schaltungen für Sicherheitsanwendungen erforderlich, im Betrieb verifizieren zu können, dass Daten aus den richtigen, von der Anwendung adressierten Speicherzellen eines Speicherzellenfelds ausgelesen oder in die richtigen, adressierten Speicherzellen geschrieben werden. Neben der Überprüfung der physikalischen Adresse der tatsächlich zum Lesen oder Schreiben verwendeten Speicherzellen gehört hierzu insbesondere auch ein Mechanismus, um sich gegen Angriffe durch gleichzeitiges Aktivieren mehrerer Wortleitungen in einem Speicherzellenfelds zu schützen.
-
Im Folgenden wird ein solcher Mechanismus beschrieben, der gemäß einem Ausführungsbeispiel auf speziellen Datenmustern basiert, welche zum Beispiel als feste (z.B. ROM-) Muster an die Wortleitungen eines Speicher-Arrays angehängt werden können und über zusätzliche Bitleitungen auslesbar sind. Diese Datenmuster ermöglichen es, einen Angriff, welcher mehrere Wortleitungen gleichzeitig aktiviert, mit einer vorgegebenen Redundanz der Alarmleitungen zur Signalisierung des erkannten Angriffs sicher zu detektieren.
-
3 zeigt eine Erweiterung eines Speicherzellenfelds mit Speicherzellen zum Speichern von Überprüfungsdaten, z.B. Codewörtern oder Datenmuster, zum Schutz gegen Angriffe, die auf einer gleichzeitigen Aktivierung von mehreren Wortleitungen basieren.
-
Ähnlich dem Speicherzellenfeld 100 von 1 weist das Speicherzellenfeld 300 eine Vielzahl von Speicherzellen 301 auf, die in Form einer Matrix mit Spalten 302, 303 von Speicherzellen und Zeilen 304 von Speicherzellen angeordnet sind, wobei in diesem Beispiel das Speicherzellenfeld 300 erste Spalten 302 von Speicherzellen (auch bezeichnet als Spalten von einem ersten Spalten-Typ) zum Speichern von Nutzdaten (d.h. beispielsweise „normale“ Speicherzellen, die normal genutzt werden können, beispielsweise von einem Prozessor einer elektronischen Vorrichtung, z.B. einer Chipkarte oder eines Steuergeräts, zum Speichern von Daten beschrieben werden können) und zweite Spalten 303 von Speicherzellen (auch bezeichnet als Spalten von einem zweiten Spalten-Typ) zum Speichern von Überprüfungsdaten aufweist. Jeder Spalte 302, 303 von Speicherzellen ist eine Bitleitung 305 zugeordnet und jeder Zeile 304 von Speicherzellen ist eine Wortleitung 306 zugeordnet.
-
Die zweiten Spalten 303 können als Erweiterung des Speicherzellenfelds, bestehend aus den ersten Spalten 302, angesehen werden. In anderen Worten werden gemäß einer Ausführungsform die Wortleitungen eines Speicherzellenfeldes verlängert und weitere Speicherzellen und zugehörige Bitleitungen hinzugefügt. Auf diese Weise können mittels der zusätzlichen Speicherzellen, d.h. der Speicherzellen der zweiten Spalten 303, vorberechnete Bitmuster (beispielsweise permanent) in das Speicherzellenfeld eingefügt werden.
-
Diese vorberechneten Bitmuster lassen sich mittels der weiteren Bitleitungen (d.h. den zweiten Spalten 303 zugeordneten Bitleitungen 305) ausgelesen werden. Die Speicherzellen der zweiten Spalten 303 sind derart eingerichtet und mit den zugeordneten Bitleitungen verbunden, dass bei gleichzeitiger Aktivierung mehrerer Wortleitungen 306 diese Bitleitungen den gleichen bitweisen logischen UND- oder ODER-Verknüpfungen aller aktivierten Speicherzellen unterliegen wie die übrigen Bereiche des Speicherzellenfelds, d.h. wie die Bitleitungen, die den ersten Spalten 302 von Speicherzellen zugeordnet sind.
-
In den folgenden Beispielen wird angenommen, dass Speicherzellen simultan aktivierter Wortleitungen, die derselben Bitleitung zugeordnet sind, die Bitleitung auf die logische ODER-Verknüpfung der von ihnen gespeicherten Bits setzen, sie lassen sich aber analog für eine logische UND-Verknüpfung verwenden.
-
Gemäß einer Ausführungsform speichern die Speicherzellen der zweiten Spalten 303 vorberechnete Bitmuster, wobei alle Speicherzellen einer Zeile 304, die zu den zweiten Spalten 303 gehören, ein vorberechnetes Bitmuster speichern, d.h. zu jeder Speicherzellenzeile 304 ein vorberechnetes Bitmuster gehört, und wobei gilt:
- A) Alle vorberechneten Bitmuster haben dasselbe Hamming-Gewicht w > 0, um im fehlerfreien Fall eine möglichst effiziente Erkennung zu ermöglichen.
- B) Werden zwei oder mehrere Wortleitungen gleichzeitig aktiviert, dann hat das Hamming-Gewicht des resultierenden Musters, welches sich aus der bitweisen logischen ODER Verknüpfung der Bitmuster ergibt, die zu den Zeilen von Speicherzellen gehören, die den aktivierten Wortleitungen zugeordnet sind mindestens w + d wobei d > 0 eine vorgegebene Konstante für die Redundanz der Erkennung der gleichzeitigen Aktivierung mehrerer Wortleitungen ist.
-
4 zeigt ein Beispiel für zwei Speicherzellenzeilen 401, 402, die jeweils ein vorberechnetes Bitmuster speichern.
-
Jede Speicherzellenzeile 401, 402, weist erste Speicherzellen 403, die zu ersten Speicherzellenspalten zum Speichern von Nutzdaten und zweite Speicherzellen 404 zum Speichern von Überprüfungsdaten, in diesem Fall vorberechneten Bitmuster von 6 Bit Länge, auf.
-
In diesem Beispiel speichert die erste Speicherzellenzeile 401 das Bitmuster 000111 und die zweite Speicherzellenzeile 402 speichert das Bitmuster 001011.
-
Gemäß A) haben beide Bitmuster das gleiche Hamming-Gewicht w=3.
-
Gemäß B) hat das resultierende Bitmuster, das sich aus einer ODER-Kombination der beiden Bitmuster ergibt, ein Gewicht, das größer ist als 3, nämlich 4 (das Gewicht von 001111, der bitweisen ODER-Kombination von 000111 und 001011).
-
Aufgrund von A) und B) kann eine Detektionsschaltung 307, die mit den Bitleitungen, die den zweiten Spalten zugeordnet ist, verbunden ist, zum Detektieren eines Angriffs, der auf einer gleichzeitigen Aktivierung von mehreren Wortleitungen basiert, wie folgt vorgehen: Sie bestimmt in dem resultierenden Bitmuster, das von den Bitleitungen, die den zweiten Spalten 303 zugeordnet sind, ausgegeben wird, die Anzahl x der Bits mit dem Wert 1 und vergleich diese Anzahl mit dem Hamming-Gewicht w der ursprünglichen vorberechneten Bitmuster. Ist x > w, so zeigt dies die gleichzeitige Aktivierung mehrerer Wortleitungen an.
-
Liefern beispielsweise die sechs Bitleitungen, die mit den zweiten Speicherzellen 404 des Beispiels von 4 verbunden sind, das Muster 001111, so kann die Detektionsschaltung 307 feststellen, dass das Gewicht des resultierenden Musters größer ist als das Gewicht der vorberechneten Bitmuster (4 > 3) und kann entsprechend reagieren, z.B. ein Alarmsignal über eine Alarmsignal-Ausgangsleitung 308 der Detektionsschaltung 307 ausgeben, beispielsweise an einen Prozessor der jeweiligen elektronischen Vorrichtung oder auch an eine Rücksetz-Schaltung, die das elektronische Gerät bei einem Alarm zurücksetzt (und z.B. insbesondere den Speicher löscht).
-
Der Wert d kann als Redundanz für die Erkennung einer gleichzeitigen Aktivierung mehrerer Wortleitungen angesehen werden. Ein Angreifer müsste das resultierende Muster an d Stellen manipulieren, um eine gleichzeitige Aktivierung mehrerer Wortleitungen zu erreichen, ohne dass dies detektiert wird. Um insgesamt eine gewünschte Redundanz d zu erreichen (d.h. des Gesamtsystems aus Speicher und Detektionsschaltung), kann beispielsweise die Detektionsschaltung (und eine jeweilige Alarmsignal-Ausgangsleitung 308) insgesamt d-mal vorgesehen sein. Damit gibt es auch auf Ebene der Detektionsschaltungen eine d-fache Redundanz. Dadurch muss ein Angreifer d Detektionsschaltungen manipulieren, um eine gleichzeitige Aktivierung mehrerer Wortleitungen zu erreichen, ohne dass dies detektiert wird.
-
Eine Detektion basierend auf vorberechneten Bitmustern mit bestimmtem Gewicht und der Ermittlung des Gewichts eines resultierenden (Ausgabe-)Bitmusters wie oben beschrieben kann mittels einer einfachen Dekodierung des resultierenden Bitmusters (Ermittlung seines Gewichts) realisiert werden. So kann die Detektionsschaltung 307 durch eine einfache Schaltung zur Unterscheidung, ob eine einzelne Wortleitung oder mehrere Wortleitungen gleichzeitig aktiviert wurden, realisiert werden. Diese Schaltung muss lediglich das Hamming-Gewicht des aus den zweiten Spalten 303 des Speicherzellenfeldes ausgelesenen Bitmusters bestimmen und mit einem vorgegebenen Referenzwert (dem Hamming-Gewicht w) vergleichen und abhängig von dem Vergleichsergebnis ein Alarmsignal ausgeben. Eine gewünschte d-fache Redundanz der Hardware der Detektionsschaltung kann durch d-fache Replikation der Schaltung erzielt werden.
-
Geeignete Bitmuster zur Markierung der zusätzlichen Zellen im Speicherfeld können auf einfache Weise aus linearen Codes gewonnen werden. Im Folgenden wird ein generisches Konstruktionsverfahren zum Erzeugen von geeigneten Bitmustern mit den gewünschten Eigenschaften A) und B) beschrieben. Die folgenden Beispiele gehen davon aus, dass die logische Kombination eine ODER-Kombination ist. Es lassen sich aber auf analoge Weise Bitmuster für eine logische UND-Verknüpfung bestimmen, bei denen das Hamming-Gewicht des resultierenden Bitmusters bei simultaner Aktivierung mehrerer Wortleitungen entsprechend gegenüber dem Hamming-Gewicht der vorberechneten Bitmuster reduziert ist.
-
Das im Folgenden beschriebene Konstruktionsverfahren belegt einerseits die Existenz geeigneter Bitmuster, die A) und B) erfüllen und liefert andererseits eine obere Schranke für die Länge geeigneter Bitmuster zur Markierung von Wortleitungen.
-
Sei ein linearer (n, k, d)-Code über GF2 (endlicher Körper mit zwei Elementen) der Länge n, der Dimension k und Redundanz d gegeben. Dann existiert eine (2n, k, d)-Bitmustermenge von 2k Bitmustern der Länge 2n zur Markierung von Wortleitungen, so dass eine gleichzeitige Aktivierung mehrerer Wortleitungen mit d-facher Redundanz erkennbar ist: Wenn x = (xn, ..., x1) ein Codewort des linearen Codes ist, dann ist ein zugehöriges Bitmuster y gegeben durch y = (yn, ..., y1) wobei gilt yi = 01, falls xi = 0 und yi = 10, falls xi = 1 für 1 ≤ i ≤ n.
-
Wird jede Zeile eines Speicherzellenfelds mit einem auf diese Weise generierten Bitmuster y markiert, dann haben alle Markierungsbitmuster y nach Konstruktion das Hamming-Gewicht HW(y) = n. Die Eigenschaften des verwendeten linearen Codes stellen außerdem sicher, dass sich zwei unterschiedliche Bitmuster an mindestens d Bit-Paaren yi unterscheiden. Werden nun mindestens zwei Wortleitungen gleichzeitig aktiviert, so werden an mindestens d Stellen Bit-Paare „01“ und „10“ durch die logische ODER Verknüpfung zu „11“ Mustern verändert. Dadurch steigt das Hamming-Gewicht des resultierenden Bitmusters um mindestens den geforderten Betrag d.
-
Unter der Annahme, dass Markierungsmuster der Länge n genau e-mal das Bit 1 und (n-e)-mal das Bit 0 enthalten, gilt umgekehrt, dass es zu jedem Markierungsmuster y mit Redundanz d zur Erkennung von mehreren aktivierten Wortleitungen eine Umgebung aus mindestens U(n, e, d)-Mustern mit e-mal 1 und (n-e)-mal 0 gibt, welche nicht als Markierungsmuster verwendet werden können, weil sie sich in weniger als d Stellen vom Markierungsmuster y unterscheiden. Damit lassen sich untere Schranken für die Länge n eines erfindungsgemäßen Markierungsmusters bestimmen.
-
Ein Beispiel für Bitmuster zur Markierung von Wortleitungen ergibt sich, wenn die Menge aller Bitfolgen mit einer festen Anzahl an Bits mit dem Wert 1 betrachtet wird. So ergeben beispielsweise 16 beliebige Elemente der Menge
jeweils ein (6, 4, 1)-Markierungsmuster. Jeweils zwei Muster unterscheiden sich an mindestens einer Position. Allgemein gilt, dass solche Bitmuster die Ungleichung
erfüllen müssen.
-
In einem weiteren Ausführungsbeispiel werden die 16 Elemente aus der Menge M so ausgewählt, dass eine möglichst einfache Dekodierung der Adresse der markierten Wortleitung erreicht wird, d.h. jeder Wortleitung auf einfache Weise eindeutig ein Bitmuster zugeordnet ist, welches auf effiziente Weise die Rekonstruktion der Adresse der aktivierten Wortleitung aus dem Wert des zugeordneten Markierungsmusters aus M ermöglicht: Die Menge M enthält beispielsweise die 14 Muster 000111, 001011, 001101, 010011, 010101, 011001, 011100, 100011, 100101, 101001, 101100, 110001, 110100, 111000, deren obere 4 Bits ihre Ordnungsnummer in Binärdarstellung für die Reihenfolge, in der sie angegeben sind, darstellt. Für 16 Bitmuster können für das 0-te Bitmuster und 15-te Bitmuster zwei beliebige Muster aus den verbleibenden 6 Elementen der Menge M ausgewählt werden. Ein Decoder für die Adresse einer Wortleitung muss dann nur noch die Spezialfälle für 0 und 15 erkennen. In allen anderen Fällen gibt er die oberen 4 Bits des Bitmusters aus. Die Markierungsmuster bilden in diesem Fall ebenfalls ein (6, 4, 1) Muster zur Erkennung simultaner Aktivierung mehrerer Wortleitungen, welches zusätzlich eine einfache Bestimmung der Adresse einer Wortleitung aus dem zugeordneten Bitmuster ermöglicht.
-
In einem weiteren Ausführungsbeispiel wird die Redundanz gegen invasive Fehlerangriffe durch die Replizierung von Markierungsbitmustern erhöht. Werden beispielsweise 4-Tupel von Bitmustern aus M betrachtet mit der Eigenschaft, dass sich jeweils zwei 4-Tupel an mindestens drei der vier Bitmuster aus M unterscheiden, so können auf diese Weise 272 Bitmuster der Länge 24 gefunden werden. Diese Bitmuster bilden daher eine (24, 8, 3)-Bitmustermenge. Die oben beschriebene Konstruktionsmethode liefert für einen linearen (12, 8, 3)-Code über GF2 ebenfalls ein Markierungsmuster der Länge 24 als obere Schranke.
-
Durch Replizieren von Bitmarkierungsmustern können die Techniken zur effizienten Dekodierung der Adresse mit den Eigenschaften zur Erkennung von mehreren simultan aktivierten Wortleitungen kombiniert werden.
-
Zusammenfassend wird gemäß verschiedenen Ausführungsformen eine Speicheranordnung bereitgestellt, wie sie in 5 dargestellt ist.
-
5 zeigt eine Speicheranordnung 500.
-
Die Speicheranordnung 500 weist ein Speicherzellenfeld mit Spalten 502, 503 und Zeilen 504 von Speicherzellen 501, Bitleitungen 505 und Wortleitungen 506 auf, wobei jede Spalte 502, 503 einer Bitleitung 505 und jede Zeile 504 einer Wortleitung 506 zugeordnet sind.
-
Die Spalten 502, 503 von Speicherzellen weisen Spalten von Speicherzellen von einem ersten Spalten-Typ 502 auf, die eingerichtet sind, Nutzdaten zu speichern, und weisen Spalten von Speicherzellen von einem zweiten Spalten-Typ 503 auf, die eingerichtet sind, vorgegebene Überprüfungsdaten zu speichern.
-
Die Speicherzellen mindestens der Spalten von Speicherzellen vom zweiten Spalten-Typ 503 sind derart eingerichtet und mit den Bitleitungen 505 verbunden, dass die Speicherzellen 501 einer Spalte 502, 503 von Speicherzellen bei einem Lesezugriff die der Spalte 503 zugeordnete Bitleitung auf einen Wert setzen, der einer logischen Kombination der Werte entspricht, die von den Speicherzellen 501 der Spalte 503 gespeichert werden, die zu Zeilen von Speicherzellen gehören, die bei dem Lesezugriff adressiert werden.
-
Die Speicheranordnung weist ferner eine Detektionsschaltung 507 auf, die eingerichtet ist, bei einem Lesezugriff zu detektieren, ob eine Bitleitung 505, die einer Spalte von Speicherzellen vom zweiten Spalten-Typ 503 zugeordnet ist, auf einen Wert gesetzt wird, der der logischen Kombination von Werten entspricht, die von Speicherzellen der Spalte von Speicherzellen vom zweiten Spalten-Typ 503 gespeichert werden und deren Werte zu unterschiedlicher Zeilen von Speicherzellen gehören.
-
In anderen Worten werden gemäß verschiedenen Ausführungsformen in einem Speicherzellenfeld, dessen Speicherzellen derart ausgestaltet und an Bitleitungen angebunden sind, dass bei der gleichzeitigen Aktivierung von mehreren Wortleitungen, d.h. dem gleichzeitigen Adressieren von Speicherzellen unterschiedlicher Zeilen, an jeder Bitleitung eine logische Kombination der Inhalte der adressierten Speicherzellen, die mit dieser Bitleitung verbunden sind, ausgegeben werden, Speicherzellen mit Überprüfungsinformation vorgesehen. Anhand der vorab bekannten Überprüfungsinformation kann eine Detektionsschaltung überprüfen, ob bei einem Lese- oder Schreibzugriff mehrere Wortleitungen gleichzeitig aktiviert wurden.
-
Die logische Kombination ist beispielsweise eine (bitweise) UND-Kombination (d.h. UND-Verknüpfung) oder eine (bitweise) ODER-Kombination (d.h. ODER-Verknüpfung). Gemäß verschiedenen Ausführungsbeispielen wird anschaulich die Monotonie der logischen Verknüpfungen UND bzw. ODER genutzt, um durch die bitweise Verknüpfung von vorberechneten Mustern, welche gemäß einer Ausführungsform eindeutig den Wortleitungen eines Speicher-Arrays zugeordnet sind, eine Änderung des Hamming-Gewichtes des resultierenden Bitmusters zu erzielen. Dabei steigt bei einer mehrfachen Aktivierung von Wortleitungen durch die logische ODER Verknüpfung der jeweiligen Bitmuster das Hamming-Gewicht des Ergebnisses mindestens um den Wert d. Bei einer logischen UND Verknüpfung fällt es mindestens um den Wert d.
-
Die vorgegebenen Überprüfungsdaten werden beispielsweise in einer sicheren Umgebung in den Speicherzellen der Spalten von Speicherzellen vom zweiten Spalten-Typ gespeichert. Beispielsweise können die Überprüfungsdaten bei einem Herstellungsprozess in den Speicherzellen der Spalten von Speicherzellen vom zweiten Spalten-Typ nicht-flüchtig und eventuell sogar unüberschreibbar gespeichert werden.
-
Die Speicheranordnung bietet einen Schutzmechanismus für elektronische Speicher und kann zur Absicherung verschiedener Typen von elektronischer Speichern verwendet werden. Beispielsweise können die Speicherzellen RAM(Random Access Memory)-Speicherzellen, Flash-Speicherzellen, RRAM(Resistive RAM)-Speicherzellen und FeRAM(Ferroelectric)-Speicherzellen sein.
-
Die Speicheranordnung kann beispielsweise Teil eines Speichers sein, der weitere Speicherkomponenten wie einen Adressdecoder etc. aufweist. Der Speicher kann in einer elektronischen Vorrichtung angeordnet sein, beispielsweise einer Chipkarte (mit beliebigem Formfaktor), einem Steuergerät (z.B. verbunden mit einem Mikrocontroller), z.B. in einem Fahrzeug etc.
-
Im Folgenden werden zusammenfassend einige Ausführungsbeispiele angegeben.
-
Ausführungsbeispiel 1 ist eine Speicheranordnung, wie sie in 5 gezeigt ist.
-
Ausführungsbeispiel 2 ist eine Speicheranordnung gemäß Ausführungsbeispiel 1, wobei die Detektionsschaltung eine Alarmleitung aufweist und eingerichtet ist, ein Alarmsignal über die Alarmleitung auszugeben, wenn eine oder mehrere Bitleitungen, die jeweils einer Spalte von Speicherzellen vom zweiten Spalten-Typ zugeordnet sind, bei dem Lesezugriff auf einen Wert gesetzt werden, der der logischen Kombination von Werten entspricht, die von Speicherzellen der Spalte von Speicherzellen vom zweiten Spalten-Typ gespeichert werden, und deren Werte zu unterschiedlicher Zeilen von Speicherzellen gehören.
-
Ausführungsbeispiel 3 ist eine Speicheranordnung gemäß Ausführungsbeispiel 1 oder 2, wobei die Überprüfungsdaten für jede Zeile von Speicherzellen ein vorgegebenes Bitmuster aufweisen, wobei die Speicherzellen der Spalten von Speicherzellen vom zweiten Spalten-Typ der Zeile von Speicherzellen eingerichtet sind, das vorgegebene Bitmuster zu speichern.
-
Ausführungsbeispiel 4 ist eine Speicheranordnung gemäß einem der Ausführungsbeispiele 1 bis 3, wobei die Detektionsschaltung eingerichtet ist, zu detektieren, ob ein Bitmuster, auf das die Bitleitungen, die den Spalten von Speicherzellen vom zweiten Spalten-Typ zugeordnet sind, auf ein resultierendes Bitmuster gesetzt werden, das der logischen Kombination von Bitmustern unterschiedlicher Zeilen von Speicherzellen entspricht.
-
Ausführungsbeispiel 5 ist eine Speicheranordnung gemäß Ausführungsbeispiel 4, wobei die Detektionsschaltung eine Alarmleitung aufweist und eingerichtet ist, ein Alarmsignal über die Alarmleitung auszugeben, wenn das resultierende Bitmuster der logischen Kombination von Bitmustern unterschiedlicher Zeilen von Speicherzellen entspricht.
-
Ausführungsbeispiel 6 ist eine Speicheranordnung gemäß Ausführungsbeispiel 4 oder 5, wobei die vorgegebenen Bitmuster jeweils ein vorgegebenes Hamming-Gewicht haben und die Detektionsschaltung eingerichtet ist, basierend auf dem Hamming-Gewicht des resultierenden Bitmusters zu überprüfen, ob zu das resultierende Bitmuster der logischen Kombination von Bitmustern unterschiedlicher Zeilen von Speicherzellen entspricht.
-
Ausführungsbeispiel 7 ist eine Speicheranordnung gemäß einem der Ausführungsbeispiele 4 bis 6, wobei sich die vorgegebenen Bitmuster zweier unterschiedlicher Zeilen in mindestens einer Anzahl von Stellen unterscheiden, die einem vorgegebenen Redundanzwert entspricht.
-
Ausführungsbeispiel 8 ist eine Speicheranordnung gemäß Ausführungsbeispiel 7, wobei die Speicheranordnung die Detektionsschaltung so oft wie der vorgegebene Redundanzwert aufweist.
-
Ausführungsbeispiel 9 ist eine Speicheranordnung gemäß einem der Ausführungsbeispiele 1 bis 8, wobei die Speicherzellen der Spalten von Speicherzellen vom zweiten Spalten-Typ nichtflüchtige Speicherzellen sind.
-
Ausführungsbeispiel 10 ist eine Speicheranordnung gemäß einem der Ausführungsbeispiele 1 bis 9, wobei die Speicherzellen der Spalten von Speicherzellen vom zweiten Spalten-Typ Nur-Lese-Speicherzellen sind.
-
Ausführungsbeispiel 11 ist eine Speicheranordnung gemäß einem der Ausführungsbeispiele 1 bis 10, wobei die Speicherzellen der Spalten von Speicherzellen vom ersten Spalten-Typ flüchtige Speicherzellen sind.
-
Ausführungsbeispiel 12 ist eine Speicheranordnung gemäß einem der Ausführungsbeispiele 1 bis 11, wobei die Detektionsschaltung eingerichtet ist, basierend auf einer Information über eine Zuordnung von Überprüfungsdaten zu Zeilen von Speicherzellen zu ermitteln, welche ein oder mehrere Wortleitungen bei dem Lesezugriff aktiviert wurden.
-
Es sollte beachtet werden, dass alle oben genannten Ausführungsbeispiele beliebig miteinander kombiniert werden können.
-
Obwohl die Erfindung vor allem unter Bezugnahme auf bestimmte Ausführungsformen gezeigt und beschrieben wurde, sollte es von denjenigen, die mit dem Fachgebiet vertraut sind, verstanden werden, dass zahlreiche Änderungen bezüglich Ausgestaltung und Details daran vorgenommen werden können, ohne vom Wesen und Bereich der Erfindung, wie er durch die nachfolgenden Ansprüche definiert wird, abzuweichen. Der Bereich der Erfindung wird daher durch die angefügten Ansprüche bestimmt, und es ist beabsichtigt, dass sämtliche Änderungen, welche unter den Wortsinn oder den Äquivalenzbereich der Ansprüche fallen, umfasst werden.