Fehlercodes
werden in verschiedenster Art in vielen Speichern verwendet, um
Fehler im Speicherinhalt oder an den Speicherzellen zu Erkennen oder
zu Korrigieren. Dabei sind für
die unterschiedlichen Anwendungen jeweils optimale Codes aus dem Stand
der Technik bekannt. Zur Fehlererkennung ist beispielsweise eine
Parity-Kennung, zur Fehlerkorrektur sind mathematische Code bis
hin zur redundanten, doppelten Speicherung bekannt. Abhängig von
den Anforderungen an die Speicher kommen ausgewählte Codierungen zum Einsatz.
Speicher
sind in verschiedenen Ausprägungen
bekannt, wobei neben papiergebundenen Speichern, wie Druckseiten,
heutzutage zumeist elektronische Speicherungen vorgenommen werden.
Dabei werden bei elektronischen Datenverarbeitungsanlagen die zu
speichernden Daten beispielsweise in magnetischer Form auf Ringkernspeichern,
Magnetbändern,
Disketten oder Festplatten, in optischer Form auf CDs (Compact Discs)
oder DVDs (Digital Veritisal Discs) oder in elektronischer Form
in Röhren-
oder Halbleiterspeichern gespeichert. Bei den Speicherarten wird
zwischen veränderbaren
und festprogrammierten Speichern unterschieden. Bekannte Vertreter
der festprogammierten Halbleiterspeicher sind ROM (Read-Only Memory),
PROM (Programmable Read-Only Memory) oder festverdrahte Schaltungen, wogegen
die Speichertypen RAM (Random Access Memory), EPROM (Electrical
Programmable Read-Only Memory), EEPROM (Electrical Erasable Programmable
Memory), Flash-EEPROM, FRAM (Ferroelectrical Random Access Memory)
zu den veränderbaren
Halbleiterspeichern zählen.
Nachteilig
an den Speichern ist, dass eine vordefinierte Menge des Speichers
für Fehlercodes verwendet
wird.
Es
ist bekannt, dass Speicher für
einige Anwendungsgebiete ohne Bereiche für Fehlercodes hergestellt werden,
wogegen andere Speicher für spezielle
Applikationen mit hohen Anforderungen an die Zuverlässigkeit
oder Sicherheit mit aufwendigen Fehlercodes ausgestattet werden.
Besonders aus dem Bereich der Weltraumtechnik sind Speicher bekannt,
welche auch bei Einwirken von Strahlungen, welche beispielsweise
Single-Event-Effects auslösen können, den
Inhalt unverändert
wiedergeben müssen.
Hieraus ergibt sich der Nachteil, dass der Speicher entweder nur
eine kleine Menge für
Fehlercodes verwendet und damit nur eine geringe Verbesserung der
Zuverlässigkeit
und Sicherheit bietet oder dass der Speicher einen großen Bereich
für Fehlercodes verwendet
und damit zwar eine gute Verbesserung der Zuverlässigkeit und Sicherheit bietet,
jedoch ein relativ schlechtes Verhältnis zwischen effektivem Speicherplatzangebot
und Fehlercodeaufwand aufweist.
Aufgabe
der Erfindung ist es, das Verhältnis zwischen
dem nutzbaren, effektiven Speicherplatzangebotes eines Speichers
und den zusätzlichen Aufwand
für Fehlercodes
variabel zu gestalten und damit Optimierungsmöglichkeiten zu bieten.
Diese
Aufgabe wird durch die Merkmale der unabhängigen Patentansprüche gelöst. Vorteilhafte Weiterbildungen
und Ausgestaltungen sind in den Unteransprüchen sowie in den nebengeordneten
Patentansprüchen
angegeben.
Der
Erfindung liegt zunächst
die Tatsache zu Grunde, dass in den typischen Verwendungen eines Speichers
nicht für
alle Inhalte die gleiche Zuverlässigkeit
oder die gleiche Sicherheit zwingend gefordert wird.
Beispielsweise
können
in einem Speicher Programmablaufbefehle oder Anweisungssequenzen
gespeichert sein. Diese haben im Allgemeinen sehr hohe Anforderungen
an die Zuverlässigkeit
und Sicherheit, da gestörte
oder veränderte
Speicherinhalte zu falschen Funktionen oder Abläufen führen können. Daher werden hierbei
relativ hohe Aufwände für Fehlercodes
realisiert.
Andererseits
können
in dem Speicher auch Daten wie Texte zur Benutzerführung oder
Daten zur audio- oder visuellen Wiedergabe gespeichert sein. Fehler
in diesen Bereichen sind meist wenig kritisch, da kleine Störungen den
Inhalt für
einen Benutzer nicht unbrauchbar machen. Daher wird hier versucht den
Aufwand für
Fehlercodes möglichst
zu minimieren.
Der
Erfindung liegt weiterhin die Erkenntnis zugrunde, dass in vielen
Systemen bei der Definition und während der Entwicklungsphase
nicht eindeutig festgelegt werden kann, wie viel Speicher mit guten Fehlercodes
und wie viel Speicher mit geringem oder ohne Fehlercodes ausgestattet
werden soll. Besonders bei Systemen, welche kurz vor der Anwendung oder
während
der Nutzung konfiguriert oder programmiert werden, ist eine vorherige
Festlegung der Speichertypen bezüglich
der Fehlercodes praktisch nicht möglich.
Ein
wesentlicher Aspekt der Erfindung ist es, dass in einem System der
Aufwand erheblich steigt, wenn spezielle Speicher mit guten und
damit aufwendigen Fehlercodes sowie andere Speicher mit einfachen
oder ohne Fehlercodes eingebaut werden. Diese getrennten Speicherbereiche
müssen
dabei jeweils auf die maximal auftretende Anforderungen ausgelegt
werden, auch wenn sie nicht komplett ausgenutzt werden. In Systemen
bei denen nicht die verschiedenen Speicher eingesetzt werden können, muss
dann der Speicher mit den guten und aufwendigen Fehlercodes gesichert
werden und auch für
die Inhalte, welche nicht so hohe Anforderungen an die Zuverlässigkeit
oder Sicherheit haben, verwendet werden.
Die
Erfindung ist insbesondere auf Halbleiterspeicher anwendbar, jedoch
prinzipiell ebenso auf andere Speicher, insbesondere magnetischen
oder optischen Speichern, wie beispielsweise bei Disketten, Festplatten,
CompactDiscs (CD) oder Digital Veritisale Discs (DVD).
Die
erfindungsgemäße Vorrichtung
zeichnet sich gegenüber
bekannten Speichern durch einen variablen und damit ermöglichtem,
erheblich optimierbaren Verhältnis
zwischen effektivem Speicherplatzangebot und Fehlercodeaufwand aus.
Das System benötigt
nunmehr nur noch einen Speicher, welcher für kritische Daten mit einem
aufwendigem Fehlercode konfiguriert werden kann und für Daten
mit nicht so hohen Sicherheits- oder Zuverlässigkeitsanforderungen mit
geringerem oder ohne Fehlercode konfiguriert werden kann.
Ein
weiterer Vorteil der erfindungsgemäßen Vorrichtung ist, dass der
Speicher maximal ausgenutzt werden kann, da kritische Daten und
weniger oder unkritische Daten in einem Speicherbereich abgelegt
werden können.
Dabei können
die Speicherbereiche in Segmente eingeteilt werden, welche mit den
verschiedenen starken, eingestellten Fehlercodes abgesichert sind.
Es ist hierbei auch möglich, dass
die Daten der verschiedenen Schutzklassen im Speicher in gemischter
Reihenfolge gespeichert werden.
Der
Speicher der erfindungsgemäßen Vorrichtung
in einer beschreibbaren Form kann auch während der Verwendung umkonfiguriert
werden. Bei der Herstellung des Speichers muss hierbei nicht festgelegt
werden, welcher Anteil für
Daten mit hohem Schutz und welcher Anteil für Daten mit geringem oder ohne
Schutz ausgelegt werden soll. Vielmehr kann während der Verwendung des Speichers für die jeweiligen
Daten der Schutzumfang festgelegt werden. Bei wiederbeschreibbaren
Speichern kann der Schutzumfang auch während der Anwendung verändert werden.
Ein Speicher, welcher zunächst kritische
Daten enthält
und von weniger kritischen Daten überschrieben wird, kann umkonfiguriert
werden, so dass nunmehr ein einfacherer oder kein Fehlercode verwendet
wird. Die freigewordenen Speicherbereiche für den Fehlercode im Anwendungsfall
der kritischen Daten können
dann für
Nutzdaten verwendet werden.
Ein
weiterer Vorteil der Erfindung liegt in der Veränderbarkeit des Speichers als
Halbleiterspeichers. Besonders beim Halbleiterspeicher sind die Kosten
eng mit dem Speicherplatz verknüpft.
Daher können
durch den optimalen Einsatz des Speichers die Gesamtspeichergrößen reduziert
werden und Kosten für
nicht benötigte
Fehlercodes eingespart werden. Besonders in Anwendungen, bei denen
die Verwendung des Speichers nicht exakt vorhergesagt werden kann,
ist die variable Speicheranordnung von Vorteil. Hierzu zählen beispielsweise
universelle Steuerungen, bei denen die Anwendung nach der Herstellung
auf dem System gespeichert wird. Ein kleiner Anteil des Speichers
könnte
hierbei von den eigentlichen Programmbefehlen gefüllt werden,
welche eine gute Fehlerabsicherung benötigen. Ein großer Speicherbereich
kann von Texten, Audiodaten oder Videodaten für die Benutzerführung belegt
werden, welche nur einen geringeren Schutz benötigen.
Besonders
in Systemen, bei denen nur ein sehr begrenztes Speicherplatzangebot
besteht, ist die erfindungsgemäße Vorrichtung
vorteilhaft. Entsprechende Systeme sind Speicher- oder Chipkarten,
bei denen der Speicher durch die maximale Chipfläche begrenzt ist und deren
Chipfläche
auf Grund von normierten Abmessungen und mechanischen Anforderungen
limitiert ist. Bei solchen Systemen ist eine optimale Nutzung des
Speichers vorteilhaft, da somit eine maximale Datendichte erreicht werden
kann.
In
einer vorteilhaften Ausgestaltung ist in dem Speicher ein Steuermittel
integriert, welches die Verwendung des Speicherinhaltes als Nutzdaten oder
als Fehlercode unterscheidet. Damit können die Daten und die Fehlercodeinformationen
der unterschiedlichen Verwendung zugeführt werden. So können die
Nutzdaten direkt einem Prozessor oder einem Interface zur Verfügung gestellt
werden, wogegen die Fehlercodeinformationen an ein Modul zur Verarbeitung
der Fehlercodes übertragen
werden kann.
In
einer weiteren vorteilhaften Ausgestaltung der erfindungsgemäßen Vorrichtung
umfasst der Speicher in einem Teil des Speichers Kennungen, welche
angeben, ob die Daten in einem Speicherbereich Nutzdaten oder Fehlercodes
sind. Dabei kann auch zwischen verschiedenen Stärken der Fehlercodes unterschieden
werden. Eine Kennung könnte angeben,
dass der Bereich nur Nutzdaten enthält, eine zweite Kennung könnte angeben,
dass der Bereich einen einfachen Schutz enthält und eine weitere Kennung
könnte
einen hohen Schutzmechanismus signalisieren. Typischerweise wird
ein Teil des Speichers immer für
Nutzdaten vorbehalten sein, so dass die Kennung angibt, ob zu diesen
Nutzdaten ein Fehlercode gespeichert ist oder ob in den Fehlercode-Speicherbereich
weitere Nutzdaten gespeichert sind. In Abhängigkeit des Aufwandes kann
die Größe der Speicherbereiche
variieren. Bei digitalen Speichern kann die Größe der Speicherbereiche und -segmente
von Bits über
Bytes und Wörtern
bishin zu Blöcken
schwanken.
In
einer weiteren vorteilhaften Ausgestaltung der erfindungsgemäßen Vorrichtung
ist weiterhin die Auswertung der Fehlercodes in dem Speicher integriert.
Hierbei erkennt der Speicher, welche Bereiche nur Nutzdaten ohne
Fehlercodes enthalten und überträgt diese
direkt an die Schnittstelle oder einen Prozessor. Bei Speicherbereichen
mit Fehlercode gemäß der Kennung
kann der Fehlercode direkt ausgewertet werden. In Abhängigkeit
der Fehlercode-Schaltung kann das Datum von einer Übertragung
ausgeschlossen werden oder der Fehler korrigiert werden und oder
oder eine Fehlermeldung übertragen
werden.
Nachfolgend
wird die Erfindung anhand von Ausführungsbeispielen in Verbindung
mit den Zeichnungsfiguren näher
erläutert.
Es zeigen:
1 eine
schematische Darstellung eines Halbleiterspeichers in einem System
nach dem Stand der Technik; und
2 eine
schematische Darstellung eines Speicherinhaltes mit Anwendung eines
Fehlercodes nach dem Stand der Technik; und
3 eine
schematische Darstellung eines Halbleiterspeichers mit der erfindungsgemäßer Vorrichtung;
und
4 eine
schematische Darstellung eines Speicherinhaltes mit Anwendung der
erfindungsgemäßer Vorrichtung
zur Kennzeichnung des Speicherinhaltes.
In 2 ist
Abbild eines Speicherinhaltes mit Fehlercode schematisch dargestellt,
wie er im Halbleiterspeicher 2 gespeichert sein kann. Die
Daten sind in diesem Speicher in verschiedene Segmente (a1, b1,
c1, d1; a2, b2, c2, d2; a3, b3, c3, d3, ...) eingeteilt zu welchen
jeweils ein Fehlercode (f1; f2; f3; ...) gespeichert wird. Die Nummer
in der Segmentbezeichnung gibt in diese Darstellung die Zugehörigkeit an:
Segment 1 enthält
die Daten a1, b1, c1 und d1 sowie den zugehörigen Fehlercode f1. Die Fehler-Korrektur-Schaltung 3 kann
anhand des Fehlercodes f die Korrektheit der Daten a, b, c und d
ermitteln oder wiederherstellen.
In 4 ist
ein Abbild eines Speicherinhaltes mit Anwendung der erfindungsgemäßen Vorrichtung schematisch
dargestellt. Dabei sind die Daten in diesem Speicher wieder in verschiedene
Segmente (a1, b1, c1, d1; a2, b2, c2, d2; a3, b3, c3, d3, ...) eingeteilt zu
welchen jeweils ein Fehlercode (f1; f2; f3; ...) gespeichert wird,
wenn die entsprechende Kennung (k1; k2; k3; ...) entsprechend auf „1" programmiert wurde.
Wenn die entsprechende Kennung (k1; k2; k3; ...) den Wert „0" speichert, so wird
anstelle eines Fehlercodes (f1; f2; f3; ...) ein Nutzdatum (e1;
e2; e3; ...) in der Speicherstelle gespeichert. Ein Steuermittel 7 leitet
entsprechend der Kennung (k1; k2; k3; ...) den Speicherinhalt an
den Prozessor 5/Schnittstelle 6 oder an die Fehler-Korrektur-Schaltung 3 zur
Auswertung. Die Anordnung der Speicherinhalte (Daten, Fehlercodes
und Kennungen) ist in der Figur schematisch und kann physikalisch
im Speicher unterschiedlich angeordnet sein. Die Ansteuerungslogik des
Speichers 2 kann so angepasst werden, dass ein minimaler
zusätzlicher
Aufwand für
das Steuermittel 7, für
die Speicheransteuerung und oder oder für die Speicherung der Kennungen
entsteht.