SICHERES SPEICHERSYSTEM MIT FLASH-SPEICHERN UND
CACHE-SPEICHER
Die vorliegende Erfindung bezieht sich auf ein sicheres Speichersystem mit einem Flash-Speicher und einem Cache-Speicher und insbesondere auch ein sicheres Speichersystem mit Flash-Speicher und Cache-Speicher in Smart-Cards oder Smart-Card-ICs (integrierte Schaltungen).
Ein permanenter nichtflüchtiger Speicher ist ein Schlüsselelement in der Entwicklung eines weiten Bereiches von Anwendungen und Märkten.
Seit der Einführung des ersten PROM bis hin zu dem neu verfügbaren FeRAM (ferro- elektrisches RAM) und dem MRAM (magnetisches RAM) ermöglicht jede Art von programmierbaren nichtflüchtigem Speicher unübertroffene Lösungen für Schlüsselanforderungen der Benutzer. Es sei hier zum Beispiel die Ersetzung von ROM für eine höhere Flexibilität und einer schnelleren Markteinführung sowie die Anwendung von entfernbaren Speichergeräten hoher Kapazität in Verbrauchermärkten (z.B. digitale Kameras, PDAs) genannt.
Die für jede Anwendungsumgebung vorgegebenen Erfordernisse und Begrenzungen bestimmen die Art des progammierbaren nichtflüchtigen Speichers, der in ein gegebenes Gerät zu implementieren ist. In den meisten Fällen besteht eine exakte Übereinstimmung zwischen den Spezifikationen des Gerätes und der Charakteristik einer Speicherart. Allerdings gibt es spezifische Anwendungen, die spezifische Erfordernisse und Begrenzungen haben, die manchmal eine Kombination von einigen Speichercharakteristiken erfordern, die nicht durch eine Art des hichtf üchtigen Speichers abgedeckt sind. Smart-Cards finden sich unter diesen. Eine typische Smart-Card- Vorrichtung hat eine kleine MikroSteuereinheit (mit z.B. 5 bis 8 Eingabe-/Ausgabeanschlußstiften), die um ihren CPU-Kern zweckbestimmte Eingabe- und Ausgabegeräte für bestimmte Anwendungen und Speicher aufweist, der ROM in der Größe von einigen hundert Kilobyte, teilpermanenten, nichtflüchtigen Speicher in der Größe von einigen zehn Kilobyte und
SRAM in der Größe von einigen Kilobyte mischt. Eine Smart-Card- Vorrichtung vereinigt die am meisten begrenzenden Anforderungen für programmierbare, nichtflüchtige Speicher, indem es ihn für Daten und Anwendungen im Native-Interpreted-Modus benutzt.
Da die elektrische Stromzufuhr nicht in der Smart-Card integriert ist, stammt eine Begrenzung von der Anwendungsumgebung. Der Strom wird durch ein zweckbestimmtes Lesegerät zugeführt (Die Integration einer dünnen Batterie in die Karte ist technisch möglich, aber nicht ökonomisch sinnvoll). Dies erfordert es, dass, wenn das Smart- Card-Gerät seine Anwendungsdaten behandelt, es die Behandlung zu sichern hat, um die Datenintegrität selbst in de Fall einer Stromunterbrechung zu gewährleisten.
Die Art des nichtflüchtigen Speichers, die am besten diese Anforderung erfüllt, sollte erlauben, dass die Daten auf einer Wort-zu- Wort-Basis reprogrammiert werden können. Diese Eigenschaft erleichtert die Durchführung von Sicherangsmechanismen und verringert den Umfang von Integritätsverlusten, falls welche auftreten. Um den Einschluss des Leistungsverlustes auf der Anwendungsebene zu minimieren, die durch die Verwaltung des nichtfiüchtigen Speichers eingeführt wird (das auch die Sicherungsverwaltung einschließt), sind auch schnelle Lösch- und Programmierzüge erforderlich. Eine Begrenzung bezieht sich auf die Betriebslebensdauer. Die Beanspruchung, die durch aufeinanderfolgende Vorgänge von Neuprogrammierungen auf den teilpermanenten, nichtflüchtigen Speicher eingeführt werden, verändern seine Lebensdauer. Da es schwierig ist, die Anzahl von Datenaktualisierungen, die innerhalb der Lebensdauer einer Smart-Card durchgeführt werden, vorherzusagen, ist nichtflüchtiger Speicher hoher Lebensdauer erforderlich (mindestens hunderttausend Programmierzyklen). Eine andere Begrenzung bezieht sich auf die physikalischen Abgrenzungen. Um die mechanische Beanspruchung zu minimieren und um es in ein Smart-Card-Mikromodulgehäuse einupassen, ist die physikalische Größe des Halbleiterplättchens einer Smart-Card- Vorrichtung begrenzt (der maximale Platzbedarf, der üblicherweise in der Industrie akzeptiert wird, beträgt 25 mm2). Diese Begrenzung hat einen direkten Einfluß auf die gesamte Speicherkapazität des nichtflüchtigen Speichers, der in das Gerät integriert
werden kann, da dem nichtflüchtigen Speicher im allgemeinen mehr als 60% der gesamten Größe des Halbleiterplättchens zukommt. In Abhängigkeit von der Anwendung (z.B. GSM oder Bankgeschäfte) beeinflusst schließlich die Begrenzung des Stromverbrauchs die Strategie der Neuprogrammierung, die normalerweise hohe Spannungen erfordert.
Unter den programmierbaren, nichtflüchtigen Speichern sind EEPROMs, Flash- Speicher und FeRAMs die besten Kanditaten, die sich für eine Smart-Card- Vorrichtung eignen.
EEPROM ist eine robuste und erprobte Technologie, die seit dem Anfang in Smart- Card-Geräten verwendet wird und die den meisten Anforderungen entspricht: Wortlöschzugriff und Wortprogrammzugriff mit ausreichenden Zeiten (einige Millisekunden) bei Nativanwendungen, hohe Lebensdauer, ein annehmbarer Platzbedarf für Speicherkapazität bis zu 64 KB und einen akzeptablen Stromverbrauch. EEPROM erreicht die Grenzen, wenn es zusammen mit der Java-Card-Technologie verwendet wird (die einen schnellen Wortaktualisierungszugriff erfordert, um entsprechende Anwendungsleistungen zu erbringen) und für Speicherkapazitäten von 128 und mehr KB. Das Verkleinern der EEPROM-Technologie unter 0,25 mm ist aufgrund der Hochspannungserfordernis für Lösch- und Programmiervorgänge auch ein Problem.
Ein Flash-Speicher ist so robust wie EEPROMs. Er hat das beste Verhältnis von Speicherkapazität gegenüber dem Platzbedarf und hat mit EEPROM vergleichbare Programmierungszeiten, Lebensdauer und Strombedarf. Flash-Speicher sind in einer Technologie kleiner als 0,25 μm verfügbar.
Obwohl der Flash-Speicher die ideale Lösung zum Speichern von Anwendungen ist, ist er dies nicht für den Fall von Anwendungsdaten. In seinem üblichen Aufbau (d.h. Aufbau in großen (größer als 1 KB) programmierbaren Sektoren) erlaubt der Flash-Speicher keinen Wortlöschzugriff. Das Emulieren dieser Funktion hat größere Auswirkungen auf Seiten des Platzbedarfs, wodurch der Flash-Speicher seinen großen Vorteil verliert.
Der FeRAM ist eine sehr neue Technologie, die noch nicht in der Massenproduktion erprobt ist. Seine großen Vorteile sind Wortzugriff und Sofortaktualisierungszugriff (wenige hundert Nanosekunden), was eine Verwaltung des nichtflüchtigen Speichers wie RAM ermöglicht. FeRAM steht in einer Technologie kleiner als 0,25 μm zur Verfügung. Er erfordert keine hohen Spannungen zum Neuprogrammieren, wodurch er sich als nichtflüchtiger Speicher geringen Stromverbauches auszeichnet. Neueste technologische Entwicklungen zeigen eine sehr hohe Lebensdauer.
Da die Dichte des FeRAMs (2T/2C-Struktur) näher zu der des EEPROM ist, ist er nicht für Speicherkapazitäten von 128 und mehr KB bei sehr begrenzten Größen des Halblei- terplättchens geeignet. EEPROM ist der beste Kompromiß, um bis zu einem bestimmten Niveau von Speicherfähigkeiten für Anwendungen von Daten all die Anforderungen bei Smart-Card- Vorrichtungen abzudecken. Es zeigen sich klare Grenzen, die schnell anwachsenden Anforderungen der Benutzer anzusprechen. Es ist kein teilpermanenter, nichtflüchtigen Speicher verfügbar, der selber alle Anforderungen bei der Ersetzung von EEPROM erfüllt.
Das Mischen von Flash-Speicher, um Anwendungen zu speichern, und EEPROM oder FeRAM, um Daten zu speichern, ist durchführbar. Allerdings ist diese Art des Mischens ökonomisch nicht sinnvoll und erfordert Trennung von Programmcode und Daten mit den entsprechenden Begrenzungen der Größe und geringerer Flexibilität bei Gebrauch des nichtflüchtigen Speichers.
Die Aufgabe der Erfindung ist es, ein teilpermanentes Speichersystem mit nichtflüchtigem Speicher bereitzustellen, das große Speicherkapazitäten innerhalb desselben Platzbedarfes wie Standard-Flash-Speicher mit der Fähigkeit der sofortigen Wort-für- Wort- Neuprogrammierung des gesamten Speichers auf eine sichere Art vereinigt.
Diese Erfindung soll für Smart-Card- Vorrichtungen als ein Ersatz des EEPROMs benutzt werden, um große Speicherkapazitäten (bis zu einigen MB) mit einem schnellen
Direktzugriff anzusprechen, um die effektive Betriebsbandbreite des Systems zu erhöhen.
Diese und weitere Aufgaben der Erfindung werden durch eine miniaturisierte Datenver- arbeitungs- und Speichereinheit nach Anspruch 1 gelöst. Die abhängigen Ansprüche betreffen vorteilhafte Weiterentwicklungen der Erfindung.
Bei einem herkömmlichen Speichersystem mit Cache-Speicher und Flash-Speicher wird auf den Flash-Speicher codeunabhängig über den Cache-Speicher zugegriffen, der aus einem kleinen SRAM-Puffer gebildet wird, um die effektive Betriebsbandbreite des Systems zu erhöhen. Die vorgeschlagene Verbesserung des herkömmlichen Speichersystems mit Cache-Speicher und Flash-Speicher sichert selbst für den Fall einer Stromunterbrechung die Erhaltung der programmierten Daten. In dem man anstelle von SRAM FeRAM verwendet, wird der Cache-Speicher selbst nichtflüchtig . Da der Cache- Speicher auch frei in wenigen hundert Nanosekunden neu programmiert werden kann, arbeitet das Gesamtsystem (Flash-Speicher + FeRAM) als ein nichtflüchtiger RAM. Weiterhin kann jeder schnelle und teilpermanente nichtflüchtige Speicher mit Wortzugriff (wie herkömmliche nichtflüchtige RAMs oder auch MRAMs) anstelle von FeRAM verwendet werden.
Fig. 1 ist ein Blockdiagramm, das schematisch den Aufbau des sicheren Speichersystems mit Cache-Speicher und Flash-Speicher zeigt;
Fig. 2A ist eine schematische Darstellung, die das dynamische Spiegeln von Sektoren darstellt;
Fig. 2B ist eine schematische Darstellung, die das dynamische Spiegeln von Worten darstellt;
Fig. 3A ist ein Flußdiagramm für das Auslesen eines Wortes nach Fig. 2A;
Fig. 3B ist in Flußdiagramm für das Auslesen eines Wortes nach Fig. 2B;
Fig.4A ist ein Flußdiagramm für das Aktualisieren von Adressen und Worten nach
Fig. 2A; Fig. 4B ist ein Flußdiagramm für das Aktualisieren von Worten und Adressen nach
Fig. 2B.
Fig. 1 stellt die Anordnung der Datenflüsse des sicheren Speichersystems mit Cache- Speicher und Flash-Speicher dar. Das System wird von einer Steuereinheit 1001 gebildet, die als die Schnittstelle zwischen dem nicht dargestellten CPU-Kern und dem Flash-Speicher dient. Die Steureinheit verbindet einerseits einen teilpermanenten, nichtflüchtigen Cache-Speicher 1002, der aus einer geringen Menge von zum Beispiel Fe- RAM-B ereich gebildet wird, und andererseits eine große Menge von teilpermanentem Flash-Bereich 1003.
Die CPU, die mit dem Speichersystem verbunden ist, sieht es als einen großen zusammenhängenden Direktzugriffsspeicherbereich, dessen Größe dem Flash-Speicher entspricht. Der Speicheraufbau innerhalb des Speichersystems wird im folgenden beschrieben. Der Flash-Speicher 1003 ist ein zusammenhängender Bereich von Flash-Speicher, der physikalisch in zusammenhängende Sektoren geteilt ist. Die Größe des Flash- Speichers beträgt einige hundert KB. Die Größe eines Sektors beträgt wenige KB, wobei eine übliche Sektorgröße 2 KB ist. Mögliche Vorgänge in den Flash-Speichern sind: Lesen eines Wortes (in wenigen hundert Nanosekunden), Programmieren eines Wortes (in wenigen Mikrosekunden) und das Löschen eines Sektors (in wenigen Mikrosekun- den).
Der nichtflüchtige Cache-Speicher 1002 weist zum Beispiel einen zusammenhängenden Bereich von FeRAM-Speicher auf. Die Größe des Caches beträgt wenige KB. Mögliche Vorgänge in dem Cache-Speicher sind: Lesen eines Wortes (in wenigen hundert Nanosekunden) und das Aktualisieren eines Wortes (in wenigen hundert Nanosekunden).
Es gibt zwei Möglichkeiten, den nichtflüchtigen Cache-Speicher 1002 zu organisieren. Bei der ersten Möglichkeit (im folgenden als Möglichkeit 1 bezeichnet) wird der Cache- Speicher (zum Beispiel FeRAM) in Cache-Sektoren unterteilt, wobei die Größe eines Cache-Sektors der Größe eines Sektors des Flash-Speichers 1003 angepasst ist. Bei dieser Möglichkeit ist ein Cache-Sektor ein Abbild von einem Flash-Sektor. Wie in Fig. 2A gezeigt, führt die Steuereinheit einen Spiegelmechanismus von Sektoren zwischen den Cache-Sektoren und den Flash-Sektoren durch.
Bei der zweiten Möglichkeit (im folgenden als Möglichkeit 2 bezeichnet) wird der Cache-Speicher logisch in differenzierte Bereiche unterteilt, wobei ein Bereich die Adressen der Worte speichert, die im Flash-Speicher 1003 abgeändert wurden, und ein Bereich (derselben Größe) die Werte der abgeänderten Worte speichert. Wie in Fig. 2B gezeigt, führt die Steuereinheit einen Spiegelmechanismus zwischen den Worten im Cache-Speicher 1002 und den Worten im Flash-Speicher 1003 durch. Ein letzter Bereich des Cache-Speichers wird als ein Datenpuffer benutzt, um auf eine sichere Art im Flash zu programmieren und zu aktualisieren.
Bei beiden Möglichkeiten weist ein nichtflüchtiger Systembereich, der mit dem Cache- Speicher verbunden ist, die notwendigen Informationen für das System auf, um den Speichermechanismus zu verwalten. Der Vorteil von Möglichkeit 1 ist die Ausführung einer einfachen Steuereinheit. Der Vorteil von Möglichkeit 2 ist der Anstieg der Betriebslebensdauer des Flashs 1003.
Ein Lesevorgang nach Möglichkeit 1 wird im folgenden beschrieben. Um ein Wort aus dem sicheren Speichersystem mit Cache-Speicher und Flash-Speicher auszulesen, wird die Adresse auf der Adressenleitung 1020 eingestellt und der Lesevorgang über die Vorgangsleitung 122 ausgelöst. Fig. 3A ist ein Flußdiagramm zur Steuerlogik der Sequenzen zum Auslesen aus dem sicheren Speichersystem mit Cache-Speicher und Flash-Speicher, wenn der nichtflüchtige Cache-Speicher 1002 nach Möglichkeit 1 aufgebaut ist.
Wenn durch die Vorgangsleitung 1022 ein Lesevorgang ausgelöst wird, erfasst die Steuereinheit 1001 die Adresse auf der Adressenleitung 1020 und prüft, ob sie von einem der Cache-Sektoren abgebildet wird (d.h. einer der logischen Sektoren in dem nicht- flüchtigen Cache-Speicher 1002 spiegelt den Sektor im Flash-Speicher 1003, die die Adresse enthält).
Wenn die Adressen nicht von dem nichtflüchtigen Cache-Speicher 1002 abgebildet wird, setzt die Steuereinheit 1001 die Adresse auf der Adressenleitung 1013 und löst einen Lesevorgang auf der Steuerleitung 1015 aus. Daraufhin gibt der Flash-Speicher 1003 das Wort aus, der an der Adresse auf der Datenleitung 1014 gelesen wird.
Wenn die Adresse durch den nichtflüchtigen Flash-Speicher 1002 abgebildet wird, berechnet die Steuereinheit mittels der Informationen, die in dem nichtflüchtigen Systembereich verfügbar sind, die Adresse (Versatz) in dem Cache-Sektor, der der Adresse im Flash-Speicher entspricht. Sie setzt die berechnete Adresse (Versatz) auf der Adressenleitung 1010 und löst einen Lesevorgang auf der Steuereleitung 1012 aus. Daraufhin gibt der nichtflüchtige Cache-Speicher 1002 das Wort auf der Datenleitung 1011 aus, das an der berechneten Adresse (Versatz) gelesen wird.
Sobald das Zielwort erfasst wird, gibt die Steuereinheit 1001 es auf der Datenleitung 1023 aus, zeigt den Betriebszustand auf der Zustandsleitung 1023 an und beendet den Vorgang (und wartet auf den nächsten Vorgang).
Hinsichtlich des Lesevorgangs nach der zweiten Möglichkeit wird auf das Flußdiagramm der Fig. 3B verwiesen.
Um ein Wort in dem sicheren Speichersystem mit Cache-Speicher und Flash-Speicher zu aktualisieren, wird die Adresse auf der Adressenleitung 1020 eingestellt, wird das Wort auf der Datenleitung 1021 eingestellt und der Aktualisierungsvorgang über die Vorgangsleitung 1022 ausgelöst. Fig. 4A ist ein Flußdiagramm der Steuerlogik zum
Aktualisieren des sicheren Speichersystems mit Cache-Speicher und Flash-Speicher, wenn der nichtflüchtige Cache-Speicher 1002 nach Möglichkeit 1 aufgebaut ist.
Sobald durch die Vorgangsleitung 1022 ein Aktualisierungsvorgang ausgelöst wird, erfasst die Steuereinheit 1001 die Adresse auf der Adressenleitung 1020 und erfasst die Daten auf der Datenleitung 1021. Die Steuereinheit prüft dann, ob die Adresse durch einen der Cache-Sektoren abgebildet wird (Das heißt einer der logischen Sektoren in dem nichtflüchtigen Cache-Speicher 1002 spiegelt den Sektor im Flash-Speicher 1003, der die Adresse ADDR enthält).
Wenn die Adresse von dem nichtflüchtigen Cache-Speicher 1002 abgebildet wird, berechnet die Steuereinheit 1001 die Adresse (Versatz) in dem Cache-Sektor, der der Adresse in dem Flash-Speicher entspricht. Sie setzt die Daten auf die Datenleitung 1011, setzt die berechnete Adresse (Versatz) auf die Adressenleitung 1010 und löst einen Aktualisierungsvorgang auf der Steuerleitung 1012 aus.
Wenn die Adresse nicht durch den nichtflüchtigen Cache-Speicher 1002 abgebildet wird, überprüft die Steuereinheit 1001 die Verfügbarkeit eines Cache-Sektors, um den Flash-Sektor zu spiegeln, der die Adresse enthält.
Wenn eine ödere mehrere Cache-Sektoren frei sind (d.h. sie spiegeln keinen Flash- Sektor), wählt die Steuereinheit 1001 einen Sektor aus (Schritt 4001 beliebige Auswahl), um den Flash-Sektor zu spiegeln, der die Adresse ADDR enthält.
Wenn kein Cache-Sektor frei ist, wählt die Steuereinheit 1001 vor dem Spiegeln des Flash-Sektors, der die Adresse ADDR enthält, einen zu löschenden Sektor aus. Diese Auswahl (Schritt 1002) kann auf verschiedenen Strategien beruhen. Die zu beschreibenden Sektoren können zum Beispiel zufällig, nacheinander oder dem Alter nach ausgewählt werden.
Der Löschvorgang des Cache-Sektors wird wie folgt durchgeführt. Die Steuereinheit 1001 setzt die Startadresse des Flash-Sektors auf der Adressenleitung 1013, die durch den ausgewählten Sektor gespiegelt wird, den letzten Löschvorgang auf der Vorgangsleitung 1015, um den gesamten Flash-Sektor zu löschen, sie wartet auf das Ende des Löschvorgangs, der durch die Zustandsleitung 1016 angezeigt wird, und kopiert dann den gesamten ausgewählten Cache-Sektor zu seinem entsprechenden Flash-Sektor.
Das Kopieren eines Wortes von einem Cache-Sektor zu seinem entsprechenden Flash- Sektor wird wie folgt durchgeführt. Die Steuereinheit 1001 setzt die Cache-Sektor- Adresse auf der Adressenleitung 1010, sie setzt den Lesevorgang auf der Steuerleitung 1012, sie erfasst das auf der Datenleitung 1011 gelesene Wort, sie setzt dieses Wort auf die Datenleitung 1014, sie setzt auf der Adressleitung 1013 die Flash-Adresse, die der Cache-Sektor- Adresse entspricht, sie setzt auf der Steuerleitung 1015 den Programmvorgang und wartet auf das Ende des Programmvorgangs, der durch die Zustandsleitung 1016 angezeigt wird. Um einen gesamten Cache-Sektor zu kopieren, wird der Vorgang für jede Adresse des gegebenen Sektors wiederholt.
Sobald ein Cache-Sektor (frei oder gelöscht) ausgewählt ist, wird diesem Sektor der Flash-Sektor kopiert, der die Adresse ADDR enthält. Das Spiegeln des Flash-Sektors in dem nichtflüchtigen Cache-Speicher 1002 ist vollendet, sobald der nichtflüchtige Systembereich mit der Sektoridentifikation aktualisiert ist.
Das Kopieren eines Wortes von einem Flash-Sektor zu seinem entsprechenden Cache- Sektor wird wie folgt durchgeführt. Die Steuereinheit 1001 setzt auf der Adressenleitung 1013 die Flash-Adresse, die der Cache-Sektoren-Adresse entspricht, sie setzt den Lesevorgang auf der Steuerleitung 1015, sie erfasst das auf der Datenleitung 1014 gelesene Wort, sie setzt dieses Wort auf die Datenleitung 1011, sie setzt auf der Adressenleitung 1010 die Cache-Sektor-Adresse und setzt auf der Steuerleitung 1012 den Aktualisierungsvorgang. Um einen gesamten Flash-Sektor zu kopieren, wird der Vorgang für jede Adresse in dem gegebenen Sektor wiederholt.
Sobald der Flash-Sektor gespiegelt ist, berechnet die Steuereinheit 1001 mittels der Informationen, die in dem nichtflüchtigen Systembereich zur Verfügung stehen, die Adresse (Versatz) in dem Cache-Sektor, der der Adresse im Flash entspricht, setzt sie die berechnete Adresse (Versatz) auf die Adressleitung 1010, setzt sie die Daten WORD auf die
Datenleitung 1011 und löst einen Aktualisierungsvorgang auf der Steuerleitung 1012 aus.
Während der Kopiervorgänge, die vor dem Aktualisieren des Caches durchgeführt werden können, wird der nichtflüchtige Systembereich benutzt, um die vollständige Wiederherstellung der Speicherkonfiguration im Fall einer Stromunterbrechung zu gewährleisten.
Die Fortschritte der Lösch- und Kopiervorgänge werden automatisch in dem Systembereich aufgezeichnet, um eine Wiederherstellung im Falle jeglicher unerwarteter Unterbrechungen während der Ausführung der Schritte 4003, 4004, 4005 und 4006 zu ermöglichen.
Hinsichtlich der Aktualisierangsvorgänge nach Möglichkeit 2 wird auf das Flußdiagramm der Fig. 4B verwiesen.