-
Die vorliegende Erfindung betrifft ein Verfahren zur abgesicherten Speicherung eines Datenelements in einem externen Speicher und ein Schnittstellenmodul, einen Mikrocontroller und eine Recheneinheit zu dessen Durchführung.
-
Stand der Technik
-
In Arbeitsspeichern wie SRAM, Flash, PCM oder DRAM können, um den Dateninhalt abzusichern, zusätzlich zu den Datenbits weitere, als „Error Correction Code“ (ECC) bezeichnete Bits zur Fehlerkorrektur bzw. Fehlererkennung gespeichert werden. Einzel- oder Mehrbitfehler innerhalb eines Datenelementes können damit erkannt und abhängig von der Anzahl der Bitfehler innerhalb des Datenelements korrigiert werden.
-
In eingebetteten Systemen, etwa Steuergeräten von Maschinen oder Fahrzeugen, kommen sogenannte Mikrocontroller zum Einsatz, die neben einem oder mehreren Prozessorkernen über eine bestimmte, beschränkte Menge an internem Arbeitsspeicher verfügen, in dem Programme und Daten während der Ausführung gespeichert werden. Für diesen Arbeitsspeicher kann, insbesondere für sicherheitskritische Anwendungen, etwa in Kraftfahrzeugen, ein Fehlerkorrekturverfahren mittels ECC im Mikrocontroller implementiert sein.
-
Typische in Mikrocontrollern als Arbeitsspeicher verwendete SRAM-Speicherzellen umfassen 6 Transistoren und sind entsprechend relativ teuer und aufwendig in der Herstellung, daher ist der im Mikrocontroller integrierte Arbeitsspeicher oftmals nur so groß bemessen, dass er für grundlegende Anwendungen ausreichend ist. Eine interne Erweiterbarkeit des Arbeitsspeichers ist bei Mikrocontrollern aus Kostengründen üblicherweise nicht vorgesehen bzw. nicht möglich, da der Arbeitsspeicher mit den Prozessorkernen in einem Chip integriert ist.
-
Um auch die Ausführung von Anwendungen zu ermöglichen, die auf einen größeren Arbeitsspeicher als auf dem Mikrocontroller vorgesehen zugreifen, kann ein externer Arbeitsspeicher über eine Kommunikationsschnittstelle, z.B. eine SPI-Schnittstelle (Serial Peripheral Interface), angebunden werden. Dieser externe Arbeitsspeicher kann kostengünstig in Form von DRAM-Speicherzellen, die nur einen Transistor benötigen, ausgeführt werden. Allerdings ist in verfügbaren extern anbindbaren Arbeitsspeichern keine Fehlerkorrekturfunktion implementiert.
-
Offenbarung der Erfindung
-
Erfindungsgemäß werden ein Verfahren zur abgesicherten Speicherung eines Datenelements in einem externen Speicher und ein Schnittstellenmodul, einen Mikrocontroller und eine Recheneinheit zu dessen Durchführung mit den Merkmalen der unabhängigen Patentansprüche vorgeschlagen. Vorteilhafte Ausgestaltungen sind Gegenstand der Unteransprüche sowie der nachfolgenden Beschreibung.
-
Gemäß dem vorgeschlagenen Verfahren werden das Datenelement und der zugehörige Fehlerkorrekturwert (im Folgenden auch ECC-Wert) innerhalb einer einzigen Adressierungsphase des Speichers geschrieben, ein eigenständige Adressberechnung zur Bestimmung einer Speicheradresse für den ECC-Wert und ein weiterer langer Adresszugriff während einer eigenen Adressierungsphase für den ECC-Wert entfallen. Dies ist vorteilhaft, da dadurch Speicherzugriffszeiten gegenüber einer voneinander unabhängigen Handhabung von Datenelementen und ECC-Werten verringert werden.
-
Das Berechnen der Speicheradresse und des ECC-Werts werden durch das Schnittstellenmodul durchgeführt. Dieses ist als Hardwaremodul des Mikrocontrollers ausgeführt. Eine entsprechende Funktionalität, die im Prozessorkern oder als Software implementiert ist, erübrigt sich. Entsprechend ist eine Abänderung existierender Prozessorkerne oder Software nicht notwendig. Das Schnittstellenmodul ist insbesondere als ein Modul für einen seriellen Datenbus, insbesondere als SPI-Modul (Serial Peripheral Interface) ausgebildet.
-
Das Schnittstellenmodul ist dazu eingerichtet, Speicheradressen von Datenelementen im Adressraum des Mikrocontrollers (sogenannte logische Speicheradressen) in Speicheradressen (für die Datenelemente) des externen Speichers abzubilden (sogenannte physikalische Speicheradressen), wobei bei der Abbildung der ECC-Wert, d.h. dessen Speicherplatzbedarf, berücksichtigt wird.
-
Als Fehlerkorrekturverfahren bzw. Fehlererkennungsverfahren zur Berechnung des ECC-Werts kann ein beliebiges geeignetes Fehlerkorrekturverfahren, etwa ein Hamming-Code, verwendet werden. Solche Verfahren sind dem Fachmann an sich bekannt.
-
Der über das Schnittstellenmodul angebundene externe Speicher kann insbesondere ein flüchtiger Speicher sein, der vom Mikrocontroller als Arbeitsspeicher verwendet wird, d.h. ein DRAM-Speicher (DRAM, Dynamic Random Access Memory). Es ist allerdings auch die Anwendung des Verfahrens bei einem nichtflüchtigen Speicher möglich.
-
Als „Adressierungsphase“ wird hier ein Speicherzugriff (schreibend oder lesend) verstanden, bei dem beginnend bei einer Startadresse eine bestimmte Anzahl aufeinanderfolgender (d.h. an aufeinanderfolgenden Adressen zu speichernde bzw. gespeicherte) Bits (oder Bytes) geschrieben bzw. gelesen wird. Die Startadresse wird als Speicheradresse der entsprechenden Daten bezeichnet.
-
Das Verfahren umfasst bevorzugt einen Lesevorgang des geschriebenen Datenelements aus dem Speicher, wobei bei der Lesevorgang umfasst: ein Bestimmen der Speicheradresse des Datenelements durch das Schnittstellenmodul; ein Lesen des Datenelement und des ECC-Werts innerhalb einer Adressierungsphase aus dem Speicher; ein Berechnen eines Fehlerkorrekturvergleichswerts (im Folgenden auch ECC-Vergleichswerts) aus dem gelesenen Datenelement durch das Schnittstellenmodul; und ein Vergleichen des ECC-Vergleichswert durch das Schnittstellenmodul mit dem gelesenen ECC-Wert, um festzustellen, ob diese gleich sind oder nicht gleich sind. Weiter bevorzugt umfasst der Lesevorgang: wenn der ECC-Vergleichswert und der gelesene ECC-Wert gleich sind, ein Senden des gelesenen Datenelements; beziehungsweise, wenn der ECC-Vergleichswert und der gelesene ECC-Wert nicht gleich sind, Senden eines auf Grundlage des gelesenen Datenelements und des gelesenen ECC-Werts korrigierten Datenelements.
-
Die Berechnung von Speicheradresse und ECC-Vergleichswert werden wieder durch das Schnittstellenmodul durchgeführt. Die Speicheradresse muss beim Lesevorgang bestimmt bzw. erneut berechnet werden, da die Speicheradresse eine physikalische Adresse darstellt, die den tatsächlichen Speicherort im Speicher angibt, während aus Sicht eines Computerprogramms bzw. des das Schnittstellenmodul aufweisenden Mikrocontrollers, das bzw. der das Datenelement auslesen will, lediglich die entsprechende logische Speicheradresse bekannt ist.
-
Bevorzugt umfasst der Lesevorgang des Datenelements, durch das Schnittstellenmodul, ein Empfangen eines geänderten Teil-Datenelements des gelesenen Datenelements, ein Bilden eines geänderten Datenelements aus dem geänderten Teil-Datenelement und den nicht geänderten Teilen des gelesenen Datenelements, ein Berechnen eines geänderten Fehlerkorrekturwerts basierend auf dem geänderten Datenelement, und ein Schreiben, beginnend an der Speicheradresse, des geänderten Datenelements und unmittelbar darauffolgend des berechneten geänderten Fehlerkorrekturwerts innerhalb einer Adressierungsphase. Hierdurch wird ein Lese-Schreib-Vorgang realisiert, mittels dem z.B. sogenannte „read-modify-write“-Befehle implementiert werden können. Der modifizierte bzw. geänderte Teil des gelesenen Datenworts wird durch das Schnittstellenmodul in das gelesene Datenwort eingefügt und ebenso wird durch das Schnittstellenmodul eine Neuberechnung des Fehlerkorrekturwerts vorgenommen. Diese Schritte sind aus Sicht der Software nicht sichtbar bzw. transparent, so dass diese nicht angepasst werden muss.
-
Bevorzugt umfasst das Verfahren, dass das zu speichernde Datenelement von wenigstens einem Prozessorkern des Mikroprozessors an das Schnittstellenmodul gesendet wird und/oder von dem Schnittstellenmodul an den wenigstens einen Prozessorkern des Mikroprozessors gesendet wird. Die Speicherung wird also vorzugsweise vom Prozessorkern vorgenommen. Es auch allerdings auch möglich, dass andere Funktionselemente des Mikrocontrollers einen Speicherdirektzugriff (DMA, Direct Memory Access) auf den externen Speicher durchführen, dieser erfolgt dann ebenfalls über das Schnittstellenmodul.
-
Ein erfindungsgemäßes Schnittstellenmodul zur abgesicherten Speicherung eines Datenelementes in einem externen Speicher ist dazu eingerichtet, eines der vorstehenden Verfahren durchzuführen, insbesondere, ist es dazu eingerichtet, Speicheradressen und ECC-Werte für zu speichernde Datenelemente bzw. für gelesene Datenelemente zu berechnen und ist eingerichtet, Speicheradressen von Datenelementen in einem Adressraum des Mikrocontrollers in Speicheradressen in einem Adressraum des externen Speichers abzubilden, wobei bei der Abbildung der Speicherplatzbedarf des ECC-Werts berücksichtigt wird.
-
Ein erfindungsgemäßer Mikrocontroller umfasst ein erfindungsgemäßes Schnittstellenmodul und, bevorzugt, mindestens einen Prozessorkern, der mit dem Schnittstellenmodul verbunden ist.
-
Eine erfindungsgemäße Recheneinheit, z.B. ein Steuergerät eines Kraftfahrzeugs, umfasst einen erfindungsgemäßen Mikrocontroller und, bevorzugt, einen externen Speicher, der mit dem Schnittstellenmodul verbunden ist.
-
Die Erfindung eignet sich insbesondere für sog. „Embedded Systems“ bzw. eingebettete Systeme. Darunter werden elektronische Rechner oder Computer verstanden, die in einen technischen Kontext eingebunden (eingebettet) ist. Dabei übernimmt der Rechner entweder Überwachungs-, Steuerungs- oder Regelfunktionen oder ist für eine Form der Daten- bzw. Signalverarbeitung zuständig, beispielsweise beim Ver- bzw. Entschlüsseln, Codieren bzw. Decodieren oder Filtern. Eine typische Anforderung an eingebettete Systeme ist die Realzeit-Fähigkeit (Echtzeit-Fähigkeit). Eine Verarbeitung mit nicht vorhersagbarer Verarbeitungsgeschwindigkeit kann nicht toleriert werden. Viele Applikationen (insbesondere Steuerungen in sicherheitsrelevante Systemen - also Systeme, durch die ein Mensch gefährdet, verletzt oder sogar getötet werden könnte) setzen eine vorhersagbare Reaktionszeit des Systems voraus.
-
Weitere Vorteile und Ausgestaltungen der Erfindung ergeben sich aus der Beschreibung und der beiliegenden Zeichnung.
-
Die Erfindung ist anhand von Ausführungsbeispielen in der Zeichnung schematisch dargestellt und wird im Folgenden unter Bezugnahme auf die Zeichnung beschrieben.
-
Figurenliste
-
- 1A zeigt ein Ablaufdiagramm eines Schreibvorgangs gemäß einer bevorzugten Ausführungsform des Verfahrens zur abgesicherten Speicherung;
- 1B zeigt ein Ablaufdiagramm eines Lesevorgangs gemäß einer bevorzugten Ausführungsform des Verfahrens zur abgesicherten Speicherung;
- 2 zeigt einen Mikrocontroller, der zur Implementierung des erfindungsgemäßen Verfahrens bevorzugt verwendet werden kann; und
- 3 zeigt beispielhaft die Anordnung zweier Datenelemente samt zugehörigen EEC-Werten, wie sie durch die vorliegende Erfindung erreicht wird.
-
Ausführungsform(en) der Erfindung
-
1A stellt ein Ablaufdiagramm eines Schreibvorgangs zur abgesicherten Speicherung eines Datenelements in einem an einen Mikrocontroller angebundenen externen Speicher gemäß einer bevorzugten Ausführungsform der Erfindung dar. In der weiteren Beschreibung (auch bei den weiteren Figuren) wird insbesondere auf ein Datenelement und einen ECC-Wert Bezug genommen, dies dient der sprachlichen Vereinfachung und ist im Sinne von wenigstens ein Datenelement und wenigstens ein ECC-Wert zu lesen. Die Erfindung ist also nicht auf ein einzelnes Datenelement eingeschränkt.
-
Bei dem Datenelement kann es sich sowohl um Programmdaten, d.h. Programmanweisungen, als auch um Daten, die vom Computerprogramm verwendet und gegebenenfalls verändert werden, handeln. Im Verfahren wird ein Schnittstellenmodul verwendet, über das der externe Speicher mit dem Mikrocontroller verbunden ist. Das Schnittstellenmodul ist dazu eingerichtet, Adressberechnungen und Fehlerkorrekturberechnungen durchzuführen.
-
In Schritt 10 wird das zu speichernde Datenelement von dem Schnittstellenmodul empfangen.
-
In Schritt 12 findet eine Adressrechnung bzw. Adressbestimmung statt, in der eine Speicheradresse für das zu speichernde Datenelement berechnet wird. Weiterhin wird in Schritt 14 ein Fehlerkorrekturwert (ECC-Wert) für das Datenelement berechnet. Die Schritte 12 und 14 (Berechnen der Speicheradresse bzw. des ECC-Werts) können, anders als dargestellt, auch in umgekehrter Reihenfolge durchgeführt werden. Beide Schritte 12, 14 werden durch das Schnittstellenmodul durchgeführt.
-
In Schritt 16 werden das Datenelement und der ECC-Wert während einer einzelnen Adressierungsphase an die berechnete Speicheradresse in den Speicher geschrieben, d.h. das Datenelement wird beginnend an der berechneten Speicheradresse geschrieben und der ECC-Wert wird unmittelbar auf das Datenelement folgend geschrieben. Eine Berechnung einer eigenen Speicheradresse für den ECC-Wert ist somit nicht notwendig.
-
1B stellt ein Ablaufdiagramm eines Lesevorgangs gemäß einer bevorzugten Ausführungsform des Verfahrens zur abgesicherten Speicherung dar.
-
In Schritt 22 findet eine Adressrechnung statt, in der die Speicheradresse, an der das Datenelement gespeichert ist, bestimmt wird. Hier (und zur Adressrechnung beim Schreibvorgang) ist anzumerken, dass der Prozessorkern des Mikrocontrollers bzw. ein darin ausgeführtes Computerprogramm zwar eine logische Adresse des gespeicherten Datenelements kennt, mit dem aus Sicht des Prozessorkerns darauf zugegriffen werden kann, allerdings durch die Adressrechnung eine physikalische Adresse bestimmt wird, an der das Datenelement und der ECC-Wert tatsächlich im Speicher gespeichert werden bzw. sind. Die Speicheradresse, die in Schritt 22 (und zuvor in Schritt 12) bestimmt bzw. berechnet wird ist die physikalische Adresse. Daher muss diese beim Lesevorgang erneut berechnet bzw. bestimmt werden. Diese Bestimmung der Speicheradresse wird durch das Schnittstellenmodul durchgeführt, der Prozessorkern ist nicht involviert.
-
In Schritt 24 werden, beginnend an der Speicheradresse, das Datenelement und der unmittelbar nachfolgend gespeicherte ECC-Wert aus dem Speicher gelesen. Dies erfolgt wieder innerhalb einer einzigen Adressierungsphase, eine gesonderte Adressierungsphase zum Auslesen des ECC-Werts ist nicht notwendig.
-
In Schritt 26 wird ein Fehlerkorrekturvergleichswert (ECC-Vergleichswert) aus dem gelesenen Datenelement durch das Schnittstellenmodul berechnet. Dieser ECC-Vergleichswert wird in Schritt 28 mit dem gelesenen ECC-Wert, d.h. dem beim Schreiben des Datenelements gültigen ECC-Wert, verglichen. Beim Vergleich wird festgestellt, ob das Datenelement verändert wurde, ob also ein Speicherfehler aufgetreten ist.
-
Wenn der ECC-Vergleichswert gleich dem ECC-Wert ist, d.h. wenn (im Sinne des verwendeten Fehlerkorrekturverfahrens) kein Speicherfehler aufgetreten ist, wird das gelesene Datenelement an den mindestens einen Prozessorkern des Mikrocontrollers gesendet, Schritt 30.
-
Wenn der ECC-Vergleichswert nicht gleich dem ECC-Wert ist, d.h. wenn ein Speicherfehler aufgetreten ist, wird in Schritt 32 zunächst geprüft, ob der Fehler korrigiert werden kann. Ob dies möglich ist, hängt vom verwendeten Fehlerkorrekturverfahren, mit dem der ECC-Wert berechnet wird, ab. Wird beispielsweise für ein 64 Bit langes Datenelement ein 8 Bit langer ECC-Wert verwendet, können typischerweise 1-Bit-Fehler erkannt und korrigiert werden und 2-Bit-Fehler erkannt aber nicht korrigiert werden.
-
Wenn festgestellt wird, dass der Fehler korrigiert werden kann, so wird in Schritt 34 der Fehler korrigiert, d.h. ein korrigiertes Datenelement bestimmt. Das korrigierte Datenelement wird in Schritt 36 an den mindestens einen Prozessorkern des Mikrocontrollers übertragen. Wenn andererseits festgestellt wird, dass der Fehler nicht korrigiert werden kann, wird in Schritt 38 eine entsprechende Fehlermeldung an den mindestens einen Prozessorkern des Mikrocontrollers übermittelt.
-
Beim Schreibvorgang (1A) bzw. beim Lesevorgang (1B) werden die Berechnung bzw. Bestimmung der Speicheradresse (Schritt 12 bzw. Schritt 22) und die Berechnung des ECC-Werts (Schritt 14) bzw. des ECC-Vergleichswerts (Schritt 26) durch das Schnittstellenmodul durchgeführt, vgl. 2 und 3. Eine Änderung des Designs bzw. der Hardware des Prozessorkerns (oder der Prozessorkerne) ist also nicht notwendig. Auch können Computerprogramme verwendet bzw. programmiert werden, ohne dass dabei Kenntnis über das Schnittstellenmodul und das Fehlerkorrekturverfahren notwendig sind.
-
2 stellt einen Mikrocontroller 50 dar, der zur Ausführung des erfindungsgemäßen Verfahrens verwendet werden kann. Der Mikrocontroller 50 ist hier beispielhaft in einem Steuergerät 52, etwa eines Kraftfahrzeugs oder einer Maschinensteuerung, integriert. Der Mikrocontroller 50 umfasst mindestens einen Prozessorkern 54, einen damit verbundenen (internen) flüchtigen Arbeitsspeicher 56 (DRAM, Dynamic Random Access Memory) und eine ebenfalls mit dem Prozessorkern 54 verbundenes Schnittstellenmodul 58. „Verbunden“ ist hier und im Folgenden im Sinne einer Kommunikationsverbindung zum Datenaustausch zu verstehen, hierfür sind typischerweise leitende Verbindung vorgesehen, es sind aber auch drahtlose Verbindungen (z.B. Funk oder Licht) möglich. Die Verbindungen können Punkt-zu-Punkt-Verbindungen sein oder über einen Bus realisiert sein, wobei jeweils serielle oder parallele Kommunikation vorgesehen sein kann. Die drei Funktionselemente (Prozessorkern, Arbeitsspeicher, Schnittstelle) können in einem einzelnen Chip als integrierte Schaltung realisiert sein.
-
Der mindestens eine Prozessorkern 54 ist dazu eingerichtet, Computerprogramme auszuführen. Im Arbeitsspeicher 56 werden die Computerprogramme und während derer Ausführung benötigte und/oder anfallende Daten gespeichert. Das Schnittstellenmodul 58 dient dem Datenaustausch des Mikrocontrollers 50 mit externen Geräten oder Funktionseinheiten. Die Schnittstellenmodul 58 kann eine serielle oder parallele Schnittstelle umfassen, z.B. eine SPI-Schnittstelle (SPI, Serial Peripheral Interface, ursprünglich von Motorola eingeführt) bzw. eine Weiterentwicklung derselben. Das Schnittstellenmodul 58 ist als Hardwaremodul ausgeführt und wird beim Fehlerkorrekturverfahren verwendet.
-
Der Mikrocontroller kann weitere mit dem Prozessorkern verbundene Funktionselemente 62 umfassen, etwa einen nichtflüchtigen Speicher (z.B. Flashspeicher) oder weitere Schnittstellen (z.B. eine CAN-Bus-Schnittstelle). Auch können weitere, nicht dargestellte Verbindungen zwischen den einzelnen Funktionselementen vorgesehen sein, beispielsweise eine direkte Verbindung zwischen Arbeitsspeicher 56 und Schnittstellenmodul 58.
-
In 2 ist weiterhin ein nicht im Mikrocontroller umfasster externer Arbeitsspeicher 64 dargestellt, der mit dem Schnittstellenmodul 58 verbunden ist. Ebenso können weitere Funktionseinheiten 66 über das Schnittstellenmodul 58 oder weitere Schnittstellen mit dem Mikrocontroller 58 verbunden sein (zusätzlich oder alternativ zu entsprechenden Funktionselementen 62 im Mikrocontroller). Beispiele sind wieder ein nichtflüchtiger Speicher oder weitere Schnittstellen (etwa eine CAN-Bus-Schnittstelle zur Kommunikation des Steuergeräts mit anderen Elementen der Vorrichtung, die vom Steuergerät gesteuert wird).
-
Durch den externen (flüchtigen) Arbeitsspeicher 64 kann der Arbeitsspeicher, auf den der Mikrocontroller 50 bzw. dessen Prozessorkern 54 zugreifen kann erweitert werden. Es können also Programme während der Ausführung zumindest teilweise im externen Arbeitsspeicher gespeichert werden, z.B., wenn diese für den internen Arbeitsspeicher 56 zu groß sind. Zwar ist der Zugriff auf den externen Arbeitsspeicher 64 langsamer als auf den internen Arbeitsspeicher 56, allerdings ist der Zugriff immer noch deutlich schneller als der Zugriff auf einen nichtflüchtigen Speicher, in dem die Programme dauerhaft gespeichert sind.
-
Speicherzugriffe auf den externen Arbeitsspeicher 64 erfolgen über das Schnittstellenmodul 58. Bei einem Schreibzugriff wird durch das Schnittstellenmodul 58 für jedes zu speichernde Datenelement ein zugehöriger Fehlerkorrekturwert (ECC-Wert) berechnet, das ebenfalls im externen Arbeitsspeicher gespeichert werden soll. Ebenso wird die Adressberechnung, d.h. die Berechnung der Speicheradresse im externen Arbeitsspeicher 64, an der das Datenelement gespeichert werden soll, durch das Schnittstellenmodul 58 durchgeführt. Beim Schreiben wird das Datenelement an die Speicheradresse geschrieben und unmittelbar nachfolgend wird der ECC-Wert geschrieben, eine eigene Adressberechnung für die ECC-Speicheradresse, d.h. die Speicheradresse an die der ECC-Wert geschrieben wird, ist also nicht notwendig. Im Prinzip kann die ECC-Speicheradresse aus der Speicheradresse und dem Datenelement bzw. dessen Länge bestimmt werden, an die der ECC-Wert geschrieben wird. Neben dem Entfallen einer eigenen Adressberechnung für den ECC-Wert ist auch vorteilhaft, dass das Schreiben und gegebenenfalls das spätere Lesen des Datenelements und des zugehörigen ECC-Werts normalerweise innerhalb eines Burst-Zugriffs des externen Arbeitsspeichers ausgeführt werden können. Ein sogenannter „Burst-Modus“ wird bei üblichen DRAM-Speichern, die als Arbeitsspeicher Verwendung finden, implementiert, dabei werden in einer Speicherzeile gespeicherte Daten in unmittelbarer Aufeinanderfolge geschrieben oder gelesen, so dass die Bereitstellung weiterer in einer Speicherzeile enthaltener Daten sehr wenig Zeit im Gegensatz zur Bereitstellung der ersten in der Speicherzeile enthaltenen Daten in Anspruch nimmt, da die Speicherzeile nicht neu aktiviert werden muss (typische Zeilenlängen sind 512 Byte, 1 kByte, 2 kByte).
-
Da die Adressberechnung durch das Schnittstellenmodul ausgeführt wird, sind aus Sicht des mindestens einen Prozessorkerns die Daten in linearer Aufeinanderfolge angeordnet, d.h. der mindestens eine Prozessorkern kann Datenelemente in linearer Weise ohne Berücksichtigung der ECC-Werte adressieren. Es findet sozusagen ein „Memory Mapping“ des externen Arbeitsspeichers durch das Schnittstellenmodul statt, wobei das Schnittstellenmodul eine Abbildung zwischen physikalischen Adressen des externen Arbeitsspeichers und logischen Adressen des Prozessorkerns durchführt, die physikalischen Adressen werden also in den Adressraum des Prozessorkerns abgebildet. Vom Prozessorkern ausgeführte Programme können daher den externen Arbeitsspeicher ohne Kenntnis der Fehlerkorrektur adressieren, d.h. die Programme müssen nicht angepasst werden.
-
3 stellt eine beispielhaft die Anordnung zweier Datenelemente samt zugehörigen EEC-Werten, wie sie durch die vorliegende Erfindung im externen Arbeitsspeicher erreicht wird, dar. Selbstverständlich können im Speicher weitere, nicht dargestellte Datenelemente mit zugehörigen ECC-Werten gespeichert sein. Hierbei werden beispielhaft 64-Bit Datenelemente und 8-Bit ECC-Werte gezeigt. Abweichend von diesem Beispiel können im Allgemeinen die Datenelemente und die ECC-Werte eine beliebige Länge aufweisen. Beispielsweise können die Datenelemente eine Länge von 8, 16, 32, 64, 128 Bit, um einige typische Werte zu nennen, aufweisen. Ebenso können auch die ECC-Werte andere Längen aufweisen, z.B. 4, 8 oder 16 Bit, dies hängt vom verwendeten ECC-Verfahren ab und kann von der Länge der Datenelemente abhängen (z.B. je 8 Bit Datenelemente-Länge 1 Bit ECC-Wert-Länge) oder kann auch unabhängig davon sein. Es kann auch immer eine Länge des ECC-Werts von beispielsweise 8 Bit (oder einer anderen immer gleichen Länge) vorgesehen sein; typische Kombinationen sind dann 8-Bit Datenelement + 8-Bit ECC-Wert, 16-Bit Datenelement + 8-Bit ECC-Wert, 32-Bit Datenelement + 8-Bit ECC-Wert und 64-Bit Datenelement + 8-Bit ECC-Wert.
-
Dargestellt sind zwei aufeinanderfolgende Speicherabschnitte 70, 71, die bei den hexadezimalen Adressen 0x0000 und 0x0010 beginnen, wobei jede Adresse einem Byte (8 Bit) entspricht und jeweils 4-Byte-Abschnitte, d.h. 32-Bit-Abschnitte, durch gestrichelte Linien angezeigt sind. Gespeichert sind zwei 64-Bit-Datenelemente. Das erste Datenelement 72a, 72b ist beginnend bei der Adresse 0x0000 gespeichert, wobei die 64 Bit des ersten Datenelements als zwei 32-Bit-Elemente 72a, 72b eingezeichnet sind. Unmittelbar auf das erste Datenelement 72a, 72b, d.h. beginnend bei der Speicheradresse 0x0008, folgt der zugehörige ECC-Wert 73, der beispielsweise eine Länge von 8 Bit aufweisen kann.
-
Das zweite 64-Bit-Datenelement 74a, 74b beginnt in diesem Beispiel bei der Speicheradresse 0x000C und umfasst wieder zwei 32-Bit-Wörter 74a, 74b. Hier ist anzumerken, dass 32-Bit-Wörter in diesem Beispiel an 32-Bit-Abschnitten im Arbeitsspeicher ausgerichtet werden. Wenn der ECC-Wert kürzer als 32-Bit ist, bleibt entsprechend ein Abschnitt im Speicher frei (bei einem 8-Bit-ECC-Wert bleibt beispielsweise der Abschnitt von 0x0009 bis 0x000B frei). Unmittelbar nach dem zweiten Datenelement 74a, 74b ist der zum zweiten Datenelement gehörige ECC-Wert 75 gespeichert, d.h. an der Speicheradresse 0x0014.
-
Durch diese Anordnung können die 64-Bit-Datenelemente und die zugehörigen ECC-Werte jeweils unter Verwendung lediglich der jeweiligen Speicheradresse (0x0000 und 0x000C in Beispiel der 3) geschrieben bzw. gelesen werden. D.h. Datenelement und zugehöriger ECC-Wert bilden ein Verbunddatenelement, das mittels einer einzigen Speicheradresse adressiert werden kann und somit in einer einzigen Adressierungsphase geschrieben bzw. gelesen werden kann. Eine auf das erste Datenelement bezogene Adressierungsphase würde hier beispielsweise bei der Speicheradresse 0x0000 beginnend 9 Byte (72 Bits = 64 Bit Datenelement + 8 Bit ECC-Wert) betreffen, d.h. die Adressen 0x0000 bis einschließlich 0x0008.