-
TECHNISCHES ANWENDUNGSGEBIET
-
Diese Offenbarung betrifft allgemein das Absichern von Datenverarbeitung und konkret das Absichern der Inhalte von Speichereinheiten.
-
HINTERGRUND
-
Zum Schützen von Informationen kann die Fähigkeit zum schnellen Verhindern von Zugriff auf gespeicherte Daten nützlich sein. Cloud-Computing nutzende Personen möchten zum Beispiel möglicherweise in der Lage sein, einen Hauptspeicher einer Cloud-Maschine zu löschen. Ein anderes Beispiel ist das physische Zugreifen auf gemeinsam genutzte physische Ressourcen wie zum Beispiel Server. Dynamische Direktzugriffsspeicher-(DRAM-)Einheiten können ihre Inhalte ohne Strom oder ohne Auffrischung eine Zeit lang beibehalten. Nicht berechtigte Parteien mit physischem Zugriff können bekannte Wege wie Kaltstartattacken zum Ausnutzen von DRAM-Einheiten nutzen. Ebenso können dauerhafte Speichertechnologien wie zum Beispiel Phasenwechselspeicher sehr langsam beim Schreiben oder Löschen sein und dabei Sicherheitsbedenken wie den Diebstahl eines nichtflüchtigen DIMM (Dual Inline Memory Module) aufwerfen. Der mühsame Prozess des Löschens durch Überschreiben des gesamten Hauptspeichers mit irgendeinem Muster ist möglicherweise nicht schnell genug zum Verhindern eines Zugreifens auf die Daten.
-
KURZDARSTELLUNG
-
Eine Speichereinheit kann mit einer Funktion zum schnellen Löschen zum Absichern der Inhalte der Speichereinheit ausgestattet sein. Die Funktion zum schnellen Löschen kann unmittelbar beim Ausgeben eines Befehls den Zugriff auf in der Speichereinheit gespeicherte Daten wirksam dauerhaft deaktivieren und dadurch sämtliche vorher in die Speichereinheit geschriebenen Daten unlesbar machen. Die Funktion zum schnellen Löschen kann das Verwenden der Speichereinheit für neue Schreibvorgänge und zum sofortigen Lesen der neu geschriebenen Daten, sobald der Löschbefehl empfangen und ausgeführt wurde, ermöglichen. Die Funktion zum schnellen Löschen kann einen physischen Löschprozess von nicht neu geschriebenen Daten ohne Änderung von anderen Aspekten des schnellen Löschens beginnen. Aspekte können mit einem oder mehreren Bits pro Zeile in einer Speichereinheit erreicht werden.
-
Eine Speichereinheit kann mit einer Funktion zum schnellen Löschen zum Absichern der Inhalte der Speichereinheit ausgestattet sein. Die Funktion zum schnellen Löschen kann unmittelbar beim Ausgeben eines Befehls den Zugriff auf in der Speichereinheit gespeicherte Daten wirksam dauerhaft deaktivieren und dadurch sämtliche vorher in die Speichereinheit geschriebenen Daten unlesbar machen. Die Funktion zum schnellen Löschen kann das Verwenden der Speichereinheit für neue Schreibvorgänge und zum sofortigen Lesen der neu geschriebenen Daten, sobald der Löschbefehl empfangen und ausgeführt wurde, ermöglichen. Die Funktion zum schnellen Löschen kann einen physischen Löschprozess von nicht neu geschriebenen Daten ohne Änderung von anderen Aspekten des schnellen Löschens beginnen. Aspekte können mit einem oder mehreren Bits pro Zeile in einer Speichereinheit erreicht werden.
-
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
1 zeigt schematisch eine Speichereinheit mit einer Funktion zum Unlesbarmachen von in die Speichereinheit geschriebenen Daten;
-
2 zeigt schematisch eine Speichereinheit mit einer Funktion zum schnellen Löschen zum Absichern der Inhalte einer Speichereinheit;
-
3 zeigt schematisch Aspekte einer Speichereinheit mit einer Funktion zum schnellen Löschen;
-
4 zeigt schematisch eine mehrere DRAM-Chips beinhaltende Speichereinheit, die so gestaltet ist, dass sie vor einem Löschbefehl geschriebene Daten unlesbar macht; und
-
5 ist ein Ablaufplan, der eine Operation einer Sicherheitssteuereinheit veranschaulicht, welche die Inhalte einer Speichereinheit gemäß einer Ausführungsform absichert.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Zum Schützen von Informationen kann die Fähigkeit zum schnellen Verhindern von Zugriff auf gespeicherte Daten nützlich sein. Cloud-Computing nutzende Personen möchten zum Beispiel möglicherweise in der Lage sein, einen Hauptspeicher einer Cloud-Maschine zu löschen. Ein anderes Beispiel ist das physische Zugreifen auf gemeinsam genutzte physische Ressourcen wie zum Beispiel Server. Dynamische Direktzugriffsspeicher-(DRAM-)Einheiten können ihre Inhalte ohne Strom oder ohne Auffrischung eine Zeit lang beibehalten. Wenn eine Person, ob berechtigt oder nicht berechtigt, die DRAM-Einheit physisch steuern kann, kann die Person die Inhalte der DRAM-Einheit unabhängig von anderen Faktoren (z. B. Strom) lesen. Ebenso können dauerhafte Speichertechnologien wie zum Beispiel Phasenwechselspeicher sehr langsam beim Schreiben oder Löschen sein und dabei Sicherheitsbedenken wie den Diebstahl von nichtflüchtigen DIMMs aufwerfen. Der mühsame Prozess des Löschens durch Überschreiben des gesamten Hauptspeichers mit irgendeinem Muster ist möglicherweise nicht schnell genug zum Verhindern des Zugriffs auf die Daten. Andere Möglichkeiten wie zum Beispiel eine Selbstzerstörung der Schnittstelle zum Absichern der gespeicherten Daten können die Daten oder die Speichereinheit vollständig unbrauchbar machen. Ein Aspekt zum schnellen Löschen einer Speichereinheit kann beim Absichern der Inhalte der Speichereinheit nützlich sein.
-
Eine Speichereinheit kann mit einer Funktion zum schnellen Löschen zum Absichern der Inhalte der Speichereinheit ausgestattet sein. Die Funktion zum schnellen Löschen kann unmittelbar beim Ausgeben eines Befehls den Zugriff auf in der Speichereinheit gespeicherte Daten wirksam dauerhaft deaktivieren. Die Funktion zum schnellen Löschen kann das Verwenden der Speichereinheit für neue Schreibvorgänge und zum sofortigen Lesen der neu geschriebenen Daten, sobald der Löschbefehl empfangen und ausgeführt wurde, ermöglichen. Hierdurch kann das Starten eines neuen Betriebssystems ohne Verzögerung ermöglicht werden. Die Funktion zum schnellen Löschen kann einen physischen Löschprozess von nicht neu geschriebenen Daten ohne Änderung von anderen Aspekten des schnellen Löschens beginnen. Aspekte können mit einem oder mehreren Bits pro Zeile in einer Speichereinheit erreicht werden.
-
1 zeigt schematisch eine Speichereinheit 100 mit einer Funktion zum Unlesbarmachen von in die Speichereinheit 100 geschriebenen Daten. Die Speichereinheit 100 kann einen Gruppenversionsdatenspeicher 101 beinhalten. Der Gruppenversionsdatenspeicher kann einen logischen Wert beinhalten, der redundant in drei oder mehr Speicherzellen 104 gespeichert ist und bei dem es sich um ein Bit oder eine Sammlung von Bits handeln kann. Bei dem logischen Wert kann es sich um einen Gruppenversionswert 102 handeln. Es kann ein Wahlblock 106 vorhanden sein, der so gestaltet sein kann, dass er eine Mehrheitswahlfunktion durchführen kann, um einer Einzelereignisabweichung wie zum Beispiel einer Einzelbitabweichung 103 Rechnung zu tragen. Bei der Einzelbitabweichung kann es sich um ein fehlerhaftes Bit handeln oder es kann eine Folge von ionisierender Strahlung sein. Es kann erwartet werden, dass ein Fehlerkorrekturcode und Bereinigungen ein derartiges Auftreten in regelmäßigen Abständen korrigieren. Der regelmäßige Abstand ist möglicherweise nicht in sämtlichen Fällen ausreichend kurz. Der Wahlblock 106 kann die logischen Werte 104 analysieren, um zu ermitteln, welcher der Werte die Mehrheit hat. In 1 enthalten zum Beispiel mindestens zwei der drei Bits logische Werte von „1”. Der Wahlblock 106 kann den Wert „1” als Gruppenversionswert festlegen. Der Wahlblock 106 kann auch eine Operation zum Korrigieren des Wertes der Einzelbitabweichung 103 durchführen, wobei in diesem Beispiel der Wert durch eine Operation wie zum Beispiel ein Schreiben von einer „0” in eine „1” geändert wird. Letztendlich kann der Gruppenversionswert 102 dazu verwendet werden, das Unlesbarmachen von in die Speichereinheit 100 geschriebenen Daten zu unterstützen.
-
Die Speichereinheit 100 kann einen Datenspeicherabschnitt wie zum Beispiel ein Matrixfeld 105 beinhalten. Das Matrixfeld 105 kann eine Vielzahl von Zeilen 110 von Speicherzellen oder Bits zum Speichern von in die Speichereinheit 100 geschriebenen Daten beinhalten. Üblicherweise beinhalten Matrixfelder Hunderte von Zeilen 110, die in 1 als R1 bis Rn dargestellt sind. Das Matrixfeld 105 kann eine Vielzahl von Spalten 120 von Speicherzellen oder Bits zum Speichern von in die Speichereinheit 100 geschriebenen Daten beinhalten. Üblicherweise beinhalten Matrixfelder Hunderte von Spalten 120, die in 1 als C1 bis Cm dargestellt sind. Eine bestimmte Zeile 111 kann einen Zeilenversionswert 112 für die bestimmte Zeile 111 beinhalten. Der Zeilenversionswert 112 kann sich in einer bestimmten Spalte 121 befinden. In einer Ausführungsform wie dem Gruppenversionsspeicher 101, der mehrere Bits wie oben beschrieben redundant gespeichert hat, werden mehrere Spalten verwendet. Die bestimmte Spalte 121 kann Zeilenversionswerte 112 für jede Zeile des Matrixfelds 105 beinhalten. In Ausführungsformen kann der Zeilenversionswert 112 mit Daten in Speicherzellen in einer Teilmenge einer Zeile wie zum Beispiel einem bestimmten Byte korrelieren und in seiner Wirkung ein Zeilenversionswert 112 für das bestimmte Datenbyte sein. In dem Fall, in dem der Zeilenversionswert 112 mit Daten in einer Teilmenge einer Zeile korreliert, kann die bestimmte Zeile 111 mehrere Zeilenversionswerte beinhalten, wobei jeder Zeilenversionswert 112 zum Beispiel dem bestimmten Byte zugehörig ist. Die Zeilenversionswerte 112 können in einer oder mehreren Spalten wie zum Beispiel C1, C2 und C3 gespeichert sein. In Ausführungsformen kann das Matrixfeld 105 den Gruppenversionsdatenspeicher 101 und den Gruppenversionswert 102 beinhalten. Letztendlich kann der Zeilenversionswert 112 dazu verwendet werden, das Unlesbarmachen von vorher in die Speichereinheit 100 geschriebenen Daten zu unterstützen.
-
2 zeigt schematisch eine Speichereinheit 200 mit einer Funktion zum schnellen Löschen zum Absichern der Inhalte der Speichereinheit 200. Ein schnelles Löschen kann Sicherheit durch eine logische Operation erreichen, die den Datenzugriff deaktivieren kann, aber möglicherweise nicht unbedingt ein physisches Löschen beinhaltet. Die Speichereinheit 200 kann mit einer Speichersteuereinheit 280 verbunden sein, die mit einem Host 270 verbunden ist. In einigen Ausführungsformen kann es sich bei dem Host 270 um einen Prozessor handeln. Eine Lese-, Schreib- oder Löschanforderung für die Speichereinheit 200 kann über die Speichersteuereinheit 280 von dem Host 270 stammen. Die Speichereinheit 200 kann einen Datenpuffer 297 beinhalten, der Daten speichern kann, die möglicherweise gelesen oder möglicherweise geschrieben werden. Die Speichereinheit 200 kann einen Adressdecoder 298 beinhalten, der eine Adresse zum Auswählen eines Speicherplatzes empfangen kann, z. B. Angeben einer bestimmten Zeile und einer oder mehrerer Spalten in der bestimmten Zeile. Die Speichereinheit 200 kann einen Befehlsdecoder 299 beinhalten, der eine Lese-, eine Schreib- oder eine Löschanweisung aktivieren kann.
-
Die Speichereinheit 200 kann Aspekte beinhalten, die gleichartig oder gleich wie bei der Speichereinheit 100 sind. Die Speichereinheit 200 kann einen Gruppenversionsdatenspeicher 201 beinhalten. Bei dem Gruppenversionsdatenspeicher 201 kann es sich um ein Register mit einer kritischen Ladung handeln, die ausreichend groß ist, so dass das Register unempfindlich gegen ionisierende Strahlung ist. Der Gruppenversionsdatenspeicher 201 kann einen Gruppenversionswert 202 beinhalten, der gleichartig wie der Gruppenversionswert 102 ist. Die Speichereinheit 200 kann einen Datenspeicherabschnitt wie zum Beispiel ein Matrixfeld 205 beinhalten, das gleichartig wie das Matrixfeld 105 ist. Ähnlich wie der Zeilenversionswert 112 kann das Matrixfeld 205 einen Zeilenversionswert 212 für eine bestimmte Zeile oder eine bestimmte Teilmenge von Daten wie zum Beispiel ein Byte beinhalten.
-
Die Speichereinheit 200 kann eine Sicherheitssteuereinheit 220 beinhalten, die so konfiguriert sein kann, dass sie mit anderen Aspekten der Speichereinheit 200 während einer Lese-, Schreib- oder Löschanforderung zusammenwirkt. Die Sicherheitssteuereinheit 220 kann so konfiguriert sein, dass sie spezifisch für ein Lesen, ein Schreiben oder ein Löschen funktioniert. In einer Ausführungsform darf die Sicherheitssteuereinheit 220 während eines Lesens von einer bestimmten Zeile des Matrixfeldes 205 den Gruppenversionswert 202 mit dem Zeilenversionswert 212 für die bestimmte Zeile vergleichen. Wenn der Gruppenversionswert 202 mit dem Zeilenversionswert 212 für die bestimmte Zeile übereinstimmt, dürfen Daten aus der bestimmten Zeile ausgegeben werden. Die Daten aus der bestimmten Zeile dürfen an den Datenpuffer 297 und letztendlich an die Speichersteuereinheit 280 und den Host 270 ausgegeben werden. Somit wurde eine Sicherheitsentscheidung ausgegeben, welche die Daten als von der bestimmten Zeile lesbar bestimmt hat. Wenn der Gruppenversionswert 202 nicht mit dem Zeilenversionswert 212 für die bestimmte Zeile übereinstimmt, dürfen Daten nicht aus der bestimmten Zeile ausgegeben werden. Somit wurde eine Sicherheitsentscheidung ausgegeben, welche die Daten als von der bestimmten Zeile unlesbar bestimmt hat. Wenn die Inhalte als unlesbar bestimmt werden, können die Speichersteuereinheit 280 und der Host 270 eine Signalverweigerung, ein bekanntes Muster oder ein zufälliges Muster empfangen. Es werden andere Möglichkeiten zum Ausgeben von Daten als Reaktion auf eine Leseanforderung in Betracht gezogen.
-
In einer Ausführungsform darf die Sicherheitssteuereinheit 220 während eines Löschens für eine bestimmte Zeile des Matrixfeldes 205 den Gruppenversionswert 202 auf einen neuen Gruppenversionswert abändern. Der Gruppenversionsdatenspeicher 201 darf den neuen Gruppenversionswert speichern und den vorhergehenden Gruppenversionswert 202 nicht mehr speichern. Bei dem logischen Wert des neuen Gruppenversionswertes darf es sich nicht um den logischen Wert des vorhergehenden Gruppenversionswertes 202 handeln. Das Löschen kann ferner ein physisches Löschen der Inhalte von Adressen (Daten) der bestimmten Zeile des Matrixfeldes 205 aufweisen, bei denen der Zeilenversionswert der bestimmten Zeile nicht mit dem neuen Gruppenversionswert übereinstimmt. Die Sicherheitssteuereinheit 220 darf keine andere Löschanforderung bearbeiten, bis das physische Löschen abgeschlossen ist. Es kann ein Aspekt des schnellen Löschens der Offenbarung vorliegen, der vor dem Löschbefehl geschriebene Inhalte des Matrixfeldes 205 unlesbar macht, obwohl das physische Löschen möglicherweise noch nicht abgeschlossen ist. Ein Lesen von einer bestimmten Zeile darf nicht gestattet werden, wenn der Zeilenversionswert 212 für die bestimmte Zeile nicht mit dem Gruppenversionswert 202 übereinstimmt, bei dem es sich um den neuen Gruppenversionswert nach einer Löschanforderung handeln kann. Selbst wenn das physische Löschen möglicherweise noch nicht abgeschlossen ist, können somit nicht übereinstimmende logische Werte des Gruppenversionswertes 202 und des Zeilenversionswertes 212 ein Lesen von vor der Löschanforderung gespeicherten Daten verweigern. In Ausführungsformen darf der physische Speicher nicht gelöscht werden, wenn der neue Gruppenversionswert mit dem Zeilenversionswert 212 übereinstimmt. Wenn der neue Gruppenversionswert nicht mit dem Zeilenversionswert 212 übereinstimmt, oder in Ausführungsformen, in denen bei einer Löschanforderung kein Vergleich durchgeführt wird, darf ein physisches Löschen der bestimmten Zeile beginnen. Es werden andere Möglichkeiten in Betracht gezogen.
-
In einer Ausführungsform darf die Sicherheitssteuereinheit 220 während eines Schreibens in eine bestimmte Zeile des Matrixfeldes 205 den Gruppenversionswert 202 in den Zeilenversionswert 212 kopieren. Der Host 270 darf in die bestimmte Zeile zu schreibende Daten über die Speichersteuereinheit 280 an den Datenpuffer 297 senden. Die Sicherheitssteuereinheit 220 darf die in die bestimmte Zeile zu schreibenden Daten schreiben. Das Schreiben der Daten darf von dem Datenpuffer 297 zu dem Matrixfeld 205 stattfinden. Andere Werte in der bestimmten Zeile dürfen zum Beispiel dann bleiben, wenn es sich bei den zu schreibenden Daten lediglich um eine Teilmenge einer Zeile handelt. Die Sicherheitssteuereinheit 220 darf die anderen Werte in der bestimmten Zeile in Speicherzellen löschen, in die keine Daten zu schreiben sind. Ein derartiges Löschen der anderen Werte darf stattfinden, wenn die Sicherheitssteuereinheit 220 feststellt, dass sich der Zeilenversionswert 212 von dem aktuellen Gruppenversionswert 202 unterscheidet. Das Löschen der anderen Werte in der bestimmten Zeile verhindert das Schreiben in die Teilmenge der Zeile und das Vorhandensein einer Lesefähigkeit für andere Daten in der bestimmten Zeile, da der neue eingeschriebene Zeilenversionswert 212 jetzt gleich ist wie der Gruppenversionswert 202. Das Löschen der anderen Werte kann durch Schreiben eines bekannten Musters stattfinden. Das bekannte Muster darf vor dem Schreiben der in das Matrixfeld 205 zu schreibenden Daten in den Datenpuffer 297 geschrieben werden.
-
In einer Ausführungsform darf der Datenpuffer 297 während eines Schreibens in eine bestimmte Zeile des Matrixfeldes 205 auf die Inhalte der bestimmten Zeile zugreifen. Die Sicherheitssteuereinheit 220 darf den Gruppenversionswert 202 mit dem Zeilenversionswert 212 für die bestimmte Zeile vergleichen. Wenn der Gruppenversionswert 202 nicht mit dem Zeilenversionswert 212 übereinstimmt, dürfen die Inhalte der bestimmten Zeile in dem Datenpuffer 297 gelöscht werden. Die Sicherheitssteuereinheit 220 darf den Gruppenversionswert 202 in den Zeilenversionswert 212 kopieren und die zu schreibenden Daten in den Datenpuffer 297 schreiben. Die Inhalte des Datenpuffers 297 dürfen in die bestimmte Zeile des Matrixfeldes 205 geschrieben werden. In einer Ausführungsform darf eine Schreibanforderung für eine bestimmte Zeile unmittelbar nach einer Löschanforderung gestattet werden. Selbst wenn das physische Löschen möglicherweise noch nicht abgeschlossen ist, darf somit der logische Wert des Gruppenversionswertes 202 in den Zeilenversionswert 212 kopiert werden, um ein Schreiben von Daten in die bestimmte Zeile zu ermöglichen. Da der Rest der bestimmten Zeile jedoch gelöscht wurde, geben nachfolgende Lesevorgänge von der bestimmten Zeile keine von einem vorhergehenden Schreiben mit dem vorhergehenden Gruppenversionswert geschriebenen Daten aus.
-
In Ausführungsformen kann der Zeilenversionswert 212 mit Daten in Speicherzellen in einer Teilmenge einer Zeile wie zum Beispiel einem bestimmten Byte korrelieren und in seiner Wirkung ein Zeilenversionswert 212 für das bestimmte Datenbyte sein. In dem Fall, in dem der Zeilenversionswert 212 mit Daten in einer Teilmenge einer Zeile korreliert, kann eine bestimmte Zeile des Matrixfeldes 205 mehrere Zeilenversionswerte beinhalten, wobei jeder Zeilenversionswert 212 zum Beispiel dem bestimmten Byte zugehörig ist. Zum Schreiben in das bestimmte Byte in der bestimmten Zeile dürfen Daten in das bestimmte Byte geschrieben werden, und andere Bits in der bestimmten Zeile dürfen gelöscht werden. Falls Daten nicht gelöscht werden, können sie durch die fehlende Übereinstimmung des Gruppenversionswertes 202 und des Zeilenversionswertes 212 für vor dem Löschbefehl geschriebene Bytes unlesbar gemacht werden. Eine Möglichkeit beinhaltet das Zugreifen auf die bestimmte Zeile in einem Zeilenpuffer. Wenn der Zeilenversionswert 212 für das bestimmte Byte nicht mit dem Gruppenversionswert 202 übereinstimmt, darf das bestimmte Byte gelöscht werden. Das Löschen darf für jedes Bit in der bestimmten Zeile stattfinden, wenn der jedem Bit zugehörige Zeilenversionswert 212, möglicherweise zum Beispiel durch ein Byte zugehörig, nicht mit dem Gruppenversionswert 202 übereinstimmt. Der Gruppenversionswert 202 darf für das bestimmte Byte in der bestimmten Zeile in den Zeilenversionswert 212 kopiert werden. Die in das bestimmte Byte in der bestimmten Zeile zu schreibenden Daten dürfen in den Zeilenpuffer geschrieben werden. Das eigentliche Schreiben in das bestimmte Byte in der bestimmten Zeile darf von dem Zeilenpuffer in das bestimmte Byte in der bestimmten Zeile in dem Matrixfeld 205 stattfinden. Es werden andere Möglichkeiten zum Schreiben von Daten in Betracht gezogen.
-
3 zeigt schematisch Aspekte einer Speichereinheit mit einer Funktion zum schnellen Löschen. 3 stellt beispielhafte Aspekte der Speichereinheit bereit und zeigt mögliche Aspekte einer Sicherheitssteuereinheit, eines Adressdecoders, eines Befehlsdecoders oder eines Datenpuffers, die oben erwähnt werden. Das Matrixfeld 105 und der Gruppenversionswert 102 aus 1 werden gezeigt, um beim Darstellen der Wechselwirkung der verschiedenen möglichen Aspekte zu helfen. Wenn sich Zeilenversionswerte in Spalte C1 für jede Zeile des Matrixfelds 105 befinden, kann ein Abtastungszwischenspeicher 350 zum Erfassen des Zeilenversionswertes für eine bestimmte Zeile des Matrixfelds 105 vorhanden sein. Während einer Leseanforderung von der bestimmten Zeile darf der Gruppenversionswert 102 mit einem Wert des Abtastungszwischenspeichers 350 für die bestimmte Zeile verglichen werden. Während einer Schreibanforderung für die bestimmte Zeile darf der Gruppenversionswert 102 in den Zeilenversionswert für die bestimmte Zeile kopiert werden, und somit kann der Wert des Abtastungszwischenspeichers 350 mit dem Gruppenversionswert 102 übereinstimmen. Ein Spaltenpuffer 360 darf auf Daten 370 zugreifen oder auf eine Folge von Bits des Matrixfelds 105 zugreifen. Eine Spaltenauswahleinheit 365 darf eine geeignete Spaltenadresse des Matrixfelds 105 zum Zugreifen auswählen. Ein Zeilendecoder 380 darf eine geeignete Zeilenadresse des Matrixfelds 105 zum Zugreifen auswählen. Ein Schreibbefehl 390 darf somit zum Beispiel erfolgreich abgeschlossen werden. Wenn das XOR-Gatter 318 während eines Lesens feststellt, dass sich der Gruppenversionswert 102 von dem Zeilenversionswert (in dem Abtastungszwischenspeicher 350) für eine aufgerufene Zeile unterscheidet, dürfen NOR-Gatter 319 unabhängig von Daten in Daten 370 „0”en ausgeben. 3 stellt einen möglichen Weg zum Entwickeln von Aspekten einer Speichereinheit mit einer Funktion zum schnellen Löschen dar, wobei andere Möglichkeiten in Betracht gezogen werden.
-
4 zeigt schematisch eine mehrere DRAM-Chips beinhaltende Speichereinheit, die so gestaltet ist, dass sie vor einem Löschbefehl geschriebene Daten unlesbar macht. Bei der Speichereinheit 400 kann es sich um ein DIMM (Dual Inline Memory Module) handeln. Die Speichereinheit kann einen Pufferchip 410 beinhalten. Die Speichereinheit 400 kann mit einer Speichersteuereinheit 480 verbunden sein, die mit einem Host 470 verbunden ist. In einigen Ausführungsformen kann es sich bei dem Host 470 um einen Prozessor handeln. Eine Lese-, Schreib- oder Löschanforderung für die Speichereinheit 400 kann über die Speichersteuereinheit 480, die in 4 als in dem Host 470 beinhaltet gezeigt ist, von dem Host 470 stammen. Befehls-, Adress- und Datensignale 490 können sich zwischen der Speichersteuereinheit 480 und der den Pufferchip 410 beinhaltenden Speichereinheit 400 hin- und herbewegen.
-
Die Speichereinheit 400 kann mindestens einen dynamischen Direktzugriffsspeicher(DRAM-)Chip 440 beinhalten. Falls es sich bei der Speichereinheit 400 um ein DIMM handelt, können wie in 4 gezeigt viele DRAM-Chips 440 beinhaltet sein. Aspekte des Pufferchips 410 können gleichartig wie die der Speichereinheiten 100, 200 in 1 bis 2 sein. Dem Pufferchip kann die Art der verwendeten DRAM-Chips 440 bekannt sein, darunter die Anzahl von Zeilen und die Anzahl von Spalten. Der Pufferchip kann auch eine Funktion zum Personalisieren der Zeilendecodierung für die DRAM-Chips 440 aufweisen. Der Pufferchip kann eine Sicherheitssteuereinheit beinhalten, die gleichartig ist wie die Sicherheitssteuereinheit 220 in 2. Der Pufferchip 410 kann einen Gruppenversionswert 402 beinhalten. Der Gruppenversionswert kann in einem Gruppenversionsdatenspeicher gespeichert werden, der gleichartig wie die Gruppenversionsdatenspeicher 101, 102 in 1 bis 2 ist. Der Pufferchip 410 kann einen Zeilenversionswert 412 beinhalten. Für jede Zeile des Pufferchips 410 kann ein Zeilenversionswert 412 vorhanden sein. Der Zeilenversionswert 412 für jede Zeile des Pufferchips 410 kann als Zeilenversionswert für eine Zeile auf jedem DRAM-Chip 440 dienen. Wenn der DRAM-Chip 440 zum Beispiel „n” Zeilen beinhaltet, kann der Pufferchip 410 „n” Zeilen mit einem Zeilenversionswert 412 für jede der „n” Zeilen beinhalten. Somit kann das DIMM 400 „n” Zeilen aufweisen, wenn der Pufferchip 410 „n” Zeilenversionswerte 412 aufweist. In Ausführungsformen kann der Pufferchip 410 einen Zeilenversionswert 412 für jede Zeile jedes DRAM-Chips 440 oder für eine Teilmenge jedes DRAM-Chips 440 wie zum Beispiel ein Byte beinhalten.
-
Eine Lese-, Schreib- oder Löschanforderung für die Speichereinheit 400 kann über die Speichersteuereinheit 480 von dem Host 470 stammen. Zugehörige Befehls-, Adress- und Datensignale 490 für einen bestimmten DRAM-Chip 440 können sich zwischen der Speichersteuereinheit 480 und dem Pufferchip 410 hin- und herbewegen. In einer Ausführungsform darf die Sicherheitssteuereinheit während eines Lesens von einer bestimmten Zeile des bestimmten DRAM-Chips 440 den Gruppenversionswert 402 mit dem der bestimmten Zeile des DRAM-Chips 440 zugehörigen Zeilenversionswert 412 vergleichen. Wenn der Gruppenversionswert 402 mit dem der bestimmten Zeile des DRAM-Chips 440 zugehörigen Zeilenversionswert 412 übereinstimmt, dürfen Daten aus der bestimmten Zeile des bestimmten DRAM-Chips 440 ausgegeben werden. Wenn der Gruppenversionswert 402 nicht mit dem der bestimmten Zeile des DRAM-Chips 440 zugehörigen Zeilenversionswert 412 übereinstimmt, dürfen keine Daten aus der bestimmten Zeile des bestimmten DRAM-Chips 440 ausgegeben werden.
-
In einer Ausführungsform darf die Sicherheitssteuereinheit während eines Löschens für eine bestimmte Zeile des bestimmten DRAM-Chips 440 den Gruppenversionswert 402 auf einen neuen Gruppenversionswert abändern. Der logische Wert des neuen Gruppenversionswertes darf nicht der logische Wert des vorhergehenden Gruppenversionswertes 402 sein. Bei dem Löschen kann es sich um ein physisches Löschen der Inhalte von Adressen (Daten) der bestimmten Zeile des bestimmten DRAM-Chips 440 handeln, wenn der der bestimmten Zeile des bestimmten DRAM-Chips 440 zugehörige Zeilenversionswert 412 nicht mit dem neuen Gruppenversionswert übereinstimmt. Die Sicherheitssteuereinheit darf keine andere Löschanforderung bearbeiten, bis das physische Löschen abgeschlossen ist. Es kann ein Aspekt des schnellen Löschens der Offenbarung vorliegen, der Inhalte des bestimmten DRAM-Chips 440 unlesbar macht, obwohl das physische Löschen möglicherweise noch nicht abgeschlossen ist. Ein Lesen von einer bestimmten Zeile des bestimmten DRAM-Chips 440 darf nicht gestattet werden, wenn der der bestimmten Zeile des bestimmten DRAM-Chips 440 zugehörige Zeilenversionswert 412 nicht mit dem Gruppenversionswert 402 übereinstimmt, bei dem es sich um den neuen Gruppenversionswert nach einer Löschanforderung handeln kann.
-
In einer Ausführungsform darf die Sicherheitssteuereinheit während eines Schreibens in eine bestimmte Zeile des bestimmten DRAM-Chips 440 den Gruppenversionswert 402 in den der bestimmten Zeile des bestimmten DRAM-Chips 440 zugehörigen Zeilenversionswert 412 kopieren. Die Sicherheitssteuereinheit darf die in die bestimmte Zeile des bestimmten DRAM-Chips 440 zu schreibenden Daten schreiben. Die Sicherheitssteuereinheit darf die anderen Werte in der bestimmten Zeile des DIMM in Speicherzellen löschen, in die keine Daten zu schreiben sind, die aber dem Zeilenversionswert 412 zugehörig ist. Ein derartiges Löschen der anderen Werte darf stattfinden, wenn die Sicherheitssteuereinheit feststellt, dass sich der Zeilenversionswert 412 von dem aktuellen Gruppenversionswert 202 unterscheidet. Das Löschen der anderen Werte in der bestimmten Zeile des DIMM kann verhindern, dass nach dem Schreiben in den bestimmten DRAM-Chip 440 eine Lesefähigkeit für andere DRAM Chips in der bestimmten Zeile vorhanden ist. Das Löschen der anderen Werte kann durch Schreiben eines bekannten Musters stattfinden. Es werden andere Möglichkeiten in Betracht gezogen, darunter andere Wege des Handhabens von Lese-, Schreib- oder Löschanforderungen in dem Kontext von Speichereinheiten wie zum Beispiel DIMMs.
-
5 ist ein Ablaufplan, der eine Operation einer Sicherheitssteuereinheit veranschaulicht, welche die Inhalte einer Speichereinheit gemäß einer Ausführungsform absichert. Die Operation 500 beginnt mit dem Empfangen eines Befehls in Block 501. Block 502 ermittelt, ob es sich bei dem Befehl um eine Leseanforderung, eine Schreibanforderung oder eine Löschanforderung handelt.
-
Wenn es sich bei dem Befehl um eine Leseanforderung handelt, können in Block 511 ein Gruppenversionswert und ein Zeilenversionswert verglichen werden. Der Gruppenversionswert und der Zeilenversionswert können gleiche logische Werte wie zum Beispiel „0” oder „1” aufweisen. Das Vergleichen kann geschehen, ohne den Gruppenversionswert oder den Zeilenversionswert zu ändern. Das Vergleichen kann zu einer Übereinstimmung oder einer Nichtübereinstimmung führen. Eine Übereinstimmung kann gleiche Werte beschreiben. Eine Nichtübereinstimmung kann ungleiche Werte beschreiben. Es werden andere Ausführungsformen mit unterschiedlichen Wegen zum Durchführen des Vergleichens in Betracht gezogen. Das Durchführen des Vergleichens kann als Anwenden einer Bewertungslogik beschrieben werden. Das Erzielen eines Ergebnisses einer Übereinstimmung oder einer Nichtübereinstimmung kann als das Treffen einer Sicherheitsentscheidung beschrieben werden. Wenn das Vergleichen des Gruppenversionswertes mit dem Zeilenversionswert einer bestimmten Zeile eine Übereinstimmung ergibt, dürfen in Block 514 Daten aus der bestimmten Zeile ausgegeben werden. Die Daten können als lesbar bestimmte Inhalte angesehen werden. Die Leseanforderung kann mit den Daten erfüllt werden. Inhalte dürfen zum Beispiel einem die Anforderung stellenden Host bereitgestellt werden. Wenn das Vergleichen des Gruppenversionswertes mit dem Zeilenversionswert einer bestimmten Zeile eine Nichtübereinstimmung ergibt, dürfen in Block 516 keine Daten aus der bestimmten Zeile ausgegeben werden. Die Daten können als unlesbar bestimmte Inhalte angesehen werden. Wenn die Inhalte als unlesbar bestimmt werden, kann eine Signalverweigerung bereitgestellt werden, ein bekanntes Muster wie lauter „0”en bereitgestellt werden oder ein zufälliges Muster bereitgestellt werden. Lesevorgänge dürfen normal stattfinden, wenn der Gruppenversionswert mit dem Zeilenversionswert für jede Zeile übereinstimmt.
-
Wenn es sich bei dem Befehl um eine Löschanforderung handelt, kann in Block 531 ein Gruppenversionswert auf einen neuen Gruppenversionswert abgeändert werden. Die Inhalte von Adressen (Daten), die vor dem Löschbefehl geschrieben wurden, können unlesbar sein. In Block 536 darf ein Löschen initiiert werden. Bei dem Löschen kann es sich um ein physisches Löschen der Daten handeln, bei denen der Zeilenversionswert einer bestimmten Zeile in Block 536 nicht mit dem neuen Gruppenversionswert übereinstimmt. Es darf keine neue Löschanforderung angenommen werden, bis das physische Löschen in Block 536 abgeschlossen wurde. Wenn der neue Gruppenversionswert mit dem Zeilenversionswert einer bestimmten Zeile übereinstimmt, dürfen die Inhalte von Adressen nicht aus der bestimmten Zeile gelöscht werden und können lesbar oder schreibbar sein. In Ausführungsformen darf vor dem Abschließen des physischen Löschens eine Leseanforderung oder eine Schreibanforderung gestattet werden. In Ausführungsformen darf während des Stattfindens eines Löschens in einer ersten Zeile ein Lesen in einer zweiten Zeile stattfinden, selbst wenn Daten in der ersten Zeile nicht physisch gelöscht wurden, wenn der Zeilenversionswert für die zweite Zeile mit dem Gruppenversionswert übereinstimmt. In Ausführungsformen darf während des Stattfindens eines Löschens kein anderer Löschbefehl gestattet werden, bis jedes von dem ersten Löschbefehl betroffene Datenbit entweder physisch gelöscht oder überschrieben wurde. In Ausführungsformen können der Gruppenversionswert und ein Zeilenversionswert verglichen werden und zu einer Übereinstimmung oder einer Nichtübereinstimmung führen. Das Vergleichen kann geschehen, ohne irgendeinen Zeilenversionswert zu ändern. Es werden andere Möglichkeiten wie das Beginnen mit dem Löschen sämtlicher Zeilen beim Ändern des Gruppenversionswertes in Betracht gezogen.
-
Wenn es sich bei dem Befehl um eine Schreibanforderung handelt, kann in Block 521 ein Gruppenversionswert in den Zeilenversionswert kopiert werden. Der Gruppenversionswert kann dann mit dem Zeilenversionswert übereinstimmen. In Block 522 dürfen Daten geschrieben werden. Während einer Schreibanforderung für eine bestimmte Zeile dürfen in die bestimmte Zeile geschriebene Daten nicht in die gesamte Zeile geschrieben werden. Wenn eine Zeile zum Beispiel 100 Werte speichernde Bits aufweist, dürfen in einigen Fällen lediglich 25 Bits geschrieben werden. In diesem Fall dürfen die übrigen 75 Bits gelöscht werden. Das Löschen darf stattfinden, wenn die Schreibanforderung den Zeilenversionswert geändert hat, das heißt, wenn der Gruppenversionswert vor dem Kopieren des Gruppenversionswertes in den Zeilenversionswert nicht gleich dem Zeilenversionswert war. In Ausführungsformen darf das Löschen nicht stattfinden, wenn die Schreibanforderung den Zeilenversionswert nicht geändert hat, das heißt, wenn der Gruppenversionswert vor der Schreibanforderung gleich dem Zeilenversionswert war. Wenn ein Zeilenversionswert ein Byte oder einen anderen Datenblock darstellt, kann das Byte gleichermaßen seinen eigenen Versionswert aufweisen, und die anderen Daten in der Zeile müssen möglicherweise nicht gelöscht werden. In dem Beispiel kann das Löschen das Setzen jedes der nicht geschriebenen 75 Bits auf eine „0”, „1” oder auf ein vorbestimmtes Muster von „0”en und „1”en darstellen. Somit darf der Rest der Zeile nun in Block 523 gelöscht werden. Nachdem die Schreibanforderung erfüllt wurde, dürfen die Inhalte der Zeile lesbar sein. Schreibvorgänge dürfen immer gestattet werden. Unter Standardbetriebsbedingungen finden Schreibvorgänge normal statt, wenn der Gruppenversionswert mit dem Zeilenversionswert für jede Zeile übereinstimmt.
-
In Ausführungsformen kann es einem Host gestattet werden, zu lesen, zu schreiben oder zu löschen. Dem Host darf es nicht gestattet werden, einen Gruppenversionswert zu setzen. Dem Host darf es nicht gestattet werden, ein Element oder einen Zeilenversionswert zu setzen. Aspekte der Offenbarung können es gestatten, dass dies indirekt geschieht, aber nicht direkt als Folge einer Aktion durch den Host.